我有一個用WIX創建的安裝程序,它安裝了一堆DLL和配置文件。一旦安裝完成,顯然有時候我想更新JUST DLL文件,並保留原來的配置。WIX覆蓋/更新安裝程序
我看過NeverOverwrite="yes"
選項,看起來很有前途,但是我現在遇到了這個問題。當我嘗試在安裝完成後重新運行我的安裝程序時,出現此錯誤。
的問題是,我不想用版本號或產品標識混亂。我只想讓安裝程序重新運行並覆蓋必要的DLL文件。這有意義嗎?
我有一個用WIX創建的安裝程序,它安裝了一堆DLL和配置文件。一旦安裝完成,顯然有時候我想更新JUST DLL文件,並保留原來的配置。WIX覆蓋/更新安裝程序
我看過NeverOverwrite="yes"
選項,看起來很有前途,但是我現在遇到了這個問題。當我嘗試在安裝完成後重新運行我的安裝程序時,出現此錯誤。
的問題是,我不想用版本號或產品標識混亂。我只想讓安裝程序重新運行並覆蓋必要的DLL文件。這有意義嗎?
如果您重新編譯來更新dll,您應該真的考慮更新安裝程序中的版本控制。如果每次編譯dll和安裝程序時都有構建過程更新構建編號,這應該不成問題。
您收到錯誤的原因是因爲產品ID和版本號匹配,但包裝代碼不同。要解決此錯誤,您有以下選項:
與BryanJ說的一樣,錯誤表示您正在安裝與以前安裝的軟件包具有相同產品代碼的新軟件包。
該解決方案很可能只是將產品Id
屬性設置爲*
。當你想要做minor upgrades的能力時,你只需要穩定的產品ID。
較小的升級不允許對功能組件樹進行任何重組,並且AFAIK只具有快速安裝大型功能的優勢。我們只是做所有升級爲major upgrades,這是更容易管理。
你不只是重新運行你的安裝程序,你重新編譯它,然後嘗試在安裝了以前版本的機器上運行它,更正嗎? – BryanJ 2012-03-23 19:09:20
這是100%正確的BryanJ – aherrick 2012-03-23 20:49:55