Препроцессор Inno Setup: условно активируйте #define (например, только когда задано определенное значение реестра) - PullRequest
2 голосов
/ 15 апреля 2020

Обычно я строю свои установщики на своем "обычном" P C в офисе, а затем файлы EXE сохраняются на корпоративном NAS.

Теперь (Corona, homeoffice) я изменил сценарии установщика. Я добавил #define NoNetwork, поэтому офисная сеть не нужна.

В данный момент мне нужно активировать определение, когда я собираю установщик дома, и комментировать его, когда я собираю установщик в офисе. .

Есть ли способ активировать определение только тогда, когда на компьютере, на котором компилируется / создается установщик, задан определенный ключ реестра (или существует специальный файл, или ....), чтобы я не Не нужно ли изменять скрипт установки каждый раз, когда я переключаюсь из дома в офис?

Спасибо!

1 Ответ

2 голосов
/ 15 апреля 2020

Чтобы проверить существование файла, используйте директиву #ifexist :

#ifexist "C:\some\path\NoNetwork"
#define NoNetwork
#endif

Чтобы проверить значение реестра, используйте директиву #if и ReadReg function :

#if ReadReg(HKCU, "Registry\Key", "NoNetwork", 0) == 1
#define NoNetwork
#endif

Хотя, если вы используете какой-либо скрипт сборки, вы должны использовать параметры командной строки для настройки сборки, например:

iscc -DNoNetwork Example1.iss

См. Также Как создать два разных установщика из одного сценария в Inno Setup?

...