Установите файлы, если параметр командной строки передается установщику на основе Inno Setup

Я хочу знать, если есть способ добавить некоторые параметры командной строки в установщик на основе Inno Setup для /VERYSILENT режим, если, например, у меня есть тезисы проверок:

Source: "{app}\Portable-File.exe"; DestDir: "{app}"; MinVersion: 0.0,5.0; Check: install1;
Source: "{app}\Installer-File.exe"; DestDir: "{app}"; MinVersion: 0.0,5.0; Check: porta1;

И у меня есть эти строки на основе моих двух примеров проверок:

"MyProgram.exe" /VERYSILENT /install1 /EN
"MyProgram.exe" /VERYSILENT /porta1 /EN

1 ответ

Решение

Реализовать install1 а также porta1 функции как:

function HasCommandLineSwitch(Name: string): Boolean;
var
  I: Integer;
begin
  Result := False;

  for I := 1 to ParamCount do
  begin
    if CompareText(ParamStr(I), '/' + Name) = 0 then
    begin
      Result := True;
      Break;
    end;
  end;
end;

function install1: Boolean;
begin
  Result := HasCommandLineSwitch('install1');
end;

function porta1: Boolean;
begin
  Result := HasCommandLineSwitch('porta1');
end;

Вы действительно можете использовать HasCommandLineSwitch прямо в Check параметр:

[Files]
Source: "Portable-File.exe"; DestDir: "{app}"; Check: HasCommandLineSwitch('install1')
Source: "Installer-File.exe"; DestDir: "{app}"; Check: HasCommandLineSwitch('porta1')

Хотя я предполагаю, что ваш install1 а также porta1 функция на самом деле будет делать больше, чем просто вызов HasCommandLineSwitch , так что это, вероятно, не относится к вам.


На самом деле, насколько я знаю, у вас есть флажки, которые соответствуют install1 а также porta1 То, что вы действительно хотите сделать, это установить эти флажки при запуске установщика, если указаны переключатели. Таким образом, вы можете использовать /install1 а также /porta1 установить значения по умолчанию, даже если не используется в сочетании с /verysilent , И это все еще будет работать даже в /verysilent более того, даже если пользователь фактически никогда не увидит флажки (они все еще присутствуют, даже если они не видны)

install1 := TNewRadioButton.Create(WizardForm); 
install1.Checked := HasCommandLineSwitch('install1');

porta1 := TNewRadioButton.Create(WizardForm); 
porta1.Checked := HasCommandLineSwitch('porta1');

И вы держите свой install1 а также porta1 функция для возврата состояния флажков, как видно в директиве Inno Setup Set Uninstallable, основанной на пользовательском значении флажка.

Другие вопросы по тегам