Установите папку ALLUSERS (не ярлык!) с помощью WiX

У меня есть файл MSI, который устанавливает папку с кучей файлов внутри. У меня есть место, куда я помещаю файлы:

Windows XP: C:\Documents and Settings\All Users\Documents\MyFolder

Windows 7: C:\Users\Public\Documents\MyFolder

Проблема в том, что я не хочу жестко кодировать эти пути, но куда бы я ни посмотрел, я не могу найти, как это сделать, потому что везде, куда бы я ни посмотрел, они говорят о создании ярлыков для всех пользователей, и это не то, что я пытаюсь сделать. Как установить папку в папку «Все пользователи»?

Что-то вроде этого:

<PropertyRef Id="WIX_DIR_COMMON_DOCUMENTS" />

<Directory Id="TARGETDIR" Name="SourceDir">
  <Directory Id="WIX_DIR_COMMON_DOCUMENTS">
    <Directory Id="MyFolder" Name="MyFolder">

person Jimmy    schedule 01.07.2013    source источник


Ответы (1)


У установщика Windows нет свойство для этой папки, но пользовательское действие, предоставляемое WiX, делает это.

Согласно документации по настраиваемым действиям OSInfo:

  1. Ссылка на расширение WixUtilExtension для компоновщика.
  2. Определите свойство через ссылку:

    <PropertyRef Id="WIX_DIR_COMMON_DOCUMENTS" />
    

Затем определите каталог где-нибудь в каталоге TARGETDIR. Например:

    <Directory Id="TARGETDIR" Name="SourceDir">
      <Directory Id="WIX_DIR_COMMON_DOCUMENTS">`
        <Directory Id="MyFolder" Name="MyFolder" />`
      </Directory>`
    </Directory>`
person Tom Blodget    schedule 01.07.2013
comment
Я изменил свой вопрос, чтобы отразить сделанные мной изменения, но теперь я получаю 2600 ошибок (без преувеличения). Это говорит о том, что поскольку эта папка не находится в стандартном каталоге, этот компонент не соответствует критериям - person Jimmy; 01.07.2013
comment
Да, вы (или Heat.exe) должны генерировать идентификаторы GUID для ваших компонентов. WiX служит нам хорошо, устраняя GUID, когда это возможно, но не всегда. Если вы всегда выполняете только MajorUpgrades (рекомендуется), то идентификаторы GUID не имеют значения. В противном случае идентификаторы GUID компонентов должны быть одинаковыми от версии к версии. - person Tom Blodget; 01.07.2013
comment
Итак, я использую следующую команду нагрева, разве это не автоматическое создание GUID? C:\Program Files\WiX Toolset v3.7\bin\heat.exe dir ..\..\MyFolder\Stuff -dr INSTALLFOLDER -gg -var var.MyFolderBin -srd -ag -sfrag -t ..\.. \template.xslt -out ..\..\MyFolderBin.wxs - person Jimmy; 01.07.2013
comment
Таким образом, удаление -ag устранило проблему, я упустил из виду, что использовал этот тег при работе в режиме нагрева .... еще раз спасибо за помощь в моем опыте с WiX! - person Jimmy; 01.07.2013