有沒有辦法讓WIX中的環境變量進入屬性?獲取環境變量到WIX屬性
我試圖讓USERPROFILE
有:
Property Id="UserFolder" Value="$(env.USERPROFILE)\EdwardsApp\MyFolder"
但這只是拿起構建機,其中安裝程序內置的USERPROFILE
。
我希望它使用正在安裝應用程序的機器的USERPROFILE
。
有沒有辦法讓WIX中的環境變量進入屬性?獲取環境變量到WIX屬性
我試圖讓USERPROFILE
有:
Property Id="UserFolder" Value="$(env.USERPROFILE)\EdwardsApp\MyFolder"
但這只是拿起構建機,其中安裝程序內置的USERPROFILE
。
我希望它使用正在安裝應用程序的機器的USERPROFILE
。
您可以在安裝過程中使用環境變量,但這需要使用自定義操作。您需要將UserFolder
屬性設置爲Type 51 Custom Action
,而不是在構建期間設置屬性。 [%ENVVARNAME]格式用於使用環境變量,但環境變量的名稱區分大小寫。
一個維克斯的例子,設置屬性:
<CustomAction Id="SetUserFolder" Property="UserFolder" Value="[%USERPROFILE]EdwardsApp\MyFolder" />
你可以閱讀更多的自定義操作在威克斯在這裏:
http://blogs.technet.com/b/alexshev/archive/2008/02/21/from-msi-to-wix-part-5-custom-actions.aspx
替代方案是使用SetProperty element - 它將有效地創建51型自定義操作。這比使用自定義操作更簡單,因爲您不需要單獨指定它的時間表 - 所有操作都在一個元素中完成。在下面的例子中,我只在屬性爲空的情況下設置屬性,即沒有從命令行傳遞屬性。
例子:
<SetProperty Id="PROP_MYSOME"
Before="InstallInitialize"
Sequence="execute"
Value="[%USERDOMAIN]">
<![CDATA[NOT Installed AND PROP_MYSOME=""]]>
</SetProperty>
就我而言,我希望得到的目標機器的USERPROFILE環境變量有安裝的所有文件。我實現了這樣的:
<Property Id="HOME_FOLDER" >
<DirectorySearch Id="userProfileSearch" Depth="0" Path="[%USERPROFILE]" />
</Property>
然後所有的文件去了我想讓他們去的地方。
,因爲我不能添加評論還,關於@ DEMP的回答,我不得不這樣做是爲了獲得在初始化過程中的某個時候評估的條件,這樣的值可以顯示在用戶界面對話框:
<SetProperty Id="MY_PROPERTY" Value="[%USERDOMAIN]" After="LaunchConditions" Sequence="first" />
我相信是Before="InstallInitialize"
只是自己進行安裝(即複製文件和諸如此類的東西),並不在安裝程序本身的初始化階段之前發生。
在構建Wix安裝程序時,使用$(env.USERPROFILE)會爲您的構建計算機帶來UserProfile的值。一些好的解決方案已經回覆。 – 2014-01-01 08:13:30
除了Farrukh的評論:'$(env ...)'語法來自[WiX Preprocessor](http://wixtoolset.org/documentation/manual/v3/overview/preprocessor.html)。 – CodeFox 2014-07-29 08:49:44