tldr:批处理文件不存在,导致自定义操作返回错误。
作为 Wix 5 升级的一部分,我们用新的 Files 元素替换了用于复制各种文件的 heat 转换,包括相关的批处理文件。 事实上有两个 Files 元素,最初设置为:
<ComponentGroup Id="ApplicationFiles">
<Files Directory="BinDir" Include="$(env.HeatProgramSourceFiles)\**">
</Files>
<Files Directory="SetupDir" Include="$(env.HeatProgramSourceFiles)\**">
</Files>
</ComponentGroup>
请注意,在上面的配置中,包含属性都设置为同一目录。 结果,包括batch.bat在内的多个文件被引用了两次。 如果文件被多次引用,Wix 构建将跳过复制文件。 这导致batch.bat被复制到错误的位置。 当自定义操作尝试在预期位置运行该文件时,该文件不存在。 更正文件包含属性,使目录不重叠,修复自定义操作:
<ComponentGroup Id="BrainBankFiles">
<Files Directory="BinDir" Include="$(env.HeatProgramSourceFiles)\bin\**">
</Files>
<!--
Be careful that the Files Include attribute below specifies a directory that
DOES NOT overlap any directories specified in previous Files elements. If
you do, you will get a warning during the wix build and the duplicate references
will not get copied to the target location during install.
-->
<Files Directory="SetupDir" Include="$(env.HeatProgramSourceFiles)\setup\**">
</Files>
</ComponentGroup>