I'm having a similar problem with merge modules I am picking up from another team. I can't modify those msm's and I'm being forced to add custom actions to set the system folder properties they use so the files get installed to the correct place. Mine need to be sequenced before theirs because they are using the properties that I set. The merging process isn't acting the same as it is for another product doing the same and I suspect it is because they are using v2 of wix and I'm using v3. I've moved to Version 3.0.4923.0 hoping it was a bad version but that version seems to have it as well.
The msm has the following in their sequence tables ACTION SEQUENCE BASE AFTER CA_ProgramFilesFolder_x86.3643236F_FC70_11D3_A536_0090278A1BB8.4551CBE5_EB2A_44E8_8F9A_C264DF332068 CostInitialize 0 CostInitialize 800 These are the calls I'm making <?define VSDCoreconMsmGuid = "4551CBE5_EB2A_44E8_8F9A_C264DF332068" ?> <CustomAction Id="Set_ProgramFilesFolder.$(var.VSDCoreconMsmGuid)" Property="ProgramFilesFolder.$(var.VSDCoreconMsmGuid))" Value="[ProgramFilesFolder]" /> <InstallExecuteSequence> <Custom Action="Set_ProgramFilesFolder.$(var.VSDCoreconMsmGuid)" Overridable="no" Sequence="1" /> </InstallExecuteSequence> When merged my CA is scheduled down at sequence 12 and the above one is scheduled at 1 even though costinitialize isn't until 800 It seems that the merging process is not working properly. There are other actions like appsearch and launchconditions scheduled before costinitialize. Those are base msi actions that you would think the msm actions should be scheduled after. My action is setting a property that theirs is using to set. So basically theirs is run, gets an empty value then mine is ran. Here is what the table looks like in orca for the actions/sequence prior to costinitialize. I've highlighted the items shown above in red ProgramFilesFolder_x86.3643236F_FC70_11D3_A536_0090278A1BB8.4551CBE5_EB2A_44E8_8F9A_C264DF332068 1 CommonFilesFolder_x86.3643236F_FC70_11D3_A536_0090278A1BB8.4551CBE5_EB2A_44E8_8F9A_C264DF332068 1 WindowsFolder_x86.3643236F_FC70_11D3_A536_0090278A1BB8.4551CBE5_EB2A_44E8_8F9A_C264DF332068 1 CommonAppDataFolder_x86.3643236F_FC70_11D3_A536_0090278A1BB8.4551CBE5_EB2A_44E8_8F9A_C264DF332068 1 SystemFolder.21022.08.Microsoft_VC90_MFC_x86.RTM.17F6CCF1_663E_333F_9941_1249FE946C34 2 SystemFolder.21022.08.Microsoft_VC90_MFCLOC_x86.RTM.041355E4_1D9A_3127_9B8F_0C95A8B4EB04 3 SystemFolder.21022.08.Microsoft_VC90_CRT_x86.RTM.0138F525_6C8A_333F_A105_14AE030B9A54 4 SystemFolder.21022.08.Microsoft_VC90_ATL_x86.RTM.CEC8F2E3_AC9A_357C_BFCB_BFAC37C4AC50 5 ProgramFilesFolder.EE0272F0_1C17_4608_BB9F_B6FF9D5B9825 6 CommonAppDataFolder.EE0272F0_1C17_4608_BB9F_B6FF9D5B9825 6 ProgramMenuFolder.352B874D_7490_4472_A987_71328E788E56 7 ProgramFilesFolder.352B874D_7490_4472_A987_71328E788E56 7 ProgramMenuFolder.3A429435_6A5E_4132_8ECC_57D58F3B8010 8 ProgramFilesFolder.3A429435_6A5E_4132_8ECC_57D58F3B8010 8 ProgramFilesFolder.07298623_FCD5_4637_BE96_DF868BDD83DA 9 SystemFolder.14B856D9_E224_415E_905C_8FF0E9164399 10 CommonFilesFolder.14B856D9_E224_415E_905C_8FF0E9164399 10 CommonAppDataFolder.14B856D9_E224_415E_905C_8FF0E9164399 10 ProgramFilesFolder.14B856D9_E224_415E_905C_8FF0E9164399 10 ProgramMenuFolder.2D6205C1_6B2F_4676_936A_27B1D66A9700 11 ProgramFilesFolder.2D6205C1_6B2F_4676_936A_27B1D66A9700 11 CommonAppDataFolder.2D6205C1_6B2F_4676_936A_27B1D66A9700 11 Set_ProgramFilesFolder.4551CBE5_EB2A_44E8_8F9A_C264DF332068 12 Set_CommonFilesFolder.4551CBE5_EB2A_44E8_8F9A_C264DF332068 13 Set_WindowsFolder.4551CBE5_EB2A_44E8_8F9A_C264DF332068 14 Set_SystemFolder.4551CBE5_EB2A_44E8_8F9A_C264DF332068 15 Set_System16Folder.4551CBE5_EB2A_44E8_8F9A_C264DF332068 16 Set_TempFolder.4551CBE5_EB2A_44E8_8F9A_C264DF332068 17 Set_StartMenuFolder.4551CBE5_EB2A_44E8_8F9A_C264DF332068 18 Set_ProgramMenuFolder.4551CBE5_EB2A_44E8_8F9A_C264DF332068 19 Set_CommonAppDataFolder.4551CBE5_EB2A_44E8_8F9A_C264DF332068 20 Set_AppDataFolder.4551CBE5_EB2A_44E8_8F9A_C264DF332068 21 Set_DesktopFolder.4551CBE5_EB2A_44E8_8F9A_C264DF332068 22 Set_AdminToolsFolder.4551CBE5_EB2A_44E8_8F9A_C264DF332068 23 Set_System64Folder.4551CBE5_EB2A_44E8_8F9A_C264DF332068 24 AppSearch 50 LaunchConditions 51 SET_TARGETDIR 52 ValidateProductID 700 WindowsFolder.21022.08.Microsoft_VC90_ATL_x86.RTM.CEC8F2E3_AC9A_357C_BFCB_BFAC37C4AC50 701 WindowsFolder.21022.08.Microsoft_VC90_CRT_x86.RTM.0138F525_6C8A_333F_A105_14AE030B9A54 702 WindowsFolder.21022.08.Microsoft_VC90_MFCLOC_x86.RTM.041355E4_1D9A_3127_9B8F_0C95A8B4EB04 703 WindowsFolder.21022.08.Microsoft_VC90_MFC_x86.RTM.17F6CCF1_663E_333F_9941_1249FE946C34 704 WindowsFolder.21022.08.policy_9_0_Microsoft_VC90_ATL_x86.RTM.A50B7592_50BC_31A9_9E25_32121F451D37 705 WindowsFolder.21022.08.policy_9_0_Microsoft_VC90_CRT_x86.RTM.52105B6B_A3EF_3A90_882A_947B287C203A 706 WindowsFolder.21022.08.policy_9_0_Microsoft_VC90_MFCLOC_x86.RTM.0390D80A_CD51_37A0_B5C5_C861D417F876 707 WindowsFolder.21022.08.policy_9_0_Microsoft_VC90_MFC_x86.RTM.7F9A85ED_D023_3818_B6DC_A687410206B5 708 CA_ProgramFilesFolder2_x86.3643236F_FC70_11D3_A536_0090278A1BB8.4551CBE5_EB2A_44E8_8F9A_C264DF332068 709 CA_ProgramFilesFolder_x86.3643236F_FC70_11D3_A536_0090278A1BB8.4551CBE5_EB2A_44E8_8F9A_C264DF332068 710 CA_CommonFilesFolder_x86.3643236F_FC70_11D3_A536_0090278A1BB8.4551CBE5_EB2A_44E8_8F9A_C264DF332068 711 CA_WindowsVolume_x86.3643236F_FC70_11D3_A536_0090278A1BB8.4551CBE5_EB2A_44E8_8F9A_C264DF332068 712 CA_WindowsFolder_x86.3643236F_FC70_11D3_A536_0090278A1BB8.4551CBE5_EB2A_44E8_8F9A_C264DF332068 713 CA_SystemFolder_x86.3643236F_FC70_11D3_A536_0090278A1BB8.4551CBE5_EB2A_44E8_8F9A_C264DF332068 714 CA_System16Folder_x86.3643236F_FC70_11D3_A536_0090278A1BB8.4551CBE5_EB2A_44E8_8F9A_C264DF332068 715 CA_TempFolder_x86.3643236F_FC70_11D3_A536_0090278A1BB8.4551CBE5_EB2A_44E8_8F9A_C264DF332068 716 CA_StartMenuFolder_x86.3643236F_FC70_11D3_A536_0090278A1BB8.4551CBE5_EB2A_44E8_8F9A_C264DF332068 717 CA_ProgramMenuFolder_x86.3643236F_FC70_11D3_A536_0090278A1BB8.4551CBE5_EB2A_44E8_8F9A_C264DF332068 718 CA_CommonAppDataFolder_x86.3643236F_FC70_11D3_A536_0090278A1BB8.4551CBE5_EB2A_44E8_8F9A_C264DF332068 719 CA_AppDataFolder_x86.3643236F_FC70_11D3_A536_0090278A1BB8.4551CBE5_EB2A_44E8_8F9A_C264DF332068 720 CA_DesktopFolder_x86.3643236F_FC70_11D3_A536_0090278A1BB8.4551CBE5_EB2A_44E8_8F9A_C264DF332068 721 CA_AdminToolsFolder_x86.3643236F_FC70_11D3_A536_0090278A1BB8.4551CBE5_EB2A_44E8_8F9A_C264DF332068 722 CA_System64Folder_x86.3643236F_FC70_11D3_A536_0090278A1BB8.4551CBE5_EB2A_44E8_8F9A_C264DF332068 723 CostInitialize 800 Thanks, Lees -----Original Message----- From: Rob Mensching [mailto:rob.mensch...@microsoft.com] Sent: Thursday, September 25, 2008 1:24 PM To: General discussion for Windows Installer XML toolset. Subject: Re: [WiX-users] Custom Actions from Merge Modules It's more complicated than that. The problem your hitting in WiX v3 is actually a feature added in WiX v2 that allows a developer to separate their authoring into separate "Fragments" and have everything get stitched back together. In WiX v1 the best you could do was to separate authoring out into Merge Modules and try to merge everything back together. This "symbol/reference feature" implemented WiX v2 was what allowed WiX v2 scale to the needs of Office way back in 2003. On top of the scalability improvements, that feature has an additional (usually) desirable feature of informing the developer when a required piece of the setup (such as an Custom Action definition) is missing. Unfortunately, in your case, the improper separation of code in the Merge Modules means those references are broken. As Bob noted, you could switch to .wixlibs and then the WiX toolset would be able to resolve references. Merge Modules are limiting in their design here. It isn't about morals, it's about correctness and limitations in the various designs (both in MSI and in WiX). To carry your analogy of editing with Orca to native code, it is not possible to link a .cpp with code that buried in a compiled DLL (i.e. not code that is exported from the DLL). The link.exe will fail telling you it can't resolve reference and will not generate an executable. Now you could probably go in with a hex editor and make everything work at the assembly/machine code level. Just like in this case, you can go in and hack at the MSI with Orca but light.exe won't be able to help you. Finally, migrating from WiX v1 to WiX v2 is a large undertaking. Migrating from WiX v2 to WiX v3 is pretty straight forward (and WixCop can help *a lot*). WiX v1 didn't have half of the concepts that WiX v2/v3 has and was about half as powerful as WiX v2/v3. I'm sorry it was surprising that there is lot of work to migrate from WiX v1 to WiX v2/v3 but anyone that lived through the migration would have told that it wasn't going to be easy. -----Original Message----- From: Tina Basinger [mailto:tinabasin...@gmail.com] Sent: Thursday, September 25, 2008 12:48 To: General discussion for Windows Installer XML toolset. Subject: Re: [WiX-users] Custom Actions from Merge Modules It seems to me that Wix is being unsupportive of something that Windows Installer allows. The InstallExecuteSequence table of an MSI contains references to both the custom actions defined in the MSI directly as well as in the merge modules. You can go in and modify this table directly (using Orca) however you like, and the MSI essentially doesn't know whether an item in the table was merged in from a merge module or directly by the install. Thus, in my opinion, Wix is not allowing something that Windows Installer fully supports, and this seems wrong to me. I'm not suggesting that it is good design to code things such that a merge module defines a custom action, and the main install schedules it. I'm just suggesting that Wix is attempting to force people into a good design, and in this case i don't appreciate it. It's like you're forcing some sort of moral standard on me rather than letting me make that decision (and possibly mistakes) for myself. Our install is really old and minimal maintenance is only done as needed. I've just upgraded it from Wix 1.0 to Wix 3.0 (like I said, it's an old install...), and am running into many issues due to the poor design choices that were originally made, but were allowed by Wix 1.0. These issues relate around the fact that our main install can no longer schedule the merge module custom actions. We have 3 main installs consuming our merge modules, and some of the merge module actions are scheduled in different orders or with different conditions (usually based on main install properties) between the various installs, so I really cannot move the scheduling of these items into our merge modules. For these, i've pulled the custom action definitions into a wix fragment so that I can keep the scheduling in the main install. But then there are other custom actions that I have had to leave defined in the merge modules and schedule them there because they set merge module properties. But scheduling these is becoming a problem because the order depends on other custom actions that are now scheduled by the main install. It's a mess! So, as you can see, upgrading to wix 3.0 is giving me a much bigger headache than I foresaw, which is why I'm a bit perturbed that the wix toolset is forcing this moral standard upon me, especially since it didn't in the (very) old days. And yes, our install is obviously very poorly designed (not by me), but so far it's worked for us, and it's just going to take a bit more work than I thought to get it working with wix 3.0. Thanks for listening to me grumble... -Tina On Wed, Sep 24, 2008 at 10:29 PM, Bob Arnson <b...@joyofsetup.com> wrote: > Tina Basinger wrote: > > Maybe this is not supported any more. Should I be able to have the main > > installation code schedule a custom action that is defined within a merge > > module? Any thoughts? > > > > Merge modules are designed to be self-contained, which is why they have > the modularization GUID attached to their IDs. They should schedule > their own custom actions. I'm not aware of any way to do what you want > with WiX, except using .wixlibs instead of .msms. > > -- > sig://boB > http://joyofsetup.com/ > > > > ------------------------------------------------------------------------- > 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-users mailing list > WiX-users@lists.sourceforge.net > https://lists.sourceforge.net/lists/listinfo/wix-users > ------------------------------------------------------------------------- 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-users mailing list WiX-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/wix-users ------------------------------------------------------------------------- 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-users mailing list WiX-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/wix-users ------------------------------------------------------------------------------ This SF.net email is sponsored by: SourcForge Community SourceForge wants to tell your story. http://p.sf.net/sfu/sf-spreadtheword _______________________________________________ WiX-users mailing list WiX-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/wix-users