I believe we likely missed adding the instances to the TargetProductCode when
we we added support for instances. However, based on the Patch authoring I see
below, you are ignoring the ProductId in the patch using the Validate element.
This should prevent msi from doing that check when it tries to apply to the
patch. Heath, any ideas?
<PatchBaseline Id="RTM">
<Validate ProductId="no" UpgradeCode="no" ProductVersion="Major"
ProductVersionOperator="GreaterOrEqual"/>
</PatchBaseline>
From: Rob Mensching
Sent: Monday, December 08, 2008 11:47 AM
To: Windows Installer XML toolset developer mailing list
Cc: Peter Marcu; Heath Stewart
Subject: RE: [WiX-devs] Multiple instance patches
Adding the people that actually maintain the pyro code.
From: Matt Ziegler [mailto:[EMAIL PROTECTED]
Sent: Monday, December 08, 2008 11:41
To: Windows Installer XML toolset developer mailing list
Subject: Re: [WiX-devs] Multiple instance patches
Thank you for looking at this John. It does seem as though WiX isn't passing
through the multiple product codes to be included in the patch. According to
every piece of documentation I can find it hints that this is possible but
there is no concrete example.
Where is the best place to put the information for this when we get it figured
out so others don't go through the same headaches?
Matt
On Mon, Dec 8, 2008 at 8:43 AM, John Nannenga <[EMAIL PROTECTED]<mailto:[EMAIL
PROTECTED]>> wrote:
There might be a bug here, but will need to defer to one of the WiX gurus...
Summary of Findings:
1) In the resulting patch summary information, "Targets" only lists the
base product code. I believe this is why your patch cannot be applied to your
additional instance.
2) TargetProductCode in the 'old school way' of building patch files would
add the appropriate information to the .pcp file which then got processed by
msimsp to put the correct information in the resulting .msp file. Adding
TargetProductCode to the 'new way' of building patch files does not arrive at
the expected results within the .msp file [no errors encountered, but nothing
changes. It's like it is ignored].
Hence my need to defer to one of the WiX gurus...
From: Matt Ziegler [mailto:[EMAIL PROTECTED]<mailto:[EMAIL PROTECTED]>]
Sent: Monday, November 24, 2008 11:58 AM
To: Windows Installer XML toolset developer mailing list
Subject: Re: [WiX-devs] Multiple instance patches
Of course. I've been doing this on a very small 3 file install to test proof
of concept stuff. There are 2 files that I am using, Product.wxs and
Patch.wxs, both should be fairly self explanatory. When creating the 2
versions of the product a wixout with the -bf option in light is used and then
light is ran again to create the msi. Torch is ran against the resulting
wixpdb files to create the wixmst. Pyro is then ran against the wixmst and the
wixmsp from the patch file.
Thank you again for your help.
Matt
Command line for creating product (batch script):
candle Product.wxs -dVersion=%1 -out Prod%1.wixobj
light Prod%1.wixobj -xo -dVersion=%1 -out %1\Prod%1.wixout
light %1\Prod%1.wixout -out %1\Prod%1.msi
Command line for creating patch (batch script):
torch -xi -p -t patch %1\Prod%1.wixpdb %2\Prod%2.wixpdb -out %1to%2diff.wixmst
candle patch.wxs -dbase=%1 -dtarget=%2 -out Patch%1to%2.wixobj
light Patch%1to%2.wixobj -out Patch%1to%2.wixmsp
pyro Patch%1to%2.wixmsp -out %1to%2.msp -t RTM %1to%2diff.wixmst
Product.wxs:
<?xml version="1.0" encoding="UTF-8"?>
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
<Product Id="376DC5D6-C67B-4CE1-A2DD-97FE4992235A"
Name="WiX Patch Example Product"
Language="1033"
Version="1.0.$(var.Version)"
Manufacturer="Dynamo Corporation"
UpgradeCode="D3B1F084-3B3E-4C8D-8017-A3BD418D31E1">
<Package Description="Installs a file that will be patched." Comments="This
Product does not install any executables" InstallerVersion="301"
Compressed="yes" />
<Media Id="1" Cabinet="product.cab" EmbedCab="yes" />
<FeatureRef Id="SampleProductFeature"/>
<PatchCertificates>
<DigitalCertificate Id="TestCert" SourceFile="signcert.spc"/>
</PatchCertificates>
<Property Id="ALLUSERS" Value="1" />
<Property Id="InstanceId" Value="Original" />
<InstanceTransforms Property="InstanceId">
<Instance Id="Instance2"
ProductCode="{48F7E3D3-4291-45b0-AA5E-8A78337D95FF}" ProductName="WiX Patch
Example Product 2" />
</InstanceTransforms>
<CustomAction Id="SetInstallDir" Property="INSTALLDIR"
Value="[INSTALLDIR][InstanceId]" Execute="immediate" />
<InstallExecuteSequence>
<Custom Action="SetInstallDir" Before="CostInitialize">NOT
Installed</Custom>
</InstallExecuteSequence>
</Product>
<Fragment>
<Feature Id="SampleProductFeature" Title="Sample Product Feature" Level="1">
<ComponentRef Id="File1.txt" />
<ComponentRef Id="File2.txt" />
<ComponentRef Id="File3.txt" />
</Feature>
</Fragment>
<Fragment>
<DirectoryRef Id="INSTALLDIR">
<Component Id="File1.txt" Guid="{151A4C3E-436D-489F-BD61-021B213078E6}"
DiskId="1">
<File Id="File1.txt" Name="File1.txt" Source="$(var.Version)\File1.txt"
/>
</Component>
</DirectoryRef>
</Fragment>
<Fragment>
<DirectoryRef Id="INSTALLDIR">
<Component Id="File2.txt" Guid="{C3895CCD-4919-4601-8C30-5AF9348F9AA1}"
DiskId="1">
<File Id="File2.txt" Name="File2.txt" Source="$(var.Version)\File2.txt"
/>
</Component>
</DirectoryRef>
</Fragment>
<Fragment>
<DirectoryRef Id="INSTALLDIR">
<Component Id="File3.txt" Guid="{6CAE947D-5EFF-4198-BF67-DCD0C03FB28A}"
DiskId="1">
<File Id="File3.txt" Name="File3.txt" Source="$(var.Version)\File3.txt"
/>
</Component>
</DirectoryRef>
</Fragment>
<Fragment>
<Directory Id="TARGETDIR" Name="SourceDir">
<Directory Id="ProgramFilesFolder" Name="PFiles">
<Directory Id="INSTALLDIR" Name="Patch Sample Directory" />
</Directory>
</Directory>
</Fragment>
</Wix>
Patch.wxs:
<?xml version="1.0" encoding="utf-8"?>
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
<Patch AllowRemoval="yes"
Manufacturer="Practice Partner" DisplayName="Test Patch - $(var.base)
to $(var.target)" Description="Patch for Testing"
Classification="Update">
<Media Id="5000" Cabinet="RTM.cab">
<PatchBaseline Id="RTM">
<Validate ProductId="no" UpgradeCode="no" ProductVersion="Major"
ProductVersionOperator="GreaterOrEqual"/>
</PatchBaseline>
</Media>
<PatchFamily Id="TestPatchFamily" Version="1.0.$(var.target)"
Supersede="no">
<ComponentRef Id="File1.txt"/>
<ComponentRef Id="File2.txt"/>
<ComponentRef Id="File3.txt"/>
</PatchFamily>
</Patch>
</Wix>
On Fri, Nov 21, 2008 at 12:30 PM, John Nannenga <[EMAIL
PROTECTED]<mailto:[EMAIL PROTECTED]>> wrote:
Is this something you can share for debugging purposes?
From: Matt Ziegler [mailto:[EMAIL PROTECTED]<mailto:[EMAIL PROTECTED]>]
Sent: Friday, November 21, 2008 12:42 PM
To: Windows Installer XML toolset developer mailing list
Subject: Re: [WiX-devs] Multiple instance patches
I was hoping to use the pure WiX patches routine as well as try to be able to
change a patch's target on the command line, but I'll settle to get it working
in the first place and then I'll go from there :).
I did create a patch using the <TargetProductCode /> element using MsiMsp.exe.
The patch now runs and patches the base installation just fine but when it goes
to patch the second instance I get a 1642 error. The output from the log file
is below (one finally generated).
Any help is greatly appreciated.
Thanks
Matt
MSI (c) (F0:44) [10:32:38:195]: Original package ==>
C:\WINDOWS\Installer\16f38b31.msi
MSI (c) (F0:44) [10:32:38:195]: Package we're running from ==>
C:\WINDOWS\Installer\16f38b31.msi
MSI (c) (F0:44) [10:32:38:195]: APPCOMPAT: looking for appcompat database entry
with ProductCode '{48F7E3D3-4291-45B0-AA5E-8A78337D95FF}'.
MSI (c) (F0:44) [10:32:38:195]: APPCOMPAT: no matching ProductCode found in
database.
MSI (c) (F0:44) [10:32:38:195]: Detected that this product uses a multiple
instance transform.
MSI (c) (F0:44) [10:32:38:195]: MSCOREE not loaded loading copy from system32
MSI (c) (F0:44) [10:32:38:195]: Applying multiple instance transform
':Instance2'...
MSI (c) (F0:44) [10:32:38:195]: Looking for storage transform: Instance2
<snip />
MSI (c) (F0:44) [10:32:38:195]: Original patch ==>
C:\practice_partner\Installers\SiteInstaller\Patch testing\small test\patch.msp
MSI (c) (F0:44) [10:32:38:195]: Patch we're running from ==>
C:\DOCUME~1\mziegler\LOCALS~1\Temp\459eb18.msp
MSI (c) (F0:44) [10:32:38:211]: Opening existing patch
'C:\WINDOWS\Installer\44b1e86.msp'.
MSI (c) (F0:44) [10:32:38:211]: SequencePatches starts. Product code:
{48F7E3D3-4291-45B0-AA5E-8A78337D95FF}, Product version: 1.0.1, Upgrade code:
{D3B1F084-3B3E-4C8D-8017-A3BD418D31E1}, Product language 1033
MSI (c) (F0:44) [10:32:38:211]: PATCH SEQUENCER: verifying the applicability of
minor upgrade patch C:\practice_partner\Installers\SiteInstaller\Patch
testing\small test\patch.msp against product code:
{48F7E3D3-4291-45B0-AA5E-8A78337D95FF}, product version: 1.0.1, product
language 1033 and upgrade code: {D3B1F084-3B3E-4C8D-8017-A3BD418D31E1}
MSI (c) (F0:44) [10:32:38:211]: PATCH SEQUENCER: minor upgrade patch
C:\practice_partner\Installers\SiteInstaller\Patch testing\small test\patch.msp
is not applicable.
MSI (c) (F0:44) [10:32:38:211]: SequencePatches returns success.
MSI (c) (F0:44) [10:32:38:211]: Final Patch Application Order:
MSI (c) (F0:44) [10:32:38:211]: Other Patches:
MSI (c) (F0:44) [10:32:38:211]: Unknown\Absent:
{0148E385-C0F9-4C51-846B-A6B393868862} -
C:\practice_partner\Installers\SiteInstaller\Patch testing\small test\patch.msp
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. Verify that the program to be upgraded exists
on your computer an
d that you have the correct upgrade patch.
C:\WINDOWS\Installer\16f38b31.msi
MSI (c) (F0:44) [10:32:38:211]: Product: WiX Patch Example Product 2 - Update
'{0148E385-C0F9-4C51-846B-A6B393868862}' could not be installed. Error code
1642. Additional information is available in the log file
C:\practice_partner\Installers\SiteInstaller\Patch testing\small
test\patch2.log.
MSI (c) (F0:44) [10:32:38:211]: Windows Installer installed an update. Product
Name: WiX Patch Example Product 2. Product Version: 1.0.1.<http://1.0.1.>
Product Language: 1033. Update Name: {0148E385-C0F9-4C51-846B-A6B393868862}.
Installation success or error status: 1642.
MSI (c) (F0:44) [10:32:38:211]: Note: 1: 1708
MSI (c) (F0:44) [10:32:38:211]: Product: WiX Patch Example Product 2 --
Installation failed.
MSI (c) (F0:44) [10:32:38:211]: Windows Installer installed the product.
Product Name: WiX Patch Example Product 2. Product Version:
1.0.1.<http://1.0.1.> Product Language: 1033. Installation success or error
status: 1642.
On Thu, Nov 20, 2008 at 3:04 PM, John Nannenga <[EMAIL PROTECTED]<mailto:[EMAIL
PROTECTED]>> wrote:
In your patch generation you need to target the patch for all the product codes
[instances] you want it to be applicable to.
<TargetProductCode Id="PRODUCT_CODE_GUID"/>
<TargetProductCode Id="PRODUCT_CODE_GUID_INSTANCE1"/>
<TargetProductCode Id="PRODUCT_CODE_GUID_INSTANCE2"/>
Etc...
From: Matt Ziegler [mailto:[EMAIL PROTECTED]<mailto:[EMAIL PROTECTED]>]
Sent: Thursday, November 20, 2008 3:50 PM
To: [EMAIL PROTECTED]<mailto:[EMAIL PROTECTED]>;
[email protected]<mailto:[email protected]>
Subject: Re: [WiX-devs] Multiple instance patches
Any insight from anyone?
On Wed, Nov 19, 2008 at 2:58 PM, Matt Ziegler <[EMAIL PROTECTED]<mailto:[EMAIL
PROTECTED]>> wrote:
I've been playing around with installing multiple instances of an application
used the <InstanceTransforms /> element, works quite well. I'm trying to
create a patch between 2 versions and apply that one patch to multiple
installed instances and according to
http://msdn.microsoft.com/en-us/library/aa369528(VS.85).aspx<http://msdn.microsoft.com/en-us/library/aa369528%28VS.85%29.aspx>
it is possible to do this by running the patch from the command line and
passing in the product id of the installed instance you want to patch. I have
yet to be able to get a patch to install to a second instance correctly,
installing to the base instances works just fine. The error message I get is:
"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."
The command line executed is: msiexec /update 1to2.msp /n
{48F7E3D3-4291-45b0-AA5E-8A78337D95FF}
There is no log created even with /l*v
I included a <Validate /> element wondering if there was some check with the
different product code for the patch that was holding back, no joy.
<PatchBaseline Id="RTM">
<Validate ProductId="no" UpgradeCode="no" ProductVersion="Major"
ProductVersionOperator="GreaterOrEqual"/>
</PatchBaseline>
Any help or insight would be greatly appreciated.
Thanks
Matt
-------------------------------------------------------------------------
This SF.Net email is sponsored by the Moblin Your Move Developer's challenge
Build the coolest Linux based applications with Moblin SDK & win great prizes
Grand prize is a trip for two to an Open Source event anywhere in the world
http://moblin-contest.org/redirect.php?banner_id=100&url=/
_______________________________________________
WiX-devs mailing list
[email protected]<mailto:[email protected]>
https://lists.sourceforge.net/lists/listinfo/wix-devs
-------------------------------------------------------------------------
This SF.Net email is sponsored by the Moblin Your Move Developer's challenge
Build the coolest Linux based applications with Moblin SDK & win great prizes
Grand prize is a trip for two to an Open Source event anywhere in the world
http://moblin-contest.org/redirect.php?banner_id=100&url=/
_______________________________________________
WiX-devs mailing list
[email protected]<mailto:[email protected]>
https://lists.sourceforge.net/lists/listinfo/wix-devs
------------------------------------------------------------------------------
SF.Net email is Sponsored by MIX09, March 18-20, 2009 in Las Vegas, Nevada.
The future of the web can't happen without you. Join us at MIX09 to help
pave the way to the Next Web now. Learn more and register at
http://ad.doubleclick.net/clk;208669438;13503038;i?http://2009.visitmix.com/
_______________________________________________
WiX-devs mailing list
[email protected]<mailto:[email protected]>
https://lists.sourceforge.net/lists/listinfo/wix-devs
------------------------------------------------------------------------------
SF.Net email is Sponsored by MIX09, March 18-20, 2009 in Las Vegas, Nevada.
The future of the web can't happen without you. Join us at MIX09 to help
pave the way to the Next Web now. Learn more and register at
http://ad.doubleclick.net/clk;208669438;13503038;i?http://2009.visitmix.com/
_______________________________________________
WiX-devs mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/wix-devs