0

我正在尝试并行构建一对 WiX 补丁项目(补丁创建项目..),但是我的 64 位配置总是因 PatchWiz 错误而失败:

  INFO: Passed all of the main control parameter validation to PatchWiz, now calling the next 5 phases.
  INFO: Phase I:    Entered validation and processing phase.
  ERROR: Internal PatchWiz Error occurred.
  ERROR:    The Last Error Received is: 0x20 (32)
  INFO: Temporary folder is about to be cleaned out and deleted: C:\Users\TestUser\AppData\Local\Temp\~pcw_tmp.tmp
  ERROR: Internal PatchWiz Error occurred.
  ERROR:    The Last Error Received is: 0x91 (145)
  ERROR: During cleanup, could not delete the temporary folder: C:\Users\TestUser\AppData\Local\Temp\~pcw_tmp.tmp.
  ERROR:    The Last Error Received is: 0x91 (145)

我试过了:

  • 运行前清理临时文件夹。
  • 切换配置顺序。
  • 在执行之间添加睡眠/超时

没有运气。

这是我正在执行的 build.proj:

<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="12.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">

  <Import Project="packages\MSBuild.Extension.Pack.1.8.0\build\net40\MSBuild.Extension.Pack.targets" Condition="Exists('packages\MSBuild.Extension.Pack.1.8.0\build\net40\MSBuild.Extension.Pack.targets')" />

  <PropertyGroup>
    <ProductVersion>1.1.2</ProductVersion>
  </PropertyGroup>

  <Target Name="Compile32">
    <MSBuild Targets="Build" Projects="Hotfix_Patch.wixproj"
             Properties="Configuration=Debug;Platform=x86;ProductVersion=$(ProductVersion)"  />
  </Target>

  <Target Name="Compile64">
    <MSBuild Targets="Build" Projects="Hotfix_Patch.wixproj"
         Properties="Configuration=Debug;Platform=x64;ProductVersion=$(ProductVersion)" />
  </Target>

  <Target Name="Build" >
    <MSBuild.ExtensionPack.Framework.Parallel TaskAction="BuildTargetsInParallel" Targets="Compile64;Compile32"/>
  </Target>

</Project>

我受 PatchWiz 的摆布吗?或者我可能做错了什么?任何黑客的想法?(并且不要说我首先通过修补/MSP 做错了!我意识到这一点!除此之外,我是一个重大升级 MSI 类型的人)。

4

1 回答 1

0

第二个补丁创建过程正在尝试践踏第一个临时文件,幸运的是 C:\Users\TestUser\AppData\Local\Temp\~pcw_tmp.tmp。只是一个默认值。您可以指定另一个特定于 buildarch 的临时文件夹:-

如果使用 MSIMSP.exe 在您的 cmd 行上使用 /f, 请在此处查看 msimsp.exe 文档

如果直接使用 patchwiz,它是 UICreatePatchPackage 的参数,请参见此处的 PatchWiz 文档

ps 当我发现这一点时是美好的一天:)

于 2016-06-16T13:09:46.307 回答