[wix-users] Patch creation issue - Transform stream read/write failure
Aled Hughes
wix at aledhughes.co.uk
Tue Oct 1 05:50:44 PDT 2019
Hi,
I'm struggling to create a simple patch for an MSI that updates two text
files. The resulting MSP file fails with the error "Transform stream
read/write failure" when I try to apply it and Orca shows validation
errors if I apply the patch in there.
I'm using Wix 3.11.2 on Win10.
I don't have the original source for the MSI (it was created using
visual studio deployment tool) so this is what I've done:
1. Done an admin install of the original MSI in to a directory "old"
2. Made a full copy of "old" into a another directory - "new".
3. Updated the two small text files in the "new" directory.
4. Used ORCA to update the file sizes in the msi file within "new" in
the File table. Everything else stays the same (file ids, product id,
etc.)
5. Created a simple patch.wxs file:
<?xml version="1.0" encoding="utf-8"?>
<?define DisplayName="My Product"?>
<?define Description="***" ?>
<?define Comments="" ?>
<?define Manufacturer="My Company" ?>
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
<Patch
AllowRemoval="no"
Manufacturer="$(var.Manufacturer)"
DisplayName="$(var.DisplayName)"
Description="$(var.Description)"
Classification="Update">
<Media Id="5000" Cabinet="patch.cab" EmbedCab="yes">
<PatchBaseline Id="RTM"/>
</Media>
<PatchFamily Id='MyPatchFamily' Version='1.0.0.0'
Supersede='yes'>
</PatchFamily>
</Patch>
</Wix>
6. Created wixmst file, compile and link the patch.wsx and run pyro:
torch -p -xo -ax patch\bin "old\installer.msi" "new\installer.msi"
-out patch\diff.wixmst
candle patch.wxs
light patch.wixobj -out patch\patch.wixmsp
pyro patch\patch.wixmsp -out patch\patch.msp -t RTM patch\diff.wixmst
7. Installing the original MSI and then apply the patch fails with "This
update package could not be opened. Contact the application vendor to
verify that this is a valid Windows Installer update package." and
"Transform stream read/write failure".
I've tried opening the old MSI up in ORCA and do Transform>Apply Patch,
which it does happily, but there are some oddities:
- In the Media table the LastSequenceId for DiskId=5000 is a negative
number (e.g. -27766).
- If I run ICE validation in orca then it complains about this negative
number and the updated file entries with sequence 5001 & 5002.
It seems the patch is creating an invalid result. I've made patches
before without issue, but I can't understand what is going wrong here.
Any help appreciated!
Thanks,
aled.
More information about the wix-users
mailing list