gpt4 book ai didi

inno-setup - 在 Inno Setup 中传递条件参数

转载 作者:行者123 更新时间:2023-12-04 23:05:05 24 4
gpt4 key购买 nike

我是 Inno Setup 的新手,我已经阅读了文档。现在我知道 Inno Setup 可以接受不同的/自定义参数,并且可以通过 Pascal 脚本进行处理。但问题是,我不知道如何用 Pascal 编写。

我希望我能得到有关编码的帮助。

我想将/NOSTART 参数传递给我的安装文件,同时告诉安装程序禁用(取消选中)“Launch”上的复选标记,如果未提供/NOSTART,它将启用(选中)复选标记“Launch” ”

enter image description here

或者如果可能的话,不需要启动页面并通过代码完成所有操作。

最佳答案

由于您不能强制修改部分条目的标志并直接访问 RunList将是一个相当肮脏的解决方法,我正在使用这两个 postinstall 条目,而一个没有 unchecked 指定的标志,第二个有。因此,第一个条目表示选中的启动复选框,第二个条目表示未选中的启动复选框。使用哪一个由 Check 控制参数函数,检查命令行尾部是否包含/NOSTART范围。

另外,我使用了一个更简单的函数来确定某个参数是否包含在命令行尾部。它使用 CompareText 函数以不区分大小写的方式比较文本。您可以将其替换为 CompareStr 函数,如果您想以区分大小写的方式比较参数文本。这是脚本:

[Setup]
AppName=My Program
AppVersion=1.5
DefaultDirName={pf}\My Program
OutputDir=userdocs:Inno Setup Examples Output

[Run]
Filename: "calc.exe"; Description: "Launch calculator"; \
Flags: postinstall nowait skipifsilent; Check: LaunchChecked
Filename: "calc.exe"; Description: "Launch calculator"; \
Flags: postinstall nowait skipifsilent unchecked; Check: not LaunchChecked

[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 LaunchChecked: Boolean;
begin
Result := not CmdLineParamExists('/NOSTART');
end;

关于inno-setup - 在 Inno Setup 中传递条件参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14392921/

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