Просто для удовольствия вы можете использовать прокси магию:)
const template = {
a: '',
b: ''
}
const data = {
a: 'test',
b: 'test',
c: 'test'
}
const result = { ...new Proxy(data, {
ownKeys: () => Object.keys(template)
})
}
console.log(result)
Вы можете использовать переменные среды во время установки, но для этого требуется использование настраиваемого действия. Вам нужно будет установить свойство 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/ 21.02 / from-msi-to-wix-part-5-custom-actions.aspx
, поскольку я пока не могу добавить комментарий, что касается ответа @ demp, мне пришлось сделать это, чтобы получить условие для оценки когда-нибудь во время инициализации, чтобы значение могло отображаться в диалоговом окне пользовательского интерфейса:
<SetProperty Id="MY_PROPERTY" Value="[%USERDOMAIN]" After="LaunchConditions" Sequence="first" />
Я полагаю , что Before="InstallInitialize"
происходит непосредственно перед самой установкой (т. Е. Копирование файлов и еще много чего), а не на этапе инициализации самого установщика.