我可以将安装命令行参数放在安装期间调用的文件中吗?

时间:2015-05-07 08:43:39

标签: inno-setup

创建setup.exe后,我必须将其打包用于各种软件部署工具。因此我无法使用参数调用setup.exe,而是将自己的参数放在setup.exe旁边的setup.ini文件中

[Code]
var
    MyIniFile: String;
function InitializeSetup(): Boolean;
var
    LoadFromIniFile: String;
begin
    Result := true;
    MyIniFile := ExpandConstant('{srcexe}');      //writes the full path of the setup.exe in "MyIniFile"
    MyIniFile := Copy(MyIniFile, 1, Length(MyIniFile) - Length(ExtractFileExt(MyIniFile))) + '.ini'; //changes the ".exe" into ".ini"
    if FileExists(MyIniFile) then LoadFromIniFile := MyIniFile;  //checks wether there is a ini-file
    if LoadFromIniFile <> '' then begin
        MyLogFile := GetIniString('Setup', 'Log', MyLogFile , LoadFromIniFile);
        ProductName := GetIniString('Setup', 'ProductName', ProductName, LoadFromIniFile);
    end;
end;    

现在我想在我的ini文件中放置所谓的“设置命令行参数”(在Inno Setup Help站点上列出)。我认为/Dir="x:\dirname参数有一种方法,我还没想到。但是我也希望在那里有/SILENT参数,你认为有办法做到这一点吗?如果是的话,你会怎么做?如果没有,你能不能给我一个提示,为什么不呢?

1 个答案:

答案 0 :(得分:0)

因此,针对不同的产品自定义您的安装程序,我建议您使用pre-processor并自动为每个产品构建安装程序(使用不同的&#34;定义&#34;),而不是使用外部INI文件。

例如,为了能够在构建安装程序时更改应用程序名称和生成的可执行文件,请使用如下脚本:

[Setup]
AppName={#AppName}
OutputBaseFilename={#BaseFilename}

现在,您可以使用命令行自动创建两个不同的安装程序:

ISCC.exe Example1.iss /dAppName=App1 /dBaseFilename=SetupApp1
ISCC.exe Example1.iss /dAppName=App2 /dBaseFilename=SetupApp2

关于隐式静默安装:

除了命令行/SILENT开关之外,没有API可以触发静默安装。

但您可以通过禁用大多数安装程序页面来创建近乎静默的安装:

[Setup]
DisableWelcomePage=true
DisableDirPage=true
DisableProgramGroupPage=true
DisableReadyPage=true
DisableFinishedPage=true

实际上,上面的示例禁用了所有默认页面。但如果禁用所有其他先前页面,Inno Setup编译器将忽略DisableReadyPage=true

您可能希望选择要显示的其他页面。例如,欢迎页面(省略DisableWelcomePage=true,但保留DisableReadyPage=true)。

如果您不介意使用外部文件(因为您已使用外部INI文件),您当然可以将安装程序包装到批处理文件中,并使用/SILENT开关调用安装程序。