我在运行时使用Heat来生成将要安装的组件。我需要复制的文件很少。但是每次我使用没有FileId属性的<CopyFile>
时,它都会在Error 2716: Couldn't create a random subcomponent name for component 'copyFile'
我不能使用FileId,因为它在设计时不知道。
答案 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=""[SystemFolder]cmd.exe" /c copy "[INSTALLLOC]AppFolder\FileName" "[TARGETDIR]"" />
<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>