我正在尝试使用包含2个C#项目(可执行文件和库)的this example之后的WiX 3.6创建补丁。但是我收到了这个错误:
warning PYRO1079 : The cabinet 'RMT.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.
error PYRO0227 : The transform being built did not contain any differences so it could not be created.
执行的命令:
set w="c:\Program Files (x86)\WiX Toolset v3.6\bin\"
%w%torch.exe -p -xi 1.0.0.0\PatchMe.Installer.wixpdb 1.1.1.1\PatchMe.Installer.wixpdb -out Patch\Diff.wixmst
%w%candle.exe Patch.wxs
%w%light.exe Patch.wixobj -out Patch\Patch.WixMsp
%w%pyro.exe Patch\Patch.WixMsp -out Patch\Patch.msp -t RTM Patch\Diff.wixmst
目录“1.0.0.0”和“1.1.1.1”包含两个不同版本的相同项目的输出(更改了AssemblyVersion和一些代码更改)。 Patch.wxs文件:
<?xml version="1.0" encoding="UTF-8"?>
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
<?include Variables.wxi ?>
<Patch AllowRemoval="yes"
Manufacturer="$(var.Manufacturer)"
DisplayName="$(var.ProductName) $(var.ProductVersion)"
Description="Small Update Patch"
Classification="Update"
TargetProductName="$(var.ProductName)"
>
<Media Id="5000" Cabinet="RMT.cab">
<PatchBaseline Id="RTM">
</PatchBaseline>
</Media>
<PatchFamilyRef Id="SamplePatchFamily"/>
</Patch>
<Fragment>
<PatchFamily Id="SamplePatchFamily" Version="$(var.ProductVersion)" Supersede="yes">
<ComponentRef Id="cmp981D9885AA29DD578D66D32ED919EBFB"/>
<ComponentRef Id="cmpD5E6EA59DB565F052E0217CB3248DAE5"/>
</PatchFamily>
</Fragment>
</Wix>
ComponentRef Id是指由前面提到的项目的heat.exe收集创建的组件片段。
任何想法,可能存在什么问题以及为什么转换不包含任何更改?
答案 0 :(得分:1)
我认为这可能是3.6中的错误。我尝试了几个小时才能使用3.6.3303.1版本,但我总是遇到PYRO1079错误。我最终降级到版本3.5.2519.0,并且错误没有再次发生。
我必须在降级后放弃我的MediaTemplate节点和ComponentGroup节点的Directory属性。我不知道这是否是解决方案的一部分(即这可能解决了问题,而不是降级)。