Re: [WiX-users] How To Create Successive Patches That Supersede Previous?
Thanks for the information. I'll look into using a major upgrade instead of the way I'm currently doing it. The only real requirement is that the install be as lightweight as possible. The initial install MSI is 15 meg due to the Visual Studio runtime and when I update the exe I don't want the user to have to redownload the full MSI with the runtime (the patch files are 8KB instead of the full 15 meg). --Emanuel -Original Message- From: Heath Stewart [mailto:clubs...@gmail.com] Sent: Saturday, April 25, 2009 10:46 AM To: General discussion for Windows Installer XML toolset. Subject: Re: [WiX-users] How To Create Successive Patches That Supersede Previous? This is not a recommended use for patches. If you're going to update all files, you should consider a major upgrade instead. To avoid the issue where the patch always sequences to the highest ProductVersion (which means you must change the ProductCode or some other identity property, or you lose control of the patch applying to your products out in the field), you should have it target the current ProductVersion for the upgrade build and *lower*. Under your PatchBaseline, add the following: Validate ProductVersionOperator=LesserOrEqual/ On Fri, Apr 24, 2009 at 8:14 AM, Emanuel Masciarelli emasciare...@trionworld.com wrote: And apparently no attachments. I'll paste the contents :) Content of original post with attachments: Sure thing. It was a long day so sorry for the lack of detail. Attached you'll find the wxs for the installs and the patches, and the batch files I use. I pass the version numbers into the batch files which in turn pass them along to WiX. I create the installs with buildInstall 0.3.0.0 for example, then the patches with buildPatch 0.3.0.0 0.3.1.0. Product Install WXS: ?xml version=1.0 encoding=UTF-8? !-- These variables define the Windows Installer product version, product code and upgrade code. They -- !-- will be used later on in this file. -- ?define Property_ProductVersion = $(var.Version)? ?define Property_ProductCode = 6461E4A1-C0B4-4BF8-8F61-B499D5521BE1? ?define Property_UpgradeCode = 2E1DE166-F933-4671-8984-7C604C467032? Wix xmlns=http://schemas.microsoft.com/wix/2006/wi; xmlns:util=http://schemas.microsoft.com/wix/UtilExtension; Product Id=$(var.Property_ProductCode) Name=!(loc.Property_ProductName) Language=!(loc.Property_ProductLanguage) Version=$(var.Property_ProductVersion) Manufacturer=!(loc.Property_CompanyName) UpgradeCode=$(var.Property_UpgradeCode) Package Description=!(loc.Package_Description) Comments=!(loc.Package_Comments) InstallerVersion=300 Compressed=yes/ Upgrade Id=$(var.Property_UpgradeCode) UpgradeVersion Minimum=$(var.Property_ProductVersion) IncludeMinimum=no OnlyDetect=yes Property=NEWERVERSIONDETECTED / UpgradeVersion Minimum=0.1.0 IncludeMinimum=yes Maximum=$(var.Property_ProductVersion) Property=OLDERVERSIONBEINGUPGRADED / /Upgrade InstallExecuteSequence RemoveExistingProducts After=InstallInitialize/ /InstallExecuteSequence Condition Message=!(loc.LaunchCondition_LaterVersion) NOT NEWERVERSIONDETECTED OR Installed /Condition Condition Message=!(loc.LaunchCondition_WrongOSVersion) ![CDATA[Installed OR (VersionNT = 501)]] /Condition CustomActionRef Id=WixExitEarlyWithSuccess/ Directory Id=TARGETDIR Name=SourceDir Directory Id=ProgramFilesFolder Name=PFiles Directory Id=CompanyFolder Name=!(loc.Property_CompanyFolderName) Directory Id=APPLICATIONFOLDER Name=!(loc.Property_ProductFolderName) Directory Id=Localization Name=Localization Directory Id=engus Name=eng-us / /Directory /Directory /Directory /Directory Directory Id=ProgramMenuFolder Directory Id=ApplicationProgramsFolder Name=!(loc.Property_ProductFolderName)/ /Directory /Directory DirectoryRef Id=APPLICATIONFOLDER Component Id=TrionProductExe Guid=D9FF803E-3D2F-44DE-AC58-2E9689CC6213 File Id=ProductExe Name=TrionProduct.exe DiskId=1 Source=$(var.Version)/TrionProduct.exe/ /Component Component Id=TrionProductDll Guid=281B81AC-C13C-413B-8552-6E9596D2EAE6 File Id=patchingServiceDll Name=PatchingService.dll DiskId=1 Source=$(var.Version)/PatchingService.dll/ /Component Component Id=TrionProductTxt Guid=34BD9626-EAC0-4FEA-85E7-1E52885624A3 File Id=readMeTxt Name=ReadMe.txt DiskId=1 Source=$(var.Version)/ReadMe.txt/ /Component Merge Id=VCRedistCRT SourceFile=MergeModules\Microsoft_VC90_CRT_x86.msm DiskId=1 Language=0/ Merge Id=VCRedistMFC SourceFile=MergeModules\Microsoft_VC90_MFC_x86.msm DiskId=1 Language=0/ /DirectoryRef DirectoryRef Id=engus Component Id=LocalizedTextXmlEngUS Guid=B68CDE8C-66B1-45A0-933E-20FFC44C9FD8
Re: [WiX-users] How To Create Successive Patches That SupersedePrevious?
Sure thing. It was a long day so sorry for the lack of detail. Attached you'll find the wxs for the installs and the patches, and the batch files I use. I pass the version numbers into the batch files which in turn pass them along to WiX. I create the installs with buildInstall 0.3.0.0 for example, then the patches with buildPatch 0.3.0.0 0.3.1.0. --Emanuel -Original Message- From: Pally Sandher [mailto:pally.sand...@iesve.com] Sent: Friday, April 24, 2009 5:13 AM To: General discussion for Windows Installer XML toolset. Subject: Re: [WiX-users] How To Create Successive Patches That SupersedePrevious? I've created patches which do exactly what you're trying to do but from your description I can't pinpoint where you're going wrong. If you could post the .wxs file you're using to create your .pcp file, I or someone else on the list should be able to help point you in the right direction. Cheers, Palbinder Sandher Software Deployment IT Administrator T: +44 (0) 141 945 8500 F: +44 (0) 141 945 8501 http://www.iesve.com **Design, Simulate + Innovate with the Virtual Environment** Integrated Environmental Solutions Limited. Registered in Scotland No. SC151456 Registered Office - Helix Building, West Of Scotland Science Park, Glasgow G20 0SP Email Disclaimer -Original Message- From: Emanuel Masciarelli [mailto:emasciare...@trionworld.com] Sent: 24 April 2009 01:53 To: wix-users@lists.sourceforge.net Subject: [WiX-users] How To Create Successive Patches That SupersedePrevious? I tried looking through the digests on sourceforge but couldn't find a way to search, and didn't see this question answered so I apologize if it's a duplicate. I am trying to create patches for a product that will each be all encompassing of the previous ones, and want anybody at any version to be able to install the latest patch. Following the instructions on the site I can create patches just fine, so I can install 0.3.0.0 then patch from 0.3.0.0 to 0.3.1.0. I created my 0.3.2.0 patch from 0.3.0.0 (to encompass the 0.3.1.0 stuff) and when I apply it it says it cannot as The upgrade patch cannot be installed by the Windows Installer service because the program to be upgraded may be missing, or the upgrade patch may update a different version of the program. In my PatchFamily tag I have set the version to be the new version in both patches (so 0.3.1.0 and 0.3.2.0), and Supersede=yes for both. Is there something else I'm missing? From my understanding of the documentation the MsiPatchSequence table should have increasing numbers for all my patches and they should supersede each other just fine, but obviously I'm wrong. Any help is appreciated. --Emanuel -- Crystal Reports #45; New Free Runtime and 30 Day Trial Check out the new simplified licensign option that enables unlimited royalty#45;free distribution of the report engine for externally facing server and web deployment. http://p.sf.net/sfu/businessobjects ___ WiX-users mailing list WiX-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/wix-users -- Crystal Reports #45; New Free Runtime and 30 Day Trial Check out the new simplified licensign option that enables unlimited royalty#45;free distribution of the report engine for externally facing server and web deployment. http://p.sf.net/sfu/businessobjects ___ WiX-users mailing list WiX-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/wix-users This attachment was removed.-- Crystal Reports #45; New Free Runtime and 30 Day Trial Check out the new simplified licensign option that enables unlimited royalty#45;free distribution of the report engine for externally facing server and web deployment. http://p.sf.net/sfu/businessobjects___ WiX-users mailing list WiX-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/wix-users
Re: [WiX-users] How To Create Successive Patches That Supersede Previous?
=ApplicationProgramsFolder On=uninstall/ RegistryValue Root=HKCU Key=Software\Trion\TrionProduct Name=installed Type=integer Value=1 KeyPath=yes/ /Component /DirectoryRef Feature Id='TrionProduct' Title='Trion World Network Product' Level='1' ComponentRef Id='TrionProductExe' / ComponentRef Id='TrionProductDll' / ComponentRef Id='TrionProductTxt' / ComponentRef Id=ApplicationShortcut / ComponentRef Id=LocalizedTextXmlEngUS / MergeRef Id=VCRedistCRT/ MergeRef Id=VCRedistMFC/ /Feature Property Id=ARPHELPLINK Value=!(loc.Property_ArpHelpLink) / Property Id=ARPURLINFOABOUT Value=!(loc.Property_ArpUrlInfoAbout) / Media Id=1 Cabinet=Product.cab EmbedCab=yes/ Property Id=WIXUI_INSTALLDIR Value=APPLICATIONFOLDER / UI UIRef Id=WixUI_InstallDir / Publish Dialog=ExitDialog Control=Finish Event=DoAction Value=LaunchApplicationWIXUI_EXITDIALOGOPTIONALCHECKBOX = 1 and NOT Installed/Publish /UI WixVariable Id=WixUILicenseRtf Value=License.rtf / Property Id=WIXUI_EXITDIALOGOPTIONALCHECKBOXTEXT Value=!(loc.Package_LaunchAfterInstall) / Property Id=WIXUI_EXITDIALOGOPTIONALCHECKBOX Value=1/ Property Id=WixShellExecTarget Value=[#ProductExe] / CustomAction Id=LaunchApplication BinaryKey=WixCA DllEntry=WixShellExec Impersonate=yes / /Product /Wix Batch file to build it: :: This is an example of how to build the English version of the installer. :: This file should be replaced with something more appropriate. del /f /q *.wixobj del /f /s /q %1 mkdir %1 xcopy ..\bin\TrionProduct.exe %1 /C /Q /R /Y xcopy ..\bin\PatchingService.dll %1 /C /Q /R /Y xcopy ..\TrionProduct\Localization\* %1\Localization\ /C /Q /R /Y /S xcopy ReadMe.txt %1 /C /Q /R /Y del %1\Localization\*.tll %WIX%\bin\candle -dVersion=%1 -ext WixUIExtension -ext wixUtilExtension TrionProductInstall.wxs %WIX%\bin\light -dVersion=%1 -cultures:en-US -loc TrionProductInstall-en-US.wxl -ext wixUtilExtension -ext WixUIExtension TrionProductInstall.wixobj -out %1\TrionProductInstall.msi Patch WXS: ?xml version=1.0 encoding=utf-8? !-- Should be the same as the version that will be patched -- ?define Property_ProductVersion = $(var.Version)? Wix xmlns=http://schemas.microsoft.com/wix/2006/wi; Patch AllowRemoval=yes Manufacturer=!(loc.Property_CompanyName) MoreInfoURL=!(loc.Property_ArpHelpLink) DisplayName=!(loc.Property_ProductName) Description=!(loc.Patch_Description) Classification=Update Media Id=5000 Cabinet=RTM.cab PatchBaseline Id=RTM/ /Media PatchFamilyRef Id=TrionProductPatch/ /Patch Fragment PatchFamily Id='TrionProductPatch' Version='$(var.Property_ProductVersion)' Supersede='yes' ComponentRef Id='TrionProductExe' / ComponentRef Id='TrionProductDll' / ComponentRef Id='TrionProductTxt' / ComponentRef Id=LocalizedTextXmlEngUS / ComponentRef Id=ApplicationShortcut / /PatchFamily /Fragment /Wix Patch batch file to make a patch from 2 installs: mkdir Patch-%1-to-%2 %WIX%\bin\torch -p -xi %1\TrionProductInstall.wixpdb %2\TrionProductInstall.wixpdb -out Patch-%1-to-%2\Diff.Wixmst %WIX%\bin\candle -dVersion=%1 TrionProductPatch.wxs %WIX%\bin\light -dVersion=%1 TrionProductPatch.wixobj -out Patch-%1-to-%2\Patch.WixMsp -loc TrionProductPatch-en-us.wxl %WIX%\bin\pyro Patch-%1-to-%2\Patch.WixMsp -out Patch-%1-to-%2\TrionProductPatch.msp -t RTM Patch-%1-to-%2\Diff.wixmst --Emanuel -Original Message- From: Emanuel Masciarelli [mailto:emasciare...@trionworld.com] Sent: Friday, April 24, 2009 10:05 AM To: wix-users@lists.sourceforge.net Subject: Re: [WiX-users] How To Create Successive Patches That SupersedePrevious? Sure thing. It was a long day so sorry for the lack of detail. Attached you'll find the wxs for the installs and the patches, and the batch files I use. I pass the version numbers into the batch files which in turn pass them along to WiX. I create the installs with buildInstall 0.3.0.0 for example, then the patches with buildPatch 0.3.0.0 0.3.1.0. --Emanuel -Original Message- From: Pally Sandher [mailto:pally.sand...@iesve.com] Sent: Friday, April 24, 2009 5:13 AM To: General discussion for Windows Installer XML toolset. Subject: Re: [WiX-users] How To Create Successive Patches That SupersedePrevious? I've created patches which do exactly what you're trying to do but from your description I can't pinpoint where you're going wrong. If you could post the .wxs file you're using to create your .pcp file, I or someone else on the list should be able to help point you in the right direction. Cheers, Palbinder Sandher Software Deployment IT Administrator T: +44 (0) 141 945 8500 F: +44 (0) 141 945 8501 http://www.iesve.com **Design, Simulate + Innovate with the Virtual Environment** Integrated Environmental Solutions Limited. Registered
[WiX-users] How To Create Successive Patches That Supersede Previous?
I tried looking through the digests on sourceforge but couldn't find a way to search, and didn't see this question answered so I apologize if it's a duplicate. I am trying to create patches for a product that will each be all encompassing of the previous ones, and want anybody at any version to be able to install the latest patch. Following the instructions on the site I can create patches just fine, so I can install 0.3.0.0 then patch from 0.3.0.0 to 0.3.1.0. I created my 0.3.2.0 patch from 0.3.0.0 (to encompass the 0.3.1.0 stuff) and when I apply it it says it cannot as The upgrade patch cannot be installed by the Windows Installer service because the program to be upgraded may be missing, or the upgrade patch may update a different version of the program. In my PatchFamily tag I have set the version to be the new version in both patches (so 0.3.1.0 and 0.3.2.0), and Supersede=yes for both. Is there something else I'm missing? From my understanding of the documentation the MsiPatchSequence table should have increasing numbers for all my patches and they should supersede each other just fine, but obviously I'm wrong. Any help is appreciated. --Emanuel -- Crystal Reports #45; New Free Runtime and 30 Day Trial Check out the new simplified licensign option that enables unlimited royalty#45;free distribution of the report engine for externally facing server and web deployment. http://p.sf.net/sfu/businessobjects ___ WiX-users mailing list WiX-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/wix-users