Wix: остановка службы Windows при удалении

Когда я удаляю свой сервис, я получаю сообщение об ошибке, в котором говорится, что я должен остановить такую ??услугу перед деинсталляцией. Это неудовлетворительно - деинсталлятор должен автоматически остановить его.

Я нашел блог или публикацию новостей в этом месяце назад и заставил его работать нормально, но теперь он перестает работать на меня. И у меня нет ссылки на сообщение ... может быть, кто-то еще знает, где это? :) Я думаю, я изменил некоторые тонкие вещи, и он прекратил работать. Я считаю, что 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,

7

Ответов: 1


4 принят

Вы уверены, что при удалении свойство X_WIN_SERVICE_NAME установлено на правильное значение. Используйте подробный файл журнала, чтобы убедиться, что поиск правильно задает значение. Все выглядит отлично (хотя я не знаю, почему вы помещаете все в файлы Include вместо использования фрагментов).

окна-услуги, Wix, wix3,
Похожие вопросы