0

我通过 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" />

提前致谢!

4

2 回答 2

2

一种可能的解释是您更改了组件的 GUID。结果,相同资源的(不同版本)由不同的组件管理。

从 Windows 安装程序文档中了解组件规则被破坏时会发生什么

作者在两个不同的组件中包含相同的资源。

如果两个组件具有相同名称和位置的资源,并且两个组件都安装到同一个文件夹中,则删除任何一个组件都会删除公共资源,这会损坏其余组件。

  • 卸载任一组件会删除资源并破坏另一个组件。
  • 组件引用计数机制损坏。

这似乎与您的症状相符。

于 2012-04-27T22:31:52.990 回答
1

如果服务 EXE 在两个包中具有相同的版本,则由于文件版本控制规则而发生这种情况。这是一篇包含更多详细信息的文章:http: //setupanddeployment.com/windows-installer-bugs/missing-files-upgrade/

于 2012-04-30T06:09:01.240 回答