我目前有一个自定义工作流活动,在成功编译解决方案后运行外部进程,如果外部进程失败,则返回ExitCode <> 0.一旦我知道进程失败,我想将构建状态设置为FAIL(正如您将看到的那样,代码是否未编译)所以我添加了一个SetBuildProperties活动,它将Status属性设置为BuildStatus.Failed但这似乎只是导致在构建完成时提供Partially Succeeded构建.
我已经尝试将构建的编译状态设置为在我的自定义活动中失败,这导致了失败的构建,但我真的不想这样做,因为它在解决方案编译时会产生误导.
谁能告诉我如何强制构建失败?(最好不必将编译状态设置为失败!)
谢谢
我有一个安装程序,它是从安装项目创建的,并使用MSBuild使用此处找到的方法构建.虽然我设置了生成.msi文件的构建过程,但我没有自己设置项目.安装项目的启动条件之一是检查.Net框架版本4,如果它未安装在目标计算机上,则会向用户显示一个消息框,询问他们是否要访问URL以下载.Net框架安装文件.如果用户在消息框中选择"是",则启动浏览器并加载URL.尼斯.安装项目还会检查我们的产品需要的另一个先决条件,并执行相同的操作.
我目前正在使用Wix重写安装程序,到目前为止,我已经能够解决一些小问题(请记住,我仍处于安装程序的早期阶段).我已经能够重新创建.Net Framework v4.0和其他必备软件的检查.我还能够显示消息框,询问用户是否要使用自定义wix操作启动浏览器到URL以下载其他必备软件.
问题
想要像旧安装程序那样为.Net Framework做同样的事情,我写了另一个自定义操作来启动浏览器到.Net框架下载URL.我编译了自定义操作和安装程序,并从我的测试机器中删除了.Net框架.我在我的测试机器上运行安装程序并且自定义操作不起作用,这是因为.Net Framework不再安装在测试机器上!
问题
有没有办法重新创建原始安装项目能够检查.Net框架的方式,向用户显示一个消息框,然后如果用户选择这样做,则启动浏览器到下载URL?我已经能够确定是否未安装框架,只需要一种方法来显示消息框,如果用户选择并阻止安装程序继续,则启动浏览器到特定的URL.
要么
有没有办法在没有安装.Net框架的机器上运行自定义操作?(我猜这个问题的答案是否定的!)
一如既往,先谢谢
我为解决方案设置了2个构建定义,1是每晚触发的每晚构建,另一个是门控签入构建,当开发人员尝试检查源控件中的新更改时将触发该构建.每晚构建使用自定义模板,该模板使用从Ewald Hoffman方法略微修改的方法来增加装配版本.当通过自定义活动签入文件以检查文件时,我得到构建错误:
您的签入无法完成,因为它会影响以下选通的构建定义\ Project\GatedBuld.要完成签入,您需要对shelveset Gated_2011-11-08_09.31.42.6934; DOMAIN\TFSBuildAccount的构建进行排队.
目前我还没有找到绕过这个门控签到版本的方法(使用*NO_CI*检查评论来阻止CI版本).
我已经尝试为构建服务帐户设置"覆盖签入验证的构建"权限(通过门控构建的安全性),但据我所知,这只会在手动检查代码时阻止门控构建(通过"门禁登记"对话框中显示的复选框).我正在寻找的是一种在自动检查更改时绕过门控构建的方法
有什么建议?
一如既往,感谢任何提前帮助
我被赋予了编写Powershell脚本以从头开始设置服务器以作为Web应用程序的一部分运行我们的服务的任务,并且设置此服务器所需的步骤之一是更改已安装服务的DCOM配置,特别是将帐户添加到"启动和激活"/"访问"权限,并在添加这些帐户后设置这些帐户的权限.
是否有使用Powershell的方法?我无法找到一种具体的方法来实现我的目标,所以任何帮助都会很棒
我知道Wix和PowerShell脚本上有几篇帖子,但在尝试了这些帖子的解决方案之后,我仍然没有得到我想要的结果.为了解释我的情况,我创建了一个Wix安装项目,它将从我的本地机器(运行Windows 7)中获取2个Powershell脚本和一个msu文件,并将它们捆绑到一个msi文件中.如果我在测试虚拟机上运行msi文件(运行Windows Server 2008 r2),文件将被复制到指定的目录中.大.在"添加/删除程序"列表中显示新项目有一个缺点,但这将是我将在以后处理的内容.
(Powershell脚本将安装msu,编辑配置文件并启动服务 - 手动运行时工作正常)
将文件复制到目标计算机后我尝试做的就是运行一个复制的Powershell脚本,但到目前为止我还没能实现这一点.
我的.wxs代码看起来像这样(使用TFS 2010编写和编译)
<?xml version="1.0" encoding="UTF-8"?>
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi" xmlns:util="http://schemas.microsoft.com/wix/UtilExtension">
<Product Id="a89cc681-d617-43ea-817e-1db89b941bf2" Name="Test1" Language="1033" Version="1.0.0.0" Manufacturer="Test1" UpgradeCode="d8db2663-2567-4bb8-9023-09988838eb55">
<Package InstallerVersion="200" Compressed="yes" />
<Media Id="1" Cabinet="media1.cab" EmbedCab="yes" />
<!-- Set up the directory -->
<Directory Id="TARGETDIR" Name="SourceDir">
<Directory Id="IISTIERINSTALLATION" Name="IISTierInstallation">
</Directory>
</Directory>
<!-- Copy the files -->
<DirectoryRef Id="IISTIERINSTALLATION">
<Component Id ="C2WTS_update_file" Guid="11960C39-12EB-4777-B43F-394ADB352DD3">
<File Id="C2WTSmsu" Name="Windows6.1-KB974405-x64.msu" Source="C:\PS Scripts\Windows6.1-KB974405-x64.msu" />
</Component>
<Component Id ="C2WTSInstallScript" Guid="C85ED4DB-BDC1-4DD1-84FE-41D7463C6365">
<File Id="C2WTSscript1" Name="C2WTS_service_install.ps1" Source="C:\PS Scripts\C2WTS_service_install.ps1" />
</Component>
<Component Id ="C2WTSxmlScript" Guid="AF1F85A7-88F7-4BBA-89D9-6817CFAA74F9"> …Run Code Online (Sandbox Code Playgroud) 我负责管理我们产品的构建,并且已经被要求提出一种定制现有构建定义的方法,以便在需要时构建不同的分支.
此产品的构建过程已经有多个自定义步骤和操作,并且产品中包含大量项目文件,因此无法为每个创建的新分支设置新的构建定义.
构建定义设置为从Main分支构建.目的是输入一个特定的分支(使用可在构建排队时输入的工作流参数),然后构建该分支而不是默认的Main分支,而无需编辑构建定义.
我有一个单独的测试程序,用于测试我的所有自定义构建活动和过程.在此构建定义的工作流程中,我添加了一些用于记录目的的构建消息,以便我可以查看构建过程中使用的变量的值.
我还基于这个测试程序创建了一个分支,准备测试可用于构建多个分支的构建定义
首先,我从原始分支运行原始测试解决方案的项目文件的构建,然后更改构建定义,以便使用新分支完成相同的操作并运行另一个构建.比较两个分支之间的构建日志时,它们之间只有一些细微差别.(记录详细程度设置为诊断)
第一个区别 - 我查看了Workspace变量,构建的Folders属性引用了它们各自的分支,特别是Folders属性的ServerItem属性
第二个区别 - 正在构建的项目文件(BuildSettings.ProjectsToBuild)来自各自的分支机构
我没有看到除这些之外的2个构建日志之间的任何其他差异
这里的主要问题是:
是否有一种标准方法来交换为单个构建定义构建的分支?
如果没有,是否可以在排队构建时将自定义工作流模板中的默认主分支(在Workspace和BuildSettings.ProjectsToBuild中)的所有引用更改为输入的分支?
一如既往,提前感谢任何和所有的帮助