2009-01-26 37 views
2

我已经预生成事件重建项目,适当的配置等帮助足下构建所有项目+安装程序(.NET +维克斯)上安装

如果我右键单击构建/重建的维克斯(3.0)项目在Visual Studio中都很好,但如果我尝试在wixproj文件上运行MSBuild,则预生成事件将引发错误。

我可以改为在wixproj上调用Candle和Light,但它不会运行预生成事件。

预构建事件依赖于VS提供的宏,我不知道如何解决这个问题,而不是创建另一个项目,基本上只使用刚刚尖叫的项目的预构建事件。

另一个问题是,我需要从命令行向WiX提供自更新版本号。

我打算只使用一个csproj来处理版本号并更新它,只是对MSBuild和Candle和Light进行脱壳,但问题是我不知道如何从代码中访问解决方案目录而不是硬编码它

+0

什么是错误?我有一段时间让WiX路径在开发和构建机器上工作。有办法做到这一点,如果这是你的问题。至于版本控制,我不知道... – Will 2009-01-26 18:54:28

回答

2

我们发现在使用我们的自动编译器(在我们的例子中为VisualBuild)构建之前,使用实用程序编辑项目本身并转储所有预构建和后构建事件是最容易的。

这给我们留下了一个不错的多汁构建过程,它不依赖IDE中的任何讨厌的黑客行为,并且完全控制源的来源以及构建组件的位置。

0

我正在使用不同的方式,对我而言效果很好,which I described here

  • 我保持的版本号in a batch file,这只是将其写为可变的环境
  • 创建我的发布版本运行a batch file首先所谓的“版本号”批处理文件(所以我有版本号在环境变量称为%VersionNumber%,然后执行一个MSBuild project file
  • 的MSBuild项目文件构建解决方案,我得到的.exe文件的版本号the .csproj file从环境变量读它,如果它存在(然后我使用MSBuild Community Tasks创建AssemblyInfo文件与预编译事件中的版本号)
    这意味着.exe从Visual Studio生成时的版本为0.0,但我很好,因为我创建了批处理文件中的所有版本。
  • 要创建RELASE构建 WiX的设置,我执行another batch file,这只是调用上面提到的“建立”批处理文件,然后调用维克斯公用事业candlelight建设的实际设置。
  • candle使用this .wxs file创建安装,在这里我再次从环境变量中获取的版本号:$(env.VersionNumber)
  • light创建的最终.msi文件包括其文件名中的版本号,因为我通过文件名(包括版本号的环境变量)作为参数:-out release\msi\bitbucket-backup-%VersionNumber%.msi

我花了一段时间来计算出这一切的开始,但现在我释放我以类似的方式,所有的项目。