Что такое WiX-эквивалент Environment.SpecialFolder.ApplicationData из .NET?

Мне нужно установить файл в папку Environment.SpecialFolder.ApplicationData, которая отличается в XP и Vista. Есть ли встроенный способ ссылки на правильную папку в WiX, или мне придется использовать условные проверки для ОС и делать это вручную?

Если мне нужно сделать последнее, как мне сослаться на каталог текущего пользователя Windows в Vista?


person Davy8    schedule 13.10.2008    source источник


Ответы (1)


Используйте элемент Directory с идентификатором AppDataFolder:

<Directory Id="AppDataFolder">
  <Directory Id="MyAppFolder" Name="My">
    <Component Id="MyComponent">
      <File Source="Files\test1.txt" />
    </Component>
  </Directory>
</Directory>

В результате test1.txt будет установлен в C: \ Users \ username \ AppData \ Roaming \ My в Windows 7 и в C: \ Documents and Settings \ username \ Данные приложения \ My в Windows XP.

В MSDN есть список свойств, которые вы можете использовать для ссылки на специальные папки.

person Pavel Chuchuva    schedule 13.10.2008
comment
Обратите внимание, что атрибут Name="AppDataFolder" здесь можно опустить. Здесь требуется только атрибут Id. Также вы можете опустить компонент Guid; wix автоматически сгенерирует стабильный Guid. Наконец, вы можете опустить атрибуты Id, Name и KeyPath в элементе File. Id и Name будут иметь эти значения по умолчанию на основе Source, и файл автоматически будет ключевым путем компонента, потому что компонент не содержит ничего другого. - person Wim Coenen; 25.04.2014
comment
К сожалению, вы получаете сообщение об ошибке LGHT0204: ICE38: компонент MyComponent устанавливается в профиль пользователя. Он должен использовать ключ реестра в HKCU в качестве пути ключа, а не файл., поэтому вам необходимо добавить значение RegistryValue в качестве пути ключа компонента. Я бы хотел, чтобы мне сошло с рук только файл. - person Alex Vang; 13.05.2016