From 6b30680fd7a712b45538c3f0a89d652f0457a893 Mon Sep 17 00:00:00 2001 From: Rob Mensching Date: Fri, 22 May 2020 14:53:27 -0700 Subject: Support merging merge modules --- .../Bind/BindDatabaseCommand.cs | 5 +++-- .../Bind/ConfigurationCallback.cs | 1 + .../Bind/ExtractMergeModuleFilesCommand.cs | 3 ++- .../Bind/MergeModulesCommand.cs | 10 ++++++++-- .../Bind/UpdateMediaSequencesCommand.cs | 2 +- 5 files changed, 15 insertions(+), 6 deletions(-) (limited to 'src/WixToolset.Core.WindowsInstaller/Bind') diff --git a/src/WixToolset.Core.WindowsInstaller/Bind/BindDatabaseCommand.cs b/src/WixToolset.Core.WindowsInstaller/Bind/BindDatabaseCommand.cs index 32da410f..22858d1f 100644 --- a/src/WixToolset.Core.WindowsInstaller/Bind/BindDatabaseCommand.cs +++ b/src/WixToolset.Core.WindowsInstaller/Bind/BindDatabaseCommand.cs @@ -505,7 +505,7 @@ namespace WixToolset.Core.WindowsInstaller.Bind // necessary. foreach (SequenceTable sequence in Enum.GetValues(typeof(SequenceTable))) { - var sequenceTableName = sequence.ToString(); + var sequenceTableName = (sequence == SequenceTable.AdvertiseExecuteSequence) ? "AdvtExecuteSequence" : sequence.ToString(); var sequenceTable = output.Tables[sequenceTableName]; if (null == sequenceTable) @@ -519,8 +519,9 @@ namespace WixToolset.Core.WindowsInstaller.Bind } } - var command = new MergeModulesCommand(); + var command = new MergeModulesCommand(this.Messaging); command.FileFacades = fileFacades; + command.IntermediateFolder = this.IntermediateFolder; command.Output = output; command.OutputPath = this.OutputPath; command.SuppressedTableNames = suppressedTableNames; diff --git a/src/WixToolset.Core.WindowsInstaller/Bind/ConfigurationCallback.cs b/src/WixToolset.Core.WindowsInstaller/Bind/ConfigurationCallback.cs index 0cc5996a..9a609463 100644 --- a/src/WixToolset.Core.WindowsInstaller/Bind/ConfigurationCallback.cs +++ b/src/WixToolset.Core.WindowsInstaller/Bind/ConfigurationCallback.cs @@ -5,6 +5,7 @@ namespace WixToolset.Core.WindowsInstaller.Bind using System; using System.Collections; using System.Globalization; + using WixToolset.Core.Native; using WixToolset.Core.WindowsInstaller.Msi; /// diff --git a/src/WixToolset.Core.WindowsInstaller/Bind/ExtractMergeModuleFilesCommand.cs b/src/WixToolset.Core.WindowsInstaller/Bind/ExtractMergeModuleFilesCommand.cs index 49b6a6f8..62f7fce3 100644 --- a/src/WixToolset.Core.WindowsInstaller/Bind/ExtractMergeModuleFilesCommand.cs +++ b/src/WixToolset.Core.WindowsInstaller/Bind/ExtractMergeModuleFilesCommand.cs @@ -48,7 +48,8 @@ namespace WixToolset.Core.WindowsInstaller.Bind { var mergeModulesFileFacades = new List(); - var merge = MsmInterop.GetMsmMerge(); + var interop = new MsmInterop(); + var merge = interop.GetMsmMerge(); // Index all of the file rows to be able to detect collisions with files in the Merge Modules. // It may seem a bit expensive to build up this index solely for the purpose of checking collisions diff --git a/src/WixToolset.Core.WindowsInstaller/Bind/MergeModulesCommand.cs b/src/WixToolset.Core.WindowsInstaller/Bind/MergeModulesCommand.cs index b90aecd1..cd6170d0 100644 --- a/src/WixToolset.Core.WindowsInstaller/Bind/MergeModulesCommand.cs +++ b/src/WixToolset.Core.WindowsInstaller/Bind/MergeModulesCommand.cs @@ -9,9 +9,9 @@ namespace WixToolset.Core.WindowsInstaller.Bind using System.Runtime.InteropServices; using System.Text; using WixToolset.Core.Bind; + using WixToolset.Core.Native; using WixToolset.Core.WindowsInstaller.Msi; using WixToolset.Data; - using WixToolset.Data.Tuples; using WixToolset.Data.WindowsInstaller; using WixToolset.Data.WindowsInstaller.Rows; using WixToolset.Extensibility.Services; @@ -21,6 +21,11 @@ namespace WixToolset.Core.WindowsInstaller.Bind /// internal class MergeModulesCommand { + public MergeModulesCommand(IMessaging messaging) + { + this.Messaging = messaging; + } + public IEnumerable FileFacades { private get; set; } public IMessaging Messaging { private get; set; } @@ -51,7 +56,8 @@ namespace WixToolset.Core.WindowsInstaller.Bind string logPath = null; try { - merge = MsmInterop.GetMsmMerge(); + var interop = new MsmInterop(); + merge = interop.GetMsmMerge(); logPath = Path.Combine(this.IntermediateFolder, "merge.log"); merge.OpenLog(logPath); diff --git a/src/WixToolset.Core.WindowsInstaller/Bind/UpdateMediaSequencesCommand.cs b/src/WixToolset.Core.WindowsInstaller/Bind/UpdateMediaSequencesCommand.cs index ae872f45..5d18a230 100644 --- a/src/WixToolset.Core.WindowsInstaller/Bind/UpdateMediaSequencesCommand.cs +++ b/src/WixToolset.Core.WindowsInstaller/Bind/UpdateMediaSequencesCommand.cs @@ -74,7 +74,7 @@ namespace WixToolset.Core.WindowsInstaller.Bind patchGroup.Add(facade); } - else + else if (!facade.FromModule) { var fileRow = fileRows.Get(facade.Id); fileRow.Sequence = ++lastSequence; -- cgit v1.2.3-55-g6feb