【发布时间】:2011-01-04 12:01:03
【问题描述】:
我正在尝试使用 MSBuild(在 CruiseControl 下)为我的 .NET 4 应用程序构建安装。安装构建应该创建一个 boostrapper 来安装先决条件(在这种情况下是 .NET 4 和 Windows Installer 4.5),这是使用 GenerateBootstrapper Task 完成的。
在安装了 VS 2010 的开发机器上从命令行运行 MSBuild.exe project.msbuild.xml 可以正常工作。在只有最新的 Windows 7 SDK 的构建机器上运行失败并出现错误:
(ProductDistributions target) -> bootstrapper.xml(236,5): error MSB3147:
Could not find required file 'setup.bin' in '<project path>\ProductDistributions\Engine'.
在开发机器上,我有一个包含setup.bin 文件的C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\Bootstrapper\Engine 文件夹,但在构建机器上,C:\Program Files\Microsoft SDKs\Windows\v7.1 内没有Bootstrapper 文件夹(7.1 与 7.0A 显然是因为 VS2010 安装了 7.0 A,但独立 SDK 是 7.1)。
此外,在构建机器上,HKLM\Software\Microsoft\GenericBootstrapper\ 内没有 4.0 注册表项,但开发机器确实有一个包含值为 c:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\Bootstrapper\ 的路径字符串的注册表项
看起来我需要在构建机器上安装一些东西来将 Bootstrapper 文件夹添加到“Microsoft SDKs\Windows\v7.1”(并设置注册表项),但我不确定那是什么。知道我需要得到什么吗?
或者我还需要什么其他东西才能让我的安装版本正常工作吗?
更新:我目前正在通过手动将 7.0A 引导程序文件夹从开发机器复制到构建机器上,然后手动将该路径添加到 HKLM\Software\Microsoft\GenericBootstrapper\4.0 注册表项。这似乎可行,但似乎这不是我应该做的来解决问题。因此,如果有人对此有不那么棘手的解决方案,我将不胜感激。
【问题讨论】:
-
复制 7.0A 引导程序并手动添加 reg 密钥的上述更改解决了我遇到的问题。不过,我仍在寻找一个不那么老套的解决方案,
-
您是否碰巧在那台机器上安装了 .Net 4.5 测试版?在我完全卸载 4.5(在添加/删除程序中引用 4.5 和 VS11 的所有内容)并从 MSDN 重新安装 4.0 之前,我的工作站上遇到了一些类似的问题。
-
不,这个问题来自 2011 年 1 月 - 所以在 4.5 测试版可用之前。
-
在我的 TeamCity 服务器上删除 .Net 4.5(发行版)并重新安装 4.0。
标签: msbuild .net-4.0 installation