在 Inno Setup Icons 部分计算命令参数的值

Computing a value of command parameter in Inno Setup Icons section

我的问题是 Inno Setup - "Variant is null, cannot invoke" error while reading node value in XML file 的延续。在这个 post 中,我正在读取一个 XML 文件节点,并且能够使用过程 ProcGetWebAppNameFromXML 成功获取值,并且我正在尝试将该值传递给 [Icons] 部分, 但我越来越空了。

下面提到了代码片段。

[Run]

Filename: "{app}\test1.bat"; StatusMsg: "Running Services..."; \
    BeforeInstall: ProcGetWebAppNameFromXML;

[Icons]
Name: "{commondesktop}\App"; Filename: "{pf}\Internet Explorer\iexplore.exe";  \
    Parameters: """http://{code:GetWebAppNameFromXML|}/"""

过程 ProcGetWebAppNameFromXML 获取 webapp 名称(工作完全正常),我将其分配给全局变量。

[Code]
var
    WebAppNameFromXML: String;

procedure ProcGetWebAppNameFromXML();
var
    ...
    ...
    WebAppNameFromXML := LoadValueFromXML(applicationxmlFile, '//ns:application-name', 'application-name');
    Log('WebApp name is logged correctly here..' + WebAppNameFromXML);
end;

我正在使用下面提到的函数来赋值。

function GetWebAppNameFromXML(Default: String): String;
begin
    Result := WebAppNameFromXML;
end;

当我将函数 GetWebAppNameFromXML 传递给 Icons 部分时,我变空了。请注意,我在 [Run] 部分下面有 [Icons],我也使用了 ChangesAssociations=yes

提前致谢。

[Run] 部分作为最后一个处理。所以在 [Icons] 部分之后。 参见 https://jrsoftware.org/ishelp/index.php?topic=installorder

看起来你确实在滥用它。

CurStepChanged(ssInstall) 中调用 ProcGetWebAppNameFromXML

或者,如果您的 [Icons] 部分只需要 WebAppNameFromXML,请直接阅读 GetWebAppNameFromXML 中的 XML – 您不需要任何全局变量。