首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >TeamCity构建MSP文件

TeamCity构建MSP文件
EN

Stack Overflow用户
提问于 2012-05-22 15:55:45
回答 2查看 733关注 0票数 3

背景:我有一个很好的TeamCity安装程序;包含一个ci构建和一个发行版构建,它使用WiX构建我的安装程序并修补所有版本号。当我做一个新的版本构建,我想要自动创建MSP补丁针对以前的一组安装程序。我想要么是在TeamCity中标记RTM,要么是作为版本号的列表。

我倾向于的方法是创建一个单独的配置,并获取符合条件(标记或版本号)的所有前面构建的msi工件。标记看起来要整洁得多,但我在文档中看不到关于您如何使用它的任何内容?

我有一个脚本来构建MSP补丁,但它依赖于一个PCP文件,需要在ORCA中进行编辑来描述该修补程序。

  1. 在编辑PCP方面,除了ORCA之外,还有什么可以用来编辑的吗?我一直在看这里的WiX方法:http://wix.sourceforge.net/manual-wix3/patch_building.htm,它看起来像http://wix.sourceforge.net/manual-wix3/patch_building.htm,任何人都知道您是否可以通过相同或另一个构建中的标记访问TeamCity中的工件吗?
  2. ,对于在TeamCity?

中自动构建/链接MSP修补程序文件,还有人有其他见解吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-06-20 16:18:52

  1. 您可以使用WiX工具集中的PatchCreation元素构建.PCP文件。这可能会为您提供创建自定义.PCP文件所必需的灵活性。
  2. 对不起,不要使用

不使用TeamCity。:)

票数 1
EN

Stack Overflow用户

发布于 2012-06-25 14:49:00

为了补充罗布的回答:

#2. TeamCity可以通过标记检索项目:

代码语言:javascript
复制
http://servername:8080/httpAuth/app/rest/buildTypes/id:bt13/builds?status=SUCCESS&tag=RTM

#3.我在PatchCreation工具集中使用了WiX元素(Rob建议),他对此非常灵活。下面是我所构建的一个概要,所有这些似乎在测试中都运行得很好,

teamcity项目有许多构建参数,它们是:

  1. 新建版本号--默认为更改,因此如果不更改,则会破坏构建。
  2. 旧版本号--如上面的
  3. 新建版本回购--这是buildtypeid,查看项目的查询字符串,它将具有buildTypeId=btXX。XX是这里应该提供的号码。
  4. Old build repo -如

所示

teamcity项目有以下步骤:

运行patch.pcp

  • Unpack新版本(命令: msiexec /q /a new.msi) (命令: msiexec /q /a new.msi)--

  • 解包旧版本(命令:msiexec new.msi en19#)--选择不同的工作dir<代码>H 122创建修补程序(命令: msimsp p hotfix-%system.msiOldVersion%-%system )。msiNewVersion%.msp -l patch.log

创建MSBuild patch.pcp

代码语言:javascript
复制
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" DefaultTargets="Build"  xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <!--<Import Project="references\MSBuild.Community.Tasks.Targets"/>-->
  <UsingTask AssemblyFile="references\MSBuild.Community.Tasks.dll" TaskName="WebDownload"/>
  <UsingTask AssemblyFile="references\MSBuild.Community.Tasks.dll" TaskName="TemplateFile"/>
  <Target Name="Build">
    <!-- preconditions for build -->
    <Error Condition="'$(msiOldVersion)' == 'changeme'" Text="Use run custom build, setting the client version of the msi"/>
    <Error Condition="'$(msiOldVersion)' == ''" Text="Use run custom build, setting the client version of the msi"/>
    <Error Condition="'$(msiNewVersion)' == 'changeme'" Text="Use run custom build, setting the new version of the msi"/>
    <Error Condition="'$(msiNewVersion)' == ''" Text="Use run custom build, setting the new version of the msi"/>
    <Message Text="Old Version: $(msiOldVersion)"/>
    <Message Text="New version: $(msiNewVersion)"/>

    <!-- download files from teamcity... -->
    <WebDownload FileUri="http://server:8080/httpAuth/repository/download/bt$(msiOldRepo)/trunk/Path/bin/Release/en-us/installer-v-v.$(msiOldVersion).msi" UserName="download" Password="abcdefgh" FileName="downloads/oldversion.msi"  />
    <WebDownload FileUri="http://server:8080/httpAuth/repository/download/bt$(msiNewRepo)/trunk/Path/bin/Release/en-us/installer-v.$(msiNewVersion).msi" UserName="download" Password="abcdefgh" FileName="downloads/newversion.msi"  />

    <!-- fill in blanks in patch.wxs -->
    <ItemGroup>
      <Tokens Include="oldVersion">
        <ReplacementValue>$(msiOldVersion)</ReplacementValue>
      </Tokens>
      <Tokens Include="newVersion">
        <ReplacementValue>$(msiNewVersion)</ReplacementValue>
      </Tokens>
    </ItemGroup>
    <TemplateFile Template="template.wxs" OutputFileName="patch.wxs" Tokens="@(Tokens)"/>    
  </Target>

Template.wxs由MSBuild脚本使用

代码语言:javascript
复制
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
  <PatchCreation
      Id="deadbeef-dead-beef-dead-beefdeadbeef"
      CleanWorkingFolder="no"
      OutputPath="patch.pcp"
      WholeFilesOnly="no">
    <PatchInformation
        Description="Small Update Patch"
        Comments="Small Update Patch"                        
        Manufacturer="Your Manufacturer"/>
    <PatchMetadata
        AllowRemoval="yes"
        Description="Hotfix"
        ManufacturerName="Your Manufacturer"
        MoreInfoURL="http://yourwebsite.com"
        TargetProductName="Your Product Name"        
        Classification="Hotfix"
        DisplayName="Hotfix - TBC"/>

    <Family DiskId="5000"
        MediaSrcProp="Sample"
        Name="Sample"
        SequenceStart="5000">
      <UpgradeImage SourceFile="downloads\newunpack\newVersion.msi" Id="SampleUpgrade">
        <TargetImage SourceFile="downloads\oldunpack\oldVersion.msi" Order="2"
            Id="SampleTarget" IgnoreMissingFiles="no" />
      </UpgradeImage>
    </Family>

    <PatchSequence PatchFamily="SamplePatchFamily"        
        Supersede="yes" />    
  </PatchCreation>
</Wix>
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10705624

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档