wixbuild-processpatchmsp

Patch creation fails (does not spot any differences) on build server


I have a automated Setup creation on our build server, and try to create a patch between the released version and the current build version.

Sadly i can't get it working.

This is my 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>

i use a postBuild to compile&link the patchfile:

"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

Until here everything works fine i guess. I create a transform using torch after a sucessfull build:

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

The diff is created successfully. Then pyro gives me an warning that no files are different:

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.

The files are different if i install the msi files i get two different installations. but if i install the patch nothing changes. I played around with the PatchFamily but i can't get it working.

How can i get the Patch file including my changes?


Solution

  • I found out what is causing this problem.

    The Build server does not create a separate folder for each Build (just for the Drop, not for the Build itself) so at the time i create a patch both wixpdb files reference the same files of the build folder, thats why there are no differences found. I now changed the buildserver to create a administrative installation inside the drop folder and create a transform using the final msi files.

    using the so created transform for pyro creates the msp as expected containing the changed files.