Копирование структуры каталогов с помощью wix


Итак, у меня есть огромная файловая структура, которую я хочу, чтобы установщик, который я строю с помощью wix, скопировал на клиентское расположение. В настоящее время я печатаю его так:

<Directory Id="xyz" Name = "abc FileSource = "sdfsdf">
    <Component Id="asdas" Guid="asdasd">
        <File Id = "asdfgrs" Name="name" />
    </Component>
</Directory>

Поскольку количество файлов увеличилось, я хотел бы, чтобы это было сделано в автоматическом режиме. Используя тепло, я могу генерировать:

<ComponentGroup Id="weqw">
   <Component Id="2132312" Directory="Some random string (cause of concern>" Guid="asdasd">
        <File Id="sdqwdqwd> keyPath="yes" Source = "Correct source path" />
    </Component>
<ComponentGroup>

Меня беспокоит то, что из-за наличия некоторой случайной строки в поле каталога компонента, генерируемого теплом, я не получу реплицированную структуру каталога. Это правда? Является есть ли способ обойти это?

1 3

1 ответ:

Из вывода heat /?:

-dr      directory reference to root directories (cannot contains spaces 
         e.g. -dr MyAppDirRef)

Если вы используете heat для рекурсивного сбора структуры каталогов, то переключатель -dr установит идентификатор корневой целевой папки. Этот идентификатор должен совпадать с идентификатором элемента Directory, указанного в других файлах wxs.

Для собранных вложенных папок heat по-прежнему будет генерировать случайный идентификатор. Данный идентификатор будет отображаться несколько раз в сгенерированном XML-файле:

  1. В элементе Directory, генерируемом теплом для этого вложенная папка, как атрибут Id.

  2. В элементах Component, связанных с этой папкой, в качестве атрибута Directory.

Идентификатор используется только для связи элементов Component с элементами Directory. это не имя папки, как оно появляется после установки. он используется только в качестве ключа в базе данных установщика Windows.