2013-03-12 164 views
2

我試圖獲得安裝的位置,以便我可以執行升級,我使用的是WiX安裝程序,但我無法使用WiX自己的升級機制,因爲它會將配置文件和不會執行自定義操作UI中發生的檢查。從GUID到完整路徑

我有一個調用.msi的引導程序,我可以很容易地在該.msi中獲取和設置參數。

在這種情況下,我可以如何從已知但動態的GUID獲得文件在引導程序中的安裝位置,然後在.msi運行並覈實所有內容。

N.B.我不能假定配置文件在安裝之間保持不變,或者我可以更快地獲取文件,而不是卸載可以殺死它。

回答

3

您對升級機制有相當多的控制權,您應該可以在升級過程中按照自己的意願進行操作。特別是,我會讓新的MSI讀取配置設置,然後將它們寫回到配置文件(新的MSI將在刪除舊的配置文件之前運行)。這將使你的安裝idempotent(理想)。

要回答你的問題,有很多方法可以做你想做的。下面是我怎麼可能會去了解它:

  1. 寫ARPINSTALLLOCATION - 這old blog entry of mine has details

  2. 如果你知道你的舊MSI的ProductCode,跳到第3步。如果你不這樣做,現在的ProductCode,然後使用MSI的UpgradeCode(你知道,如果你在所有做的升級)和請使用::MsiEnumRelatedProducts()查找以前安裝的MSI的ProductCode

  3. 如果您知道您的MSI的ProductCode,請致電::MsiGetProductInfo()並索取INSTALLPROPERTY_INSTALLLOCATION財產。

+0

同意。我認爲他真正需要的是記憶屬性模式。 – 2013-03-12 22:42:25