2014-11-06 3 views
5

Итак, у меня есть функция, которая обновляет некоторый XML, и я хотел бы передать {AppVersion}, который был установлен в части скрипта [Setup] как константа для этого функцияИспользование {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

Используйте функцию 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; 
+0

Привет @TLama, Еще раз спасибо за помощь. Я думаю, ты на правильном пути. См. Мое обновление к вопросу для некоторого примера кода того, как я пытаюсь это использовать. В настоящее время мой код показывает пустой MessageBox, а не номер версии в нем. Что я делаю не так? – user1

+0

Переместите раздел '[Files]' после раздела '[Setup]'. Препроцессор работает сверху донизу, и он еще не знает директивы 'AppVersion'. Один намек на использование препроцессора; вы можете сохранить полностью препроцессорный сценарий, если вы напишете строку '#expr SaveToFile (« C: \ PreprocessedScript.iss »)' в самом конце вашего скрипта (единственным параметром является путь, в котором должен храниться предварительно обработанный скрипт). – TLama

+0

NeverMind Я осознал свою ошибку из [здесь] (http://stackoverflow.com/a/1926709/2987066) раздел '[Setup]' должен появиться перед '' {#SetupSetting ("AppVersion")} ' 'строка в файле iis – user1