Как передать значение параметра из компилятора в скрипт? - PullRequest
1 голос
/ 28 октября 2019

Мне нужно передать значение параметра из компилятора в раздел [Files] моего скомпилированного скрипта, что можно сделать во время выполнения установки, используя константу {param:...} в своем скрипте. Моя идея заключается в компиляции моего скрипта, например, таким образом (который не выполняется):

compil32 "script.iss" -CmdPath "D:\Samples"

Имея в моем скрипте что-то вроде этого (это не будет работать, так как это для времени выполнения установки, а не для времени компиляции):

#define DefPath "D:\Install"

[Files]
Source: {param:CmdPath|DefPath}\Install\App.exe; DestDir: {app};

1 Ответ

2 голосов
/ 30 октября 2019

Вы можете создать свою настройку с помощью компилятора ISCC, передав ему путь через параметр /D. Это объявит общедоступный #define для вашего скрипта. Поскольку #define может быть повторно объявлен сценарием, необходимо обеспечить его условное объявление для значения по умолчанию, которое вы хотите иметь. Например:

#ifndef SrcPath
  #define SrcPath "C:\DefaultPath\"
#endif

[Files]
Source: {#SrcPath}App.exe; DestDir: {app}

Тогда при построении установки таким образом будет использоваться #define из скрипта:

ISCC.exe Script.iss

При сборке этого способа будет использоваться #define, объявленныйпереданное значение параметра:

ISCC.exe Script.iss /DSrcPath="C:\AnotherPath\"
...