我在安装程序上预构建事件,以使用适当的配置等重建项目。
如果我在Visual Studio中的WiX(3.0)项目上右键单击构建/重建,它构建正常,但如果我尝试在wixproj文件上运行MSBuild,则预构建事件将抛出错误。
我可以在wixproj上调用Candle和Light,但它不会运行预构建事件。
prebuild事件依赖于VS提供的宏,我不知道除了创建另一个项目之外如何解决这个问题,基本上只是使用项目的prebuild事件,它只是尖叫黑客。
另一个问题是我需要从命令行向WiX提供自我更新的版本号。
我打算只使用csproj来处理版本号并更新它,只是炮轰到MSBuild和烛光,但问题是我不知道如何从除了以外的代码访问解决方案目录
中的硬编码答案 0 :(得分:2)
我们发现最简单的方法是使用实用程序编辑项目本身,并在使用我们的autobuilder构建它之前转储所有构建前和构建后事件(在我们的例子中为VisualBuild)。
这给我们留下了一个漂亮而多汁的构建过程,它不依赖于IDE中的任何讨厌的黑客攻击,并让我们完全控制源来自何处以及构建组件的位置。
答案 1 :(得分:0)
我正在使用一种适合我的不同方式,which I described here。
%VersionNumber%
的环境变量中有版本号)然后执行MSBuild project file .csproj
file中.exe的版本号(然后我使用MSBuild Community Tasks创建一个AssemblyInfo
文件,其中包含预构建事件中的版本号)candle
并light
建立实际设置。candle
使用this .wxs
file创建设置,我再次从环境变量中获取版本号:$(env.VersionNumber)
.msi
创建的最终light
文件在其文件名中包含版本号,因为我将文件名(包括带有版本号的环境变量)传递为一个论点:-out release\msi\bitbucket-backup-%VersionNumber%.msi
我花了一段时间才想到这一切,但现在我以类似的方式发布了所有项目。