Я новичок в WiX, но в прошлом я кое-что делал с Installshield и установщиком Windows.
У меня есть довольно простой установщик, который настраивает службу Windows. Он настраивается в разделе «NT AUTHORITY \ NETWORK SERVICE», если это имеет значение.
Установка работает нормально, но во время удаления я получаю сообщение об этом: «Программа установки должна обновить файлы или службы, которые не могут быть обновлены во время работы системы. Если вы решите продолжить, для завершения установки потребуется перезагрузка . ". Если я нажимаю, все удаляется, кроме службы (даже после перезагрузки). Это все еще запущено, и exe, связанный со службой, также оставлен позади.
Я могу вручную остановить и удалить службу без проблем с помощью команды sc.exe.
Также, если у меня была остановлена служба вручную перед запуском удаления, я не получаю вышеупомянутую подсказку, но результат остается тем же. Служба оставлена и файл тоже.
Вот часть моего Wix:
<Component Id='cmpService' Guid='{542f970e-ca39-4501-aae4-9e03eaac9a25}' >
<File Id='ServiceExeFile' Name='nls.service.agent.exe'
ReadOnly='no' Compressed='yes' KeyPath='yes' Vital='yes' Hidden='no' System='no'
Checksum='no' />
<ServiceInstall Id='MyServiceInstall' DisplayName='RaMP Data Collector' Name='rampDataCollector'
ErrorControl='normal' Start='auto' Type='ownProcess' Vital='yes'
Account='NT AUTHORITY\NETWORK SERVICE' />
<ServiceControl Id='MyServiceControl' Name='rampDataCollector'
Start='install' Stop='uninstall' Remove='uninstall' Wait='yes' />
</Component>
Я пытался
- Сняв аккаунт = 'NT AUTHORITY \ NETWORK SERVICE' и получив тот же результат
- Изменяя все мои направляющие, просто будьте уверены и получите тот же результат.
- Посмотрите подробный журнал для обоих сценариев (служба работает перед удалением и остановлена перед удалением), но я не увидел ничего интересного, что можно было бы расшифровать.
Вот фрагменты из журнала MSI, когда я запускаю деинсталляцию, и служба сначала останавливается вручную. Я вставил части вокруг сервисного компонента и действий MSI.
MSI (s) (A4:58) [10:44:11:080]: Component: cmpService; Installed: Local; Request: Absent; Action: Null
MSI (s) (A4:58) [10:44:11:080]: Component: cmpFolderPermissions; Installed: Local; Request: Absent; Action: Absent
MSI (s) (A4:58) [10:44:11:080]: Component: cmpApplicationShortcut; Installed: Local; Request: Absent; Action: Absent
И
MSI (s) (A4:58) [10:44:11:876]: Doing action: StopServices
Action ended 10:44:11: SchedSecureObjectsRollback. Return value 1.
Action start 10:44:11: StopServices.
MSI (s) (A4:58) [10:44:11:878]: Doing action: DeleteServices
Action ended 10:44:11: StopServices. Return value 1.
Action start 10:44:11: DeleteServices.
MSI (s) (A4:58) [10:44:11:879]: Doing action: RemoveRegistryValues
Action ended 10:44:11: DeleteServices. Return value 1.
Буду признателен за любую помощь.
Полагаю, в качестве последнего средства я мог бы выполнить пользовательское действие и остановить / удалить службу при удалении с помощью команды sc.