Показать полную графическую версию : Скрипты Inno Setup. Помощь и советы [часть 3]
Gnom_aka_Lexander
05-01-2011, 22:39
Vista-w, [Run]
Filename: {app}\install\keygen.exe; Flags: postinstall ; WorkingDir: {app}; StatusMsg: Активация;
Filename: "{app}\K6.exe"; WorkingDir: "{app}"; Flags: nowait postinstall
Так както.
Лександер,
Все равно появляются чексбоксы с надписями запустить, и черная обводка вокруг них.
Gnom_aka_Lexander
05-01-2011, 22:49
Vista-w, точно, блин. Секцию [Tasks] удали, а из секции [RUN] части строк с Tasks. Вот так:
[Run]
Filename: "{app}\install\DirectX\DXSETUP.exe"; Parameters: "/SILENT"; WorkingDir: "{app}\install\DirectX\"; StatusMsg: "Устанавливается DirectX";
Filename: {app}\install\keygen.exe; Description: Запустить Keygen; Flags: postinstall skipifsilent unchecked runascurrentuser waituntilidle; WorkingDir: {app}; StatusMsg: Активация;
Filename: "{app}\K6.exe"; WorkingDir: "{app}"; Flags: nowait postinstall skipifsilent
Лександер,
Все равно(
Надо чтоб потверждение активации, именно шло через [Tasks]
Но чтоб не было в конце установки потверждения о запуске. а зарускалась сразу
Gnom_aka_Lexander
05-01-2011, 23:02
Vista-w, Дык, секция таск - это чекбоксы на последней странице, либо удалить ее, либо чекбоксы будут. Скрипт на обменник кинь, завтра поколдую.
Лександер,
http://rghost.ru/3876790
возможно в Inno Setup добавить свои ключи командной строки ? Скажем в установщике который я хочу создать должен быть файл х.exe. Мне нужно, чтобы когда запускаешь установщик просто двойным кликом, запустился этот x.exe. А когда запускаешь установщик с ключом /z запустился x.exe c ключом /z. Это можно сделать разными и очень простыми методами, но мне нужно именно в Inno Setup !
Gnom_aka_Lexander
06-01-2011, 11:09
vahe-91, Теоретически через секцию [CОDE] можно попробовать подключить дополнительные ключи, фактически нужно просить кого-то, кто хорошо знает паскаль-дельфи, можно еще в справке поковырятся, в английской (русская довольно ущербная).
R.i.m.s.k.y.
06-01-2011, 12:11
возможно в Inno Setup добавить свои ключи командной строки ? Скажем в установщике который я хочу создать должен быть файл х.exe. Мне нужно, чтобы когда запускаешь установщик просто двойным кликом, запустился этот x.exe. А когда запускаешь установщик с ключом /z запустился x.exe c ключом /z. Это можно сделать разными и очень простыми методами, но мне нужно именно в Inno Setup ! »
[_Code]
var paramZ : boolean;
function InitializeSetup(): Boolean;
var i : integer; s, st : string;
begin
for i:=2 to ParamCount do begin
st := Lowercase(ParamStr(i)); StringChangeEx(st, '/', '', True); StringChangeEx(st, '\', '', True); StringChangeEx(st, '-', '', True);
case st of
Lowercase('z') : paramZ := true;
end;
end;
end;
procedure CurStepChanged(CurStep: TSetupStep);
var res : integer;
begin
if ( CurStep=ssDone) and (paramZ) ) then Exec(x.exe, ' /z ' ,ExpandConstant('{...}'),SW_HIDE,ewWaitUntilTerminated,res);
end;
Gnom_aka_Lexander
06-01-2011, 13:00
R.i.m.s.k.y., Только тут по другому чуток, параметр нужно задать снаружи, тоесть если инсталлятор запускается из командной строки, как инсталл шилд+ МСиАй - первый параметра для инстлшилда, 2-й для МСиАй, но это можно попробовать компонентами решить, в инно есть возможнось подключения и отключения компонентов из командной строки, тогда именами параметров назвать названия компонентов, типа - компонента1 - запуск с такимто ключем, компонента2 - запуск с такимто ключем, и т.п..
Мне такто тоже это интересно, буду рад увидеть решение :)
R.i.m.s.k.y.
06-01-2011, 13:57
Лександер,
Так это и есть снаружи, параметр z передаешь инсталлеру, InitializeSetup проверяет задан ли он (в виде \z, /z, -z), если есть такой переменной paramZ присваивается Тру
И вот тут у меня ошибочка, paramZ : boolean; должен объявляться в начале секции Code что быть доступным все функциям.
Потом в конце установки (процедура CurStepChanged) если параметр тру - выполняем чего там хотели.
можно попробовать компонентами решить »
Я не буду фрагментировать моск мифическими Param1, дам прям кусок из своего инсталлера, повырезав лишнее, так что если будет ругаться что не объявлены переменные или Энда не хватает - допишите сами.
[Components]
# define haaliaviDesc "Haali - воспроизводить avi"
Name: haaliavi; Description: {#haaliaviDesc}; Check: HaaliExists
[_Code]
var paramZ, silent, haaliavi : integer;
function InitializeSetup(): Boolean;
var i : integer; s, st : string;
begin
paramZ:= -1; silent:= -1; haaliavi := -1; // три состояния: -1 - не изменялось, 0 - нет, 1 - да
for i:=2 to ParamCount do begin
if ( (Lowercase(ParamStr(i)) = Lowercase('/silent')) or (Lowercase(ParamStr(i)) = Lowercase('/verysilent')) ) then begin
silent := 1;
break;
end;
end;
for i:=2 to ParamCount do begin
st := Lowercase(ParamStr(i)); StringChangeEx(st, '/', '', True); StringChangeEx(st, '\', '', True); StringChangeEx(st, '-', '', True);
case st of
Lowercase('z') : paramZ := 1;
Lowercase('haaliavi') : haaliavi := 1;
end;
end;
end;
procedure InitializeWizard();
if (silent = 1) then begin
if ( (haaliavi = 1) and haaliexists) then WizardForm.ComponentsList.Checked[WizardForm.ComponentsList.Items.IndexOf('{#haaliaviDesc}')]:=True;
end;
end;
procedure CurStepChanged(CurStep: TSetupStep);
var res : integer;
begin
if ( CurStep=ssDone) and (paramZ = 1) ) then Exec('x.exe', ' /z ' ,ExpandConstant('{...}'),SW_HIDE,ewWaitUntilTerminated,res);
end;
Gnom_aka_Lexander
06-01-2011, 14:31
R.i.m.s.k.y., Я неточно выразился, а что если для разных случаев нужно разные параметры? Для одного случая один ключ, для другог другой...
R.i.m.s.k.y.
06-01-2011, 14:49
Я неточно выразился, а что если для разных случаев нужно разные параметры? Для одного случая один ключ, для другог другой... »
поточнее чего хотим
Gnom_aka_Lexander
06-01-2011, 16:27
R.i.m.s.k.y., Смотри, комуто нужно ставить с ключем \z, комуто \r, комуто \a, комуто \s, и может еще полтора десятка, я не говорю о возможности их комбинации - можно это как-то реализовать? Или каждый ключ и комбинацию в коде прописывать?
R.i.m.s.k.y.
06-01-2011, 17:55
Или каждый ключ и комбинацию в коде прописывать? »
да, каждый поотдельности
инно понимает параметры только со слэшэм "/", т.е. если ему написать -silent или \silent он не поймет.
В моем примере выше собственные параметры можно писать вообще одной буквой z, но параметры инно надо писать как положено, /norestart к примеру.
R.i.m.s.k.y.,
брат, насколько знаю вместо [_code] в скрипте должен быть [code], а в конце вместо ; ТОЧКА. Если да, то во время компиляции пишет unknown identifier 'x'
R.i.m.s.k.y.
06-01-2011, 20:02
насколько знаю вместо [_code] »
Если написать без _ то форумный движок воспринимает его как тэг и каверкает, поэтому здесь принято добавлять _ перед словом Code.
а в конце вместо ; ТОЧКА »
секция Code закрывается end.
если есть ошибки - исправь код, брат, он не кусается.
то во время компиляции пишет unknown identifier 'x' »
там подразумевается что человек сам подставит путь к его запускному файлу x.exe для которого нужны параметры. Возьми в апострофы 'x.exe'.
R.i.m.s.k.y.,
спасибо, ты очень добр
Здравствуйте, уважаемые форумчане! Подскажите, как можно организовать постоянное сканирование реестра и файлов, а не только в момент запуска инсталлятора? Для чего:
if RegValueExists({#ValueExists}) then
if RegQueryStringValue({#ValueExists}, GamePath) then
if FileExists({#FileExists}) then GameAlreadyInstall:=True else GameAlreadyInstall:=False;
нужно, что бы после удаления ветки реестра или файла менялось значение GameAlreadyInstall в режиме реального времени.
[hr]
С помощью операторов while и do пробовал зациклить, но не могу условия сообразить.
А для чего? Делаю авторан на Inno, если нет записи в реестре - установить игру, авторан сворачивается, после установки игры (и соответственно появления записи в реестре) авторан разворачивается и - запустить игру. В AutoPlay Media Studio всё это реализуется довольно просто, но мне надо в Inno :modesty: .
R.i.m.s.k.y.,
для примера скомпилировал это, ничего не получилось. Установщик даже не запускается. Что не правильно ?
[Setup]
AppId={{5B88473B-FA3C-4A80-8D78-C8960C9C3377}
AppName=X
AppVersion=1.0.0
AppPublisher=Ya
CreateAppDir=no
OutputBaseFilename=setup
Compression=none
[Files]
Source: "C:\Documents and Settings\Administrator\Desktop\x.exe";
DestDir: "{tmp}"; Flags: ignoreversion
[_Code]
var paramZ:boolean;
function InitializeSetup(): Boolean;
var i:integer; x,s, st:string;
begin for i:=2 to ParamCount do
begin st:=Lowercase(ParamStr(i));
StringChangeEx(st, '/', '', True);
StringChangeEx(st, '\', '', True); StringChangeEx(st, '-', '', True);
case st of Lowercase('z') : paramZ := true;
end;
end;
end;
procedure CurStepChanged(CurStep: TSetupStep);
var res : integer;
begin if (CurStep=ssDone) and (paramZ) then
Exec('{tmp}\x.exe', ' /z ' ,ExpandConstant('{...}'),SW_HIDE,ewWaitUntilTerminated,res);
end; end.
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.
Available in ZeroNet 1osznRoVratMCN3bFoFpR2pSV5c9z6sTC