我正在尝试使用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'.
在开发机器上,我有一个包含C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\Bootstrapper\Engine
文件的setup.bin
文件夹,但在构建机器上Bootstrapper
内没有C:\Program Files\Microsoft SDKs\Windows\v7.1
文件夹(7.1 vs 7.0A显然是因为VS2010安装了7.0A,但独立的SDK是7.1)。
此外,在构建计算机上HKLM\Software\Microsoft\GenericBootstrapper\
内没有4.0注册表项,但dev计算机确实有一个包含值为c:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\Bootstrapper\
的路径字符串
看起来我需要在构建机器上安装一些东西来将Bootstrapper文件夹添加到“Microsoft SDKs \ Windows \ v7.1”(并设置注册表项),但我不确定那是什么。知道我需要得到什么吗?
或者我需要一些其他东西让我的安装版本正常工作吗?
更新:我现在通过手动将7.0A引导程序文件夹从开发计算机复制到构建计算机上,并手动将该路径添加到HKLM\Software\Microsoft\GenericBootstrapper\4.0
注册表项来实现此功能。这似乎工作,但似乎这不是我应该做的解决问题。所以,如果有人对此有一个不太苛刻的解决方案,我会很感激。
答案 0 :(得分:4)
根据t his blog entry,在.NET Framework SDK安装期间安装了引导程序文件。它还显示搜索的注册表项以查找引导程序目录。
您可以尝试安装.NET Framework SDK,也可以通过复制文件和添加注册表项来手动设置它。
答案 1 :(得分:2)
我遇到了同样的问题,但没有尝试手动复制文件和黑客入侵注册表,虽然我也从其他人那里听说他们也成功了。
为了获得更真实的解决方案,我创建了一个feature request on the Connect.Microsoft.com site来实现Visual Studio的某种类型的最小安装,以便提供一种更简单的方法来设置具有必要的构建服务器开发文件。请对功能请求进行投票和/或评论,以帮助引起对此问题的关注。