2010-05-18 159 views
0

我有一個使用VS2008構建的Web安裝項目。我已經將我的解決方案轉換爲VS2010,現在當我構建新的安裝程序並從安裝好的MSI運行安裝時,在最後一步中,刪除剛纔安裝的所有文件。Web安裝項目從VS2008升級到VS2010後刪除文件

我有RemovePreviousVersions設置爲true。如果關閉此功能,則文件保留在原位(但在控制面板的「程序和功能」中可以找到多個實例)。

如果我再次運行安裝,文件會重新出現。從此,即使在安裝其他版本時,文件仍然保持不變。所以,問題似乎是運行使用VS2008構建的安裝程序,然後運行由VS2010構建的相同安裝程序。每個安裝程序上的升級GUID都相同。

原因是什麼?如何解決?

回答

1

我還沒有嘗試從VS2008移植到2010年的設置,但具有相同的升級代碼爲不同的版本將導致問題;簡單的解釋是msiexec安裝程序在嘗試刪除舊組件時失敗,因爲舊組件與正在安裝的較新組件具有相同的升級版本。有一個VS項目設置,您可以在每次重建.msi時自動生成新的升級代碼;我通常選擇這個,並節省了很多這些版本問題。

  • 卸載使用 您的應用添加的所有拷貝/刪除程序

  • 刪除您的%TEMP%文件夾中的內容(以 擺脫任何「舊」(VS2008)的副本 您.msi)的

  • 更新的GUID VS2010版本(我覺得你在屬性窗口中 GUID右擊並點擊「genereate新GUID」)

  • 做到這一點
  • 重建項目並重試!

+0

感謝您的想法,儘管我對升級代碼感到困惑。我認爲可以在安裝時識別產品(當版本發生變化時,產品代碼會發生變化)。 雖然我會給他們一個嘗試。謝謝 :) – 2010-05-19 19:26:41

0

我發現那是什麼改變的UpgradeCode將防止文件被刪除,但它然後視爲一個單獨的安裝程序 - 在(程序和功能)我的程序出現兩次在控制面板即。邏輯上,我認爲,這是因爲它不是同一個程序。

我唯一的選擇似乎是通過編寫自定義操作以編程方式卸載新版本安裝程序中的舊版本。

0

我剛遇到這個錯誤。升級時有確切的問題。我試圖在解決方案:

https://connect.microsoft.com/VisualStudio/feedback/details/559575

我編輯我的MSI文件在奧卡重新排序RemoveExistingProductsInstallInitialize(序列號1501)之後。這發現在InstallExecuteSequence表中。這本來是序號6550。

這解決了我的問題。