Укажите имя службы Windows при установке с помощью проекта установки
Цель. В поддержку службы Windows, которая может иметь несколько экземпляров на одной машине, используйте проект установки для создания MSI, способного:
- Получение пользовательского ввода для имени службы
- Установка службы
- Сериализация имени службы с 1 (чтобы имя пользователя можно было использовать при регистрации и удалении)
Моя первоначальная надежда состояла в том, чтобы установить Service Name в App.config(а затем извлечь его во время удаления при создании экземпляра ServiceInstaller. Это кажется наивным, потому что он недоступен во время установки.
Если MyInstaller расширяет Installer, он может вызвать base.Install(); однако мои попытки написать app.config(в MyInstaller.Install() и после base.Install()) неэффективны.
Таким образом, пока служба может быть установлена с помощью пользовательского имени службы, это имя не сериализуется, и установщик наиболее недоволен при удалении.
Как это сделать?
Ответы
Ответ 1
Вы можете указать параметры для действий установщика, чтобы собрать имя службы и передать ее в качестве параметра для действия. Затем в классе Installer
вы можете переопределить Install()
и получить доступ к нему через base.Context.Parameters
. Это то, как вы получаете ценность. Получив это значение и используя его, вы поместите его в параметр stateSaver
IDictionary
, чтобы при переопределении Uninstall()
вы могли узнать, какое значение было использовано при установке.