Так это и есть снаружи, параметр 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;