Прежде всего вы должны знать, что использование специальных действий InstallUtil (независимо от того, как они документированы и написаны) не является хорошим выбором. Выкинь их. То же самое можно сказать о проекте развертывания Visual Studio, который вы используете для выполнения своих пользовательских действий.
Лучшее решение заключается в использовании встроенной поддержки Windows Installer для создания и запуска служб. Используйте InstallShield 2010 Limited Edition (бесплатно) или Windows Installer XML (FOSS). Эти инструменты разоблачить таблицу ServiceControl, которая имеет столбец Wait, что позволяет научить MSI:
Подождите
Оставив это поле пустым или ввода значение 1 вызывает установки ждать максимум 30 секунд для завершения услуги . Ожидание может быть , используемое для дополнительного времени для критического события , чтобы вернуть сбой . Значение 0 в этом поле означает ждать только до тех пор, пока служба управления не сообщит, что эта услуга находится в состоянии ожидания , прежде чем продолжить установку .
ServiceControl Table
Где вы хотите, чтобы начать откат от? что из пользовательского действия? –
Да, у меня есть класс установщика, который был добавлен в процесс установки в пользовательском действии, его установка службы Windows, если эта установка завершилась неудачно, я хочу, чтобы она завершила полную установку и удалила все файлы. – guyl
Попробуйте вернуть 1602 из вашего пользовательского действия: http://msdn.microsoft.com/en-us/library/aa369778(VS.85).aspx –