diff options
author | Rob Mensching <rob@firegiant.com> | 2017-12-27 22:58:19 -0800 |
---|---|---|
committer | Rob Mensching <rob@firegiant.com> | 2017-12-27 22:58:19 -0800 |
commit | 58b8be53fd966e3d475362912477a422f5b5aa11 (patch) | |
tree | d6bb3edd0d4e7344777de802b32151f35987884a /src | |
parent | fe7112d862cab6ba28ee40e5539de8e297e0bbf2 (diff) | |
download | wix-58b8be53fd966e3d475362912477a422f5b5aa11.tar.gz wix-58b8be53fd966e3d475362912477a422f5b5aa11.tar.bz2 wix-58b8be53fd966e3d475362912477a422f5b5aa11.zip |
Correctly join command line arguments and other small clean up and optimizations
Diffstat (limited to 'src')
-rw-r--r-- | src/WixToolset.Core.WindowsInstaller/Bind/BindDatabaseCommand.cs | 83 | ||||
-rw-r--r-- | src/WixToolset.Core.WindowsInstaller/Bind/ModularizeCommand.cs (renamed from src/WixToolset.Core.WindowsInstaller/Bind/ModularaizeCommand.cs) | 13 | ||||
-rw-r--r-- | src/WixToolset.Core.WindowsInstaller/Bind/ProcessUncompressedFilesCommand.cs | 2 | ||||
-rw-r--r-- | src/WixToolset.Core/CommandLine/CommandLineParser.cs | 2 | ||||
-rw-r--r-- | src/WixToolset.Core/Librarian.cs | 2 | ||||
-rw-r--r-- | src/test/TestData/Example.Extension/ExampleTableDefinitions.cs | 1 |
6 files changed, 45 insertions, 58 deletions
diff --git a/src/WixToolset.Core.WindowsInstaller/Bind/BindDatabaseCommand.cs b/src/WixToolset.Core.WindowsInstaller/Bind/BindDatabaseCommand.cs index c47a1e56..205feeac 100644 --- a/src/WixToolset.Core.WindowsInstaller/Bind/BindDatabaseCommand.cs +++ b/src/WixToolset.Core.WindowsInstaller/Bind/BindDatabaseCommand.cs | |||
@@ -39,7 +39,7 @@ namespace WixToolset.Core.WindowsInstaller.Bind | |||
39 | this.PdbFile = context.OutputPdbPath; | 39 | this.PdbFile = context.OutputPdbPath; |
40 | this.IntermediateFolder = context.IntermediateFolder; | 40 | this.IntermediateFolder = context.IntermediateFolder; |
41 | this.Validator = validator; | 41 | this.Validator = validator; |
42 | 42 | ||
43 | this.BackendExtensions = backendExtension; | 43 | this.BackendExtensions = backendExtension; |
44 | } | 44 | } |
45 | 45 | ||
@@ -90,6 +90,7 @@ namespace WixToolset.Core.WindowsInstaller.Bind | |||
90 | 90 | ||
91 | var fileTransfers = new List<FileTransfer>(); | 91 | var fileTransfers = new List<FileTransfer>(); |
92 | 92 | ||
93 | var containsMergeModules = false; | ||
93 | var suppressedTableNames = new HashSet<string>(); | 94 | var suppressedTableNames = new HashSet<string>(); |
94 | 95 | ||
95 | // If there are any fields to resolve later, create the cache to populate during bind. | 96 | // If there are any fields to resolve later, create the cache to populate during bind. |
@@ -209,7 +210,7 @@ namespace WixToolset.Core.WindowsInstaller.Bind | |||
209 | command.Execute(); | 210 | command.Execute(); |
210 | } | 211 | } |
211 | 212 | ||
212 | // Gather information about files that did not come from merge modules (i.e. rows with a reference to the File table). | 213 | // Gather information about files that do not come from merge modules. |
213 | { | 214 | { |
214 | var command = new UpdateFileFacadesCommand(this.Messaging, section); | 215 | var command = new UpdateFileFacadesCommand(this.Messaging, section); |
215 | command.FileFacades = fileFacades; | 216 | command.FileFacades = fileFacades; |
@@ -233,13 +234,15 @@ namespace WixToolset.Core.WindowsInstaller.Bind | |||
233 | command.Execute(); | 234 | command.Execute(); |
234 | } | 235 | } |
235 | 236 | ||
237 | // Retrieve file information from merge modules. | ||
236 | if (SectionType.Product == section.Type) | 238 | if (SectionType.Product == section.Type) |
237 | { | 239 | { |
238 | // Retrieve files and their information from merge modules. | ||
239 | var wixMergeTuples = section.Tuples.OfType<WixMergeTuple>().ToList(); | 240 | var wixMergeTuples = section.Tuples.OfType<WixMergeTuple>().ToList(); |
240 | 241 | ||
241 | if (wixMergeTuples.Any()) | 242 | if (wixMergeTuples.Any()) |
242 | { | 243 | { |
244 | containsMergeModules = true; | ||
245 | |||
243 | var command = new ExtractMergeModuleFilesCommand(this.Messaging, section, wixMergeTuples); | 246 | var command = new ExtractMergeModuleFilesCommand(this.Messaging, section, wixMergeTuples); |
244 | command.FileFacades = fileFacades; | 247 | command.FileFacades = fileFacades; |
245 | command.OutputInstallerVersion = installerVersion; | 248 | command.OutputInstallerVersion = installerVersion; |
@@ -266,11 +269,6 @@ namespace WixToolset.Core.WindowsInstaller.Bind | |||
266 | return; | 269 | return; |
267 | } | 270 | } |
268 | 271 | ||
269 | #if TODO_FIX_INSTANCE_TRANSFORM | ||
270 | // With the Component Guids set now we can create instance transforms. | ||
271 | this.CreateInstanceTransforms(this.Output); | ||
272 | #endif | ||
273 | |||
274 | // Assign files to media. | 272 | // Assign files to media. |
275 | Dictionary<int, MediaTuple> assignedMediaRows; | 273 | Dictionary<int, MediaTuple> assignedMediaRows; |
276 | Dictionary<MediaTuple, IEnumerable<FileFacade>> filesByCabinetMedia; | 274 | Dictionary<MediaTuple, IEnumerable<FileFacade>> filesByCabinetMedia; |
@@ -292,7 +290,7 @@ namespace WixToolset.Core.WindowsInstaller.Bind | |||
292 | return; | 290 | return; |
293 | } | 291 | } |
294 | 292 | ||
295 | // Try to put as much above here as possible, updating the IR is better. | 293 | // Time to create the output object. Try to put as much above here as possible, updating the IR is better. |
296 | Output output; | 294 | Output output; |
297 | { | 295 | { |
298 | var command = new CreateOutputFromIRCommand(section, this.TableDefinitions, this.BackendExtensions); | 296 | var command = new CreateOutputFromIRCommand(section, this.TableDefinitions, this.BackendExtensions); |
@@ -307,12 +305,18 @@ namespace WixToolset.Core.WindowsInstaller.Bind | |||
307 | command.Execute(); | 305 | command.Execute(); |
308 | } | 306 | } |
309 | 307 | ||
310 | // Modularize identifiers and add tables with real streams to the import tables. | 308 | // Modularize identifiers. |
311 | if (OutputType.Module == output.Type) | 309 | if (OutputType.Module == output.Type) |
312 | { | 310 | { |
313 | var command = new ModularaizeCommand(output, modularizationGuid, section.Tuples.OfType<WixSuppressModularizationTuple>()); | 311 | var command = new ModularizeCommand(output, modularizationGuid, section.Tuples.OfType<WixSuppressModularizationTuple>()); |
314 | command.Execute(); | 312 | command.Execute(); |
315 | } | 313 | } |
314 | else // we can create instance transforms since Component Guids are set. | ||
315 | { | ||
316 | #if TODO_FIX_INSTANCE_TRANSFORM | ||
317 | this.CreateInstanceTransforms(this.Output); | ||
318 | #endif | ||
319 | } | ||
316 | 320 | ||
317 | #if TODO_FINISH_UPDATE | 321 | #if TODO_FINISH_UPDATE |
318 | // Extended binder extensions can be called now that fields are resolved. | 322 | // Extended binder extensions can be called now that fields are resolved. |
@@ -367,7 +371,7 @@ namespace WixToolset.Core.WindowsInstaller.Bind | |||
367 | } | 371 | } |
368 | 372 | ||
369 | // create cabinet files and process uncompressed files | 373 | // create cabinet files and process uncompressed files |
370 | string layoutDirectory = Path.GetDirectoryName(this.OutputPath); | 374 | var layoutDirectory = Path.GetDirectoryName(this.OutputPath); |
371 | if (!this.SuppressLayout || OutputType.Module == output.Type) | 375 | if (!this.SuppressLayout || OutputType.Module == output.Type) |
372 | { | 376 | { |
373 | this.Messaging.Write(VerboseMessages.CreatingCabinetFiles()); | 377 | this.Messaging.Write(VerboseMessages.CreatingCabinetFiles()); |
@@ -399,36 +403,6 @@ namespace WixToolset.Core.WindowsInstaller.Bind | |||
399 | } | 403 | } |
400 | #endif | 404 | #endif |
401 | 405 | ||
402 | // Add back suppressed tables which must be present prior to merging in modules. | ||
403 | if (OutputType.Product == output.Type) | ||
404 | { | ||
405 | Table wixMergeTable = output.Tables["WixMerge"]; | ||
406 | |||
407 | if (null != wixMergeTable && 0 < wixMergeTable.Rows.Count) | ||
408 | { | ||
409 | foreach (SequenceTable sequence in Enum.GetValues(typeof(SequenceTable))) | ||
410 | { | ||
411 | string sequenceTableName = sequence.ToString(); | ||
412 | Table sequenceTable = output.Tables[sequenceTableName]; | ||
413 | |||
414 | if (null == sequenceTable) | ||
415 | { | ||
416 | sequenceTable = output.EnsureTable(this.TableDefinitions[sequenceTableName]); | ||
417 | } | ||
418 | |||
419 | if (0 == sequenceTable.Rows.Count) | ||
420 | { | ||
421 | suppressedTableNames.Add(sequenceTableName); | ||
422 | } | ||
423 | } | ||
424 | } | ||
425 | } | ||
426 | |||
427 | //foreach (BinderExtension extension in this.Extensions) | ||
428 | //{ | ||
429 | // extension.PostBind(this.Context); | ||
430 | //} | ||
431 | |||
432 | this.ValidateComponentGuids(output); | 406 | this.ValidateComponentGuids(output); |
433 | 407 | ||
434 | // stop processing if an error previously occurred | 408 | // stop processing if an error previously occurred |
@@ -455,18 +429,37 @@ namespace WixToolset.Core.WindowsInstaller.Bind | |||
455 | } | 429 | } |
456 | 430 | ||
457 | // Output the output to a file. | 431 | // Output the output to a file. |
458 | Pdb pdb = new Pdb(); | ||
459 | pdb.Output = output; | ||
460 | if (!String.IsNullOrEmpty(this.PdbFile)) | 432 | if (!String.IsNullOrEmpty(this.PdbFile)) |
461 | { | 433 | { |
434 | Pdb pdb = new Pdb(); | ||
435 | pdb.Output = output; | ||
462 | pdb.Save(this.PdbFile); | 436 | pdb.Save(this.PdbFile); |
463 | } | 437 | } |
464 | 438 | ||
465 | // Merge modules. | 439 | // Merge modules. |
466 | if (OutputType.Product == output.Type) | 440 | if (containsMergeModules) |
467 | { | 441 | { |
468 | this.Messaging.Write(VerboseMessages.MergingModules()); | 442 | this.Messaging.Write(VerboseMessages.MergingModules()); |
469 | 443 | ||
444 | // Add back possibly suppressed sequence tables since all sequence tables must be present | ||
445 | // for the merge process to work. We'll drop the suppressed sequence tables again as | ||
446 | // necessary. | ||
447 | foreach (SequenceTable sequence in Enum.GetValues(typeof(SequenceTable))) | ||
448 | { | ||
449 | var sequenceTableName = sequence.ToString(); | ||
450 | var sequenceTable = output.Tables[sequenceTableName]; | ||
451 | |||
452 | if (null == sequenceTable) | ||
453 | { | ||
454 | sequenceTable = output.EnsureTable(this.TableDefinitions[sequenceTableName]); | ||
455 | } | ||
456 | |||
457 | if (0 == sequenceTable.Rows.Count) | ||
458 | { | ||
459 | suppressedTableNames.Add(sequenceTableName); | ||
460 | } | ||
461 | } | ||
462 | |||
470 | var command = new MergeModulesCommand(); | 463 | var command = new MergeModulesCommand(); |
471 | command.FileFacades = fileFacades; | 464 | command.FileFacades = fileFacades; |
472 | command.Output = output; | 465 | command.Output = output; |
diff --git a/src/WixToolset.Core.WindowsInstaller/Bind/ModularaizeCommand.cs b/src/WixToolset.Core.WindowsInstaller/Bind/ModularizeCommand.cs index 8c6e3831..ba6af986 100644 --- a/src/WixToolset.Core.WindowsInstaller/Bind/ModularaizeCommand.cs +++ b/src/WixToolset.Core.WindowsInstaller/Bind/ModularizeCommand.cs | |||
@@ -13,9 +13,9 @@ namespace WixToolset.Core.WindowsInstaller.Bind | |||
13 | using WixToolset.Data.Tuples; | 13 | using WixToolset.Data.Tuples; |
14 | using WixToolset.Data.WindowsInstaller; | 14 | using WixToolset.Data.WindowsInstaller; |
15 | 15 | ||
16 | internal class ModularaizeCommand | 16 | internal class ModularizeCommand |
17 | { | 17 | { |
18 | public ModularaizeCommand(Output output, string modularizationGuid, IEnumerable<WixSuppressModularizationTuple> suppressTuples) | 18 | public ModularizeCommand(Output output, string modularizationGuid, IEnumerable<WixSuppressModularizationTuple> suppressTuples) |
19 | { | 19 | { |
20 | this.Output = output; | 20 | this.Output = output; |
21 | this.ModularizationGuid = modularizationGuid; | 21 | this.ModularizationGuid = modularizationGuid; |
@@ -38,12 +38,7 @@ namespace WixToolset.Core.WindowsInstaller.Bind | |||
38 | } | 38 | } |
39 | } | 39 | } |
40 | 40 | ||
41 | /// <summary> | 41 | private void ModularizeTable(Table table) |
42 | /// Modularize the table. | ||
43 | /// </summary> | ||
44 | /// <param name="modularizationGuid">String containing the GUID of the Merge Module, if appropriate.</param> | ||
45 | /// <param name="suppressModularizationIdentifiers">Optional collection of identifiers that should not be modularized.</param> | ||
46 | public void ModularizeTable(Table table) | ||
47 | { | 42 | { |
48 | var modularizedColumns = new List<int>(); | 43 | var modularizedColumns = new List<int>(); |
49 | 44 | ||
@@ -79,7 +74,7 @@ namespace WixToolset.Core.WindowsInstaller.Bind | |||
79 | 74 | ||
80 | if (!(WindowsInstallerStandard.IsStandardAction(fieldData) || WindowsInstallerStandard.IsStandardProperty(fieldData))) | 75 | if (!(WindowsInstallerStandard.IsStandardAction(fieldData) || WindowsInstallerStandard.IsStandardProperty(fieldData))) |
81 | { | 76 | { |
82 | ColumnModularizeType modularizeType = field.Column.ModularizeType; | 77 | var modularizeType = field.Column.ModularizeType; |
83 | 78 | ||
84 | // special logic for the ControlEvent table's Argument column | 79 | // special logic for the ControlEvent table's Argument column |
85 | // this column requires different modularization methods depending upon the value of the Event column | 80 | // this column requires different modularization methods depending upon the value of the Event column |
diff --git a/src/WixToolset.Core.WindowsInstaller/Bind/ProcessUncompressedFilesCommand.cs b/src/WixToolset.Core.WindowsInstaller/Bind/ProcessUncompressedFilesCommand.cs index 39771508..56c86b11 100644 --- a/src/WixToolset.Core.WindowsInstaller/Bind/ProcessUncompressedFilesCommand.cs +++ b/src/WixToolset.Core.WindowsInstaller/Bind/ProcessUncompressedFilesCommand.cs | |||
@@ -41,7 +41,7 @@ namespace WixToolset.Core.WindowsInstaller.Bind | |||
41 | 41 | ||
42 | public void Execute() | 42 | public void Execute() |
43 | { | 43 | { |
44 | List<FileTransfer> fileTransfers = new List<FileTransfer>(); | 44 | var fileTransfers = new List<FileTransfer>(); |
45 | 45 | ||
46 | var directories = new Dictionary<string, ResolvedDirectory>(); | 46 | var directories = new Dictionary<string, ResolvedDirectory>(); |
47 | 47 | ||
diff --git a/src/WixToolset.Core/CommandLine/CommandLineParser.cs b/src/WixToolset.Core/CommandLine/CommandLineParser.cs index 017810e0..3c7f3d1e 100644 --- a/src/WixToolset.Core/CommandLine/CommandLineParser.cs +++ b/src/WixToolset.Core/CommandLine/CommandLineParser.cs | |||
@@ -54,7 +54,7 @@ namespace WixToolset.Core.CommandLine | |||
54 | 54 | ||
55 | if (!String.IsNullOrEmpty(context.Arguments)) | 55 | if (!String.IsNullOrEmpty(context.Arguments)) |
56 | { | 56 | { |
57 | args = CommandLineParser.ParseArgumentsToArray(context.Arguments).Union(args).ToArray(); | 57 | args = CommandLineParser.ParseArgumentsToArray(context.Arguments).Concat(args).ToArray(); |
58 | } | 58 | } |
59 | 59 | ||
60 | return this.ParseStandardCommandLine(context, args); | 60 | return this.ParseStandardCommandLine(context, args); |
diff --git a/src/WixToolset.Core/Librarian.cs b/src/WixToolset.Core/Librarian.cs index 3e843070..f4191e86 100644 --- a/src/WixToolset.Core/Librarian.cs +++ b/src/WixToolset.Core/Librarian.cs | |||
@@ -143,7 +143,7 @@ namespace WixToolset.Core | |||
143 | 143 | ||
144 | foreach (var tuple in sections.SelectMany(s => s.Tuples)) | 144 | foreach (var tuple in sections.SelectMany(s => s.Tuples)) |
145 | { | 145 | { |
146 | foreach (var field in tuple.Fields.Where(f => f.Type == IntermediateFieldType.Path)) | 146 | foreach (var field in tuple.Fields.Where(f => f?.Type == IntermediateFieldType.Path)) |
147 | { | 147 | { |
148 | var pathField = field.AsPath(); | 148 | var pathField = field.AsPath(); |
149 | 149 | ||
diff --git a/src/test/TestData/Example.Extension/ExampleTableDefinitions.cs b/src/test/TestData/Example.Extension/ExampleTableDefinitions.cs index 16da1316..dbd6491b 100644 --- a/src/test/TestData/Example.Extension/ExampleTableDefinitions.cs +++ b/src/test/TestData/Example.Extension/ExampleTableDefinitions.cs | |||
@@ -2,7 +2,6 @@ | |||
2 | 2 | ||
3 | namespace Example.Extension | 3 | namespace Example.Extension |
4 | { | 4 | { |
5 | using System.Collections.Generic; | ||
6 | using WixToolset.Data.WindowsInstaller; | 5 | using WixToolset.Data.WindowsInstaller; |
7 | 6 | ||
8 | public static class ExampleTableDefinitions | 7 | public static class ExampleTableDefinitions |