Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/wix/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
TeamCity+;WiX+;需要MSBuild工作流建议_Msbuild_Wix_Teamcity_Msbuildcommunitytasks - Fatal编程技术网

TeamCity+;WiX+;需要MSBuild工作流建议

TeamCity+;WiX+;需要MSBuild工作流建议,msbuild,wix,teamcity,msbuildcommunitytasks,Msbuild,Wix,Teamcity,Msbuildcommunitytasks,我一直在进行持续集成项目的下一步工作,即开始构建我的应用程序,自动更改所有程序集的版本号,然后创建安装程序 先介绍一下背景: 在过去的几个月里,我成功地运行了TeamCity,它构建了我的配置,并且运行了我的NUnit和NCover测试 我花了一点时间研究安装程序——我一直讨厌InstallShield,从来没有在我当前的应用程序中考虑过它。我喜欢NSIS,但后来碰巧遇到了。我对MS安装程序体系结构没有任何深入的了解,我知道这对于复杂的项目是危险的,所以在某个时候我需要了解更多。然而,经过几天的

我一直在进行持续集成项目的下一步工作,即开始构建我的应用程序,自动更改所有程序集的版本号,然后创建安装程序

先介绍一下背景:

在过去的几个月里,我成功地运行了TeamCity,它构建了我的配置,并且运行了我的NUnit和NCover测试

我花了一点时间研究安装程序——我一直讨厌InstallShield,从来没有在我当前的应用程序中考虑过它。我喜欢NSIS,但后来碰巧遇到了。我对MS安装程序体系结构没有任何深入的了解,我知道这对于复杂的项目是危险的,所以在某个时候我需要了解更多。然而,经过几天的反复提问、谷歌搜索和阅读博客,我有了一个WiX项目,它成功地构建、安装、运行应用程序,并且所有东西都可以干净地卸载。太好了

我还想让TeamCity构建配置自动更新我所有程序集的版本号。通过在开发机器上安装,并创建使用目标和任务更改版本号的部署配置,我能够模拟此功能。这工作正常,除了在我的开发机器上,我没有环境变量可以替代

这就是我现在所处的位置——我需要让TeamCity进行更新,虽然它确实有环境变量,但我不知道如何获得WiX MSBuild社区任务

我读过的一篇文章建议将MSBuild目标检入SVN文件夹。我有这样一个/extlib文件夹,所以我的TeamCity VCS结帐规则如下所示:

+:tags/2010-10-15=>src
+:extlib=>extlib
<Target Name="Build">
    <CallTarget Targets="UpdateVersionNumbers"/>
    <MSBuild Projects="Project.sln" Targets="Build"/>
</Target>
如何从环境变量获取extlib?当我运行构建时,TeamCity抱怨(正确地说)找不到
c:\wix30\MSBuildCommunityTasks
。实际文件夹是
C:\TeamCity\buildAgent\work\3e073d2b74226378\extlib\wix30\MSBuildCommunityTasks
。该文件夹是自动生成的,因为我正在进行服务器端签出,所以必须有TeamCity设置的一些环境变量,我可以使用它们来获得正确的路径

我应该注意的一件事是,我进入了build configuration->Properties and Environment Variables,找到了包含所有现有变量的非直观的droplist,没有看到任何听起来像指向工作路径的变量的内容

我可以想到的一种可能的解决方法是在构建服务器上安装MSBuild社区任务,然后我可以创建一个可由
访问的系统环境变量


有人有其他建议吗?

我讨厌这种情况发生。。。键入一个很长的问题,几分钟后才发现我遗漏了什么

我不知道是不是这样:


我想我现在的问题是——我真的可以在我的.wixproj中使用%system.agent.work.dir%吗?我现在就试试。

我可以看出尝试在SVN中使用msbuild社区任务的一些优点(以减少生成机器的要求),但我个人只想在服务器上安装它们。重要部分:更新构建服务器的文档,将安装它列为先决条件。对我来说,我基本上在多个项目的每个msbuild和部署脚本中使用社区任务,因此将它们全部保留在SVN中有点多余。我还在构建服务器上安装了WiX

我执行了类似的操作,但没有构建前目标,我有一个大致如下的msbuild项目文件:

+:tags/2010-10-15=>src
+:extlib=>extlib
<Target Name="Build">
    <CallTarget Targets="UpdateVersionNumbers"/>
    <MSBuild Projects="Project.sln" Targets="Build"/>
</Target>
将该变量实际传递到Project.sln。我认为,但我不能肯定在.sln文件上运行的msbuild是否也会将所有属性传递给所有单个项目,这样您就可以在生成前事件中实际访问它


关于安装程序的旁注(我最近经历了与您相同的事情):我选择了WIX3.0,尽管它有相当多的学习曲线,但它工作得很好。我们开始了新的开发流程,并开始使用VS2010和.NET4。嗯,WIX3.0与VS2010不兼容,所以我们需要WIX3.5(它仍处于测试阶段,虽然还处于测试阶段,但仍然落后。有时这就是开源的本质)。我有一些,但最终还是找到了答案

然而,这种挫折感(在不兼容、脆弱的beta(几个月前)和整体缓慢的进度之间)确实让我对WiX失去了兴趣(对从事WiX工作的人没有冒犯,但我只想要一个安装程序,我不想参与其中。请注意,他们也非常重要)。除此之外,我需要的下一个产品需要一个更复杂的安装程序,而WiX似乎太多的工作了。我刚刚使用构建了我的安装程序,只花了几天时间,到目前为止运行良好(虽然我们现在只是处于早期开发阶段,但开始了持续的部署和测试)。人工智能的价格是合理的(我们现在还在试用版),但我会在未来几天购买


我确信我花在学习人工智能上的时间比我花在学习WiX上的时间要少得多,然后我会努力让它做我需要的一切。了解Windows Installer的工作原理是不可避免的,但您不必太深入。

谢谢您的建议--我仍在重读所有内容,但看起来很不错。明天我可能会有更多的问题问你关于将WiX放入SVN,我有一个评论,即开发人员可以少安装一件东西。目前,我的WiX项目是我的应用程序解决方案的一部分。我想我可以走两条路——我不能这样做,让TeamCity构建应用程序,然后构建安装程序(我想…)。如果我将WiX项目保留在解决方案中,那么其他开发人员需要在他们的系统上安装WiX,以便