установить службу Windows в пользовательских действиях

Я создал службу Windows С# 4.0. Я создал для него проект установщика (.msi), который устанавливает службу в определенную папку.

Чтобы полностью автоматизировать процесс, я хотел бы установить службу как часть пользовательских действий, которые у меня есть для моего установщика.

Как я могу закодировать свои пользовательские действия для установки или при удалении msi удалить службу Windows?


person amateur    schedule 16.05.2012    source источник
comment
Обратите внимание, что проекты установщика (.vdproj) не будут поддерживаться в Studio 2011, поэтому лучше переключиться на WiX, пока вы не зашли слишком далеко. Файл .wixproj поддерживает студию и совместим с MSBuild. blogs.msdn.com/b/buckh/archive/2011/03/17/   -  person Simon MᶜKenzie    schedule 17.05.2012
comment
Установка службы с помощью WiX   -  person KMoraz    schedule 18.05.2012


Ответы (2)


Вы можете использовать класс ServiceInstaller. Быстрым решением было бы найти инструмент installutil и запустить его для вашего Service.exe, но вам нужно зафиксировать вывод, чтобы увидеть, прошла ли установка успешно или нет, и у вас нет большого контроля над Install, Commit, Rollback и Uninstall фазы.

person dan radu    schedule 16.05.2012

Простой ответ: не надо. Правильный способ — установить его с помощью самой базы данных MSI, т.е. ServiceInstall и ServiceControl. Каждая «удобная» IDE для создания MSI, а также WiX поставляются с примитивами для использования этого встроенного средства.

Сама причина того, что это рекомендуемая практика, так же как и включение регистрации COM в ваш MSI вместо вызова DllRegisterServer COM (DLL) для регистрации, заключается в том, что ваше приложение может быть несуществующий в то время, когда пользователь пытается удалить его.

Действия с базой данных могут быть выполнены даже более новым установщиком Windows, скажем, после обновления самой Windows, в то время как ваш код может отказаться запускаться или может не запускаться по другим причинам.

person 0xC0000022L    schedule 16.05.2012
comment
Я пришел с той же проблемой. У меня есть настраиваемое действие, которое будет генерировать набор свойств, и эти свойства будут заменены в конфигурации службы xml. Но затем wix запускает службу до того, как пользовательское действие будет выполнено. Таким образом, файл конфигурации имеет те же старые значения. Я создал вопрос о переполнении стека stackoverflow.com/questions/40043204/ Можете ли вы помочь мне с этим? - person Karthik; 18.10.2016