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

Inno setup 如果将命令行开关传递给基于Inno Setup的安装程序,则安装文件,inno-setup,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; "M

我想知道,是否有办法将一些命令行参数添加到基于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
在我的两个示例检查中,我有以下几行:

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

实现
install1
porta1
功能,如:

函数HasCommandLineSwitch(名称:string):布尔;
变量
I:整数;
开始
结果:=假;
对于I:=1的参数
开始
如果CompareText(ParamStr(I),“/”+Name)=0,则
开始
结果:=真;
打破
结束;
结束;
结束;
函数1:布尔型;
开始
结果:=HasCommandLineSwitch('install1');
结束;
函数1:布尔型;
开始
结果:=HasCommandLineSwitch('porta1');
结束;

实际上,您可以直接在
检查
参数中使用
HasCommandLineSwitch

[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.选中:=HasCommandLineSwitch('install1');
porta1:=TNewRadioButton.Create(WizardForm);
porta1.选中:=HasCommandLineSwitch('porta1');

您可以使用
install1
porta1
函数返回复选框的状态,如中所示。

当我使用示例命令行/verysilent/porta1时,它会创建卸载文件,提取所有可移植文件,但会安装到系统中对不起,我不明白。你所说的“但它被安装在系统中”是什么意思?这有什么不对吗?+运行交互式安装程序并选择“porta1”选项的行为有何不同向我们展示两种方案的日志文件+如果您有问题,我们需要。您应该按照我在回答的最后一部分中的建议执行。第一部分是对你的字面问题的一般回答。但是知道了你们安装人员的工作(以及你们在问题中没有解释的),我知道第一部分不会有帮助。这就是为什么我对一个问题给出了另一个答案,你应该问。这不是一个代码编写服务。你必须提出明确的问题才能得到明确的答案。不管怎么说,虽然你的代码可以工作,但它是';这确实不对。仅使用
Checked:=HasCommandLineSwitch('portablefree'),而不是
portablefree.Checked:=HasCommandLineSwitch('portablefree')
portablefree.
是由带有portablefree do的
所暗示的,这就是为什么您会有它。请参见如何在使用installerfree do设置
块中设置
已选中的
。对于默认情况下应选择的选项,您应该反转测试:如果未选中其他选项,请检查它。在
initializeWizard
的末尾,执行类似于
portablebusiness.Checked:=(notportablefree.Checked)和(not installerfree.Checked)以及(not installerbusiness.Checked)的操作