亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何添加僅在卸載時(通過MSI)發生的Wix自定義操作?

如何添加僅在卸載時(通過MSI)發生的Wix自定義操作?

阿波羅的戰車 2019-07-02 15:16:43
如何添加僅在卸載時(通過MSI)發生的Wix自定義操作?我想修改MSI安裝程序(通過維克斯)在卸載時刪除整個目錄。我明白RemoveFile和RemoveFolderWix中的選項,但這些選項不足以遞歸刪除安裝后創建內容的整個文件夾。我注意到類似的堆棧溢出問題卸載Wix時刪除文件,但我想知道是否可以更簡單地使用對批處理腳本的調用來刪除文件夾。這是我第一次使用Wix,我仍然掌握自定義動作..卸載時運行批處理腳本的自定義操作的基本示例是什么?
查看完整描述

3 回答

?
森欄

TA貢獻1810條經驗 獲得超5個贊

您可以使用自定義操作來完成此操作。您可以在下面的自定義操作中添加參考。<InstallExecuteSequence>:

<InstallExecuteSequence>...  <Custom Action="FileCleaner" After='InstallFinalize'>
          Installed AND NOT UPGRADINGPRODUCTCODE</Custom>

然后,您還必須在<Product>:

<Product> ...  <CustomAction Id='FileCleaner' BinaryKey='FileCleanerEXE' 
                ExeCommand='' Return='asyncNoWait'  />

其中FileCleanerEXE是一個二進制文件(在我的例子中是一個執行自定義操作的小c+程序),它也定義在<Product>:

<Product> ...  <Binary Id="FileCleanerEXE" SourceFile="path\to\fileCleaner.exe" />

真正的訣竅是Installed AND NOT UPGRADINGPRODUCTCODE條件的自定義操作,您的操作將在每次升級時運行(因為升級實際上是卸載,然后重新安裝)。如果您正在刪除文件,則可能不希望在升級期間需要該文件。

附帶說明:我建議使用類似C+程序這樣的程序來執行操作,而不是使用批處理腳本,因為它提供了強大的功能和控制-而且在安裝程序運行時,您可以防止“cmd提示”窗口閃爍。


查看完整回答
反對 回復 2019-07-02
?
森林海

TA貢獻2011條經驗 獲得超2個贊

批處理腳本的最大問題是當用戶單擊Cancel(或安裝過程中出錯)時處理回滾。處理此方案的正確方法是創建一個CustomAction,將臨時行添加到RemoveFiles表中。這樣,Windows安裝程序就可以為您處理回滾情況。當你看到解決方案時,它會變得瘋狂的簡單。

無論如何,要使操作僅在卸載期間執行,請添加一個條件元素:

REMOVE ~= "ALL"

表示比較不區分大小寫(盡管我認為一切總是高高在上的)。見有關條件語法的MSISDK文檔想了解更多信息。

PS:從來沒有一個情況下,我坐下來認為,“哦,批處理文件將是一個很好的解決方案,在一個安裝包。”實際上,找到一個包含批處理文件的安裝包只會鼓勵我將產品退回退款。


查看完整回答
反對 回復 2019-07-02
  • 3 回答
  • 0 關注
  • 941 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號