0

使用新的MSI將我的解決方案從版本1升級到2時,我注意到配置應用程序的一個自定義操作是使用屬於版本1的值(OnCommit操作)升級使用先前安裝程序的OnCommit自定義操作

我添加了messageboxes和打印出程序集版本的日誌,並確認在升級過程中,Windows安裝程序正在使用先前MSI的dll。但是,如果我手動安裝較新的MSI,則會使用正確的自定義操作。

有沒有辦法解決這個問題?還沒有找到關於它爲什麼使用以前的自定義操作的很多信息?

我設置RemovePreviousVersions = trueUpgradeCodes相等而ProductCodes是不同的。

回答

0

我認爲,這是一個古老的錯誤:

https://support.microsoft.com/en-us/kb/555184

並沒有關於它的其他支持文章,我無法找到。它可能已被刪除,因爲它適用於較早版本的安裝項目。我認爲走彎路就像重命名程序集和更改程序集版本一樣。

問題(您可能會猜到)是卸載程序會加載程序集來執行卸載,並且只要加載規則確定在這種情況下(反射加載),升級安裝程序中的程序集是相同的,因此它不會加載您的新程序集,而是使用已加載的較舊程序集。這一切都意味着您正在使用Visual Studio安裝項目的一個非常老的版本,首先卸載舊產品然後安裝新的產品。這並不是Visual Studio 2008以來的默認行爲,所以我不認爲你會遇到新版本的問題。

相關問題