2013-06-03 121 views
-1

我有一個WiX安裝程序,它可以完成某些工作,並最終啓動RSYNC安裝程序(這是一個EXE文件,無需同時工作) 。在安裝或卸載WiX時,「安裝」條件始終爲真

但是當卸載時,我也想刪除RSYNC。

<CustomAction Id="InstallRSyncDaemon" FileKey="cwRsyncServer_4.0.5_Installer.exe" ExeCommand="/q" Execute="deferred" Return="ignore" Impersonate="no" /> 
<CustomAction Id="UninstallRSyncDaemon" FileKey="rsync_uninstall.bat" ExeCommand="[INSTALLDIR]" Execute="deferred" Return="check" Impersonate="no" /> 
<CustomAction Id="EditConf" FileKey="rsync.bat" ExeCommand="[INSTALLDIR]" Execute="deferred" Return="ignore" Impersonate="no"/> 

<InstallExecuteSequence> 
    <Custom Action='InstallRSyncDaemon' Before='InstallFinalize'>(NOT remove="ALL")</Custom> 
    <Custom Action='EditConf' After='InstallRSyncDaemon'>(NOT remove="ALL")</Custom> 
    <Custom Action='UninstallRSyncDaemon' Before='RemoveFiles'>remove="ALL"</Custom> 
</InstallExecuteSequence> 

我的問題是,在卸載過程中,自定義操作「UninstallRSyncDaemon」被跳過:

MSI (s) (58:78) [17:37:40:475]: Skipping action: UninstallRSyncDaemon (condition is false) 

我試圖與「安裝」等條件,具有相同的結果。

在日誌文件的beginnning,我有:

MSI (c) (9C:80) [17:37:36:772]: PROPERTY CHANGE: Adding ACTION property. Its value is 'INSTALL'. 
MSI (c) (9C:80) [17:37:36:772]: Doing action: INSTALL 
Action 17:37:36: INSTALL. 
Action start 17:37:36: INSTALL. 
MSI (c) (9C:80) [17:37:36:772]: UI Sequence table 'InstallUISequence' is present and populated. 
MSI (c) (9C:80) [17:37:36:772]: Running UISequence 
MSI (c) (9C:80) [17:37:36:772]: PROPERTY CHANGE: Adding EXECUTEACTION property. Its value is 'INSTALL'. 

如果我試圖改變在安裝過程中啓動它的條件,它是工作,所以對我來說是剛剛的發言條件。

但我不明白爲什麼,這是始終在教程中或在堆棧 溢出答案中使用的條件。

+0

如果用戶自己安裝了RSync,該怎麼辦?如果另一個依賴於RSync的程序的安裝程序採用相同的方法會怎樣?似乎是一個非常短視的「我的計劃是唯一重要的」方法。 –

+0

嘗試REMOVEALL = ALL – Sonhja

回答

0

我認爲刪除應該是大寫。嘗試這個。

REMOVE="ALL" 

但它會運行在修改和升級也。檢查更多關於這種情況here