我試圖獲得安裝的位置,以便我可以執行升級,我使用的是WiX安裝程序,但我無法使用WiX自己的升級機制,因爲它會將配置文件和不會執行自定義操作UI中發生的檢查。從GUID到完整路徑
我有一個調用.msi的引導程序,我可以很容易地在該.msi中獲取和設置參數。
在這種情況下,我可以如何從已知但動態的GUID獲得文件在引導程序中的安裝位置,然後在.msi運行並覈實所有內容。
N.B.我不能假定配置文件在安裝之間保持不變,或者我可以更快地獲取文件,而不是卸載可以殺死它。
我試圖獲得安裝的位置,以便我可以執行升級,我使用的是WiX安裝程序,但我無法使用WiX自己的升級機制,因爲它會將配置文件和不會執行自定義操作UI中發生的檢查。從GUID到完整路徑
我有一個調用.msi的引導程序,我可以很容易地在該.msi中獲取和設置參數。
在這種情況下,我可以如何從已知但動態的GUID獲得文件在引導程序中的安裝位置,然後在.msi運行並覈實所有內容。
N.B.我不能假定配置文件在安裝之間保持不變,或者我可以更快地獲取文件,而不是卸載可以殺死它。
您對升級機制有相當多的控制權,您應該可以在升級過程中按照自己的意願進行操作。特別是,我會讓新的MSI讀取配置設置,然後將它們寫回到配置文件(新的MSI將在刪除舊的配置文件之前運行)。這將使你的安裝idempotent(理想)。
要回答你的問題,有很多方法可以做你想做的。下面是我怎麼可能會去了解它:
寫ARPINSTALLLOCATION - 這old blog entry of mine has details。
如果你知道你的舊MSI的ProductCode
,跳到第3步。如果你不這樣做,現在的ProductCode
,然後使用MSI的UpgradeCode
(你知道,如果你在所有做的升級)和請使用::MsiEnumRelatedProducts()查找以前安裝的MSI的ProductCode
。
如果您知道您的MSI的ProductCode
,請致電::MsiGetProductInfo()並索取INSTALLPROPERTY_INSTALLLOCATION
財產。
同意。我認爲他真正需要的是記憶屬性模式。 – 2013-03-12 22:42:25