【问题标题】:msbuild Wix toolset 3.7 source code in VS2012VS2012中的msbuild Wix工具集3.7源代码
【发布时间】:2013-09-27 23:13:15
【问题描述】:

我正在尝试在安装了 VS2012 的 Windows 8 机器上手动构建 wix 工具集 3.7,但我一直遇到以下错误:

错误 WIXBUILD002:错误“Microsoft Windows SDK for Windows 7 and .NET Frame 4”或“Visual Studio 2012”必须是安装程序。

根据 wix 文档http://wixtoolset.org/documentation/manual/v3/wixdev/building_wix.html

它应该在使用命令时工作:msbuild /p:VisualStudioVersion="11.0"。

任何帮助将不胜感激。

编辑:

通过将 WixBuild.props 文件中的 <PlatformSdkInstallPath> 从 8.0 更改为 8.0A WIXBUILD002 错误得到解决。但是,现在我收到了大约 72 个错误,主要与 MSBUILD 相关

error MSB8020: The build tools for Visual Studio 2010
(Platform Toolset = 'v100') cannot be found. To build
using the v100 build tools, either click the project
menu or right-click on the solution, and then select
"Update VC++ Projects..."

【问题讨论】:

  • 您能否检查一下您的注册表项HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SDKs\Windows\v8.0 的值,并检查Windows SDK 文件中是否确实存在此值路径?如果是这样,我想我可以更清楚地说明这一点。
  • 感谢您的回复。我没有 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SDKs\Windows\v8.0,但我有 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SDKs\Windows\v8.0A。在该注册表中,InstallationFolder 设置为 C:\Program Files (x86)\Microsoft SDKs\Windows\v8.0A,ProductName 设置为 Microsoft .Net Framework 4.5 SDK,ProductVersion 设置为 8.0.50727。再次感谢!
  • 顺便说一下,HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SDKs\Windows\v8.0A下还有3个子文件夹,分别是:WinSDK-NetFx35Tools、WinSDK-NetFx35Tools-x64和WinSDK- NetFx35Tools-x86.

标签: visual-studio-2012 msbuild wix wix3.7


【解决方案1】:

当我浏览 WIX 构建目标时,Error WIXBUILD002 的定义在文件 \tools\WixBuild.Tools.targets 中。如果不存在根据属性 PlatformSdkBinPath 的文件路径或者该属性具有空值,则会发生这种情况。 PlatformSdkBinPath 的值在文件\tools\WixBuild.props 中设置为$(PlatformSdkInstallPath)bin\PlatformSdkInstallPath 依次从注册表项HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SDKs\Windows\v8.0 读取其值。显然在您的机器中没有这样的注册表项,而是v8.0A

问题是,WIX MSBuild 无法在您的机器中找到 Windows SDK。很可能它也可能是 WIX 源代码中的错误。

所以,基本上解决方案是将文件\tools\WixBuild.propsPlatformSdkInstallPath属性)和\tools\OneTimeWixBuildInitialization.projNetfxSdkInstallPath属性)中的注册表项路径(仅HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SDKs\Windows\v8.0)更改为以v8.0A结尾而不是当前的v8.0 并尝试使用 MSBuild。

编辑:

为了解决这个问题:

MSB8020:Visual Studio 2010 的构建工具(平台工具集 = 'v100') 找不到。要使用 v100 构建工具进行构建,要么 单击项目菜单或右键单击解决方案,然后选择 “更新 VC++ 项目...”

您可以参考我认为此 MSDN 帖子可用的解决方案。这里的解决方案基本上是安装Windows Driver Kit 8

注意:我觉得您的 VS 2012 安装存在一些基本问题,或者您使用的 VS 2012 的风味\版本缺少很多东西。

【讨论】:

  • 您好 RinoTom,非常感谢您的及时回复。我将 PlatformSdkInstallPath 编辑为从 HKEY_LOCAL_MACHINE\...\8.0 到 HKEY_LOCAL_MACHINE\...\8.0A,它仍然给我同样的错误。根据您提供的提示,我发现还需要 (我没有),所以我最终从 C:\Program Files (x86)\ 复制目录 ./include 和 ./lib Microsoft SDKs\Windows\v7.1A 到 C:\Program Files (x86)\...\v8.0A 文件夹。
  • 运行 MSBUILD 并得到此“错误:MSB8020 找不到 Visual Studio 2010 (Plateform Toolset='v100') 的构建工具。”再次感谢您的帮助。
  • 将文件从 v7.1A 文件夹复制到 v8.0A 可能不起作用。可能这就是您现在收到错误:MSB8020 的原因。如果您没有 v8.0A 文件夹,我认为您的 Windows SDK 没有在 Visual Studio 2012 安装中正确安装。你可以下载Microsoft Visual Studio 2012 SDK 并安装它并试试这个。我想这也应该创建这个 v8.0A 文件夹。
  • 感谢 RinoTom 的提示。我重新安装了 VS 2012 SDK,不幸的是在我的 V8.0A 文件夹中,它只包含 ./bin 和 ./Bootstrapper 目录。 WixBuild.Tools.targets 要求 $(PlatformSdkIncludePath) 存在,在这种情况下会导致相同的“WIXBUILD002”错误。所以我的困惑是我需要在我的 C:\Program Files (x86)\...\v8.0A 文件夹中的 ./include 目录来传递“WIXBUILD002”错误并且 VS 2012 SDK 没有安装它。如果我从 V7.1A(或任何其他)目录复制 .\include 目录,我会收到 MSBUILD 错误。再次非常感谢您。
  • 我忘记提及的另一个注意事项是,我在 OneTimeWixBuildInitialization.proj 文件中找不到“NetfxSdkInstallPath”属性。这可能与我遇到的问题无关,但我不能确定。谢谢!
猜你喜欢
  • 2013-01-03
  • 2023-04-05
  • 1970-01-01
  • 2013-04-02
  • 2013-05-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-01-19
相关资源
最近更新 更多