【问题标题】:Using {AppVersion} as a parameter for a function in Inno Setup在 Inno Setup 中使用 {AppVersion} 作为函数的参数
【发布时间】:2015-01-02 22:33:47
【问题描述】:

所以我有一个函数正在更新一些 XML,我想将在脚本的 [Setup] 部分中设置的 {AppVersion} 作为常量传递给该函数

我试过了

MyFunction(ExpandConstants({AppVersion})

但这给了我一个错误?如何正确将此常量传递给我的函数

我的代码

[Files]
Source: ".\Source\myfile.txt"; DestDir: "{app}\System"; AfterInstall: MyFunction('{#SetupSetting("AppVersion")}')

[Setup]
AppId=MyApp
AppName=My Application
AppVersion=011
DefaultDirName=C:\MyApp

[Code]
procedure MyFunction(Text: String);
begin
  MsgBox(Text, mbInformation, MB_OK);
end;

【问题讨论】:

    标签: inno-setup pascal ansi


    【解决方案1】:

    使用SetupSetting 预处理器函数扩展[Setup] 部分指令值:

    MyFunction('{#SetupSetting("AppVersion")}');
    

    一个简短的证明:

    [Setup]
    AppName=My Program
    AppVersion=1.2.3.4
    DefaultDirName={pf}\My Program
    
    [Code]
    procedure InitializeWizard;
    begin
      MsgBox('AppVersion is: {#SetupSetting("AppVersion")}.', mbInformation, MB_OK);
    end;
    

    【讨论】:

    • 嗨@TLama,再次感谢您的帮助。我认为你在正确的轨道上。有关我如何尝试使用它的一些示例代码,请参阅我对问题的更新。目前我的代码显示的是一个空白的 MessageBox,而不是其中的版本号。我做错了什么?
    • [Files] 部分移到[Setup] 部分之后。预处理器从上到下工作,它还不知道AppVersion 指令。使用预处理器的一个提示;如果您在脚本的最后写一行#expr SaveToFile("C:\PreprocessedScript.iss"),则可以保存完全预处理的脚本(唯一的参数是应该存储预处理脚本的路径)。
    • NeverMind 我从here 意识到我的错误,[Setup] 部分必须在 iis 文件中的 '{#SetupSetting("AppVersion")}' 行之前
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多