2011-04-06 41 views
1

我們使用WIX創建了一個安裝程序。作爲此安裝的一部分,我們希望顯示當前選擇的安裝路徑。顯然,我認爲這會比它容易得多。我已經使用了一個公共屬性「INSTALLDIR」嘗試(我知道我們不使用InstallShield,該值是一個目錄的編號。)WIX顯示在UI上的公共屬性

<Directory Id="INSTALLDIR" Name="AcmeInc">

我還可以看到運行安裝時,其中installDir被設置

MSI(EC:6C) Dir (target): Key: INSTALLDIR , Object: C:\Program Files\AcmeInc\

但是當我嘗試使用文本屬性我得到「...\.」,它甚至不看是一個相對路徑來顯示這個UI上。

我知道那裏有一些簡單的東西我很想念這裏。

+0

是否有INSTALLDIR改變其值的任何記錄? – 2011-04-06 06:04:28

+0

您是使用自定義UI還是其中一個Wix UI? – 2011-04-06 05:35:04

+0

@Alexy:當你問是否有任何記錄INSTALLDIR改變它的值。如果你的意思是在安裝過程中,是的。我可以隨時在日誌中看到更改值。 – Randolph 2011-04-06 17:02:57

回答

2

您正在使用WiX的3.5和MajorUpgrade元素假設 - 以下應該工作(我通常使用APPLICATIONFOLDER代替INSTALLDIR - 但他們應該互換)。

首先,讓我們設置ARPINSTALLOCATION作爲http://robmensching.com/blog/posts/2011/1/14/ARPINSTALLLOCATION-and-how-to-set-it-with-the-WiX-toolset

<SetProperty Id="ARPINSTALLLOCATION" Value="[INSTALLDIR]" After="CostFinalize" /> 

描述現在可以設置選擇安裝文件夾到以前安裝文件夾,如果以前存在的即是。

<Property Id="INSTALLDIR" Secure="yes"> 
    <RegistrySearch Id="FindInstallLocation" 
     Root="HKLM" 
     Key="Software\Microsoft\Windows\CurrentVersion\Uninstall\[WIX_UPGRADE_DETECTED]" 
     Name="InstallLocation" 
     Type="raw" 
     Win64="yes" /> 
</Property> 

和UI序列中,我們希望這個值要「早」設置

<InstallUISequence> 
    <AppSearch After="FindRelatedProducts"/> 
</InstallUISequence> 
+0

抱歉,延遲。感謝您的回答,After =「CostFinalize」是關鍵。 :) – Randolph 2011-05-06 22:38:19