Остановка службы в WIX и запуск после завершения установки

Я использую WiX 3.5 для создания установщика, который устанавливает службу Windows и копирует библиотеки DLL в каталог bin стороннего приложения. Стороннее приложение также имеет ряд служб Windows, которые необходимо будет остановить до того, как библиотеки DLL будут скопированы и запущены после завершения установки. Что мне нужно сделать, чтобы достичь этого. Я искал примеры, но могу только найти, как запустить службу, которую я устанавливаю.

*** С другой стороны, устанавливаемая мной служба должна работать под определенной учетной записью пользователя. Я вижу, как определить служебную учетную запись / пароль в WIX, но я не решаюсь использовать ее, потому что она хранит незашифрованный пароль в XML, и у меня есть проблемы с безопасностью.

2 ответа

Решение

Прежде всего, чтобы остановить службу, вам нужно использовать элемент ServiceControl.

<ServiceControl Id="serviceName" Name="actualServiceName" Stop="both" Start="both" Wait ="yes" />

Чтобы не отвечать на вашу сторону, вы можете иметь имя пользователя и пароль в качестве свойств, которые пользователь отправляет в MSI, или которые пользователь вводит из графического интерфейса.

<ServiceInstall Id="serviceName" Name="shortName" DisplayName="longName" Type="ownProcess" Start="auto" ErrorControl="normal" Account="[USER]" Password="[USERPWD]" Description="description" />
<Property Id="USER" Value="defaultValue" />
<Property Id="USERPWD" Value="defaultValue" Hidden="yes" />

Конечно, значение по умолчанию не нужно, и не очень рекомендуется, но я все же поместил его туда.

Использование <ServiceControl/>

<ServiceControl Id="thirdPartyService" Name="thirdPartyService" Stop="install" Start="install" Wait="yes" />
Другие вопросы по тегам