diff options
| author | Rob Mensching <rob@firegiant.com> | 2017-12-21 13:42:52 -0800 |
|---|---|---|
| committer | Rob Mensching <rob@firegiant.com> | 2017-12-21 13:42:52 -0800 |
| commit | dc9f4c329e6f55ce7595970463e0caf148096f4b (patch) | |
| tree | 86155ac36c76acda0a4b1673c77f54a9780c6885 /src/WixToolset.Core.WindowsInstaller | |
| parent | 155a6e96346e0cb3d9ab6f5372fa29b46ebaee89 (diff) | |
| download | wix-dc9f4c329e6f55ce7595970463e0caf148096f4b.tar.gz wix-dc9f4c329e6f55ce7595970463e0caf148096f4b.tar.bz2 wix-dc9f4c329e6f55ce7595970463e0caf148096f4b.zip | |
Support wixout and extract Resolve and Layout from Binder
Diffstat (limited to 'src/WixToolset.Core.WindowsInstaller')
15 files changed, 164 insertions, 114 deletions
diff --git a/src/WixToolset.Core.WindowsInstaller/Bind/BindDatabaseCommand.cs b/src/WixToolset.Core.WindowsInstaller/Bind/BindDatabaseCommand.cs index 410e462a..2f161305 100644 --- a/src/WixToolset.Core.WindowsInstaller/Bind/BindDatabaseCommand.cs +++ b/src/WixToolset.Core.WindowsInstaller/Bind/BindDatabaseCommand.cs | |||
| @@ -22,31 +22,27 @@ namespace WixToolset.Core.WindowsInstaller.Bind | |||
| 22 | // As outlined in RFC 4122, this is our namespace for generating name-based (version 3) UUIDs. | 22 | // As outlined in RFC 4122, this is our namespace for generating name-based (version 3) UUIDs. |
| 23 | internal static readonly Guid WixComponentGuidNamespace = new Guid("{3064E5C6-FB63-4FE9-AC49-E446A792EFA5}"); | 23 | internal static readonly Guid WixComponentGuidNamespace = new Guid("{3064E5C6-FB63-4FE9-AC49-E446A792EFA5}"); |
| 24 | 24 | ||
| 25 | public BindDatabaseCommand(IBindContext context, IEnumerable<IWindowsInstallerBackendExtension> backendExtension, Validator validator) | 25 | public BindDatabaseCommand(WixToolset.Extensibility.IBindContext context, IEnumerable<IWindowsInstallerBackendExtension> backendExtension, Validator validator) |
| 26 | { | 26 | { |
| 27 | this.TableDefinitions = WindowsInstallerStandardInternal.GetTableDefinitions(); | 27 | this.TableDefinitions = WindowsInstallerStandardInternal.GetTableDefinitions(); |
| 28 | 28 | ||
| 29 | this.BindPaths = context.BindPaths; | ||
| 30 | this.CabbingThreadCount = context.CabbingThreadCount; | 29 | this.CabbingThreadCount = context.CabbingThreadCount; |
| 31 | this.CabCachePath = context.CabCachePath; | 30 | this.CabCachePath = context.CabCachePath; |
| 32 | this.Codepage = context.Codepage; | 31 | this.Codepage = context.Codepage; |
| 33 | this.DefaultCompressionLevel = context.DefaultCompressionLevel; | 32 | this.DefaultCompressionLevel = context.DefaultCompressionLevel; |
| 34 | this.DelayedFields = context.DelayedFields; | 33 | this.DelayedFields = context.DelayedFields; |
| 35 | this.ExpectedEmbeddedFiles = context.ExpectedEmbeddedFiles; | 34 | this.ExpectedEmbeddedFiles = context.ExpectedEmbeddedFiles; |
| 36 | this.Extensions = context.Extensions; | 35 | this.FileSystemExtensions = context.FileSystemExtensions; |
| 37 | this.Intermediate = context.IntermediateRepresentation; | 36 | this.Intermediate = context.IntermediateRepresentation; |
| 38 | this.Messaging = context.Messaging; | 37 | this.Messaging = context.Messaging; |
| 39 | this.OutputPath = context.OutputPath; | 38 | this.OutputPath = context.OutputPath; |
| 40 | this.PdbFile = context.OutputPdbPath; | 39 | this.PdbFile = context.OutputPdbPath; |
| 41 | this.IntermediateFolder = context.IntermediateFolder; | 40 | this.IntermediateFolder = context.IntermediateFolder; |
| 42 | this.Validator = validator; | 41 | this.Validator = validator; |
| 43 | this.WixVariableResolver = context.WixVariableResolver; | 42 | |
| 44 | |||
| 45 | this.BackendExtensions = backendExtension; | 43 | this.BackendExtensions = backendExtension; |
| 46 | } | 44 | } |
| 47 | 45 | ||
| 48 | private IEnumerable<BindPath> BindPaths { get; } | ||
| 49 | |||
| 50 | private int Codepage { get; } | 46 | private int Codepage { get; } |
| 51 | 47 | ||
| 52 | private int CabbingThreadCount { get; } | 48 | private int CabbingThreadCount { get; } |
| @@ -59,12 +55,12 @@ namespace WixToolset.Core.WindowsInstaller.Bind | |||
| 59 | 55 | ||
| 60 | public IEnumerable<IExpectedExtractFile> ExpectedEmbeddedFiles { get; } | 56 | public IEnumerable<IExpectedExtractFile> ExpectedEmbeddedFiles { get; } |
| 61 | 57 | ||
| 58 | public IEnumerable<IFileSystemExtension> FileSystemExtensions { get; } | ||
| 59 | |||
| 62 | public bool DeltaBinaryPatch { get; set; } | 60 | public bool DeltaBinaryPatch { get; set; } |
| 63 | 61 | ||
| 64 | private IEnumerable<IWindowsInstallerBackendExtension> BackendExtensions { get; } | 62 | private IEnumerable<IWindowsInstallerBackendExtension> BackendExtensions { get; } |
| 65 | 63 | ||
| 66 | private IEnumerable<IBinderExtension> Extensions { get; } | ||
| 67 | |||
| 68 | private string PdbFile { get; } | 64 | private string PdbFile { get; } |
| 69 | 65 | ||
| 70 | private Intermediate Intermediate { get; } | 66 | private Intermediate Intermediate { get; } |
| @@ -83,7 +79,6 @@ namespace WixToolset.Core.WindowsInstaller.Bind | |||
| 83 | 79 | ||
| 84 | private Validator Validator { get; } | 80 | private Validator Validator { get; } |
| 85 | 81 | ||
| 86 | private IBindVariableResolver WixVariableResolver { get; } | ||
| 87 | 82 | ||
| 88 | public IEnumerable<FileTransfer> FileTransfers { get; private set; } | 83 | public IEnumerable<FileTransfer> FileTransfers { get; private set; } |
| 89 | 84 | ||
| @@ -100,8 +95,6 @@ namespace WixToolset.Core.WindowsInstaller.Bind | |||
| 100 | // If there are any fields to resolve later, create the cache to populate during bind. | 95 | // If there are any fields to resolve later, create the cache to populate during bind. |
| 101 | var variableCache = this.DelayedFields.Any() ? new Dictionary<string, string>(StringComparer.InvariantCultureIgnoreCase) : null; | 96 | var variableCache = this.DelayedFields.Any() ? new Dictionary<string, string>(StringComparer.InvariantCultureIgnoreCase) : null; |
| 102 | 97 | ||
| 103 | this.LocalizeUI(section); | ||
| 104 | |||
| 105 | // Process the summary information table before the other tables. | 98 | // Process the summary information table before the other tables. |
| 106 | bool compressed; | 99 | bool compressed; |
| 107 | bool longNames; | 100 | bool longNames; |
| @@ -534,85 +527,6 @@ namespace WixToolset.Core.WindowsInstaller.Bind | |||
| 534 | intermediate.Save(Path.ChangeExtension(this.OutputPath, "wir")); | 527 | intermediate.Save(Path.ChangeExtension(this.OutputPath, "wir")); |
| 535 | } | 528 | } |
| 536 | 529 | ||
| 537 | /// <summary> | ||
| 538 | /// Localize dialogs and controls. | ||
| 539 | /// </summary> | ||
| 540 | /// <param name="tables">The tables to localize.</param> | ||
| 541 | private void LocalizeUI(IntermediateSection section) | ||
| 542 | { | ||
| 543 | foreach (var row in section.Tuples.OfType<DialogTuple>()) | ||
| 544 | { | ||
| 545 | string dialog = row.Dialog; | ||
| 546 | |||
| 547 | if (this.WixVariableResolver.TryGetLocalizedControl(dialog, null, out LocalizedControl localizedControl)) | ||
| 548 | { | ||
| 549 | if (CompilerConstants.IntegerNotSet != localizedControl.X) | ||
| 550 | { | ||
| 551 | row.HCentering = localizedControl.X; | ||
| 552 | } | ||
| 553 | |||
| 554 | if (CompilerConstants.IntegerNotSet != localizedControl.Y) | ||
| 555 | { | ||
| 556 | row.VCentering = localizedControl.Y; | ||
| 557 | } | ||
| 558 | |||
| 559 | if (CompilerConstants.IntegerNotSet != localizedControl.Width) | ||
| 560 | { | ||
| 561 | row.Width = localizedControl.Width; | ||
| 562 | } | ||
| 563 | |||
| 564 | if (CompilerConstants.IntegerNotSet != localizedControl.Height) | ||
| 565 | { | ||
| 566 | row.Height = localizedControl.Height; | ||
| 567 | } | ||
| 568 | |||
| 569 | row.Attributes = row.Attributes | localizedControl.Attributes; | ||
| 570 | |||
| 571 | if (!String.IsNullOrEmpty(localizedControl.Text)) | ||
| 572 | { | ||
| 573 | row.Title = localizedControl.Text; | ||
| 574 | } | ||
| 575 | } | ||
| 576 | } | ||
| 577 | |||
| 578 | |||
| 579 | foreach (var row in section.Tuples.OfType<ControlTuple>()) | ||
| 580 | { | ||
| 581 | string dialog = row.Dialog_; | ||
| 582 | string control = row.Control; | ||
| 583 | |||
| 584 | if (this.WixVariableResolver.TryGetLocalizedControl(dialog, control, out LocalizedControl localizedControl)) | ||
| 585 | { | ||
| 586 | if (CompilerConstants.IntegerNotSet != localizedControl.X) | ||
| 587 | { | ||
| 588 | row.X = localizedControl.X; | ||
| 589 | } | ||
| 590 | |||
| 591 | if (CompilerConstants.IntegerNotSet != localizedControl.Y) | ||
| 592 | { | ||
| 593 | row.Y = localizedControl.Y; | ||
| 594 | } | ||
| 595 | |||
| 596 | if (CompilerConstants.IntegerNotSet != localizedControl.Width) | ||
| 597 | { | ||
| 598 | row.Width = localizedControl.Width; | ||
| 599 | } | ||
| 600 | |||
| 601 | if (CompilerConstants.IntegerNotSet != localizedControl.Height) | ||
| 602 | { | ||
| 603 | row.Height = localizedControl.Height; | ||
| 604 | } | ||
| 605 | |||
| 606 | row.Attributes = row.Attributes | localizedControl.Attributes; | ||
| 607 | |||
| 608 | if (!String.IsNullOrEmpty(localizedControl.Text)) | ||
| 609 | { | ||
| 610 | row.Text = localizedControl.Text; | ||
| 611 | } | ||
| 612 | } | ||
| 613 | } | ||
| 614 | } | ||
| 615 | |||
| 616 | #if TODO_FINISH_PATCH | 530 | #if TODO_FINISH_PATCH |
| 617 | /// <summary> | 531 | /// <summary> |
| 618 | /// Copy file data between transform substorages and the patch output object | 532 | /// Copy file data between transform substorages and the patch output object |
| @@ -984,7 +898,7 @@ namespace WixToolset.Core.WindowsInstaller.Bind | |||
| 984 | private void GenerateDatabase(Output output, string databaseFile, bool keepAddedColumns, bool useSubdirectory) | 898 | private void GenerateDatabase(Output output, string databaseFile, bool keepAddedColumns, bool useSubdirectory) |
| 985 | { | 899 | { |
| 986 | var command = new GenerateDatabaseCommand(); | 900 | var command = new GenerateDatabaseCommand(); |
| 987 | command.Extensions = this.Extensions; | 901 | command.Extensions = this.FileSystemExtensions; |
| 988 | command.Output = output; | 902 | command.Output = output; |
| 989 | command.OutputPath = databaseFile; | 903 | command.OutputPath = databaseFile; |
| 990 | command.KeepAddedColumns = keepAddedColumns; | 904 | command.KeepAddedColumns = keepAddedColumns; |
diff --git a/src/WixToolset.Core.WindowsInstaller/Bind/BindTransformCommand.cs b/src/WixToolset.Core.WindowsInstaller/Bind/BindTransformCommand.cs index 800ebac0..8cb0e0de 100644 --- a/src/WixToolset.Core.WindowsInstaller/Bind/BindTransformCommand.cs +++ b/src/WixToolset.Core.WindowsInstaller/Bind/BindTransformCommand.cs | |||
| @@ -15,7 +15,7 @@ namespace WixToolset.Core.WindowsInstaller.Bind | |||
| 15 | 15 | ||
| 16 | internal class BindTransformCommand | 16 | internal class BindTransformCommand |
| 17 | { | 17 | { |
| 18 | public IEnumerable<IBinderExtension> Extensions { private get; set; } | 18 | public IEnumerable<IFileSystemExtension> Extensions { private get; set; } |
| 19 | 19 | ||
| 20 | public TableDefinitionCollection TableDefinitions { private get; set; } | 20 | public TableDefinitionCollection TableDefinitions { private get; set; } |
| 21 | 21 | ||
diff --git a/src/WixToolset.Core.WindowsInstaller/Bind/CalculateComponentGuids.cs b/src/WixToolset.Core.WindowsInstaller/Bind/CalculateComponentGuids.cs index 056f92a7..76747728 100644 --- a/src/WixToolset.Core.WindowsInstaller/Bind/CalculateComponentGuids.cs +++ b/src/WixToolset.Core.WindowsInstaller/Bind/CalculateComponentGuids.cs | |||
| @@ -6,7 +6,6 @@ namespace WixToolset.Core.WindowsInstaller.Bind | |||
| 6 | using System.Collections.Generic; | 6 | using System.Collections.Generic; |
| 7 | using System.IO; | 7 | using System.IO; |
| 8 | using System.Linq; | 8 | using System.Linq; |
| 9 | using WixToolset.Bind; | ||
| 10 | using WixToolset.Core.Native; | 9 | using WixToolset.Core.Native; |
| 11 | using WixToolset.Data; | 10 | using WixToolset.Data; |
| 12 | using WixToolset.Data.Tuples; | 11 | using WixToolset.Data.Tuples; |
| @@ -135,7 +134,7 @@ namespace WixToolset.Core.WindowsInstaller.Bind | |||
| 135 | if (fileRow.File == componentRow.KeyPath) | 134 | if (fileRow.File == componentRow.KeyPath) |
| 136 | { | 135 | { |
| 137 | // calculate the key file's canonical target path | 136 | // calculate the key file's canonical target path |
| 138 | string directoryPath = Binder.GetDirectoryPath(targetPathsByDirectoryId, componentIdGenSeeds, componentRow.Directory_, true); | 137 | string directoryPath = PathResolver.GetDirectoryPath(targetPathsByDirectoryId, componentIdGenSeeds, componentRow.Directory_, true); |
| 139 | string fileName = Common.GetName(fileRow.LongFileName, false, true).ToLowerInvariant(); | 138 | string fileName = Common.GetName(fileRow.LongFileName, false, true).ToLowerInvariant(); |
| 140 | path = Path.Combine(directoryPath, fileName); | 139 | path = Path.Combine(directoryPath, fileName); |
| 141 | 140 | ||
diff --git a/src/WixToolset.Core.WindowsInstaller/Bind/CopyTransformDataCommand.cs b/src/WixToolset.Core.WindowsInstaller/Bind/CopyTransformDataCommand.cs index 13408312..6ff03941 100644 --- a/src/WixToolset.Core.WindowsInstaller/Bind/CopyTransformDataCommand.cs +++ b/src/WixToolset.Core.WindowsInstaller/Bind/CopyTransformDataCommand.cs | |||
| @@ -18,7 +18,7 @@ namespace WixToolset.Core.WindowsInstaller.Bind | |||
| 18 | { | 18 | { |
| 19 | public bool CopyOutFileRows { private get; set; } | 19 | public bool CopyOutFileRows { private get; set; } |
| 20 | 20 | ||
| 21 | public IEnumerable<IBinderExtension> Extensions { private get; set; } | 21 | public IEnumerable<IFileSystemExtension> Extensions { private get; set; } |
| 22 | 22 | ||
| 23 | public IMessaging Messaging { private get; set; } | 23 | public IMessaging Messaging { private get; set; } |
| 24 | 24 | ||
diff --git a/src/WixToolset.Core.WindowsInstaller/Bind/GenerateDatabaseCommand.cs b/src/WixToolset.Core.WindowsInstaller/Bind/GenerateDatabaseCommand.cs index ee7cc61b..cc920ac2 100644 --- a/src/WixToolset.Core.WindowsInstaller/Bind/GenerateDatabaseCommand.cs +++ b/src/WixToolset.Core.WindowsInstaller/Bind/GenerateDatabaseCommand.cs | |||
| @@ -19,7 +19,7 @@ namespace WixToolset.Core.WindowsInstaller.Bind | |||
| 19 | { | 19 | { |
| 20 | public int Codepage { private get; set; } | 20 | public int Codepage { private get; set; } |
| 21 | 21 | ||
| 22 | public IEnumerable<IBinderExtension> Extensions { private get; set; } | 22 | public IEnumerable<IFileSystemExtension> Extensions { private get; set; } |
| 23 | 23 | ||
| 24 | /// <summary> | 24 | /// <summary> |
| 25 | /// Whether to keep columns added in a transform. | 25 | /// Whether to keep columns added in a transform. |
diff --git a/src/WixToolset.Core.WindowsInstaller/Bind/PathResolver.cs b/src/WixToolset.Core.WindowsInstaller/Bind/PathResolver.cs new file mode 100644 index 00000000..492c9137 --- /dev/null +++ b/src/WixToolset.Core.WindowsInstaller/Bind/PathResolver.cs | |||
| @@ -0,0 +1,105 @@ | |||
| 1 | // Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. | ||
| 2 | |||
| 3 | namespace WixToolset.Core.WindowsInstaller.Bind | ||
| 4 | { | ||
| 5 | using System; | ||
| 6 | using System.Collections.Generic; | ||
| 7 | using System.IO; | ||
| 8 | using WixToolset.Data; | ||
| 9 | |||
| 10 | internal static class PathResolver | ||
| 11 | { | ||
| 12 | /// <summary> | ||
| 13 | /// Get the source path of a directory. | ||
| 14 | /// </summary> | ||
| 15 | /// <param name="directories">All cached directories.</param> | ||
| 16 | /// <param name="componentIdGenSeeds">Hash table of Component GUID generation seeds indexed by directory id.</param> | ||
| 17 | /// <param name="directory">Directory identifier.</param> | ||
| 18 | /// <param name="canonicalize">Canonicalize the path for standard directories.</param> | ||
| 19 | /// <returns>Source path of a directory.</returns> | ||
| 20 | public static string GetDirectoryPath(Dictionary<string, ResolvedDirectory> directories, Dictionary<string, string> componentIdGenSeeds, string directory, bool canonicalize) | ||
| 21 | { | ||
| 22 | if (!directories.TryGetValue(directory, out var resolvedDirectory)) | ||
| 23 | { | ||
| 24 | throw new WixException(ErrorMessages.ExpectedDirectory(directory)); | ||
| 25 | } | ||
| 26 | |||
| 27 | if (null == resolvedDirectory.Path) | ||
| 28 | { | ||
| 29 | if (null != componentIdGenSeeds && componentIdGenSeeds.ContainsKey(directory)) | ||
| 30 | { | ||
| 31 | resolvedDirectory.Path = (string)componentIdGenSeeds[directory]; | ||
| 32 | } | ||
| 33 | else if (canonicalize && WindowsInstallerStandard.IsStandardDirectory(directory)) | ||
| 34 | { | ||
| 35 | // when canonicalization is on, standard directories are treated equally | ||
| 36 | resolvedDirectory.Path = directory; | ||
| 37 | } | ||
| 38 | else | ||
| 39 | { | ||
| 40 | string name = resolvedDirectory.Name; | ||
| 41 | |||
| 42 | if (canonicalize) | ||
| 43 | { | ||
| 44 | name = name?.ToLowerInvariant(); | ||
| 45 | } | ||
| 46 | |||
| 47 | if (String.IsNullOrEmpty(resolvedDirectory.DirectoryParent)) | ||
| 48 | { | ||
| 49 | resolvedDirectory.Path = name; | ||
| 50 | } | ||
| 51 | else | ||
| 52 | { | ||
| 53 | string parentPath = GetDirectoryPath(directories, componentIdGenSeeds, resolvedDirectory.DirectoryParent, canonicalize); | ||
| 54 | |||
| 55 | if (null != resolvedDirectory.Name) | ||
| 56 | { | ||
| 57 | resolvedDirectory.Path = Path.Combine(parentPath, name); | ||
| 58 | } | ||
| 59 | else | ||
| 60 | { | ||
| 61 | resolvedDirectory.Path = parentPath; | ||
| 62 | } | ||
| 63 | } | ||
| 64 | } | ||
| 65 | } | ||
| 66 | |||
| 67 | return resolvedDirectory.Path; | ||
| 68 | } | ||
| 69 | |||
| 70 | /// <summary> | ||
| 71 | /// Gets the source path of a file. | ||
| 72 | /// </summary> | ||
| 73 | /// <param name="directories">All cached directories in <see cref="ResolvedDirectory"/>.</param> | ||
| 74 | /// <param name="directoryId">Parent directory identifier.</param> | ||
| 75 | /// <param name="fileName">File name (in long|source format).</param> | ||
| 76 | /// <param name="compressed">Specifies the package is compressed.</param> | ||
| 77 | /// <param name="useLongName">Specifies the package uses long file names.</param> | ||
| 78 | /// <returns>Source path of file relative to package directory.</returns> | ||
| 79 | public static string GetFileSourcePath(Dictionary<string, ResolvedDirectory> directories, string directoryId, string fileName, bool compressed, bool useLongName) | ||
| 80 | { | ||
| 81 | string fileSourcePath = Common.GetName(fileName, true, useLongName); | ||
| 82 | |||
| 83 | if (compressed) | ||
| 84 | { | ||
| 85 | // Use just the file name of the file since all uncompressed files must appear | ||
| 86 | // in the root of the image in a compressed package. | ||
| 87 | } | ||
| 88 | else | ||
| 89 | { | ||
| 90 | // Get the relative path of where we want the file to be layed out as specified | ||
| 91 | // in the Directory table. | ||
| 92 | string directoryPath = PathResolver.GetDirectoryPath(directories, null, directoryId, false); | ||
| 93 | fileSourcePath = Path.Combine(directoryPath, fileSourcePath); | ||
| 94 | } | ||
| 95 | |||
| 96 | // Strip off "SourceDir" if it's still on there. | ||
| 97 | if (fileSourcePath.StartsWith("SourceDir\\", StringComparison.Ordinal)) | ||
| 98 | { | ||
| 99 | fileSourcePath = fileSourcePath.Substring(10); | ||
| 100 | } | ||
| 101 | |||
| 102 | return fileSourcePath; | ||
| 103 | } | ||
| 104 | } | ||
| 105 | } | ||
diff --git a/src/WixToolset.Core.WindowsInstaller/Bind/ProcessUncompressedFilesCommand.cs b/src/WixToolset.Core.WindowsInstaller/Bind/ProcessUncompressedFilesCommand.cs index e1a26a67..39771508 100644 --- a/src/WixToolset.Core.WindowsInstaller/Bind/ProcessUncompressedFilesCommand.cs +++ b/src/WixToolset.Core.WindowsInstaller/Bind/ProcessUncompressedFilesCommand.cs | |||
| @@ -5,14 +5,13 @@ namespace WixToolset.Core.WindowsInstaller.Bind | |||
| 5 | using System; | 5 | using System; |
| 6 | using System.Collections.Generic; | 6 | using System.Collections.Generic; |
| 7 | using System.IO; | 7 | using System.IO; |
| 8 | using WixToolset.Data; | 8 | using System.Linq; |
| 9 | using WixToolset.Msi; | ||
| 10 | using WixToolset.Core.Native; | ||
| 11 | using WixToolset.Bind; | ||
| 12 | using WixToolset.Core.Bind; | 9 | using WixToolset.Core.Bind; |
| 10 | using WixToolset.Core.Native; | ||
| 11 | using WixToolset.Data; | ||
| 13 | using WixToolset.Data.Bind; | 12 | using WixToolset.Data.Bind; |
| 14 | using WixToolset.Data.Tuples; | 13 | using WixToolset.Data.Tuples; |
| 15 | using System.Linq; | 14 | using WixToolset.Msi; |
| 16 | 15 | ||
| 17 | /// <summary> | 16 | /// <summary> |
| 18 | /// Defines the file transfers necessary to layout the uncompressed files. | 17 | /// Defines the file transfers necessary to layout the uncompressed files. |
| @@ -100,7 +99,7 @@ namespace WixToolset.Core.WindowsInstaller.Bind | |||
| 100 | throw new WixException(ErrorMessages.FileIdentifierNotFound(facade.File.SourceLineNumbers, facade.File.File)); | 99 | throw new WixException(ErrorMessages.FileIdentifierNotFound(facade.File.SourceLineNumbers, facade.File.File)); |
| 101 | } | 100 | } |
| 102 | 101 | ||
| 103 | relativeFileLayoutPath = Binder.GetFileSourcePath(directories, fileRecord[1], fileRecord[2], this.Compressed, this.LongNamesInImage); | 102 | relativeFileLayoutPath = PathResolver.GetFileSourcePath(directories, fileRecord[1], fileRecord[2], this.Compressed, this.LongNamesInImage); |
| 104 | } | 103 | } |
| 105 | 104 | ||
| 106 | // finally put together the base media layout path and the relative file layout path | 105 | // finally put together the base media layout path and the relative file layout path |
diff --git a/src/WixToolset.Core.WindowsInstaller/Bind/ResolvedDirectory.cs b/src/WixToolset.Core.WindowsInstaller/Bind/ResolvedDirectory.cs new file mode 100644 index 00000000..e06321cf --- /dev/null +++ b/src/WixToolset.Core.WindowsInstaller/Bind/ResolvedDirectory.cs | |||
| @@ -0,0 +1,31 @@ | |||
| 1 | // Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. | ||
| 2 | |||
| 3 | namespace WixToolset.Core.WindowsInstaller.Bind | ||
| 4 | { | ||
| 5 | /// <summary> | ||
| 6 | /// Structure used for resolved directory information. | ||
| 7 | /// </summary> | ||
| 8 | internal struct ResolvedDirectory | ||
| 9 | { | ||
| 10 | /// <summary> | ||
| 11 | /// Constructor for ResolvedDirectory. | ||
| 12 | /// </summary> | ||
| 13 | /// <param name="directoryParent">Parent directory.</param> | ||
| 14 | /// <param name="name">The directory name.</param> | ||
| 15 | public ResolvedDirectory(string directoryParent, string name) | ||
| 16 | { | ||
| 17 | this.DirectoryParent = directoryParent; | ||
| 18 | this.Name = name; | ||
| 19 | this.Path = null; | ||
| 20 | } | ||
| 21 | |||
| 22 | /// <summary>The directory parent.</summary> | ||
| 23 | public string DirectoryParent { get; set; } | ||
| 24 | |||
| 25 | /// <summary>The name of this directory.</summary> | ||
| 26 | public string Name { get; set; } | ||
| 27 | |||
| 28 | /// <summary>The path of this directory.</summary> | ||
| 29 | public string Path { get; set; } | ||
| 30 | } | ||
| 31 | } | ||
diff --git a/src/WixToolset.Core.WindowsInstaller/MsiBackend.cs b/src/WixToolset.Core.WindowsInstaller/MsiBackend.cs index 4753677a..00f09db3 100644 --- a/src/WixToolset.Core.WindowsInstaller/MsiBackend.cs +++ b/src/WixToolset.Core.WindowsInstaller/MsiBackend.cs | |||
| @@ -12,9 +12,11 @@ namespace WixToolset.Core.WindowsInstaller | |||
| 12 | 12 | ||
| 13 | internal class MsiBackend : IBackend | 13 | internal class MsiBackend : IBackend |
| 14 | { | 14 | { |
| 15 | public BindResult Bind(IBindContext context) | 15 | public BindResult Bind(WixToolset.Extensibility.IBindContext context) |
| 16 | { | 16 | { |
| 17 | var backendExtensions = context.ExtensionManager.Create<IWindowsInstallerBackendExtension>(); | 17 | var extensionManager = context.ServiceProvider.GetService<IExtensionManager>(); |
| 18 | |||
| 19 | var backendExtensions = extensionManager.Create<IWindowsInstallerBackendExtension>(); | ||
| 18 | 20 | ||
| 19 | foreach (var extension in backendExtensions) | 21 | foreach (var extension in backendExtensions) |
| 20 | { | 22 | { |
| @@ -26,7 +28,7 @@ namespace WixToolset.Core.WindowsInstaller | |||
| 26 | var command = new BindDatabaseCommand(context, backendExtensions, validator); | 28 | var command = new BindDatabaseCommand(context, backendExtensions, validator); |
| 27 | command.Execute(); | 29 | command.Execute(); |
| 28 | 30 | ||
| 29 | var result = new BindResult(command.FileTransfers, command.ContentFilePaths); | 31 | var result = new BindResult { FileTransfers = command.FileTransfers, ContentFilePaths = command.ContentFilePaths }; |
| 30 | 32 | ||
| 31 | foreach (var extension in backendExtensions) | 33 | foreach (var extension in backendExtensions) |
| 32 | { | 34 | { |
diff --git a/src/WixToolset.Core.WindowsInstaller/MsmBackend.cs b/src/WixToolset.Core.WindowsInstaller/MsmBackend.cs index 2323f8dd..9c70860e 100644 --- a/src/WixToolset.Core.WindowsInstaller/MsmBackend.cs +++ b/src/WixToolset.Core.WindowsInstaller/MsmBackend.cs | |||
| @@ -11,9 +11,11 @@ namespace WixToolset.Core.WindowsInstaller | |||
| 11 | 11 | ||
| 12 | internal class MsmBackend : IBackend | 12 | internal class MsmBackend : IBackend |
| 13 | { | 13 | { |
| 14 | public BindResult Bind(IBindContext context) | 14 | public BindResult Bind(WixToolset.Extensibility.IBindContext context) |
| 15 | { | 15 | { |
| 16 | var backendExtensions = context.ExtensionManager.Create<IWindowsInstallerBackendExtension>(); | 16 | var extensionManager = context.ServiceProvider.GetService<IExtensionManager>(); |
| 17 | |||
| 18 | var backendExtensions = extensionManager.Create<IWindowsInstallerBackendExtension>(); | ||
| 17 | 19 | ||
| 18 | foreach (var extension in backendExtensions) | 20 | foreach (var extension in backendExtensions) |
| 19 | { | 21 | { |
| @@ -25,7 +27,7 @@ namespace WixToolset.Core.WindowsInstaller | |||
| 25 | var command = new BindDatabaseCommand(context, backendExtensions, validator); | 27 | var command = new BindDatabaseCommand(context, backendExtensions, validator); |
| 26 | command.Execute(); | 28 | command.Execute(); |
| 27 | 29 | ||
| 28 | var result = new BindResult(command.FileTransfers, command.ContentFilePaths); | 30 | var result = new BindResult { FileTransfers = command.FileTransfers, ContentFilePaths = command.ContentFilePaths }; |
| 29 | 31 | ||
| 30 | foreach (var extension in backendExtensions) | 32 | foreach (var extension in backendExtensions) |
| 31 | { | 33 | { |
diff --git a/src/WixToolset.Core.WindowsInstaller/MspBackend.cs b/src/WixToolset.Core.WindowsInstaller/MspBackend.cs index 8fb63665..5dbed241 100644 --- a/src/WixToolset.Core.WindowsInstaller/MspBackend.cs +++ b/src/WixToolset.Core.WindowsInstaller/MspBackend.cs | |||
| @@ -16,7 +16,7 @@ namespace WixToolset.Core.WindowsInstaller | |||
| 16 | 16 | ||
| 17 | internal class MspBackend : IBackend | 17 | internal class MspBackend : IBackend |
| 18 | { | 18 | { |
| 19 | public BindResult Bind(IBindContext context) | 19 | public BindResult Bind(WixToolset.Extensibility.IBindContext context) |
| 20 | { | 20 | { |
| 21 | throw new NotImplementedException(); | 21 | throw new NotImplementedException(); |
| 22 | } | 22 | } |
diff --git a/src/WixToolset.Core.WindowsInstaller/MstBackend.cs b/src/WixToolset.Core.WindowsInstaller/MstBackend.cs index 17617dbc..4eb0901c 100644 --- a/src/WixToolset.Core.WindowsInstaller/MstBackend.cs +++ b/src/WixToolset.Core.WindowsInstaller/MstBackend.cs | |||
| @@ -7,7 +7,6 @@ namespace WixToolset.Core.WindowsInstaller | |||
| 7 | using WixToolset.Data; | 7 | using WixToolset.Data; |
| 8 | using WixToolset.Data.Bind; | 8 | using WixToolset.Data.Bind; |
| 9 | using WixToolset.Extensibility; | 9 | using WixToolset.Extensibility; |
| 10 | using WixToolset.Extensibility.Services; | ||
| 11 | 10 | ||
| 12 | internal class MstBackend : IBackend | 11 | internal class MstBackend : IBackend |
| 13 | { | 12 | { |
diff --git a/src/WixToolset.Core.WindowsInstaller/Unbind/UnbindTranformCommand.cs b/src/WixToolset.Core.WindowsInstaller/Unbind/UnbindTranformCommand.cs index 2b018013..00e5a755 100644 --- a/src/WixToolset.Core.WindowsInstaller/Unbind/UnbindTranformCommand.cs +++ b/src/WixToolset.Core.WindowsInstaller/Unbind/UnbindTranformCommand.cs | |||
| @@ -244,7 +244,7 @@ namespace WixToolset.Core.WindowsInstaller.Unbind | |||
| 244 | private void GenerateDatabase(Output output, string databaseFile) | 244 | private void GenerateDatabase(Output output, string databaseFile) |
| 245 | { | 245 | { |
| 246 | var command = new GenerateDatabaseCommand(); | 246 | var command = new GenerateDatabaseCommand(); |
| 247 | command.Extensions = Array.Empty<IBinderExtension>(); | 247 | command.Extensions = Array.Empty<IFileSystemExtension>(); |
| 248 | command.Output = output; | 248 | command.Output = output; |
| 249 | command.OutputPath = databaseFile; | 249 | command.OutputPath = databaseFile; |
| 250 | command.KeepAddedColumns = true; | 250 | command.KeepAddedColumns = true; |
diff --git a/src/WixToolset.Core.WindowsInstaller/Validator.cs b/src/WixToolset.Core.WindowsInstaller/Validator.cs index d553cc71..5f41e88d 100644 --- a/src/WixToolset.Core.WindowsInstaller/Validator.cs +++ b/src/WixToolset.Core.WindowsInstaller/Validator.cs | |||
| @@ -324,7 +324,7 @@ namespace WixToolset.Core.WindowsInstaller | |||
| 324 | } | 324 | } |
| 325 | } | 325 | } |
| 326 | 326 | ||
| 327 | public static Validator CreateFromContext(IBindContext context, string cubeFilename) | 327 | public static Validator CreateFromContext(WixToolset.Extensibility.IBindContext context, string cubeFilename) |
| 328 | { | 328 | { |
| 329 | Validator validator = null; | 329 | Validator validator = null; |
| 330 | 330 | ||
diff --git a/src/WixToolset.Core.WindowsInstaller/WindowsInstallerBackendFactory.cs b/src/WixToolset.Core.WindowsInstaller/WindowsInstallerBackendFactory.cs index a7f58ed4..b66a4617 100644 --- a/src/WixToolset.Core.WindowsInstaller/WindowsInstallerBackendFactory.cs +++ b/src/WixToolset.Core.WindowsInstaller/WindowsInstallerBackendFactory.cs | |||
| @@ -5,7 +5,6 @@ namespace WixToolset.Core.WindowsInstaller | |||
| 5 | using System; | 5 | using System; |
| 6 | using System.IO; | 6 | using System.IO; |
| 7 | using WixToolset.Extensibility; | 7 | using WixToolset.Extensibility; |
| 8 | using WixToolset.Extensibility.Services; | ||
| 9 | 8 | ||
| 10 | internal class WindowsInstallerBackendFactory : IBackendFactory | 9 | internal class WindowsInstallerBackendFactory : IBackendFactory |
| 11 | { | 10 | { |
