msbuild wix proj文件

时间:2011-06-26 01:55:01

标签: msbuild wix team-build

我有一个使用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文件,因为它已经具有所需的所有信息(例如,引用的库等)。

1 个答案:

答案 0 :(得分:1)

我将为您的产品创建一个包含Compile元素列表的.wixproj,将BuildMsi目标放在该.wixproj中并将其安排在BeforeCompileAndLink中。然后将TFS指向MSBuild .wixproj。

这样你的设置构建就干净利落。