diff options
| author | Rob Mensching <rob@firegiant.com> | 2019-05-22 00:58:13 -0700 |
|---|---|---|
| committer | Rob Mensching <rob@firegiant.com> | 2019-05-23 16:02:37 -0700 |
| commit | d0462be8000f18aa7dc0791d02142f000bb19fbf (patch) | |
| tree | 072aabc2bd9b8f171e17654473f85c44a8a42a66 /src/WixToolset.Core.WindowsInstaller/Bind/CreateOutputFromIRCommand.cs | |
| parent | 1ed894bc0f39397ec7f7f6344370fc2123420c43 (diff) | |
| download | wix-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.cs | 95 |
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) |
