0

我在我们的构建服务器上自动创建了安装程序,并尝试在已发布版本和当前构建版本之间创建补丁。

可悲的是我无法让它工作。

这是我的 Patch.wxs:

  <Patch  AllowRemoval="no" Manufacturer="Company" DisplayName="Product Patch" Description="Patch" Classification="Update">
    <Media Id="5000" Cabinet="RTM.cab">
      <PatchBaseline Id="RTM"/>
    </Media>
    <PatchFamily Id="SampleFamily" Version="1.0.0.0" Supersede="yes">
      <FeatureRef Id="ProductFeature"/>
    </PatchFamily>
  </Patch>

我使用 postBuild 来编译和链接补丁文件:

"C:\Program Files (x86)\WiX Toolset v3.8\bin\candle.exe" $(ProjectDir)Patch.wxs -dDebug -dOutDir=$(TargetDir) -o Patch.wixobj 
"C:\Program Files (x86)\WiX Toolset v3.8\bin\light.exe" $(TargetDir)Patch.wixobj -o  $(TargetDir)Patch.wixmsp

我猜到这里一切正常。在成功构建后,我使用火炬创建了一个转换:

torch -p -xi release.wixpdb latestBuild.wixpdb -out diff.wixmst 

差异创建成功。然后 pyro 警告我没有文件不同:

pyro Patch.wixmsp -t RTM diff.wixmst -out patch.msp"
warning PYRO1079 : The cabinet 'RTM.cab' does not contain any files.  If this patch contains no files, this warning can likely be safely ignored.  Otherwise, try passing -p to torch.exe when first building the transforms, or add a ComponentRef to your PatchFamily authoring to pull changed files into the cabinet.

如果我安装 msi 文件,文件会有所不同,我会得到两个不同的安装。但如果我安装补丁,没有任何改变。我玩过 PatchFamily,但我无法让它工作。

如何获取包含我的更改的补丁文件?

4

2 回答 2

0

wix 工具无法识别文件内容更改。要完全按照WIX 教程中的描述正常工作。

这里要特别注意在组件源中添加版本部分,即 1.0 从 1.0 源中获取组件文件,而 2.0 从 2.0 根文件夹中获取源文件。这种方式文件它正在按预期创建补丁。

于 2015-05-15T10:07:20.507 回答
-1

我发现是什么导致了这个问题。

Build 服务器不会为每个 Build 创建单独的文件夹(仅用于 Drop,而不是 Build 本身),所以在我创建补丁时,两个 wixpdb 文件都引用了 build 文件夹的相同文件,这就是为什么没有差异成立。我现在更改了构建服务器以在放置文件夹中创建管理安装,并使用最终的 msi 文件创建转换。

使用如此创建的 pyro 转换会按预期创建包含已更改文件的 msp。

于 2014-09-17T14:38:45.717 回答