Показать полную графическую версию : Скрипты Inno Setup. Помощь и советы [часть 7]
Ivan_009
11-03-2014, 12:42
как добавить другой более красивый прогресс бар или изменить »
Так: http://rghost.ru/52977599
kot-da-vinci
11-03-2014, 12:44
Таки как разделить секцию [Tasks] на 2 странички? »
R.i.m.s.k.y.
11-03-2014, 13:03
kot-da-vinci, правильный ответ - создание custom page и перенос на нее части галок
примеров куча в шапке и прошлых темах
у меня под рукой нет
_____________
но я обычно на такое не заморачиваюсь а создаю процедуру по обработке кликов и расставлению одних галок в зависимости от других
R.i.m.s.k.y.
11-03-2014, 13:52
Но остается непонятным как активировать выбранный вариант в группе опций. »
не понял ты имеешь ввиду как сделать элемент неактивным/активным в зависимости от выбора?
kot-da-vinci
11-03-2014, 14:20
R.i.m.s.k.y., нет. Я имел ввиду как ативировать выбранный вариант таска.
Например:
[Files]
Source: "MyDll1.dll"; DestDir: "{app}"; Flags: ignoreversion; Tasks: BV5030
Source: "MyDll2.dll"; DestDir: "{app}"; Flags: ignoreversion; Tasks: BV6045
Source: "MyDll3.dll"; DestDir: "{app}"; Flags: ignoreversion; Tasks: BV6080
[Tasks]
Name: "BV5030"; Description: "5030"; GroupDescription: "{cm:SelectScanerModel}"; Flags: exclusive
Name: "BV6045"; Description: "6045"; GroupDescription: "{cm:SelectScanerModel}"; Flags: exclusive unchecked
Name: "BV6080"; Description: "6080"; GroupDescription: "{cm:SelectScanerModel}"; Flags: exclusive unchecked
Выбрал пользователь на моей страничке вариант 6080. Что дальше? Как сообщить инсталятору, что нужно активировать таск BV6080, а не BV5030?
P.S.: Вот ссылка на пример (http://forum.oszone.net/showpost.php?p=1277583&postcount=461) создания своей странички.
R.i.m.s.k.y.
11-03-2014, 14:37
Как сообщить инсталятору, что нужно активировать таск BV6080, а не BV5030? »
писать процедуру обработки кликов
под рукой нет, позже
R.i.m.s.k.y.
11-03-2014, 14:54
R.i.m.s.k.y., сравнение строк как в Delphi:
Цитата:
Strings are compared according to the ordinal values that make up the characters that make up the string. Character types are treated as strings of length 1. »
т.е. при сравнении 1,0,0,6 будет > чем 1,0,0,20?
дополнить каждый токен версии лидирующими нулями, потом строки можно сравнивать: »
вот это сильная магия, ни строчки не понял кроме замены зпт на тчк и обратно
Dinvin4ester
11-03-2014, 17:43
Ребята привет.Ошибка такого типа - http://i58.fastpic.ru/big/2014/0311/17/cb87abfb16eb764745541220fd403c17.jpg.
Скрипт - http://sendfile.su/952086 и еще не показывает прогресс бар ,можно тоже сделать ее,а то я не использую сторонние архиваторы,только средствами инно.
Спасибо.
Farser21
11-03-2014, 18:10
Ivan_009, спасибо попробую!
т.е. при сравнении 1,0,0,6 будет > чем 1,0,0,20? »
[Setup]
AppName=Game
AppVersion=Game_v1
DefaultDirName={pf}\Games
DefaultGroupName=Games
OutputDir=.
[ code]
function FormatVersion(const szVer: String): String;
var
i: Integer;
begin
with TStringList.Create do
try
StringChangeEx(szVer, '.', ',', True);
CommaText:= szVer;
for i:= 0 to Count-1 do Strings[i]:= Padz(Strings[i], 5);
Result:= CommaText;
StringChangeEx(Result, ',', '.', True);
finally
Free;
end;
end;
function FileVersion(const FilePath: String): String;
var
oFS: Variant;
begin
oFS:= CreateOleObject('Scripting.FileSystemObject');
try
Result:= oFS.GetFileVersion(FilePath);
except
end;
end;
function InitializeSetup: Boolean;
begin
if FormatVersion(FileVersion(ExpandConstant('{src}')+'\simple1.exe')) < FormatVersion('1.0.0.20') then
MsgBox('True', mbInformation, MB_OK) else MsgBox('False', mbInformation, MB_OK);
Result:= false;
end;
Farser21
11-03-2014, 20:15
Всем привет, как сделать слайды на странице установки?
Вот мой скрипт, заранее спасибо за ответы.
http://rghost.ru/52965051 »
R.i.m.s.k.y.
11-03-2014, 20:21
какого лешего ---------------------------
Ошибка компиляции
---------------------------
Строка 794:
Column 10:
Invalid prototype for 'GetOriginalSID'
---------------------------
ОК
---------------------------
function GetOriginalSID(): String;
begin
result := get_Original_SID;
end;
пример вызова
[Registry]
Root: HKU; SubKey: {code:getOriginalSID}\Software; ValueType: string; ValueName: Path; ValueData: {app}\; Flags: uninsdeletekeyifempty uninsdeletevalue noerror
R.i.m.s.k.y.
11-03-2014, 21:17
Как сообщить инсталятору, что нужно активировать таск BV6080, а не BV5030? »
я вот так отслеживаю, условия в TasksCheck сам пропишешь
procedure TasksCheck();
var
Item: Integer;
begin
if ( check_for_haali ) then begin
Item := WizardForm.TasksList.Items.IndexOf(ExpandConstant('{cm:Haali}')); if (Item >= 0) then begin WizardForm.TasksList.Checked[item] := True; if WizardForm.TasksList.ItemIndex = Item then WizardForm.TasksList.Checked[item] := True; end;
end;
end;
procedure TasksListClickCheck(Sender: TObject);
begin
TasksCheck;
end;
procedure InitializeWizard();
WizardForm.TasksList.OnClickCheck := @TasksListClickCheck;
end;
Всем привет, как сделать слайды на странице установки?
Вот мой скрипт, заранее спасибо за ответы.
http://rghost.ru/52965051 » »
Воспользоваться библиотекой isSlideShow v1.02 [16.05.2010] от ExpeditorR.
Пожалуйста.
Ivan_009
11-03-2014, 22:32
Всем привет, как сделать слайды на странице установки »
Держи: http://rghost.ru/52992147
Dinvin4ester
11-03-2014, 22:40
А мне ребят поможетe? С музыкой проблему решил,прогресс бара нет.
R.i.m.s.k.y.
11-03-2014, 22:44
имеем двух пользователей: user и admin
система под пользователем, запуск от админа
запись в реестре происходит куда надо: при запуске от админа - в HKCU пользователя
Но вот при деинсталляция при запуске от админа/пользователя ключи удалаются HKCU у админа
[Registry]
Root: HKU; SubKey: {code:getOriginalSID}\Software; ValueType: string; ValueName: Path; ValueData: {app}\; Flags: uninsdeletekeyifempty uninsdeletevalue noerror
http://forum.oszone.net/post-2319623.html#post2319623
#define A = (Defined UNICODE) ? "W" : "A"
const
WTS_CURRENT_SERVER_HANDLE = 0;
WTS_CURRENT_SESSION = (-1);
WTSUserName = 5;
function WTSQuerySessionInformation(hServer: THandle; SessionId, WTSInfoClass: DWORD; var ppBuffer: Longint; var pBytesReturned: DWORD): BOOL; external 'WTSQuerySessionInformation{#A}@wtsapi32.dll stdcall';
procedure WTSFreeMemory(pMemory: Longint); external 'WTSFreeMemory@wtsapi32.dll stdcall';
///////////////////////////////////////////////////////
function GetLoggedOnUser(const IsSID: Boolean): String;
var
i: Integer;
aNames: TArrayOfString;
dwLength: DWORD;
lpBuffer: Longint;
begin
if not RegGetSubkeyNames(HKLM, 'SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList', aNames) then Exit;
try
if not WTSQuerySessionInformation(WTS_CURRENT_SERVER_HANDLE, WTS_CURRENT_SESSION, WTSUserName, lpBuffer, dwLength) then Exit;
Result := CastIntegerToString(lpBuffer);
if IsSID then for i := 0 to GetArrayLength(aNames)-1 do if Pos(Lowercase(Result), LowerCase(ExpandConstant(Format('{reg:HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList\%s,ProfileImagePath|}', [aNames[i]])))) > 0 then
begin
Result := aNames[i];
Break;
end;
finally
WTSFreeMemory(lpBuffer);
end;
end;
function getOriginalSID:string
begin
result := GetLoggedOnUser(True);
end;
Farser21
11-03-2014, 22:47
Держи: http://rghost.ru/52992147 »
Все работает, но после завершения установки вот такое окно:
http://i031.radikal.ru/1403/3d/523831f8fc77.png
Пользовался exemple3.iss
Ivan_009
11-03-2014, 22:53
Farser21, Добавь:
KillTimer(0, TimerID);
Сюда:
if CurPageID=wpFinished then
begin
//Сюда
DeinitializeSlideShow;
WizardForm.ProgressGauge.visible:=false;
end;
end;
А мне ребят поможетe? С музыкой проблему решил,прогресс бара нет »
Dinvin4ester, В смысле какого прогресс бара и где уточни...
Farser21
11-03-2014, 23:15
Ivan_009, спасибо помогло. Но когда решил добавить это в свой установщик то вот такая ошибка появилась.
http://s020.radikal.ru/i710/1403/e3/88613c817740.png
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.