WIX错误2716:无法为组件“CopySTST”创建随机子组件名称

时间:2011-08-24 14:18:27

标签: wix wix3.5 wix3.6

我在运行时使用Heat来生成将要安装的组件。我需要复制的文件很少。但是每次我使用没有FileId属性的<CopyFile>时,它都会在Error 2716: Couldn't create a random subcomponent name for component 'copyFile'

的运行时失败

我不能使用FileId,因为它在设计时不知道。

2 个答案:

答案 0 :(得分:0)

您可以使用XSL模板转换输出WXS文件。热指令行选项之间有-t:切换来执行此操作。在该模板中,您可以向正确的组件添加CopyFile元素,并避免遇到“ID is unknown”问题。

答案 1 :(得分:-2)

使用paraffin或自定义操作

  • 石蜡

%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>