我不是Windows开发人员。 :)我已经尝试查看项目源代码和微软的msbuild文档,并没有看到一个明显的解决方案。
有没有办法可以从同一个源目录生成多个Windows安装程序,但同时使用不同的属性?
背景:
我必须使用以下命令在Windows中不时构建一个项目:"c:\Program Files (x86)\MSBuild\14.0\Bin\MSBuild.exe" /property:id=1234 /t:rebuild update.sln
它生成一个名为update_1234.msi
在该安装程序中,' id' property使用值创建注册表项。它很直接,也是一个非常简单的MSI文件。
有时我每天会收到一个请求来创建安装程序。有时候我每天都会收到老板的30个请求。我想通过一个简单的内部网页自动化它。
我创建了一个简单的页面,询问ID号并有一个提交按钮。它适用于生成MSI文件 - 但在进一步测试期间,我注意到同时构建将“踩踏”#39;彼此。即,如果两个构建在快速连续中被触发并且它们重叠,则为一个且仅一个构建生成安装程序。剩下的就是其他进程正在使用的文件错误。
我认为错误可能是因为完全重建,所以我尝试了/t:build
。虽然在同步构建期间没有错误,但它也不会产生MSI文件。
每次重建需要约7秒,每次构建需要0.5秒。
我想一个解决方案是将项目的多个副本创建为类似c:\build1
和c:\build2
等等......并在这些文件夹之间分发构建,但这看起来像是一个黑客
msbuild可以同时从同一个源生成多个MSI文件吗?
答案 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
删除旧目录。