4
我在使用Wix卸載服務時只能運行自定義操作時遇到問題。僅在卸載時使用Wix自定義操作
<CustomAction Id='InstallService'
FileKey='Service.exe'
ExeCommand='install'
Execute='immediate'
Return='check'
Impersonate='yes'>NOT Installed</CustomAction>
<CustomAction Id='UninstallService'
FileKey='Service.exe'
ExeCommand='uninstall'
Execute='immediate'
Return='check'
Impersonate='yes'>Installed AND NOT REINSTALL</CustomAction>
<InstallExecuteSequence>
<Custom Action='UninstallService' After='StopServices'/>
<Custom Action='InstallService' Before='StartServices'/>
</InstallExecuteSequence>
這是組件...
<Component Id="ProductComponent">
<File Id="MyService.exe"
Name="MyService.exe"
Source="..\MyService\bin\Release\MyService.exe"
Vital="yes"
KeyPath="yes"
DiskId="1"/>
...
<ServiceControl Id='ServiceControl'
Name='MyService'
Start='install'
Stop='both'/>
</Component>
當我運行安裝程序,我得到一個錯誤。查看事件日誌,我發現這...
產品:MyService - 錯誤1721.此Windows安裝程序包存在問題。此安裝完成所需的程序無法運行。聯繫您的支持人員或軟件包供應商。行動:UninstallService,位置:C:\ Program Files文件(x86)的\爲MyService \ MyService.exe,命令:卸載
我也曾經嘗試這樣做...
<CustomAction Id='UninstallService'
FileKey='Service.exe'
ExeCommand='uninstall'
Execute='immediate'
Return='check'
Impersonate='yes'>Installed AND NOT UPGRADINGPRODUCTCODE</CustomAction>
注:我使用的自定義操作安裝/卸載服務,因爲我使用了TopShelf.NET
輝煌,感謝指引我在正確的方向。我實際上最終使用了?ProductComponent = 3進行卸載,$ ProductComponent = 3進行安裝,現在完美運行。 – 2013-03-20 09:07:11
使用?ProductComponent = 3意味着即使組件未被刪除,卸載也會觸發。例如,在修復期間,我希望您的卸載自定義操作將被調用。可能不是目標。 :) – 2013-03-20 14:01:01
當我嘗試$ ProductComponent = 2是行不通的。所以我搜索了一下,發現了?限定符 – 2013-03-20 15:47:40