我目前正在尝试创建一个 wix 安装程序,并发现这篇文章指出 WiX 3.8 无法使用堆获取每个项目文件中添加的引用。3.10 仍然如此吗?
我确实知道如何手动添加引用 dll,但我真的希望我可以使用一些自动化。
我确实发现这个堆栈溢出问题回答了类似的问题,但 HeatProject 方法似乎对我不起作用。
<Target Name="BeforeBuild">
<HeatProject ToolPath="$(WixToolPath)" AutogenerateGuids="true" OutputFile="OutputFile.wxs" SuppressFragments="true" Project="ReferencedProject.csproj" ProjectOutputGroups="Binaries" />
</Target>
此代码片段成功生成了 OutputFile.wxs。但是,当我从手动 wxs 中删除带有 exe 文件的组件时,最终结果 msi 没有安装 .exe(以及所有引用)
编辑 :
OutputFiles.wxs 的内容如下
<?xml version="1.0" encoding="utf-8"?>
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
<Fragment>
<DirectoryRef Id="ReferenceProject.Binaries">
<Component Id="cmp7C475BDFC8ADED831D737FA819051E2F" Guid="*">
<File Id="filC6ECF306B200636DD5F3BA1DCBDA0F15" Source="$(var.ReferenceProject.TargetDir)\ReferenceProject.exe" />
</Component>
<Component Id="cmp4449C9C84D65952451BBDF1488B8BE48" Guid="*">
<File Id="fil72052E64CE55C9B2516044DF15A1F318" Source="$(var.ReferenceProject.TargetDir)\ReferenceProject.exe.config" />
</Component>
</DirectoryRef>
</Fragment>
<Fragment>
<ComponentGroup Id="ReferenceProject.Binaries">
<ComponentRef Id="cmp7C475BDFC8ADED831D737FA819051E2F" />
<ComponentRef Id="cmp4449C9C84D65952451BBDF1488B8BE48" />
</ComponentGroup>
</Fragment>
</Wix>
在我的主要 wxs 上,我确实有一个安装了一条线的功能
<ComponentGroupRef Id="ReferenceProject.Binaries"/>
但不包括 exe(也引用库)