使用msbuild同时构建不同的参数

时间:2018-02-14 23:41:19

标签: msbuild windows-installer

我不是Windows开发人员。 :)我已经尝试查看项目源代码和微软的msbuild文档,并没有看到一个明显的解决方案。

有没有办法可以从同一个源目录生成多个Windows安装程序,但同时使用不同的属性?

背景:

我必须使用以下命令在Windows中不时构建一个项目:"c:\Program Files (x86)\MSBuild\14.0\Bin\MSBuild.exe" /property:id=1234 /t:rebuild update.sln

它生成一个名为update_1234.msi

的MSI文件

在该安装程序中,' id' property使用值创建注册表项。它很直接,也是一个非常简单的MSI文件。

有时我每天会收到一个请求来创建安装程序。有时候我每天都会收到老板的30个请求。我想通过一个简单的内部网页自动化它。

我创建了一个简单的页面,询问ID号并有一个提交按钮。它适用于生成MSI文件 - 但在进一步测试期间,我注意到同时构建将“踩踏”#39;彼此。即,如果两个构建在快速连续中被触发并且它们重叠,则为一个且仅一个构建生成安装程序。剩下的就是其他进程正在使用的文件错误。

我认为错误可能是因为完全重建,所以我尝试了/t:build。虽然在同步构建期间没有错误,但它也不会产生MSI文件。

每次重建需要约7秒,每次构建需要0.5秒。

我想一个解决方案是将项目的多个副本创建为类似c:\build1c:\build2等等......并在这些文件夹之间分发构建,但这看起来像是一个黑客

msbuild可以同时从同一个源生成多个MSI文件吗?

1 个答案:

答案 0 :(得分:0)

这个解决方案仍然让人觉得有点hacky,但它完成了我的目标:

"c:\Program Files (x86)\MSBuild\14.0\Bin\MSBuild.exe" /property:id=1234 /t:rebuild /p:OutputPath=c:\build\1234 /p:DefineConstants=id=1234 update.wixproj

我基本上只是直接构建WixProject并为每个构建指定一个唯一的输出目录(c:\ build \ nnnn)。我可以将预定作业设置为每天运行以使用forfiles删除旧目录。