aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorBob Arnson <bob@firegiant.com>2023-12-31 17:08:45 -0500
committerBob Arnson <github@bobs.org>2023-12-31 17:52:55 -0500
commitd56481c18f831991cc36d9720e06ce6874f1bea1 (patch)
tree36d218b9e39989e7daae7c1b6ca2f2e26a884415 /src
parentc890f0e1a360d949d5e0b5d9ab619c4a78d9fbd3 (diff)
downloadwix-d56481c18f831991cc36d9720e06ce6874f1bea1.tar.gz
wix-d56481c18f831991cc36d9720e06ce6874f1bea1.tar.bz2
wix-d56481c18f831991cc36d9720e06ce6874f1bea1.zip
Rename IWindowsInstallerDecompileContext...
...TreatProductAsModule to KeepModularizationIds to better describe what it does. Fixes https://github.com/wixtoolset/issues/issues/7607.
Diffstat (limited to 'src')
-rw-r--r--src/api/wix/WixToolset.Extensibility/Data/IWindowsInstallerDecompileContext.cs2
-rw-r--r--src/wix/WixToolset.Core.WindowsInstaller/Decompile/Decompiler.cs8
-rw-r--r--src/wix/WixToolset.Core.WindowsInstaller/Melter.cs2
-rw-r--r--src/wix/WixToolset.Core.WindowsInstaller/WindowsInstallerDecompileContext.cs2
-rw-r--r--src/wix/WixToolset.Core.WindowsInstaller/WindowsInstallerDecompiler.cs12
-rw-r--r--src/wix/test/WixToolsetTest.CoreIntegration/DecompileFixture.cs4
6 files changed, 11 insertions, 19 deletions
diff --git a/src/api/wix/WixToolset.Extensibility/Data/IWindowsInstallerDecompileContext.cs b/src/api/wix/WixToolset.Extensibility/Data/IWindowsInstallerDecompileContext.cs
index 845c89a5..1d729b72 100644
--- a/src/api/wix/WixToolset.Extensibility/Data/IWindowsInstallerDecompileContext.cs
+++ b/src/api/wix/WixToolset.Extensibility/Data/IWindowsInstallerDecompileContext.cs
@@ -96,6 +96,6 @@ namespace WixToolset.Extensibility.Data
96 /// Gets or sets whether the decompiler should keep modularization 96 /// Gets or sets whether the decompiler should keep modularization
97 /// GUIDs (true) or remove them (default/false). 97 /// GUIDs (true) or remove them (default/false).
98 /// </summary> 98 /// </summary>
99 bool TreatProductAsModule { get; set; } 99 bool KeepModularizationIds { get; set; }
100 } 100 }
101} 101}
diff --git a/src/wix/WixToolset.Core.WindowsInstaller/Decompile/Decompiler.cs b/src/wix/WixToolset.Core.WindowsInstaller/Decompile/Decompiler.cs
index 71e1b22b..e3609b30 100644
--- a/src/wix/WixToolset.Core.WindowsInstaller/Decompile/Decompiler.cs
+++ b/src/wix/WixToolset.Core.WindowsInstaller/Decompile/Decompiler.cs
@@ -43,7 +43,7 @@ namespace WixToolset.Core.WindowsInstaller.Decompile
43 /// <summary> 43 /// <summary>
44 /// Creates a new decompiler object with a default set of table definitions. 44 /// Creates a new decompiler object with a default set of table definitions.
45 /// </summary> 45 /// </summary>
46 public Decompiler(IMessaging messaging, IBackendHelper backendHelper, IWindowsInstallerDecompilerHelper decompilerHelper, IEnumerable<IWindowsInstallerDecompilerExtension> extensions, IEnumerable<IExtensionData> extensionData, ISymbolDefinitionCreator creator, string baseSourcePath, bool suppressCustomTables, bool suppressDroppingEmptyTables, bool suppressRelativeActionSequencing, bool suppressUI, bool treatProductAsModule) 46 public Decompiler(IMessaging messaging, IBackendHelper backendHelper, IWindowsInstallerDecompilerHelper decompilerHelper, IEnumerable<IWindowsInstallerDecompilerExtension> extensions, IEnumerable<IExtensionData> extensionData, ISymbolDefinitionCreator creator, string baseSourcePath, bool suppressCustomTables, bool suppressDroppingEmptyTables, bool suppressRelativeActionSequencing, bool suppressUI, bool keepModularizationIds)
47 { 47 {
48 this.Messaging = messaging; 48 this.Messaging = messaging;
49 this.BackendHelper = backendHelper; 49 this.BackendHelper = backendHelper;
@@ -56,7 +56,7 @@ namespace WixToolset.Core.WindowsInstaller.Decompile
56 this.SuppressDroppingEmptyTables = suppressDroppingEmptyTables; 56 this.SuppressDroppingEmptyTables = suppressDroppingEmptyTables;
57 this.SuppressRelativeActionSequencing = suppressRelativeActionSequencing; 57 this.SuppressRelativeActionSequencing = suppressRelativeActionSequencing;
58 this.SuppressUI = suppressUI; 58 this.SuppressUI = suppressUI;
59 this.TreatProductAsModule = treatProductAsModule; 59 this.KeepModularizationIds = keepModularizationIds;
60 60
61 this.ExtensionsByTableName = new Dictionary<string, IWindowsInstallerDecompilerExtension>(); 61 this.ExtensionsByTableName = new Dictionary<string, IWindowsInstallerDecompilerExtension>();
62 this.StandardActions = WindowsInstallerStandard.StandardActions().ToDictionary(a => a.Id.Id); 62 this.StandardActions = WindowsInstallerStandard.StandardActions().ToDictionary(a => a.Id.Id);
@@ -88,7 +88,7 @@ namespace WixToolset.Core.WindowsInstaller.Decompile
88 88
89 private bool SuppressUI { get; } 89 private bool SuppressUI { get; }
90 90
91 private bool TreatProductAsModule { get; } 91 private bool KeepModularizationIds { get; }
92 92
93 private OutputType OutputType { get; set; } 93 private OutputType OutputType { get; set; }
94 94
@@ -1188,7 +1188,7 @@ namespace WixToolset.Core.WindowsInstaller.Decompile
1188 var fileName = xFile?.Attribute("Name")?.Value; 1188 var fileName = xFile?.Attribute("Name")?.Value;
1189 1189
1190 // set the source (done here because it requires information from the Directory table) 1190 // set the source (done here because it requires information from the Directory table)
1191 if (OutputType.Module == this.OutputType && !this.TreatProductAsModule) 1191 if (OutputType.Module == this.OutputType && !this.KeepModularizationIds)
1192 { 1192 {
1193 xFile.SetAttributeValue("Source", String.Concat(this.BaseSourcePath, Path.DirectorySeparatorChar, "File", Path.DirectorySeparatorChar, fileId, '.', this.ModularizationGuid.Substring(1, 36).Replace('-', '_'))); 1193 xFile.SetAttributeValue("Source", String.Concat(this.BaseSourcePath, Path.DirectorySeparatorChar, "File", Path.DirectorySeparatorChar, fileId, '.', this.ModularizationGuid.Substring(1, 36).Replace('-', '_')));
1194 } 1194 }
diff --git a/src/wix/WixToolset.Core.WindowsInstaller/Melter.cs b/src/wix/WixToolset.Core.WindowsInstaller/Melter.cs
index 7073e952..10a60eb8 100644
--- a/src/wix/WixToolset.Core.WindowsInstaller/Melter.cs
+++ b/src/wix/WixToolset.Core.WindowsInstaller/Melter.cs
@@ -85,7 +85,7 @@ namespace WixToolset
85 PreDecompile(wixout); 85 PreDecompile(wixout);
86 86
87 wixout.Type = OutputType.Package; 87 wixout.Type = OutputType.Package;
88 this.decompiler.TreatProductAsModule = true; 88 this.decompiler.KeepModularizationIds = true;
89 Wix.Wix wix = this.decompiler.Decompile(wixout); 89 Wix.Wix wix = this.decompiler.Decompile(wixout);
90 90
91 if (null == wix) 91 if (null == wix)
diff --git a/src/wix/WixToolset.Core.WindowsInstaller/WindowsInstallerDecompileContext.cs b/src/wix/WixToolset.Core.WindowsInstaller/WindowsInstallerDecompileContext.cs
index 22745ab0..13065fb5 100644
--- a/src/wix/WixToolset.Core.WindowsInstaller/WindowsInstallerDecompileContext.cs
+++ b/src/wix/WixToolset.Core.WindowsInstaller/WindowsInstallerDecompileContext.cs
@@ -49,6 +49,6 @@ namespace WixToolset.Core.WindowsInstaller
49 49
50 public bool SuppressUI { get; set; } 50 public bool SuppressUI { get; set; }
51 51
52 public bool TreatProductAsModule { get; set; } 52 public bool KeepModularizationIds { get; set; }
53 } 53 }
54} 54}
diff --git a/src/wix/WixToolset.Core.WindowsInstaller/WindowsInstallerDecompiler.cs b/src/wix/WixToolset.Core.WindowsInstaller/WindowsInstallerDecompiler.cs
index 267fe495..56ebd5f3 100644
--- a/src/wix/WixToolset.Core.WindowsInstaller/WindowsInstallerDecompiler.cs
+++ b/src/wix/WixToolset.Core.WindowsInstaller/WindowsInstallerDecompiler.cs
@@ -94,21 +94,13 @@ namespace WixToolset.Core.WindowsInstaller
94 var extractFilesFolder = context.SuppressExtractCabinets || (String.IsNullOrEmpty(context.CabinetExtractFolder) && String.IsNullOrEmpty(context.ExtractFolder)) ? null : 94 var extractFilesFolder = context.SuppressExtractCabinets || (String.IsNullOrEmpty(context.CabinetExtractFolder) && String.IsNullOrEmpty(context.ExtractFolder)) ? null :
95 String.IsNullOrEmpty(context.CabinetExtractFolder) ? Path.Combine(context.ExtractFolder, "File") : context.CabinetExtractFolder; 95 String.IsNullOrEmpty(context.CabinetExtractFolder) ? Path.Combine(context.ExtractFolder, "File") : context.CabinetExtractFolder;
96 96
97 // IWindowsInstallerDecompileContext.TreatProductAsModule is broken. So broken, in fact, 97 var demodularize = !context.KeepModularizationIds;
98 // that it's been broken since WiX v3.0 in 2008. It was introduced (according to lore)
99 // to support Melt, which decompiles merge modules into fragments so you can consume
100 // merge modules without actually going through the black box that is mergemod.dll. But
101 // the name is wrong: It's not TreatProductAsModule; if anything it should instead be
102 // TreatModuleAsProduct, though even that's wrong (because you want a fragment, not a
103 // product/package). In WiX v5, rename to `KeepModularizeIds` (or something better) to
104 // reflect the functionality.
105 var demodularize = !context.TreatProductAsModule;
106 var sectionType = context.DecompileType; 98 var sectionType = context.DecompileType;
107 var unbindCommand = new UnbindDatabaseCommand(this.Messaging, backendHelper, fileSystem, pathResolver, context.DecompilePath, null, sectionType, context.ExtractFolder, extractFilesFolder, context.IntermediateFolder, demodularize, skipSummaryInfo: false); 99 var unbindCommand = new UnbindDatabaseCommand(this.Messaging, backendHelper, fileSystem, pathResolver, context.DecompilePath, null, sectionType, context.ExtractFolder, extractFilesFolder, context.IntermediateFolder, demodularize, skipSummaryInfo: false);
108 var output = unbindCommand.Execute(); 100 var output = unbindCommand.Execute();
109 var extractedFilePaths = unbindCommand.ExportedFiles; 101 var extractedFilePaths = unbindCommand.ExportedFiles;
110 102
111 var decompiler = new Decompiler(this.Messaging, backendHelper, decompilerHelper, context.Extensions, context.ExtensionData, context.SymbolDefinitionCreator, context.BaseSourcePath, context.SuppressCustomTables, context.SuppressDroppingEmptyTables, context.SuppressRelativeActionSequencing, context.SuppressUI, context.TreatProductAsModule); 103 var decompiler = new Decompiler(this.Messaging, backendHelper, decompilerHelper, context.Extensions, context.ExtensionData, context.SymbolDefinitionCreator, context.BaseSourcePath, context.SuppressCustomTables, context.SuppressDroppingEmptyTables, context.SuppressRelativeActionSequencing, context.SuppressUI, context.KeepModularizationIds);
112 var document = decompiler.Decompile(output); 104 var document = decompiler.Decompile(output);
113 105
114 var result = context.ServiceProvider.GetService<IWindowsInstallerDecompileResult>(); 106 var result = context.ServiceProvider.GetService<IWindowsInstallerDecompileResult>();
diff --git a/src/wix/test/WixToolsetTest.CoreIntegration/DecompileFixture.cs b/src/wix/test/WixToolsetTest.CoreIntegration/DecompileFixture.cs
index 01882fef..86da7ebd 100644
--- a/src/wix/test/WixToolsetTest.CoreIntegration/DecompileFixture.cs
+++ b/src/wix/test/WixToolsetTest.CoreIntegration/DecompileFixture.cs
@@ -108,7 +108,7 @@ namespace WixToolsetTest.CoreIntegration
108 } 108 }
109 109
110 [Fact] 110 [Fact]
111 public void CanDecompileMergeModuleWithTreatProductAsModule() 111 public void CanDecompileMergeModuleWithKeepModularizationIds()
112 { 112 {
113 using (var fs = new DisposableFileSystem()) 113 using (var fs = new DisposableFileSystem())
114 { 114 {
@@ -127,7 +127,7 @@ namespace WixToolsetTest.CoreIntegration
127 context.ExtensionData = extensionManager.GetServices<IExtensionData>(); 127 context.ExtensionData = extensionManager.GetServices<IExtensionData>();
128 context.DecompilePath = Path.Combine(sourceFolder, "MergeModule1.msm"); 128 context.DecompilePath = Path.Combine(sourceFolder, "MergeModule1.msm");
129 context.DecompileType = OutputType.Module; 129 context.DecompileType = OutputType.Module;
130 context.TreatProductAsModule = true; 130 context.KeepModularizationIds = true;
131 context.IntermediateFolder = intermediateFolder; 131 context.IntermediateFolder = intermediateFolder;
132 context.ExtractFolder = outputFolder; 132 context.ExtractFolder = outputFolder;
133 context.CabinetExtractFolder = outputFolder; 133 context.CabinetExtractFolder = outputFolder;