2012-03-16 77 views
0

我有一個MSI版本1.0.2無法安裝MSI文件與相同版本

現在,我修改了一些文件,並創建了微星與相同版本1.0.2

我試圖安裝更新版本。它會給出錯誤,如「無法安裝,因爲此產品的較新版本已安裝」。

我只能用最新版本的1.0.2發佈。

請讓我知道如何解決這個問題。

我已經使用這個技巧:

1)設置DetectNewerInstalledVersion =真。

2.)設置RemovePreviousVersions = true。

3.)更改產品代碼。

但沒有找到結果。

在此先感謝

+2

聽起來像當您更改安裝程序的版本時,產品ID已更新,因此您的新安裝程序不能刪除以前的版本。只需手動刪除當前版本。另一種方法是更改​​有關安裝的所有內容,但不要更改安裝程序的版本,這隻適用於Windows。 – 2012-03-16 11:49:05

+0

Ramhound @在這裏我不會更改setup.I的版本,我在文件中做了一些更改,然後使用新產品代碼(手動)構建相同的設置。 – Sunny 2012-03-16 11:53:08

+1

我同意@Ramhound。在嘗試安裝新版本之前,手動卸載舊版本的msi。通過添加 - 刪除程序執行此操作,因爲這將會在安裝先前版本時創建緩存的msi數據庫。我不會建議手動刪除以前版本安裝的工件。 – 2012-03-16 11:56:24

回答

1

當您正在使用的Windows應用程序和每一個現在部署您的解決方案,然後,你應該知道在不刪除就重新安裝像數據庫文件中的所有文件和用戶生成的一些文件。

但是,當更改您的應用程序安裝項目版本號時,您會注意到EXE文件在大多數時間不會被更新,以確保EXE文件將被重新安裝,您將不得不添加屬性到MSI文件稱爲REINSTALLMODE並給它一個值「amus」,我現在知道這對你來說沒有意義,所以我會解釋一下這個問題。

REINSTALLMODE屬性是一個屬性添加到MSI文件,通過編輯它使用稱爲orca的軟件(只是谷歌它「下載爲MSI的orca」),該屬性有很多值和許多選項,可以給它。

的一個值,該值在這裏很重要的是amus,那麼什麼是amus以及如何添加所有REINSTALLMODE屬性:

安裝ORCA後,打開它,並構建解決方案脫軌後拖動MSI文件。

您會注意到在標題Tables下左側添加了一組記錄,向下滾動記錄直到找到名爲「Property」的記錄單擊它,然後其屬性將在右側面板中打開,然後右鍵單擊單擊添加行:,在屬性字段中寫入REINSTALLMODE並在值字段中添加amus,然後單擊確定並保存您的MSI文件。

通過這樣做,您的EXE文件和從安裝程序安裝而不使用自定義安裝的所有文件都將被刪除。

小記amus表示:

  • 一個 - 強制所有文件重新安裝,不管版本。
  • m - 重寫所有轉到HKEY_LOCAL_MACHINE或 HKEY_CLASSES_ROOT的註冊表項。
  • u - 重寫所有到HKEY_CURRENT_USER或 HKEY_USERS的註冊表項。
  • s - 重新安裝快捷方式和圖標。
+0

'amus'的'a'是不安全的。首選'omus',或者換句話說'emus',這樣就不會破壞依賴更高版本共享文件的應用程序。 – 2012-03-17 00:57:33

+0

我使用ORCA添加了REINSTALLMODE(= amus)和DetectNewerInstalledVersion(= False),甚至重新排序了RemoveExistingProducts操作(在CostFinalize之前)(請參閱:http://stackoverflow.com/questions/4227456/windows-installer-deletes-versioned-file - 產品 - 升級 - 而不是 - 下),但我仍然得到消息,存在一個更新的版本! – 2015-08-06 15:51:05

1

僅當您增加版本時纔會執行自動升級。如果修改軟件包並保持相同版本,則不能自動刪除具有相同版本的舊軟件包。這是Windows Installer的限制。

相反,您可以在安裝修改的軟件包之前手動卸載舊的軟件包。

另一個解決方案是創建一個自定義的EXE引導程序,該程序檢測當前版本是否已安裝,並在啓動新程序包之前將其卸載。