Копирование структуры каталогов с помощью 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 ответ:
Из вывода
heat /?
:-dr directory reference to root directories (cannot contains spaces e.g. -dr MyAppDirRef)
Если вы используете heat для рекурсивного сбора структуры каталогов, то переключатель
-dr
установит идентификатор корневой целевой папки. Этот идентификатор должен совпадать с идентификатором элементаDirectory
, указанного в других файлах wxs.Для собранных вложенных папок heat по-прежнему будет генерировать случайный идентификатор. Данный идентификатор будет отображаться несколько раз в сгенерированном XML-файле:
В элементе
Directory
, генерируемом теплом для этого вложенная папка, как атрибутId
.В элементах
Component
, связанных с этой папкой, в качестве атрибутаDirectory
.Идентификатор используется только для связи элементов
Component
с элементамиDirectory
. это не имя папки, как оно появляется после установки. он используется только в качестве ключа в базе данных установщика Windows.