2014-11-06 90 views
5

因此,我有一个更新某些XML的函数,并且我想将在[Setup]脚本的[Setup]部分中设置的{AppVersion}作为常量传递给此功能使用{AppVersion}作为Inno Setup中的函数的参数

我已经试过

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; 

回答

7

用于扩大[Setup]部分指令值SetupSetting预处理功能:

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; 
+0

嗨@TLama,再次感谢您的帮助。我认为你在正确的轨道上。查看我对该问题的更新,了解我如何使用它的一些示例代码。目前我的代码显示一个空白的MessageBox,而不是一个版本号。我究竟做错了什么? – user1 2014-11-06 12:25:06

+0

在'[Setup]'部分之后移动你的'[Files]'部分。预处理器从上到下工作,它不知道“AppVersion”指令。一个使用预处理器的提示;如果在脚本的最后(只有参数是预处理脚本应存储的路径)写入#expr SaveToFile(“C:\ PreprocessedScript.iss”)行,则可以保存完全预处理的脚本。 – TLama 2014-11-06 12:32:49

+0

NeverMind我从[这里](http://stackoverflow.com/a/1926709/2987066)意识到我的错误,'[Setup]'部分必须位于'{#SetupSetting(“AppVersion”)}之前'iis文件中的行 – user1 2014-11-06 12:32:52