Did you ever figure this out? -----Original Message----- From: Sharat Janapareddy [mailto:sharat.janapare...@microsoft.com] Sent: Sunday, November 01, 2009 2:46 PM To: wix-users@lists.sourceforge.net Subject: [WiX-users] WIX 3.0: Targeting a patch to multiple SKUs
Please bear with me if I am missing anything obvious since I recently started experimenting WIX 3.0 for building patches. I understand that we can generate patches using either PCP file or WIX directly. I decided to go with the latter approach but I am running into some issues with it. The main one being how do we build an MSP that targets multiple SKUs of the same product? I followed 2 methods for this and both of them fail on me! * I thought TargetProductCodes in the Patch element serves this purpose. So, I built an MSP with the product codes for all SKUs in the TargetProductCodes element and generated the MSP by using the Select version. The MSP built without any issues but when I tried to verify if the patch applies through Orca, it only applies for SELECT but not for any other SKUs. First of all, is this the right purpose of the TargetProductCodes and is this the right way to do it? Here's how I specified the product codes - <TargetProductCodes Replace="yes"> <!-- SELECT --> <TargetProductCode Id="{FFXXXXXX-...}" /> <!-- DEM --> <TargetProductCode Id="{35XXXXXX-...}" /> <!-- EVAL --> <TargetProductCode Id="{BEXXXXXX-...}" /> </TargetProductCodes> * Another way I tried was I expanded the released and updated versions for all SKUs of the MSI, then generated a diff for each one of them. Once I had these diffs, I called PYRO.exe (as shown below) to generate the MSP. Here's an excerpt from the script. $(O)\$(PATCH_DEFINITION_FILE).wixobj: $(PATCH_DEFINITION_FILE).wxs echo BUILDMSG2: Compiling - $@ $(WIX3_BIN)\candle.exe -nologo -out $@ $(PATCH_DEFINITION_FILE).wxs $(O)\$(PATCH_DEFINITION_FILE).wixmsp: $(O)\$(PATCH_DEFINITION_FILE).wixobj $(LOC_FILE_DIR)\$(MSIPATCHCULTURE).wxl echo BUILDMSG2: Linking - $@ $(WIX3_BIN)\light.exe -nologo -cultures:$(MSIPATCHCULTURE) -loc $(LOC_FILE_DIR)\$(MSIPATCHCULTURE).wxl -out $@ $(O)\$(PATCH_DEFINITION_FILE).wixobj echo BUILDMSG2: Expanding SELECT... $(O)\SelCD\$(PATCH_TARGET_MSI): $(RTM_BIN_PATH)\$(BUILDTYPE)\$(BUILDCPUDIR)\SelectCDImage\$(PATCH_TARGET_MSI _RELATIVE_DIRECTORY)\$(CPUTYPE)\$(PATCH_TARGET_MSI) echo BUILDMSG2: Generating admin RTM image - $@ msiexec -quiet -a $(RTM_BIN_PATH)\$(BUILDTYPE)\$(BUILDCPUDIR)\SelectCDImage\$(PATCH_TARGET_MSI _RELATIVE_DIRECTORY)\$(CPUTYPE)\$(PATCH_TARGET_MSI) TARGETDIR=$(MAKEDIR)\$(O)\SelCD $(O)\USelCd\$(PATCH_TARGET_MSI): $(INETROOT)\target\$(BUILDTYPE)\$(CPUTYPE)\SelectCDImage\$(PATCH_TARGET_MSI_ RELATIVE_DIRECTORY)\$(CPUTYPE)\$(PATCH_TARGET_MSI) echo BUILDMSG2: Generating admin QFE image - $@ msiexec -quiet -a $(INETROOT)\target\$(BUILDTYPE)\$(CPUTYPE)\SelectCDImage\$(PATCH_TARGET_MSI_ RELATIVE_DIRECTORY)\$(CPUTYPE)\$(PATCH_TARGET_MSI) TARGETDIR=$(MAKEDIR)\$(O)\USelCd $(O)\SelectDiff.wixmst: $(O)\SelCD\$(PATCH_TARGET_MSI) $(O)\USelCd\$(PATCH_TARGET_MSI) echo BUILDMSG2: Generating diff - $@ $(WIX3_BIN)\torch.exe -nologo -p -xo -ax $(O)\SelectDiffBin $(O)\SelCD\$(PATCH_TARGET_MSI) $(O)\USelCd\$(PATCH_TARGET_MSI) -out $@ echo BUILDMSG2: Expanding DEM... $(O)\DemCd\$(PATCH_TARGET_MSI): $(RTM_BIN_PATH)\$(BUILDTYPE)\$(BUILDCPUDIR)\DEMCDImage\$(PATCH_TARGET_MSI_RE LATIVE_DIRECTORY)\$(CPUTYPE)\$(PATCH_TARGET_MSI) echo BUILDMSG2: Generating admin RTM image - $@ msiexec -quiet -a $(RTM_BIN_PATH)\$(BUILDTYPE)\$(BUILDCPUDIR)\DEMCDImage\$(PATCH_TARGET_MSI_RE LATIVE_DIRECTORY)\$(CPUTYPE)\$(PATCH_TARGET_MSI) TARGETDIR=$(MAKEDIR)\$(O)\DemCd $(O)\UDemCd\$(PATCH_TARGET_MSI): $(INETROOT)\target\$(BUILDTYPE)\$(CPUTYPE)\DEMCDImage\$(PATCH_TARGET_MSI_REL ATIVE_DIRECTORY)\$(CPUTYPE)\$(PATCH_TARGET_MSI) echo BUILDMSG2: Generating admin QFE image - $@ msiexec -quiet -a $(INETROOT)\target\$(BUILDTYPE)\$(CPUTYPE)\DEMCDImage\$(PATCH_TARGET_MSI_REL ATIVE_DIRECTORY)\$(CPUTYPE)\$(PATCH_TARGET_MSI) TARGETDIR=$(MAKEDIR)\$(O)\UDemCd $(O)\DEMDiff.wixmst: $(O)\DemCd\$(PATCH_TARGET_MSI) $(O)\UDemCd\$(PATCH_TARGET_MSI) echo BUILDMSG2: Generating diff - $@ $(WIX3_BIN)\torch.exe -nologo -p -xo -ax $(O)\DEMDiffBin $(O)\DemCd\$(PATCH_TARGET_MSI) $(O)\UDemCd\$(PATCH_TARGET_MSI) -out $@ $(O)\$(TARGETNAME).msp: $(O)\$(PATCH_DEFINITION_FILE).wixmsp $(O)\SelectDiff.wixmst $(O)\DEMDiff.wixmst echo BUILDMSG2: Building patch - $@ $(WIX3_BIN)\pyro.exe -nologo $(O)\$(PATCH_DEFINITION_FILE).wixmsp -out $@ -t RTM $(O)\SelectDiff.wixmst -t RTM $(O)\DEMDiff.wixmst $(BINPLACE_CMD) But when I run this script, I get the below error for almost all files in the MSI. Any ideas what I am doing wrong here? 1>d:\product\setup\wix\patch\server\obj\i386\urtlcd\Product.msi : error PYRO0317 : Two different source paths 'd:\ product\setup\wix\patch\server\obj\i386\USelCd\program files\Prod2007\ABC.exe' and 'd:\ product\setup\wix\patch\server\obj\i386\URtlCd\program files\Prod2007\ABC.exe' were detected for the same file identifier 'F_ABC.exe.XXXXXXXX_XXXX_XXXX_XXXX_XXXXXXXXXXXX. You must either author these under Media elements with different Id attribute values or in different patches. * The final one I tried which I had a little success is - I defined each SKU target in a separate MEDIA element as the above error suggested. (It certainly doesn't make sense do generate a separate MSP for each SKU!) <Media Id="1" Cabinet="SelPatch.cab"> <PatchBaseline Id="RTMSelect"/> </Media> <Media Id="2" Cabinet="DemPatch.cab"> <PatchBaseline Id="RTMDem"/> </Media> This did generate the MSP but the size of the MSP is about 3 times more than the one generated for all our 6 SKUs using a PCP file (which is what we were doing before using WIX). And I was able to apply this patch for both the Select and DEM SKUs. So, what is the right approach here? Thanks, Sharat Janapareddy ~ 40269 ---------------------------------------------------------------------------- -- Come build with us! The BlackBerry(R) Developer Conference in SF, CA is the only developer event you need to attend this year. Jumpstart your developing skills, take BlackBerry mobile applications to market and stay ahead of the curve. Join us from November 9 - 12, 2009. Register now! http://p.sf.net/sfu/devconference _______________________________________________ WiX-users mailing list WiX-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/wix-users ------------------------------------------------------------------------------ Join us December 9, 2009 for the Red Hat Virtual Experience, a free event focused on virtualization and cloud computing. Attend in-depth sessions from your desk. Your couch. Anywhere. http://p.sf.net/sfu/redhat-sfdev2dev _______________________________________________ WiX-users mailing list WiX-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/wix-users