[英]VS2008 Setup Project: Uninstalling the previous MSI
我有一個VS2008安裝項目,該項目創建一個setup.msi,用於安裝WinForms應用程序(C#)。
每次更新版本號時,用戶首先必須卸載以前的版本,然后才能安裝新版本。 否則,我們將收到可怕的“該產品的另一個版本已安裝”消息。
這是我構建新版本的安裝程序時已經在做的事情:
但是它仍然拒絕卸載以前的版本。 那么,我錯過了什么? 還是我做錯了什么?
謝謝!
半解答我自己的問題,僅對感興趣的人有好處:
首先,我發現了一篇關於MSI更新如何工作的非常有用的文章 。
其次,我找到了一個非常不錯的免費軟件MSI編輯器InstEd ,它向我顯示了我的MSI文件顯然沒有任何錯誤。 (是的,如果我不介意下載整個Windows SDK來獲得它,我可以改用Orca。)
第三,令人煩惱的是,最初的問題似乎已經解決了,我再也無法重現了。 如果恢復正常,如果我再次修復它,我將在此處添加評論!
無論如何,所有這些都帶來了一個新的問題-可能更糟-問題:MSI現在聲稱要更新應用程序,但實際上並沒有安裝任何東西! 解決方案如下:
要在以前的版本上安裝它:
請記住,即使您重建解決方案,它也不會重建安裝項目。 您需要作為一個單獨的步驟來重建安裝項目。
其次,您不需要每次都遞增AssemblyVersion。 將其設置為2.1。*之類,它將自動執行。
我不是100%熟悉VS 2008安裝項目(我自己使用Advanced Installer-強烈建議使用BTW;他們甚至有免費版本!),但是我以前曾遇到過此內容,因此沒有對其進行非常明確的記錄。
版本號由4部分組成-您一定知道,我確定:Major.Minor.Build.Revision。 Windows安裝程序不檢查REVISION。 如果您正在做的只是增加修訂,它將無法正常工作。 您必須至少增加ProductVersion值的構建。
希望有幫助!
不要忘記增加assemblyFileVersion! 如果您未指定程序集文件版本,則編譯器會假定它與assemblyVersion相同。 但是,如果指定了assemblyFileVersion,則必須將其遞增。
Installer服務正在根據“升級表”的內容進行決策,這就是我要看的地方。 該表中是否包含用於升級代碼的條目,當前安裝版本的產品版本是否在為升級指定的版本范圍內,屬性看起來是否正常(例如,是否未設置msidbUpgradeAttributesOnlyDetect
屬性),等等。
MSDN在這里描述了這一切-http: //msdn.microsoft.com/zh-cn/library/aa372379%28VS.85%29.aspx
我來這里是為了尋求相同問題的幫助。 在閱讀了鏈接令人難以置信的有用文章之后,我想我的問題是,我已經安裝了帶有“僅我”選項的先前版本,並且新安裝程序選擇了InstallAllUsers屬性(在Visual Studio項目屬性中)。 因此,從控制面板卸載以前的安裝后,現在可以進行更新了。 也許這可以幫助某人。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.