[WiX-users] XmlConfig in multiple MergeModules
Hello, I was wondering if it is possible to use XmlConfig in multiple merge modules, that will later be used in a single installer. For example, I have MergeModule1, which has: Fragment Component Id=appConfigEdit Guid={1F53A85E-07AD-47B5-890E-D6768A65E343} Directory=MANAGEMENTTOOLFOLDER KeyPath=yes util:XmlConfig Id='Modules' On='install' Action='create' Sequence='1' File='[#appConfigFile]' ElementPath=//configuration/appSettings/add[\[]@key='Modules'[\]] Node=value Name=value Value='[MODULES]'/ util:XmlConfig Id='ConnectorServiceRelativePathDefinition' On='install' Action='create' Sequence='2' File='[#appConfigFile]' ElementPath=//configuration/appSettings/add[\[]@key='ConnectorServiceFolderName'[\]] Node=value Name=value Value='..\!(loc.ConnectorFolderName)'/ /Component /Fragment MergeModule2 has the following Component: Fragment Component Id=appConfigEditing Guid={BC70F9B6-6CE1-4C49-8AB3-F7C36B616129} Directory=CONNECTORFOLDER KeyPath=yes util:XmlConfig Id='ModulesDefinition' On='install' Action='create' Sequence='1' File='[#file_E1F5BC4046FD48ADB558DE10AA3F4B50]' ElementPath=//configuration/appSettings/add[\[]@key='Modules'[\]] Node=value Name=value Value='[MODULES]'/ util:XmlConfig Id='GcwaRelativePathDefinition' On='install' Action='create' Sequence='2' File='[#file_E1F5BC4046FD48ADB558DE10AA3F4B50]' ElementPath=//configuration/appSettings/add[\[]@key='PrivateApiFileServerRelativePath'[\]] Node=value Name=value Value='..\!(loc.GcwaFolderNme)'/ /Component /Fragment This doesn't seem to work when I use both merge modules in an installer, and I get a warning when compiling: warning LGHT1055: The InstallExecuteSequence table contains an action 'SchedXmlConfig' which cannot be merged from the merge module 'blah'. This action is likely colliding with an action in the database that is being created. The colliding action may have been authored in the database or merged in from another merge module. If this is a standard action, it is likely colliding due to a difference in the condition for the action in the database and merge module. If this is a custom action, it should only be declared in the database or one merge module. warning LGHT1056: The CustomAction table contains a row with primary key(s) 'SchedXmlConfig' which cannot be merged from the merge module 'blah'. This is likely due to collision of rows with the same primary key(s) (but other different values in other columns) between the database and the merge module. warning LGHT1056: The CustomAction table contains a row with primary key(s) 'ExecXmlConfig' which cannot be merged from the merge module 'blah'. This is likely due to collision of rows with the same primary key(s) (but other different values in other columns) between the database and the merge module. warning LGHT1056: The CustomAction table contains a row with primary key(s) 'ExecXmlConfigRollback' which cannot be merged from the merge module 'blah'. This is likely due to collision of rows with the same primary key(s) (but other different values in other columns) between the database and the merge module. Obviously, when I try to install I get an error saying: SchedXmlConfig: Error 0x8007007a: failed to copy XmlConfig record Id SchedXmlConfig: Error 0x8007007a: failed to read XmlConfig table Error 25540. There was a failure while configuring XML files. Any tips on how to resolve this? It's far easier to have the configuration within the merge module instead of the installer, since the MM's are used in multiple installers, and would not like to add the XmlConfig in every single installer if I can define it once in the MM and know that it will apply anywhere it's used Thanks, Stel This message is confidential and may be privileged. It is intended solely for the named addressee. If you are not the intended recipient, please inform us. Any unauthorised dissemination, distribution or copying hereof is prohibited. Formicary Limited registered office in England and Wales, address 1 Taillar Road, Hedon, East Yorkshire HU12 8GU, registration number 3894343, VAT number 747644304, does not guarantee that the integrity of this communication has been maintained nor that this
Re: [WiX-users] XmlConfig in multiple MergeModules
Figured this out. It was as simple as reducing the length an XmlConfig Id ('ConnectorServiceRelativePathDefinition') which was too long to handle -Original Message- From: Stelios Kyprou [mailto:stelios.kyp...@formicary.net] Sent: 15 June 2011 12:35 To: General discussion for Windows Installer XML toolset. Subject: [WiX-users] XmlConfig in multiple MergeModules Hello, I was wondering if it is possible to use XmlConfig in multiple merge modules, that will later be used in a single installer. For example, I have MergeModule1, which has: Fragment Component Id=appConfigEdit Guid={1F53A85E-07AD-47B5-890E- D6768A65E343} Directory=MANAGEMENTTOOLFOLDER KeyPath=yes util:XmlConfig Id='Modules' On='install' Action='create' Sequence='1' File='[#appConfigFile]' ElementPath=//configuration/appSettings/add[\[]@key='Modules'[\]] Node=value Name=value Value='[MODULES]'/ util:XmlConfig Id='ConnectorServiceRelativePathDefinition' On='install' Action='create' Sequence='2' File='[#appConfigFile]' ElementPath=//configuration/appSettings/add[\[]@key='ConnectorService FolderName'[\]] Node=value Name=value Value='..\!(loc.ConnectorFolderName)'/ /Component /Fragment MergeModule2 has the following Component: Fragment Component Id=appConfigEditing Guid={BC70F9B6-6CE1-4C49-8AB3- F7C36B616129} Directory=CONNECTORFOLDER KeyPath=yes util:XmlConfig Id='ModulesDefinition' On='install' Action='create' Sequence='1' File='[#file_E1F5BC4046FD48ADB558DE10AA3F4B50]' ElementPath=//configuration/appSettings/add[\[]@key='Modules'[\]] Node=value Name=value Value='[MODULES]'/ util:XmlConfig Id='GcwaRelativePathDefinition' On='install' Action='create' Sequence='2' File='[#file_E1F5BC4046FD48ADB558DE10AA3F4B50]' ElementPath=//configuration/appSettings/add[\[]@key='PrivateApiFileSer verRelativePath'[\]] Node=value Name=value Value='..\!(loc.GcwaFolderNme)'/ /Component /Fragment This doesn't seem to work when I use both merge modules in an installer, and I get a warning when compiling: warning LGHT1055: The InstallExecuteSequence table contains an action 'SchedXmlConfig' which cannot be merged from the merge module 'blah'. This action is likely colliding with an action in the database that is being created. The colliding action may have been authored in the database or merged in from another merge module. If this is a standard action, it is likely colliding due to a difference in the condition for the action in the database and merge module. If this is a custom action, it should only be declared in the database or one merge module. warning LGHT1056: The CustomAction table contains a row with primary key(s) 'SchedXmlConfig' which cannot be merged from the merge module 'blah'. This is likely due to collision of rows with the same primary key(s) (but other different values in other columns) between the database and the merge module. warning LGHT1056: The CustomAction table contains a row with primary key(s) 'ExecXmlConfig' which cannot be merged from the merge module 'blah'. This is likely due to collision of rows with the same primary key(s) (but other different values in other columns) between the database and the merge module. warning LGHT1056: The CustomAction table contains a row with primary key(s) 'ExecXmlConfigRollback' which cannot be merged from the merge module 'blah'. This is likely due to collision of rows with the same primary key(s) (but other different values in other columns) between the database and the merge module. Obviously, when I try to install I get an error saying: SchedXmlConfig: Error 0x8007007a: failed to copy XmlConfig record Id SchedXmlConfig: Error 0x8007007a: failed to read XmlConfig table Error 25540. There was a failure while configuring XML files. Any tips on how to resolve this? It's far easier to have the configuration within the merge module instead of the installer, since the MM's are used in multiple installers, and would not like to add the XmlConfig in every single installer if I can define it once in the MM and know that it will apply anywhere it's used Thanks, Stel This message is confidential and may be privileged. It is intended solely for the named addressee. If you are not the intended recipient