Inno setup 我是否可以将安装程序命令行参数放在安装过程中调用的文件中?

Inno setup 我是否可以将安装程序命令行参数放在安装过程中调用的文件中?,inno-setup,Inno Setup,创建setup.exe后,我必须将其打包以用于各种软件部署工具。因此,我无法使用参数调用setup.exe,而是将自己的参数放在setup.exe旁边的setup.ini文件中 [代码] 变量 MyIniFile:String; 函数InitializeSetup():Boolean; 变量 loadFromInFile:字符串; 开始 结果:=真; MyInFile:=ExpandConstant('{srceexe}')//在“MyInFile”中写入setup.exe的完整路径 MyIni

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

[代码]
变量
MyIniFile:String;
函数InitializeSetup():Boolean;
变量
loadFromInFile:字符串;
开始
结果:=真;
MyInFile:=ExpandConstant('{srceexe}')//在“MyInFile”中写入setup.exe的完整路径
MyIniFile:=复制(MyIniFile,1,长度(MyIniFile)-Length(ExtractFileExt(MyIniFile))+'.ini'//将“.exe”更改为“.ini”
如果文件存在(MyInFile),则LoadFromInFile:=MyInFile//检查是否有ini文件
如果加载FromInFile“”,则开始
MyLogFile:=GetIniString('Setup','Log',MyLogFile,LoadFromIniFile);
ProductName:=GetIniString('Setup','ProductName',ProductName,LoadFromIniFile);
结束;
结束;

现在,我还想将所谓的“设置命令行参数”(在站点上列出)放在ini文件中。我认为有一种方法可以实现
/Dir=“x:\dirname
参数,我还没有弄清楚。但是我还想把
/SILENT
参数放在里面,你认为有什么方法可以做到这一点吗?如果是,您将如何执行此操作?如果没有,请给我一个提示为什么不可以?

因此,为不同的产品定制您的安装程序,我建议您使用并自动为每个产品构建安装程序(使用不同的“定义”),而不是使用外部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
开关调用安装程序。

是否要使用INI文件中存储的参数运行当前安装程序?或者在当前设置中打包了另一个设置?@TLama我想用INI文件中的参数运行当前设置,至少这是我在提问时所想的。但实际上这两个都是真的,所以是的,还有另一个调用的设置,我希望传递一个参数。感谢这个快速的回答,我还没有考虑预处理器。现在,我认为拥有一个INI文件比拥有多个设置要好,因为我自己不会使用这个设置,而使用它的人不熟悉inno,而是INI文件。关于
/SILENT
你的建议听起来不错,我会试试那个。你能告诉我你是怎么发现的吗“除了命令行/静默开关之外,没有其他API可以触发静默安装。”?这样我就不必要求其他API了……我已经检查了Inno Setup源代码,以确保静默模式只能由
/SILENT
开关触发,而没有其他方式。