diff options
| author | Rob Mensching <rob@firegiant.com> | 2020-05-22 14:53:27 -0700 |
|---|---|---|
| committer | Rob Mensching <rob@firegiant.com> | 2020-05-22 15:25:19 -0700 |
| commit | 6b30680fd7a712b45538c3f0a89d652f0457a893 (patch) | |
| tree | 46ef7f7d51de4189b7ef1af07dda3add16ad302f /src/WixToolset.Core.WindowsInstaller/Bind | |
| parent | 236f958468923f65a8f02e406601fb47e71cd58e (diff) | |
| download | wix-6b30680fd7a712b45538c3f0a89d652f0457a893.tar.gz wix-6b30680fd7a712b45538c3f0a89d652f0457a893.tar.bz2 wix-6b30680fd7a712b45538c3f0a89d652f0457a893.zip | |
Support merging merge modules
Diffstat (limited to 'src/WixToolset.Core.WindowsInstaller/Bind')
5 files changed, 15 insertions, 6 deletions
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 | |||
| 505 | // necessary. | 505 | // necessary. |
| 506 | foreach (SequenceTable sequence in Enum.GetValues(typeof(SequenceTable))) | 506 | foreach (SequenceTable sequence in Enum.GetValues(typeof(SequenceTable))) |
| 507 | { | 507 | { |
| 508 | var sequenceTableName = sequence.ToString(); | 508 | var sequenceTableName = (sequence == SequenceTable.AdvertiseExecuteSequence) ? "AdvtExecuteSequence" : sequence.ToString(); |
| 509 | var sequenceTable = output.Tables[sequenceTableName]; | 509 | var sequenceTable = output.Tables[sequenceTableName]; |
| 510 | 510 | ||
| 511 | if (null == sequenceTable) | 511 | if (null == sequenceTable) |
| @@ -519,8 +519,9 @@ namespace WixToolset.Core.WindowsInstaller.Bind | |||
| 519 | } | 519 | } |
| 520 | } | 520 | } |
| 521 | 521 | ||
| 522 | var command = new MergeModulesCommand(); | 522 | var command = new MergeModulesCommand(this.Messaging); |
| 523 | command.FileFacades = fileFacades; | 523 | command.FileFacades = fileFacades; |
| 524 | command.IntermediateFolder = this.IntermediateFolder; | ||
| 524 | command.Output = output; | 525 | command.Output = output; |
| 525 | command.OutputPath = this.OutputPath; | 526 | command.OutputPath = this.OutputPath; |
| 526 | command.SuppressedTableNames = suppressedTableNames; | 527 | 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 | |||
| 5 | using System; | 5 | using System; |
| 6 | using System.Collections; | 6 | using System.Collections; |
| 7 | using System.Globalization; | 7 | using System.Globalization; |
| 8 | using WixToolset.Core.Native; | ||
| 8 | using WixToolset.Core.WindowsInstaller.Msi; | 9 | using WixToolset.Core.WindowsInstaller.Msi; |
| 9 | 10 | ||
| 10 | /// <summary> | 11 | /// <summary> |
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 | |||
| 48 | { | 48 | { |
| 49 | var mergeModulesFileFacades = new List<FileFacade>(); | 49 | var mergeModulesFileFacades = new List<FileFacade>(); |
| 50 | 50 | ||
| 51 | var merge = MsmInterop.GetMsmMerge(); | 51 | var interop = new MsmInterop(); |
| 52 | var merge = interop.GetMsmMerge(); | ||
| 52 | 53 | ||
| 53 | // Index all of the file rows to be able to detect collisions with files in the Merge Modules. | 54 | // Index all of the file rows to be able to detect collisions with files in the Merge Modules. |
| 54 | // It may seem a bit expensive to build up this index solely for the purpose of checking collisions | 55 | // 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 | |||
| 9 | using System.Runtime.InteropServices; | 9 | using System.Runtime.InteropServices; |
| 10 | using System.Text; | 10 | using System.Text; |
| 11 | using WixToolset.Core.Bind; | 11 | using WixToolset.Core.Bind; |
| 12 | using WixToolset.Core.Native; | ||
| 12 | using WixToolset.Core.WindowsInstaller.Msi; | 13 | using WixToolset.Core.WindowsInstaller.Msi; |
| 13 | using WixToolset.Data; | 14 | using WixToolset.Data; |
| 14 | using WixToolset.Data.Tuples; | ||
| 15 | using WixToolset.Data.WindowsInstaller; | 15 | using WixToolset.Data.WindowsInstaller; |
| 16 | using WixToolset.Data.WindowsInstaller.Rows; | 16 | using WixToolset.Data.WindowsInstaller.Rows; |
| 17 | using WixToolset.Extensibility.Services; | 17 | using WixToolset.Extensibility.Services; |
| @@ -21,6 +21,11 @@ namespace WixToolset.Core.WindowsInstaller.Bind | |||
| 21 | /// </summary> | 21 | /// </summary> |
| 22 | internal class MergeModulesCommand | 22 | internal class MergeModulesCommand |
| 23 | { | 23 | { |
| 24 | public MergeModulesCommand(IMessaging messaging) | ||
| 25 | { | ||
| 26 | this.Messaging = messaging; | ||
| 27 | } | ||
| 28 | |||
| 24 | public IEnumerable<FileFacade> FileFacades { private get; set; } | 29 | public IEnumerable<FileFacade> FileFacades { private get; set; } |
| 25 | 30 | ||
| 26 | public IMessaging Messaging { private get; set; } | 31 | public IMessaging Messaging { private get; set; } |
| @@ -51,7 +56,8 @@ namespace WixToolset.Core.WindowsInstaller.Bind | |||
| 51 | string logPath = null; | 56 | string logPath = null; |
| 52 | try | 57 | try |
| 53 | { | 58 | { |
| 54 | merge = MsmInterop.GetMsmMerge(); | 59 | var interop = new MsmInterop(); |
| 60 | merge = interop.GetMsmMerge(); | ||
| 55 | 61 | ||
| 56 | logPath = Path.Combine(this.IntermediateFolder, "merge.log"); | 62 | logPath = Path.Combine(this.IntermediateFolder, "merge.log"); |
| 57 | merge.OpenLog(logPath); | 63 | 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 | |||
| 74 | 74 | ||
| 75 | patchGroup.Add(facade); | 75 | patchGroup.Add(facade); |
| 76 | } | 76 | } |
| 77 | else | 77 | else if (!facade.FromModule) |
| 78 | { | 78 | { |
| 79 | var fileRow = fileRows.Get(facade.Id); | 79 | var fileRow = fileRows.Get(facade.Id); |
| 80 | fileRow.Sequence = ++lastSequence; | 80 | fileRow.Sequence = ++lastSequence; |
