我有一个使用teambuild / msbuild的当前版本,我需要将wix编译集成到。
Wix项目不是正在构建的解决方案的一部分,而是与使用TFSBuild.proj目录引入的各种工具一起使用。
在构建安装项目之前,我必须使用Heat来收集在编译后目标期间创建的几个目录。我有这个工作正常,但现在我不知道如何编译我的wix项目
后编译目标看起来像这个
<Target Name="AfterCompile" DependsOnTargets="CopyOutputFiles;BuildMsi;BuildZip" />
复制输出文件将编译后的文件复制到特定目录并对其进行更多操作,这是我需要包含在Wix项目中的输出。
BuildMsi目标目前看起来像这样。
<Target Name="BuildMsi" >
<Message Text="Start harvesting Website files for Wix compliation" />
<HeatDirectory
ToolPath="$(WixToolPath)"
Directory="$(DropLocation)\Latest\x86\Release\_PublishedWebsites\IFMA.MasterPlan.Web"
GenerateGuidsNow="yes"
ComponentGroupName="MasterPlanWeb"
OutputFile="$(MSBuildProjectDirectory)\Setup\Product\Fragments\wwwfiles.wxs"
SuppressFragments="yes"
DirectoryRefId="WEBROOT"
KeepEmptyDirectories="yes"
PreprocessorVariable="var.WebRoot"
SuppressRegistry="yes"
SuppressRootDirectory="yes"
SuppressCom="yes" />
<Message Text="Finished harvesting Website files for Wix compliation" />
<Message Text="Start harvesting database files for Wix compliation" />
<HeatDirectory
ToolPath="$(WixToolPath)"
Directory="$(DropLocation)\Latest\x86\Release\Database"
GenerateGuidsNow="yes"
ComponentGroupName="MasterPlanWeb"
OutputFile="$(MSBuildProjectDirectory)\Setup\Product\Fragments\dbfiles.wxs"
SuppressFragments="yes"
DirectoryRefId="WEBROOT"
KeepEmptyDirectories="yes"
PreprocessorVariable="var.WebRoot"
SuppressRegistry="yes"
SuppressRootDirectory="yes"
SuppressCom="yes" />
<Message Text="Finished harvesting database files for Wix compliation" />
</Target>
所以现在Wix目录$(MSBuildProjectDirectory)\ Setup有它需要的片段,我只需要编译wix项目“$(MSBuildProjectDirectory)\ Setup \ Setup.proj”。
我是否必须首先调用蜡烛任务并指定各种属性,然后将其输出传递给light任务,或者我可以以某种方式直接编译.proj文件,因为它已经具有所需的所有信息(例如,引用的库等)。
答案 0 :(得分:1)
我将为您的产品创建一个包含Compile元素列表的.wixproj,将BuildMsi目标放在该.wixproj中并将其安排在BeforeCompileAndLink中。然后将TFS指向MSBuild .wixproj。
这样你的设置构建就干净利落。