Hello all,
I'm working with Liam who previously asked some patch related questions. ( http://windows-installer-xml-wix-toolset.687559.n2.nabble.com/Patching-Using -Purely-Wix-td6031594.html ) We've made progress, with the comments to Liam's post, and by looking at http://blogs.msdn.com/b/pmarcu/archive/2008/05/30/patching-something-you-did nt-build-with-wix-using-wix-.aspx. However we're still unable to successfully patch our installation. We have two install packages: setup_32_unicode_new.msi and setup_32_unicode_old.msi, there is only 1 file (dyalog.exe, which I've changed from 6Mb to 15Mb) that is changed from old to new. Initially we're just trying to create a patch that will install that one modified file. Here's my patch xml: <?xml version="1.0" encoding="UTF-8"?> <Wix xmlns="http://schemas.microsoft.com/wix/2006/wi"> <!-- Path variables --> <Patch AllowRemoval = "yes" Manufacturer = "Dyalog" DisplayName = "Dyalog APL 13.0 Patch" Description = "Dyalog APL 13.0 Patch" Classification = "Update" > <Media Id="5000" Cabinet="RTM.cab"> <PatchBaseline Id="RTM"/> </Media> <PatchFamilyRef Id="Interpreter"/> </Patch> <Fragment> <PatchFamily Id="Interpreter" Supersede="yes" Version="1.0.1.0"> <ComponentRef Id="dyalog.exe"/> </PatchFamily> </Fragment> </Wix> I use the following script to make the patch file: WIXDIR=c:/wix35/bin $WIXDIR/candle Patch.wxs $WIXDIR/light Patch.wixobj -out Patch/Patch.WixMsp msiexec -passive -norestart -l* inst_old.log TARGETDIR="c:\\tmp\\wix_patching\\dyalog\\inst_old" -a setup_32_unicode_old.msi msiexec -passive -norestart -l* inst_new.log TARGETDIR="c:\\tmp\\wix_patching\\dyalog\\inst_new" -a setup_32_unicode_new.msi $WIXDIR/torch -v -p -xo -a inst_old/setup_32_unicode_old.msi inst_new/setup_32_unicode_new.msi -out patch/diffs.wixmst $WIXDIR/pyro -v Patch/Patch.WixMsp -out Patch/Patch.msp -t RTM Patch/Diffs.wixmst I've used msix ( http://blogs.msdn.com/b/heaths/archive/2006/04/07/571138.aspx ) to extract the CAB from the MSP file and I can see that the only file in it is the modified binary that I expect to see. On a clean XP VM I install setup_32_unicode_old.msi, and then I apply the patch. However dyalog.exe remains the old version. If, however, I install setup_32_unicode_old.msi, then delete dyalog.exe, and then apply the patch I do get the new version. I've looked at the logs for the two applications of the patch, and the only significant difference seems to be the installation of the file, which isn't present unless I delete the file first: (without deleting dyalog.exe first) Action 14:28:51: InstallFiles. Copying new files Action 14:28:51: WriteRegistryValues. Writing system registry values (with deleting dyalog.exe first) Action 14:37:36: InstallFiles. Copying new files InstallFiles: File: dyalog.exe, Directory: C:\Program Files\Dyalog\Dyalog APL 13.0 Unicode\, Size: 15731712 Action 14:37:37: WriteRegistryValues. Writing system registry values What could we be doing wrong that prevents the installation of the new file if the old one exists? Many Thanks, John ------------------------------------------------------------------------------ Free Software Download: Index, Search & Analyze Logs and other IT data in Real-Time with Splunk. Collect, index and harness all the fast moving IT data generated by your applications, servers and devices whether physical, virtual or in the cloud. Deliver compliance at lower cost and gain new business insights. http://p.sf.net/sfu/splunk-dev2dev _______________________________________________ WiX-users mailing list WiX-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/wix-users