首先,稍微介绍一下背景:
过去几个月,我已经成功运行了TeamCity,并且它可以很好地构建我的配置并运行我的NUnit和NCover测试。
我花了一些时间研究安装程序——我一直很讨厌InstallShield,并且从未考虑过将其用于我的当前应用程序。我喜欢NSIS,但偶然发现了WiX。我没有任何关于MS Installer架构的详细了解,我知道这对于复杂的项目来说是危险的,因此在某些时候,我需要学习更多相关知识。然而,在浏览SO问题、搜索和阅读博客几天之后,我有了一个成功构建、安装和运行应用程序以及完全卸载所有内容的WiX项目。太棒了!
我也希望TeamCity构建配置可以自动更新所有程序集的版本号。我能够通过在我的开发机器上安装MSBuild Community Tasks并创建一个部署配置来模拟这个功能,该配置使用BeforeBuild目标和FileUpdate任务来更改版本号。这可以正常工作,但是在我的开发机器上,我没有build_vcs_number_1环境变量可供替换。
现在我所处的位置是这样的——我需要让TeamCity进行更新,虽然它有build_vcs_number_1环境变量,但我无法弄清楚如何使用WiX MSBuild Community Tasks。
我读过一篇帖子,建议将MSBuild目标检入到SVN文件夹中。我有一个/extlib文件夹用于存放此类内容,因此我的TeamCity VCS检出规则看起来像这样:
+:tags/2010-10-15=>src
+:extlib=>extlib
当我运行构建时,TeamCity抱怨(并且是正确的),找不到 c:\ wix30 \ MSBuildCommunityTasks 。实际文件夹是 C:\ TeamCity \ buildAgent \ work \ 3e073d2b74226378 \ extlib \ wix30 \ MSBuildCommunityTasks 。由于我正在进行服务器端检出,因此该文件夹是自动生成的,因此必须有一些环境变量由TeamCity设置,我可以使用它来获取正确的路径。
我应该注意的一件事是,我进入了构建配置 - >属性和环境变量,并找到了所有现有变量的非直观下拉列表,但没有看到任何听起来像指向工作路径的变量。
我能想到的一个可能的解决方法是只需在构建服务器上安装MSBuild Community Tasks,然后我就可以创建一个可以通过
<WixToolPath>
访问的系统环境变量。还有其他建议吗?