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

问题描述 投票:0回答:1

我不是 Windows 开发人员。 :) 我尝试查看项目源代码和 Microsoft 的 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”属性使用该值创建一个注册表项。它非常简单,而且是一个极其简单的 MSI 文件。

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

我创建了一个简单的页面,要求输入 ID 号并有一个提交按钮。它适用于生成 MSI 文件——但在进一步测试期间,我注意到同时构建会互相“践踏”。即,如果两个构建快速连续启动并且它们重叠,则将为其中一个构建生成安装程序。其余的则因其他进程正在使用文件的错误而死亡。

我认为错误可能是由于完全重建造成的,所以我尝试了

/t:build
。虽然同时构建期间没有错误,但它也不会生成 MSI 文件。

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

我想一个解决方案是将项目的多个副本创建为

c:\build1
c:\build2
等......并在这些文件夹之间分发构建,但这似乎是一种黑客行为。

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

msbuild windows-installer
1个回答
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: uild nnn) 对于每个构建。我可以设置每天运行的计划作业,以使用

forfiles
删除旧目录。

© www.soinside.com 2019 - 2024. All rights reserved.