Tho*_*Gil 6 windows-services wix wix3
我在stackoverflow上看到了一些与此相关的相关问题,但它们似乎都没有解决我正在观察的特定行为.
我在Wix 3.0 .wxs文件中定义了如下Windows服务.
<Component Id='Service' Guid='3c658a54-b236-11e0-bbf6-039615e482ae' >
<File Id='ServiceEXE' Name='m_agent_service.exe'
Vital='yes' Source='..\m_agent_service.exe'
KeyPath='yes' />
<ServiceInstall Id='MerakiServiceInstall'
Vital='yes'
Name='MerakiPCCAgent' DisplayName='Meraki Client Insight Agent $(env.VERSION)' Description="Meraki Client Insight Monitoring and Management Service"
Type='ownProcess' Interactive='no' Start='auto' ErrorControl='normal'>
</ServiceInstall>
<ServiceControl Id='MerakiServiceControl'
Name='MerakiPCCAgent'
Start='install' Stop='both' Remove='uninstall'
Wait='yes' />
</Component>
Run Code Online (Sandbox Code Playgroud)
当我安装.MSI时,该服务已安装并正在运行.大.
当我卸载时(通过运行msiexec/x或使用"控制面板"中的"添加/删除软件"),服务将继续运行并且不会被删除.实际上,服务本身的日志告诉我没有调用任何服务关闭代码.(例如,当我使用"sc stop"时,我确实看到服务关闭代码运行得很干净.)
以下是msiexec/x卸载日志中的一些重要部分:
MSI (s) (14:04) [11:33:54:692]: 1 application(s) had been reported to have files
in use.
Info 1603. The file C:\Program Files\Meraki\PCC Agent 1.0.67\m_agent_service.exe
is being held in use by the following process: Name: m_agent_service, Id: 3120,
Window Title: '(not determined yet)'. Close that application and retry.
MSI (c) (40:78) [11:33:54:692]: File In Use: -m_agent_service- Window could not
be found. Process ID: 3120
MSI (c) (40:78) [11:33:54:692]: No window with title could be found for FilesInUse
[...]
Action start 11:33:57: UnpublishFeatures.
MSI (s) (14:04) [11:33:57:379]: Doing action: StopServices
MSI (s) (14:04) [11:33:57:379]: Note: 1: 2205 2: 3: ActionText
Action ended 11:33:57: UnpublishFeatures. Return value 1.
Action start 11:33:57: StopServices.
MSI (s) (14:04) [11:33:57:379]: Doing action: DeleteServices
MSI (s) (14:04) [11:33:57:379]: Note: 1: 2205 2: 3: ActionText
Action ended 11:33:57: StopServices. Return value 1.
Action start 11:33:57: DeleteServices.
MSI (s) (14:04) [11:33:57:379]: Doing action: RemoveFiles
[...]
MSI (s) (14:04) [11:33:57:645]: Product: Meraki Client Insight Agent -- Removal
completed successfully.
MSI (s) (14:04) [11:33:57:645]: Windows Installer removed the product. Product N
ame: Meraki Client Insight Agent. Product Version: 1.0.67. Product Language: 103
3. Removal success or error status: 0.
Run Code Online (Sandbox Code Playgroud)
小智 6
哦,亲爱的,虽然在厕所上我有一个脑电波,我想我毕竟已经修好了 - 抱歉这个帖子!我想我会解释是什么解决了它,以防任何其他初学者跟我一样的Wix书遇到同样的问题.
基本上,我在我的组件上更改了Guid,重新安装,卸载,这一切都再次起作用.(我认为改变Guids可能不是最佳做法,但这对我有用.)
详细说来,我认为我的安装程序实际上没有任何问题 - 问题出在我用来测试安装的PC上.我第一次尝试安装这个Windows服务是在没有ServiceControl元素的情况下完成的,只是ServiceInstall元素.然后我测试了安装,它工作,但显然,该服务并没有在卸载时删除自己.然后,我使用Services.msc手动停止并从我的PC上卸载服务.
然后我阅读了本书的下一部分,意识到我还需要一个ServiceControl元素,创建它并重新尝试安装程序 - 但我使用的是同一个Guid.卸载仍然无法正常工作,我认为我在安装程序中做错了,因此上面的帖子.
我猜测发生的事情是,之前的安装,使用相同的Guid但没有ServiceControl元素,导致我的PC以某种方式被破坏并阻止新的卸载程序正确完成.
让我成为一个教训 - 永远不要在自己的PC上测试安装程序!其中一条规则我完全理解并高兴地忽略,直到它咬我:)