我是WiX的新手并且总体上设置了自定义安装程序,所以我为这个问题的主题道歉!
我有一个内部业务应用程序(日记),它构建和运行良好,所以我按照教程/官方文档添加WiX项目和引用日记的csproj.
在构建并运行这个最基本版本的WiX安装程序之后,输出目录有一个单独的exe文件,在加载文件未找到异常后会崩溃.
我的猜测是它没有内置Crystal Report或NLog,两者都在我的CSProj中引用.
我的问题是,如何让WIX包含并构建对输出的项目引用?
任何帮助是极大的赞赏!/安东尼
stt*_*taq 10
不幸的是,为了让你的项目正确,你将不得不做一些体力劳动.我将采用以下两种方法之一,要求您编辑.wixproj文件:
使用HeatProject任务.您必须为所有引用的项目执行此操作,它将为您提供单独的.wxs文件.在此参考之后,基于WIX的设置的功能中的组件分组.
<Target Name="BeforeBuild">
<HeatProject ToolPath="$(WixToolPath)" AutogenerateGuids="true" OutputFile="OutputFile.wxs" SuppressFragments="true" Project="ReferencedProject.csproj" ProjectOutputGroups="Binaries" />
</Target>
Run Code Online (Sandbox Code Playgroud)使用HeatDirectory任务.下面将获取项目bin文件夹中的所有内容,包括引用项目的任何二进制文件,并为您提供UniqueComponentGroupName包含在任何功能中的单个.wxs .
<Target Name="BeforeBuild">
<PropertyGroup>
<DefineConstants>BINFOLDER=PATH\TO\YourProject\bin\$(Configuration)</DefineConstants>
</PropertyGroup>
<HeatDirectory OutputFile="OutputFile.wxs" Directory="PATH\TO\YourProject\bin\$(Configuration)" KeepEmptyDirectories="true" DirectoryRefId="INSTALLFOLDER" ComponentGroupName="UniqueComponentGroupName" SuppressCom="true" SuppressFragments="true" SuppressRegistry="true" SuppressRootDirectory="true" GenerateGuidsNow="true" ToolPath="$(WixToolPath)" PreprocessorVariable="var.BINFOLDER" />
</Target>
Run Code Online (Sandbox Code Playgroud)