В процессе установки иногда приходится вызывать внешние приложения, например, какую-нибудь утилиту для настройки системы, и так далее.
При вызове внешней программы надо отследить ее работу, завершена ли она корректно, или же в процессе выполнения произошла ошибка. Могу привести довольно древний пример из своего опыта, когда-то программы распространялись на CD, и производитель материнской платы давал диск с «бонусным» софтом. Но в инсталлятор была встроена программа, определявшая модель материнской платы — если модель не совпадала, установщик «халявных» программ отказывался что-либо устанавливать. Когда я распаковал установщик и проанализировал это дело, выяснилось, что установщик сначала распаковывал и запускал внешнюю утилиту, которая проверяла модель мать-доски. И возвращала код выхода: 0
— правильная мать-доска, 1
— неправильная.
Вызов внешнего приложения выполняется командой
ExecWait "путь_и_имя_файла параметры_программы" [переменная_для_кода_возврата]
Например:
ExecWait "$TEMP\retcode.exe 42"
Второй параметр — переменная для сохранения кода возврата вызванной программы, т.е. если мы хотим вызывать программу и анализировать ее код завершения, надо действовать так:
;...
ExecWait "$TEMP\retcode.exe 42" $0
Далее анализируем содержимое переменной $0
.