gpt4 book ai didi

tfs - 将 Wix 属性设置为 TFS 构建位置

转载 作者:行者123 更新时间:2023-12-04 10:29:40 31 4
gpt4 key购买 nike

我一直试图找到我的问题的答案,但找不到;因此我将把解决方案放在这里。我希望它对其他人有帮助。

问题:

我希望我的 Wix 项目在 TFS 2010 构建过程中构建。作为其中的一部分,我希望 Wix 的源文件位置指向 TFS 的构建位置。例如,我想要:

<File Id="ABC" KeyPath="yes" source="C:\Builds\1\MyBuild\assembly.dll" />

成为:
<File Id="ABC" KeyPath="yes" source="$(var.TFSLOCATION)\assembly.dll" />

'TFSLOCATION' 是一个 wix 属性,需要填充 TFS 构建的位置。这需要在构建过程中发生,其中构建位置路径传递给 Wix 项目。

解决方案:

我阅读了以下文章:

http://www.ageektrapped.com/blog/setting-properties-for-wix-in-msbuild/

所以这就是我对我的 Wix 项目文件(wixproj)所做的:

为了从 TFS MSBuild 进程设置 wix 属性,wix 项目文件需要 两个变化:

<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<ProductVersion>3.5</ProductVersion>
<SourceLocation Condition="'$(SourceLocation)' == '' ">UNKNOWN</SourceLocation>
<ProjectGuid>{cae7e273-2de5-4a60-9c4f-9da5f094caf5}</ProjectGuid>
<SchemaVersion>2.0</SchemaVersion>
<OutputName>N4S.MSO.BAM.Installer</OutputName>
<OutputType>Package</OutputType>
<WixTargetsPath Condition=" '$(WixTargetsPath)' == '' AND '$(MSBuildExtensionsPath32)' != '' ">$(MSBuildExtensionsPath32)\Microsoft\WiX\v3.x\Wix.targets</WixTargetsPath>
<WixTargetsPath Condition=" '$(WixTargetsPath)' == '' ">$(MSBuildExtensionsPath)\Microsoft\WiX\v3.x\Wix.targets</WixTargetsPath>
<SccProjectName>SAK</SccProjectName>
<SccProvider>SAK</SccProvider>
<SccAuxPath>SAK</SccAuxPath>
<SccLocalPath>SAK</SccLocalPath>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)' == 'Release' ">
<OutputPath>bin\$(Configuration)\</OutputPath>
<IntermediateOutputPath>obj\$(Configuration)\</IntermediateOutputPath>
<DefineConstants>LOCATION=$(SourceLocation)</DefineConstants>
</PropertyGroup>

在上面的xml中,请注意以下两行:
<SourceLocation Condition="'$(SourceLocation)' == '' ">UNKNOWN</SourceLocation>

<DefineConstants>LOCATION=$(SourceLocation)</DefineConstants>

第一行指定一个属性 'SourceLocation' 并将其设置为默认的 'UNKNOWN' 值,如果是 不是 放。第二行在“发布”配置中定义了一个名为“LOCATION”的常量。此常量的值设置为“SourceLocation”属性的值。

现在,您需要对 Product.wxs 文件(或任何 wxs 文件的名称)进行以下更改。
  • 首先定义一个 wix 属性。

  • <?define TFSLOCATION="$(var.LOCATION)"?>
  • 现在,更新 File 元素。

  • <File Id="ABC" KeyPath="yes" source="$(var.TFSLOCATION)\assembly.dll" />

    TFS 2010 构建模板更改
  • 打开 TFS 2010 构建模板。
  • 查找任务“为项目运行 MSBuild”。
  • 打开此任务的属性并转到“CommandLineArguments”属性。
  • 将此属性的值设置为:

  • String.Format("/p:SourceLocation={0}", BinariesDirectory)

    完毕

    您现在有一个从 TFS 构建过程填充的 wix 属性。

    最佳答案

    如果您在 wixproj 文件中设置了对正在构建的项目的引用,则可以引用它们的目标路径。因此,如果您有两个项目 MyProject 和 MyProjectInstaller,请将 MyProjectInstaller 中的引用设置为 MyProject。

    现在在 product.wxs 文件中,您的 File 元素将如下所示:

    <File Id='EXE' Name='$(var.MyProject.TargetDir)\MyProject.exe' />
    <File Id='DLL' Name='$(var.MyProject.TargetDir)\MyProject.dll' />
    ...

    这样做的好处是无论您是在本地构建还是在构建服务器上构建,目标目录都是正确的。

    关于tfs - 将 Wix 属性设置为 TFS 构建位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6734558/

    31 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com