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:[email protected]]
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:[email protected]]
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 <[email protected]> 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
> [email protected]
> 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
[email protected]
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
[email protected]
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
[email protected]
https://lists.sourceforge.net/lists/listinfo/wix-users