2017-01-20 6 views
0

Я делаю установку своего приложения с WiX. Я хочу, чтобы скопировать/вставить .ini файл в текущей папке пользователя в ОС Windows (C: \ Users \ {имя пользователя})% USERPROFILE не работает с WiX

я видел на этом post, что я должен использовать тег [% USERPROFILE]. Я использую это так:

<Directory Id="UserFolder" Name="[%USERPROFILE]"> 
<Directory/> 

Как результат, папка [% USERPROFILE] создается в C: \, содержащий файл .ini. Это не то, что я хочу.

У кого-нибудь есть идея, как заставить его работать?

+0

http://stackoverflow.com/questions/17500373/wix-toolset-setting-a-property-to-user-profile-folder- path-and-program-files и http://windows-installer-xml-wix-toolset.687559.n2.nabble.com/Environment-variables-into-a-WIX-property-td5412818.html может представлять интерес для вы. Я никогда не видел [% USERPROFILE], и это выглядит странно. Cursory check не находит его в документах Wix. Возможно, это не будет действительным. – Will

+1

Спасибо за ваши входные данные @ Будем ли я пробовать то, о чем они говорили, напрасно. – bam500

+0

Любые ссылки на текущего пользователя не будут иметь смысла для каждой установки. Вы уверены, что ваша настройка зависит от пользователя, а не от компьютера? (И в любом случае размещение вашего файла .ini непосредственно в профиле пользователя, а не в папке данных приложения пользователя, - это не то, что нужно сделать. Windows не Linux!) –

ответ

1

[%USERPROFILE] является допустимой ссылкой на переменную среды, но я не думаю, что он может быть использован в этом контексте, поскольку этот контекст не является formatted. Подробности см. На странице Directory Table.

Обратите внимание, что, как упоминалось в комментариях, %USERPROFILE%, вероятно, является неправильным местом для любых файлов, которые вы захотите установить. Рассмотрим использование другого predefined folder, такого как AppDataFolder, LocalAppDataFolder, или PersonalFolder.

Если вы идете с PersonalFolder, я полагаю, вы можете просто использовать, что вместо того, чтобы:

<Directory Id="PersonalFolder"> ... </Directory> 

Если нет удовлетворительного предопределенного свойства папки, вы можете использовать либо type 51 или type 35 пользовательское действие (в зависимости от того, вы планируете его до или после CostFinalize, чтобы установить значение времени выполнения вашей папки в [%USERPROFILE]. Эти пользовательские действия будут форматировать значение, которое они используют. Обязательно используйте имя ALL-CAPS, чтобы его можно было установить во время выполнения. , если каталог называется USERPROFILEFOLDER:

<SetDirectory Id="USERPROFILEFOLDER" Value="[%USERPROFILE]"/> 
<!-- or --> 
<SetProperty Id="USERPROFILEFOLDER" Value="[%USERPROFILE]"/> 

(И не забудьте запланировать действие где-то.)

+0

Спасибо, я думаю, что я изменю свое мягкое, чтобы читать в LocalAppDataFolder вместо папки USER. – bam500

 Смежные вопросы

  • Нет связанных вопросов^_^