Не удалось запустить службу Windows после MajorUpgrade с WiX - PullRequest
1 голос
/ 10 марта 2019

У меня довольно простой проект WiX.Ничего фантастического.При попытке выполнить MajorUpgrade поверх существующей установки, он не может запустить службу и неизбежно откатывается до предыдущей версии и просто запускает службу.Я удалил Start="install" и вручную запустил приложение, поэтому знаю, что это не проблема с зависимостями.

Я искал бесконечно и не нашел ответов на свою проблему.

<MajorUpgrade DowngradeErrorMessage="A newer version of [ProductName] is already installed." Schedule="afterInstallFinalize" />

Установка моей службы:

<ServiceInstall
        Id="ServiceInstaller"
        Type="ownProcess"
        Name="LsdnService"
        DisplayName="Lsdn Service"
        Description="Placeholder for now."
        Start="auto"
        Account="[SERVICEACCOUNT]"
        Password="[SERVICEPASSWORD]"
        ErrorControl="normal"/>
<ServiceControl Id="StartService" Start="install" Stop="both" Remove="uninstall" Name="LsdnService" Wait="yes" />

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

MSI (s) (18:48) [22:41:27:349]: Note: 1: 2205 2:  3: Error 
MSI (s) (18:48) [22:41:27:349]: Note: 1: 2228 2:  3: Error 4: SELECT `Message` FROM `Error` WHERE `Error` = 1920 

Тамнекоторые изменения реестра во время установки.Программа установки пытается прочитать из реестра и унаследовать уже существующие значения.

<Property Id="LSDNADDRESS" Value="127.0.0.1">
  <RegistrySearch Id="LsdnAddressProperty" Root="HKLM" Key="$(var.RegistryKey)" Name="LsdnAddress" Type="raw" />
</Property>
<Property Id="LSDNPORT" Value="9920">
  <RegistrySearch Id="LsdnPortProperty" Root="HKLM" Key="$(var.RegistryKey)" Name="LsdnPort" Type="raw" />
</Property>
<Property Id="LSDNKEY" Value="6f380b07-0b54-4904-8303-95d1ec45d453">
  <RegistrySearch Id="LsdnKeyProperty" Root="HKLM" Key="$(var.RegistryKey)" Name="LsdnKey" Type="raw" />
</Property>

Ответы [ 2 ]

1 голос
/ 10 марта 2019

Это, безусловно, может быть проблемой зависимости.Например, файлы GAC / WinSXS не устанавливаются в GAC до фазы фиксации, которая наступает после StartServices.

Я бы оставил Start = "Install" внутри, и пока он находится в окне с ошибкой при запускепроверить состояние машины и отладить запуск службы вручную.Могу поспорить, вы найдете что-то не хватает.

1 голос
/ 10 марта 2019

Результаты отладки : После большой отладки (автором постера - OP) это оказалось известной проблемой MSI, описанной здесь: https://wix -users.narkive.com / EMfQPDrM / а-ошибка-получить р-SZ-при-использовании типа-целое число . Хорошая поисковая работа.

Что находится в DWORD? (a REG_SZ, очевидно): по сути, MSI "конвертирует" a DWORD значение найдено через RegistrySearch операция с форматированной строкой - REG_SZ - во время обновления установки (может быть более сложным). Это вызывает услуги, которые ожидать, что значение DWORD упадет при запуске во время основного обновления. Очень экзотическая ошибка .

Обходной путь : можно попытаться «решить» эту проблему, сделав сервисный код способным читать как DWORD и REG_SZ. Это дает более надежное решение, чем решение проблемы в пользовательское действие, так как это «постоянное» исправление, пока код находится в (и наличие кода предупреждает других разработчиков о проблема). Или, может быть, использовать только REG_SZ?


Быстрые проверки : проверьте служебный пароль и войдите в систему - очевидно. Что-нибудь в Просмотр событий ? Ключ Windows + Нажмите R + eventvwr.msc + Введите . Как использовать Event Viewer для устранения проблем со службой Windows . Возможно, вы можете попробовать сделать папку diff для папок до и после и посмотреть, не видите ли вы что-то неожиданное в конфигурационные файлы ? Естественно, будет много двоичного различия, но проверьте текстовые файлы (также кодирование). Проверьте файл журнала MSI снова и найдите "value 3", как описано здесь: Советы по проверке журнала MSI Файлы . Manually copy the new files in place and attempt to start the service via the services.msc applet.


Эксперты по обслуживанию : Часто задаваемые вопросы по службам Windows (FAQ) . Контент выглядит актуальным - по крайней мере, по номинальной стоимости. Эти парни утверждают, что являются экспертами по услугам. Я понятия не имею, кто они есть.

Посмотрите в разделе "Ошибки" по ссылке выше. Вот некоторые экстракты:


Общие контрольные списки : Если ничего из вышеперечисленного ничего не делает, возможно, попробуйте эти "torpedoes full spread" check-lists (просто идеи для начала отладки):


Отладка общего назначения : Использование некоторых подходов отладки общего назначения.


Некоторые дополнительные ссылки :

...