2011-05-26 221 views
0

我有一個MSI程序集,這是一個升級。升級代碼在先前版本和新升級程序集之間保持不變。我還設置了RemovePrevious屬性,以便在安裝升級之前刪除舊版本。Windows 3.1安裝程序卸載後立即重新安裝舊版本,而不是安裝新的升級

我看到舊版本的卸載按預期發生。但是,Windows Installer 3.1立即轉向嘗試重新安裝舊版本,然後再繼續安裝新版本。我已經通過更改新版本中的第一個自定義安裝對話框來驗證這一點,並在第一次安裝新版本時看到它很好。但是升級時看到的對話框是舊版本發佈時的對話框。我甚至用消息框顯示來重建舊版本,以驗證安裝程序在卸載後確實重新安裝舊版本,而不是轉到新的升級版本。

使用MSIExec不會顯示任何記錄的錯誤來解釋這種奇怪的行爲,我找不到任何有助於確定這種情況發生的文檔。

任何人有任何想法,爲什麼這種行爲正在發生,以及如何去解決它?

+0

我還應該提到,安裝和卸載的自定義操作包含在常見的steps.exe中。它是由我的VS 2005解決方案的一部分製作的。自定義操作中沒有輸入功能。因此,假設正確的調用是由以下正式聲明來覆蓋安裝程序的: protected override void OnBeforeInstall(); public override void Install(); public override void Uninstall(); 由於Uninstall()完成無錯誤,所以不清楚爲什麼安裝程序調用其他兩個安裝函數自定義操作而不是轉向新的升級程序集? – Del 2011-05-26 23:35:12

回答

0

嘗試增加嵌入式資源中應用程序/ dll的版本號。安裝程序的「新」行爲不會升級任何exe/dll,除非文件版本已經被碰撞。

+0

對不起,我想我很明白,爲了讓升級過程開始,版本號和產品代碼將不得不隨着兩個具有相同的升級代碼一起增加。即使增加版本而不更改ProductCode也不會啓動升級過程,而是調用已安裝現有應用程序並且必須通過添加/刪除程序刪除的錯誤。 – Del 2011-05-26 22:40:09

相關問題