У меня есть ситуация, когда меня попросили повторно внедрить установщик InstallShield в Wix. Я испытываю трудности с примерами в Интернете, пытаясь реализовать точное поведение. Что мне нужно сделать, это следующее:
Когда пользователь нажимает кнопку «Установить» на VerifyReadyDlg (я использую Mondo) и появляется ProgressDlg:
- Вызов .exe в месте установки (если существует из предыдущей установки)
- Остановить службу в месте установки (если существует из предыдущей установки)
- Отменить регистрацию указанной службы (если она существует после предыдущей установки)
- Копирование файлов из MSI, включая копию службы .exe для установки
- Считывание данных из некоторых элементов управления Edit в предыдущем диалоговом окне и запись данных в некоторые из скопированных XML-файлов конфигурации, которые сейчас находятся в месте установки.
- Зарегистрировать услугу еще раз
При нажатии кнопки Готово в самом последнем диалоговом окне (ExitDlg) мне нужно:
- Запустить сервис заново
- Вызовите .exe (отличный от первого) в месте установки
Я могу копировать файлы и записывать данные в некоторые из файлов после того, как они были скопированы ... хотя Wix просто делает это ... Я не говорю, когда идти и делать это. Проблема в том, что мне нужно запланировать первый вызов .exe, остановку службы и отмену регистрации до начала действия «Копировать», и я могу только зарегистрироваться снова ПОСЛЕ обновления XML-файлов конфигурации.
Я пытался использовать элементы InstallExecuteSequence и ServiceInstall и связывал их вместе с CustomActions, но это не сближается, и я думаю, что я совершенно неправильно подхожу к этому ... не стоит публиковать то, что я сделал.
Как мне это сделать? Это общий шаблон, который я видел в скриптах InstallSheild, но я не могу найти ни одного примера Wix, выполняющего эту последовательность.
Спасибо огромное за любую помощь по этому вопросу.
Майкл.