Как отследить выход из инсталляции
Может возникнуть ситуация, когда вам необходимо отследить выход из инсталляции приложения. По умолчанию, инсталляция удаляет все временные файлы как в случае успешного завершения, так и в случае прерывания установки пользователем, но возможно вам требуется удалить что-то еще. Также, вы можете захотеть отслеживать на каком этапе произошло прерывание установки и посылать данные на свой веб-сервер. CreateInstall позволяет вам осуществлять дополнительные действия при любом завершении установки.
Создадим в качестве примера проект, который ничего не делает, но отслеживает все выходы из установки. Вы можете скачать его по ссылке ниже и проверить как он работает. Опишем функцию, которая будет вызываться на любое завершение инсталляции. Для этого будем использовать команду Исходный код. В эту команду вставим два сообщения, одно будет показывать код завершения и диалог, в котором пользователь завершил установку, а второе сообщение будем показывать только в случае успешного завершения и предлагать перейти на сайт.
func myexitcmdproc( uint code ) { macrox_setint("exitcode", code) $body$ }
Следует заметить, что наша функция получает параметр code, который равен 0 в случае успешного завершения. Если пользователь вышел из диалога, то параметр будет равен 2. Если установка была прервана с помощью команды Exit/Reboot, то code будет равен тому значению, которое вы указали в команде выхода. Имя функции должно заканчиваться на cmdproc. Чтобы эта функция вызывалась при выходе из инсталляции вам следует определить переменную exitfunc и присвоить ей имя вашей функции.
Project - Tracking the exit
Для того, чтобы определить в каком диалоге пользователь прервал установки определите одну и туже переменную с разными значениями в каждой команде с диалогом. В данном примере, мы присваиваем разные значения переменной dlg, а затем показываем это значение в сообщении при выходе.