Когда я удаляю свой сервис, я получаю сообщение об ошибке, в котором говорится, что я должен остановить такую ??услугу перед деинсталляцией. Это неудовлетворительно - деинсталлятор должен автоматически остановить его.
Я нашел блог или публикацию новостей в этом месяце назад и заставил его работать нормально, но теперь он перестает работать на меня. И у меня нет ссылки на сообщение ... может быть, кто-то еще знает, где это? :) Я думаю, я изменил некоторые тонкие вещи, и он прекратил работать. Я считаю, что Wix чрезвычайно сложно устранить.
Я использую следующие include для извлечения свойства X_ WIN_ SERVICE_ NAME (извините, что я не знаю, как избежать escaping здесь) из реестра. Это не имеет значения при установке, потому что в этом случае я явно устанавливаю его с помощью входного файла. Этот параметр используется перед любыми компонентами в моем файле wxs.
<Include xmlns="http://schemas.microsoft.com/wix/2006/wi">
<?ifndef SetupXWinServiceRegistryProperties ?>
<?define SetupXWinServiceRegistryProperties ?>
<?define XWinServiceRegistryKey='SoftwareXY'?>
<Property Id="X_WIN_SERVICE_NAME">
<RegistrySearch Id="XWinServiceNameSearch"
Root="HKLM"
Key="$(var.XWinServiceRegistryKey)"
Name="ServiceName"
Type="raw"/>
</Property>
<?endif?>
</Include>
Следующий компонент включает компонент, который используется для сохранения значения реестра при установке:
<Include xmlns="http://schemas.microsoft.com/wix/2006/wi">
<?ifndef WriteXWinServiceRegistryProperties ?>
<?define WriteXWinServiceRegistryProperties ?>
<Component Id="CompWriteXWinServiceRegistryProps"
Guid="some guid">
<!-- Write properties to the registry. Then they will be
accessable during uninstall. -->
<RegistryValue Root="HKLM"
Key="$(var.XWinServiceRegistryKey)"
Name="ServiceName"
Type="string"
Value="[X_WIN_SERVICE_NAME]"
Action="write" />
</Component>
<?endif?>
</Include>
Я проверил мою систему после установки, и значение реестра правильно написано там. Часть моего компонента, где настроена служба, выглядит так:
<ServiceInstall Id="ServiceInstallXWinService"
Name="[X_WIN_SERVICE_NAME]"
Start="auto"
DisplayName="xxx"
Description="yyy"
Account="[X_WIN_SERVICE_USER]"
Password="[X_WIN_SERVICE_PASSWORD]"
Type="ownProcess"
ErrorControl="normal"
Vital="yes" />
<ServiceControl Id="ServiceInstallXWinService"
Name="[X_WIN_SERVICE_NAME]"
Stop="both"
Remove="uninstall"
Wait="yes" />
Есть идеи?
windows-services,wix,wix3,