2015-11-27 53 views
0

我使用包含4個msi的刻錄創建了bootstrapper安裝程序,其中安裝了3個(取決於操作系統)。Wix刻錄不會停止並刪除服務

其中一個安裝程序安裝服務並運行它。如果我只使用這個進行卸載,服務將被停止並從服務列表中刪除。但是,如果我使用引導程序安裝程序執行卸載,則服務將保留在列表中並顯示爲正在運行(即使所有文件都已刪除且服務沒有真正運行)。

有沒有人有任何想法可以從msi卸載和從exe引導程序(其中相同的msi打包)之間的區別?

服務安裝:

<Component Id="ComponentId" Guid="someguid-4C46-832F-B3E7E063713A"> 
     <File Id="ExeFile" Checksum="yes" KeyPath="yes" Source="service.exe" /> 
     <ServiceInstall DisplayName="[ProductName]" 
         Name="myservice" 
         Id="ServiceInstall" 
         Start="auto" 
         ErrorControl="normal" 
         Type="ownProcess" 
         Account="[ACCOUNTUSER]" 
         Password="[ACCOUNTPASSWORD]" /> 
     <ServiceControl Id="ServiceControl" 
         Name="myservice" 
         Remove="uninstall" 
         Wait="yes" 
         Start="install" 
         Stop="both" /> 
</Component> 

和引導程序:

<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi" xmlns:bal="http://schemas.microsoft.com/wix/BalExtension"> 
    <Bundle Name="MyBundle" Version="1.0.0.0" Manufacturer="Me" UpgradeCode="someguid-40da-bda2-1e46a5a55c47"> 
    <BootstrapperApplicationRef Id="WixStandardBootstrapperApplication.HyperlinkLicense"> 
     <bal:WixStandardBootstrapperApplication LicenseUrl="" SuppressOptionsUI="yes" LogoFile="logo.bmp" SuppressRepair="yes" /> 
    </BootstrapperApplicationRef> 

    <Chain> 
     <MsiPackage 
       Id="App1" 
       SourceFile="App1_x86.msi" 
       InstallCondition="NOT VersionNT64" 
       DisplayInternalUI="yes" 
       Permanent="no" /> 

     <MsiPackage 
       Id="App1" 
       SourceFile="App1_x64.msi" 
       InstallCondition="VersionNT64" 
       DisplayInternalUI="yes" 
       Permanent="no" /> 

     <MsiPackage 
       Id="App2" 
       SourceFile="App2.msi" 
       DisplayInternalUI="yes" 
       Permanent="no" /> 

     <MsiPackage Id="Service" 
       SourceFile="Service.msi" 
       DisplayInternalUI="yes" 
       Permanent="no" /> 
     </Chain> 
    </Bundle> 
</Wix> 

回答

0

我想通了這一點,則可能是殺害卸載應用2時,所有正在運行的情況下的一個問題。我通過更改最後兩個安裝包的順序解決了這個問題,現在它可以很好地移除產品,包括停止和刪除服務。