.net 具有项目收获类型的Wix heat.exe

eblbsuwk  于 2023-01-27  发布在  .NET
关注(0)|答案(3)|浏览(107)

我使用的是最新版本的Wix 3.5,我尝试使用heat.exe生成一个片段文件。命令行是:

"%WIX%\bin\heat.exe" project "MyProj.csproj" -pog Binaries -pog Content -suid -directoryid 
INSTALLLOCATION -ag -template fragment -out "Files.wxs"

我遇到的问题是我的项目所依赖的程序集在生成的文件中丢失。这是预期的行为吗?我如何添加它们?
我应该使用dir收割类型吗?!如何删除 *.pdb或 *.vshost.exe呢?
我想将其与CI服务器(TeamCity)一起使用

edit:我尝试了-pog Satellites,但也不起作用

af7jpaap

af7jpaap1#

很遗憾,这是WiX的已知问题:

Heat doesn't harvest referenced assemblies
从bug注解来看,似乎会在WiX 4. 0中添加支持。

58wvjzkj

58wvjzkj2#

我知道这是一个老问题,但这个线程可能包含一些可能的解决方案的想法:How to add a whole directory or project output to WiX package
其中提到的一个工具Paraffin3.1具有各种命令行开关,允许您排除不相关的文件。http://www.wintellect.com/CS/blogs/jrobbins/archive/2009/06/28/paraffin3-1-new-and-improved.aspx

hlswsv35

hlswsv353#

在我们的CI构建中,我们使用WiX和手工制作的wxs文件。
以下是构建文件的内容:

<Target Name="BuildSetup"  DependsOnTargets="BuildSetupVersion">
    <Exec Command="$(WIX-ToolPath)\candle.exe -nologo -out $(MSBuildProjectDirectory)\bin\Debug\Designer.wxs UI_RUS.wxs Bin.wxs" WorkingDirectory = "$(MSBuildProjectDirectory)\bin\Debug"/>
    <Exec Command="$(WIX-ToolPath)\light.exe -wx -out Setup_$(Major).$(Minor).$(Build).$(Revision).msi Designer.wixobj UI_RUS.wixobj Bin.wixobj" WorkingDirectory = "$(MSBuildProjectDirectory)\bin\Debug"/>
    <Message Text="##teamcity[publishArtifacts '$(MSBuildProjectDirectory)\bin\Debug\Setup_$(Major).$(Minor).$(Build).$(Revision).msi']"/>-->
</Target>

wxs -包含程序特定的msi信息(UpgradeCode、msi版本和包信息)。
UI_culture(本例中为罗斯).wxs -包含自定义本地化WiX UI。
wxs -包含所有需要的文件。(你可以通过wxi生成和使用WiX的include来自动化它),但是我们只是简单地手动编写这个文件。

相关问题