我正在尝试使用InnoSetup的静音模式。如果在静默模式安装中指定,我必须更新“许可证”键值。 这就是我配置Inno文件的方式:
[INI]
Filename: define.ini; Section: "General"; Key: "License"; String: "{param:LICENSE}"; Check: WizardSilent;
当用户以这种方式安装应用程序时,它很有用:
setup.exe / SILENT / LICENSE = licensekey
当我想跳过/ LICENSE参数时会出现问题(因为它已经配置好了,我不想更改它。例如:安装补丁包时)。 使用以下方法覆盖INI文件中的“许可证”密钥,并将其留空:
setup.exe / SILENT
如何避免这种情况?我只是想在这种情况下不要更改“许可证”值。
谢谢!
答案 0 :(得分:0)
我可以考虑两个选项,因为您使用的是自定义参数。您可以将{param}
常量的默认值定义为从同一INI文件中读取的现有值:
[INI]
...; String: "{param:LICENSE|{ini:define.ini,General,License|}}"
上述语句写入LICENSE
命令行参数传递的给定INI文件值,或者如果未指定,则从同一文件读取相同的值。因此,如果未指定参数,它实际上会用相同的值覆盖该值,这在我的视图中并不是很清晰。
或者,您可以通过辅助函数扩展现有的Check
参数,如下所示。这是我喜欢的方式,因为您只是跳过处理条目而不是在未指定参数时覆盖相同的值:
[INI]
...; Check: WizardSilent and CmdLineParamExists('/LICENSE')
[Code]
function CmdLineParamExists(const Value: string): Boolean;
var
I: Integer;
begin
Result := False;
for I := 1 to ParamCount do
if CompareText(ParamStr(I), Value) = 0 then
begin
Result := True;
Exit;
end;
end;