Ошибка 2716 WIX: не удалось создать случайное имя подкомпонента для компонента «CopySTST» - PullRequest
4 голосов
/ 24 августа 2011

Я использую Heat во время выполнения для генерации компонентов, которые будут установлены. Есть несколько файлов, которые мне нужно скопировать. Но каждый раз, когда я использую <CopyFile> без атрибута FileId, во время выполнения происходит сбой с Error 2716: Couldn't create a random subcomponent name for component 'copyFile'

Я не могу использовать FileId, потому что он не известен во время разработки.

Ответы [ 2 ]

0 голосов
/ 25 августа 2011

Вы можете преобразовать выходной файл WXS с помощью шаблона XSL. Для этого есть переключатель -t: среди параметров командной строки. В этом шаблоне вы можете добавить элементы CopyFile к соответствующим компонентам и избежать проблемы «Id is unknown», с которой вы сталкиваетесь.

0 голосов
/ 24 августа 2011

Использование Парафин или пользовательское действие

  • Парафин

%1\Paraffin.exe -dir "..\..\AppFolder" -dirref INSTALLLOC -custom COMPONENTNAME ..\..\ApplicationFragment.wxs -guids -ext .csproj -ext .cs -direXclude obj -direXclude "bin\Config" -direXclude Properties -multiple

  • Пользовательское действие

В соответствии с требованиями добавьте

<CustomAction Id="A_SetQtCmdLineCopyFiles" Property="QtExecCmdLine"
                Value="&quot;[SystemFolder]cmd.exe&quot; /c copy &quot;[INSTALLLOC]AppFolder\FileName&quot; &quot;[TARGETDIR]&quot;" />
<CustomAction Id="QtCmdCopyFiles" BinaryKey="WixCA" DllEntry="CAQuietExec" Execute="immediate" Return="ignore" />

Затем в Product.wxs добавьте

<Custom Action="GA_SetQtCmdLineCopyFiles" After="InstallFinalize">NOT INSTALLED AND NOT REMOVE</Custom>
<Custom Action="QtCmdCopyFiles" After="GA_SetQtCmdLineCopyFiles">NOT INSTALLED AND NOT REMOVE</Custom>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...