2015-09-16 7 views
0

Возможно ли запустить мою установленную службу Windows с помощью CustomAction? И возможно ли использовать CustomAction для изменения типа запуска ранее установленной службы Windows?WIX Toolset CustomAction для запуска службы Windows

Я был бы очень признателен, если бы кто-нибудь мог вести меня в правильном направлении!

ответ

0

Вы можете написать код пользовательского действия, чтобы начать сервис, да, и быть парнем C++, я бы использовал Win32 StartService API. Но зачем это делать? Установщик Windows сделает это с помощью действия StartServices с элементом WiX ServiceControl. Единственная причина, по которой я знаю, начать сервис с ЦС после (скажем) InstallFinalize, - это потому, что он имеет зависимости (сборки в GAC или Win32 SxS), которые не выполняются до тех пор, пока не произойдет действие StartServices.

Рекомендуемый способ изменения типа запуска - это элемент WiX ServiceConfig.

0

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

0

Вот пример кода, который я использую для запуска службы непосредственно из WIX пользовательского действия

<CustomAction Id="StartWinService" Directory="INSTALLLOCATION" ExeCommand='NET START "[SERVICENAME]"' Execute="immediate" Return="ignore" /> 
0

я, наконец, поставил флажок в InstallDirDlg и на основе его стоимости, я решил, следует ли использовать компонент с ServiceInstall элемент с Start = 'auto' или использовать компонент с элементом ServiceInstall с Start = 'demand'. Это решило мою первую проблему. Но я не мог использовать элемент ServiceControl для запуска службы, потому что это запустило бы службу непосредственно после установки, и моя служба должна быть настроена, прежде чем она сможет работать должным образом. Поэтому я, наконец, закончил работу с моим исходным кодом. Таким образом, я смог использовать CustomAction, который был запущен в ExitDialog 'Finish'-Control.

 Смежные вопросы

  • Нет связанных вопросов^_^