2009-12-24 65 views
1

我想添加自定義對話框來卸載我的應用程序。 我也曾嘗試以下操作:是否可以在wix中添加卸載對話框?

<InstallUISequence> 
    <Show Dialog="RemoveDlg" OnExit="success">REMOVE="ALL"</Show> 
</InstallUISequence> 

是否有可能或沒有WiX的?任何人都可以幫我解決這個問題嗎?

回答

4

雖然可以肯定的作者對話所特有的產品去除,卸載從添加刪除按鈕啓動或刪除程序(現在的程序和功能),而不UI順序運行,因此不會顯示這些對話框。一種常見的選擇是設置ARPNOREMOVE屬性,然後要求最終用戶單擊「修改」而不是「刪除」。修改按鈕開始維護,它會顯示您的用戶界面。

+0

感謝名單邁克爾..但是你能請給我一些想法如何使用這個alternative..because我已經試圖將此屬性設置爲1.but不明白我怎麼能設置對話框上的修改。 再次感謝。 – 2009-12-26 07:00:27

+0

邁克爾,我懷疑我的自定義操作在維護模式下不能正常工作。實際上,我想清除\從我的%appdata%\ product \刪除一些數據。可以幫我做到這一點嗎? – 2010-01-19 07:43:22

+0

如果您想知道卸載時發生了什麼,請記下詳細的日誌。然後搜索您的自定義操作的名稱,並且可以查看它是否已執行,或者由於條件而被忽略,或者只是不顯示。至於%appdata%,只記得你只能從當前用戶的%appdata%文件夾中刪除,所以卸載可能不是最好的時機。 – 2010-01-19 14:38:58

0

除非%APPDATA%\產品\數據可能會導致我建議把它留在地方上卸載應用程序的重新安裝問題。無論您在此文件夾中安裝的是什麼,都將被視爲用戶數據,並且不應該在默認情況下自動刪除 - 而且通常也不作爲選項。許多公司在userprofile文件夾上應用自定義權限。在那裏亂搞可能會導致你的MSI嚴重受傷 - 特別是在終端服務器上觸發自我修復(通常不允許在TS上)。

請記住,相同的安裝序列用於安裝,卸載和修補。如果您使用主要升級補丁程序,實質上是卸載並重新安裝產品,則最終可能會刪除用戶數據併爲每次安裝重新安裝。如果這是可以接受的,你處理的數據不是用戶數據,因此位於磁盤上的錯誤位置。

如果您通過檢查退出代碼的自定義操作在卸載結束時運行刪除操作,則可能會觸發回滾卸載,實質上會導致產品重新安裝並且無法卸載!罕見,但它發生。如果自定義操作在InstallFinalize之後運行,因此在MSI安裝序列之外運行,則您的安裝程序可能會返回卸載錯誤代碼並導致產品損壞,卸載不完整或部分產品未註冊。

總之我不會搞砸這個。如果你有堅持的客戶,如果我能幫上忙的話,我不會惹一個對話。我將添加一個PUBLIC屬性來控制是否在InstallFinalize之前立即運行自定義操作。清除所有錯誤返回碼並將信息寫入MSI日誌中。然後用戶可以通過在命令行中指定屬性或在Property表中對其進行硬編碼來卸載用戶數據。

如果你必須有一個GUI,你可以使用相同的屬性從自定義對話框中設置控制刪除是否完成與否。請記住謹慎對待對話框的顯示。 I.E在修補操作中不顯示。

相關問題