代码之家  ›  专栏  ›  技术社区  ›  tmighty

使用命令行参数的条件安装

  •  0
  • tmighty  · 技术社区  · 5 年前

    我想知道,是否有一种方法可以添加一些命令行参数到基于Inno安装程序的安装程序 /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
    
    0 回复  |  直到 7 年前
        1
  •  2
  •   Martin Prikryl    5 年前

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

    虽然我认为你的 安装1 函数实际上不仅仅是调用 HasCommandLineSwitch命令 ,所以这可能不适用于您。


    安装1 端口1 ,您真正想做的是,在安装程序启动时,如果指定了开关,则选中这些复选框。这样你就可以使用 /install1 /porta1 /verysilent . 即使在未来的几年里,它仍然可以工作 /非常宽松

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

    你要保持你的健康 函数返回复选框的状态,如中所示 Inno Setup Set Uninstallable directive based on custom checkbox value