我在檢測msi狀態下的修復時遇到問題。
InstallShield中小抄寫的是:
MSI檢測修復模式
REINSTALL~="ALL" AND NOT REINSTALLMODE><"v"
這意味着重新安裝不區分大小寫等於「ALL」和REINSTALLMODE不包含「V」字母。
在我的MSI中,這個值被設置爲REINSTALL =「ALL」,REINSTALLMODE =「ocmusv」。爲什麼V字母在那裏?備忘單錯了嗎?什麼是檢測重新安裝的正確方法?
我在檢測msi狀態下的修復時遇到問題。
InstallShield中小抄寫的是:
MSI檢測修復模式
REINSTALL~="ALL" AND NOT REINSTALLMODE><"v"
這意味着重新安裝不區分大小寫等於「ALL」和REINSTALLMODE不包含「V」字母。
在我的MSI中,這個值被設置爲REINSTALL =「ALL」,REINSTALLMODE =「ocmusv」。爲什麼V字母在那裏?備忘單錯了嗎?什麼是檢測重新安裝的正確方法?
備忘單對於某些由系統啓動的修復很可能是錯誤的,因爲重新安裝不會是「全部」 - 它將成爲功能名稱。與其他條件相關的問題是屬性名稱區分大小寫,並且安裝條件不拼寫爲「INSTALLED」,這是事實「安裝」。 UPGRADINGPRODUCTCODE不相關,因爲它是在產品通過傳入主要升級進行升級時設置的,與修復無關。另外,我認爲不是所有的修理都設置了「v」,因爲我認爲我已經看到了修復命令行「omus」。
試圖檢測修復通常是徒勞的,我的建議是忘記試圖區分修復。所發生的一切就是組件再次被安裝並且可能被破壞。 Installed屬性將被設置,因此您知道這不是全新安裝,並且將安裝REINSTALL,因爲正在安裝一個或多個功能。不知道你想用這種條件來完成什麼,我不知道還有什麼要說的。有時候說出你想要解決的問題會更有用。
我想你可以檢查這個小圖(第一個答案): How to add a WiX custom action that happens only on uninstall (via MSI)?
我沒有測試過的信息的準確性,但它看起來OK。 UPDATE:我只是直接指出了在「線程」中看起來更好的答案。
這應該有所幫助:http://stackoverflow.com/questions/320921/how-to-add-a-wix-custom-action-that-happens-only-on-uninstall-via-msi –
謝謝,但我希望得到一些最佳實踐的答案。根據帖子我應該使用:重新安裝和不刪除〜=「所有」和升級產品代碼,並沒有安裝。我對它的期望越高,它在所有需要的情況下都不會正常工作。主要是我想知道爲什麼http://resources.flexerasoftware.com/web/pdf/archive/IS-CHS-Common-MSI-Conditions.pdf在我的情況是錯誤的。 – Marek
我想你可以檢查這個小圖表(第一個答案): http://stackoverflow.com/questions/320921/how-to-add-a-wix-custom-action-that-happens-only-on- uninstall-via-msi?lq = 1 –