我通过msi包(WIX)在机器上安装了我的服务。但是,当完成主要升级时,服务将被卸载,但它不会安装。
这是我的代码:
<Component Id="abc" Guid="{E64A8CDD-816F-4544-9ACD-A2E367F7758A}">
<File Id="EventTraceService.exe" Source="..\..\..\..\Products\abc.exe" Vital="yes" KeyPath ="yes"/>
<File Source="..\..\..\..\Products\abc.exe.config" Vital="yes" />
<ServiceInstall
Id="ServiceInstaller"
Type="ownProcess"
Vital="yes"
Name="abc"
DisplayName="abc"
Description="Monitoring and management of Trace"
Start="auto"
Account="LocalSystem"
Interactive="yes"
ErrorControl="normal"
/>
<ServiceControl Id="StartService" Start="install" Stop="uninstall" Remove="uninstall" Name="abc" Wait="yes" />
提前致谢!
答案 0 :(得分:2)
一种可能的解释是您更改了组件的GUID。因此,相同资源的(不同版本)由不同的组件管理。
从Windows安装程序文档中了解what happens when the component rules are broken:
作者在两个不同的组件中包含相同的资源。
如果两个组件的资源名称和位置相同且两个组件都安装在同一个文件夹中,则删除任一组件都会删除公共资源,从而损坏剩余组件。
- 卸载任一组件会删除资源并中断其他组件。
- 组件引用计数机制已损坏。
这似乎符合您的症状。
答案 1 :(得分:1)
如果服务EXE在两个包中都具有相同的版本,则会因file versioning rules而发生这种情况。这是一篇包含更多详细信息的文章:http://setupanddeployment.com/windows-installer-bugs/missing-files-upgrade/