我們正在發佈新版本的應用程序,我們希望它能夠從客戶端計算機上卸載以前安裝的版本。如何以編程方式卸載Windows中的應用程序?
我們將如何做到這一點?
編輯:我正在安裝此應用程序(也是以前的版本)與Visual Studio中的部署項目,所以我假設它是一個Windows安裝程序。
非常感謝!
我們正在發佈新版本的應用程序,我們希望它能夠從客戶端計算機上卸載以前安裝的版本。如何以編程方式卸載Windows中的應用程序?
我們將如何做到這一點?
編輯:我正在安裝此應用程序(也是以前的版本)與Visual Studio中的部署項目,所以我假設它是一個Windows安裝程序。
非常感謝!
Deployement項目有一個內置的功能刪除您的應用程序的早期版本。
檢查Deployement項目屬性中的「RemovePreviousVersions」屬性。
http://msdn.microsoft.com/library/y63fxdw6.aspx
編輯:
從MSDN:
安裝程序將檢查的UpgradeCode和 產品代碼屬性,以確定是否 早期版本應該 刪除。升級代碼必須是 兩個版本相同;產品代碼必須有所不同。
如果你這樣編程,那麼這是一個簡單的反向批處理。
或者你可以使用Visual Studio中的一些安裝/卸載建設者像NSIS
微軟安裝程序(* .msi)格式支持你想做的事,不幸的是Visual Studio只提供有限的定製,並且被設計用於基本項目。
在這個話題上有很多資源,許多其他人也提出類似的問題。我最好的建議將花一些時間研究MSDN文檔。
...
更新
確定。花30分鐘閱讀幾篇文章後,我認爲可以使用您使用新安裝程序打包的自定義操作。
請按照有關creating a Custom Action的MSDN文章。它包括創建一個新的類庫,添加一個System.Configuration.Install.Installer
類,將其作爲輸出添加到安裝項目,然後然後將其選作自定義操作。
要查看您的自定義操作選項卡,請右鍵單擊安裝項目,然後選擇視圖>自定義操作。
從這裏開始:您需要編寫代碼來刪除安裝目錄和AppData配置文件。這篇關於如何設置Custom Action Data的文章可能會有所幫助。
祝你好運。
HTH,
丹尼斯
感謝您的幫助丹尼斯。我確實爲安裝和卸載設置了自定義操作。問題是以前的版本沒有設置相同的動作。刪除安裝目錄不會卸載應用程序(就像從控制面板那樣)。 – Andrei 2010-10-13 10:53:52
@Andrei:從我的理解中,你應該能夠使用自定義操作實現你想要的。檢查安裝目錄是否存在,AppData配置文件是否存在,如果存在,請刪除它們。如果將任何密鑰寫入註冊表,找到並刪除它們。這只是這個版本的臨時補丁,因爲下次你將有適當的卸載程序來運行。也許你還應該研究你的應用程序結構並重新考慮你的部署選項。順便說一句:你的安裝基地有多大? – Dennis 2010-10-13 11:23:40
如果您使用批處理或爲您發佈其他自動部署工具,您可以輕鬆地使用下面的命令行卸載MSI產品:
msiexec [/uninstall | /x] [Product.msi | ProductCode]
嘿詹姆斯。 +1爲我想要做的,但我也希望我的應用程序能夠「抓住」我的ProductCode,而無需每次進行軟件更新時都必須手動進行硬編碼。任何想法如何做到這一點? – jp2code 2011-04-07 16:43:34
什麼安裝技術你正在用嗎? Windows安裝程序? NSIS?還有別的嗎? – alastairs 2010-10-13 09:25:17
你的應用程序是否已經有卸載程序?爲了執行乾淨安裝,您需要回滾哪些類型的數據? – Dennis 2010-10-13 09:29:35
@alastairs:請參閱編輯@ Dennis:我沒有卸載程序。基本上我應該刪除整個程序文件夾以及我在用戶的AppData配置文件中使用的其他文件夾。 – Andrei 2010-10-13 09:31:26