在安装结束时,我需要运行Pascal函数来更新飞行模拟器.cfg
文件(.ini
在Inno Setup中称为file)。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函数的a用作返回值外,所有其他功能均按预期工作。但是,该Filename
语句要求使用Boolean
as作为返回值来指定执行是成功(True
)还是失败(False
)。这种类型的不匹配会在Filename
语句执行结束时产生一个错误消息框,说明
CreateProcess失败;代码87。参数错误。
有什么建议可以解决吗?我知道存在可以使用的事件函数,例如,CurStepChanged()
但是我发现该StatusMsg
机制很好地告诉用户安装完成了什么。
您正在滥用Filename
参数解析来执行一些代码。参数值解析后未记录。这使您的方法不可靠。显示时,您不知道该值已解析StatusMsg
。而且,无论如何该值都必须解析为可执行路径。并且Inno Setup将尝试执行它(因此发生错误)。您可能不想要的东西。不要那样做。
如您所建议,改为使用CurStepChanged
。您可以通过访问来显示Pascal代码中的状态消息WizardForm.StatusLabel
。
procedure CurStepChanged(CurStep: TSetupStep);
begin
if CurStep = ssPostInstall then
begin
WizardForm.StatusLabel.Caption := 'Installing something...';
{ Install something }
end;
end;
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句