aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSean Hall <r.sean.hall@gmail.com>2020-12-18 22:04:48 -0600
committerSean Hall <r.sean.hall@gmail.com>2020-12-18 23:58:30 -0600
commit0e71bdd637a6b3c34f18d4b3630d55fa4cdfd2a3 (patch)
tree697466ea42c21f6d996cf324eb191f2182300697
parent4e9b8c43ec5870d6aee75a95acd8a0de4ff4c1db (diff)
downloadwix-0e71bdd637a6b3c34f18d4b3630d55fa4cdfd2a3.tar.gz
wix-0e71bdd637a6b3c34f18d4b3630d55fa4cdfd2a3.tar.bz2
wix-0e71bdd637a6b3c34f18d4b3630d55fa4cdfd2a3.zip
Enable XML doc.
-rw-r--r--WixToolset.Core.sln14
-rw-r--r--src/CSharp.Build.props1
-rw-r--r--src/Directory.Build.targets8
-rw-r--r--src/WixToolset.Core.Burn/Bundles/BurnCommon.cs4
-rw-r--r--src/WixToolset.Core.Burn/Bundles/BurnReader.cs4
-rw-r--r--src/WixToolset.Core.Burn/Bundles/BurnWriter.cs5
-rw-r--r--src/WixToolset.Core.Burn/RowIndexedList.cs10
-rw-r--r--src/WixToolset.Core.Burn/WixToolset.Core.Burn.csproj5
-rw-r--r--src/WixToolset.Core.Burn/WixToolsetCoreServiceProviderExtensions.cs8
-rw-r--r--src/WixToolset.Core.ExtensionCache/WixToolset.Core.ExtensionCache.csproj1
-rw-r--r--src/WixToolset.Core.ExtensionCache/WixToolsetCoreServiceProviderExtensions.cs8
-rw-r--r--src/WixToolset.Core.TestPackage/BundleExtractor.cs44
-rw-r--r--src/WixToolset.Core.TestPackage/ExtractBAContainerResult.cs45
-rw-r--r--src/WixToolset.Core.TestPackage/TestMessageListener.cs27
-rw-r--r--src/WixToolset.Core.TestPackage/WixRunner.cs22
-rw-r--r--src/WixToolset.Core.TestPackage/WixRunnerResult.cs13
-rw-r--r--src/WixToolset.Core.TestPackage/WixToolset.Core.TestPackage.csproj1
-rw-r--r--src/WixToolset.Core.TestPackage/XmlNodeExtensions.cs15
-rw-r--r--src/WixToolset.Core.WindowsInstaller/Bind/AssignMediaCommand.cs3
-rw-r--r--src/WixToolset.Core.WindowsInstaller/Bind/CabinetBuilder.cs1
-rw-r--r--src/WixToolset.Core.WindowsInstaller/Bind/CabinetResolver.cs2
-rw-r--r--src/WixToolset.Core.WindowsInstaller/Bind/CabinetWorkItem.cs11
-rw-r--r--src/WixToolset.Core.WindowsInstaller/Bind/CreateCabinetsCommand.cs6
-rw-r--r--src/WixToolset.Core.WindowsInstaller/Bind/GenerateDatabaseCommand.cs2
-rw-r--r--src/WixToolset.Core.WindowsInstaller/Bind/GenerateTransformCommand.cs6
-rw-r--r--src/WixToolset.Core.WindowsInstaller/Bind/UpdateTransformsWithFileFacades.cs2
-rw-r--r--src/WixToolset.Core.WindowsInstaller/Decompile/Decompiler.cs21
-rw-r--r--src/WixToolset.Core.WindowsInstaller/Msi/MsiInterop.cs2
-rw-r--r--src/WixToolset.Core.WindowsInstaller/RowDictionary.cs12
-rw-r--r--src/WixToolset.Core.WindowsInstaller/Unbinder.cs2
-rw-r--r--src/WixToolset.Core.WindowsInstaller/Validator.cs2
-rw-r--r--src/WixToolset.Core.WindowsInstaller/ValidatorExtension.cs6
-rw-r--r--src/WixToolset.Core.WindowsInstaller/WixToolset.Core.WindowsInstaller.csproj3
-rw-r--r--src/WixToolset.Core.WindowsInstaller/WixToolsetCoreServiceProviderExtensions.cs8
-rw-r--r--src/WixToolset.Core/Bind/ExtractEmbeddedFilesCommand.cs1
-rw-r--r--src/WixToolset.Core/Bind/FileFacade.cs1
-rw-r--r--src/WixToolset.Core/Bind/FileResolver.cs2
-rw-r--r--src/WixToolset.Core/Bind/ResolveDelayedFieldsCommand.cs2
-rw-r--r--src/WixToolset.Core/CommandLine/CommandLineParser.cs1
-rw-r--r--src/WixToolset.Core/Common.cs37
-rw-r--r--src/WixToolset.Core/Compiler.cs10
-rw-r--r--src/WixToolset.Core/CompilerCore.cs10
-rw-r--r--src/WixToolset.Core/Compiler_2.cs8
-rw-r--r--src/WixToolset.Core/Compiler_Bundle.cs35
-rw-r--r--src/WixToolset.Core/Compiler_EmbeddedUI.cs1
-rw-r--r--src/WixToolset.Core/Compiler_Patch.cs4
-rw-r--r--src/WixToolset.Core/Compiler_UI.cs3
-rw-r--r--src/WixToolset.Core/ExtensibilityServices/ParseHelper.cs32
-rw-r--r--src/WixToolset.Core/ExtensibilityServices/Uuid.cs1
-rw-r--r--src/WixToolset.Core/IBinder.cs2
-rw-r--r--src/WixToolset.Core/ICompiler.cs4
-rw-r--r--src/WixToolset.Core/IDecompiler.cs2
-rw-r--r--src/WixToolset.Core/ILayoutCreator.cs4
-rw-r--r--src/WixToolset.Core/ILibrarian.cs4
-rw-r--r--src/WixToolset.Core/ILinker.cs3
-rw-r--r--src/WixToolset.Core/IPreprocessor.cs1
-rw-r--r--src/WixToolset.Core/IResolver.cs2
-rw-r--r--src/WixToolset.Core/Inscriber.cs8
-rw-r--r--src/WixToolset.Core/LayoutCreator.cs6
-rw-r--r--src/WixToolset.Core/Link/SymbolWithSection.cs1
-rw-r--r--src/WixToolset.Core/Link/WixComplexReferenceSymbolExtensions.cs6
-rw-r--r--src/WixToolset.Core/Link/WixGroupingOrdering.cs6
-rw-r--r--src/WixToolset.Core/Linker.cs2
-rw-r--r--src/WixToolset.Core/LocalizationParser.cs5
-rw-r--r--src/WixToolset.Core/PatchSymbolFlagsType.cs31
-rw-r--r--src/WixToolset.Core/Preprocess/IfDefEventHandler.cs4
-rw-r--r--src/WixToolset.Core/Preprocess/IncludedFileEventHandler.cs6
-rw-r--r--src/WixToolset.Core/Preprocess/ProcessedStreamEventHandler.cs6
-rw-r--r--src/WixToolset.Core/Preprocess/ResolvedVariableEventHandler.cs4
-rw-r--r--src/WixToolset.Core/PreprocessResult.cs2
-rw-r--r--src/WixToolset.Core/Preprocessor.cs30
-rw-r--r--src/WixToolset.Core/ResolveFileResult.cs2
-rw-r--r--src/WixToolset.Core/WixToolset.Core.csproj2
-rw-r--r--src/WixToolset.Core/WixToolsetServiceProviderFactory.cs7
-rw-r--r--src/test/WixToolsetTest.CoreIntegration/PayloadFixture.cs7
-rw-r--r--src/test/WixToolsetTest.CoreIntegration/WixToolsetTest.CoreIntegration.csproj4
76 files changed, 471 insertions, 162 deletions
diff --git a/WixToolset.Core.sln b/WixToolset.Core.sln
index a97f38d9..523c960e 100644
--- a/WixToolset.Core.sln
+++ b/WixToolset.Core.sln
@@ -8,6 +8,8 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "WixToolset.Core.WindowsInst
8EndProject 8EndProject
9Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "WixToolset.Core.Burn", "src\WixToolset.Core.Burn\WixToolset.Core.Burn.csproj", "{BC19D30D-C1B6-46DF-95B3-8EDF688E0FEC}" 9Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "WixToolset.Core.Burn", "src\WixToolset.Core.Burn\WixToolset.Core.Burn.csproj", "{BC19D30D-C1B6-46DF-95B3-8EDF688E0FEC}"
10EndProject 10EndProject
11Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "WixToolset.Core.ExtensionCache", "src\WixToolset.Core.ExtensionCache\WixToolset.Core.ExtensionCache.csproj", "{A1F0DF11-87FB-4BBC-B53B-83F2CE66604A}"
12EndProject
11Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Test", "Test", "{1284331E-BC6C-426D-AAAF-140C0174F875}" 13Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Test", "Test", "{1284331E-BC6C-426D-AAAF-140C0174F875}"
12EndProject 14EndProject
13Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Example.Extension", "src\test\Example.Extension\Example.Extension.csproj", "{C66C2503-C671-4230-8B48-1D93A8532A28}" 15Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Example.Extension", "src\test\Example.Extension\Example.Extension.csproj", "{C66C2503-C671-4230-8B48-1D93A8532A28}"
@@ -66,6 +68,18 @@ Global
66 {BC19D30D-C1B6-46DF-95B3-8EDF688E0FEC}.Release|x64.Build.0 = Release|Any CPU 68 {BC19D30D-C1B6-46DF-95B3-8EDF688E0FEC}.Release|x64.Build.0 = Release|Any CPU
67 {BC19D30D-C1B6-46DF-95B3-8EDF688E0FEC}.Release|x86.ActiveCfg = Release|Any CPU 69 {BC19D30D-C1B6-46DF-95B3-8EDF688E0FEC}.Release|x86.ActiveCfg = Release|Any CPU
68 {BC19D30D-C1B6-46DF-95B3-8EDF688E0FEC}.Release|x86.Build.0 = Release|Any CPU 70 {BC19D30D-C1B6-46DF-95B3-8EDF688E0FEC}.Release|x86.Build.0 = Release|Any CPU
71 {A1F0DF11-87FB-4BBC-B53B-83F2CE66604A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
72 {A1F0DF11-87FB-4BBC-B53B-83F2CE66604A}.Debug|Any CPU.Build.0 = Debug|Any CPU
73 {A1F0DF11-87FB-4BBC-B53B-83F2CE66604A}.Debug|x64.ActiveCfg = Debug|Any CPU
74 {A1F0DF11-87FB-4BBC-B53B-83F2CE66604A}.Debug|x64.Build.0 = Debug|Any CPU
75 {A1F0DF11-87FB-4BBC-B53B-83F2CE66604A}.Debug|x86.ActiveCfg = Debug|Any CPU
76 {A1F0DF11-87FB-4BBC-B53B-83F2CE66604A}.Debug|x86.Build.0 = Debug|Any CPU
77 {A1F0DF11-87FB-4BBC-B53B-83F2CE66604A}.Release|Any CPU.ActiveCfg = Release|Any CPU
78 {A1F0DF11-87FB-4BBC-B53B-83F2CE66604A}.Release|Any CPU.Build.0 = Release|Any CPU
79 {A1F0DF11-87FB-4BBC-B53B-83F2CE66604A}.Release|x64.ActiveCfg = Release|Any CPU
80 {A1F0DF11-87FB-4BBC-B53B-83F2CE66604A}.Release|x64.Build.0 = Release|Any CPU
81 {A1F0DF11-87FB-4BBC-B53B-83F2CE66604A}.Release|x86.ActiveCfg = Release|Any CPU
82 {A1F0DF11-87FB-4BBC-B53B-83F2CE66604A}.Release|x86.Build.0 = Release|Any CPU
69 {C66C2503-C671-4230-8B48-1D93A8532A28}.Debug|Any CPU.ActiveCfg = Debug|Any CPU 83 {C66C2503-C671-4230-8B48-1D93A8532A28}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
70 {C66C2503-C671-4230-8B48-1D93A8532A28}.Debug|Any CPU.Build.0 = Debug|Any CPU 84 {C66C2503-C671-4230-8B48-1D93A8532A28}.Debug|Any CPU.Build.0 = Debug|Any CPU
71 {C66C2503-C671-4230-8B48-1D93A8532A28}.Debug|x64.ActiveCfg = Debug|Any CPU 85 {C66C2503-C671-4230-8B48-1D93A8532A28}.Debug|x64.ActiveCfg = Debug|Any CPU
diff --git a/src/CSharp.Build.props b/src/CSharp.Build.props
index bcd47a0c..81d24ad1 100644
--- a/src/CSharp.Build.props
+++ b/src/CSharp.Build.props
@@ -8,5 +8,6 @@
8 <CheckForOverflowUnderflow>true</CheckForOverflowUnderflow> 8 <CheckForOverflowUnderflow>true</CheckForOverflowUnderflow>
9 <SignAssembly>true</SignAssembly> 9 <SignAssembly>true</SignAssembly>
10 <AssemblyOriginatorKeyFile>$([System.IO.Path]::GetFullPath($(MSBuildThisFileDirectory)wix.snk))</AssemblyOriginatorKeyFile> 10 <AssemblyOriginatorKeyFile>$([System.IO.Path]::GetFullPath($(MSBuildThisFileDirectory)wix.snk))</AssemblyOriginatorKeyFile>
11 <NBGV_EmitThisAssemblyClass>false</NBGV_EmitThisAssemblyClass>
11 </PropertyGroup> 12 </PropertyGroup>
12</Project> 13</Project>
diff --git a/src/Directory.Build.targets b/src/Directory.Build.targets
index dac7452a..cb988931 100644
--- a/src/Directory.Build.targets
+++ b/src/Directory.Build.targets
@@ -10,6 +10,11 @@
10--> 10-->
11<Project> 11<Project>
12 <PropertyGroup> 12 <PropertyGroup>
13 <CreateDocumentation Condition=" '$(CreateDocumentationFile)'!='true' ">false</CreateDocumentation>
14 <DocumentationFile Condition=" '$(CreateDocumentationFile)'=='true' ">$(OutputPath)\$(AssemblyName).xml</DocumentationFile>
15 </PropertyGroup>
16
17 <PropertyGroup>
13 <ReplacePackageReferences>true</ReplacePackageReferences> 18 <ReplacePackageReferences>true</ReplacePackageReferences>
14 <TheSolutionPath Condition=" '$(NCrunch)'=='' ">$(SolutionPath)</TheSolutionPath> 19 <TheSolutionPath Condition=" '$(NCrunch)'=='' ">$(SolutionPath)</TheSolutionPath>
15 <TheSolutionPath Condition=" '$(NCrunch)'=='1' ">$(NCrunchOriginalSolutionPath)</TheSolutionPath> 20 <TheSolutionPath Condition=" '$(NCrunch)'=='1' ">$(NCrunchOriginalSolutionPath)</TheSolutionPath>
@@ -45,4 +50,7 @@
45 50
46 </When> 51 </When>
47 </Choose> 52 </Choose>
53
54 <Import Project="Wix.Build.targets" Condition=" Exists('Wix.Build.targets') And '$(MSBuildProjectExtension)'=='.wixproj' " />
55 <Import Project="Custom.Build.targets" Condition=" Exists('Custom.Build.targets') " />
48</Project> 56</Project>
diff --git a/src/WixToolset.Core.Burn/Bundles/BurnCommon.cs b/src/WixToolset.Core.Burn/Bundles/BurnCommon.cs
index 01c9f9ca..bca1be72 100644
--- a/src/WixToolset.Core.Burn/Bundles/BurnCommon.cs
+++ b/src/WixToolset.Core.Burn/Bundles/BurnCommon.cs
@@ -9,7 +9,7 @@ namespace WixToolset.Core.Burn.Bundles
9 using WixToolset.Extensibility.Services; 9 using WixToolset.Extensibility.Services;
10 10
11 /// <summary> 11 /// <summary>
12 /// Common functionality for Burn PE Writer & Reader for the WiX toolset. 12 /// Common functionality for Burn PE Writer &amp; Reader for the WiX toolset.
13 /// </summary> 13 /// </summary>
14 /// <remarks>This class encapsulates common functionality related to 14 /// <remarks>This class encapsulates common functionality related to
15 /// bundled/chained setup packages.</remarks> 15 /// bundled/chained setup packages.</remarks>
@@ -107,8 +107,8 @@ namespace WixToolset.Core.Burn.Bundles
107 /// <summary> 107 /// <summary>
108 /// Creates a BurnCommon for re-writing a PE file. 108 /// Creates a BurnCommon for re-writing a PE file.
109 /// </summary> 109 /// </summary>
110 /// <param name="messaging"></param>
110 /// <param name="fileExe">File to modify in-place.</param> 111 /// <param name="fileExe">File to modify in-place.</param>
111 /// <param name="bundleGuid">GUID for the bundle.</param>
112 public BurnCommon(IMessaging messaging, string fileExe) 112 public BurnCommon(IMessaging messaging, string fileExe)
113 { 113 {
114 this.messaging = messaging; 114 this.messaging = messaging;
diff --git a/src/WixToolset.Core.Burn/Bundles/BurnReader.cs b/src/WixToolset.Core.Burn/Bundles/BurnReader.cs
index b4e23623..68fdea1c 100644
--- a/src/WixToolset.Core.Burn/Bundles/BurnReader.cs
+++ b/src/WixToolset.Core.Burn/Bundles/BurnReader.cs
@@ -32,6 +32,7 @@ namespace WixToolset.Core.Burn.Bundles
32 /// <summary> 32 /// <summary>
33 /// Creates a BurnReader for reading a PE file. 33 /// Creates a BurnReader for reading a PE file.
34 /// </summary> 34 /// </summary>
35 /// <param name="messaging"></param>
35 /// <param name="fileExe">File to read.</param> 36 /// <param name="fileExe">File to read.</param>
36 private BurnReader(IMessaging messaging, string fileExe) 37 private BurnReader(IMessaging messaging, string fileExe)
37 : base(messaging, fileExe) 38 : base(messaging, fileExe)
@@ -58,6 +59,7 @@ namespace WixToolset.Core.Burn.Bundles
58 /// <summary> 59 /// <summary>
59 /// Opens a Burn reader. 60 /// Opens a Burn reader.
60 /// </summary> 61 /// </summary>
62 /// <param name="messaging"></param>
61 /// <param name="fileExe">Path to file.</param> 63 /// <param name="fileExe">Path to file.</param>
62 /// <returns>Burn reader.</returns> 64 /// <returns>Burn reader.</returns>
63 public static BurnReader Open(IMessaging messaging, string fileExe) 65 public static BurnReader Open(IMessaging messaging, string fileExe)
@@ -77,6 +79,7 @@ namespace WixToolset.Core.Burn.Bundles
77 /// Gets the UX container from the exe and extracts its contents to the output directory. 79 /// Gets the UX container from the exe and extracts its contents to the output directory.
78 /// </summary> 80 /// </summary>
79 /// <param name="outputDirectory">Directory to write extracted files to.</param> 81 /// <param name="outputDirectory">Directory to write extracted files to.</param>
82 /// <param name="tempDirectory">Scratch directory.</param>
80 /// <returns>True if successful, false otherwise</returns> 83 /// <returns>True if successful, false otherwise</returns>
81 public bool ExtractUXContainer(string outputDirectory, string tempDirectory) 84 public bool ExtractUXContainer(string outputDirectory, string tempDirectory)
82 { 85 {
@@ -157,6 +160,7 @@ namespace WixToolset.Core.Burn.Bundles
157 /// Gets the attached container from the exe and extracts its contents to the output directory. 160 /// Gets the attached container from the exe and extracts its contents to the output directory.
158 /// </summary> 161 /// </summary>
159 /// <param name="outputDirectory">Directory to write extracted files to.</param> 162 /// <param name="outputDirectory">Directory to write extracted files to.</param>
163 /// <param name="tempDirectory">Scratch directory.</param>
160 /// <returns>True if successful, false otherwise</returns> 164 /// <returns>True if successful, false otherwise</returns>
161 public bool ExtractAttachedContainer(string outputDirectory, string tempDirectory) 165 public bool ExtractAttachedContainer(string outputDirectory, string tempDirectory)
162 { 166 {
diff --git a/src/WixToolset.Core.Burn/Bundles/BurnWriter.cs b/src/WixToolset.Core.Burn/Bundles/BurnWriter.cs
index 83b73a61..be9b8eaa 100644
--- a/src/WixToolset.Core.Burn/Bundles/BurnWriter.cs
+++ b/src/WixToolset.Core.Burn/Bundles/BurnWriter.cs
@@ -29,8 +29,8 @@ namespace WixToolset.Core.Burn.Bundles
29 /// <summary> 29 /// <summary>
30 /// Creates a BurnWriter for re-writing a PE file. 30 /// Creates a BurnWriter for re-writing a PE file.
31 /// </summary> 31 /// </summary>
32 /// <param name="messaging"></param>
32 /// <param name="fileExe">File to modify in-place.</param> 33 /// <param name="fileExe">File to modify in-place.</param>
33 /// <param name="bundleGuid">GUID for the bundle.</param>
34 private BurnWriter(IMessaging messaging, string fileExe) 34 private BurnWriter(IMessaging messaging, string fileExe)
35 : base(messaging, fileExe) 35 : base(messaging, fileExe)
36 { 36 {
@@ -39,6 +39,7 @@ namespace WixToolset.Core.Burn.Bundles
39 /// <summary> 39 /// <summary>
40 /// Opens a Burn writer. 40 /// Opens a Burn writer.
41 /// </summary> 41 /// </summary>
42 /// <param name="messaging"></param>
42 /// <param name="fileExe">Path to file.</param> 43 /// <param name="fileExe">Path to file.</param>
43 /// <returns>Burn writer.</returns> 44 /// <returns>Burn writer.</returns>
44 public static BurnWriter Open(IMessaging messaging, string fileExe) 45 public static BurnWriter Open(IMessaging messaging, string fileExe)
@@ -197,7 +198,9 @@ namespace WixToolset.Core.Burn.Bundles
197 /// Appends a container to the exe and updates the ".wixburn" section data to point to it. 198 /// Appends a container to the exe and updates the ".wixburn" section data to point to it.
198 /// </summary> 199 /// </summary>
199 /// <param name="containerStream">File stream to append to the current exe.</param> 200 /// <param name="containerStream">File stream to append to the current exe.</param>
201 /// <param name="containerSize">Size of the container.</param>
200 /// <param name="burnSectionOffsetSize">Offset of size field for this container in ".wixburn" section data.</param> 202 /// <param name="burnSectionOffsetSize">Offset of size field for this container in ".wixburn" section data.</param>
203 /// <param name="burnSectionCount">Number of Burn sections.</param>
201 /// <returns>true if the container data is successfully appended; false otherwise</returns> 204 /// <returns>true if the container data is successfully appended; false otherwise</returns>
202 private bool AppendContainer(Stream containerStream, UInt32 containerSize, UInt32 burnSectionOffsetSize, UInt32 burnSectionCount) 205 private bool AppendContainer(Stream containerStream, UInt32 containerSize, UInt32 burnSectionOffsetSize, UInt32 burnSectionCount)
203 { 206 {
diff --git a/src/WixToolset.Core.Burn/RowIndexedList.cs b/src/WixToolset.Core.Burn/RowIndexedList.cs
index 3a4dad38..73172dc2 100644
--- a/src/WixToolset.Core.Burn/RowIndexedList.cs
+++ b/src/WixToolset.Core.Burn/RowIndexedList.cs
@@ -7,18 +7,18 @@ namespace WixToolset.Core.Burn
7 using WixToolset.Data.WindowsInstaller; 7 using WixToolset.Data.WindowsInstaller;
8 8
9 /// <summary> 9 /// <summary>
10 /// A list of rows indexed by their primary key. Unlike a <see cref="RowDictionary"/> 10 /// A list of rows indexed by their primary key. Unlike a RowDictionary
11 /// this indexed list will track rows in their added order and will allow rows with 11 /// this indexed list will track rows in their added order and will allow rows with
12 /// duplicate keys to be added to the list, although only the first row will be indexed. 12 /// duplicate keys to be added to the list, although only the first row will be indexed.
13 /// </summary> 13 /// </summary>
14 public sealed class RowIndexedList<T> : IList<T> where T : Row 14 internal sealed class RowIndexedList<T> : IList<T> where T : Row
15 { 15 {
16 private Dictionary<string, T> index; 16 private Dictionary<string, T> index;
17 private List<T> rows; 17 private List<T> rows;
18 private List<T> duplicates; 18 private List<T> duplicates;
19 19
20 /// <summary> 20 /// <summary>
21 /// Creates an empty <see cref="RowIndexedList"/>. 21 /// Creates an empty <see cref="RowIndexedList{T}"/>.
22 /// </summary> 22 /// </summary>
23 public RowIndexedList() 23 public RowIndexedList()
24 { 24 {
@@ -28,7 +28,7 @@ namespace WixToolset.Core.Burn
28 } 28 }
29 29
30 /// <summary> 30 /// <summary>
31 /// Creates and populates a <see cref="RowDictionary"/> with the rows from the given enumerator. 31 /// Creates and populates a <see cref="RowIndexedList{T}"/> with the rows from the given enumerator.
32 /// </summary> 32 /// </summary>
33 /// <param name="rows">Rows to index.</param> 33 /// <param name="rows">Rows to index.</param>
34 public RowIndexedList(IEnumerable<T> rows) 34 public RowIndexedList(IEnumerable<T> rows)
@@ -41,7 +41,7 @@ namespace WixToolset.Core.Burn
41 } 41 }
42 42
43 /// <summary> 43 /// <summary>
44 /// Creates and populates a <see cref="RowDictionary"/> with the rows from the given <see cref="Table"/>. 44 /// Creates and populates a <see cref="RowIndexedList{T}"/> with the rows from the given <see cref="Table"/>.
45 /// </summary> 45 /// </summary>
46 /// <param name="table">The table to index.</param> 46 /// <param name="table">The table to index.</param>
47 /// <remarks> 47 /// <remarks>
diff --git a/src/WixToolset.Core.Burn/WixToolset.Core.Burn.csproj b/src/WixToolset.Core.Burn/WixToolset.Core.Burn.csproj
index b0be1d3b..8b989569 100644
--- a/src/WixToolset.Core.Burn/WixToolset.Core.Burn.csproj
+++ b/src/WixToolset.Core.Burn/WixToolset.Core.Burn.csproj
@@ -9,6 +9,7 @@
9 <Title>WiX Toolset Core Burn</Title> 9 <Title>WiX Toolset Core Burn</Title>
10 <DebugType>embedded</DebugType> 10 <DebugType>embedded</DebugType>
11 <PublishRepositoryUrl>true</PublishRepositoryUrl> 11 <PublishRepositoryUrl>true</PublishRepositoryUrl>
12 <CreateDocumentationFile>true</CreateDocumentationFile>
12 </PropertyGroup> 13 </PropertyGroup>
13 14
14 <ItemGroup> 15 <ItemGroup>
@@ -28,8 +29,8 @@
28 <PackageReference Include="System.Security.Permissions" Version="4.6.0" /> 29 <PackageReference Include="System.Security.Permissions" Version="4.6.0" />
29 <PackageReference Include="WixToolset.Burn" Version="4.0.*" /> 30 <PackageReference Include="WixToolset.Burn" Version="4.0.*" />
30 <PackageReference Include="WixToolset.Core.Native" Version="4.0.*" /> 31 <PackageReference Include="WixToolset.Core.Native" Version="4.0.*" />
31 <PackageReference Include="WixToolset.Dtf.Resources" Version="4.0.*" NoWarn="NU1701" /> 32 <PackageReference Include="WixToolset.Dtf.Resources" Version="4.0.*" />
32 <PackageReference Include="WixToolset.Dtf.WindowsInstaller" Version="4.0.*" NoWarn="NU1701" /> 33 <PackageReference Include="WixToolset.Dtf.WindowsInstaller" Version="4.0.*" />
33 </ItemGroup> 34 </ItemGroup>
34 35
35 <ItemGroup> 36 <ItemGroup>
diff --git a/src/WixToolset.Core.Burn/WixToolsetCoreServiceProviderExtensions.cs b/src/WixToolset.Core.Burn/WixToolsetCoreServiceProviderExtensions.cs
index 04fa4daf..5303899f 100644
--- a/src/WixToolset.Core.Burn/WixToolsetCoreServiceProviderExtensions.cs
+++ b/src/WixToolset.Core.Burn/WixToolsetCoreServiceProviderExtensions.cs
@@ -7,8 +7,16 @@ namespace WixToolset.Core.Burn
7 using WixToolset.Core.Burn.ExtensibilityServices; 7 using WixToolset.Core.Burn.ExtensibilityServices;
8 using WixToolset.Extensibility.Services; 8 using WixToolset.Extensibility.Services;
9 9
10 /// <summary>
11 /// Extensions methods for adding Burn services.
12 /// </summary>
10 public static class WixToolsetCoreServiceProviderExtensions 13 public static class WixToolsetCoreServiceProviderExtensions
11 { 14 {
15 /// <summary>
16 /// Adds Burn Services.
17 /// </summary>
18 /// <param name="coreProvider"></param>
19 /// <returns></returns>
12 public static IWixToolsetCoreServiceProvider AddBundleBackend(this IWixToolsetCoreServiceProvider coreProvider) 20 public static IWixToolsetCoreServiceProvider AddBundleBackend(this IWixToolsetCoreServiceProvider coreProvider)
13 { 21 {
14 AddServices(coreProvider); 22 AddServices(coreProvider);
diff --git a/src/WixToolset.Core.ExtensionCache/WixToolset.Core.ExtensionCache.csproj b/src/WixToolset.Core.ExtensionCache/WixToolset.Core.ExtensionCache.csproj
index 27305822..4b9fe72d 100644
--- a/src/WixToolset.Core.ExtensionCache/WixToolset.Core.ExtensionCache.csproj
+++ b/src/WixToolset.Core.ExtensionCache/WixToolset.Core.ExtensionCache.csproj
@@ -9,6 +9,7 @@
9 <Title>WiX Toolset Extension Cache</Title> 9 <Title>WiX Toolset Extension Cache</Title>
10 <DebugType>embedded</DebugType> 10 <DebugType>embedded</DebugType>
11 <PublishRepositoryUrl>true</PublishRepositoryUrl> 11 <PublishRepositoryUrl>true</PublishRepositoryUrl>
12 <CreateDocumentationFile>true</CreateDocumentationFile>
12 </PropertyGroup> 13 </PropertyGroup>
13 14
14 <ItemGroup> 15 <ItemGroup>
diff --git a/src/WixToolset.Core.ExtensionCache/WixToolsetCoreServiceProviderExtensions.cs b/src/WixToolset.Core.ExtensionCache/WixToolsetCoreServiceProviderExtensions.cs
index 535a08f7..424fc469 100644
--- a/src/WixToolset.Core.ExtensionCache/WixToolsetCoreServiceProviderExtensions.cs
+++ b/src/WixToolset.Core.ExtensionCache/WixToolsetCoreServiceProviderExtensions.cs
@@ -6,8 +6,16 @@ namespace WixToolset.Core.ExtensionCache
6 using System.Collections.Generic; 6 using System.Collections.Generic;
7 using WixToolset.Extensibility.Services; 7 using WixToolset.Extensibility.Services;
8 8
9 /// <summary>
10 /// Extensions methods for adding ExtensionCache services.
11 /// </summary>
9 public static class WixToolsetCoreServiceProviderExtensions 12 public static class WixToolsetCoreServiceProviderExtensions
10 { 13 {
14 /// <summary>
15 /// Adds ExtensionCache services.
16 /// </summary>
17 /// <param name="coreProvider"></param>
18 /// <returns></returns>
11 public static IWixToolsetCoreServiceProvider AddExtensionCacheManager(this IWixToolsetCoreServiceProvider coreProvider) 19 public static IWixToolsetCoreServiceProvider AddExtensionCacheManager(this IWixToolsetCoreServiceProvider coreProvider)
12 { 20 {
13 var extensionManager = coreProvider.GetService<IExtensionManager>(); 21 var extensionManager = coreProvider.GetService<IExtensionManager>();
diff --git a/src/WixToolset.Core.TestPackage/BundleExtractor.cs b/src/WixToolset.Core.TestPackage/BundleExtractor.cs
index 8a56f117..ad97f113 100644
--- a/src/WixToolset.Core.TestPackage/BundleExtractor.cs
+++ b/src/WixToolset.Core.TestPackage/BundleExtractor.cs
@@ -7,8 +7,19 @@ namespace WixToolset.Core.TestPackage
7 using WixToolset.Core.Burn.Bundles; 7 using WixToolset.Core.Burn.Bundles;
8 using WixToolset.Extensibility.Services; 8 using WixToolset.Extensibility.Services;
9 9
10 /// <summary>
11 /// Class to extract bundle contents for testing.
12 /// </summary>
10 public class BundleExtractor 13 public class BundleExtractor
11 { 14 {
15 /// <summary>
16 /// Extracts the BA container.
17 /// </summary>
18 /// <param name="messaging"></param>
19 /// <param name="bundleFilePath">Path to the bundle.</param>
20 /// <param name="destinationFolderPath">Path to extract to.</param>
21 /// <param name="tempFolderPath">Temp path for extraction.</param>
22 /// <returns></returns>
12 public static ExtractBAContainerResult ExtractBAContainer(IMessaging messaging, string bundleFilePath, string destinationFolderPath, string tempFolderPath) 23 public static ExtractBAContainerResult ExtractBAContainer(IMessaging messaging, string bundleFilePath, string destinationFolderPath, string tempFolderPath)
13 { 24 {
14 var result = new ExtractBAContainerResult(); 25 var result = new ExtractBAContainerResult();
@@ -33,6 +44,12 @@ namespace WixToolset.Core.TestPackage
33 return result; 44 return result;
34 } 45 }
35 46
47 /// <summary>
48 /// Gets an <see cref="XmlNamespaceManager"/> for BootstrapperApplicationData.xml with the given prefix assigned to the root namespace.
49 /// </summary>
50 /// <param name="document"></param>
51 /// <param name="prefix"></param>
52 /// <returns></returns>
36 public static XmlNamespaceManager GetBADataNamespaceManager(XmlDocument document, string prefix) 53 public static XmlNamespaceManager GetBADataNamespaceManager(XmlDocument document, string prefix)
37 { 54 {
38 var namespaceManager = new XmlNamespaceManager(document.NameTable); 55 var namespaceManager = new XmlNamespaceManager(document.NameTable);
@@ -40,6 +57,12 @@ namespace WixToolset.Core.TestPackage
40 return namespaceManager; 57 return namespaceManager;
41 } 58 }
42 59
60 /// <summary>
61 /// Gets an <see cref="XmlNamespaceManager"/> for BundleExtensionData.xml with the given prefix assigned to the root namespace.
62 /// </summary>
63 /// <param name="document"></param>
64 /// <param name="prefix"></param>
65 /// <returns></returns>
43 public static XmlNamespaceManager GetBundleExtensionDataNamespaceManager(XmlDocument document, string prefix) 66 public static XmlNamespaceManager GetBundleExtensionDataNamespaceManager(XmlDocument document, string prefix)
44 { 67 {
45 var namespaceManager = new XmlNamespaceManager(document.NameTable); 68 var namespaceManager = new XmlNamespaceManager(document.NameTable);
@@ -47,6 +70,12 @@ namespace WixToolset.Core.TestPackage
47 return namespaceManager; 70 return namespaceManager;
48 } 71 }
49 72
73 /// <summary>
74 /// Gets an <see cref="XmlNamespaceManager"/> for the Burn manifest.xml with the given prefix assigned to the root namespace.
75 /// </summary>
76 /// <param name="document"></param>
77 /// <param name="prefix"></param>
78 /// <returns></returns>
50 public static XmlNamespaceManager GetBurnNamespaceManager(XmlDocument document, string prefix) 79 public static XmlNamespaceManager GetBurnNamespaceManager(XmlDocument document, string prefix)
51 { 80 {
52 var namespaceManager = new XmlNamespaceManager(document.NameTable); 81 var namespaceManager = new XmlNamespaceManager(document.NameTable);
@@ -54,6 +83,11 @@ namespace WixToolset.Core.TestPackage
54 return namespaceManager; 83 return namespaceManager;
55 } 84 }
56 85
86 /// <summary>
87 /// Loads an XmlDocument with the BootstrapperApplicationData.xml from the given folder that contains the contents of the BA container.
88 /// </summary>
89 /// <param name="baFolderPath"></param>
90 /// <returns></returns>
57 public static XmlDocument LoadBAData(string baFolderPath) 91 public static XmlDocument LoadBAData(string baFolderPath)
58 { 92 {
59 var document = new XmlDocument(); 93 var document = new XmlDocument();
@@ -61,6 +95,11 @@ namespace WixToolset.Core.TestPackage
61 return document; 95 return document;
62 } 96 }
63 97
98 /// <summary>
99 /// Loads an XmlDocument with the BootstrapperApplicationData.xml from the given folder that contains the contents of the BA container.
100 /// </summary>
101 /// <param name="baFolderPath"></param>
102 /// <returns></returns>
64 public static XmlDocument LoadBundleExtensionData(string baFolderPath) 103 public static XmlDocument LoadBundleExtensionData(string baFolderPath)
65 { 104 {
66 var document = new XmlDocument(); 105 var document = new XmlDocument();
@@ -68,6 +107,11 @@ namespace WixToolset.Core.TestPackage
68 return document; 107 return document;
69 } 108 }
70 109
110 /// <summary>
111 /// Loads an XmlDocument with the BootstrapperApplicationData.xml from the given folder that contains the contents of the BA container.
112 /// </summary>
113 /// <param name="baFolderPath"></param>
114 /// <returns></returns>
71 public static XmlDocument LoadBurnManifest(string baFolderPath) 115 public static XmlDocument LoadBurnManifest(string baFolderPath)
72 { 116 {
73 var document = new XmlDocument(); 117 var document = new XmlDocument();
diff --git a/src/WixToolset.Core.TestPackage/ExtractBAContainerResult.cs b/src/WixToolset.Core.TestPackage/ExtractBAContainerResult.cs
index 63d7bb31..277861ff 100644
--- a/src/WixToolset.Core.TestPackage/ExtractBAContainerResult.cs
+++ b/src/WixToolset.Core.TestPackage/ExtractBAContainerResult.cs
@@ -6,22 +6,61 @@ namespace WixToolset.Core.TestPackage
6 using System.Xml; 6 using System.Xml;
7 using Xunit; 7 using Xunit;
8 8
9 /// <summary>
10 /// The result of extracting the BA container.
11 /// </summary>
9 public class ExtractBAContainerResult 12 public class ExtractBAContainerResult
10 { 13 {
14 /// <summary>
15 /// <see cref="XmlDocument"/> for BundleExtensionData.xml.
16 /// </summary>
11 public XmlDocument BundleExtensionDataDocument { get; set; } 17 public XmlDocument BundleExtensionDataDocument { get; set; }
18
19 /// <summary>
20 /// <see cref="XmlNamespaceManager"/> for BundleExtensionData.xml.
21 /// </summary>
12 public XmlNamespaceManager BundleExtensionDataNamespaceManager { get; set; } 22 public XmlNamespaceManager BundleExtensionDataNamespaceManager { get; set; }
23
24 /// <summary>
25 /// <see cref="XmlDocument"/> for BootstrapperApplicationData.xml.
26 /// </summary>
13 public XmlDocument BADataDocument { get; set; } 27 public XmlDocument BADataDocument { get; set; }
28
29 /// <summary>
30 /// <see cref="XmlNamespaceManager"/> for BootstrapperApplicationData.xml.
31 /// </summary>
14 public XmlNamespaceManager BADataNamespaceManager { get; set; } 32 public XmlNamespaceManager BADataNamespaceManager { get; set; }
33
34 /// <summary>
35 /// <see cref="XmlDocument"/> for the Burn manifest.xml.
36 /// </summary>
15 public XmlDocument ManifestDocument { get; set; } 37 public XmlDocument ManifestDocument { get; set; }
38
39 /// <summary>
40 /// <see cref="XmlNamespaceManager"/> for the Burn manifest.xml.
41 /// </summary>
16 public XmlNamespaceManager ManifestNamespaceManager { get; set; } 42 public XmlNamespaceManager ManifestNamespaceManager { get; set; }
43
44 /// <summary>
45 /// Whether extraction succeeded.
46 /// </summary>
17 public bool Success { get; set; } 47 public bool Success { get; set; }
18 48
49 /// <summary>
50 ///
51 /// </summary>
52 /// <returns></returns>
19 public ExtractBAContainerResult AssertSuccess() 53 public ExtractBAContainerResult AssertSuccess()
20 { 54 {
21 Assert.True(this.Success); 55 Assert.True(this.Success);
22 return this; 56 return this;
23 } 57 }
24 58
59 /// <summary>
60 /// Returns the relative path of the BA entry point dll in the given folder.
61 /// </summary>
62 /// <param name="extractedBAContainerFolderPath"></param>
63 /// <returns></returns>
25 public string GetBAFilePath(string extractedBAContainerFolderPath) 64 public string GetBAFilePath(string extractedBAContainerFolderPath)
26 { 65 {
27 var uxPayloads = this.SelectManifestNodes("/burn:BurnManifest/burn:UX/burn:Payload"); 66 var uxPayloads = this.SelectManifestNodes("/burn:BurnManifest/burn:UX/burn:Payload");
@@ -30,6 +69,12 @@ namespace WixToolset.Core.TestPackage
30 return Path.Combine(extractedBAContainerFolderPath, relativeBAPath); 69 return Path.Combine(extractedBAContainerFolderPath, relativeBAPath);
31 } 70 }
32 71
72 /// <summary>
73 /// Returns the relative path of the BundleExtension entry point dll in the given folder.
74 /// </summary>
75 /// <param name="extractedBAContainerFolderPath"></param>
76 /// <param name="extensionId"></param>
77 /// <returns></returns>
33 public string GetBundleExtensionFilePath(string extractedBAContainerFolderPath, string extensionId) 78 public string GetBundleExtensionFilePath(string extractedBAContainerFolderPath, string extensionId)
34 { 79 {
35 var uxPayloads = this.SelectManifestNodes($"/burn:BurnManifest/burn:UX/burn:Payload[@Id='{extensionId}']"); 80 var uxPayloads = this.SelectManifestNodes($"/burn:BurnManifest/burn:UX/burn:Payload[@Id='{extensionId}']");
diff --git a/src/WixToolset.Core.TestPackage/TestMessageListener.cs b/src/WixToolset.Core.TestPackage/TestMessageListener.cs
index b5863869..7040fe82 100644
--- a/src/WixToolset.Core.TestPackage/TestMessageListener.cs
+++ b/src/WixToolset.Core.TestPackage/TestMessageListener.cs
@@ -5,24 +5,51 @@ using WixToolset.Extensibility.Services;
5 5
6namespace WixToolset.Core.TestPackage 6namespace WixToolset.Core.TestPackage
7{ 7{
8 /// <summary>
9 /// An <see cref="IMessageListener"/> that simply stores all the messages.
10 /// </summary>
8 public sealed class TestMessageListener : IMessageListener 11 public sealed class TestMessageListener : IMessageListener
9 { 12 {
13 /// <summary>
14 /// All messages that have been received.
15 /// </summary>
10 public List<Message> Messages { get; } = new List<Message>(); 16 public List<Message> Messages { get; } = new List<Message>();
11 17
18 /// <summary>
19 ///
20 /// </summary>
12 public string ShortAppName => "TEST"; 21 public string ShortAppName => "TEST";
13 22
23 /// <summary>
24 ///
25 /// </summary>
14 public string LongAppName => "Test"; 26 public string LongAppName => "Test";
15 27
28 /// <summary>
29 /// Stores the message in <see cref="Messages"/>.
30 /// </summary>
31 /// <param name="message"></param>
16 public void Write(Message message) 32 public void Write(Message message)
17 { 33 {
18 this.Messages.Add(message); 34 this.Messages.Add(message);
19 } 35 }
20 36
37 /// <summary>
38 /// Stores the message in <see cref="Messages"/>.
39 /// </summary>
40 /// <param name="message"></param>
21 public void Write(string message) 41 public void Write(string message)
22 { 42 {
23 this.Messages.Add(new Message(null, MessageLevel.Information, 0, message)); 43 this.Messages.Add(new Message(null, MessageLevel.Information, 0, message));
24 } 44 }
25 45
46 /// <summary>
47 /// Always returns defaultMessageLevel.
48 /// </summary>
49 /// <param name="messaging"></param>
50 /// <param name="message"></param>
51 /// <param name="defaultMessageLevel"></param>
52 /// <returns></returns>
26 public MessageLevel CalculateMessageLevel(IMessaging messaging, Message message, MessageLevel defaultMessageLevel) => defaultMessageLevel; 53 public MessageLevel CalculateMessageLevel(IMessaging messaging, Message message, MessageLevel defaultMessageLevel) => defaultMessageLevel;
27 } 54 }
28} 55}
diff --git a/src/WixToolset.Core.TestPackage/WixRunner.cs b/src/WixToolset.Core.TestPackage/WixRunner.cs
index 940b55a8..a3883cd5 100644
--- a/src/WixToolset.Core.TestPackage/WixRunner.cs
+++ b/src/WixToolset.Core.TestPackage/WixRunner.cs
@@ -9,11 +9,19 @@ namespace WixToolset.Core.TestPackage
9 using WixToolset.Core.Burn; 9 using WixToolset.Core.Burn;
10 using WixToolset.Core.WindowsInstaller; 10 using WixToolset.Core.WindowsInstaller;
11 using WixToolset.Data; 11 using WixToolset.Data;
12 using WixToolset.Extensibility.Data;
13 using WixToolset.Extensibility.Services; 12 using WixToolset.Extensibility.Services;
14 13
14 /// <summary>
15 /// Utility class to emulate wix.exe with standard backends.
16 /// </summary>
15 public static class WixRunner 17 public static class WixRunner
16 { 18 {
19 /// <summary>
20 /// Emulates calling wix.exe with standard backends.
21 /// </summary>
22 /// <param name="args"></param>
23 /// <param name="messages"></param>
24 /// <returns></returns>
17 public static int Execute(string[] args, out List<Message> messages) 25 public static int Execute(string[] args, out List<Message> messages)
18 { 26 {
19 var serviceProvider = WixToolsetServiceProviderFactory.CreateServiceProvider(); 27 var serviceProvider = WixToolsetServiceProviderFactory.CreateServiceProvider();
@@ -21,6 +29,11 @@ namespace WixToolset.Core.TestPackage
21 return task.Result; 29 return task.Result;
22 } 30 }
23 31
32 /// <summary>
33 /// Emulates calling wix.exe with standard backends.
34 /// </summary>
35 /// <param name="args"></param>
36 /// <returns></returns>
24 public static WixRunnerResult Execute(params string[] args) 37 public static WixRunnerResult Execute(params string[] args)
25 { 38 {
26 var serviceProvider = WixToolsetServiceProviderFactory.CreateServiceProvider(); 39 var serviceProvider = WixToolsetServiceProviderFactory.CreateServiceProvider();
@@ -28,6 +41,13 @@ namespace WixToolset.Core.TestPackage
28 return new WixRunnerResult { ExitCode = exitCode.Result, Messages = messages.ToArray() }; 41 return new WixRunnerResult { ExitCode = exitCode.Result, Messages = messages.ToArray() };
29 } 42 }
30 43
44 /// <summary>
45 /// Emulates calling wix.exe with standard backends.
46 /// </summary>
47 /// <param name="args"></param>
48 /// <param name="coreProvider"></param>
49 /// <param name="messages"></param>
50 /// <returns></returns>
31 public static Task<int> Execute(string[] args, IWixToolsetCoreServiceProvider coreProvider, out List<Message> messages) 51 public static Task<int> Execute(string[] args, IWixToolsetCoreServiceProvider coreProvider, out List<Message> messages)
32 { 52 {
33 coreProvider.AddWindowsInstallerBackend() 53 coreProvider.AddWindowsInstallerBackend()
diff --git a/src/WixToolset.Core.TestPackage/WixRunnerResult.cs b/src/WixToolset.Core.TestPackage/WixRunnerResult.cs
index 88f20158..13e3a9e0 100644
--- a/src/WixToolset.Core.TestPackage/WixRunnerResult.cs
+++ b/src/WixToolset.Core.TestPackage/WixRunnerResult.cs
@@ -7,12 +7,25 @@ namespace WixToolset.Core.TestPackage
7 using WixToolset.Data; 7 using WixToolset.Data;
8 using Xunit; 8 using Xunit;
9 9
10 /// <summary>
11 /// The result of an Execute method of <see cref="WixRunner"/>.
12 /// </summary>
10 public class WixRunnerResult 13 public class WixRunnerResult
11 { 14 {
15 /// <summary>
16 /// ExitCode for the operation.
17 /// </summary>
12 public int ExitCode { get; set; } 18 public int ExitCode { get; set; }
13 19
20 /// <summary>
21 /// Messages from the operation.
22 /// </summary>
14 public Message[] Messages { get; set; } 23 public Message[] Messages { get; set; }
15 24
25 /// <summary>
26 ///
27 /// </summary>
28 /// <returns></returns>
16 public WixRunnerResult AssertSuccess() 29 public WixRunnerResult AssertSuccess()
17 { 30 {
18 Assert.True(0 == this.ExitCode, $"\r\n\r\nWixRunner failed with exit code: {this.ExitCode}\r\n Output: {String.Join("\r\n ", FormatMessages(this.Messages))}\r\n"); 31 Assert.True(0 == this.ExitCode, $"\r\n\r\nWixRunner failed with exit code: {this.ExitCode}\r\n Output: {String.Join("\r\n ", FormatMessages(this.Messages))}\r\n");
diff --git a/src/WixToolset.Core.TestPackage/WixToolset.Core.TestPackage.csproj b/src/WixToolset.Core.TestPackage/WixToolset.Core.TestPackage.csproj
index 06793ffd..b64b4075 100644
--- a/src/WixToolset.Core.TestPackage/WixToolset.Core.TestPackage.csproj
+++ b/src/WixToolset.Core.TestPackage/WixToolset.Core.TestPackage.csproj
@@ -8,6 +8,7 @@
8 <Description>Internal WiX Toolset Test Package</Description> 8 <Description>Internal WiX Toolset Test Package</Description>
9 <DebugType>embedded</DebugType> 9 <DebugType>embedded</DebugType>
10 <PublishRepositoryUrl>true</PublishRepositoryUrl> 10 <PublishRepositoryUrl>true</PublishRepositoryUrl>
11 <CreateDocumentationFile>true</CreateDocumentationFile>
11 </PropertyGroup> 12 </PropertyGroup>
12 13
13 <ItemGroup> 14 <ItemGroup>
diff --git a/src/WixToolset.Core.TestPackage/XmlNodeExtensions.cs b/src/WixToolset.Core.TestPackage/XmlNodeExtensions.cs
index a7f04508..f4966f74 100644
--- a/src/WixToolset.Core.TestPackage/XmlNodeExtensions.cs
+++ b/src/WixToolset.Core.TestPackage/XmlNodeExtensions.cs
@@ -7,13 +7,28 @@ namespace WixToolset.Core.TestPackage
7 using System.Text.RegularExpressions; 7 using System.Text.RegularExpressions;
8 using System.Xml; 8 using System.Xml;
9 9
10 /// <summary>
11 /// Utility class to help compare XML in tests using string comparisons by using single quotes and stripping all namespaces.
12 /// </summary>
10 public static class XmlNodeExtensions 13 public static class XmlNodeExtensions
11 { 14 {
15 /// <summary>
16 /// Returns the node's outer XML using single quotes and stripping all namespaces.
17 /// </summary>
18 /// <param name="node"></param>
19 /// <param name="ignoredAttributesByElementName">Attributes for which the value should be set to '*'.</param>
20 /// <returns></returns>
12 public static string GetTestXml(this XmlNode node, Dictionary<string, List<string>> ignoredAttributesByElementName = null) 21 public static string GetTestXml(this XmlNode node, Dictionary<string, List<string>> ignoredAttributesByElementName = null)
13 { 22 {
14 return node.OuterXml.GetTestXml(ignoredAttributesByElementName); 23 return node.OuterXml.GetTestXml(ignoredAttributesByElementName);
15 } 24 }
16 25
26 /// <summary>
27 /// Returns the XML using single quotes and stripping all namespaces.
28 /// </summary>
29 /// <param name="xml"></param>
30 /// <param name="ignoredAttributesByElementName">Attributes for which the value should be set to '*'.</param>
31 /// <returns></returns>
17 public static string GetTestXml(this string xml, Dictionary<string, List<string>> ignoredAttributesByElementName = null) 32 public static string GetTestXml(this string xml, Dictionary<string, List<string>> ignoredAttributesByElementName = null)
18 { 33 {
19 string formattedXml; 34 string formattedXml;
diff --git a/src/WixToolset.Core.WindowsInstaller/Bind/AssignMediaCommand.cs b/src/WixToolset.Core.WindowsInstaller/Bind/AssignMediaCommand.cs
index eccc97d2..301c3246 100644
--- a/src/WixToolset.Core.WindowsInstaller/Bind/AssignMediaCommand.cs
+++ b/src/WixToolset.Core.WindowsInstaller/Bind/AssignMediaCommand.cs
@@ -115,7 +115,6 @@ namespace WixToolset.Core.WindowsInstaller.Bind
115 /// <summary> 115 /// <summary>
116 /// Assign files to cabinets based on MediaTemplate authoring. 116 /// Assign files to cabinets based on MediaTemplate authoring.
117 /// </summary> 117 /// </summary>
118 /// <param name="fileFacades">FileRowCollection</param>
119 private void AutoAssignFiles(List<MediaSymbol> mediaTable, Dictionary<MediaSymbol, List<FileFacade>> filesByCabinetMedia, List<FileFacade> uncompressedFiles) 118 private void AutoAssignFiles(List<MediaSymbol> mediaTable, Dictionary<MediaSymbol, List<FileFacade>> filesByCabinetMedia, List<FileFacade> uncompressedFiles)
120 { 119 {
121 const int MaxCabIndex = 999; 120 const int MaxCabIndex = 999;
@@ -295,7 +294,7 @@ namespace WixToolset.Core.WindowsInstaller.Bind
295 /// <summary> 294 /// <summary>
296 /// Adds a symbol to the section with cab name template filled in. 295 /// Adds a symbol to the section with cab name template filled in.
297 /// </summary> 296 /// </summary>
298 /// <param name="mediaTable"></param> 297 /// <param name="mediaTemplateSymbol"></param>
299 /// <param name="cabIndex"></param> 298 /// <param name="cabIndex"></param>
300 /// <returns></returns> 299 /// <returns></returns>
301 private MediaSymbol AddMediaSymbol(WixMediaTemplateSymbol mediaTemplateSymbol, int cabIndex) 300 private MediaSymbol AddMediaSymbol(WixMediaTemplateSymbol mediaTemplateSymbol, int cabIndex)
diff --git a/src/WixToolset.Core.WindowsInstaller/Bind/CabinetBuilder.cs b/src/WixToolset.Core.WindowsInstaller/Bind/CabinetBuilder.cs
index dce89f78..382e6515 100644
--- a/src/WixToolset.Core.WindowsInstaller/Bind/CabinetBuilder.cs
+++ b/src/WixToolset.Core.WindowsInstaller/Bind/CabinetBuilder.cs
@@ -28,6 +28,7 @@ namespace WixToolset.Core.WindowsInstaller.Bind
28 /// <summary> 28 /// <summary>
29 /// Instantiate a new CabinetBuilder. 29 /// Instantiate a new CabinetBuilder.
30 /// </summary> 30 /// </summary>
31 /// <param name="messaging"></param>
31 /// <param name="threadCount">number of threads to use</param> 32 /// <param name="threadCount">number of threads to use</param>
32 /// <param name="newCabNamesCallBackAddress">Address of Binder's callback function for Cabinet Splitting</param> 33 /// <param name="newCabNamesCallBackAddress">Address of Binder's callback function for Cabinet Splitting</param>
33 public CabinetBuilder(IMessaging messaging, int threadCount, IntPtr newCabNamesCallBackAddress) 34 public CabinetBuilder(IMessaging messaging, int threadCount, IntPtr newCabNamesCallBackAddress)
diff --git a/src/WixToolset.Core.WindowsInstaller/Bind/CabinetResolver.cs b/src/WixToolset.Core.WindowsInstaller/Bind/CabinetResolver.cs
index 189c5f01..6dbcb1a1 100644
--- a/src/WixToolset.Core.WindowsInstaller/Bind/CabinetResolver.cs
+++ b/src/WixToolset.Core.WindowsInstaller/Bind/CabinetResolver.cs
@@ -13,7 +13,7 @@ namespace WixToolset.Core.WindowsInstaller.Bind
13 using WixToolset.Extensibility.Data; 13 using WixToolset.Extensibility.Data;
14 using WixToolset.Extensibility.Services; 14 using WixToolset.Extensibility.Services;
15 15
16 public class CabinetResolver 16 internal class CabinetResolver
17 { 17 {
18 public CabinetResolver(IWixToolsetServiceProvider serviceProvider, string cabCachePath, IEnumerable<IWindowsInstallerBackendBinderExtension> backendExtensions) 18 public CabinetResolver(IWixToolsetServiceProvider serviceProvider, string cabCachePath, IEnumerable<IWindowsInstallerBackendBinderExtension> backendExtensions)
19 { 19 {
diff --git a/src/WixToolset.Core.WindowsInstaller/Bind/CabinetWorkItem.cs b/src/WixToolset.Core.WindowsInstaller/Bind/CabinetWorkItem.cs
index a451229f..48f0574e 100644
--- a/src/WixToolset.Core.WindowsInstaller/Bind/CabinetWorkItem.cs
+++ b/src/WixToolset.Core.WindowsInstaller/Bind/CabinetWorkItem.cs
@@ -18,7 +18,8 @@ namespace WixToolset.Core.WindowsInstaller.Bind
18 /// <param name="cabinetFile">The cabinet file.</param> 18 /// <param name="cabinetFile">The cabinet file.</param>
19 /// <param name="maxThreshold">Maximum threshold for each cabinet.</param> 19 /// <param name="maxThreshold">Maximum threshold for each cabinet.</param>
20 /// <param name="compressionLevel">The compression level of the cabinet.</param> 20 /// <param name="compressionLevel">The compression level of the cabinet.</param>
21 /// <param name="binderFileManager">The binder file manager.</param> 21 /// <param name="modularizationSuffix">Modularization suffix used when building a Merge Module.</param>
22 /// <!--<param name="binderFileManager">The binder file manager.</param>-->
22 public CabinetWorkItem(IEnumerable<FileFacade> fileFacades, string cabinetFile, int maxThreshold, CompressionLevel compressionLevel, string modularizationSuffix /*, BinderFileManager binderFileManager*/) 23 public CabinetWorkItem(IEnumerable<FileFacade> fileFacades, string cabinetFile, int maxThreshold, CompressionLevel compressionLevel, string modularizationSuffix /*, BinderFileManager binderFileManager*/)
23 { 24 {
24 this.CabinetFile = cabinetFile; 25 this.CabinetFile = cabinetFile;
@@ -52,10 +53,10 @@ namespace WixToolset.Core.WindowsInstaller.Bind
52 /// <value>The collection of files in this cabinet.</value> 53 /// <value>The collection of files in this cabinet.</value>
53 public IEnumerable<FileFacade> FileFacades { get; } 54 public IEnumerable<FileFacade> FileFacades { get; }
54 55
55 /// <summary> 56 // <summary>
56 /// Gets the binder file manager. 57 // Gets the binder file manager.
57 /// </summary> 58 // </summary>
58 /// <value>The binder file manager.</value> 59 // <value>The binder file manager.</value>
59 //public BinderFileManager BinderFileManager { get; private set; } 60 //public BinderFileManager BinderFileManager { get; private set; }
60 61
61 /// <summary> 62 /// <summary>
diff --git a/src/WixToolset.Core.WindowsInstaller/Bind/CreateCabinetsCommand.cs b/src/WixToolset.Core.WindowsInstaller/Bind/CreateCabinetsCommand.cs
index 5c296f74..f0acd3d4 100644
--- a/src/WixToolset.Core.WindowsInstaller/Bind/CreateCabinetsCommand.cs
+++ b/src/WixToolset.Core.WindowsInstaller/Bind/CreateCabinetsCommand.cs
@@ -90,9 +90,6 @@ namespace WixToolset.Core.WindowsInstaller.Bind
90 90
91 public IEnumerable<ITrackedFile> TrackedFiles => this.trackedFiles; 91 public IEnumerable<ITrackedFile> TrackedFiles => this.trackedFiles;
92 92
93 /// <param name="output">Output to generate image for.</param>
94 /// <param name="layoutDirectory">The directory in which the image should be layed out.</param>
95 /// <param name="compressed">Flag if source image should be compressed.</param>
96 public void Execute() 93 public void Execute()
97 { 94 {
98 this.lastCabinetAddedToMediaTable = new Dictionary<string, string>(); 95 this.lastCabinetAddedToMediaTable = new Dictionary<string, string>();
@@ -177,6 +174,7 @@ namespace WixToolset.Core.WindowsInstaller.Bind
177 /// <param name="output">Output for the current database.</param> 174 /// <param name="output">Output for the current database.</param>
178 /// <param name="cabinetDir">Directory to create cabinet in.</param> 175 /// <param name="cabinetDir">Directory to create cabinet in.</param>
179 /// <param name="mediaSymbol">Media symbol containing information about the cabinet.</param> 176 /// <param name="mediaSymbol">Media symbol containing information about the cabinet.</param>
177 /// <param name="compressionLevel">Desired compression level.</param>
180 /// <param name="fileFacades">Collection of files in this cabinet.</param> 178 /// <param name="fileFacades">Collection of files in this cabinet.</param>
181 /// <returns>created CabinetWorkItem object</returns> 179 /// <returns>created CabinetWorkItem object</returns>
182 private CabinetWorkItem CreateCabinetWorkItem(WindowsInstallerData output, string cabinetDir, MediaSymbol mediaSymbol, CompressionLevel compressionLevel, IEnumerable<FileFacade> fileFacades) 180 private CabinetWorkItem CreateCabinetWorkItem(WindowsInstallerData output, string cabinetDir, MediaSymbol mediaSymbol, CompressionLevel compressionLevel, IEnumerable<FileFacade> fileFacades)
@@ -284,7 +282,7 @@ namespace WixToolset.Core.WindowsInstaller.Bind
284 /// This callback will not be called in case there is no File splitting. i.e. MaximumCabinetSizeForLargeFileSplitting was not authored 282 /// This callback will not be called in case there is no File splitting. i.e. MaximumCabinetSizeForLargeFileSplitting was not authored
285 /// </summary> 283 /// </summary>
286 /// <param name="firstCabName">The name of splitting cabinet without extention e.g. "cab1".</param> 284 /// <param name="firstCabName">The name of splitting cabinet without extention e.g. "cab1".</param>
287 /// <param name="newCabName">The name of the new cabinet that would be formed by splitting e.g. "cab1b.cab"</param> 285 /// <param name="newCabinetName">The name of the new cabinet that would be formed by splitting e.g. "cab1b.cab"</param>
288 /// <param name="fileToken">The file token of the first file present in the splitting cabinet</param> 286 /// <param name="fileToken">The file token of the first file present in the splitting cabinet</param>
289 internal void NewCabNamesCallBack([MarshalAs(UnmanagedType.LPWStr)]string firstCabName, [MarshalAs(UnmanagedType.LPWStr)]string newCabinetName, [MarshalAs(UnmanagedType.LPWStr)]string fileToken) 287 internal void NewCabNamesCallBack([MarshalAs(UnmanagedType.LPWStr)]string firstCabName, [MarshalAs(UnmanagedType.LPWStr)]string newCabinetName, [MarshalAs(UnmanagedType.LPWStr)]string fileToken)
290 { 288 {
diff --git a/src/WixToolset.Core.WindowsInstaller/Bind/GenerateDatabaseCommand.cs b/src/WixToolset.Core.WindowsInstaller/Bind/GenerateDatabaseCommand.cs
index c8fa0370..d3c65b6a 100644
--- a/src/WixToolset.Core.WindowsInstaller/Bind/GenerateDatabaseCommand.cs
+++ b/src/WixToolset.Core.WindowsInstaller/Bind/GenerateDatabaseCommand.cs
@@ -55,7 +55,7 @@ namespace WixToolset.Core.WindowsInstaller.Bind
55 public List<ITrackedFile> GeneratedTemporaryFiles { get; } = new List<ITrackedFile>(); 55 public List<ITrackedFile> GeneratedTemporaryFiles { get; } = new List<ITrackedFile>();
56 56
57 /// <summary> 57 /// <summary>
58 /// Whether to use a subdirectory based on the <paramref name="databaseFile"/> file name for intermediate files. 58 /// Whether to use a subdirectory based on the database file name for intermediate files.
59 /// </summary> 59 /// </summary>
60 private bool SuppressAddingValidationRows { get; } 60 private bool SuppressAddingValidationRows { get; }
61 61
diff --git a/src/WixToolset.Core.WindowsInstaller/Bind/GenerateTransformCommand.cs b/src/WixToolset.Core.WindowsInstaller/Bind/GenerateTransformCommand.cs
index 121ffb1b..6dcb1096 100644
--- a/src/WixToolset.Core.WindowsInstaller/Bind/GenerateTransformCommand.cs
+++ b/src/WixToolset.Core.WindowsInstaller/Bind/GenerateTransformCommand.cs
@@ -15,7 +15,7 @@ namespace WixToolset.Core.WindowsInstaller
15 /// <summary> 15 /// <summary>
16 /// Creates a transform by diffing two outputs. 16 /// Creates a transform by diffing two outputs.
17 /// </summary> 17 /// </summary>
18 public sealed class GenerateTransformCommand 18 internal class GenerateTransformCommand
19 { 19 {
20 private const char sectionDelimiter = '/'; 20 private const char sectionDelimiter = '/';
21 private readonly IMessaging messaging; 21 private readonly IMessaging messaging;
@@ -62,10 +62,6 @@ namespace WixToolset.Core.WindowsInstaller
62 /// <summary> 62 /// <summary>
63 /// Creates a transform by diffing two outputs. 63 /// Creates a transform by diffing two outputs.
64 /// </summary> 64 /// </summary>
65 /// <param name="targetOutput">The target output.</param>
66 /// <param name="updatedOutput">The updated output.</param>
67 /// <param name="validationFlags"></param>
68 /// <returns>The transform.</returns>
69 public WindowsInstallerData Execute() 65 public WindowsInstallerData Execute()
70 { 66 {
71 var targetOutput = this.TargetOutput; 67 var targetOutput = this.TargetOutput;
diff --git a/src/WixToolset.Core.WindowsInstaller/Bind/UpdateTransformsWithFileFacades.cs b/src/WixToolset.Core.WindowsInstaller/Bind/UpdateTransformsWithFileFacades.cs
index 944fb224..4e716a47 100644
--- a/src/WixToolset.Core.WindowsInstaller/Bind/UpdateTransformsWithFileFacades.cs
+++ b/src/WixToolset.Core.WindowsInstaller/Bind/UpdateTransformsWithFileFacades.cs
@@ -384,7 +384,7 @@ namespace WixToolset.Core.WindowsInstaller.Bind
384 /// <summary> 384 /// <summary>
385 /// Signal a warning if a non-keypath file was changed in a patch without also changing the keypath file of the component. 385 /// Signal a warning if a non-keypath file was changed in a patch without also changing the keypath file of the component.
386 /// </summary> 386 /// </summary>
387 /// <param name="output">The output to validate.</param> 387 /// <param name="transform">The output to validate.</param>
388 private void ValidateFileRowChanges(WindowsInstallerData transform) 388 private void ValidateFileRowChanges(WindowsInstallerData transform)
389 { 389 {
390 var componentTable = transform.Tables["Component"]; 390 var componentTable = transform.Tables["Component"];
diff --git a/src/WixToolset.Core.WindowsInstaller/Decompile/Decompiler.cs b/src/WixToolset.Core.WindowsInstaller/Decompile/Decompiler.cs
index 2288cedf..29e15c91 100644
--- a/src/WixToolset.Core.WindowsInstaller/Decompile/Decompiler.cs
+++ b/src/WixToolset.Core.WindowsInstaller/Decompile/Decompiler.cs
@@ -248,19 +248,20 @@ namespace WixToolset.Core.WindowsInstaller
248 private XElement GetIndexedElement(string table, params string[] primaryKey) => this.IndexedElements[String.Concat(table, ':', String.Join(DecompilerConstants.PrimaryKeyDelimiterString, primaryKey))]; 248 private XElement GetIndexedElement(string table, params string[] primaryKey) => this.IndexedElements[String.Concat(table, ':', String.Join(DecompilerConstants.PrimaryKeyDelimiterString, primaryKey))];
249 249
250 /// <summary> 250 /// <summary>
251 /// Gets the element corresponding to the primary key of the given table. 251 /// Tries to get the element corresponding to the primary key of the given table.
252 /// </summary> 252 /// </summary>
253 /// <param name="table">The table corresponding to the element.</param> 253 /// <param name="row">The table corresponding to the element.</param>
254 /// <param name="primaryKey">The primary key corresponding to the element.</param> 254 /// <param name="xElement">The indexed element.</param>
255 /// <returns>The indexed element.</returns> 255 /// <returns>Whether the element was found.</returns>
256 private bool TryGetIndexedElement(WixToolset.Data.WindowsInstaller.Row row, out XElement xElement) => this.TryGetIndexedElement(row.TableDefinition.Name, out xElement, row.GetPrimaryKey(DecompilerConstants.PrimaryKeyDelimiter)); 256 private bool TryGetIndexedElement(WixToolset.Data.WindowsInstaller.Row row, out XElement xElement) => this.TryGetIndexedElement(row.TableDefinition.Name, out xElement, row.GetPrimaryKey(DecompilerConstants.PrimaryKeyDelimiter));
257 257
258 /// <summary> 258 /// <summary>
259 /// Gets the element corresponding to the primary key of the given table. 259 /// Tries to get the element corresponding to the primary key of the given table.
260 /// </summary> 260 /// </summary>
261 /// <param name="table">The table corresponding to the element.</param> 261 /// <param name="table">The table corresponding to the element.</param>
262 /// <param name="xElement">The indexed element.</param>
262 /// <param name="primaryKey">The primary key corresponding to the element.</param> 263 /// <param name="primaryKey">The primary key corresponding to the element.</param>
263 /// <returns>The indexed element.</returns> 264 /// <returns>Whether the element was found.</returns>
264 private bool TryGetIndexedElement(string table, out XElement xElement, params string[] primaryKey) => this.IndexedElements.TryGetValue(String.Concat(table, ':', String.Join(DecompilerConstants.PrimaryKeyDelimiterString, primaryKey)), out xElement); 265 private bool TryGetIndexedElement(string table, out XElement xElement, params string[] primaryKey) => this.IndexedElements.TryGetValue(String.Concat(table, ':', String.Join(DecompilerConstants.PrimaryKeyDelimiterString, primaryKey)), out xElement);
265 266
266 /// <summary> 267 /// <summary>
@@ -276,8 +277,9 @@ namespace WixToolset.Core.WindowsInstaller
276 /// <summary> 277 /// <summary>
277 /// Index an element by its corresponding row. 278 /// Index an element by its corresponding row.
278 /// </summary> 279 /// </summary>
279 /// <param name="row">The row corresponding to the element.</param>
280 /// <param name="element">The element to index.</param> 280 /// <param name="element">The element to index.</param>
281 /// <param name="table"></param>
282 /// <param name="primaryKey"></param>
281 private void IndexElement(XElement element, string table, params string[] primaryKey) 283 private void IndexElement(XElement element, string table, params string[] primaryKey)
282 { 284 {
283 this.IndexedElements.Add(String.Concat(table, ':', String.Join(DecompilerConstants.PrimaryKeyDelimiterString, primaryKey)), element); 285 this.IndexedElements.Add(String.Concat(table, ':', String.Join(DecompilerConstants.PrimaryKeyDelimiterString, primaryKey)), element);
@@ -342,7 +344,7 @@ namespace WixToolset.Core.WindowsInstaller
342 /// Set the common control attributes in a control element. 344 /// Set the common control attributes in a control element.
343 /// </summary> 345 /// </summary>
344 /// <param name="attributes">The control attributes.</param> 346 /// <param name="attributes">The control attributes.</param>
345 /// <param name="control">The control element.</param> 347 /// <param name="xControl">The control element.</param>
346 private static void SetControlAttributes(int attributes, XElement xControl) 348 private static void SetControlAttributes(int attributes, XElement xControl)
347 { 349 {
348 if (0 == (attributes & WindowsInstallerConstants.MsidbControlAttributesEnabled)) 350 if (0 == (attributes & WindowsInstallerConstants.MsidbControlAttributesEnabled))
@@ -2424,6 +2426,7 @@ namespace WixToolset.Core.WindowsInstaller
2424 /// Initialize decompilation. 2426 /// Initialize decompilation.
2425 /// </summary> 2427 /// </summary>
2426 /// <param name="tables">The collection of all tables.</param> 2428 /// <param name="tables">The collection of all tables.</param>
2429 /// <param name="codepage"></param>
2427 private void InitializeDecompile(TableIndexedCollection tables, int codepage) 2430 private void InitializeDecompile(TableIndexedCollection tables, int codepage)
2428 { 2431 {
2429 // reset all the state information 2432 // reset all the state information
@@ -2983,7 +2986,7 @@ namespace WixToolset.Core.WindowsInstaller
2983 /// <summary> 2986 /// <summary>
2984 /// Decompile the _SummaryInformation table. 2987 /// Decompile the _SummaryInformation table.
2985 /// </summary> 2988 /// </summary>
2986 /// <param name="table">The table to decompile.</param> 2989 /// <param name="tables">The tables to decompile.</param>
2987 private void FinalizeSummaryInformationStream(TableIndexedCollection tables) 2990 private void FinalizeSummaryInformationStream(TableIndexedCollection tables)
2988 { 2991 {
2989 var table = tables["_SummaryInformation"]; 2992 var table = tables["_SummaryInformation"];
diff --git a/src/WixToolset.Core.WindowsInstaller/Msi/MsiInterop.cs b/src/WixToolset.Core.WindowsInstaller/Msi/MsiInterop.cs
index 8d195033..ae585612 100644
--- a/src/WixToolset.Core.WindowsInstaller/Msi/MsiInterop.cs
+++ b/src/WixToolset.Core.WindowsInstaller/Msi/MsiInterop.cs
@@ -177,7 +177,7 @@ namespace WixToolset.Core.WindowsInstaller.Msi
177 /// <summary> 177 /// <summary>
178 /// Class exposing static functions and structs from MSI API. 178 /// Class exposing static functions and structs from MSI API.
179 /// </summary> 179 /// </summary>
180 public sealed class MsiInterop 180 internal sealed class MsiInterop
181 { 181 {
182 // Patching constants 182 // Patching constants
183 public const int MsiMaxStreamNameLength = 62; // http://msdn2.microsoft.com/library/aa370551.aspx 183 public const int MsiMaxStreamNameLength = 62; // http://msdn2.microsoft.com/library/aa370551.aspx
diff --git a/src/WixToolset.Core.WindowsInstaller/RowDictionary.cs b/src/WixToolset.Core.WindowsInstaller/RowDictionary.cs
index 101ebefd..bbb97c25 100644
--- a/src/WixToolset.Core.WindowsInstaller/RowDictionary.cs
+++ b/src/WixToolset.Core.WindowsInstaller/RowDictionary.cs
@@ -7,13 +7,13 @@ namespace WixToolset.Core.WindowsInstaller
7 using WixToolset.Data.WindowsInstaller; 7 using WixToolset.Data.WindowsInstaller;
8 8
9 /// <summary> 9 /// <summary>
10 /// A dictionary of rows. Unlike the <see cref="RowIndexedCollection"/> this 10 /// A dictionary of rows. Unlike the RowIndexedList this
11 /// will throw when multiple rows with the same key are added. 11 /// will throw when multiple rows with the same key are added.
12 /// </summary> 12 /// </summary>
13 public sealed class RowDictionary<T> : Dictionary<string, T> where T : Row 13 internal sealed class RowDictionary<T> : Dictionary<string, T> where T : Row
14 { 14 {
15 /// <summary> 15 /// <summary>
16 /// Creates an empty <see cref="RowDictionary"/>. 16 /// Creates an empty <see cref="RowDictionary{T}"/>.
17 /// </summary> 17 /// </summary>
18 public RowDictionary() 18 public RowDictionary()
19 : base(StringComparer.InvariantCulture) 19 : base(StringComparer.InvariantCulture)
@@ -21,9 +21,9 @@ namespace WixToolset.Core.WindowsInstaller
21 } 21 }
22 22
23 /// <summary> 23 /// <summary>
24 /// Creates and populates a <see cref="RowDictionary"/> with the rows from the given enumerator. 24 /// Creates and populates a <see cref="RowDictionary{T}"/> with the rows from the given enumerator.
25 /// </summary> 25 /// </summary>
26 /// <param name="Rows">Rows to add.</param> 26 /// <param name="rows">Rows to add.</param>
27 public RowDictionary(IEnumerable<T> rows) 27 public RowDictionary(IEnumerable<T> rows)
28 : this() 28 : this()
29 { 29 {
@@ -34,7 +34,7 @@ namespace WixToolset.Core.WindowsInstaller
34 } 34 }
35 35
36 /// <summary> 36 /// <summary>
37 /// Creates and populates a <see cref="RowDictionary"/> with the rows from the given <see cref="Table"/>. 37 /// Creates and populates a <see cref="RowDictionary{T}"/> with the rows from the given <see cref="Table"/>.
38 /// </summary> 38 /// </summary>
39 /// <param name="table">The table to index.</param> 39 /// <param name="table">The table to index.</param>
40 /// <remarks> 40 /// <remarks>
diff --git a/src/WixToolset.Core.WindowsInstaller/Unbinder.cs b/src/WixToolset.Core.WindowsInstaller/Unbinder.cs
index 2ca0b557..a2f02269 100644
--- a/src/WixToolset.Core.WindowsInstaller/Unbinder.cs
+++ b/src/WixToolset.Core.WindowsInstaller/Unbinder.cs
@@ -11,7 +11,7 @@ namespace WixToolset.Core
11 /// <summary> 11 /// <summary>
12 /// Unbinder core of the WiX toolset. 12 /// Unbinder core of the WiX toolset.
13 /// </summary> 13 /// </summary>
14 public sealed class Unbinder 14 internal sealed class Unbinder
15 { 15 {
16 public IEnumerable<IBackendFactory> BackendFactories { get; } 16 public IEnumerable<IBackendFactory> BackendFactories { get; }
17 17
diff --git a/src/WixToolset.Core.WindowsInstaller/Validator.cs b/src/WixToolset.Core.WindowsInstaller/Validator.cs
index 72b09ebc..e8117de7 100644
--- a/src/WixToolset.Core.WindowsInstaller/Validator.cs
+++ b/src/WixToolset.Core.WindowsInstaller/Validator.cs
@@ -22,7 +22,7 @@ namespace WixToolset.Core.WindowsInstaller
22 /// <summary> 22 /// <summary>
23 /// Runs internal consistency evaluators (ICEs) from cub files against a database. 23 /// Runs internal consistency evaluators (ICEs) from cub files against a database.
24 /// </summary> 24 /// </summary>
25 public sealed class Validator 25 internal sealed class Validator
26 { 26 {
27 private string actionName; 27 private string actionName;
28 private StringCollection cubeFiles; 28 private StringCollection cubeFiles;
diff --git a/src/WixToolset.Core.WindowsInstaller/ValidatorExtension.cs b/src/WixToolset.Core.WindowsInstaller/ValidatorExtension.cs
index 5ce04147..968ab387 100644
--- a/src/WixToolset.Core.WindowsInstaller/ValidatorExtension.cs
+++ b/src/WixToolset.Core.WindowsInstaller/ValidatorExtension.cs
@@ -52,7 +52,7 @@ namespace WixToolset.Extensibility
52 /// Called at the beginning of the validation of a database file. 52 /// Called at the beginning of the validation of a database file.
53 /// </summary> 53 /// </summary>
54 /// <remarks> 54 /// <remarks>
55 /// <para>The <see cref="Validator"/> will set 55 /// <para>The Validator will set
56 /// <see cref="DatabaseFile"/> before calling InitializeValidator.</para> 56 /// <see cref="DatabaseFile"/> before calling InitializeValidator.</para>
57 /// <para><b>Notes to Inheritors:</b> When overriding 57 /// <para><b>Notes to Inheritors:</b> When overriding
58 /// <b>InitializeValidator</b> in a derived class, be sure to call 58 /// <b>InitializeValidator</b> in a derived class, be sure to call
@@ -83,7 +83,7 @@ namespace WixToolset.Extensibility
83 } 83 }
84 84
85 /// <summary> 85 /// <summary>
86 /// Logs a message from the <see cref="Validator"/>. 86 /// Logs a message from the Validator.
87 /// </summary> 87 /// </summary>
88 /// <param name="message">A <see cref="String"/> of tab-delmited tokens 88 /// <param name="message">A <see cref="String"/> of tab-delmited tokens
89 /// in the validation message.</param> 89 /// in the validation message.</param>
@@ -93,7 +93,7 @@ namespace WixToolset.Extensibility
93 } 93 }
94 94
95 /// <summary> 95 /// <summary>
96 /// Logs a message from the <see cref="Validator"/>. 96 /// Logs a message from the Validator.
97 /// </summary> 97 /// </summary>
98 /// <param name="message">A <see cref="String"/> of tab-delmited tokens 98 /// <param name="message">A <see cref="String"/> of tab-delmited tokens
99 /// in the validation message.</param> 99 /// in the validation message.</param>
diff --git a/src/WixToolset.Core.WindowsInstaller/WixToolset.Core.WindowsInstaller.csproj b/src/WixToolset.Core.WindowsInstaller/WixToolset.Core.WindowsInstaller.csproj
index 9836acb8..900115ec 100644
--- a/src/WixToolset.Core.WindowsInstaller/WixToolset.Core.WindowsInstaller.csproj
+++ b/src/WixToolset.Core.WindowsInstaller/WixToolset.Core.WindowsInstaller.csproj
@@ -9,6 +9,7 @@
9 <Title>WiX Toolset Core Windows Installer</Title> 9 <Title>WiX Toolset Core Windows Installer</Title>
10 <DebugType>embedded</DebugType> 10 <DebugType>embedded</DebugType>
11 <PublishRepositoryUrl>true</PublishRepositoryUrl> 11 <PublishRepositoryUrl>true</PublishRepositoryUrl>
12 <CreateDocumentationFile>true</CreateDocumentationFile>
12 </PropertyGroup> 13 </PropertyGroup>
13 14
14 <ItemGroup> 15 <ItemGroup>
@@ -17,7 +18,7 @@
17 18
18 <ItemGroup> 19 <ItemGroup>
19 <PackageReference Include="WixToolset.Core.Native" Version="4.0.*" /> 20 <PackageReference Include="WixToolset.Core.Native" Version="4.0.*" />
20 <PackageReference Include="WixToolset.Dtf.WindowsInstaller" Version="4.0.*" NoWarn="NU1701" /> 21 <PackageReference Include="WixToolset.Dtf.WindowsInstaller" Version="4.0.*" />
21 </ItemGroup> 22 </ItemGroup>
22 23
23 <ItemGroup> 24 <ItemGroup>
diff --git a/src/WixToolset.Core.WindowsInstaller/WixToolsetCoreServiceProviderExtensions.cs b/src/WixToolset.Core.WindowsInstaller/WixToolsetCoreServiceProviderExtensions.cs
index 15fbf679..c69f1af1 100644
--- a/src/WixToolset.Core.WindowsInstaller/WixToolsetCoreServiceProviderExtensions.cs
+++ b/src/WixToolset.Core.WindowsInstaller/WixToolsetCoreServiceProviderExtensions.cs
@@ -7,8 +7,16 @@ namespace WixToolset.Core.WindowsInstaller
7 using WixToolset.Core.WindowsInstaller.ExtensibilityServices; 7 using WixToolset.Core.WindowsInstaller.ExtensibilityServices;
8 using WixToolset.Extensibility.Services; 8 using WixToolset.Extensibility.Services;
9 9
10 /// <summary>
11 /// Extensions methods for adding WindowsInstaller services.
12 /// </summary>
10 public static class WixToolsetCoreServiceProviderExtensions 13 public static class WixToolsetCoreServiceProviderExtensions
11 { 14 {
15 /// <summary>
16 /// Adds WindowsInstaller services.
17 /// </summary>
18 /// <param name="coreProvider"></param>
19 /// <returns></returns>
12 public static IWixToolsetCoreServiceProvider AddWindowsInstallerBackend(this IWixToolsetCoreServiceProvider coreProvider) 20 public static IWixToolsetCoreServiceProvider AddWindowsInstallerBackend(this IWixToolsetCoreServiceProvider coreProvider)
13 { 21 {
14 AddServices(coreProvider); 22 AddServices(coreProvider);
diff --git a/src/WixToolset.Core/Bind/ExtractEmbeddedFilesCommand.cs b/src/WixToolset.Core/Bind/ExtractEmbeddedFilesCommand.cs
index bb9ab844..29fba6b2 100644
--- a/src/WixToolset.Core/Bind/ExtractEmbeddedFilesCommand.cs
+++ b/src/WixToolset.Core/Bind/ExtractEmbeddedFilesCommand.cs
@@ -9,6 +9,7 @@ namespace WixToolset.Core.Bind
9 using WixToolset.Extensibility.Data; 9 using WixToolset.Extensibility.Data;
10 using WixToolset.Extensibility.Services; 10 using WixToolset.Extensibility.Services;
11 11
12#pragma warning disable 1591 // TODO: this shouldn't be public, need interface in Extensibility
12 public class ExtractEmbeddedFilesCommand 13 public class ExtractEmbeddedFilesCommand
13 { 14 {
14 public ExtractEmbeddedFilesCommand(IBackendHelper backendHelper, IEnumerable<IExpectedExtractFile> embeddedFiles) 15 public ExtractEmbeddedFilesCommand(IBackendHelper backendHelper, IEnumerable<IExpectedExtractFile> embeddedFiles)
diff --git a/src/WixToolset.Core/Bind/FileFacade.cs b/src/WixToolset.Core/Bind/FileFacade.cs
index 075d3d34..ec4e9725 100644
--- a/src/WixToolset.Core/Bind/FileFacade.cs
+++ b/src/WixToolset.Core/Bind/FileFacade.cs
@@ -9,6 +9,7 @@ namespace WixToolset.Core.Bind
9 using WixToolset.Data.WindowsInstaller; 9 using WixToolset.Data.WindowsInstaller;
10 using WixToolset.Data.WindowsInstaller.Rows; 10 using WixToolset.Data.WindowsInstaller.Rows;
11 11
12#pragma warning disable 1591 // TODO: this shouldn't be public, need interface in Extensibility
12 public class FileFacade 13 public class FileFacade
13 { 14 {
14 public FileFacade(FileSymbol file, AssemblySymbol assembly) 15 public FileFacade(FileSymbol file, AssemblySymbol assembly)
diff --git a/src/WixToolset.Core/Bind/FileResolver.cs b/src/WixToolset.Core/Bind/FileResolver.cs
index ba71c6c9..eb878239 100644
--- a/src/WixToolset.Core/Bind/FileResolver.cs
+++ b/src/WixToolset.Core/Bind/FileResolver.cs
@@ -67,7 +67,7 @@ namespace WixToolset.Core.Bind
67 /// Resolves the source path of a file using binder extensions. 67 /// Resolves the source path of a file using binder extensions.
68 /// </summary> 68 /// </summary>
69 /// <param name="source">Original source value.</param> 69 /// <param name="source">Original source value.</param>
70 /// <param name="type">Optional type of source file being resolved.</param> 70 /// <param name="symbolDefinition">Optional type of source file being resolved.</param>
71 /// <param name="sourceLineNumbers">Optional source line of source file being resolved.</param> 71 /// <param name="sourceLineNumbers">Optional source line of source file being resolved.</param>
72 /// <param name="bindStage">The binding stage used to determine what collection of bind paths will be used</param> 72 /// <param name="bindStage">The binding stage used to determine what collection of bind paths will be used</param>
73 /// <param name="alreadyCheckedPaths">Optional collection of paths already checked.</param> 73 /// <param name="alreadyCheckedPaths">Optional collection of paths already checked.</param>
diff --git a/src/WixToolset.Core/Bind/ResolveDelayedFieldsCommand.cs b/src/WixToolset.Core/Bind/ResolveDelayedFieldsCommand.cs
index ebabed47..14b6d011 100644
--- a/src/WixToolset.Core/Bind/ResolveDelayedFieldsCommand.cs
+++ b/src/WixToolset.Core/Bind/ResolveDelayedFieldsCommand.cs
@@ -10,6 +10,7 @@ namespace WixToolset.Core.Bind
10 using WixToolset.Extensibility.Data; 10 using WixToolset.Extensibility.Data;
11 using WixToolset.Extensibility.Services; 11 using WixToolset.Extensibility.Services;
12 12
13#pragma warning disable 1591 // TODO: this shouldn't be public, need interface in Extensibility
13 /// <summary> 14 /// <summary>
14 /// Resolves the fields which had variables that needed to be resolved after the file information 15 /// Resolves the fields which had variables that needed to be resolved after the file information
15 /// was loaded. 16 /// was loaded.
@@ -19,6 +20,7 @@ namespace WixToolset.Core.Bind
19 /// <summary> 20 /// <summary>
20 /// Resolve delayed fields. 21 /// Resolve delayed fields.
21 /// </summary> 22 /// </summary>
23 /// <param name="messaging"></param>
22 /// <param name="delayedFields">The fields which had resolution delayed.</param> 24 /// <param name="delayedFields">The fields which had resolution delayed.</param>
23 /// <param name="variableCache">The file information to use when resolving variables.</param> 25 /// <param name="variableCache">The file information to use when resolving variables.</param>
24 public ResolveDelayedFieldsCommand(IMessaging messaging, IEnumerable<IDelayedField> delayedFields, Dictionary<string, string> variableCache) 26 public ResolveDelayedFieldsCommand(IMessaging messaging, IEnumerable<IDelayedField> delayedFields, Dictionary<string, string> variableCache)
diff --git a/src/WixToolset.Core/CommandLine/CommandLineParser.cs b/src/WixToolset.Core/CommandLine/CommandLineParser.cs
index 2ee1e9ae..1438d820 100644
--- a/src/WixToolset.Core/CommandLine/CommandLineParser.cs
+++ b/src/WixToolset.Core/CommandLine/CommandLineParser.cs
@@ -192,7 +192,6 @@ namespace WixToolset.Core.CommandLine
192 /// or DirectoryInfo.GetFiles. The only way to get this directory path is manually since 192 /// or DirectoryInfo.GetFiles. The only way to get this directory path is manually since
193 /// Path.GetDirectoryName does not support ".." in the path. 193 /// Path.GetDirectoryName does not support ".." in the path.
194 /// </remarks> 194 /// </remarks>
195 /// <exception cref="WixFileNotFoundException">Throws WixFileNotFoundException if no file matching the pattern can be found.</exception>
196 private string[] GetFiles(string searchPath, string fileType) 195 private string[] GetFiles(string searchPath, string fileType)
197 { 196 {
198 if (null == searchPath) 197 if (null == searchPath)
diff --git a/src/WixToolset.Core/Common.cs b/src/WixToolset.Core/Common.cs
index 1bb895be..79f06135 100644
--- a/src/WixToolset.Core/Common.cs
+++ b/src/WixToolset.Core/Common.cs
@@ -21,9 +21,21 @@ namespace WixToolset.Core
21 public static class Common 21 public static class Common
22 { 22 {
23 // TODO: Find a place to put all of these so they doesn't have to be public and exposed by WixToolset.Core.dll 23 // TODO: Find a place to put all of these so they doesn't have to be public and exposed by WixToolset.Core.dll
24 /// <summary>
25 ///
26 /// </summary>
24 public const string UpgradeDetectedProperty = "WIX_UPGRADE_DETECTED"; 27 public const string UpgradeDetectedProperty = "WIX_UPGRADE_DETECTED";
28 /// <summary>
29 ///
30 /// </summary>
25 public const string UpgradePreventedCondition = "NOT WIX_UPGRADE_DETECTED"; 31 public const string UpgradePreventedCondition = "NOT WIX_UPGRADE_DETECTED";
32 /// <summary>
33 ///
34 /// </summary>
26 public const string DowngradeDetectedProperty = "WIX_DOWNGRADE_DETECTED"; 35 public const string DowngradeDetectedProperty = "WIX_DOWNGRADE_DETECTED";
36 /// <summary>
37 ///
38 /// </summary>
27 public const string DowngradePreventedCondition = "NOT WIX_DOWNGRADE_DETECTED"; 39 public const string DowngradePreventedCondition = "NOT WIX_DOWNGRADE_DETECTED";
28 40
29 //------------------------------------------------------------------------------------------------- 41 //-------------------------------------------------------------------------------------------------
@@ -51,6 +63,9 @@ namespace WixToolset.Core
51 // GENERIC_WRITE (0x40000000L) 63 // GENERIC_WRITE (0x40000000L)
52 // GENERIC_READ (0x80000000L) 64 // GENERIC_READ (0x80000000L)
53 // TODO: Find a place to put this that it doesn't have to be public and exposed by WixToolset.Core.dll 65 // TODO: Find a place to put this that it doesn't have to be public and exposed by WixToolset.Core.dll
66 /// <summary>
67 ///
68 /// </summary>
54 public static readonly string[] GenericPermissions = { "GenericAll", "GenericExecute", "GenericWrite", "GenericRead" }; 69 public static readonly string[] GenericPermissions = { "GenericAll", "GenericExecute", "GenericWrite", "GenericRead" };
55 70
56 // Standard Access Rights (per WinNT.h) 71 // Standard Access Rights (per WinNT.h)
@@ -61,6 +76,9 @@ namespace WixToolset.Core
61 // WRITE_OWNER (0x00080000L) 76 // WRITE_OWNER (0x00080000L)
62 // SYNCHRONIZE (0x00100000L) 77 // SYNCHRONIZE (0x00100000L)
63 // TODO: Find a place to put this that it doesn't have to be public and exposed by WixToolset.Core.dll 78 // TODO: Find a place to put this that it doesn't have to be public and exposed by WixToolset.Core.dll
79 /// <summary>
80 ///
81 /// </summary>
64 public static readonly string[] StandardPermissions = { "Delete", "ReadPermission", "ChangePermission", "TakeOwnership", "Synchronize" }; 82 public static readonly string[] StandardPermissions = { "Delete", "ReadPermission", "ChangePermission", "TakeOwnership", "Synchronize" };
65 83
66 // Object-Specific Access Rights 84 // Object-Specific Access Rights
@@ -77,11 +95,17 @@ namespace WixToolset.Core
77 // FILE_READ_ATTRIBUTES ( 0x0080 ) 95 // FILE_READ_ATTRIBUTES ( 0x0080 )
78 // FILE_WRITE_ATTRIBUTES ( 0x0100 ) 96 // FILE_WRITE_ATTRIBUTES ( 0x0100 )
79 // TODO: Find a place to put this that it doesn't have to be public and exposed by WixToolset.Core.dll 97 // TODO: Find a place to put this that it doesn't have to be public and exposed by WixToolset.Core.dll
98 /// <summary>
99 ///
100 /// </summary>
80 public static readonly string[] FolderPermissions = { "Read", "CreateFile", "CreateChild", "ReadExtendedAttributes", "WriteExtendedAttributes", "Traverse", "DeleteChild", "ReadAttributes", "WriteAttributes" }; 101 public static readonly string[] FolderPermissions = { "Read", "CreateFile", "CreateChild", "ReadExtendedAttributes", "WriteExtendedAttributes", "Traverse", "DeleteChild", "ReadAttributes", "WriteAttributes" };
81 102
82 // Registry Access Rights (per TODO) 103 // Registry Access Rights (per TODO)
83 // ---------------------- 104 // ----------------------
84 // TODO: Find a place to put this that it doesn't have to be public and exposed by WixToolset.Core.dll 105 // TODO: Find a place to put this that it doesn't have to be public and exposed by WixToolset.Core.dll
106 /// <summary>
107 ///
108 /// </summary>
85 public static readonly string[] RegistryPermissions = { "Read", "Write", "CreateSubkeys", "EnumerateSubkeys", "Notify", "CreateLink" }; 109 public static readonly string[] RegistryPermissions = { "Read", "Write", "CreateSubkeys", "EnumerateSubkeys", "Notify", "CreateLink" };
86 110
87 // File Access Rights (per WinNT.h) 111 // File Access Rights (per WinNT.h)
@@ -99,6 +123,9 @@ namespace WixToolset.Core
99 // STANDARD_RIGHTS_REQUIRED (0x000F0000L) 123 // STANDARD_RIGHTS_REQUIRED (0x000F0000L)
100 // FILE_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED | SYNCHRONIZE | 0x1FF) 124 // FILE_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED | SYNCHRONIZE | 0x1FF)
101 // TODO: Find a place to put this that it doesn't have to be public and exposed by WixToolset.Core.dll 125 // TODO: Find a place to put this that it doesn't have to be public and exposed by WixToolset.Core.dll
126 /// <summary>
127 ///
128 /// </summary>
102 public static readonly string[] FilePermissions = { "Read", "Write", "Append", "ReadExtendedAttributes", "WriteExtendedAttributes", "Execute", "FileAllRights", "ReadAttributes", "WriteAttributes" }; 129 public static readonly string[] FilePermissions = { "Read", "Write", "Append", "ReadExtendedAttributes", "WriteExtendedAttributes", "Execute", "FileAllRights", "ReadAttributes", "WriteAttributes" };
103 130
104 internal static readonly char[] IllegalLongFilenameCharacters = new[] { '\\', '/', '?', '*', '|', '>', '<', ':', '\"' }; // illegal: \ / ? | > < : / * " 131 internal static readonly char[] IllegalLongFilenameCharacters = new[] { '\\', '/', '?', '*', '|', '>', '<', ':', '\"' }; // illegal: \ / ? | > < : / * "
@@ -596,10 +623,10 @@ namespace WixToolset.Core
596 /// <summary> 623 /// <summary>
597 /// Get an attribute value. 624 /// Get an attribute value.
598 /// </summary> 625 /// </summary>
626 /// <param name="messaging"></param>
599 /// <param name="sourceLineNumbers">Source line information about the owner element.</param> 627 /// <param name="sourceLineNumbers">Source line information about the owner element.</param>
600 /// <param name="attribute">The attribute containing the value to get.</param> 628 /// <param name="attribute">The attribute containing the value to get.</param>
601 /// <param name="emptyRule">A rule for the contents of the value. If the contents do not follow the rule, an error is thrown.</param> 629 /// <param name="emptyRule">A rule for the contents of the value. If the contents do not follow the rule, an error is thrown.</param>
602 /// <param name="messageHandler">A delegate that receives error messages.</param>
603 /// <returns>The attribute's value.</returns> 630 /// <returns>The attribute's value.</returns>
604 internal static string GetAttributeValue(IMessaging messaging, SourceLineNumber sourceLineNumbers, XAttribute attribute, EmptyRule emptyRule) 631 internal static string GetAttributeValue(IMessaging messaging, SourceLineNumber sourceLineNumbers, XAttribute attribute, EmptyRule emptyRule)
605 { 632 {
@@ -641,9 +668,9 @@ namespace WixToolset.Core
641 /// <summary> 668 /// <summary>
642 /// Get an identifier attribute value and displays an error for an illegal identifier value. 669 /// Get an identifier attribute value and displays an error for an illegal identifier value.
643 /// </summary> 670 /// </summary>
671 /// <param name="messaging"></param>
644 /// <param name="sourceLineNumbers">Source line information about the owner element.</param> 672 /// <param name="sourceLineNumbers">Source line information about the owner element.</param>
645 /// <param name="attribute">The attribute containing the value to get.</param> 673 /// <param name="attribute">The attribute containing the value to get.</param>
646 /// <param name="messageHandler">A delegate that receives error messages.</param>
647 /// <returns>The attribute's identifier value or a special value if an error occurred.</returns> 674 /// <returns>The attribute's identifier value or a special value if an error occurred.</returns>
648 internal static string GetAttributeIdentifierValue(IMessaging messaging, SourceLineNumber sourceLineNumbers, XAttribute attribute) 675 internal static string GetAttributeIdentifierValue(IMessaging messaging, SourceLineNumber sourceLineNumbers, XAttribute attribute)
649 { 676 {
@@ -676,11 +703,11 @@ namespace WixToolset.Core
676 /// <summary> 703 /// <summary>
677 /// Get an integer attribute value and displays an error for an illegal integer value. 704 /// Get an integer attribute value and displays an error for an illegal integer value.
678 /// </summary> 705 /// </summary>
706 /// <param name="messaging"></param>
679 /// <param name="sourceLineNumbers">Source line information about the owner element.</param> 707 /// <param name="sourceLineNumbers">Source line information about the owner element.</param>
680 /// <param name="attribute">The attribute containing the value to get.</param> 708 /// <param name="attribute">The attribute containing the value to get.</param>
681 /// <param name="minimum">The minimum legal value.</param> 709 /// <param name="minimum">The minimum legal value.</param>
682 /// <param name="maximum">The maximum legal value.</param> 710 /// <param name="maximum">The maximum legal value.</param>
683 /// <param name="messageHandler">A delegate that receives error messages.</param>
684 /// <returns>The attribute's integer value or a special value if an error occurred during conversion.</returns> 711 /// <returns>The attribute's integer value or a special value if an error occurred during conversion.</returns>
685 public static int GetAttributeIntegerValue(IMessaging messaging, SourceLineNumber sourceLineNumbers, XAttribute attribute, int minimum, int maximum) 712 public static int GetAttributeIntegerValue(IMessaging messaging, SourceLineNumber sourceLineNumbers, XAttribute attribute, int minimum, int maximum)
686 { 713 {
@@ -715,9 +742,9 @@ namespace WixToolset.Core
715 /// <summary> 742 /// <summary>
716 /// Gets a yes/no value and displays an error for an illegal yes/no value. 743 /// Gets a yes/no value and displays an error for an illegal yes/no value.
717 /// </summary> 744 /// </summary>
745 /// <param name="messaging"></param>
718 /// <param name="sourceLineNumbers">Source line information about the owner element.</param> 746 /// <param name="sourceLineNumbers">Source line information about the owner element.</param>
719 /// <param name="attribute">The attribute containing the value to get.</param> 747 /// <param name="attribute">The attribute containing the value to get.</param>
720 /// <param name="messageHandler">A delegate that receives error messages.</param>
721 /// <returns>The attribute's YesNoType value.</returns> 748 /// <returns>The attribute's YesNoType value.</returns>
722 internal static YesNoType GetAttributeYesNoValue(IMessaging messaging, SourceLineNumber sourceLineNumbers, XAttribute attribute) 749 internal static YesNoType GetAttributeYesNoValue(IMessaging messaging, SourceLineNumber sourceLineNumbers, XAttribute attribute)
723 { 750 {
@@ -833,6 +860,7 @@ namespace WixToolset.Core
833 /// <summary> 860 /// <summary>
834 /// Display an unexpected attribute error. 861 /// Display an unexpected attribute error.
835 /// </summary> 862 /// </summary>
863 /// <param name="messaging"></param>
836 /// <param name="sourceLineNumbers">Source line information about the owner element.</param> 864 /// <param name="sourceLineNumbers">Source line information about the owner element.</param>
837 /// <param name="attribute">The attribute.</param> 865 /// <param name="attribute">The attribute.</param>
838 public static void UnexpectedAttribute(IMessaging messaging, SourceLineNumber sourceLineNumbers, XAttribute attribute) 866 public static void UnexpectedAttribute(IMessaging messaging, SourceLineNumber sourceLineNumbers, XAttribute attribute)
@@ -848,6 +876,7 @@ namespace WixToolset.Core
848 /// <summary> 876 /// <summary>
849 /// Display an unsupported extension attribute error. 877 /// Display an unsupported extension attribute error.
850 /// </summary> 878 /// </summary>
879 /// <param name="messaging"></param>
851 /// <param name="sourceLineNumbers">Source line information about the owner element.</param> 880 /// <param name="sourceLineNumbers">Source line information about the owner element.</param>
852 /// <param name="extensionAttribute">The extension attribute.</param> 881 /// <param name="extensionAttribute">The extension attribute.</param>
853 internal static void UnsupportedExtensionAttribute(IMessaging messaging, SourceLineNumber sourceLineNumbers, XAttribute extensionAttribute) 882 internal static void UnsupportedExtensionAttribute(IMessaging messaging, SourceLineNumber sourceLineNumbers, XAttribute extensionAttribute)
diff --git a/src/WixToolset.Core/Compiler.cs b/src/WixToolset.Core/Compiler.cs
index addb9750..62ea8aaf 100644
--- a/src/WixToolset.Core/Compiler.cs
+++ b/src/WixToolset.Core/Compiler.cs
@@ -886,7 +886,7 @@ namespace WixToolset.Core
886 /// Parses an instance element. 886 /// Parses an instance element.
887 /// </summary> 887 /// </summary>
888 /// <param name="node">Element to parse.</param> 888 /// <param name="node">Element to parse.</param>
889 /// <param name="componentId">Identifier of instance property.</param> 889 /// <param name="propertyId">Identifier of instance property.</param>
890 private void ParseInstanceElement(XElement node, string propertyId) 890 private void ParseInstanceElement(XElement node, string propertyId)
891 { 891 {
892 var sourceLineNumbers = Preprocessor.GetSourceLineNumbers(node); 892 var sourceLineNumbers = Preprocessor.GetSourceLineNumbers(node);
@@ -1641,6 +1641,7 @@ namespace WixToolset.Core
1641 /// Parses a product search element. 1641 /// Parses a product search element.
1642 /// </summary> 1642 /// </summary>
1643 /// <param name="node">Element to parse.</param> 1643 /// <param name="node">Element to parse.</param>
1644 /// <param name="propertyId"></param>
1644 /// <returns>Signature for search element.</returns> 1645 /// <returns>Signature for search element.</returns>
1645 private void ParseProductSearchElement(XElement node, string propertyId) 1646 private void ParseProductSearchElement(XElement node, string propertyId)
1646 { 1647 {
@@ -2570,6 +2571,8 @@ namespace WixToolset.Core
2570 /// Parses a component group element. 2571 /// Parses a component group element.
2571 /// </summary> 2572 /// </summary>
2572 /// <param name="node">Element to parse.</param> 2573 /// <param name="node">Element to parse.</param>
2574 /// <param name="parentType"></param>
2575 /// <param name="parentId"></param>
2573 [SuppressMessage("Microsoft.Performance", "CA1800:DoNotCastUnnecessarily")] 2576 [SuppressMessage("Microsoft.Performance", "CA1800:DoNotCastUnnecessarily")]
2574 private void ParseComponentGroupElement(XElement node, ComplexReferenceParentType parentType, string parentId) 2577 private void ParseComponentGroupElement(XElement node, ComplexReferenceParentType parentType, string parentId)
2575 { 2578 {
@@ -5024,6 +5027,8 @@ namespace WixToolset.Core
5024 /// Parses a feature group element. 5027 /// Parses a feature group element.
5025 /// </summary> 5028 /// </summary>
5026 /// <param name="node">Element to parse.</param> 5029 /// <param name="node">Element to parse.</param>
5030 /// <param name="parentType"></param>
5031 /// <param name="parentId"></param>
5027 [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Performance", "CA1800:DoNotCastUnnecessarily")] 5032 [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Performance", "CA1800:DoNotCastUnnecessarily")]
5028 private void ParseFeatureGroupElement(XElement node, ComplexReferenceParentType parentType, string parentId) 5033 private void ParseFeatureGroupElement(XElement node, ComplexReferenceParentType parentType, string parentId)
5029 { 5034 {
@@ -5477,6 +5482,7 @@ namespace WixToolset.Core
5477 /// <param name="sourcePath">Default source path of parent directory.</param> 5482 /// <param name="sourcePath">Default source path of parent directory.</param>
5478 /// <param name="possibleKeyPath">This will be set with the possible keyPath for the parent component.</param> 5483 /// <param name="possibleKeyPath">This will be set with the possible keyPath for the parent component.</param>
5479 /// <param name="win64Component">true if the component is 64-bit.</param> 5484 /// <param name="win64Component">true if the component is 64-bit.</param>
5485 /// <param name="componentGuid"></param>
5480 /// <returns>Yes if this element was marked as the parent component's key path, No if explicitly marked as not being a key path, or NotSet otherwise.</returns> 5486 /// <returns>Yes if this element was marked as the parent component's key path, No if explicitly marked as not being a key path, or NotSet otherwise.</returns>
5481 [SuppressMessage("Microsoft.Performance", "CA1800:DoNotCastUnnecessarily")] 5487 [SuppressMessage("Microsoft.Performance", "CA1800:DoNotCastUnnecessarily")]
5482 private YesNoType ParseFileElement(XElement node, string componentId, string directoryId, int diskId, string sourcePath, out string possibleKeyPath, bool win64Component, string componentGuid) 5488 private YesNoType ParseFileElement(XElement node, string componentId, string directoryId, int diskId, string sourcePath, out string possibleKeyPath, bool win64Component, string componentGuid)
@@ -6934,7 +6940,7 @@ namespace WixToolset.Core
6934 /// Parses a MajorUpgrade element. 6940 /// Parses a MajorUpgrade element.
6935 /// </summary> 6941 /// </summary>
6936 /// <param name="node">The element to parse.</param> 6942 /// <param name="node">The element to parse.</param>
6937 /// <param name="parentElement">The parent element.</param> 6943 /// <param name="contextValues">The current context.</param>
6938 private void ParseMajorUpgradeElement(XElement node, IDictionary<string, string> contextValues) 6944 private void ParseMajorUpgradeElement(XElement node, IDictionary<string, string> contextValues)
6939 { 6945 {
6940 var sourceLineNumbers = Preprocessor.GetSourceLineNumbers(node); 6946 var sourceLineNumbers = Preprocessor.GetSourceLineNumbers(node);
diff --git a/src/WixToolset.Core/CompilerCore.cs b/src/WixToolset.Core/CompilerCore.cs
index 721eae6b..50b88e51 100644
--- a/src/WixToolset.Core/CompilerCore.cs
+++ b/src/WixToolset.Core/CompilerCore.cs
@@ -127,6 +127,8 @@ namespace WixToolset.Core
127 /// Constructor for all compiler core. 127 /// Constructor for all compiler core.
128 /// </summary> 128 /// </summary>
129 /// <param name="intermediate">The Intermediate object representing compiled source document.</param> 129 /// <param name="intermediate">The Intermediate object representing compiled source document.</param>
130 /// <param name="messaging"></param>
131 /// <param name="parseHelper"></param>
130 /// <param name="extensions">The WiX extensions collection.</param> 132 /// <param name="extensions">The WiX extensions collection.</param>
131 internal CompilerCore(Intermediate intermediate, IMessaging messaging, IParseHelper parseHelper, Dictionary<XNamespace, ICompilerExtension> extensions) 133 internal CompilerCore(Intermediate intermediate, IMessaging messaging, IParseHelper parseHelper, Dictionary<XNamespace, ICompilerExtension> extensions)
132 { 134 {
@@ -531,7 +533,7 @@ namespace WixToolset.Core
531 /// </summary> 533 /// </summary>
532 /// <param name="sourceLineNumbers">Source line information about the owner element.</param> 534 /// <param name="sourceLineNumbers">Source line information about the owner element.</param>
533 /// <param name="attribute">The attribute containing the value to get.</param> 535 /// <param name="attribute">The attribute containing the value to get.</param>
534 /// <param name="onlyAscii">Whether to allow Unicode (UCS) or UTF code pages.</param> 536 /// <param name="onlyAnsi">Whether to allow Unicode (UCS) or UTF code pages.</param>
535 /// <returns>A valid code page integer value or variable expression.</returns> 537 /// <returns>A valid code page integer value or variable expression.</returns>
536 [SuppressMessage("Microsoft.Design", "CA1059:MembersShouldNotExposeCertainConcreteTypes")] 538 [SuppressMessage("Microsoft.Design", "CA1059:MembersShouldNotExposeCertainConcreteTypes")]
537 public string GetAttributeLocalizableCodePageValue(SourceLineNumber sourceLineNumbers, XAttribute attribute, bool onlyAnsi = false) 539 public string GetAttributeLocalizableCodePageValue(SourceLineNumber sourceLineNumbers, XAttribute attribute, bool onlyAnsi = false)
@@ -892,7 +894,7 @@ namespace WixToolset.Core
892 /// <summary> 894 /// <summary>
893 /// Create an identifier based on passed file name 895 /// Create an identifier based on passed file name
894 /// </summary> 896 /// </summary>
895 /// <param name="name">File name to generate identifer from</param> 897 /// <param name="filename">File name to generate identifer from</param>
896 /// <returns></returns> 898 /// <returns></returns>
897 public Identifier CreateIdentifierFromFilename(string filename) 899 public Identifier CreateIdentifierFromFilename(string filename)
898 { 900 {
@@ -935,7 +937,7 @@ namespace WixToolset.Core
935 /// </summary> 937 /// </summary>
936 /// <param name="parentElement">Element containing element to be parsed.</param> 938 /// <param name="parentElement">Element containing element to be parsed.</param>
937 /// <param name="element">Element to be parsed.</param> 939 /// <param name="element">Element to be parsed.</param>
938 /// <param name="contextValues">Extra information about the context in which this element is being parsed.</param> 940 /// <param name="context">Extra information about the context in which this element is being parsed.</param>
939 public IComponentKeyPath ParsePossibleKeyPathExtensionElement(XElement parentElement, XElement element, IDictionary<string, string> context) 941 public IComponentKeyPath ParsePossibleKeyPathExtensionElement(XElement parentElement, XElement element, IDictionary<string, string> context)
940 { 942 {
941 return this.parseHelper.ParsePossibleKeyPathExtensionElement(this.extensions.Values, this.intermediate, this.ActiveSection, parentElement, element, context); 943 return this.parseHelper.ParsePossibleKeyPathExtensionElement(this.extensions.Values, this.intermediate, this.ActiveSection, parentElement, element, context);
@@ -1017,6 +1019,7 @@ namespace WixToolset.Core
1017 /// <param name="id">Unique identifier for the section.</param> 1019 /// <param name="id">Unique identifier for the section.</param>
1018 /// <param name="type">Type of section to create.</param> 1020 /// <param name="type">Type of section to create.</param>
1019 /// <param name="codepage">Codepage for the resulting database for this ection.</param> 1021 /// <param name="codepage">Codepage for the resulting database for this ection.</param>
1022 /// <param name="compilationId"></param>
1020 /// <returns>New section.</returns> 1023 /// <returns>New section.</returns>
1021 internal IntermediateSection CreateActiveSection(string id, SectionType type, int codepage, string compilationId) 1024 internal IntermediateSection CreateActiveSection(string id, SectionType type, int codepage, string compilationId)
1022 { 1025 {
@@ -1034,6 +1037,7 @@ namespace WixToolset.Core
1034 /// <param name="id">Unique identifier for the section.</param> 1037 /// <param name="id">Unique identifier for the section.</param>
1035 /// <param name="type">Type of section to create.</param> 1038 /// <param name="type">Type of section to create.</param>
1036 /// <param name="codepage">Codepage for the resulting database for this ection.</param> 1039 /// <param name="codepage">Codepage for the resulting database for this ection.</param>
1040 /// <param name="compilationId"></param>
1037 /// <returns>New section.</returns> 1041 /// <returns>New section.</returns>
1038 internal IntermediateSection CreateSection(string id, SectionType type, int codepage, string compilationId) 1042 internal IntermediateSection CreateSection(string id, SectionType type, int codepage, string compilationId)
1039 { 1043 {
diff --git a/src/WixToolset.Core/Compiler_2.cs b/src/WixToolset.Core/Compiler_2.cs
index 1922a70b..6fd1b3c8 100644
--- a/src/WixToolset.Core/Compiler_2.cs
+++ b/src/WixToolset.Core/Compiler_2.cs
@@ -770,8 +770,10 @@ namespace WixToolset.Core
770 /// Parses a package element. 770 /// Parses a package element.
771 /// </summary> 771 /// </summary>
772 /// <param name="node">Element to parse.</param> 772 /// <param name="node">Element to parse.</param>
773 /// <param name="productAuthor">Default package author.</param> 773 /// <param name="isCodepageSet"></param>
774 /// <param name="moduleId">The module guid - this is necessary until Module/@Guid is removed.</param> 774 /// <param name="isPackageNameSet"></param>
775 /// <param name="isKeywordsSet"></param>
776 /// <param name="isPackageAuthorSet"></param>
775 private void ParseSummaryInformationElement(XElement node, ref bool isCodepageSet, ref bool isPackageNameSet, ref bool isKeywordsSet, ref bool isPackageAuthorSet) 777 private void ParseSummaryInformationElement(XElement node, ref bool isCodepageSet, ref bool isPackageNameSet, ref bool isKeywordsSet, ref bool isPackageAuthorSet)
776 { 778 {
777 var sourceLineNumbers = Preprocessor.GetSourceLineNumbers(node); 779 var sourceLineNumbers = Preprocessor.GetSourceLineNumbers(node);
@@ -3433,6 +3435,7 @@ namespace WixToolset.Core
3433 /// </summary> 3435 /// </summary>
3434 /// <param name="node">Element to parse.</param> 3436 /// <param name="node">Element to parse.</param>
3435 /// <param name="componentId">Identifier of parent component.</param> 3437 /// <param name="componentId">Identifier of parent component.</param>
3438 /// <param name="win64Component"></param>
3436 private void ParseServiceInstallElement(XElement node, string componentId, bool win64Component) 3439 private void ParseServiceInstallElement(XElement node, string componentId, bool win64Component)
3437 { 3440 {
3438 var sourceLineNumbers = Preprocessor.GetSourceLineNumbers(node); 3441 var sourceLineNumbers = Preprocessor.GetSourceLineNumbers(node);
@@ -4266,6 +4269,7 @@ namespace WixToolset.Core
4266 /// Parses a shortcut property element. 4269 /// Parses a shortcut property element.
4267 /// </summary> 4270 /// </summary>
4268 /// <param name="node">Element to parse.</param> 4271 /// <param name="node">Element to parse.</param>
4272 /// <param name="shortcutId"></param>
4269 private void ParseShortcutPropertyElement(XElement node, string shortcutId) 4273 private void ParseShortcutPropertyElement(XElement node, string shortcutId)
4270 { 4274 {
4271 var sourceLineNumbers = Preprocessor.GetSourceLineNumbers(node); 4275 var sourceLineNumbers = Preprocessor.GetSourceLineNumbers(node);
diff --git a/src/WixToolset.Core/Compiler_Bundle.cs b/src/WixToolset.Core/Compiler_Bundle.cs
index 00f88c1f..0817aef3 100644
--- a/src/WixToolset.Core/Compiler_Bundle.cs
+++ b/src/WixToolset.Core/Compiler_Bundle.cs
@@ -436,6 +436,7 @@ namespace WixToolset.Core
436 /// Parse a Container element. 436 /// Parse a Container element.
437 /// </summary> 437 /// </summary>
438 /// <param name="node">Element to parse</param> 438 /// <param name="node">Element to parse</param>
439 /// <param name="fileSystemSafeBundleName"></param>
439 private string ParseLogElement(XElement node, string fileSystemSafeBundleName) 440 private string ParseLogElement(XElement node, string fileSystemSafeBundleName)
440 { 441 {
441 var sourceLineNumbers = Preprocessor.GetSourceLineNumbers(node); 442 var sourceLineNumbers = Preprocessor.GetSourceLineNumbers(node);
@@ -706,6 +707,8 @@ namespace WixToolset.Core
706 /// Parse the BoostrapperApplication element. 707 /// Parse the BoostrapperApplication element.
707 /// </summary> 708 /// </summary>
708 /// <param name="node">Element to parse</param> 709 /// <param name="node">Element to parse</param>
710 /// <param name="previousType"></param>
711 /// <param name="previousId"></param>
709 private Identifier ParseBootstrapperApplicationDllElement(XElement node, ComplexReferenceChildType previousType, Identifier previousId) 712 private Identifier ParseBootstrapperApplicationDllElement(XElement node, ComplexReferenceChildType previousType, Identifier previousId)
710 { 713 {
711 var sourceLineNumbers = Preprocessor.GetSourceLineNumbers(node); 714 var sourceLineNumbers = Preprocessor.GetSourceLineNumbers(node);
@@ -1308,6 +1311,8 @@ namespace WixToolset.Core
1308 /// <param name="node">Element to parse</param> 1311 /// <param name="node">Element to parse</param>
1309 /// <param name="parentType">ComplexReferenceParentType of parent element. (BA or PayloadGroup)</param> 1312 /// <param name="parentType">ComplexReferenceParentType of parent element. (BA or PayloadGroup)</param>
1310 /// <param name="parentId">Identifier of parent element.</param> 1313 /// <param name="parentId">Identifier of parent element.</param>
1314 /// <param name="previousType"></param>
1315 /// <param name="previousId"></param>
1311 private Identifier ParsePayloadElement(XElement node, ComplexReferenceParentType parentType, Identifier parentId, ComplexReferenceChildType previousType, Identifier previousId) 1316 private Identifier ParsePayloadElement(XElement node, ComplexReferenceParentType parentType, Identifier parentId, ComplexReferenceChildType previousType, Identifier previousId)
1312 { 1317 {
1313 Debug.Assert(ComplexReferenceParentType.PayloadGroup == parentType || ComplexReferenceParentType.Package == parentType || ComplexReferenceParentType.Container == parentType); 1318 Debug.Assert(ComplexReferenceParentType.PayloadGroup == parentType || ComplexReferenceParentType.Package == parentType || ComplexReferenceParentType.Container == parentType);
@@ -1345,6 +1350,10 @@ namespace WixToolset.Core
1345 /// <param name="node">Element to parse</param> 1350 /// <param name="node">Element to parse</param>
1346 /// <param name="parentType">ComplexReferenceParentType of parent element.</param> 1351 /// <param name="parentType">ComplexReferenceParentType of parent element.</param>
1347 /// <param name="parentId">Identifier of parent element.</param> 1352 /// <param name="parentId">Identifier of parent element.</param>
1353 /// <param name="previousType"></param>
1354 /// <param name="previousId"></param>
1355 /// <param name="required"></param>
1356 /// <param name="id"></param>
1348 /// <returns>Whether SourceFile was specified.</returns> 1357 /// <returns>Whether SourceFile was specified.</returns>
1349 private bool ParsePayloadElementContent(XElement node, ComplexReferenceParentType parentType, Identifier parentId, ComplexReferenceChildType previousType, Identifier previousId, bool required, out Identifier id) 1358 private bool ParsePayloadElementContent(XElement node, ComplexReferenceParentType parentType, Identifier parentId, ComplexReferenceChildType previousType, Identifier previousId, bool required, out Identifier id)
1350 { 1359 {
@@ -1519,9 +1528,21 @@ namespace WixToolset.Core
1519 /// <summary> 1528 /// <summary>
1520 /// Creates the row for a Payload. 1529 /// Creates the row for a Payload.
1521 /// </summary> 1530 /// </summary>
1522 /// <param name="node">Element to parse</param> 1531 /// <param name="sourceLineNumbers"></param>
1532 /// <param name="id"></param>
1533 /// <param name="name"></param>
1534 /// <param name="sourceFile"></param>
1535 /// <param name="downloadUrl"></param>
1523 /// <param name="parentType">ComplexReferenceParentType of parent element</param> 1536 /// <param name="parentType">ComplexReferenceParentType of parent element</param>
1524 /// <param name="parentId">Identifier of parent element.</param> 1537 /// <param name="parentId">Identifier of parent element.</param>
1538 /// <param name="previousType"></param>
1539 /// <param name="previousId"></param>
1540 /// <param name="compressed"></param>
1541 /// <param name="enableSignatureVerification"></param>
1542 /// <param name="displayName"></param>
1543 /// <param name="description"></param>
1544 /// <param name="remotePayload"></param>
1545 /// <returns></returns>
1525 private WixBundlePayloadSymbol CreatePayloadRow(SourceLineNumber sourceLineNumbers, Identifier id, string name, string sourceFile, string downloadUrl, ComplexReferenceParentType parentType, 1546 private WixBundlePayloadSymbol CreatePayloadRow(SourceLineNumber sourceLineNumbers, Identifier id, string name, string sourceFile, string downloadUrl, ComplexReferenceParentType parentType,
1526 Identifier parentId, ComplexReferenceChildType previousType, Identifier previousId, YesNoDefaultType compressed, YesNoType enableSignatureVerification, string displayName, string description, 1547 Identifier parentId, ComplexReferenceChildType previousType, Identifier previousId, YesNoDefaultType compressed, YesNoType enableSignatureVerification, string displayName, string description,
1527 RemotePayload remotePayload) 1548 RemotePayload remotePayload)
@@ -1640,6 +1661,8 @@ namespace WixToolset.Core
1640 /// <param name="node">Element to parse.</param> 1661 /// <param name="node">Element to parse.</param>
1641 /// <param name="parentType">ComplexReferenceParentType of parent element (BA or PayloadGroup).</param> 1662 /// <param name="parentType">ComplexReferenceParentType of parent element (BA or PayloadGroup).</param>
1642 /// <param name="parentId">Identifier of parent element.</param> 1663 /// <param name="parentId">Identifier of parent element.</param>
1664 /// <param name="previousType"></param>
1665 /// <param name="previousId"></param>
1643 private Identifier ParsePayloadGroupRefElement(XElement node, ComplexReferenceParentType parentType, Identifier parentId, ComplexReferenceChildType previousType, Identifier previousId) 1666 private Identifier ParsePayloadGroupRefElement(XElement node, ComplexReferenceParentType parentType, Identifier parentId, ComplexReferenceChildType previousType, Identifier previousId)
1644 { 1667 {
1645 Debug.Assert(ComplexReferenceParentType.Layout == parentType || ComplexReferenceParentType.PayloadGroup == parentType || ComplexReferenceParentType.Package == parentType || ComplexReferenceParentType.Container == parentType); 1668 Debug.Assert(ComplexReferenceParentType.Layout == parentType || ComplexReferenceParentType.PayloadGroup == parentType || ComplexReferenceParentType.Package == parentType || ComplexReferenceParentType.Container == parentType);
@@ -2513,6 +2536,7 @@ namespace WixToolset.Core
2513 /// Parse CommandLine element. 2536 /// Parse CommandLine element.
2514 /// </summary> 2537 /// </summary>
2515 /// <param name="node">Element to parse</param> 2538 /// <param name="node">Element to parse</param>
2539 /// <param name="packageId">Parent packageId</param>
2516 private void ParseCommandLineElement(XElement node, string packageId) 2540 private void ParseCommandLineElement(XElement node, string packageId)
2517 { 2541 {
2518 var sourceLineNumbers = Preprocessor.GetSourceLineNumbers(node); 2542 var sourceLineNumbers = Preprocessor.GetSourceLineNumbers(node);
@@ -2661,7 +2685,7 @@ namespace WixToolset.Core
2661 /// <param name="node">Element to parse.</param> 2685 /// <param name="node">Element to parse.</param>
2662 /// <param name="parentType">ComplexReferenceParentType of parent element (Unknown or PackageGroup).</param> 2686 /// <param name="parentType">ComplexReferenceParentType of parent element (Unknown or PackageGroup).</param>
2663 /// <param name="parentId">Identifier of parent element.</param> 2687 /// <param name="parentId">Identifier of parent element.</param>
2664 /// <returns>Identifier for package group element.</rereturns> 2688 /// <returns>Identifier for package group element.</returns>
2665 private string ParsePackageGroupRefElement(XElement node, ComplexReferenceParentType parentType, string parentId) 2689 private string ParsePackageGroupRefElement(XElement node, ComplexReferenceParentType parentType, string parentId)
2666 { 2690 {
2667 return this.ParsePackageGroupRefElement(node, parentType, parentId, ComplexReferenceChildType.Unknown, null); 2691 return this.ParsePackageGroupRefElement(node, parentType, parentId, ComplexReferenceChildType.Unknown, null);
@@ -2673,9 +2697,9 @@ namespace WixToolset.Core
2673 /// <param name="node">Element to parse.</param> 2697 /// <param name="node">Element to parse.</param>
2674 /// <param name="parentType">ComplexReferenceParentType of parent element (Unknown or PackageGroup).</param> 2698 /// <param name="parentType">ComplexReferenceParentType of parent element (Unknown or PackageGroup).</param>
2675 /// <param name="parentId">Identifier of parent element.</param> 2699 /// <param name="parentId">Identifier of parent element.</param>
2676 /// <param name="parentType">ComplexReferenceParentType of previous element (Unknown, Package, or PackageGroup).</param> 2700 /// <param name="previousType"></param>
2677 /// <param name="parentId">Identifier of parent element.</param> 2701 /// <param name="previousId"></param>
2678 /// <returns>Identifier for package group element.</rereturns> 2702 /// <returns>Identifier for package group element.</returns>
2679 private string ParsePackageGroupRefElement(XElement node, ComplexReferenceParentType parentType, string parentId, ComplexReferenceChildType previousType, string previousId) 2703 private string ParsePackageGroupRefElement(XElement node, ComplexReferenceParentType parentType, string parentId, ComplexReferenceChildType previousType, string previousId)
2680 { 2704 {
2681 Debug.Assert(ComplexReferenceParentType.Unknown == parentType || ComplexReferenceParentType.PackageGroup == parentType || ComplexReferenceParentType.Container == parentType); 2705 Debug.Assert(ComplexReferenceParentType.Unknown == parentType || ComplexReferenceParentType.PackageGroup == parentType || ComplexReferenceParentType.Container == parentType);
@@ -2740,6 +2764,7 @@ namespace WixToolset.Core
2740 /// <param name="sourceLineNumbers">Source line numbers.</param> 2764 /// <param name="sourceLineNumbers">Source line numbers.</param>
2741 /// <param name="id">Identifier for the rollback boundary.</param> 2765 /// <param name="id">Identifier for the rollback boundary.</param>
2742 /// <param name="vital">Indicates whether the rollback boundary is vital or not.</param> 2766 /// <param name="vital">Indicates whether the rollback boundary is vital or not.</param>
2767 /// <param name="transaction">Indicates whether the rollback boundary will use an MSI transaction.</param>
2743 /// <param name="parentType">Type of parent group.</param> 2768 /// <param name="parentType">Type of parent group.</param>
2744 /// <param name="parentId">Identifier of parent group.</param> 2769 /// <param name="parentId">Identifier of parent group.</param>
2745 /// <param name="previousType">Type of previous item, if any.</param> 2770 /// <param name="previousType">Type of previous item, if any.</param>
diff --git a/src/WixToolset.Core/Compiler_EmbeddedUI.cs b/src/WixToolset.Core/Compiler_EmbeddedUI.cs
index d71bb09a..ca658962 100644
--- a/src/WixToolset.Core/Compiler_EmbeddedUI.cs
+++ b/src/WixToolset.Core/Compiler_EmbeddedUI.cs
@@ -335,7 +335,6 @@ namespace WixToolset.Core
335 /// Parses a embedded UI resource element. 335 /// Parses a embedded UI resource element.
336 /// </summary> 336 /// </summary>
337 /// <param name="node">Element to parse.</param> 337 /// <param name="node">Element to parse.</param>
338 /// <param name="parentId">Identifier of parent EmbeddedUI element.</param>
339 private void ParseEmbeddedUIResourceElement(XElement node) 338 private void ParseEmbeddedUIResourceElement(XElement node)
340 { 339 {
341 var sourceLineNumbers = Preprocessor.GetSourceLineNumbers(node); 340 var sourceLineNumbers = Preprocessor.GetSourceLineNumbers(node);
diff --git a/src/WixToolset.Core/Compiler_Patch.cs b/src/WixToolset.Core/Compiler_Patch.cs
index 73e7f521..eb99d5c4 100644
--- a/src/WixToolset.Core/Compiler_Patch.cs
+++ b/src/WixToolset.Core/Compiler_Patch.cs
@@ -319,6 +319,8 @@ namespace WixToolset.Core
319 /// Parses a PatchFamily element. 319 /// Parses a PatchFamily element.
320 /// </summary> 320 /// </summary>
321 /// <param name="node">The element to parse.</param> 321 /// <param name="node">The element to parse.</param>
322 /// <param name="parentType"></param>
323 /// <param name="parentId"></param>
322 private void ParsePatchFamilyElement(XElement node, ComplexReferenceParentType parentType, string parentId) 324 private void ParsePatchFamilyElement(XElement node, ComplexReferenceParentType parentType, string parentId)
323 { 325 {
324 var sourceLineNumbers = Preprocessor.GetSourceLineNumbers(node); 326 var sourceLineNumbers = Preprocessor.GetSourceLineNumbers(node);
@@ -444,6 +446,8 @@ namespace WixToolset.Core
444 /// Parses a PatchFamilyGroup element. 446 /// Parses a PatchFamilyGroup element.
445 /// </summary> 447 /// </summary>
446 /// <param name="node">Element to parse.</param> 448 /// <param name="node">Element to parse.</param>
449 /// <param name="parentType"></param>
450 /// <param name="parentId"></param>
447 [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Performance", "CA1800:DoNotCastUnnecessarily")] 451 [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Performance", "CA1800:DoNotCastUnnecessarily")]
448 private void ParsePatchFamilyGroupElement(XElement node, ComplexReferenceParentType parentType, string parentId) 452 private void ParsePatchFamilyGroupElement(XElement node, ComplexReferenceParentType parentType, string parentId)
449 { 453 {
diff --git a/src/WixToolset.Core/Compiler_UI.cs b/src/WixToolset.Core/Compiler_UI.cs
index cb1d34ac..5cc9b5a0 100644
--- a/src/WixToolset.Core/Compiler_UI.cs
+++ b/src/WixToolset.Core/Compiler_UI.cs
@@ -1049,12 +1049,11 @@ namespace WixToolset.Core
1049 /// </summary> 1049 /// </summary>
1050 /// <param name="node">Element to parse.</param> 1050 /// <param name="node">Element to parse.</param>
1051 /// <param name="dialog">Identifier for parent dialog.</param> 1051 /// <param name="dialog">Identifier for parent dialog.</param>
1052 /// <param name="table">Table control belongs in.</param> 1052 /// <param name="symbolType">Table control belongs in.</param>
1053 /// <param name="lastTabSymbol">Last control in the tab order.</param> 1053 /// <param name="lastTabSymbol">Last control in the tab order.</param>
1054 /// <param name="firstControl">Name of the first control in the tab order.</param> 1054 /// <param name="firstControl">Name of the first control in the tab order.</param>
1055 /// <param name="defaultControl">Name of the default control.</param> 1055 /// <param name="defaultControl">Name of the default control.</param>
1056 /// <param name="cancelControl">Name of the candle control.</param> 1056 /// <param name="cancelControl">Name of the candle control.</param>
1057 /// <param name="trackDiskSpace">True if the containing dialog tracks disk space.</param>
1058 private void ParseControlElement(XElement node, string dialog, SymbolDefinitionType symbolType, ref ControlSymbol lastTabSymbol, ref string firstControl, ref string defaultControl, ref string cancelControl) 1057 private void ParseControlElement(XElement node, string dialog, SymbolDefinitionType symbolType, ref ControlSymbol lastTabSymbol, ref string firstControl, ref string defaultControl, ref string cancelControl)
1059 { 1058 {
1060 var sourceLineNumbers = Preprocessor.GetSourceLineNumbers(node); 1059 var sourceLineNumbers = Preprocessor.GetSourceLineNumbers(node);
diff --git a/src/WixToolset.Core/ExtensibilityServices/ParseHelper.cs b/src/WixToolset.Core/ExtensibilityServices/ParseHelper.cs
index de5595e1..6a71c4e9 100644
--- a/src/WixToolset.Core/ExtensibilityServices/ParseHelper.cs
+++ b/src/WixToolset.Core/ExtensibilityServices/ParseHelper.cs
@@ -149,12 +149,6 @@ namespace WixToolset.Core.ExtensibilityServices
149 return suffix == null ? null : name + suffix; 149 return suffix == null ? null : name + suffix;
150 } 150 }
151 151
152 [Obsolete]
153 public Identifier CreateRegistryRow(IntermediateSection section, SourceLineNumber sourceLineNumbers, RegistryRootType root, string key, string name, string value, string componentId, bool escapeLeadingHash)
154 {
155 return this.CreateRegistrySymbol(section, sourceLineNumbers, root, key, name, value, componentId, escapeLeadingHash);
156 }
157
158 public Identifier CreateRegistrySymbol(IntermediateSection section, SourceLineNumber sourceLineNumbers, RegistryRootType root, string key, string name, string value, string componentId, bool escapeLeadingHash) 152 public Identifier CreateRegistrySymbol(IntermediateSection section, SourceLineNumber sourceLineNumbers, RegistryRootType root, string key, string name, string value, string componentId, bool escapeLeadingHash)
159 { 153 {
160 if (RegistryRootType.Unknown == root) 154 if (RegistryRootType.Unknown == root)
@@ -220,12 +214,6 @@ namespace WixToolset.Core.ExtensibilityServices
220 this.CreateSimpleReference(section, sourceLineNumbers, symbolDefinition.Name, primaryKeys); 214 this.CreateSimpleReference(section, sourceLineNumbers, symbolDefinition.Name, primaryKeys);
221 } 215 }
222 216
223 [Obsolete]
224 public void CreateWixGroupRow(IntermediateSection section, SourceLineNumber sourceLineNumbers, ComplexReferenceParentType parentType, string parentId, ComplexReferenceChildType childType, string childId)
225 {
226 this.CreateWixGroupSymbol(section, sourceLineNumbers, parentType, parentId, childType, childId);
227 }
228
229 public void CreateWixGroupSymbol(IntermediateSection section, SourceLineNumber sourceLineNumbers, ComplexReferenceParentType parentType, string parentId, ComplexReferenceChildType childType, string childId) 217 public void CreateWixGroupSymbol(IntermediateSection section, SourceLineNumber sourceLineNumbers, ComplexReferenceParentType parentType, string parentId, ComplexReferenceChildType childType, string childId)
230 { 218 {
231 if (null == parentId || ComplexReferenceParentType.Unknown == parentType) 219 if (null == parentId || ComplexReferenceParentType.Unknown == parentType)
@@ -284,18 +272,6 @@ namespace WixToolset.Core.ExtensibilityServices
284 }); 272 });
285 } 273 }
286 274
287 [Obsolete]
288 public IntermediateSymbol CreateRow(IntermediateSection section, SourceLineNumber sourceLineNumbers, string tableName, Identifier identifier = null)
289 {
290 return this.CreateSymbol(section, sourceLineNumbers, tableName, identifier);
291 }
292
293 [Obsolete]
294 public IntermediateSymbol CreateRow(IntermediateSection section, SourceLineNumber sourceLineNumbers, SymbolDefinitionType symbolType, Identifier identifier = null)
295 {
296 return this.CreateSymbol(section, sourceLineNumbers, symbolType, identifier);
297 }
298
299 public IntermediateSymbol CreateSymbol(IntermediateSection section, SourceLineNumber sourceLineNumbers, string symbolName, Identifier identifier = null) 275 public IntermediateSymbol CreateSymbol(IntermediateSection section, SourceLineNumber sourceLineNumbers, string symbolName, Identifier identifier = null)
300 { 276 {
301 if (this.Creator == null) 277 if (this.Creator == null)
@@ -311,14 +287,6 @@ namespace WixToolset.Core.ExtensibilityServices
311 return this.CreateSymbol(section, sourceLineNumbers, symbolDefinition, identifier); 287 return this.CreateSymbol(section, sourceLineNumbers, symbolDefinition, identifier);
312 } 288 }
313 289
314 [Obsolete]
315 public IntermediateSymbol CreateSymbol(IntermediateSection section, SourceLineNumber sourceLineNumbers, SymbolDefinitionType symbolType, Identifier identifier = null)
316 {
317 var symbolDefinition = SymbolDefinitions.ByType(symbolType);
318
319 return this.CreateSymbol(section, sourceLineNumbers, symbolDefinition, identifier);
320 }
321
322 public IntermediateSymbol CreateSymbol(IntermediateSection section, SourceLineNumber sourceLineNumbers, IntermediateSymbolDefinition symbolDefinition, Identifier identifier = null) 290 public IntermediateSymbol CreateSymbol(IntermediateSection section, SourceLineNumber sourceLineNumbers, IntermediateSymbolDefinition symbolDefinition, Identifier identifier = null)
323 { 291 {
324 return section.AddSymbol(symbolDefinition.CreateSymbol(sourceLineNumbers, identifier)); 292 return section.AddSymbol(symbolDefinition.CreateSymbol(sourceLineNumbers, identifier));
diff --git a/src/WixToolset.Core/ExtensibilityServices/Uuid.cs b/src/WixToolset.Core/ExtensibilityServices/Uuid.cs
index a5692b71..ad9eea26 100644
--- a/src/WixToolset.Core/ExtensibilityServices/Uuid.cs
+++ b/src/WixToolset.Core/ExtensibilityServices/Uuid.cs
@@ -17,7 +17,6 @@ namespace WixToolset.Core.ExtensibilityServices
17 /// </summary> 17 /// </summary>
18 /// <param name="namespaceGuid">The namespace UUID.</param> 18 /// <param name="namespaceGuid">The namespace UUID.</param>
19 /// <param name="value">The value.</param> 19 /// <param name="value">The value.</param>
20 /// <param name="backwardsCompatible">Flag to say to use MD5 instead of better SHA1.</param>
21 /// <returns>The UUID for the given namespace and value.</returns> 20 /// <returns>The UUID for the given namespace and value.</returns>
22 public static Guid NewUuid(Guid namespaceGuid, string value) 21 public static Guid NewUuid(Guid namespaceGuid, string value)
23 { 22 {
diff --git a/src/WixToolset.Core/IBinder.cs b/src/WixToolset.Core/IBinder.cs
index c2ebc2a0..ec7ca4f5 100644
--- a/src/WixToolset.Core/IBinder.cs
+++ b/src/WixToolset.Core/IBinder.cs
@@ -4,7 +4,7 @@ namespace WixToolset.Core
4{ 4{
5 using WixToolset.Extensibility.Data; 5 using WixToolset.Extensibility.Data;
6 6
7 public interface IBinder 7 internal interface IBinder
8 { 8 {
9 IBindResult Bind(IBindContext context); 9 IBindResult Bind(IBindContext context);
10 } 10 }
diff --git a/src/WixToolset.Core/ICompiler.cs b/src/WixToolset.Core/ICompiler.cs
index a2c4a6e8..34a9a94a 100644
--- a/src/WixToolset.Core/ICompiler.cs
+++ b/src/WixToolset.Core/ICompiler.cs
@@ -1,11 +1,11 @@
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. 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 2
3namespace WixToolset.Core 3namespace WixToolset.Core
4{ 4{
5 using WixToolset.Data; 5 using WixToolset.Data;
6 using WixToolset.Extensibility.Data; 6 using WixToolset.Extensibility.Data;
7 7
8 public interface ICompiler 8 internal interface ICompiler
9 { 9 {
10 Intermediate Compile(ICompileContext context); 10 Intermediate Compile(ICompileContext context);
11 } 11 }
diff --git a/src/WixToolset.Core/IDecompiler.cs b/src/WixToolset.Core/IDecompiler.cs
index 05b04be2..fdb8c2d0 100644
--- a/src/WixToolset.Core/IDecompiler.cs
+++ b/src/WixToolset.Core/IDecompiler.cs
@@ -4,7 +4,7 @@ namespace WixToolset.Core
4{ 4{
5 using WixToolset.Extensibility.Data; 5 using WixToolset.Extensibility.Data;
6 6
7 public interface IDecompiler 7 internal interface IDecompiler
8 { 8 {
9 IDecompileResult Decompile(IDecompileContext context); 9 IDecompileResult Decompile(IDecompileContext context);
10 } 10 }
diff --git a/src/WixToolset.Core/ILayoutCreator.cs b/src/WixToolset.Core/ILayoutCreator.cs
index f58d0aad..6b65e60f 100644
--- a/src/WixToolset.Core/ILayoutCreator.cs
+++ b/src/WixToolset.Core/ILayoutCreator.cs
@@ -1,10 +1,10 @@
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. 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 2
3namespace WixToolset.Core 3namespace WixToolset.Core
4{ 4{
5 using WixToolset.Extensibility.Data; 5 using WixToolset.Extensibility.Data;
6 6
7 public interface ILayoutCreator 7 internal interface ILayoutCreator
8 { 8 {
9 void Layout(ILayoutContext context); 9 void Layout(ILayoutContext context);
10 } 10 }
diff --git a/src/WixToolset.Core/ILibrarian.cs b/src/WixToolset.Core/ILibrarian.cs
index 3e951e65..fa1dd816 100644
--- a/src/WixToolset.Core/ILibrarian.cs
+++ b/src/WixToolset.Core/ILibrarian.cs
@@ -1,11 +1,11 @@
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. 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 2
3namespace WixToolset.Core 3namespace WixToolset.Core
4{ 4{
5 using WixToolset.Data; 5 using WixToolset.Data;
6 using WixToolset.Extensibility.Data; 6 using WixToolset.Extensibility.Data;
7 7
8 public interface ILibrarian 8 internal interface ILibrarian
9 { 9 {
10 Intermediate Combine(ILibraryContext context); 10 Intermediate Combine(ILibraryContext context);
11 } 11 }
diff --git a/src/WixToolset.Core/ILinker.cs b/src/WixToolset.Core/ILinker.cs
index 0580bf46..6a7fe0f7 100644
--- a/src/WixToolset.Core/ILinker.cs
+++ b/src/WixToolset.Core/ILinker.cs
@@ -1,10 +1,11 @@
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. 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 2
3namespace WixToolset.Core 3namespace WixToolset.Core
4{ 4{
5 using WixToolset.Data; 5 using WixToolset.Data;
6 using WixToolset.Extensibility.Data; 6 using WixToolset.Extensibility.Data;
7 7
8#pragma warning disable 1591 // TODO: add documentation, move into Extensibility
8 public interface ILinker 9 public interface ILinker
9 { 10 {
10 Intermediate Link(ILinkContext context); 11 Intermediate Link(ILinkContext context);
diff --git a/src/WixToolset.Core/IPreprocessor.cs b/src/WixToolset.Core/IPreprocessor.cs
index 151f8111..f6ed5fed 100644
--- a/src/WixToolset.Core/IPreprocessor.cs
+++ b/src/WixToolset.Core/IPreprocessor.cs
@@ -5,6 +5,7 @@ namespace WixToolset.Core
5 using System.Xml; 5 using System.Xml;
6 using WixToolset.Extensibility.Data; 6 using WixToolset.Extensibility.Data;
7 7
8#pragma warning disable 1591 // TODO: add documentation, move into Extensibility
8 public interface IPreprocessor 9 public interface IPreprocessor
9 { 10 {
10 IPreprocessResult Preprocess(IPreprocessContext context); 11 IPreprocessResult Preprocess(IPreprocessContext context);
diff --git a/src/WixToolset.Core/IResolver.cs b/src/WixToolset.Core/IResolver.cs
index c5b2568f..661972c4 100644
--- a/src/WixToolset.Core/IResolver.cs
+++ b/src/WixToolset.Core/IResolver.cs
@@ -4,7 +4,7 @@ namespace WixToolset.Core
4{ 4{
5 using WixToolset.Extensibility.Data; 5 using WixToolset.Extensibility.Data;
6 6
7 public interface IResolver 7 internal interface IResolver
8 { 8 {
9 IResolveResult Resolve(IResolveContext context); 9 IResolveResult Resolve(IResolveContext context);
10 } 10 }
diff --git a/src/WixToolset.Core/Inscriber.cs b/src/WixToolset.Core/Inscriber.cs
index 649e1661..cff2dab2 100644
--- a/src/WixToolset.Core/Inscriber.cs
+++ b/src/WixToolset.Core/Inscriber.cs
@@ -10,10 +10,10 @@ namespace WixToolset.Core
10 /// </summary> 10 /// </summary>
11 internal class Inscriber 11 internal class Inscriber
12 { 12 {
13 /// <summary> 13 // <summary>
14 /// Gets or sets the temp files collection. 14 // Gets or sets the temp files collection.
15 /// </summary> 15 // </summary>
16 /// <value>The temp files collection.</value> 16 // <value>The temp files collection.</value>
17 // public TempFileCollection TempFiles 17 // public TempFileCollection TempFiles
18 // { 18 // {
19 // get { return this.tempFiles; } 19 // get { return this.tempFiles; }
diff --git a/src/WixToolset.Core/LayoutCreator.cs b/src/WixToolset.Core/LayoutCreator.cs
index 16fdd70f..0da18ab5 100644
--- a/src/WixToolset.Core/LayoutCreator.cs
+++ b/src/WixToolset.Core/LayoutCreator.cs
@@ -85,7 +85,7 @@ namespace WixToolset.Core
85 /// Writes the paths to the content files to a text file. 85 /// Writes the paths to the content files to a text file.
86 /// </summary> 86 /// </summary>
87 /// <param name="path">Path to write file.</param> 87 /// <param name="path">Path to write file.</param>
88 /// <param name="contentFilePaths">Collection of paths to content files that will be written to file.</param> 88 /// <param name="trackedFiles">Collection of paths to content files that will be written to file.</param>
89 private void CreateContentsFile(string path, IEnumerable<ITrackedFile> trackedFiles) 89 private void CreateContentsFile(string path, IEnumerable<ITrackedFile> trackedFiles)
90 { 90 {
91 var uniqueInputFilePaths = new SortedSet<string>(trackedFiles.Where(t => t.Type == TrackedFileType.Input).Select(t => t.Path), StringComparer.OrdinalIgnoreCase); 91 var uniqueInputFilePaths = new SortedSet<string>(trackedFiles.Where(t => t.Type == TrackedFileType.Input).Select(t => t.Path), StringComparer.OrdinalIgnoreCase);
@@ -111,7 +111,7 @@ namespace WixToolset.Core
111 /// Writes the paths to the output files to a text file. 111 /// Writes the paths to the output files to a text file.
112 /// </summary> 112 /// </summary>
113 /// <param name="path">Path to write file.</param> 113 /// <param name="path">Path to write file.</param>
114 /// <param name="fileTransfers">Collection of files that were transferred to the output directory.</param> 114 /// <param name="trackedFiles">Collection of files that were transferred to the output directory.</param>
115 private void CreateOutputsFile(string path, IEnumerable<ITrackedFile> trackedFiles) 115 private void CreateOutputsFile(string path, IEnumerable<ITrackedFile> trackedFiles)
116 { 116 {
117 var uniqueOutputPaths = new SortedSet<string>(trackedFiles.Where(t => t.Clean).Select(t => t.Path), StringComparer.OrdinalIgnoreCase); 117 var uniqueOutputPaths = new SortedSet<string>(trackedFiles.Where(t => t.Clean).Select(t => t.Path), StringComparer.OrdinalIgnoreCase);
@@ -142,7 +142,7 @@ namespace WixToolset.Core
142 /// Writes the paths to the built output files to a text file. 142 /// Writes the paths to the built output files to a text file.
143 /// </summary> 143 /// </summary>
144 /// <param name="path">Path to write file.</param> 144 /// <param name="path">Path to write file.</param>
145 /// <param name="fileTransfers">Collection of files that were transferred to the output directory.</param> 145 /// <param name="trackedFiles">Collection of files that were transferred to the output directory.</param>
146 private void CreateBuiltOutputsFile(string path, IEnumerable<ITrackedFile> trackedFiles) 146 private void CreateBuiltOutputsFile(string path, IEnumerable<ITrackedFile> trackedFiles)
147 { 147 {
148 var uniqueBuiltPaths = new SortedSet<string>(trackedFiles.Where(t => t.Type == TrackedFileType.Final).Select(t => t.Path), StringComparer.OrdinalIgnoreCase); 148 var uniqueBuiltPaths = new SortedSet<string>(trackedFiles.Where(t => t.Type == TrackedFileType.Final).Select(t => t.Path), StringComparer.OrdinalIgnoreCase);
diff --git a/src/WixToolset.Core/Link/SymbolWithSection.cs b/src/WixToolset.Core/Link/SymbolWithSection.cs
index c8934d0f..08e01077 100644
--- a/src/WixToolset.Core/Link/SymbolWithSection.cs
+++ b/src/WixToolset.Core/Link/SymbolWithSection.cs
@@ -18,6 +18,7 @@ namespace WixToolset.Core.Link
18 /// <summary> 18 /// <summary>
19 /// Creates a symbol for a symbol. 19 /// Creates a symbol for a symbol.
20 /// </summary> 20 /// </summary>
21 /// <param name="section"></param>
21 /// <param name="symbol">Symbol for the symbol</param> 22 /// <param name="symbol">Symbol for the symbol</param>
22 public SymbolWithSection(IntermediateSection section, IntermediateSymbol symbol) 23 public SymbolWithSection(IntermediateSection section, IntermediateSymbol symbol)
23 { 24 {
diff --git a/src/WixToolset.Core/Link/WixComplexReferenceSymbolExtensions.cs b/src/WixToolset.Core/Link/WixComplexReferenceSymbolExtensions.cs
index 1702d3ca..2b1925ad 100644
--- a/src/WixToolset.Core/Link/WixComplexReferenceSymbolExtensions.cs
+++ b/src/WixToolset.Core/Link/WixComplexReferenceSymbolExtensions.cs
@@ -1,4 +1,4 @@
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. 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 2
3namespace WixToolset.Core.Link 3namespace WixToolset.Core.Link
4{ 4{
@@ -27,7 +27,8 @@ namespace WixToolset.Core.Link
27 /// <summary> 27 /// <summary>
28 /// Compares two complex references without considering the primary bit. 28 /// Compares two complex references without considering the primary bit.
29 /// </summary> 29 /// </summary>
30 /// <param name="obj">Complex reference to compare to.</param> 30 /// <param name="symbol">this</param>
31 /// <param name="other">Complex reference to compare to.</param>
31 /// <returns>Zero if the objects are equivalent, negative number if the provided object is less, positive if greater.</returns> 32 /// <returns>Zero if the objects are equivalent, negative number if the provided object is less, positive if greater.</returns>
32 public static int CompareToWithoutConsideringPrimary(this WixComplexReferenceSymbol symbol, WixComplexReferenceSymbol other) 33 public static int CompareToWithoutConsideringPrimary(this WixComplexReferenceSymbol symbol, WixComplexReferenceSymbol other)
33 { 34 {
@@ -57,6 +58,7 @@ namespace WixToolset.Core.Link
57 /// <summary> 58 /// <summary>
58 /// Changes all of the parent references to point to the passed in parent reference. 59 /// Changes all of the parent references to point to the passed in parent reference.
59 /// </summary> 60 /// </summary>
61 /// <param name="symbol">this</param>
60 /// <param name="parent">New parent complex reference.</param> 62 /// <param name="parent">New parent complex reference.</param>
61 public static void Reparent(this WixComplexReferenceSymbol symbol, WixComplexReferenceSymbol parent) 63 public static void Reparent(this WixComplexReferenceSymbol symbol, WixComplexReferenceSymbol parent)
62 { 64 {
diff --git a/src/WixToolset.Core/Link/WixGroupingOrdering.cs b/src/WixToolset.Core/Link/WixGroupingOrdering.cs
index a7013062..a8044a0c 100644
--- a/src/WixToolset.Core/Link/WixGroupingOrdering.cs
+++ b/src/WixToolset.Core/Link/WixGroupingOrdering.cs
@@ -29,10 +29,8 @@ namespace WixToolset.Core.Link
29 /// <summary> 29 /// <summary>
30 /// Creates a WixGroupingOrdering object. 30 /// Creates a WixGroupingOrdering object.
31 /// </summary> 31 /// </summary>
32 /// <param name="output">Output from which to read the group and order information.</param> 32 /// <param name="entrySections">Output from which to read the group and order information.</param>
33 /// <param name="messageHandler">Handler for any error messages.</param> 33 /// <param name="messageHandler">Handler for any error messages.</param>
34 /// <param name="groupTypes">Group types to include.</param>
35 /// <param name="itemTypes">Item types to include.</param>
36 public WixGroupingOrdering(IntermediateSection entrySections, IMessaging messageHandler) 34 public WixGroupingOrdering(IntermediateSection entrySections, IMessaging messageHandler)
37 { 35 {
38 this.EntrySection = entrySections; 36 this.EntrySection = entrySections;
@@ -582,7 +580,7 @@ namespace WixToolset.Core.Link
582 /// <summary> 580 /// <summary>
583 /// Adds an item to the 'after' ordering collection. 581 /// Adds an item to the 'after' ordering collection.
584 /// </summary> 582 /// </summary>
585 /// <param name="item">Items to add.</param> 583 /// <param name="after">Item to add.</param>
586 /// <param name="messageHandler">Message handler in case a circular ordering reference is found.</param> 584 /// <param name="messageHandler">Message handler in case a circular ordering reference is found.</param>
587 public void AddAfter(Item after, IMessaging messageHandler) 585 public void AddAfter(Item after, IMessaging messageHandler)
588 { 586 {
diff --git a/src/WixToolset.Core/Linker.cs b/src/WixToolset.Core/Linker.cs
index 86eb7a3d..e9f9554c 100644
--- a/src/WixToolset.Core/Linker.cs
+++ b/src/WixToolset.Core/Linker.cs
@@ -1219,7 +1219,7 @@ namespace WixToolset.Core
1219 /// <summary> 1219 /// <summary>
1220 /// Flattens the tables used in a Bundle. 1220 /// Flattens the tables used in a Bundle.
1221 /// </summary> 1221 /// </summary>
1222 /// <param name="output">Output containing the tables to process.</param> 1222 /// <param name="entrySection">Output containing the tables to process.</param>
1223 private void FlattenBundleTables(IntermediateSection entrySection) 1223 private void FlattenBundleTables(IntermediateSection entrySection)
1224 { 1224 {
1225 if (SectionType.Bundle != entrySection.Type) 1225 if (SectionType.Bundle != entrySection.Type)
diff --git a/src/WixToolset.Core/LocalizationParser.cs b/src/WixToolset.Core/LocalizationParser.cs
index 3b66b707..a0cf38a9 100644
--- a/src/WixToolset.Core/LocalizationParser.cs
+++ b/src/WixToolset.Core/LocalizationParser.cs
@@ -63,6 +63,7 @@ namespace WixToolset.Core
63 /// <summary> 63 /// <summary>
64 /// Adds a WixVariableRow to a dictionary while performing the expected override checks. 64 /// Adds a WixVariableRow to a dictionary while performing the expected override checks.
65 /// </summary> 65 /// </summary>
66 /// <param name="messaging"></param>
66 /// <param name="variables">Dictionary of variable rows.</param> 67 /// <param name="variables">Dictionary of variable rows.</param>
67 /// <param name="wixVariableRow">Row to add to the variables dictionary.</param> 68 /// <param name="wixVariableRow">Row to add to the variables dictionary.</param>
68 private static void AddWixVariable(IMessaging messaging, IDictionary<string, BindVariable> variables, BindVariable wixVariableRow) 69 private static void AddWixVariable(IMessaging messaging, IDictionary<string, BindVariable> variables, BindVariable wixVariableRow)
@@ -80,6 +81,7 @@ namespace WixToolset.Core
80 /// <summary> 81 /// <summary>
81 /// Parses the WixLocalization element. 82 /// Parses the WixLocalization element.
82 /// </summary> 83 /// </summary>
84 /// <param name="messaging"></param>
83 /// <param name="node">Element to parse.</param> 85 /// <param name="node">Element to parse.</param>
84 private static Localization ParseWixLocalizationElement(IMessaging messaging, XElement node) 86 private static Localization ParseWixLocalizationElement(IMessaging messaging, XElement node)
85 { 87 {
@@ -147,7 +149,9 @@ namespace WixToolset.Core
147 /// <summary> 149 /// <summary>
148 /// Parse a localization string into a WixVariableRow. 150 /// Parse a localization string into a WixVariableRow.
149 /// </summary> 151 /// </summary>
152 /// <param name="messaging"></param>
150 /// <param name="node">Element to parse.</param> 153 /// <param name="node">Element to parse.</param>
154 /// <param name="variables"></param>
151 private static void ParseString(IMessaging messaging, XElement node, IDictionary<string, BindVariable> variables) 155 private static void ParseString(IMessaging messaging, XElement node, IDictionary<string, BindVariable> variables)
152 { 156 {
153 string id = null; 157 string id = null;
@@ -208,6 +212,7 @@ namespace WixToolset.Core
208 /// <summary> 212 /// <summary>
209 /// Parse a localized control. 213 /// Parse a localized control.
210 /// </summary> 214 /// </summary>
215 /// <param name="messaging"></param>
211 /// <param name="node">Element to parse.</param> 216 /// <param name="node">Element to parse.</param>
212 /// <param name="localizedControls">Dictionary of localized controls.</param> 217 /// <param name="localizedControls">Dictionary of localized controls.</param>
213 private static void ParseUI(IMessaging messaging, XElement node, IDictionary<string, LocalizedControl> localizedControls) 218 private static void ParseUI(IMessaging messaging, XElement node, IDictionary<string, LocalizedControl> localizedControls)
diff --git a/src/WixToolset.Core/PatchSymbolFlagsType.cs b/src/WixToolset.Core/PatchSymbolFlagsType.cs
index eeb5c798..e751fd18 100644
--- a/src/WixToolset.Core/PatchSymbolFlagsType.cs
+++ b/src/WixToolset.Core/PatchSymbolFlagsType.cs
@@ -1,19 +1,34 @@
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. 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 2
3namespace WixToolset.Core 3namespace WixToolset.Core
4{ 4{
5 using System; 5 using System;
6 6
7 // 7 /// <summary>
8 // The following flags are used with PATCH_OPTION_DATA SymbolOptionFlags: 8 /// The following flags are used with PATCH_OPTION_DATA SymbolOptionFlags:
9 // 9 /// </summary>
10 [Flags] 10 [Flags]
11 public enum PatchSymbolFlagsType : uint 11 public enum PatchSymbolFlagsType : uint
12 { 12 {
13 PATCH_SYMBOL_NO_IMAGEHLP = 0x00000001, // don't use imagehlp.dll 13 /// <summary>
14 PATCH_SYMBOL_NO_FAILURES = 0x00000002, // don't fail patch due to imagehlp failures 14 /// don't use imagehlp.dll
15 PATCH_SYMBOL_UNDECORATED_TOO = 0x00000004, // after matching decorated symbols, try to match remaining by undecorated names 15 /// </summary>
16 PATCH_SYMBOL_RESERVED1 = 0x80000000, // (used internally) 16 PATCH_SYMBOL_NO_IMAGEHLP = 0x00000001,
17 /// <summary>
18 /// don't fail patch due to imagehlp failures
19 /// </summary>
20 PATCH_SYMBOL_NO_FAILURES = 0x00000002,
21 /// <summary>
22 /// after matching decorated symbols, try to match remaining by undecorated names
23 /// </summary>
24 PATCH_SYMBOL_UNDECORATED_TOO = 0x00000004,
25 /// <summary>
26 /// (used internally)
27 /// </summary>
28 PATCH_SYMBOL_RESERVED1 = 0x80000000,
29 /// <summary>
30 ///
31 /// </summary>
17 MaxValue = PATCH_SYMBOL_NO_IMAGEHLP | PATCH_SYMBOL_NO_FAILURES | PATCH_SYMBOL_UNDECORATED_TOO 32 MaxValue = PATCH_SYMBOL_NO_IMAGEHLP | PATCH_SYMBOL_NO_FAILURES | PATCH_SYMBOL_UNDECORATED_TOO
18 } 33 }
19} 34}
diff --git a/src/WixToolset.Core/Preprocess/IfDefEventHandler.cs b/src/WixToolset.Core/Preprocess/IfDefEventHandler.cs
index ff181d61..6b56638a 100644
--- a/src/WixToolset.Core/Preprocess/IfDefEventHandler.cs
+++ b/src/WixToolset.Core/Preprocess/IfDefEventHandler.cs
@@ -5,9 +5,9 @@ namespace WixToolset.Core.Preprocess
5 using System; 5 using System;
6 using WixToolset.Data; 6 using WixToolset.Data;
7 7
8 public delegate void IfDefEventHandler(object sender, IfDefEventArgs e); 8 internal delegate void IfDefEventHandler(object sender, IfDefEventArgs e);
9 9
10 public class IfDefEventArgs : EventArgs 10 internal class IfDefEventArgs : EventArgs
11 { 11 {
12 public IfDefEventArgs(SourceLineNumber sourceLineNumbers, bool isIfDef, bool isDefined, string variableName) 12 public IfDefEventArgs(SourceLineNumber sourceLineNumbers, bool isIfDef, bool isDefined, string variableName)
13 { 13 {
diff --git a/src/WixToolset.Core/Preprocess/IncludedFileEventHandler.cs b/src/WixToolset.Core/Preprocess/IncludedFileEventHandler.cs
index beba216d..3c8ff2e8 100644
--- a/src/WixToolset.Core/Preprocess/IncludedFileEventHandler.cs
+++ b/src/WixToolset.Core/Preprocess/IncludedFileEventHandler.cs
@@ -9,13 +9,13 @@ namespace WixToolset.Core.Preprocess
9 /// Included file event handler delegate. 9 /// Included file event handler delegate.
10 /// </summary> 10 /// </summary>
11 /// <param name="sender">Sender of the message.</param> 11 /// <param name="sender">Sender of the message.</param>
12 /// <param name="ea">Arguments for the included file event.</param> 12 /// <param name="e">Arguments for the included file event.</param>
13 public delegate void IncludedFileEventHandler(object sender, IncludedFileEventArgs e); 13 internal delegate void IncludedFileEventHandler(object sender, IncludedFileEventArgs e);
14 14
15 /// <summary> 15 /// <summary>
16 /// Event args for included file event. 16 /// Event args for included file event.
17 /// </summary> 17 /// </summary>
18 public class IncludedFileEventArgs : EventArgs 18 internal class IncludedFileEventArgs : EventArgs
19 { 19 {
20 /// <summary> 20 /// <summary>
21 /// Creates a new IncludedFileEventArgs. 21 /// Creates a new IncludedFileEventArgs.
diff --git a/src/WixToolset.Core/Preprocess/ProcessedStreamEventHandler.cs b/src/WixToolset.Core/Preprocess/ProcessedStreamEventHandler.cs
index b2a4ddb1..672b4b9f 100644
--- a/src/WixToolset.Core/Preprocess/ProcessedStreamEventHandler.cs
+++ b/src/WixToolset.Core/Preprocess/ProcessedStreamEventHandler.cs
@@ -9,13 +9,13 @@ namespace WixToolset.Core.Preprocess
9 /// Preprocessed output stream event handler delegate. 9 /// Preprocessed output stream event handler delegate.
10 /// </summary> 10 /// </summary>
11 /// <param name="sender">Sender of the message.</param> 11 /// <param name="sender">Sender of the message.</param>
12 /// <param name="ea">Arguments for the preprocessed stream event.</param> 12 /// <param name="e">Arguments for the preprocessed stream event.</param>
13 public delegate void ProcessedStreamEventHandler(object sender, ProcessedStreamEventArgs e); 13 internal delegate void ProcessedStreamEventHandler(object sender, ProcessedStreamEventArgs e);
14 14
15 /// <summary> 15 /// <summary>
16 /// Event args for preprocessed stream event. 16 /// Event args for preprocessed stream event.
17 /// </summary> 17 /// </summary>
18 public class ProcessedStreamEventArgs : EventArgs 18 internal class ProcessedStreamEventArgs : EventArgs
19 { 19 {
20 /// <summary> 20 /// <summary>
21 /// Creates a new ProcessedStreamEventArgs. 21 /// Creates a new ProcessedStreamEventArgs.
diff --git a/src/WixToolset.Core/Preprocess/ResolvedVariableEventHandler.cs b/src/WixToolset.Core/Preprocess/ResolvedVariableEventHandler.cs
index df3a7e6a..6d159ad0 100644
--- a/src/WixToolset.Core/Preprocess/ResolvedVariableEventHandler.cs
+++ b/src/WixToolset.Core/Preprocess/ResolvedVariableEventHandler.cs
@@ -5,9 +5,9 @@ namespace WixToolset.Core.Preprocess
5 using System; 5 using System;
6 using WixToolset.Data; 6 using WixToolset.Data;
7 7
8 public delegate void ResolvedVariableEventHandler(object sender, ResolvedVariableEventArgs e); 8 internal delegate void ResolvedVariableEventHandler(object sender, ResolvedVariableEventArgs e);
9 9
10 public class ResolvedVariableEventArgs : EventArgs 10 internal class ResolvedVariableEventArgs : EventArgs
11 { 11 {
12 public ResolvedVariableEventArgs(SourceLineNumber sourceLineNumbers, string variableName, string variableValue) 12 public ResolvedVariableEventArgs(SourceLineNumber sourceLineNumbers, string variableName, string variableValue)
13 { 13 {
diff --git a/src/WixToolset.Core/PreprocessResult.cs b/src/WixToolset.Core/PreprocessResult.cs
index 8595d21d..7126f049 100644
--- a/src/WixToolset.Core/PreprocessResult.cs
+++ b/src/WixToolset.Core/PreprocessResult.cs
@@ -6,7 +6,7 @@ namespace WixToolset.Core
6 using System.Xml.Linq; 6 using System.Xml.Linq;
7 using WixToolset.Extensibility.Data; 7 using WixToolset.Extensibility.Data;
8 8
9 public class PreprocessResult : IPreprocessResult 9 internal class PreprocessResult : IPreprocessResult
10 { 10 {
11 public XDocument Document { get; set; } 11 public XDocument Document { get; set; }
12 12
diff --git a/src/WixToolset.Core/Preprocessor.cs b/src/WixToolset.Core/Preprocessor.cs
index c6cd3801..b111b291 100644
--- a/src/WixToolset.Core/Preprocessor.cs
+++ b/src/WixToolset.Core/Preprocessor.cs
@@ -63,10 +63,10 @@ namespace WixToolset.Core
63 /// </summary> 63 /// </summary>
64 public event ProcessedStreamEventHandler ProcessedStream; 64 public event ProcessedStreamEventHandler ProcessedStream;
65 65
66 /// <summary> 66 // <summary>
67 /// Event for resolved variables. 67 // Event for resolved variables.
68 /// </summary> 68 // </summary>
69 /// TOOD: Remove? 69 // TOOD: Remove?
70 //public event ResolvedVariableEventHandler ResolvedVariable; 70 //public event ResolvedVariableEventHandler ResolvedVariable;
71 71
72 /// <summary> 72 /// <summary>
@@ -134,7 +134,7 @@ namespace WixToolset.Core
134 /// <summary> 134 /// <summary>
135 /// Preprocesses a file. 135 /// Preprocesses a file.
136 /// </summary> 136 /// </summary>
137 /// <param name="context">The preprocessing context.</param> 137 /// <param name="state">The preprocessing context.</param>
138 /// <param name="reader">XmlReader to processing the context.</param> 138 /// <param name="reader">XmlReader to processing the context.</param>
139 /// <returns>XDocument with the postprocessed data.</returns> 139 /// <returns>XDocument with the postprocessed data.</returns>
140 private IPreprocessResult Process(ProcessingState state, XmlReader reader) 140 private IPreprocessResult Process(ProcessingState state, XmlReader reader)
@@ -266,6 +266,7 @@ namespace WixToolset.Core
266 /// <summary> 266 /// <summary>
267 /// Processes an xml reader into an xml writer. 267 /// Processes an xml reader into an xml writer.
268 /// </summary> 268 /// </summary>
269 /// <param name="state"></param>
269 /// <param name="include">Specifies if reader is from an included file.</param> 270 /// <param name="include">Specifies if reader is from an included file.</param>
270 /// <param name="reader">Reader for the source document.</param> 271 /// <param name="reader">Reader for the source document.</param>
271 /// <param name="container">Node where content should be added.</param> 272 /// <param name="container">Node where content should be added.</param>
@@ -546,6 +547,7 @@ namespace WixToolset.Core
546 /// <summary> 547 /// <summary>
547 /// Processes an error processing instruction. 548 /// Processes an error processing instruction.
548 /// </summary> 549 /// </summary>
550 /// <param name="state"></param>
549 /// <param name="errorMessage">Text from source.</param> 551 /// <param name="errorMessage">Text from source.</param>
550 private void PreprocessError(ProcessingState state, string errorMessage) 552 private void PreprocessError(ProcessingState state, string errorMessage)
551 { 553 {
@@ -558,6 +560,7 @@ namespace WixToolset.Core
558 /// <summary> 560 /// <summary>
559 /// Processes a warning processing instruction. 561 /// Processes a warning processing instruction.
560 /// </summary> 562 /// </summary>
563 /// <param name="state"></param>
561 /// <param name="warningMessage">Text from source.</param> 564 /// <param name="warningMessage">Text from source.</param>
562 private void PreprocessWarning(ProcessingState state, string warningMessage) 565 private void PreprocessWarning(ProcessingState state, string warningMessage)
563 { 566 {
@@ -570,6 +573,7 @@ namespace WixToolset.Core
570 /// <summary> 573 /// <summary>
571 /// Processes a define processing instruction and creates the appropriate parameter. 574 /// Processes a define processing instruction and creates the appropriate parameter.
572 /// </summary> 575 /// </summary>
576 /// <param name="state"></param>
573 /// <param name="originalDefine">Text from source.</param> 577 /// <param name="originalDefine">Text from source.</param>
574 private void PreprocessDefine(ProcessingState state, string originalDefine) 578 private void PreprocessDefine(ProcessingState state, string originalDefine)
575 { 579 {
@@ -607,6 +611,7 @@ namespace WixToolset.Core
607 /// <summary> 611 /// <summary>
608 /// Processes an undef processing instruction and creates the appropriate parameter. 612 /// Processes an undef processing instruction and creates the appropriate parameter.
609 /// </summary> 613 /// </summary>
614 /// <param name="state"></param>
610 /// <param name="originalDefine">Text from source.</param> 615 /// <param name="originalDefine">Text from source.</param>
611 private void PreprocessUndef(ProcessingState state, string originalDefine) 616 private void PreprocessUndef(ProcessingState state, string originalDefine)
612 { 617 {
@@ -625,6 +630,7 @@ namespace WixToolset.Core
625 /// <summary> 630 /// <summary>
626 /// Processes an included file. 631 /// Processes an included file.
627 /// </summary> 632 /// </summary>
633 /// <param name="state"></param>
628 /// <param name="includePath">Path to included file.</param> 634 /// <param name="includePath">Path to included file.</param>
629 /// <param name="parent">Parent container for included content.</param> 635 /// <param name="parent">Parent container for included content.</param>
630 private void PreprocessInclude(ProcessingState state, string includePath, XContainer parent) 636 private void PreprocessInclude(ProcessingState state, string includePath, XContainer parent)
@@ -671,6 +677,7 @@ namespace WixToolset.Core
671 /// <summary> 677 /// <summary>
672 /// Preprocess a foreach processing instruction. 678 /// Preprocess a foreach processing instruction.
673 /// </summary> 679 /// </summary>
680 /// <param name="state"></param>
674 /// <param name="reader">The xml reader.</param> 681 /// <param name="reader">The xml reader.</param>
675 /// <param name="container">The container where to output processed data.</param> 682 /// <param name="container">The container where to output processed data.</param>
676 /// <param name="offset">Offset for the line numbers.</param> 683 /// <param name="offset">Offset for the line numbers.</param>
@@ -785,7 +792,9 @@ namespace WixToolset.Core
785 /// <summary> 792 /// <summary>
786 /// Processes a pragma processing instruction 793 /// Processes a pragma processing instruction
787 /// </summary> 794 /// </summary>
795 /// <param name="state"></param>
788 /// <param name="pragmaText">Text from source.</param> 796 /// <param name="pragmaText">Text from source.</param>
797 /// <param name="parent"></param>
789 private void PreprocessPragma(ProcessingState state, string pragmaText, XContainer parent) 798 private void PreprocessPragma(ProcessingState state, string pragmaText, XContainer parent)
790 { 799 {
791 var match = PragmaRegex.Match(pragmaText); 800 var match = PragmaRegex.Match(pragmaText);
@@ -811,6 +820,7 @@ namespace WixToolset.Core
811 /// <summary> 820 /// <summary>
812 /// Gets the next token in an expression. 821 /// Gets the next token in an expression.
813 /// </summary> 822 /// </summary>
823 /// <param name="state"></param>
814 /// <param name="originalExpression">Expression to parse.</param> 824 /// <param name="originalExpression">Expression to parse.</param>
815 /// <param name="expression">Expression with token removed.</param> 825 /// <param name="expression">Expression with token removed.</param>
816 /// <param name="stringLiteral">Flag if token is a string literal instead of a variable.</param> 826 /// <param name="stringLiteral">Flag if token is a string literal instead of a variable.</param>
@@ -958,6 +968,7 @@ namespace WixToolset.Core
958 /// <summary> 968 /// <summary>
959 /// Gets the value for a variable. 969 /// Gets the value for a variable.
960 /// </summary> 970 /// </summary>
971 /// <param name="state"></param>
961 /// <param name="originalExpression">Original expression for error message.</param> 972 /// <param name="originalExpression">Original expression for error message.</param>
962 /// <param name="variable">Variable to evaluate.</param> 973 /// <param name="variable">Variable to evaluate.</param>
963 /// <returns>Value of variable.</returns> 974 /// <returns>Value of variable.</returns>
@@ -996,6 +1007,7 @@ namespace WixToolset.Core
996 /// <summary> 1007 /// <summary>
997 /// Gets the left side value, operator, and right side value of an expression. 1008 /// Gets the left side value, operator, and right side value of an expression.
998 /// </summary> 1009 /// </summary>
1010 /// <param name="state"></param>
999 /// <param name="originalExpression">Original expression to evaluate.</param> 1011 /// <param name="originalExpression">Original expression to evaluate.</param>
1000 /// <param name="expression">Expression modified while processing.</param> 1012 /// <param name="expression">Expression modified while processing.</param>
1001 /// <param name="leftValue">Left side value from expression.</param> 1013 /// <param name="leftValue">Left side value from expression.</param>
@@ -1048,6 +1060,7 @@ namespace WixToolset.Core
1048 /// <summary> 1060 /// <summary>
1049 /// Evaluates an expression. 1061 /// Evaluates an expression.
1050 /// </summary> 1062 /// </summary>
1063 /// <param name="state"></param>
1051 /// <param name="originalExpression">Original expression to evaluate.</param> 1064 /// <param name="originalExpression">Original expression to evaluate.</param>
1052 /// <param name="expression">Expression modified while processing.</param> 1065 /// <param name="expression">Expression modified while processing.</param>
1053 /// <returns>true if expression evaluates to true.</returns> 1066 /// <returns>true if expression evaluates to true.</returns>
@@ -1143,6 +1156,7 @@ namespace WixToolset.Core
1143 /// <summary> 1156 /// <summary>
1144 /// Gets a sub-expression in parenthesis. 1157 /// Gets a sub-expression in parenthesis.
1145 /// </summary> 1158 /// </summary>
1159 /// <param name="state"></param>
1146 /// <param name="originalExpression">Original expression to evaluate.</param> 1160 /// <param name="originalExpression">Original expression to evaluate.</param>
1147 /// <param name="expression">Expression modified while processing.</param> 1161 /// <param name="expression">Expression modified while processing.</param>
1148 /// <param name="endSubExpression">Index of end of sub-expression.</param> 1162 /// <param name="endSubExpression">Index of end of sub-expression.</param>
@@ -1197,6 +1211,7 @@ namespace WixToolset.Core
1197 /// <summary> 1211 /// <summary>
1198 /// Updates expression based on operation. 1212 /// Updates expression based on operation.
1199 /// </summary> 1213 /// </summary>
1214 /// <param name="state"></param>
1200 /// <param name="currentValue">State to update.</param> 1215 /// <param name="currentValue">State to update.</param>
1201 /// <param name="operation">Operation to apply to current value.</param> 1216 /// <param name="operation">Operation to apply to current value.</param>
1202 /// <param name="prevResult">Previous result.</param> 1217 /// <param name="prevResult">Previous result.</param>
@@ -1221,6 +1236,7 @@ namespace WixToolset.Core
1221 /// <summary> 1236 /// <summary>
1222 /// Evaluate an expression. 1237 /// Evaluate an expression.
1223 /// </summary> 1238 /// </summary>
1239 /// <param name="state"></param>
1224 /// <param name="expression">Expression to evaluate.</param> 1240 /// <param name="expression">Expression to evaluate.</param>
1225 /// <returns>Boolean result of expression.</returns> 1241 /// <returns>Boolean result of expression.</returns>
1226 private bool EvaluateExpression(ProcessingState state, string expression) 1242 private bool EvaluateExpression(ProcessingState state, string expression)
@@ -1252,6 +1268,7 @@ namespace WixToolset.Core
1252 /// $(var.A) and $(var.B)>2 or $(var.B) &lt;= 2 1268 /// $(var.A) and $(var.B)>2 or $(var.B) &lt;= 2
1253 /// $(var.A) != "2" 1269 /// $(var.A) != "2"
1254 /// </summary> 1270 /// </summary>
1271 /// <param name="state"></param>
1255 /// <param name="originalExpression">The original expression</param> 1272 /// <param name="originalExpression">The original expression</param>
1256 /// <param name="expression">The expression currently being evaluated</param> 1273 /// <param name="expression">The expression currently being evaluated</param>
1257 /// <param name="prevResultOperation">The operation to apply to this result</param> 1274 /// <param name="prevResultOperation">The operation to apply to this result</param>
@@ -1322,6 +1339,7 @@ namespace WixToolset.Core
1322 /// <summary> 1339 /// <summary>
1323 /// Update the current line number with the reader's current state. 1340 /// Update the current line number with the reader's current state.
1324 /// </summary> 1341 /// </summary>
1342 /// <param name="state"></param>
1325 /// <param name="reader">The xml reader for the preprocessor.</param> 1343 /// <param name="reader">The xml reader for the preprocessor.</param>
1326 /// <param name="offset">This is the artificial offset of the line numbers from the reader. Used for the foreach processing.</param> 1344 /// <param name="offset">This is the artificial offset of the line numbers from the reader. Used for the foreach processing.</param>
1327 private void UpdateCurrentLineNumber(ProcessingState state, XmlReader reader, int offset) 1345 private void UpdateCurrentLineNumber(ProcessingState state, XmlReader reader, int offset)
@@ -1341,6 +1359,7 @@ namespace WixToolset.Core
1341 /// <summary> 1359 /// <summary>
1342 /// Pushes a file name on the stack of included files. 1360 /// Pushes a file name on the stack of included files.
1343 /// </summary> 1361 /// </summary>
1362 /// <param name="state"></param>
1344 /// <param name="fileName">Name to push on to the stack of included files.</param> 1363 /// <param name="fileName">Name to push on to the stack of included files.</param>
1345 private void PushInclude(ProcessingState state, string fileName) 1364 private void PushInclude(ProcessingState state, string fileName)
1346 { 1365 {
@@ -1374,6 +1393,7 @@ namespace WixToolset.Core
1374 /// through the search paths in the order given on the command line 1393 /// through the search paths in the order given on the command line
1375 /// (leftmost first, ...). 1394 /// (leftmost first, ...).
1376 /// </summary> 1395 /// </summary>
1396 /// <param name="state"></param>
1377 /// <param name="includePath">User-specified path to the included file (usually just the file name).</param> 1397 /// <param name="includePath">User-specified path to the included file (usually just the file name).</param>
1378 /// <returns>Returns a FileInfo for the found include file, or null if the file cannot be found.</returns> 1398 /// <returns>Returns a FileInfo for the found include file, or null if the file cannot be found.</returns>
1379 private string GetIncludeFile(ProcessingState state, string includePath) 1399 private string GetIncludeFile(ProcessingState state, string includePath)
diff --git a/src/WixToolset.Core/ResolveFileResult.cs b/src/WixToolset.Core/ResolveFileResult.cs
index e36c474a..12b31d54 100644
--- a/src/WixToolset.Core/ResolveFileResult.cs
+++ b/src/WixToolset.Core/ResolveFileResult.cs
@@ -5,7 +5,7 @@ namespace WixToolset.Core
5 using System.Collections.Generic; 5 using System.Collections.Generic;
6 using WixToolset.Extensibility.Data; 6 using WixToolset.Extensibility.Data;
7 7
8 public class ResolveFileResult : IResolveFileResult 8 internal class ResolveFileResult : IResolveFileResult
9 { 9 {
10 public string Path { get; set; } 10 public string Path { get; set; }
11 11
diff --git a/src/WixToolset.Core/WixToolset.Core.csproj b/src/WixToolset.Core/WixToolset.Core.csproj
index 3952f97c..947c445f 100644
--- a/src/WixToolset.Core/WixToolset.Core.csproj
+++ b/src/WixToolset.Core/WixToolset.Core.csproj
@@ -9,6 +9,8 @@
9 <Title>WiX Toolset Core</Title> 9 <Title>WiX Toolset Core</Title>
10 <DebugType>embedded</DebugType> 10 <DebugType>embedded</DebugType>
11 <PublishRepositoryUrl>true</PublishRepositoryUrl> 11 <PublishRepositoryUrl>true</PublishRepositoryUrl>
12 <NBGV_EmitThisAssemblyClass>true</NBGV_EmitThisAssemblyClass>
13 <CreateDocumentationFile>true</CreateDocumentationFile>
12 </PropertyGroup> 14 </PropertyGroup>
13 15
14 <ItemGroup> 16 <ItemGroup>
diff --git a/src/WixToolset.Core/WixToolsetServiceProviderFactory.cs b/src/WixToolset.Core/WixToolsetServiceProviderFactory.cs
index 51e7a447..8e07070b 100644
--- a/src/WixToolset.Core/WixToolsetServiceProviderFactory.cs
+++ b/src/WixToolset.Core/WixToolsetServiceProviderFactory.cs
@@ -4,8 +4,15 @@ namespace WixToolset.Core
4{ 4{
5 using WixToolset.Extensibility.Services; 5 using WixToolset.Extensibility.Services;
6 6
7 /// <summary>
8 /// Class for creating <see cref="IWixToolsetCoreServiceProvider"/>.
9 /// </summary>
7 public static class WixToolsetServiceProviderFactory 10 public static class WixToolsetServiceProviderFactory
8 { 11 {
12 /// <summary>
13 /// Creates a new <see cref="IWixToolsetCoreServiceProvider"/>.
14 /// </summary>
15 /// <returns>The created <see cref="IWixToolsetCoreServiceProvider"/></returns>
9 public static IWixToolsetCoreServiceProvider CreateServiceProvider() 16 public static IWixToolsetCoreServiceProvider CreateServiceProvider()
10 { 17 {
11 return new WixToolsetServiceProvider(); 18 return new WixToolsetServiceProvider();
diff --git a/src/test/WixToolsetTest.CoreIntegration/PayloadFixture.cs b/src/test/WixToolsetTest.CoreIntegration/PayloadFixture.cs
index 4568f93f..4a9344b9 100644
--- a/src/test/WixToolsetTest.CoreIntegration/PayloadFixture.cs
+++ b/src/test/WixToolsetTest.CoreIntegration/PayloadFixture.cs
@@ -6,7 +6,6 @@ namespace WixToolsetTest.CoreIntegration
6 using System.IO; 6 using System.IO;
7 using System.Linq; 7 using System.Linq;
8 using WixBuildTools.TestSupport; 8 using WixBuildTools.TestSupport;
9 using WixToolset.Core.Burn.Bundles;
10 using WixToolset.Core.TestPackage; 9 using WixToolset.Core.TestPackage;
11 using WixToolset.Data; 10 using WixToolset.Data;
12 using WixToolset.Data.Symbols; 11 using WixToolset.Data.Symbols;
@@ -109,8 +108,10 @@ namespace WixToolsetTest.CoreIntegration
109 108
110 Assert.InRange(result.ExitCode, 2, int.MaxValue); 109 Assert.InRange(result.ExitCode, 2, int.MaxValue);
111 110
112 Assert.Equal(1, result.Messages.Where(m => m.Id == (int)ErrorMessages.Ids.IllegalRelativeLongFilename).Count()); 111 var expectedIllegalRelativeLongFileName = 1;
113 Assert.Equal(2, result.Messages.Where(m => m.Id == (int)ErrorMessages.Ids.PayloadMustBeRelativeToCache).Count()); 112 var expectedPayloadMustBeRelativeToCache = 2;
113 Assert.Equal(expectedIllegalRelativeLongFileName, result.Messages.Where(m => m.Id == (int)ErrorMessages.Ids.IllegalRelativeLongFilename).Count());
114 Assert.Equal(expectedPayloadMustBeRelativeToCache, result.Messages.Where(m => m.Id == (int)ErrorMessages.Ids.PayloadMustBeRelativeToCache).Count());
114 } 115 }
115 } 116 }
116 } 117 }
diff --git a/src/test/WixToolsetTest.CoreIntegration/WixToolsetTest.CoreIntegration.csproj b/src/test/WixToolsetTest.CoreIntegration/WixToolsetTest.CoreIntegration.csproj
index 9ebf1e5c..b6ab1e03 100644
--- a/src/test/WixToolsetTest.CoreIntegration/WixToolsetTest.CoreIntegration.csproj
+++ b/src/test/WixToolsetTest.CoreIntegration/WixToolsetTest.CoreIntegration.csproj
@@ -8,10 +8,6 @@
8 <DebugType>embedded</DebugType> 8 <DebugType>embedded</DebugType>
9 </PropertyGroup> 9 </PropertyGroup>
10 10
11 <PropertyGroup>
12 <NoWarn>NU1701</NoWarn>
13 </PropertyGroup>
14
15 <ItemGroup> 11 <ItemGroup>
16 <Content Include="TestData\.Data\burn.exe" CopyToOutputDirectory="PreserveNewest" /> 12 <Content Include="TestData\.Data\burn.exe" CopyToOutputDirectory="PreserveNewest" />
17 <Content Include="TestData\AppId\Advertised.wxs" CopyToOutputDirectory="PreserveNewest" /> 13 <Content Include="TestData\AppId\Advertised.wxs" CopyToOutputDirectory="PreserveNewest" />