aboutsummaryrefslogtreecommitdiff
path: root/src/WixToolset.Core.WindowsInstaller/Bind/CreateOutputFromIRCommand.cs
diff options
context:
space:
mode:
authorRob Mensching <rob@firegiant.com>2019-05-22 00:58:13 -0700
committerRob Mensching <rob@firegiant.com>2019-05-23 16:02:37 -0700
commitd0462be8000f18aa7dc0791d02142f000bb19fbf (patch)
tree072aabc2bd9b8f171e17654473f85c44a8a42a66 /src/WixToolset.Core.WindowsInstaller/Bind/CreateOutputFromIRCommand.cs
parent1ed894bc0f39397ec7f7f6344370fc2123420c43 (diff)
downloadwix-d0462be8000f18aa7dc0791d02142f000bb19fbf.tar.gz
wix-d0462be8000f18aa7dc0791d02142f000bb19fbf.tar.bz2
wix-d0462be8000f18aa7dc0791d02142f000bb19fbf.zip
Integrate latest changes to tuple definitions
Diffstat (limited to 'src/WixToolset.Core.WindowsInstaller/Bind/CreateOutputFromIRCommand.cs')
-rw-r--r--src/WixToolset.Core.WindowsInstaller/Bind/CreateOutputFromIRCommand.cs95
1 files changed, 85 insertions, 10 deletions
diff --git a/src/WixToolset.Core.WindowsInstaller/Bind/CreateOutputFromIRCommand.cs b/src/WixToolset.Core.WindowsInstaller/Bind/CreateOutputFromIRCommand.cs
index 6f33080d..e1781daf 100644
--- a/src/WixToolset.Core.WindowsInstaller/Bind/CreateOutputFromIRCommand.cs
+++ b/src/WixToolset.Core.WindowsInstaller/Bind/CreateOutputFromIRCommand.cs
@@ -14,6 +14,9 @@ namespace WixToolset.Core.WindowsInstaller.Bind
14 14
15 internal class CreateOutputFromIRCommand 15 internal class CreateOutputFromIRCommand
16 { 16 {
17 private const int DefaultMaximumUncompressedMediaSize = 200; // Default value is 200 MB
18 private const int MaxValueOfMaxCabSizeForLargeFileSplitting = 2 * 1024; // 2048 MB (i.e. 2 GB)
19
17 public CreateOutputFromIRCommand(IntermediateSection section, TableDefinitionCollection tableDefinitions, IEnumerable<IWindowsInstallerBackendBinderExtension> backendExtensions) 20 public CreateOutputFromIRCommand(IntermediateSection section, TableDefinitionCollection tableDefinitions, IEnumerable<IWindowsInstallerBackendBinderExtension> backendExtensions)
18 { 21 {
19 this.Section = section; 22 this.Section = section;
@@ -46,6 +49,10 @@ namespace WixToolset.Core.WindowsInstaller.Bind
46 { 49 {
47 switch (tuple.Definition.Type) 50 switch (tuple.Definition.Type)
48 { 51 {
52 case TupleDefinitionType.Binary:
53 this.AddTupleDefaultly(tuple, output, true);
54 break;
55
49 case TupleDefinitionType.BBControl: 56 case TupleDefinitionType.BBControl:
50 this.AddBBControlTuple((BBControlTuple)tuple, output); 57 this.AddBBControlTuple((BBControlTuple)tuple, output);
51 break; 58 break;
@@ -66,6 +73,10 @@ namespace WixToolset.Core.WindowsInstaller.Bind
66 this.AddDialogTuple((DialogTuple)tuple, output); 73 this.AddDialogTuple((DialogTuple)tuple, output);
67 break; 74 break;
68 75
76 case TupleDefinitionType.Directory:
77 this.AddDirectoryTuple((DirectoryTuple)tuple, output);
78 break;
79
69 case TupleDefinitionType.Environment: 80 case TupleDefinitionType.Environment:
70 this.AddEnvironmentTuple((EnvironmentTuple)tuple, output); 81 this.AddEnvironmentTuple((EnvironmentTuple)tuple, output);
71 break; 82 break;
@@ -102,14 +113,26 @@ namespace WixToolset.Core.WindowsInstaller.Bind
102 this.AddMsiServiceConfigFailureActionsTuple((MsiServiceConfigFailureActionsTuple)tuple, output); 113 this.AddMsiServiceConfigFailureActionsTuple((MsiServiceConfigFailureActionsTuple)tuple, output);
103 break; 114 break;
104 115
116 case TupleDefinitionType.MoveFile:
117 this.AddMoveFileTuple((MoveFileTuple)tuple, output);
118 break;
119
105 case TupleDefinitionType.Property: 120 case TupleDefinitionType.Property:
106 this.AddPropertyTuple((PropertyTuple)tuple, output); 121 this.AddPropertyTuple((PropertyTuple)tuple, output);
107 break; 122 break;
108 123
124 case TupleDefinitionType.RemoveFile:
125 this.AddRemoveFileTuple((RemoveFileTuple)tuple, output);
126 break;
127
109 case TupleDefinitionType.Registry: 128 case TupleDefinitionType.Registry:
110 this.AddRegistryTuple((RegistryTuple)tuple, output); 129 this.AddRegistryTuple((RegistryTuple)tuple, output);
111 break; 130 break;
112 131
132 case TupleDefinitionType.RegLocator:
133 this.AddRegLocatorTuple((RegLocatorTuple)tuple, output);
134 break;
135
113 case TupleDefinitionType.RemoveRegistry: 136 case TupleDefinitionType.RemoveRegistry:
114 this.AddRemoveRegistryTuple((RemoveRegistryTuple)tuple, output); 137 this.AddRemoveRegistryTuple((RemoveRegistryTuple)tuple, output);
115 break; 138 break;
@@ -138,10 +161,6 @@ namespace WixToolset.Core.WindowsInstaller.Bind
138 this.AddWixActionTuple((WixActionTuple)tuple, output); 161 this.AddWixActionTuple((WixActionTuple)tuple, output);
139 break; 162 break;
140 163
141 case TupleDefinitionType.WixMedia:
142 // Ignored.
143 break;
144
145 case TupleDefinitionType.WixMediaTemplate: 164 case TupleDefinitionType.WixMediaTemplate:
146 this.AddWixMediaTemplateTuple((WixMediaTemplateTuple)tuple, output); 165 this.AddWixMediaTemplateTuple((WixMediaTemplateTuple)tuple, output);
147 break; 166 break;
@@ -150,6 +169,12 @@ namespace WixToolset.Core.WindowsInstaller.Bind
150 this.AddTupleFromExtension(tuple, output); 169 this.AddTupleFromExtension(tuple, output);
151 break; 170 break;
152 171
172 // ignored.
173 case TupleDefinitionType.WixFile:
174 case TupleDefinitionType.WixComponentGroup:
175 case TupleDefinitionType.WixDeltaPatchFile:
176 break;
177
153 default: 178 default:
154 this.AddTupleDefaultly(tuple, output); 179 this.AddTupleDefaultly(tuple, output);
155 break; 180 break;
@@ -311,6 +336,15 @@ namespace WixToolset.Core.WindowsInstaller.Bind
311 row[9] = tuple.Control_Cancel; 336 row[9] = tuple.Control_Cancel;
312 } 337 }
313 338
339 private void AddDirectoryTuple(DirectoryTuple tuple, Output output)
340 {
341 var table = output.EnsureTable(this.TableDefinitions["Directory"]);
342 var row = table.CreateRow(tuple.SourceLineNumbers);
343 row[0] = tuple.Id.Id;
344 row[1] = tuple.Directory_Parent;
345 row[2] = tuple.DefaultDir;
346 }
347
314 private void AddEnvironmentTuple(EnvironmentTuple tuple, Output output) 348 private void AddEnvironmentTuple(EnvironmentTuple tuple, Output output)
315 { 349 {
316 var action = String.Empty; 350 var action = String.Empty;
@@ -373,7 +407,7 @@ namespace WixToolset.Core.WindowsInstaller.Bind
373 { 407 {
374 var table = output.EnsureTable(this.TableDefinitions["File"]); 408 var table = output.EnsureTable(this.TableDefinitions["File"]);
375 var row = (FileRow)table.CreateRow(tuple.SourceLineNumbers); 409 var row = (FileRow)table.CreateRow(tuple.SourceLineNumbers);
376 row.File = tuple.File; 410 row.File = tuple.Id.Id;
377 row.Component = tuple.Component_; 411 row.Component = tuple.Component_;
378 row.FileName = GetMsiFilenameValue(tuple.ShortFileName, tuple.LongFileName); 412 row.FileName = GetMsiFilenameValue(tuple.ShortFileName, tuple.LongFileName);
379 row.FileSize = tuple.FileSize; 413 row.FileSize = tuple.FileSize;
@@ -392,7 +426,7 @@ namespace WixToolset.Core.WindowsInstaller.Bind
392 426
393 private void AddIniFileTuple(IniFileTuple tuple, Output output) 427 private void AddIniFileTuple(IniFileTuple tuple, Output output)
394 { 428 {
395 string tableName = (InifFileActionType.AddLine == tuple.Action || InifFileActionType.AddTag == tuple.Action || InifFileActionType.CreateLine == tuple.Action) ? "IniFile" : "RemoveIniFile"; 429 var tableName = (InifFileActionType.AddLine == tuple.Action || InifFileActionType.AddTag == tuple.Action || InifFileActionType.CreateLine == tuple.Action) ? "IniFile" : "RemoveIniFile";
396 430
397 var table = output.EnsureTable(this.TableDefinitions[tableName]); 431 var table = output.EnsureTable(this.TableDefinitions[tableName]);
398 var row = table.CreateRow(tuple.SourceLineNumbers); 432 var row = table.CreateRow(tuple.SourceLineNumbers);
@@ -487,6 +521,19 @@ namespace WixToolset.Core.WindowsInstaller.Bind
487 row[8] = tuple.Component_; 521 row[8] = tuple.Component_;
488 } 522 }
489 523
524 private void AddMoveFileTuple(MoveFileTuple tuple, Output output)
525 {
526 var table = output.EnsureTable(this.TableDefinitions["MoveFile"]);
527 var row = table.CreateRow(tuple.SourceLineNumbers);
528 row[0] = tuple.Id.Id;
529 row[1] = tuple.Component_;
530 row[2] = tuple.SourceName;
531 row[3] = tuple.DestName;
532 row[4] = tuple.SourceFolder;
533 row[5] = tuple.DestFolder;
534 row[6] = tuple.Delete ? WindowsInstallerConstants.MsidbMoveFileOptionsMove : 0;
535 }
536
490 private void AddPropertyTuple(PropertyTuple tuple, Output output) 537 private void AddPropertyTuple(PropertyTuple tuple, Output output)
491 { 538 {
492 if (String.IsNullOrEmpty(tuple.Value)) 539 if (String.IsNullOrEmpty(tuple.Value))
@@ -496,10 +543,24 @@ namespace WixToolset.Core.WindowsInstaller.Bind
496 543
497 var table = output.EnsureTable(this.TableDefinitions["Property"]); 544 var table = output.EnsureTable(this.TableDefinitions["Property"]);
498 var row = (PropertyRow)table.CreateRow(tuple.SourceLineNumbers); 545 var row = (PropertyRow)table.CreateRow(tuple.SourceLineNumbers);
499 row.Property = tuple.Property; 546 row.Property = tuple.Id.Id;
500 row.Value = tuple.Value; 547 row.Value = tuple.Value;
501 } 548 }
502 549
550 private void AddRemoveFileTuple(RemoveFileTuple tuple, Output output)
551 {
552 var installMode = tuple.OnInstall == true ? WindowsInstallerConstants.MsidbRemoveFileInstallModeOnInstall : 0;
553 installMode |= tuple.OnUninstall == true ? WindowsInstallerConstants.MsidbRemoveFileInstallModeOnRemove : 0;
554
555 var table = output.EnsureTable(this.TableDefinitions["RemoveFile"]);
556 var row = table.CreateRow(tuple.SourceLineNumbers);
557 row[0] = tuple.Id.Id;
558 row[1] = tuple.Component_;
559 row[2] = tuple.FileName;
560 row[3] = tuple.DirProperty;
561 row[4] = installMode;
562 }
563
503 private void AddRegistryTuple(RegistryTuple tuple, Output output) 564 private void AddRegistryTuple(RegistryTuple tuple, Output output)
504 { 565 {
505 var value = tuple.Value; 566 var value = tuple.Value;
@@ -552,6 +613,20 @@ namespace WixToolset.Core.WindowsInstaller.Bind
552 row[5] = tuple.Component_; 613 row[5] = tuple.Component_;
553 } 614 }
554 615
616 private void AddRegLocatorTuple(RegLocatorTuple tuple, Output output)
617 {
618 var type = (int)tuple.Type;
619 type |= tuple.Win64 ? WindowsInstallerConstants.MsidbLocatorType64bit : 0;
620
621 var table = output.EnsureTable(this.TableDefinitions["RegLocator"]);
622 var row = table.CreateRow(tuple.SourceLineNumbers);
623 row[0] = tuple.Id.Id;
624 row[1] = tuple.Root;
625 row[2] = tuple.Key;
626 row[3] = tuple.Name;
627 row[4] = type;
628 }
629
555 private void AddRemoveRegistryTuple(RemoveRegistryTuple tuple, Output output) 630 private void AddRemoveRegistryTuple(RemoveRegistryTuple tuple, Output output)
556 { 631 {
557 if (tuple.Action == RemoveRegistryActionType.RemoveOnInstall) 632 if (tuple.Action == RemoveRegistryActionType.RemoveOnInstall)
@@ -684,7 +759,7 @@ namespace WixToolset.Core.WindowsInstaller.Bind
684 sequenceTableDefinition = this.TableDefinitions["AdminUISequence"]; 759 sequenceTableDefinition = this.TableDefinitions["AdminUISequence"];
685 } 760 }
686 break; 761 break;
687 case SequenceTable.AdvtExecuteSequence: 762 case SequenceTable.AdvertiseExecuteSequence:
688 if (OutputType.Module == output.Type) 763 if (OutputType.Module == output.Type)
689 { 764 {
690 output.EnsureTable(this.TableDefinitions["AdvtExecuteSequence"]); 765 output.EnsureTable(this.TableDefinitions["AdvtExecuteSequence"]);
@@ -754,8 +829,8 @@ namespace WixToolset.Core.WindowsInstaller.Bind
754 row.CompressionLevel = tuple.CompressionLevel; 829 row.CompressionLevel = tuple.CompressionLevel;
755 row.DiskPrompt = tuple.DiskPrompt; 830 row.DiskPrompt = tuple.DiskPrompt;
756 row.VolumeLabel = tuple.VolumeLabel; 831 row.VolumeLabel = tuple.VolumeLabel;
757 row.MaximumUncompressedMediaSize = tuple.MaximumUncompressedMediaSize; 832 row.MaximumUncompressedMediaSize = tuple.MaximumUncompressedMediaSize ?? DefaultMaximumUncompressedMediaSize;
758 row.MaximumCabinetSizeForLargeFileSplitting = tuple.MaximumCabinetSizeForLargeFileSplitting; 833 row.MaximumCabinetSizeForLargeFileSplitting = tuple.MaximumCabinetSizeForLargeFileSplitting ?? MaxValueOfMaxCabSizeForLargeFileSplitting;
759 } 834 }
760 835
761 private void AddTupleFromExtension(IntermediateTuple tuple, Output output) 836 private void AddTupleFromExtension(IntermediateTuple tuple, Output output)