gpt4 book ai didi

inno-setup - Inno 安装程序 : Execute a Pascal function in [Run] section

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

在安装结束时,我需要运行一个 Pascal 函数来更新飞行模拟器 .cfg 文件(在 Inno Setup 中称为 .ini 文件)。 Pascal 函数存在于它的 [Code] 部分并正确运行。我想在 [Run] 部分运行这个 Pascal 函数,使用 StatusMsg 告诉用户发生了什么。

[Run]
Filename: {code:FsxEditSceneryFile|Add#<scenerySpec>}; StatusMsg: "Add scenery to FSX";
; <scenerySpec> is just a place holder of the actual scenery specification!

除 Inno Setup 强制我使用 string 作为 Pascal 函数的返回值外,一切都按预期工作。但是,Filename 语句需要一个 Boolean 作为返回值,以指定执行是成功 (True) 还是失败 (False)。这种类型不匹配会在 Filename 语句执行结束时产生一个错误消息框,上面写着

CreateProcess failed; Code 87. Wrong Parameter.

任何建议如何解决这个问题?我知道存在我可以使用的事件函数,例如CurStepChanged() 但我发现 StatusMsg 机制非常好,可以告诉用户安装完成了什么。

最佳答案

您正在滥用 Filename 参数解析来执行某些代码。解析参数值时未记录。这使您的方法不可靠。在显示 StatusMsg 时,您无法知道该值已解析。此外,该值无论如何都必须解析为可执行路径。 Inno Setup 将尝试执行它(因此出现错误)。你可能不想要什么。不要那样做。


相反,正如您已经建议的,使用 CurStepChanged。您可以通过访问 WizardForm.StatusLabel 来显示来自 Pascal 代码的状态消息.

procedure CurStepChanged(CurStep: TSetupStep);
begin
if CurStep = ssPostInstall then
begin
WizardForm.StatusLabel.Caption := 'Installing something...';
{ Install something }
end;
end;

关于inno-setup - Inno 安装程序 : Execute a Pascal function in [Run] section,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35256165/

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