Использование пути / значения, указанного в командной строке компилятора Inno Setup в сценарии Inno Setup - PullRequest
0 голосов
/ 25 января 2019

Я хочу передать путь (через командную строку arg /D компилятору сценария) в мой исполняемый файл, чтобы мой сценарий мог определить номер версии приложения, используя GetFileVersion, но мой синтаксис неверен.Как передать аргумент GetFileVersion?Ошибка: Недопустимый символ во входном файле: '#' (0x23)

#define srcpath SOURCEPATH
#define ApplicationVersion GetFileVersion(#srcpath)//error here!!!!!!

[Setup]
AppVersion={#ApplicationVersion}

[Files]
Source: "MyDllTesting.dll"; Flags: dontcopy
Source: "{srcpath}MyApplication1.exe"; DestDir: "{app}\MyApplication1"

1 Ответ

0 голосов
/ 25 января 2019

Во-первых, SOURCEPATH - это предопределенная переменная препроцессора * Inno Setup , поэтому вам нужно использовать другое имя для вашей "переменной" командной строки.Я буду использовать SOURCE_PATH.


Во-вторых, правильный синтаксис:

#define ApplicationVersion GetFileVersion(SOURCE_PATH)

(т.е. без хэша)

Почему нет хэша?в моем ответе на
Почему препроцессор ведет себя иначе в директиве #include, чем в разделе [Files] Inno Setup script

Хотя причина в основном та же, почему вы не используете хешдо SOURCEPATH здесь:

#define srcpath SOURCEPATH

Напротив, вы пропускаете хеш в разделе [Files].Правильный синтаксис:

[Files]
Source: "{#srcpath}MyApplication1.exe"; DestDir: "{app}\MyApplication1"

И нет необходимости определять srcpath переменную.SOURCE_PATH тоже переменная.Таким образом, вы можете использовать его непосредственно в любом выражении:

#define ApplicationVersion GetFileVersion(SOURCE_PATH)

[Files]
Source: "{#SOURCE_PATH}MyApplication1.exe"; DestDir: "{app}\MyApplication1"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...