2011-06-23 42 views
1

我們有一個將主要輸出轉儲到GAC的項目解決方案。我們需要這樣做,因爲我們的軟件是另一個應用程序的插件,可以安裝在任何地方,並且可以同時安裝多個版本。VS 2008安裝項目從GAC問題卸載

我們在從MSI升級和卸載時遇到問題。我們遇到的問題會影響我們在RemovePreviousVersions設置的兩側。

  • 當RemovePreviousVersions =假,它 需要用戶手動卸載 應用程式。如果卸載程序實際上可以正常工作,這對我們來說可以。但是,卸載使 DLL留在GAC中, 安裝 安裝程序的下一個版本不會覆蓋GAC中的DLL ,因爲它們的版本號 是相同的。

  • 當RemovePreviousVersions =真, 安裝的更高MSI版本 上層建築已經安裝 應用程序不會覆蓋在GAC中的DLL 大概是因爲 的DLL版本相同或因爲卸載不工作。我不確定我是否知道足夠的知道原因。

我們想要做的就是要麼能夠正確卸載,要麼正確升級實際上RemovePreviousVersions並且安裝新版本而不需要干預。我沒有看到更改我所有DLL版本的理由。我們不關心版本控制,除了知道他們的整個應用程序的版本是什麼,我們可以通過設置安裝項目的版本來做到這一點,這就是全部。

FWIW,我們不能使用WIX,因爲我們需要使用一些第三方多部分DLL,但使用WIX無法輕鬆添加到GAC中,但完全可以使用VS Setup項目來使用WIX。

編輯: 順便說,通過資源管理器視圖手動刪除從GAC中的文件或使用的Gacutil.exe/U完美的作品。但是,我認爲我不應該將gacutil添加到我的安裝項目中。我覺得它應該爲我做。雖然,我可能會給.NET安裝項目太多的功勞。

回答

0

關於安裝項目不卸載從GAC大會:你檢查註冊表中沒有一個揮之不去的提到它在

電腦\ HKEY_CURRENT \ USER \軟件\微軟\安裝程序\ Assemblies \ Global

卸載後?我遇到過類似的問題,一旦我從註冊表中手動刪除條目,卸載程序就會正確地從GAC中刪除程序集。