2011-02-09 89 views
8

我在VS2010中遇到了使用InstallShield LE的障礙。運行SETUP.EXE產生的(用遞增的版本號)第二次,我得到的錯誤InstallShield LE「此產品的另一個版本已經註冊」

該產品的另一個版本 已經註冊

通過「遞增的版本號」,我的意思是我改變了次要版本,版本號,修訂中的AssemblyVersion和我的.exe文件的AssemblyFileVersion較大的數字(DLL的設置爲「1.0。*」)

[assembly: AssemblyVersion("0.2.103.005")] 
[assembly: AssemblyFileVersion("0.2.103.005")] 
[assembly: AssemblyInformationalVersion("Alpha 0.1 - 2/8/2011")] 

,並在更新的產品版本Installshield LE安裝項目的常規信息選項卡從0.10.0000到0.11.0000。

我在其他SO帖子和製造商的社區支持論壇上遇到過此錯誤消息的實例,但沒有找到適用於我的解決方案。

回答

12

原來,答案是在升級路徑選項卡上創建一個條目。當你這樣做時,InstallShield LE將顯示一個文件選擇對話框。如果您有舊的安裝程序,則可以通過瀏覽它來獲取有關您希望從哪個版本升級的信息。在我的情況下,我沒有老的安裝程序方便,所以我按下取消,無論如何創建新的升級路徑條目。然後,我調整了該條目的屬性以指定升級的最小和最大版本,並且所有內容均按預期工作。

編輯

(來自@ lookatmike的評論)

你也必須改變產品版本和(有點違反直覺)產品代碼的一般信息選項卡。升級代碼必須保持不變。

+2

埃裏克,這並沒有爲我工作。你有沒有做其他重要的事情?我在「常規信息」選項卡中增加了「產品版本」,我添加了一個帶有廣泛的最小和最大版本範圍的升級路徑,其中包含以前安裝的任何版本。 – 2011-06-29 14:31:03

+2

爲了擴大Eric在上面所接受的答案,除了按他描述的方式指定升級路徑之外,還必須更改產品版本,並且(在一定程度上違反直覺地)更改常規信息選項卡中的產品代碼。升級代碼**必須保持不變。 – 2013-08-16 05:45:19

6

好的 - 這個問題讓我感覺很瘋狂 - 而且我還沒有在網上找到完美的答案。

所以我決定我搞砸了。

這可能不是解決問題的「最佳」方法 - 我確定存在一些令人費解的基於MSI的「正確處理此問題」的方法,但我無法弄清楚(我猜我是?啞)

基本上我的安裝只是讓安裝.NET肯定,並複製一些文件到Program Files目錄,增加了一些註冊表項,快捷方式等

如果你有一個更復雜的安裝過程 - 我鼓勵你在其他地方找到「正確」的答案。但對於像我這樣簡單的事情(我懷疑有95%的人在這個問題上掙扎),這很好。

首先 - 永遠不要觸摸「產品代碼」。我相信這對於MSI來說是正確的程序......你不應該改變產品代碼。而且這個解決方案也依賴於此。

下一步 - 將產品代碼複製到您的剪貼板中 - 我們將在一秒鐘內使用它。

基本上,我們打算告訴InstallShield,如果它已經存在於機器上,請始終將其卸載。

enter image description here

enter image description here

如果您或您的合作伙伴都運行無提示安裝 - 確保你在兩地做到這一點:

enter image description here

對於「文件名和命令行「,輸入:

msiexec /uninstall {YOUR PRODUCT CODE HERE} /passive

就是這樣。現在,您的安裝程序將始終卸載舊版本。

注意:這個缺陷是「我正在運行更新版本的安裝程序」CHECK。

0

我經常重用我的Visual Studio項目,並得到了這個問題。作爲@埃裏克-J說,我不得不改變在VS安裝安裝項目的基本信息標籤產品代碼:

enter image description here

相關問題