gpt4 book ai didi

inno-setup - 使用命令行参数抑制 Inno Setup 任务

转载 作者:行者123 更新时间:2023-12-04 07:29:29 26 4
gpt4 key购买 nike

我的目标是创建一个既可以在启动时提供条件参数又可以有可检查任务的安装程序。

通过可选参数 /NOAUTOSTART 安装程序应该跳过在注册表中创建一个条目,该条目允许该工具在 Windows 登录时启动。此外,此功能应该能够通过任务切换,并让用户决定是否应启用此功能。此外,如果在执行安装程序时传递参数 /NOAUTOSTART,无论如何都应该跳过此任务/窗口,因此否决此屏幕。

这怎么可能?

到目前为止,我一直在想出以下解决方案:

[Tasks]
Name: autostartWhenChecked; Description: "Automatically start agent on login"

[Registry]
Root: HKLM; Subkey: "SOFTWARE\Microsoft\Windows\CurrentVersion\Run"; \
ValueType: string; ValueName: "Updater Agent"; \
ValueData: """{app}\Agent.exe"""; Flags: uninsdeletevalue; \
Tasks: autostartWhenChecked;

这成功地处理了我的安装程序中的复选框。

但结合以下内容,检索启动参数(感谢这个答案:Passing conditional parameter in Inno Setup):

[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;

function ShouldEnableAutostart: Boolean;
begin
if CmdLineParamExists('/NOAUTOSTART') then
begin
Checkbox :=
WizardForm.TasksList.Items.IndexOf(
'Automatically start agent on login');
WizardForm.TasksList.CheckItem(Checkbox, coUncheck);
Result := False;
end
else
Result := True;
end;

我无法将这两种可能性结合起来。此外,我正在为如何获取任务的索引而苦苦挣扎,上面的代码总是返回一个超出范围的索引(-1)。怎么都找不到任务的描述文字了。

最佳答案

只需隐藏任务,使用 Check parameter引用您的 CmdLineParamExists 函数,如果它检测到指定了命令行参数。

[Tasks]
Name: autostartWhenChecked; Description: "Automatically start agent on login"; \
GroupDescription: "{cm:AdditionalIcons}"; \
Check: not CmdLineParamExists('/NOAUTOSTART')

关于inno-setup - 使用命令行参数抑制 Inno Setup 任务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68032209/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com