Вы должны быть более точными во всем, что вы сделали Например, нет автоматического вызова методов класса установщика, если они явно не добавлены в вашу настройку как пользовательские действия (в вашем случае удаление пользовательского действия). Вы также должны объяснить, как именно была установлена служба.
Обратите внимание, что классы установщика были изобретены установками Visual Studio, и, как правило, их не нужно использовать, поскольку такие инструменты, как InstallShield, обычно поддерживают стандартные функциональные возможности ServiceInstall и ServiceControl в установщике Windows. Установочные классы не нужны. Кроме того, эти события являются специальными событиями Visual Studio, и мне не ясно, поддерживает ли InstallShield их. Если вы используете метод удаления для удаления службы, просто добавьте свой код «до» перед вызовом Base.Uninstall ().
Если вы хотите, чтобы код выполнялся при удалении службы, более обычным способом является создание настраиваемого действия, которое вызывает ваш код, и при условии, что вызов REMOVE = "ALL" (для удаления) или другие условия, в зависимости от ваше точное требование. Например, если вы обновляете MSI для обновления существующего продукта, хотите ли вы запустить этот код удаления?