我正在尝试使用 WiX v4 创建安装,它将发布另一个 C# 项目,收获其文件,然后将它们打包到安装程序中。我能够让它工作,但问题是,当我需要它是独立的时,该项目正在作为依赖于框架的方式发布。
我目前在 wixproj 文件中使用以下内容来处理此问题:
<ItemGroup>
<ProjectReference Include="$(SolutionDir)\App.csproj" Publish="true" />
</ItemGroup>
<ItemGroup>
<HarvestDirectory Include="$(PublishFolder)">
<ComponentGroupName>HarvestedComponents</ComponentGroupName>
<DirectoryRefId>INSTALLFOLDER</DirectoryRefId>
<SuppressRootDirectory>true</SuppressRootDirectory>
<SuppressRegistry>true</SuppressRegistry>
</HarvestDirectory>
<BindPath Include="$(PublishFolder)" />
</ItemGroup>
如前所述,这是可行的,但当我需要独立时,它会执行依赖于框架的发布。
我找到了 关于为 MSBuild 执行此操作的文档,但它似乎不适用于 Wix;我尝试过执行此处描述的 PropertyGroup 方法以及将 PublishSelfContained="true" 属性放到 ProjectReference 元素上,并且我也仅使用 SelfContained 尝试了这两种方法。这些似乎都对已发布的文件没有任何影响。
我似乎也无法从 Wix 找到任何有关执行此操作的文档,尽管我也找不到任何有关使用 Publish 属性的文档,并且该文档仅来自另一篇 StackOverflow 帖子,所以我不确定这是否不可能通过这种方法或者只是没有详细记录。
将独立的发布信息(您想要的 MSBuild 属性)放在 .csproj 中,而不是 . wixproj.