Получить переменную среды в свойство WIX
есть ли способ получить переменную среды в WIX в свойство?
Я пытаюсь получить USERPROFILE
С:
Property Id="UserFolder" Value="$(env.USERPROFILE)EdwardsAppMyFolder"
но это только поднимает USERPROFILE
машины сборки, на которой построен установщик.
Я хочу, чтобы это использовать USERPROFILE
машины, на которой устанавливается приложение.
4 ответов
вы можете использовать переменные среды во время установки, но для этого требуется использовать пользовательское действие. Вам нужно будет установить UserFolder
недвижимость Type 51 Custom Action
в отличие от установки свойства во время сборки. Формат [%ENVVARNAME] используется для использования переменной среды, но имя переменной среды зависит от регистра.
пример пользовательского действия WiX, задающего свойство:
<CustomAction Id="SetUserFolder" Property="UserFolder" Value="[%USERPROFILE]EdwardsApp\MyFolder" />
вы можете прочитать больше на Пользовательские действия в WiX здесь:
http://blogs.technet.com/b/alexshev/archive/2008/02/21/from-msi-to-wix-part-5-custom-actions.aspx
альтернативой является использование элемент SetProperty - Он эффективно создаст пользовательское действие типа 51. Это проще, чем использовать Пользовательское действие, так как вам не нужно отдельно указывать расписание для него - все делается в одном элементе. В моем примере ниже я устанавливаю свойство только в том случае, если оно пустое, т. е. не было передано из командной строки.
пример:
<SetProperty Id="PROP_MYSOME"
Before="InstallInitialize"
Sequence="execute"
Value="[%USERDOMAIN]">
<![CDATA[NOT Installed AND PROP_MYSOME=""]]>
</SetProperty>
поскольку я не могу добавить комментарий еще, в отношении ответа @demp, я должен был сделать это, чтобы получить условие для оценки когда-нибудь во время инициализации, чтобы значение могло отображаться в диалоговом окне пользовательского интерфейса:
<SetProperty Id="MY_PROPERTY" Value="[%USERDOMAIN]" After="LaunchConditions" Sequence="first" />
Я верить это Before="InstallInitialize"
происходит непосредственно перед самой установкой (т. е. копирование файлов и тому подобное) и не на этапе инициализации программы установки.
в моем случае я ищу, чтобы получить переменную среды USERPROFILE целевой машины для установки всех файлов там. Я достиг этого, как:
<Property Id="HOME_FOLDER" >
<DirectorySearch Id="userProfileSearch" Depth="0" Path="[%USERPROFILE]" />
</Property>
затем все файлы пошли туда, куда мне захотелось.