如果将命令行开关传递给基于Inno Setup的安装程序,则安装文件

时间:2017-09-20 03:05:03

标签: 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 个答案:

答案 0 :(得分:1)

实施install1porta1功能,例如:

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')

虽然我认为您的install1porta1功能实际上不仅仅会调用HasCommandLineSwitch,所以这可能不适合您。 < / p>

实际上,据我所知,您有与install1porta1对应的复选框,您真正想要做的是检查安装程序启动时的复选框,如果指定了开关。这样,您可以使用/install1/porta1设置默认值,即使未与/verysilent结合使用也是如此。即使用户实际上永远不会看到复选框(它们仍然存在,即使不可见),它仍然可以在/verysilent以上工作

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

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

并保持install1porta1函数返回复选框的状态,如Inno Setup Set Uninstallable directive based on custom checkbox value中所示。