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">
>        <File Id="LocalizedXmlEngUS" Name="LocalizedText.xml" DiskId="1"
> Source="$(var.Version)/Localization/eng-us/LocalizedText.xml"/>
>      </Component>
>    </DirectoryRef>
>
>    <DirectoryRef Id="ApplicationProgramsFolder">
>      <Component Id="ApplicationShortcut"
> Guid="05EDFE33-7610-4A52-BA6D-CA4FF929C837">
>        <Shortcut Id="ApplicationStartMenuShortcut"
>                  Name="!(loc.Shortcut_ProductLink)"
>                  Description="!(loc.Shortcut_ProductDescription)"
>                  Target="[APPLICATIONFOLDER]TrionProduct.exe"
>                  WorkingDirectory="APPLICATIONFOLDER"/>
>        <Shortcut Id="ReadMeStartMenuShortcut"
>                  Name="!(loc.Shortcut_ReadMeLink)"
>                  Description="!(loc.Shortcut_ReadMeDescription)"
>                  Target="[APPLICATIONFOLDER]ReadMe.txt"
>                  WorkingDirectory="APPLICATIONFOLDER"/>
>        <Shortcut Id="UninstallProduct"
>                  Name="!(loc.Shortcut_UninstallLink)"
>                  Description="!(loc.Shortcut_UninstallDescription)"
>                  Target="[System64Folder]msiexec.exe"
>                  Arguments="/x [ProductCode]"/>
>        <util:InternetShortcut Id="OnlineHelp"
>                               Name="!(loc.Shortcut_HelpLink)"
>                               Target="!(loc.Property_ArpHelpLink)"/>
>        <RemoveFolder Id="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="LaunchApplication">WIXUI_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 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
>
>
> ------------------------------------------------------------------------------
> 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
>



-- 
Heath Stewart
Deployment Technologies Team, Microsoft
http://blogs.msdn.com/heaths
------------------------------------------------------------------------------
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

Reply via email to