diff options
author | Rob Mensching <rob@firegiant.com> | 2021-05-11 07:39:24 -0700 |
---|---|---|
committer | Rob Mensching <rob@firegiant.com> | 2021-05-11 07:39:24 -0700 |
commit | d9fac05722b6b21825ce6f0537887564feb70b2f (patch) | |
tree | ea840c27c5396669ff597787ceb4f78e76207468 /src/api | |
parent | cb49308d18e998e96bbe9e259e815128f7fc2abc (diff) | |
parent | 9e83fcb193e2358b21f6caa10b1fc9f6059018b0 (diff) | |
download | wix-d9fac05722b6b21825ce6f0537887564feb70b2f.tar.gz wix-d9fac05722b6b21825ce6f0537887564feb70b2f.tar.bz2 wix-d9fac05722b6b21825ce6f0537887564feb70b2f.zip |
Merge Data
Diffstat (limited to 'src/api')
292 files changed, 37738 insertions, 0 deletions
diff --git a/src/api/wix/Custom.Build.props b/src/api/wix/Custom.Build.props new file mode 100644 index 00000000..889fb62e --- /dev/null +++ b/src/api/wix/Custom.Build.props | |||
@@ -0,0 +1,6 @@ | |||
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 | <Project> | ||
3 | <PropertyGroup Condition="'$(Configuration)'=='Release'"> | ||
4 | <TreatWarningsAsErrors>true</TreatWarningsAsErrors> | ||
5 | </PropertyGroup> | ||
6 | </Project> | ||
diff --git a/src/api/wix/Directory.Build.props b/src/api/wix/Directory.Build.props new file mode 100644 index 00000000..b3c6287c --- /dev/null +++ b/src/api/wix/Directory.Build.props | |||
@@ -0,0 +1,27 @@ | |||
1 | <?xml version="1.0" encoding="utf-8"?> | ||
2 | <!-- 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. --> | ||
3 | <!-- | ||
4 | Do NOT modify this file. Update the canonical version in Home\repo-template\src\Directory.Build.props | ||
5 | then update all of the repos. | ||
6 | --> | ||
7 | <Project> | ||
8 | <PropertyGroup> | ||
9 | <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration> | ||
10 | <EnableSourceLink Condition=" '$(NCrunch)' == '1' ">false</EnableSourceLink> | ||
11 | <MSBuildWarningsAsMessages>MSB3246</MSBuildWarningsAsMessages> | ||
12 | |||
13 | <ProjectName Condition=" '$(ProjectName)' == '' ">$(MSBuildProjectName)</ProjectName> | ||
14 | <BaseOutputPath>$([System.IO.Path]::GetFullPath($(MSBuildThisFileDirectory)..\build\))</BaseOutputPath> | ||
15 | <BaseIntermediateOutputPath>$(BaseOutputPath)obj\$(ProjectName)\</BaseIntermediateOutputPath> | ||
16 | <OutputPath>$(BaseOutputPath)$(Configuration)\</OutputPath> | ||
17 | |||
18 | <Authors>WiX Toolset Team</Authors> | ||
19 | <Company>WiX Toolset</Company> | ||
20 | <Copyright>Copyright (c) .NET Foundation and contributors. All rights reserved.</Copyright> | ||
21 | <PackageLicenseExpression>MS-RL</PackageLicenseExpression> | ||
22 | <Product>WiX Toolset</Product> | ||
23 | </PropertyGroup> | ||
24 | |||
25 | <Import Project="Directory$(MSBuildProjectExtension).props" Condition=" Exists('Directory$(MSBuildProjectExtension).props') " /> | ||
26 | <Import Project="Custom.Build.props" Condition=" Exists('Custom.Build.props') " /> | ||
27 | </Project> | ||
diff --git a/src/api/wix/Directory.Build.targets b/src/api/wix/Directory.Build.targets new file mode 100644 index 00000000..2fcc765a --- /dev/null +++ b/src/api/wix/Directory.Build.targets | |||
@@ -0,0 +1,51 @@ | |||
1 | <?xml version="1.0" encoding="utf-8"?> | ||
2 | <!-- 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. --> | ||
3 | <!-- | ||
4 | Do NOT modify this file. Update the canonical version in Home\repo-template\src\Directory.Build.targets | ||
5 | then update all of the repos. | ||
6 | --> | ||
7 | <!-- | ||
8 | Replace PackageReferences with ProjectReferences when the projects can be found in .sln. | ||
9 | See the original here: https://github.com/dotnet/sdk/issues/1151#issuecomment-385133284 | ||
10 | --> | ||
11 | <Project> | ||
12 | <PropertyGroup> | ||
13 | <ReplacePackageReferences>true</ReplacePackageReferences> | ||
14 | <TheSolutionPath Condition=" '$(NCrunch)'=='' ">$(SolutionPath)</TheSolutionPath> | ||
15 | <TheSolutionPath Condition=" '$(NCrunch)'=='1' ">$(NCrunchOriginalSolutionPath)</TheSolutionPath> | ||
16 | </PropertyGroup> | ||
17 | |||
18 | <Choose> | ||
19 | <When Condition="$(ReplacePackageReferences) AND '$(TheSolutionPath)' != '' AND '$(TheSolutionPath)' != '*undefined*' AND Exists('$(TheSolutionPath)')"> | ||
20 | |||
21 | <PropertyGroup> | ||
22 | <SolutionFileContent>$([System.IO.File]::ReadAllText($(TheSolutionPath)))</SolutionFileContent> | ||
23 | <SmartSolutionDir>$([System.IO.Path]::GetDirectoryName( $(TheSolutionPath) ))</SmartSolutionDir> | ||
24 | <RegexPattern>(?<="[PackageName]", ")(.*)(?=", ")</RegexPattern> | ||
25 | </PropertyGroup> | ||
26 | |||
27 | <ItemGroup> | ||
28 | <!-- Keep the identity of the PackageReference --> | ||
29 | <SmartPackageReference Include="@(PackageReference)"> | ||
30 | <PackageName>%(Identity)</PackageName> | ||
31 | <InSolution>$(SolutionFileContent.Contains('\%(Identity).csproj'))</InSolution> | ||
32 | </SmartPackageReference> | ||
33 | |||
34 | <!-- Filter them by mapping them to another ItemGroup using the WithMetadataValue item function --> | ||
35 | <PackageInSolution Include="@(SmartPackageReference->WithMetadataValue('InSolution', True))"> | ||
36 | <Pattern>$(RegexPattern.Replace('[PackageName]','%(PackageName)') )</Pattern> | ||
37 | <SmartPath>$([System.Text.RegularExpressions.Regex]::Match('$(SolutionFileContent)', '%(Pattern)'))</SmartPath> | ||
38 | </PackageInSolution> | ||
39 | |||
40 | <ProjectReference Include="@(PackageInSolution->'$(SmartSolutionDir)\%(SmartPath)' )"/> | ||
41 | |||
42 | <!-- Remove the package references that are now referenced as projects --> | ||
43 | <PackageReference Remove="@(PackageInSolution->'%(PackageName)')"/> | ||
44 | </ItemGroup> | ||
45 | |||
46 | </When> | ||
47 | </Choose> | ||
48 | |||
49 | <Import Project="Directory$(MSBuildProjectExtension).targets" Condition=" Exists('Directory$(MSBuildProjectExtension).targets') " /> | ||
50 | <Import Project="Custom.Build.targets" Condition=" Exists('Custom.Build.targets') " /> | ||
51 | </Project> | ||
diff --git a/src/api/wix/Directory.csproj.props b/src/api/wix/Directory.csproj.props new file mode 100644 index 00000000..81d24ad1 --- /dev/null +++ b/src/api/wix/Directory.csproj.props | |||
@@ -0,0 +1,13 @@ | |||
1 | <!-- Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. --> | ||
2 | <!-- | ||
3 | Do NOT modify this file. Update the canonical version in Home\repo-template\src\CSharp.Build.props | ||
4 | then update all of the repos. | ||
5 | --> | ||
6 | <Project> | ||
7 | <PropertyGroup> | ||
8 | <CheckForOverflowUnderflow>true</CheckForOverflowUnderflow> | ||
9 | <SignAssembly>true</SignAssembly> | ||
10 | <AssemblyOriginatorKeyFile>$([System.IO.Path]::GetFullPath($(MSBuildThisFileDirectory)wix.snk))</AssemblyOriginatorKeyFile> | ||
11 | <NBGV_EmitThisAssemblyClass>false</NBGV_EmitThisAssemblyClass> | ||
12 | </PropertyGroup> | ||
13 | </Project> | ||
diff --git a/src/api/wix/Directory.csproj.targets b/src/api/wix/Directory.csproj.targets new file mode 100644 index 00000000..623228ef --- /dev/null +++ b/src/api/wix/Directory.csproj.targets | |||
@@ -0,0 +1,25 @@ | |||
1 | <!-- Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. --> | ||
2 | <!-- | ||
3 | Do NOT modify this file. Update the canonical version in Home\repo-template\src\Directory.csproj.targets | ||
4 | then update all of the repos. | ||
5 | --> | ||
6 | <Project> | ||
7 | <PropertyGroup> | ||
8 | <CreateDocumentation Condition=" '$(CreateDocumentationFile)'!='true' ">false</CreateDocumentation> | ||
9 | <DocumentationFile Condition=" '$(CreateDocumentationFile)'=='true' ">$(OutputPath)\$(AssemblyName).xml</DocumentationFile> | ||
10 | </PropertyGroup> | ||
11 | |||
12 | <Target Name="SetNuspecProperties" DependsOnTargets="InitializeSourceControlInformation" AfterTargets="GetBuildVersion" | ||
13 | Condition=" Exists('$(MSBuildProjectName).nuspec') "> | ||
14 | <PropertyGroup> | ||
15 | <ProjectUrl Condition=" '$(ProjectUrl)'=='' and '$(PrivateRepositoryUrl)'!='' ">$(PrivateRepositoryUrl.Replace('.git',''))</ProjectUrl> | ||
16 | |||
17 | <NuspecFile>$(MSBuildProjectName).nuspec</NuspecFile> | ||
18 | <NuspecBasePath Condition=" '$(NuspecBasePath)'=='' ">$(OutputPath)..\</NuspecBasePath> | ||
19 | <NuspecProperties>$(NuspecProperties);Id=$(PackageId);Authors=$(Authors);Copyright=$(Copyright);Description=$(Description);Title=$(Title)</NuspecProperties> | ||
20 | <NuspecProperties>$(NuspecProperties);Version=$(PackageVersion);RepositoryCommit=$(SourceRevisionId);RepositoryType=$(RepositoryType);RepositoryUrl=$(PrivateRepositoryUrl);ProjectFolder=$(MSBuildProjectDirectory)\;ProjectUrl=$(ProjectUrl)</NuspecProperties> | ||
21 | <PublishRepositoryUrl>true</PublishRepositoryUrl> | ||
22 | </PropertyGroup> | ||
23 | </Target> | ||
24 | |||
25 | </Project> | ||
diff --git a/src/api/wix/README.md b/src/api/wix/README.md new file mode 100644 index 00000000..720632c9 --- /dev/null +++ b/src/api/wix/README.md | |||
@@ -0,0 +1,3 @@ | |||
1 | # Data | ||
2 | WixToolset.Data - data model for WiX Toolset tools | ||
3 | |||
diff --git a/src/api/wix/WixToolset.Data.sln b/src/api/wix/WixToolset.Data.sln new file mode 100644 index 00000000..d8c62b1d --- /dev/null +++ b/src/api/wix/WixToolset.Data.sln | |||
@@ -0,0 +1,61 @@ | |||
1 |  | ||
2 | Microsoft Visual Studio Solution File, Format Version 12.00 | ||
3 | # Visual Studio 15 | ||
4 | VisualStudioVersion = 15.0.27004.2009 | ||
5 | MinimumVisualStudioVersion = 10.0.40219.1 | ||
6 | Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "WixToolset.Data", "src\WixToolset.Data\WixToolset.Data.csproj", "{73ADBD3A-8FB2-47DB-BC79-9BC61C40F2E0}" | ||
7 | EndProject | ||
8 | Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "WixToolsetTest.Data", "src\test\WixToolsetTest.Data\WixToolsetTest.Data.csproj", "{6C1FA8B7-BF3C-4735-95F8-26DEEFEF00C8}" | ||
9 | EndProject | ||
10 | Global | ||
11 | GlobalSection(SolutionConfigurationPlatforms) = preSolution | ||
12 | Debug|Any CPU = Debug|Any CPU | ||
13 | Debug|arm = Debug|arm | ||
14 | Debug|x64 = Debug|x64 | ||
15 | Debug|x86 = Debug|x86 | ||
16 | Release|Any CPU = Release|Any CPU | ||
17 | Release|arm = Release|arm | ||
18 | Release|x64 = Release|x64 | ||
19 | Release|x86 = Release|x86 | ||
20 | EndGlobalSection | ||
21 | GlobalSection(ProjectConfigurationPlatforms) = postSolution | ||
22 | {73ADBD3A-8FB2-47DB-BC79-9BC61C40F2E0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU | ||
23 | {73ADBD3A-8FB2-47DB-BC79-9BC61C40F2E0}.Debug|Any CPU.Build.0 = Debug|Any CPU | ||
24 | {73ADBD3A-8FB2-47DB-BC79-9BC61C40F2E0}.Debug|arm.ActiveCfg = Debug|Any CPU | ||
25 | {73ADBD3A-8FB2-47DB-BC79-9BC61C40F2E0}.Debug|arm.Build.0 = Debug|Any CPU | ||
26 | {73ADBD3A-8FB2-47DB-BC79-9BC61C40F2E0}.Debug|x64.ActiveCfg = Debug|Any CPU | ||
27 | {73ADBD3A-8FB2-47DB-BC79-9BC61C40F2E0}.Debug|x64.Build.0 = Debug|Any CPU | ||
28 | {73ADBD3A-8FB2-47DB-BC79-9BC61C40F2E0}.Debug|x86.ActiveCfg = Debug|Any CPU | ||
29 | {73ADBD3A-8FB2-47DB-BC79-9BC61C40F2E0}.Debug|x86.Build.0 = Debug|Any CPU | ||
30 | {73ADBD3A-8FB2-47DB-BC79-9BC61C40F2E0}.Release|Any CPU.ActiveCfg = Release|Any CPU | ||
31 | {73ADBD3A-8FB2-47DB-BC79-9BC61C40F2E0}.Release|Any CPU.Build.0 = Release|Any CPU | ||
32 | {73ADBD3A-8FB2-47DB-BC79-9BC61C40F2E0}.Release|arm.ActiveCfg = Release|Any CPU | ||
33 | {73ADBD3A-8FB2-47DB-BC79-9BC61C40F2E0}.Release|arm.Build.0 = Release|Any CPU | ||
34 | {73ADBD3A-8FB2-47DB-BC79-9BC61C40F2E0}.Release|x64.ActiveCfg = Release|Any CPU | ||
35 | {73ADBD3A-8FB2-47DB-BC79-9BC61C40F2E0}.Release|x64.Build.0 = Release|Any CPU | ||
36 | {73ADBD3A-8FB2-47DB-BC79-9BC61C40F2E0}.Release|x86.ActiveCfg = Release|Any CPU | ||
37 | {73ADBD3A-8FB2-47DB-BC79-9BC61C40F2E0}.Release|x86.Build.0 = Release|Any CPU | ||
38 | {6C1FA8B7-BF3C-4735-95F8-26DEEFEF00C8}.Debug|Any CPU.ActiveCfg = Debug|Any CPU | ||
39 | {6C1FA8B7-BF3C-4735-95F8-26DEEFEF00C8}.Debug|Any CPU.Build.0 = Debug|Any CPU | ||
40 | {6C1FA8B7-BF3C-4735-95F8-26DEEFEF00C8}.Debug|arm.ActiveCfg = Debug|Any CPU | ||
41 | {6C1FA8B7-BF3C-4735-95F8-26DEEFEF00C8}.Debug|arm.Build.0 = Debug|Any CPU | ||
42 | {6C1FA8B7-BF3C-4735-95F8-26DEEFEF00C8}.Debug|x64.ActiveCfg = Debug|Any CPU | ||
43 | {6C1FA8B7-BF3C-4735-95F8-26DEEFEF00C8}.Debug|x64.Build.0 = Debug|Any CPU | ||
44 | {6C1FA8B7-BF3C-4735-95F8-26DEEFEF00C8}.Debug|x86.ActiveCfg = Debug|Any CPU | ||
45 | {6C1FA8B7-BF3C-4735-95F8-26DEEFEF00C8}.Debug|x86.Build.0 = Debug|Any CPU | ||
46 | {6C1FA8B7-BF3C-4735-95F8-26DEEFEF00C8}.Release|Any CPU.ActiveCfg = Release|Any CPU | ||
47 | {6C1FA8B7-BF3C-4735-95F8-26DEEFEF00C8}.Release|Any CPU.Build.0 = Release|Any CPU | ||
48 | {6C1FA8B7-BF3C-4735-95F8-26DEEFEF00C8}.Release|arm.ActiveCfg = Release|Any CPU | ||
49 | {6C1FA8B7-BF3C-4735-95F8-26DEEFEF00C8}.Release|arm.Build.0 = Release|Any CPU | ||
50 | {6C1FA8B7-BF3C-4735-95F8-26DEEFEF00C8}.Release|x64.ActiveCfg = Release|Any CPU | ||
51 | {6C1FA8B7-BF3C-4735-95F8-26DEEFEF00C8}.Release|x64.Build.0 = Release|Any CPU | ||
52 | {6C1FA8B7-BF3C-4735-95F8-26DEEFEF00C8}.Release|x86.ActiveCfg = Release|Any CPU | ||
53 | {6C1FA8B7-BF3C-4735-95F8-26DEEFEF00C8}.Release|x86.Build.0 = Release|Any CPU | ||
54 | EndGlobalSection | ||
55 | GlobalSection(SolutionProperties) = preSolution | ||
56 | HideSolutionNode = FALSE | ||
57 | EndGlobalSection | ||
58 | GlobalSection(ExtensibilityGlobals) = postSolution | ||
59 | SolutionGuid = {2C73DAA1-A584-4542-A2C3-951EF6203ED5} | ||
60 | EndGlobalSection | ||
61 | EndGlobal | ||
diff --git a/src/api/wix/WixToolset.Data.v3.ncrunchsolution b/src/api/wix/WixToolset.Data.v3.ncrunchsolution new file mode 100644 index 00000000..10420ac9 --- /dev/null +++ b/src/api/wix/WixToolset.Data.v3.ncrunchsolution | |||
@@ -0,0 +1,6 @@ | |||
1 | <SolutionConfiguration> | ||
2 | <Settings> | ||
3 | <AllowParallelTestExecution>True</AllowParallelTestExecution> | ||
4 | <SolutionConfigured>True</SolutionConfigured> | ||
5 | </Settings> | ||
6 | </SolutionConfiguration> \ No newline at end of file | ||
diff --git a/src/api/wix/WixToolset.Data/AccessModifier.cs b/src/api/wix/WixToolset.Data/AccessModifier.cs new file mode 100644 index 00000000..191558b5 --- /dev/null +++ b/src/api/wix/WixToolset.Data/AccessModifier.cs | |||
@@ -0,0 +1,99 @@ | |||
1 | // Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. | ||
2 | |||
3 | namespace WixToolset.Data | ||
4 | { | ||
5 | using System; | ||
6 | |||
7 | public enum AccessModifier | ||
8 | { | ||
9 | /// <summary> | ||
10 | /// Indicates the identifier is globally visible to all other sections. | ||
11 | /// </summary> | ||
12 | Global, | ||
13 | [Obsolete] | ||
14 | Public = Global, | ||
15 | |||
16 | /// <summary> | ||
17 | /// Indicates the identifier is visible only to sections in the same library. | ||
18 | /// </summary> | ||
19 | Library, | ||
20 | [Obsolete] | ||
21 | Internal = Library, | ||
22 | |||
23 | /// <summary> | ||
24 | /// Indicates the identifier is visible only to sections in the same source file. | ||
25 | /// </summary> | ||
26 | File, | ||
27 | [Obsolete] | ||
28 | Protected = File, | ||
29 | |||
30 | /// <summary> | ||
31 | /// Indicates the identifiers is visible only to the section where it is defined. | ||
32 | /// </summary> | ||
33 | Section, | ||
34 | [Obsolete] | ||
35 | Private = Section, | ||
36 | } | ||
37 | |||
38 | /// <summary> | ||
39 | /// Extensions for converting <c>AccessModifier</c> to and from strings optimally. | ||
40 | /// </summary> | ||
41 | public static class AccessModifierExtensions | ||
42 | { | ||
43 | /// <summary> | ||
44 | /// Converts a string to an <c>AccessModifier</c>. | ||
45 | /// </summary> | ||
46 | /// <param name="access">String value to convert.</param> | ||
47 | /// <returns>Converted <c>AccessModifier</c>.</returns> | ||
48 | public static AccessModifier AsAccessModifier(this string access) | ||
49 | { | ||
50 | switch (access) | ||
51 | { | ||
52 | case "global": | ||
53 | case "public": | ||
54 | return AccessModifier.Global; | ||
55 | |||
56 | case "library": | ||
57 | case "internal": | ||
58 | return AccessModifier.Library; | ||
59 | |||
60 | case "file": | ||
61 | case "protected": | ||
62 | return AccessModifier.File; | ||
63 | |||
64 | case "section": | ||
65 | case "private": | ||
66 | return AccessModifier.Section; | ||
67 | |||
68 | default: | ||
69 | throw new ArgumentException($"Unknown AccessModifier: {access}", nameof(access)); | ||
70 | } | ||
71 | } | ||
72 | |||
73 | /// <summary> | ||
74 | /// Converts an <c>AccessModifier</c> to a string. | ||
75 | /// </summary> | ||
76 | /// <param name="access"><c>AccessModifier</c> value to convert.</param> | ||
77 | /// <returns>Converted string.</returns> | ||
78 | public static string AsString(this AccessModifier access) | ||
79 | { | ||
80 | switch (access) | ||
81 | { | ||
82 | case AccessModifier.Global: | ||
83 | return "global"; | ||
84 | |||
85 | case AccessModifier.Library: | ||
86 | return "library"; | ||
87 | |||
88 | case AccessModifier.File: | ||
89 | return "file"; | ||
90 | |||
91 | case AccessModifier.Section: | ||
92 | return "section"; | ||
93 | |||
94 | default: | ||
95 | throw new ArgumentException($"Unknown AccessModifier: {access}", nameof(access)); | ||
96 | } | ||
97 | } | ||
98 | } | ||
99 | } | ||
diff --git a/src/api/wix/WixToolset.Data/AssemblyInfo.cs b/src/api/wix/WixToolset.Data/AssemblyInfo.cs new file mode 100644 index 00000000..b3740b2a --- /dev/null +++ b/src/api/wix/WixToolset.Data/AssemblyInfo.cs | |||
@@ -0,0 +1,9 @@ | |||
1 | // Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. | ||
2 | |||
3 | using System; | ||
4 | using System.Reflection; | ||
5 | using System.Runtime.InteropServices; | ||
6 | |||
7 | [assembly: AssemblyCulture("")] | ||
8 | [assembly: CLSCompliant(true)] | ||
9 | [assembly: ComVisible(false)] | ||
diff --git a/src/api/wix/WixToolset.Data/Bind/BindVariable.cs b/src/api/wix/WixToolset.Data/Bind/BindVariable.cs new file mode 100644 index 00000000..276dae38 --- /dev/null +++ b/src/api/wix/WixToolset.Data/Bind/BindVariable.cs | |||
@@ -0,0 +1,62 @@ | |||
1 | // Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. | ||
2 | |||
3 | namespace WixToolset.Data.Bind | ||
4 | { | ||
5 | using SimpleJson; | ||
6 | |||
7 | /// <summary> | ||
8 | /// Bind variable. | ||
9 | /// </summary> | ||
10 | public sealed class BindVariable | ||
11 | { | ||
12 | /// <summary> | ||
13 | /// Gets or sets the source line number. | ||
14 | /// </summary> | ||
15 | public SourceLineNumber SourceLineNumbers { get; set; } | ||
16 | |||
17 | /// <summary> | ||
18 | /// Gets or sets the variable identifier. | ||
19 | /// </summary> | ||
20 | /// <value>The variable identifier.</value> | ||
21 | public string Id { get; set; } | ||
22 | |||
23 | /// <summary> | ||
24 | /// Gets or sets the variable's value. | ||
25 | /// </summary> | ||
26 | /// <value>The variable's value.</value> | ||
27 | public string Value { get; set; } | ||
28 | |||
29 | /// <summary> | ||
30 | /// Gets or sets whether this variable is overridable. | ||
31 | /// </summary> | ||
32 | /// <value>Whether this variable is overridable.</value> | ||
33 | public bool Overridable { get; set; } | ||
34 | |||
35 | internal JsonObject Serialize() | ||
36 | { | ||
37 | var jsonObject = new JsonObject | ||
38 | { | ||
39 | { "name", this.Id }, | ||
40 | }; | ||
41 | |||
42 | jsonObject.AddIsNotNullOrEmpty("value", this.Value); | ||
43 | jsonObject.AddNonDefaultValue("overridable", this.Overridable, false); | ||
44 | jsonObject.AddNonDefaultValue("ln", this.SourceLineNumbers?.Serialize()); | ||
45 | |||
46 | return jsonObject; | ||
47 | } | ||
48 | |||
49 | internal static BindVariable Deserialize(JsonObject jsonObject) | ||
50 | { | ||
51 | var variable = new BindVariable() | ||
52 | { | ||
53 | Id = jsonObject.GetValueOrDefault<string>("name"), | ||
54 | Value = jsonObject.GetValueOrDefault<string>("value"), | ||
55 | Overridable = jsonObject.GetValueOrDefault("overridable", false), | ||
56 | SourceLineNumbers = jsonObject.GetValueOrDefault<SourceLineNumber>("ln") | ||
57 | }; | ||
58 | |||
59 | return variable; | ||
60 | } | ||
61 | } | ||
62 | } | ||
diff --git a/src/api/wix/WixToolset.Data/Burn/BurnConstants.cs b/src/api/wix/WixToolset.Data/Burn/BurnConstants.cs new file mode 100644 index 00000000..484b144d --- /dev/null +++ b/src/api/wix/WixToolset.Data/Burn/BurnConstants.cs | |||
@@ -0,0 +1,26 @@ | |||
1 | // Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. | ||
2 | |||
3 | namespace WixToolset.Data.Burn | ||
4 | { | ||
5 | public static class BurnConstants | ||
6 | { | ||
7 | public const string BurnUXContainerName = "WixUXContainer"; | ||
8 | public const string BurnDefaultAttachedContainerName = "WixAttachedContainer"; | ||
9 | public const string BundleChainPackageGroupId = "WixChain"; | ||
10 | public const string BundleDefaultBoundaryId = "WixDefaultBoundary"; | ||
11 | public const string BundleLayoutOnlyPayloadsName = "BundleLayoutOnlyPayloads"; | ||
12 | |||
13 | public const string BurnManifestWixOutputStreamName = "wix-burndata.xml"; | ||
14 | public const string BundleExtensionDataWixOutputStreamName = "wix-bextdata"; | ||
15 | public const string BootstrapperApplicationDataWixOutputStreamName = "wix-badata.xml"; | ||
16 | |||
17 | public const string BootstrapperApplicationDataSymbolDefinitionTag = "WixBootstrapperApplicationData"; | ||
18 | public const string BundleExtensionSearchSymbolDefinitionTag = "WixBundleExtensionSearch"; | ||
19 | |||
20 | // The following constants must stay in sync with src\burn\engine\core.h | ||
21 | public const string BURN_BUNDLE_NAME = "WixBundleName"; | ||
22 | public const string BURN_BUNDLE_ORIGINAL_SOURCE = "WixBundleOriginalSource"; | ||
23 | public const string BURN_BUNDLE_ORIGINAL_SOURCE_FOLDER = "WixBundleOriginalSourceFolder"; | ||
24 | public const string BURN_BUNDLE_LAST_USED_SOURCE = "WixBundleLastUsedSource"; | ||
25 | } | ||
26 | } | ||
diff --git a/src/api/wix/WixToolset.Data/ComplexReferenceChildType.cs b/src/api/wix/WixToolset.Data/ComplexReferenceChildType.cs new file mode 100644 index 00000000..a5d4e7ac --- /dev/null +++ b/src/api/wix/WixToolset.Data/ComplexReferenceChildType.cs | |||
@@ -0,0 +1,52 @@ | |||
1 | // Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. | ||
2 | |||
3 | namespace WixToolset.Data | ||
4 | { | ||
5 | /// <summary> | ||
6 | /// Types of children in complex refernece. | ||
7 | /// </summary> | ||
8 | public enum ComplexReferenceChildType | ||
9 | { | ||
10 | /// <summary>Unknown complex reference type, default and invalid.</summary> | ||
11 | Unknown, | ||
12 | |||
13 | /// <summary>Component child of complex reference.</summary> | ||
14 | Component, | ||
15 | |||
16 | /// <summary>Feature child of complex reference.</summary> | ||
17 | Feature, | ||
18 | |||
19 | /// <summary>ComponentGroup child of complex reference.</summary> | ||
20 | ComponentGroup, | ||
21 | |||
22 | /// <summary>FeatureGroup child of complex reference.</summary> | ||
23 | FeatureGroup, | ||
24 | |||
25 | /// <summary>Module child of complex reference.</summary> | ||
26 | Module, | ||
27 | |||
28 | /// <summary>Payload child of complex reference.</summary> | ||
29 | Payload, | ||
30 | |||
31 | /// <summary>PayloadGroup child of complex reference.</summary> | ||
32 | PayloadGroup, | ||
33 | |||
34 | /// <summary>Package child of complex reference.</summary> | ||
35 | Package, | ||
36 | |||
37 | /// <summary>PackageGroup child of complex reference.</summary> | ||
38 | PackageGroup, | ||
39 | |||
40 | /// <summary>PackagePayload child of complex reference.</summary> | ||
41 | PackagePayload, | ||
42 | |||
43 | /// <summary>PatchFamily child of complex reference.</summary> | ||
44 | PatchFamily, | ||
45 | |||
46 | /// <summary>PatchFamilyGroup child of complex reference.</summary> | ||
47 | PatchFamilyGroup, | ||
48 | |||
49 | /// <summary>ContainerPackage child of complex reference.</summary> | ||
50 | ContainerPackage, | ||
51 | } | ||
52 | } | ||
diff --git a/src/api/wix/WixToolset.Data/ComplexReferenceParentType.cs b/src/api/wix/WixToolset.Data/ComplexReferenceParentType.cs new file mode 100644 index 00000000..87731b97 --- /dev/null +++ b/src/api/wix/WixToolset.Data/ComplexReferenceParentType.cs | |||
@@ -0,0 +1,49 @@ | |||
1 | // Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. | ||
2 | |||
3 | namespace WixToolset.Data | ||
4 | { | ||
5 | /// <summary> | ||
6 | /// Types of parents in complex reference. | ||
7 | /// </summary> | ||
8 | public enum ComplexReferenceParentType | ||
9 | { | ||
10 | /// <summary>Unknown complex reference type, default and invalid.</summary> | ||
11 | Unknown, | ||
12 | |||
13 | /// <summary>Feature parent of complex reference.</summary> | ||
14 | Feature, | ||
15 | |||
16 | /// <summary>ComponentGroup parent of complex reference.</summary> | ||
17 | ComponentGroup, | ||
18 | |||
19 | /// <summary>FeatureGroup parent of complex reference.</summary> | ||
20 | FeatureGroup, | ||
21 | |||
22 | /// <summary>Module parent of complex reference.</summary> | ||
23 | Module, | ||
24 | |||
25 | /// <summary>Product parent of complex reference.</summary> | ||
26 | Product, | ||
27 | |||
28 | /// <summary>PayloadGroup parent of complex reference.</summary> | ||
29 | PayloadGroup, | ||
30 | |||
31 | /// <summary>Package parent of complex reference.</summary> | ||
32 | Package, | ||
33 | |||
34 | /// <summary>PackageGroup parent of complex reference.</summary> | ||
35 | PackageGroup, | ||
36 | |||
37 | /// <summary>Container parent of complex reference.</summary> | ||
38 | Container, | ||
39 | |||
40 | /// <summary>Layout parent of complex reference.</summary> | ||
41 | Layout, | ||
42 | |||
43 | /// <summary>Patch parent of complex reference.</summary> | ||
44 | Patch, | ||
45 | |||
46 | /// <summary>PatchFamilyGroup parent of complex reference.</summary> | ||
47 | PatchFamilyGroup, | ||
48 | } | ||
49 | } | ||
diff --git a/src/api/wix/WixToolset.Data/ComponentKeyPathType.cs b/src/api/wix/WixToolset.Data/ComponentKeyPathType.cs new file mode 100644 index 00000000..443049d3 --- /dev/null +++ b/src/api/wix/WixToolset.Data/ComponentKeyPathType.cs | |||
@@ -0,0 +1,27 @@ | |||
1 | // Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. | ||
2 | |||
3 | namespace WixToolset.Data | ||
4 | { | ||
5 | public enum ComponentKeyPathType | ||
6 | { | ||
7 | /// <summary> | ||
8 | /// Folder as a key path. | ||
9 | /// </summary> | ||
10 | Directory, | ||
11 | |||
12 | /// <summary> | ||
13 | /// File resource as a key path. | ||
14 | /// </summary> | ||
15 | File, | ||
16 | |||
17 | /// <summary> | ||
18 | /// ODBC data source as a key path. | ||
19 | /// </summary> | ||
20 | OdbcDataSource, | ||
21 | |||
22 | /// <summary> | ||
23 | /// A simple registry key acting as a key path. | ||
24 | /// </summary> | ||
25 | Registry, | ||
26 | } | ||
27 | } | ||
diff --git a/src/api/wix/WixToolset.Data/CompressionLevel.cs b/src/api/wix/WixToolset.Data/CompressionLevel.cs new file mode 100644 index 00000000..05aa3816 --- /dev/null +++ b/src/api/wix/WixToolset.Data/CompressionLevel.cs | |||
@@ -0,0 +1,25 @@ | |||
1 | // Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. | ||
2 | |||
3 | namespace WixToolset.Data | ||
4 | { | ||
5 | /// <summary> | ||
6 | /// Compression level to use when creating cabinet. | ||
7 | /// </summary> | ||
8 | public enum CompressionLevel | ||
9 | { | ||
10 | /// <summary>Use no compression.</summary> | ||
11 | None, | ||
12 | |||
13 | /// <summary>Use low compression.</summary> | ||
14 | Low, | ||
15 | |||
16 | /// <summary>Use medium compression.</summary> | ||
17 | Medium, | ||
18 | |||
19 | /// <summary>Use high compression.</summary> | ||
20 | High, | ||
21 | |||
22 | /// <summary>Use ms-zip compression.</summary> | ||
23 | Mszip | ||
24 | } | ||
25 | } | ||
diff --git a/src/api/wix/WixToolset.Data/Data/messages.xml b/src/api/wix/WixToolset.Data/Data/messages.xml new file mode 100644 index 00000000..5f03fef5 --- /dev/null +++ b/src/api/wix/WixToolset.Data/Data/messages.xml | |||
@@ -0,0 +1,4038 @@ | |||
1 | <?xml version='1.0' encoding='utf-8'?> | ||
2 | <!-- 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. --> | ||
3 | |||
4 | <!-- | ||
5 | |||
6 | This file has been kept for easy reference until we are certain we don't want to localize error strings. | ||
7 | |||
8 | --> | ||
9 | |||
10 | <Messages Namespace="WixToolset" Resources="Data.Messages" xmlns="http://schemas.microsoft.com/genmsgs/2004/07/messages"> | ||
11 | <Class Name="WixErrors" ContainerName="WixErrorEventArgs" BaseContainerName="MessageEventArgs" Level="Error"> | ||
12 | <Message Id="UnexpectedException" Number="1" SourceLineNumbers="no"> | ||
13 | <Instance> | ||
14 | {0} Exception Type: {1} Stack Trace: {2} | ||
15 | <Parameter Type="System.String" Name="message" /> | ||
16 | <Parameter Type="System.String" Name="type" /> | ||
17 | <Parameter Type="System.String" Name="stackTrace" /> | ||
18 | </Instance> | ||
19 | </Message> | ||
20 | <Message Id="UnexpectedFileFormat" Number="2" SourceLineNumbers="no"> | ||
21 | <Instance> | ||
22 | Unexpected file format loaded from path: {0}. The file was expected to be a {1} but was actually: {2}. Ensure the correct path was provided. | ||
23 | <Parameter Type="System.String" Name="path" /> | ||
24 | <Parameter Type="System.String" Name="expectedFormat" /> | ||
25 | <Parameter Type="System.String" Name="actualFormat" /> | ||
26 | </Instance> | ||
27 | </Message> | ||
28 | <Message Id="CorruptFileFormat" Number="3" SourceLineNumbers="no"> | ||
29 | <Instance> | ||
30 | Attempted to load corrupt file from path: {0}. The file with format {1} contained unexpected content. Ensure the correct path was provided and that the file has not been incorrectly modified. | ||
31 | <Parameter Type="System.String" Name="path" /> | ||
32 | <Parameter Type="System.String" Name="format" /> | ||
33 | </Instance> | ||
34 | </Message> | ||
35 | <Message Id="DuplicateLocalizationIdentifier" Number="100"> | ||
36 | <Instance> | ||
37 | The localization identifier '{0}' has been duplicated in multiple locations. Please resolve the conflict. | ||
38 | <Parameter Type="System.String" Name="localizationId" /> | ||
39 | </Instance> | ||
40 | </Message> | ||
41 | <Message Id="UnexpectedAttribute" Number="4"> | ||
42 | <Instance> | ||
43 | The {0} element contains an unexpected attribute '{1}'. | ||
44 | <Parameter Type="System.String" Name="elementName" /> | ||
45 | <Parameter Type="System.String" Name="attributeName" /> | ||
46 | </Instance> | ||
47 | </Message> | ||
48 | <Message Id="UnexpectedElement" Number="5"> | ||
49 | <Instance> | ||
50 | The {0} element contains an unexpected child element '{1}'. | ||
51 | <Parameter Type="System.String" Name="elementName" /> | ||
52 | <Parameter Type="System.String" Name="childElementName" /> | ||
53 | </Instance> | ||
54 | </Message> | ||
55 | <Message Id="IllegalEmptyAttributeValue" Number="6"> | ||
56 | <Instance> | ||
57 | The {0}/@{1} attribute's value cannot be an empty string. If a value is not required, simply remove the entire attribute. | ||
58 | <Parameter Type="System.String" Name="elementName" /> | ||
59 | <Parameter Type="System.String" Name="attributeName" /> | ||
60 | </Instance> | ||
61 | <Instance> | ||
62 | The {0}/@{1} attribute's value cannot be an empty string. To use the default value "{2}", simply remove the entire attribute. | ||
63 | <Parameter Type="System.String" Name="elementName" /> | ||
64 | <Parameter Type="System.String" Name="attributeName" /> | ||
65 | <Parameter Type="System.String" Name="defaultValue" /> | ||
66 | </Instance> | ||
67 | </Message> | ||
68 | <Message Id="InsufficientVersion" Number="7"> | ||
69 | <Instance> | ||
70 | The current version of the toolset is {0}, but version {1} is required. | ||
71 | <Parameter Type="System.Version" Name="currentVersion" /> | ||
72 | <Parameter Type="System.Version" Name="requiredVersion" /> | ||
73 | </Instance> | ||
74 | <Instance> | ||
75 | The current version of the extension '{2}' is {0}, but version {1} is required. | ||
76 | <Parameter Type="System.Version" Name="currentVersion" /> | ||
77 | <Parameter Type="System.Version" Name="requiredVersion" /> | ||
78 | <Parameter Type="System.String" Name="extension" /> | ||
79 | </Instance> | ||
80 | </Message> | ||
81 | <Message Id="IllegalIntegerValue" Number="8"> | ||
82 | <Instance> | ||
83 | The {0}/@{1} attribute's value, '{2}', is not a legal integer value. Legal integer values are from -2,147,483,648 to 2,147,483,647. | ||
84 | <Parameter Type="System.String" Name="elementName" /> | ||
85 | <Parameter Type="System.String" Name="attributeName" /> | ||
86 | <Parameter Type="System.String" Name="value" /> | ||
87 | </Instance> | ||
88 | </Message> | ||
89 | <Message Id="IllegalGuidValue" Number="9"> | ||
90 | <Instance> | ||
91 | The {0}/@{1} attribute's value, '{2}', is not a legal guid value. | ||
92 | <Parameter Type="System.String" Name="elementName" /> | ||
93 | <Parameter Type="System.String" Name="attributeName" /> | ||
94 | <Parameter Type="System.String" Name="value" /> | ||
95 | </Instance> | ||
96 | </Message> | ||
97 | <Message Id="ExpectedAttribute" Number="10"> | ||
98 | <Instance> | ||
99 | The {0}/@{1} attribute was not found; it is required. | ||
100 | <Parameter Type="System.String" Name="elementName" /> | ||
101 | <Parameter Type="System.String" Name="attributeName" /> | ||
102 | </Instance> | ||
103 | <Instance> | ||
104 | The {0} element must have a value for exactly one of the {1} or {2} attributes. | ||
105 | <Parameter Type="System.String" Name="elementName" /> | ||
106 | <Parameter Type="System.String" Name="attribute1Name" /> | ||
107 | <Parameter Type="System.String" Name="attribute2Name" /> | ||
108 | <Parameter Type="System.Boolean" Name="eitherOr" /> | ||
109 | </Instance> | ||
110 | <Instance> | ||
111 | The {0}/@{1} attribute was not found; it is required when attribute {2} is specified. | ||
112 | <Parameter Type="System.String" Name="elementName" /> | ||
113 | <Parameter Type="System.String" Name="attributeName" /> | ||
114 | <Parameter Type="System.String" Name="otherAttributeName" /> | ||
115 | </Instance> | ||
116 | <Instance> | ||
117 | The {0}/@{1} attribute was not found; it is required when attribute {2} has a value of '{3}'. | ||
118 | <Parameter Type="System.String" Name="elementName" /> | ||
119 | <Parameter Type="System.String" Name="attributeName" /> | ||
120 | <Parameter Type="System.String" Name="otherAttributeName" /> | ||
121 | <Parameter Type="System.String" Name="otherAttributeValue" /> | ||
122 | </Instance> | ||
123 | <Instance> | ||
124 | The {0}/@{1} attribute was not found; it is required unless the attribute {2} has a value of '{3}'. | ||
125 | <Parameter Type="System.String" Name="elementName" /> | ||
126 | <Parameter Type="System.String" Name="attributeName" /> | ||
127 | <Parameter Type="System.String" Name="otherAttributeName" /> | ||
128 | <Parameter Type="System.String" Name="otherAttributeValue" /> | ||
129 | <Parameter Type="System.Boolean" Name="otherAttributeValueUnless" /> | ||
130 | </Instance> | ||
131 | </Message> | ||
132 | <Message Id="SecurePropertyNotUppercase" Number="11"> | ||
133 | <Instance> | ||
134 | The {0}/@{1} attribute's value, '{2}', cannot contain lowercase characters. Since this is a secure property, it must also be a public property. This means the Property/@Id value must be completely uppercase. | ||
135 | <Parameter Type="System.String" Name="elementName" /> | ||
136 | <Parameter Type="System.String" Name="attributeName" /> | ||
137 | <Parameter Type="System.String" Name="propertyId" /> | ||
138 | </Instance> | ||
139 | </Message> | ||
140 | <Message Id="SearchPropertyNotUppercase" Number="12"> | ||
141 | <Instance> | ||
142 | The {0}/@{1} attribute's value, '{2}', cannot contain lowercase characters. Since this is a search property, it must also be a public property. This means the Property/@Id value must be completely uppercase. | ||
143 | <Parameter Type="System.String" Name="elementName" /> | ||
144 | <Parameter Type="System.String" Name="attributeName" /> | ||
145 | <Parameter Type="System.String" Name="value" /> | ||
146 | </Instance> | ||
147 | </Message> | ||
148 | <Message Id="StreamNameTooLong" Number="13"> | ||
149 | <Instance> | ||
150 | The {0}/@{1} attribute's value, '{2}', is {3} characters long. This is too long because it will be used to create a stream name. It cannot be more than than {4} characters long. | ||
151 | <Parameter Type="System.String" Name="elementName" /> | ||
152 | <Parameter Type="System.String" Name="attributeName" /> | ||
153 | <Parameter Type="System.String" Name="value" /> | ||
154 | <Parameter Type="System.Int32" Name="length" /> | ||
155 | <Parameter Type="System.Int32" Name="maximumLength" /> | ||
156 | </Instance> | ||
157 | <Instance> | ||
158 | The binary value in table '{0}' will be stored with a stream name, '{1}', that is {2} characters long. This is too long because the maximum allowed length for a stream name is 62 characters long. Since the stream name is created by concatenating the table name and values of the primary key for a row (delimited by periods), this error can be resolved by shortening a value that is part of the primary key. | ||
159 | <Parameter Type="System.String" Name="tableName" /> | ||
160 | <Parameter Type="System.String" Name="streamName" /> | ||
161 | <Parameter Type="System.Int32" Name="streamLength" /> | ||
162 | </Instance> | ||
163 | </Message> | ||
164 | <Message Id="IllegalIdentifier" Number="14"> | ||
165 | <Instance> | ||
166 | The {0} element's value, '{1}', is not a legal identifier. Identifiers may contain ASCII characters A-Z, a-z, digits, underscores (_), or periods (.). Every identifier must begin with either a letter or an underscore. | ||
167 | <Parameter Type="System.String" Name="elementName" /> | ||
168 | <Parameter Type="System.String" Name="value" /> | ||
169 | </Instance> | ||
170 | <Instance> | ||
171 | The {0}/@{1} attribute's value is not a legal identifier. Identifiers may contain ASCII characters A-Z, a-z, digits, underscores (_), or periods (.). Every identifier must begin with either a letter or an underscore. | ||
172 | <Parameter Type="System.String" Name="elementName" /> | ||
173 | <Parameter Type="System.String" Name="attributeName" /> | ||
174 | <Parameter Type="System.Int32" Name="disambiguator" /> | ||
175 | </Instance> | ||
176 | <Instance> | ||
177 | The {0}/@{1} attribute's value, '{2}', is not a legal identifier. Identifiers may contain ASCII characters A-Z, a-z, digits, underscores (_), or periods (.). Every identifier must begin with either a letter or an underscore. | ||
178 | <Parameter Type="System.String" Name="elementName" /> | ||
179 | <Parameter Type="System.String" Name="attributeName" /> | ||
180 | <Parameter Type="System.String" Name="value" /> | ||
181 | </Instance> | ||
182 | <Instance> | ||
183 | The {0}/@{1} attribute's value '{2}' contains an illegal identifier '{3}'. Identifiers may contain ASCII characters A-Z, a-z, digits, underscores (_), or periods (.). Every identifier must begin with either a letter or an underscore. | ||
184 | <Parameter Type="System.String" Name="elementName" /> | ||
185 | <Parameter Type="System.String" Name="attributeName" /> | ||
186 | <Parameter Type="System.String" Name="value" /> | ||
187 | <Parameter Type="System.String" Name="identifier" /> | ||
188 | </Instance> | ||
189 | </Message> | ||
190 | <Message Id="IllegalYesNoValue" Number="15"> | ||
191 | <Instance> | ||
192 | The {0}/@{1} attribute's value, '{2}', is not a legal yes/no value. The only legal values are 'no' and 'yes'. | ||
193 | <Parameter Type="System.String" Name="elementName" /> | ||
194 | <Parameter Type="System.String" Name="attributeName" /> | ||
195 | <Parameter Type="System.String" Name="value" /> | ||
196 | </Instance> | ||
197 | </Message> | ||
198 | <Message Id="CabCreationFailed" Number="16" SourceLineNumbers="no"> | ||
199 | <Instance> | ||
200 | Failed to create cab '{0}' while compressing file '{1}' with error 0x{2:X8}. | ||
201 | <Parameter Type="System.String" Name="cabName" /> | ||
202 | <Parameter Type="System.String" Name="fileName" /> | ||
203 | <Parameter Type="System.Int32" Name="error" /> | ||
204 | </Instance> | ||
205 | <Instance> | ||
206 | Failed to create cab '{0}' with error 0x{1:X8}. | ||
207 | <Parameter Type="System.String" Name="cabName" /> | ||
208 | <Parameter Type="System.Int32" Name="error" /> | ||
209 | </Instance> | ||
210 | </Message> | ||
211 | <Message Id="CabExtractionFailed" Number="17" SourceLineNumbers="no"> | ||
212 | <Instance> | ||
213 | Failed to extract cab '{0}' to directory '{1}'. This is most likely due to a lack of available disk space on the destination drive. | ||
214 | <Parameter Type="System.String" Name="cabName" /> | ||
215 | <Parameter Type="System.String" Name="directoryName" /> | ||
216 | </Instance> | ||
217 | <Instance> | ||
218 | Failed to extract cab '{0}' from merge module '{1}' to directory '{2}'. This is most likely due to a lack of available disk space on the destination drive. | ||
219 | <Parameter Type="System.String" Name="cabName" /> | ||
220 | <Parameter Type="System.String" Name="mergeModulePath" /> | ||
221 | <Parameter Type="System.String" Name="directoryName" /> | ||
222 | </Instance> | ||
223 | </Message> | ||
224 | <Message Id="AppIdIncompatibleAdvertiseState" Number="18"> | ||
225 | <Instance> | ||
226 | The {0}/@(1) attribute's value, '{2}' does not match the advertise state on its parent element: '{3}'. (Note: AppIds nested under Fragment, Module, or Product elements must be advertised.) | ||
227 | <Parameter Type="System.String" Name="elementName" /> | ||
228 | <Parameter Type="System.String" Name="attributeName" /> | ||
229 | <Parameter Type="System.String" Name="value" /> | ||
230 | <Parameter Type="System.String" Name="parentValue" /> | ||
231 | </Instance> | ||
232 | </Message> | ||
233 | <Message Id="IllegalAttributeWhenAdvertised" Number="19"> | ||
234 | <Instance> | ||
235 | The {0}/@{1} attribute cannot be specified because the element is advertised. | ||
236 | <Parameter Type="System.String" Name="elementName" /> | ||
237 | <Parameter Type="System.String" Name="attributeName" /> | ||
238 | </Instance> | ||
239 | </Message> | ||
240 | <Message Id="ConditionExpected" Number="20"> | ||
241 | <Instance> | ||
242 | The {0} element's inner text cannot be an empty string or completely whitespace. If you don't want a condition, then simply remove the entire {0} element. | ||
243 | <Parameter Type="System.String" Name="elementName" /> | ||
244 | </Instance> | ||
245 | </Message> | ||
246 | <Message Id="IllegalAttributeValue" Number="21"> | ||
247 | <Instance> | ||
248 | The {0}/@{1} attribute's value, '{2}', is not one of the legal options: '{3}'. | ||
249 | <Parameter Type="System.String" Name="elementName" /> | ||
250 | <Parameter Type="System.String" Name="attributeName" /> | ||
251 | <Parameter Type="System.String" Name="value" /> | ||
252 | <Parameter Type="System.String" Name="legalValue1" /> | ||
253 | </Instance> | ||
254 | <Instance> | ||
255 | The {0}/@{1} attribute's value, '{2}', is not one of the legal options: '{3}', or '{4}'. | ||
256 | <Parameter Type="System.String" Name="elementName" /> | ||
257 | <Parameter Type="System.String" Name="attributeName" /> | ||
258 | <Parameter Type="System.String" Name="value" /> | ||
259 | <Parameter Type="System.String" Name="legalValue1" /> | ||
260 | <Parameter Type="System.String" Name="legalValue2" /> | ||
261 | </Instance> | ||
262 | <Instance> | ||
263 | The {0}/@{1} attribute's value, '{2}', is not one of the legal options: '{3}', '{4}', or '{5}'. | ||
264 | <Parameter Type="System.String" Name="elementName" /> | ||
265 | <Parameter Type="System.String" Name="attributeName" /> | ||
266 | <Parameter Type="System.String" Name="value" /> | ||
267 | <Parameter Type="System.String" Name="legalValue1" /> | ||
268 | <Parameter Type="System.String" Name="legalValue2" /> | ||
269 | <Parameter Type="System.String" Name="legalValue3" /> | ||
270 | </Instance> | ||
271 | <Instance> | ||
272 | The {0}/@{1} attribute's value, '{2}', is not one of the legal options: '{3}', '{4}', '{5}', or '{6}'. | ||
273 | <Parameter Type="System.String" Name="elementName" /> | ||
274 | <Parameter Type="System.String" Name="attributeName" /> | ||
275 | <Parameter Type="System.String" Name="value" /> | ||
276 | <Parameter Type="System.String" Name="legalValue1" /> | ||
277 | <Parameter Type="System.String" Name="legalValue2" /> | ||
278 | <Parameter Type="System.String" Name="legalValue3" /> | ||
279 | <Parameter Type="System.String" Name="legalValue4" /> | ||
280 | </Instance> | ||
281 | <Instance> | ||
282 | The {0}/@{1} attribute's value, '{2}', is not one of the legal options: '{3}', '{4}', '{5}', '{6}', or '{7}'. | ||
283 | <Parameter Type="System.String" Name="elementName" /> | ||
284 | <Parameter Type="System.String" Name="attributeName" /> | ||
285 | <Parameter Type="System.String" Name="value" /> | ||
286 | <Parameter Type="System.String" Name="legalValue1" /> | ||
287 | <Parameter Type="System.String" Name="legalValue2" /> | ||
288 | <Parameter Type="System.String" Name="legalValue3" /> | ||
289 | <Parameter Type="System.String" Name="legalValue4" /> | ||
290 | <Parameter Type="System.String" Name="legalValue5" /> | ||
291 | </Instance> | ||
292 | <Instance> | ||
293 | The {0}/@{1} attribute's value, '{2}', is not one of the legal options: '{3}', '{4}', '{5}', '{6}', '{7}', or '{8}'. | ||
294 | <Parameter Type="System.String" Name="elementName" /> | ||
295 | <Parameter Type="System.String" Name="attributeName" /> | ||
296 | <Parameter Type="System.String" Name="value" /> | ||
297 | <Parameter Type="System.String" Name="legalValue1" /> | ||
298 | <Parameter Type="System.String" Name="legalValue2" /> | ||
299 | <Parameter Type="System.String" Name="legalValue3" /> | ||
300 | <Parameter Type="System.String" Name="legalValue4" /> | ||
301 | <Parameter Type="System.String" Name="legalValue5" /> | ||
302 | <Parameter Type="System.String" Name="legalValue6" /> | ||
303 | </Instance> | ||
304 | <Instance> | ||
305 | The {0}/@{1} attribute's value, '{2}', is not one of the legal options: '{3}', '{4}', '{5}', '{6}', '{7}', '{8}', or '{9}'. | ||
306 | <Parameter Type="System.String" Name="elementName" /> | ||
307 | <Parameter Type="System.String" Name="attributeName" /> | ||
308 | <Parameter Type="System.String" Name="value" /> | ||
309 | <Parameter Type="System.String" Name="legalValue1" /> | ||
310 | <Parameter Type="System.String" Name="legalValue2" /> | ||
311 | <Parameter Type="System.String" Name="legalValue3" /> | ||
312 | <Parameter Type="System.String" Name="legalValue4" /> | ||
313 | <Parameter Type="System.String" Name="legalValue5" /> | ||
314 | <Parameter Type="System.String" Name="legalValue6" /> | ||
315 | <Parameter Type="System.String" Name="legalValue7" /> | ||
316 | </Instance> | ||
317 | <Instance> | ||
318 | The {0}/@{1} attribute's value, '{2}', is not one of the legal options: '{3}', '{4}', '{5}', '{6}', '{7}', '{8}', '{9}', or '{10}'. | ||
319 | <Parameter Type="System.String" Name="elementName" /> | ||
320 | <Parameter Type="System.String" Name="attributeName" /> | ||
321 | <Parameter Type="System.String" Name="value" /> | ||
322 | <Parameter Type="System.String" Name="legalValue1" /> | ||
323 | <Parameter Type="System.String" Name="legalValue2" /> | ||
324 | <Parameter Type="System.String" Name="legalValue3" /> | ||
325 | <Parameter Type="System.String" Name="legalValue4" /> | ||
326 | <Parameter Type="System.String" Name="legalValue5" /> | ||
327 | <Parameter Type="System.String" Name="legalValue6" /> | ||
328 | <Parameter Type="System.String" Name="legalValue7" /> | ||
329 | <Parameter Type="System.String" Name="legalValue8" /> | ||
330 | </Instance> | ||
331 | <Instance> | ||
332 | The {0}/@{1} attribute's value, '{2}', is not one of the legal options: '{3}', '{4}', '{5}', '{6}', '{7}', '{8}', '{9}', '{10}', '{11}', '{12}', '{13}', '{14}', '{15}', '{16}', '{17}', '{18}', '{19}', '{20}', '{21}', '{22}', '{23}', '{24}', '{25}', '{26}', '{27}', or '{28}'. | ||
333 | <Parameter Type="System.String" Name="elementName" /> | ||
334 | <Parameter Type="System.String" Name="attributeName" /> | ||
335 | <Parameter Type="System.String" Name="value" /> | ||
336 | <Parameter Type="System.String" Name="legalValue1" /> | ||
337 | <Parameter Type="System.String" Name="legalValue2" /> | ||
338 | <Parameter Type="System.String" Name="legalValue3" /> | ||
339 | <Parameter Type="System.String" Name="legalValue4" /> | ||
340 | <Parameter Type="System.String" Name="legalValue5" /> | ||
341 | <Parameter Type="System.String" Name="legalValue6" /> | ||
342 | <Parameter Type="System.String" Name="legalValue7" /> | ||
343 | <Parameter Type="System.String" Name="legalValue8" /> | ||
344 | <Parameter Type="System.String" Name="legalValue9" /> | ||
345 | <Parameter Type="System.String" Name="legalValue10" /> | ||
346 | <Parameter Type="System.String" Name="legalValue11" /> | ||
347 | <Parameter Type="System.String" Name="legalValue12" /> | ||
348 | <Parameter Type="System.String" Name="legalValue13" /> | ||
349 | <Parameter Type="System.String" Name="legalValue14" /> | ||
350 | <Parameter Type="System.String" Name="legalValue15" /> | ||
351 | <Parameter Type="System.String" Name="legalValue16" /> | ||
352 | <Parameter Type="System.String" Name="legalValue17" /> | ||
353 | <Parameter Type="System.String" Name="legalValue18" /> | ||
354 | <Parameter Type="System.String" Name="legalValue19" /> | ||
355 | <Parameter Type="System.String" Name="legalValue20" /> | ||
356 | <Parameter Type="System.String" Name="legalValue21" /> | ||
357 | <Parameter Type="System.String" Name="legalValue22" /> | ||
358 | <Parameter Type="System.String" Name="legalValue23" /> | ||
359 | <Parameter Type="System.String" Name="legalValue24" /> | ||
360 | <Parameter Type="System.String" Name="legalValue25" /> | ||
361 | <Parameter Type="System.String" Name="legalValue26" /> | ||
362 | </Instance> | ||
363 | </Message> | ||
364 | <Message Id="CustomActionMultipleSources" Number="22"> | ||
365 | <Instance> | ||
366 | The {0}/@{1} attribute cannot coexist with a previously specified attribute on this element. The {0} element may only have one of the following source attributes specified at a time: {2}, {3}, {4}, {5}, or {6}. | ||
367 | <Parameter Type="System.String" Name="elementName" /> | ||
368 | <Parameter Type="System.String" Name="attributeName" /> | ||
369 | <Parameter Type="System.String" Name="attributeName1" /> | ||
370 | <Parameter Type="System.String" Name="attributeName2" /> | ||
371 | <Parameter Type="System.String" Name="attributeName3" /> | ||
372 | <Parameter Type="System.String" Name="attributeName4" /> | ||
373 | <Parameter Type="System.String" Name="attributeName5" /> | ||
374 | </Instance> | ||
375 | </Message> | ||
376 | <Message Id="CustomActionMultipleTargets" Number="23"> | ||
377 | <Instance> | ||
378 | The {0}/@{1} attribute cannot coexist with a previously specified attribute on this element. The {0} element may only have one of the following target attributes specified at a time: {2}, {3}, {4}, {5}, {6}, {7}, or {8}. | ||
379 | <Parameter Type="System.String" Name="elementName" /> | ||
380 | <Parameter Type="System.String" Name="attributeName" /> | ||
381 | <Parameter Type="System.String" Name="attributeName1" /> | ||
382 | <Parameter Type="System.String" Name="attributeName2" /> | ||
383 | <Parameter Type="System.String" Name="attributeName3" /> | ||
384 | <Parameter Type="System.String" Name="attributeName4" /> | ||
385 | <Parameter Type="System.String" Name="attributeName5" /> | ||
386 | <Parameter Type="System.String" Name="attributeName6" /> | ||
387 | <Parameter Type="System.String" Name="attributeName7" /> | ||
388 | </Instance> | ||
389 | </Message> | ||
390 | <Message Id="CustomActionIllegalInnerText" Number="24"> | ||
391 | <Instance> | ||
392 | The {0} element contains illegal inner text: '{1}'. It may not contain inner text unless the {2} attribute is specified. | ||
393 | <Parameter Type="System.String" Name="elementName" /> | ||
394 | <Parameter Type="System.String" Name="innerText" /> | ||
395 | <Parameter Type="System.String" Name="attributeName" /> | ||
396 | </Instance> | ||
397 | </Message> | ||
398 | <Message Id="DirectoryRootWithoutName" Number="25"> | ||
399 | <Instance> | ||
400 | The {0} element requires the {1} attribute because there is no parent {0} element. | ||
401 | <Parameter Type="System.String" Name="elementName" /> | ||
402 | <Parameter Type="System.String" Name="attributeName" /> | ||
403 | </Instance> | ||
404 | </Message> | ||
405 | <Message Id="IllegalShortFilename" Number="26"> | ||
406 | <Instance> | ||
407 | The {0}/@{1} attribute's value, '{2}', is not a valid 8.3-compliant name. Legal names contain no more than 8 non-period characters followed by an optional period and extension of no more than 3 non-period characters. Any character except for the follow may be used: \ ? | > < : / * " + , ; = [ ] (space). | ||
408 | <Parameter Type="System.String" Name="elementName" /> | ||
409 | <Parameter Type="System.String" Name="attributeName" /> | ||
410 | <Parameter Type="System.String" Name="value" /> | ||
411 | </Instance> | ||
412 | </Message> | ||
413 | <Message Id="IllegalLongFilename" Number="27"> | ||
414 | <Instance> | ||
415 | The {0}/@{1} attribute's value, '{2}', is not a valid filename because it contains illegal characters. Legal filenames contain no more than 260 characters and must contain at least one non-period character. Any character except for the follow may be used: \ ? | > < : / * ". | ||
416 | <Parameter Type="System.String" Name="elementName" /> | ||
417 | <Parameter Type="System.String" Name="attributeName" /> | ||
418 | <Parameter Type="System.String" Name="value" /> | ||
419 | </Instance> | ||
420 | <Instance> | ||
421 | The {0}/@{1} attribute's value '{2}' contains a invalid filename '{3}'. Legal filenames contain no more than 260 characters and must contain at least one non-period character. Any character except for the follow may be used: \ ? | > < : / * ". | ||
422 | <Parameter Type="System.String" Name="elementName" /> | ||
423 | <Parameter Type="System.String" Name="attributeName" /> | ||
424 | <Parameter Type="System.String" Name="value" /> | ||
425 | <Parameter Type="System.String" Name="filename" /> | ||
426 | </Instance> | ||
427 | </Message> | ||
428 | <Message Id="TableNameTooLong" Number="28"> | ||
429 | <Instance> | ||
430 | The {0}/@{1} attribute's value, '{2}', is too long for a table name. It cannot be more than than 31 characters long. | ||
431 | <Parameter Type="System.String" Name="elementName" /> | ||
432 | <Parameter Type="System.String" Name="attributeName" /> | ||
433 | <Parameter Type="System.String" Name="value" /> | ||
434 | </Instance> | ||
435 | </Message> | ||
436 | <Message Id="FeatureConfigurableDirectoryNotUppercase" Number="29"> | ||
437 | <Instance> | ||
438 | The {0}/@{1} attribute's value, '{2}', contains lowercase characters. Since this directory is user-configurable, it needs to be a public property. This means the value must be completely uppercase. | ||
439 | <Parameter Type="System.String" Name="elementName" /> | ||
440 | <Parameter Type="System.String" Name="attributeName" /> | ||
441 | <Parameter Type="System.String" Name="value" /> | ||
442 | </Instance> | ||
443 | </Message> | ||
444 | <Message Id="FeatureCannotFavorAndDisallowAdvertise" Number="30"> | ||
445 | <Instance> | ||
446 | The {0}/@{1} attribute's value, '{2}', cannot coexist with the {3} attribute's value of '{4}'. These options would ask the installer to disallow the advertised state for this feature while at the same time favoring it. | ||
447 | <Parameter Type="System.String" Name="elementName" /> | ||
448 | <Parameter Type="System.String" Name="attributeName" /> | ||
449 | <Parameter Type="System.String" Name="value" /> | ||
450 | <Parameter Type="System.String" Name="otherAttributeName" /> | ||
451 | <Parameter Type="System.String" Name="otherValue" /> | ||
452 | </Instance> | ||
453 | </Message> | ||
454 | <Message Id="FeatureCannotFollowParentAndFavorLocalOrSource" Number="31"> | ||
455 | <Instance> | ||
456 | The {0}/@{1} attribute cannot be specified if the {2} attribute's value is '{3}'. These options would ask the installer to force this feature to follow the parent installation state and simultaneously favor a particular installation state just for this feature. | ||
457 | <Parameter Type="System.String" Name="elementName" /> | ||
458 | <Parameter Type="System.String" Name="attributeName" /> | ||
459 | <Parameter Type="System.String" Name="otherAttributeName" /> | ||
460 | <Parameter Type="System.String" Name="otherValue" /> | ||
461 | </Instance> | ||
462 | </Message> | ||
463 | <Message Id="MediaEmbeddedCabinetNameTooLong" Number="32"> | ||
464 | <Instance> | ||
465 | The {0}/@{1} attribute's value, '{2}', is {3} characters long. The name is too long for an embedded cabinet. It cannot be more than than 62 characters long. | ||
466 | <Parameter Type="System.String" Name="elementName" /> | ||
467 | <Parameter Type="System.String" Name="attributeName" /> | ||
468 | <Parameter Type="System.String" Name="value" /> | ||
469 | <Parameter Type="System.Int32" Name="length" /> | ||
470 | </Instance> | ||
471 | </Message> | ||
472 | <Message Id="RegistrySubElementCannotBeRemoved" Number="33"> | ||
473 | <Instance> | ||
474 | The {0}/{1} element cannot be specified if the {2} attribute's value is '{3}' or '{4}'. | ||
475 | <Parameter Type="System.String" Name="registryElementName" /> | ||
476 | <Parameter Type="System.String" Name="registryValueElementName" /> | ||
477 | <Parameter Type="System.String" Name="actionAttributeName" /> | ||
478 | <Parameter Type="System.String" Name="removeValue" /> | ||
479 | <Parameter Type="System.String" Name="removeKeyOnInstallValue" /> | ||
480 | </Instance> | ||
481 | </Message> | ||
482 | <Message Id="RegistryMultipleValuesWithoutMultiString" Number="34"> | ||
483 | <Instance> | ||
484 | The {0}/@{1} attribute and a {0}/{2} element cannot both be specified. Only one may be specified if the {3} attribute's value is not 'multiString'. | ||
485 | <Parameter Type="System.String" Name="registryElementName" /> | ||
486 | <Parameter Type="System.String" Name="valueAttributeName" /> | ||
487 | <Parameter Type="System.String" Name="registryValueElementName" /> | ||
488 | <Parameter Type="System.String" Name="typeAttributeName" /> | ||
489 | </Instance> | ||
490 | </Message> | ||
491 | <Message Id="IllegalAttributeWithOtherAttribute" Number="35"> | ||
492 | <Instance> | ||
493 | The {0}/@{1} attribute cannot be specified when attribute {2} is present. | ||
494 | <Parameter Type="System.String" Name="elementName" /> | ||
495 | <Parameter Type="System.String" Name="attributeName" /> | ||
496 | <Parameter Type="System.String" Name="otherAttributeName" /> | ||
497 | </Instance> | ||
498 | <Instance> | ||
499 | The {0}/@{1} attribute cannot be specified when attribute {2} is present with value '{3}'. | ||
500 | <Parameter Type="System.String" Name="elementName" /> | ||
501 | <Parameter Type="System.String" Name="attributeName" /> | ||
502 | <Parameter Type="System.String" Name="otherAttributeName" /> | ||
503 | <Parameter Type="System.String" Name="otherAttributeValue" /> | ||
504 | </Instance> | ||
505 | </Message> | ||
506 | <Message Id="IllegalAttributeWithOtherAttributes" Number="36"> | ||
507 | <Instance> | ||
508 | The {0}/@{1} attribute cannot be specified when attribute {2} or {3} is also present. | ||
509 | <Parameter Type="System.String" Name="elementName" /> | ||
510 | <Parameter Type="System.String" Name="attributeName" /> | ||
511 | <Parameter Type="System.String" Name="otherAttributeName1" /> | ||
512 | <Parameter Type="System.String" Name="otherAttributeName2" /> | ||
513 | </Instance> | ||
514 | <Instance> | ||
515 | The {0}/@{1} attribute cannot be specified when attribute {2}, {3}, or {4} is also present. | ||
516 | <Parameter Type="System.String" Name="elementName" /> | ||
517 | <Parameter Type="System.String" Name="attributeName" /> | ||
518 | <Parameter Type="System.String" Name="otherAttributeName1" /> | ||
519 | <Parameter Type="System.String" Name="otherAttributeName2" /> | ||
520 | <Parameter Type="System.String" Name="otherAttributeName3" /> | ||
521 | </Instance> | ||
522 | <Instance> | ||
523 | The {0}/@{1} attribute cannot be specified when attribute {2}, {3}, {4}, or {5} is also present. | ||
524 | <Parameter Type="System.String" Name="elementName" /> | ||
525 | <Parameter Type="System.String" Name="attributeName" /> | ||
526 | <Parameter Type="System.String" Name="otherAttributeName1" /> | ||
527 | <Parameter Type="System.String" Name="otherAttributeName2" /> | ||
528 | <Parameter Type="System.String" Name="otherAttributeName3" /> | ||
529 | <Parameter Type="System.String" Name="otherAttributeName4" /> | ||
530 | </Instance> | ||
531 | </Message> | ||
532 | <Message Id="IllegalAttributeWithoutOtherAttributes" Number="37"> | ||
533 | <Instance> | ||
534 | The {0}/@{1} attribute can only be specified with the following attribute {2} present. | ||
535 | <Parameter Type="System.String" Name="elementName" /> | ||
536 | <Parameter Type="System.String" Name="attributeName" /> | ||
537 | <Parameter Type="System.String" Name="otherAttributeName" /> | ||
538 | </Instance> | ||
539 | <Instance> | ||
540 | The {0}/@{1} attribute can only be specified with one of the following attributes: {2} or {3} present. | ||
541 | <Parameter Type="System.String" Name="elementName" /> | ||
542 | <Parameter Type="System.String" Name="attributeName" /> | ||
543 | <Parameter Type="System.String" Name="otherAttributeName1" /> | ||
544 | <Parameter Type="System.String" Name="otherAttributeName2" /> | ||
545 | </Instance> | ||
546 | <Instance> | ||
547 | The {0}/@{1} attribute can only be specified with one of the following attributes: {2} or {3} present with value '{4}'. | ||
548 | <Parameter Type="System.String" Name="elementName" /> | ||
549 | <Parameter Type="System.String" Name="attributeName" /> | ||
550 | <Parameter Type="System.String" Name="otherAttributeName1" /> | ||
551 | <Parameter Type="System.String" Name="otherAttributeName2" /> | ||
552 | <Parameter Type="System.String" Name="otherAttributeValue" /> | ||
553 | <Parameter Type="System.Boolean" Name="uniquifier" /> | ||
554 | </Instance> | ||
555 | <Instance> | ||
556 | The {0}/@{1} attribute can only be specified with one of the following attributes: {2}, {3}, or {4} present. | ||
557 | <Parameter Type="System.String" Name="elementName" /> | ||
558 | <Parameter Type="System.String" Name="attributeName" /> | ||
559 | <Parameter Type="System.String" Name="otherAttributeName1" /> | ||
560 | <Parameter Type="System.String" Name="otherAttributeName2" /> | ||
561 | <Parameter Type="System.String" Name="otherAttributeName3" /> | ||
562 | </Instance> | ||
563 | <Instance> | ||
564 | The {0}/@{1} attribute can only be specified with one of the following attributes: {2}, {3}, {4}, or {5} present. | ||
565 | <Parameter Type="System.String" Name="elementName" /> | ||
566 | <Parameter Type="System.String" Name="attributeName" /> | ||
567 | <Parameter Type="System.String" Name="otherAttributeName1" /> | ||
568 | <Parameter Type="System.String" Name="otherAttributeName2" /> | ||
569 | <Parameter Type="System.String" Name="otherAttributeName3" /> | ||
570 | <Parameter Type="System.String" Name="otherAttributeName4" /> | ||
571 | </Instance> | ||
572 | </Message> | ||
573 | <Message Id="IllegalAttributeValueWithoutOtherAttribute" Number="38"> | ||
574 | <Instance> | ||
575 | The {0}/@{1} attribute's value, '{2}', can only be specified with attribute {3} present with value '{4}'. | ||
576 | <Parameter Type="System.String" Name="elementName" /> | ||
577 | <Parameter Type="System.String" Name="attributeName" /> | ||
578 | <Parameter Type="System.String" Name="attributeValue" /> | ||
579 | <Parameter Type="System.String" Name="otherAttributeName" /> | ||
580 | <Parameter Type="System.String" Name="otherAttributeValue" /> | ||
581 | </Instance> | ||
582 | <Instance> | ||
583 | The {0}/@{1} attribute's value, '{2}', cannot be specified without attribute {3} present. | ||
584 | <Parameter Type="System.String" Name="elementName" /> | ||
585 | <Parameter Type="System.String" Name="attributeName" /> | ||
586 | <Parameter Type="System.String" Name="attributeValue" /> | ||
587 | <Parameter Type="System.String" Name="otherAttributeName" /> | ||
588 | </Instance> | ||
589 | </Message> | ||
590 | <Message Id="IntegralValueSentinelCollision" Number="39"> | ||
591 | <Instance> | ||
592 | The integer value {0} collides with a sentinel value in the compiler code. | ||
593 | <Parameter Type="System.Int32" Name="value" /> | ||
594 | </Instance> | ||
595 | <Instance> | ||
596 | The long integral value {0} collides with a sentinel value in the compiler code. | ||
597 | <Parameter Type="System.Int64" Name="value" /> | ||
598 | </Instance> | ||
599 | </Message> | ||
600 | <Message Id="ExampleGuid" Number="40"> | ||
601 | <Instance> | ||
602 | The {0}/@{1} attribute's value, '{2}', is not a legal Guid value. A Guid needs to be generated and put in place of '{2}' in the source file. | ||
603 | <Parameter Type="System.String" Name="elementName" /> | ||
604 | <Parameter Type="System.String" Name="attributeName" /> | ||
605 | <Parameter Type="System.String" Name="value" /> | ||
606 | </Instance> | ||
607 | </Message> | ||
608 | <Message Id="TooManyChildren" Number="41"> | ||
609 | <Instance> | ||
610 | The {0} element contains multiple {1} child elements. There can only be one {1} child element per {0} element. | ||
611 | <Parameter Type="System.String" Name="elementName" /> | ||
612 | <Parameter Type="System.String" Name="childElementName" /> | ||
613 | </Instance> | ||
614 | </Message> | ||
615 | <Message Id="ComponentMultipleKeyPaths" Number="42"> | ||
616 | <Instance> | ||
617 | The {0} element has multiple key paths set. The key path may only be set to '{2}' in extension elements that support it or one of the following locations: {0}/@{1}, {3}/@{1}, {4}/@{1}, or {5}/@{1}. | ||
618 | <Parameter Type="System.String" Name="elementName" /> | ||
619 | <Parameter Type="System.String" Name="attributeName" /> | ||
620 | <Parameter Type="System.String" Name="value" /> | ||
621 | <Parameter Type="System.String" Name="fileElementName" /> | ||
622 | <Parameter Type="System.String" Name="registryElementName" /> | ||
623 | <Parameter Type="System.String" Name="odbcDataSourceElementName" /> | ||
624 | </Instance> | ||
625 | </Message> | ||
626 | <Message Id="CabClosureFailed" Number="43" SourceLineNumbers="no"> | ||
627 | <Instance> | ||
628 | Failed to close cab '{0}'. | ||
629 | <Parameter Type="System.String" Name="cabinet" /> | ||
630 | </Instance> | ||
631 | <Instance> | ||
632 | Failed to close cab '{0}', error: {1}. | ||
633 | <Parameter Type="System.String" Name="cabinet" /> | ||
634 | <Parameter Type="System.Int32" Name="error" /> | ||
635 | </Instance> | ||
636 | </Message> | ||
637 | <Message Id="ExpectedAttributes" Number="44"> | ||
638 | <Instance> | ||
639 | The {0} element's {1} or {2} attribute was not found; one of these is required. | ||
640 | <Parameter Type="System.String" Name="elementName" /> | ||
641 | <Parameter Type="System.String" Name="attributeName1" /> | ||
642 | <Parameter Type="System.String" Name="attributeName2" /> | ||
643 | </Instance> | ||
644 | <Instance> | ||
645 | The {0} element's {1}, {2}, or {3} attribute was not found; one of these is required. | ||
646 | <Parameter Type="System.String" Name="elementName" /> | ||
647 | <Parameter Type="System.String" Name="attributeName1" /> | ||
648 | <Parameter Type="System.String" Name="attributeName2" /> | ||
649 | <Parameter Type="System.String" Name="attributeName3" /> | ||
650 | </Instance> | ||
651 | <Instance> | ||
652 | The {0} element's {1}, {2}, {3}, or {4} attribute was not found; one of these is required. | ||
653 | <Parameter Type="System.String" Name="elementName" /> | ||
654 | <Parameter Type="System.String" Name="attributeName1" /> | ||
655 | <Parameter Type="System.String" Name="attributeName2" /> | ||
656 | <Parameter Type="System.String" Name="attributeName3" /> | ||
657 | <Parameter Type="System.String" Name="attributeName4" /> | ||
658 | </Instance> | ||
659 | <Instance> | ||
660 | The {0} element's {1}, {2}, {3}, {4}, or {5} attribute was not found; one of these is required. | ||
661 | <Parameter Type="System.String" Name="elementName" /> | ||
662 | <Parameter Type="System.String" Name="attributeName1" /> | ||
663 | <Parameter Type="System.String" Name="attributeName2" /> | ||
664 | <Parameter Type="System.String" Name="attributeName3" /> | ||
665 | <Parameter Type="System.String" Name="attributeName4" /> | ||
666 | <Parameter Type="System.String" Name="attributeName5" /> | ||
667 | </Instance> | ||
668 | <Instance> | ||
669 | The {0} element's {1}, {2}, {3}, {4}, {5}, or {6} attribute was not found; one of these is required. | ||
670 | <Parameter Type="System.String" Name="elementName" /> | ||
671 | <Parameter Type="System.String" Name="attributeName1" /> | ||
672 | <Parameter Type="System.String" Name="attributeName2" /> | ||
673 | <Parameter Type="System.String" Name="attributeName3" /> | ||
674 | <Parameter Type="System.String" Name="attributeName4" /> | ||
675 | <Parameter Type="System.String" Name="attributeName5" /> | ||
676 | <Parameter Type="System.String" Name="attributeName6" /> | ||
677 | </Instance> | ||
678 | <Instance> | ||
679 | The {0} element's {1}, {2}, {3}, {4}, {5}, {6}, or {7} attribute was not found; one of these is required. | ||
680 | <Parameter Type="System.String" Name="elementName" /> | ||
681 | <Parameter Type="System.String" Name="attributeName1" /> | ||
682 | <Parameter Type="System.String" Name="attributeName2" /> | ||
683 | <Parameter Type="System.String" Name="attributeName3" /> | ||
684 | <Parameter Type="System.String" Name="attributeName4" /> | ||
685 | <Parameter Type="System.String" Name="attributeName5" /> | ||
686 | <Parameter Type="System.String" Name="attributeName6" /> | ||
687 | <Parameter Type="System.String" Name="attributeName7" /> | ||
688 | </Instance> | ||
689 | </Message> | ||
690 | <Message Id="ExpectedAttributesWithOtherAttribute" Number="45"> | ||
691 | <Instance> | ||
692 | The {0} element's {1} or {2} attribute was not found; at least one of these attributes must be specified. | ||
693 | <Parameter Type="System.String" Name="elementName" /> | ||
694 | <Parameter Type="System.String" Name="attributeName1" /> | ||
695 | <Parameter Type="System.String" Name="attributeName2" /> | ||
696 | </Instance> | ||
697 | <Instance> | ||
698 | The {0} element's {1} or {2} attribute was not found; one of these is required when attribute {3} is present. | ||
699 | <Parameter Type="System.String" Name="elementName" /> | ||
700 | <Parameter Type="System.String" Name="attributeName1" /> | ||
701 | <Parameter Type="System.String" Name="attributeName2" /> | ||
702 | <Parameter Type="System.String" Name="otherAttributeName" /> | ||
703 | </Instance> | ||
704 | <Instance> | ||
705 | The {0} element's {1} or {2} attribute was not found; one of these is required when attribute {3} has a value of '{4}'. | ||
706 | <Parameter Type="System.String" Name="elementName" /> | ||
707 | <Parameter Type="System.String" Name="attributeName1" /> | ||
708 | <Parameter Type="System.String" Name="attributeName2" /> | ||
709 | <Parameter Type="System.String" Name="otherAttributeName" /> | ||
710 | <Parameter Type="System.String" Name="otherAttributeValue" /> | ||
711 | </Instance> | ||
712 | </Message> | ||
713 | <Message Id="ExpectedAttributesWithoutOtherAttribute" Number="46"> | ||
714 | <Instance> | ||
715 | The {0} element's {1} or {2} attribute was not found; one of these is required without attribute {3} present. | ||
716 | <Parameter Type="System.String" Name="elementName" /> | ||
717 | <Parameter Type="System.String" Name="attributeName1" /> | ||
718 | <Parameter Type="System.String" Name="attributeName2" /> | ||
719 | <Parameter Type="System.String" Name="otherAttributeName" /> | ||
720 | </Instance> | ||
721 | </Message> | ||
722 | <Message Id="MissingTypeLibFile" Number="47"> | ||
723 | <Instance> | ||
724 | The {0} element is non-advertised and therefore requires a parent {1} element. | ||
725 | <Parameter Type="System.String" Name="elementName" /> | ||
726 | <Parameter Type="System.String" Name="fileElementName" /> | ||
727 | </Instance> | ||
728 | </Message> | ||
729 | <Message Id="InvalidDocumentElement" Number="48"> | ||
730 | <Instance> | ||
731 | The document element name '{0}' is invalid. A WiX {1} file must use '{2}' as the document element name. | ||
732 | <Parameter Type="System.String" Name="elementName" /> | ||
733 | <Parameter Type="System.String" Name="fileType" /> | ||
734 | <Parameter Type="System.String" Name="expectedElementName" /> | ||
735 | </Instance> | ||
736 | </Message> | ||
737 | <Message Id="ExpectedAttributeInElementOrParent" Number="49"> | ||
738 | <Instance> | ||
739 | The {0}/@{1} attribute was not found or empty; it is required, or it can be specified in the parent {2} element. | ||
740 | <Parameter Type="System.String" Name="elementName" /> | ||
741 | <Parameter Type="System.String" Name="attributeName" /> | ||
742 | <Parameter Type="System.String" Name="parentElementName" /> | ||
743 | </Instance> | ||
744 | <Instance> | ||
745 | The {0}/@{1} attribute was not found or empty; it is required, or it can be specified in the parent {2}/@{3} attribute. | ||
746 | <Parameter Type="System.String" Name="elementName" /> | ||
747 | <Parameter Type="System.String" Name="attributeName" /> | ||
748 | <Parameter Type="System.String" Name="parentElementName" /> | ||
749 | <Parameter Type="System.String" Name="parentAttributeName" /> | ||
750 | </Instance> | ||
751 | </Message> | ||
752 | <Message Id="UnauthorizedAccess" Number="50" SourceLineNumbers="no"> | ||
753 | <Instance> | ||
754 | Access to the path '{0}' is denied. | ||
755 | <Parameter Type="System.String" Name="filePath" /> | ||
756 | </Instance> | ||
757 | </Message> | ||
758 | <Message Id="IllegalModuleExclusionLanguageAttributes" Number="51"> | ||
759 | <Instance>Cannot set both ExcludeLanguage and ExcludeExceptLanguage attributes on a ModuleExclusion element.</Instance> | ||
760 | </Message> | ||
761 | <Message Id="NoFirstControlSpecified" Number="52"> | ||
762 | <Instance> | ||
763 | The '{0}' dialog element does not have a valid tabbable control. You must either have a tabbable control that is not marked TabSkip='yes', or you must mark a control TabSkip='no'. If you have a page with no tabbable controls (a progress page, for example), you might want to set the first Text control to be TabSkip='no'. | ||
764 | <Parameter Type="System.String" Name="dialogName" /> | ||
765 | </Instance> | ||
766 | </Message> | ||
767 | <Message Id="NoDataForColumn" Number="53"> | ||
768 | <Instance> | ||
769 | There is no data for column '{0}' in a contained row of custom table '{1}'. A non-null value must be supplied for this column. | ||
770 | <Parameter Type="System.String" Name="columnName" /> | ||
771 | <Parameter Type="System.String" Name="tableName" /> | ||
772 | </Instance> | ||
773 | </Message> | ||
774 | <Message Id="ValueAndMaskMustBeSameLength" Number="54"> | ||
775 | <Instance> | ||
776 | The FileTypeMask/@Value and FileTypeMask/@Mask attributes must be the same length. | ||
777 | </Instance> | ||
778 | </Message> | ||
779 | <Message Id="TooManySearchElements" Number="55"> | ||
780 | <Instance> | ||
781 | Only one search element can appear under a '{0}' element. | ||
782 | <Parameter Type="System.String" Name="elementName" /> | ||
783 | </Instance> | ||
784 | </Message> | ||
785 | <Message Id="IllegalAttributeExceptOnElement" Number="56"> | ||
786 | <Instance> | ||
787 | The {1} attribute can only be specified on the {2} element. | ||
788 | <Parameter Type="System.String" Name="elementName" /> | ||
789 | <Parameter Type="System.String" Name="attributeName" /> | ||
790 | <Parameter Type="System.String" Name="expectedElementName" /> | ||
791 | </Instance> | ||
792 | </Message> | ||
793 | <Message Id="SearchElementRequired" Number="57"> | ||
794 | <Instance> | ||
795 | A '{0}' element must have a search element as a child. | ||
796 | <Parameter Type="System.String" Name="elementName" /> | ||
797 | </Instance> | ||
798 | </Message> | ||
799 | <Message Id="MultipleIdentifiersFound" Number="58"> | ||
800 | <Instance> | ||
801 | Under a '{0}' element, multiple identifiers were found: '{1}' and '{2}'. All search elements under this element must have the same id. | ||
802 | <Parameter Type="System.String" Name="elementName" /> | ||
803 | <Parameter Type="System.String" Name="identifier" /> | ||
804 | <Parameter Type="System.String" Name="mismatchIdentifier" /> | ||
805 | </Instance> | ||
806 | </Message> | ||
807 | <Message Id="AdvertiseStateMustMatch" Number="59"> | ||
808 | <Instance> | ||
809 | The advertise state of this element: '{0}', does not match the advertise state set on the parent element: '{1}'. | ||
810 | <Parameter Type="System.String" Name="advertiseState" /> | ||
811 | <Parameter Type="System.String" Name="parentAdvertiseState" /> | ||
812 | </Instance> | ||
813 | </Message> | ||
814 | <Message Id="DuplicateContextValue" Number="60"> | ||
815 | <Instance> | ||
816 | The context value '{0}' was duplicated. Context values must be distinct. | ||
817 | <Parameter Type="System.String" Name="contextValue" /> | ||
818 | </Instance> | ||
819 | </Message> | ||
820 | <Message Id="RelativePathForRegistryElement" Number="61"> | ||
821 | <Instance> | ||
822 | Cannot convert RelativePath into Registry elements. | ||
823 | </Instance> | ||
824 | </Message> | ||
825 | <Message Id="IllegalAttributeWhenNested" Number="62"> | ||
826 | <Instance> | ||
827 | The {0}/@{1} attribute cannot be specified when the {0} element is nested underneath a {2} element. If this {0} is a member of a ComponentGroup where ComponentGroup/@{1} is set, then the {0}/@{1} attribute should be removed. | ||
828 | <Parameter Type="System.String" Name="elementName" /> | ||
829 | <Parameter Type="System.String" Name="attributeName" /> | ||
830 | <Parameter Type="System.String" Name="parentElement" /> | ||
831 | </Instance> | ||
832 | </Message> | ||
833 | <Message Id="ExpectedElement" Number="63"> | ||
834 | <Instance> | ||
835 | A {0} element must have at least one child element of type {1}. | ||
836 | <Parameter Type="System.String" Name="elementName" /> | ||
837 | <Parameter Type="System.String" Name="childName" /> | ||
838 | </Instance> | ||
839 | <Instance> | ||
840 | A {0} element must have at least one child element of type {1} or {2}. | ||
841 | <Parameter Type="System.String" Name="elementName" /> | ||
842 | <Parameter Type="System.String" Name="childName1" /> | ||
843 | <Parameter Type="System.String" Name="childName2" /> | ||
844 | </Instance> | ||
845 | <Instance> | ||
846 | A {0} element must have at least one child element of type {1}, {2}, or {3}. | ||
847 | <Parameter Type="System.String" Name="elementName" /> | ||
848 | <Parameter Type="System.String" Name="childName1" /> | ||
849 | <Parameter Type="System.String" Name="childName2" /> | ||
850 | <Parameter Type="System.String" Name="childName3" /> | ||
851 | </Instance> | ||
852 | <Instance> | ||
853 | A {0} element must have at least one child element of type {1}, {2}, {3}, or {4}. | ||
854 | <Parameter Type="System.String" Name="elementName" /> | ||
855 | <Parameter Type="System.String" Name="childName1" /> | ||
856 | <Parameter Type="System.String" Name="childName2" /> | ||
857 | <Parameter Type="System.String" Name="childName3" /> | ||
858 | <Parameter Type="System.String" Name="childName4" /> | ||
859 | </Instance> | ||
860 | </Message> | ||
861 | <Message Id="RegistryRootInvalid" Number="64"> | ||
862 | <Instance> | ||
863 | Registry/@Root attribute is invalid on a nested Registry element. Either remove the Root attribute or move the Registry element so it is not nested under another Registry element. | ||
864 | </Instance> | ||
865 | </Message> | ||
866 | <Message Id="IllegalYesNoDefaultValue" Number="65"> | ||
867 | <Instance> | ||
868 | The {0}/@{1} attribute's value, '{2}', is not a legal yes/no/default value. The only legal values are 'default', 'no' or 'yes'. | ||
869 | <Parameter Type="System.String" Name="elementName" /> | ||
870 | <Parameter Type="System.String" Name="attributeName" /> | ||
871 | <Parameter Type="System.String" Name="value" /> | ||
872 | </Instance> | ||
873 | </Message> | ||
874 | <Message Id="IllegalAttributeInMergeModule" Number="66"> | ||
875 | <Instance> | ||
876 | The {0}/@{1} attribute cannot be specified in a merge module. | ||
877 | <Parameter Type="System.String" Name="elementName" /> | ||
878 | <Parameter Type="System.String" Name="attributeName" /> | ||
879 | </Instance> | ||
880 | </Message> | ||
881 | <Message Id="GenericReadNotAllowed" Number="67"> | ||
882 | <Instance>Permission elements cannot have GenericRead as the only permission specified. Include at least one other permission.</Instance> | ||
883 | </Message> | ||
884 | <Message Id="IllegalAttributeWithInnerText" Number="68"> | ||
885 | <Instance> | ||
886 | The {0}/@{1} attribute cannot be specified when the element has body text as well. Specify either the attribute or the body, but not both. | ||
887 | <Parameter Type="System.String" Name="elementName" /> | ||
888 | <Parameter Type="System.String" Name="attributeName" /> | ||
889 | </Instance> | ||
890 | </Message> | ||
891 | <Message Id="SearchElementRequiredWithAttribute" Number="69"> | ||
892 | <Instance> | ||
893 | A {0} element must have a search element as a child when the {0}/@{1} attribute has the value '{2}'. | ||
894 | <Parameter Type="System.String" Name="elementName" /> | ||
895 | <Parameter Type="System.String" Name="attributeName" /> | ||
896 | <Parameter Type="System.String" Name="attributeValue" /> | ||
897 | </Instance> | ||
898 | </Message> | ||
899 | <Message Id="CannotAuthorSpecialProperties" Number="70"> | ||
900 | <Instance> | ||
901 | The {0} property was specified. Special MSI properties cannot be authored. Use the attributes on the Property element instead. | ||
902 | <Parameter Type="System.String" Name="propertyName" /> | ||
903 | </Instance> | ||
904 | </Message> | ||
905 | <Message Id="NeedSequenceBeforeOrAfter" Number="72"> | ||
906 | <Instance> | ||
907 | A {0} element must have a Before attribute, After attribute, or a Sequence attribute. | ||
908 | <Parameter Type="System.String" Name="elementName" /> | ||
909 | </Instance> | ||
910 | </Message> | ||
911 | <Message Id="ValueNotSupported" Number="73"> | ||
912 | <Instance> | ||
913 | The {0}/@{1} attribute's value, '{2}, is not supported by the Windows Installer. | ||
914 | <Parameter Type="System.String" Name="elementName" /> | ||
915 | <Parameter Type="System.String" Name="attributeName" /> | ||
916 | <Parameter Type="System.String" Name="attributeValue" /> | ||
917 | </Instance> | ||
918 | </Message> | ||
919 | <Message Id="TabbableControlNotAllowedInBillboard" Number="74"> | ||
920 | <Instance> | ||
921 | A {0} element was specified with Type='{1}' and TabSkip='no'. Tabbable controls are not allowed in Billboards. | ||
922 | <Parameter Type="System.String" Name="elementName" /> | ||
923 | <Parameter Type="System.String" Name="controlType" /> | ||
924 | </Instance> | ||
925 | </Message> | ||
926 | <Message Id="CheckBoxValueOnlyValidWithCheckBox" Number="75"> | ||
927 | <Instance> | ||
928 | A {0} element was specified with Type='{1}' and a CheckBoxValue. Check box values can only be specified with Type='CheckBox'. | ||
929 | <Parameter Type="System.String" Name="elementName" /> | ||
930 | <Parameter Type="System.String" Name="controlType" /> | ||
931 | </Instance> | ||
932 | </Message> | ||
933 | <Message Id="CabFileDoesNotExist" Number="76" SourceLineNumbers="no"> | ||
934 | <Instance> | ||
935 | Attempted to extract cab '{0}' from merge module '{1}' to directory '{2}'. The cab file was not found. This usually means that you have a merge module without a cabinet inside it. | ||
936 | <Parameter Type="System.String" Name="cabName" /> | ||
937 | <Parameter Type="System.String" Name="mergeModulePath" /> | ||
938 | <Parameter Type="System.String" Name="directoryName" /> | ||
939 | </Instance> | ||
940 | </Message> | ||
941 | <Message Id="RadioButtonTypeInconsistent" Number="77"> | ||
942 | <Instance>All RadioButton elements in a RadioButtonGroup must be consistent with their use of the Bitmap, Icon, and Text attributes. Ensure all of the RadioButton elements in this group have the same attribute specified.</Instance> | ||
943 | </Message> | ||
944 | <Message Id="RadioButtonBitmapAndIconDisallowed" Number="78"> | ||
945 | <Instance>RadioButtonGroup elements that contain RadioButton elements with Bitmap or Icon attributes set to "yes" can only be specified under a Control element. Move your RadioButtonGroup element as a child of the appropriate Control element.</Instance> | ||
946 | </Message> | ||
947 | <Message Id="IllegalSuppressWarningId" Number="79" SourceLineNumbers="no"> | ||
948 | <Instance> | ||
949 | Illegal value '{0}' for the -sw<N> command line option. Specify a particular warning number, like '-sw6' to suppress the warning with ID 6, or '-sw' alone to suppress all warnings. | ||
950 | <Parameter Type="System.String" Name="suppressedId" /> | ||
951 | </Instance> | ||
952 | </Message> | ||
953 | <Message Id="PreprocessorIllegalForeachVariable" Number="80"> | ||
954 | <Instance> | ||
955 | The variable named '{0}' is not allowed in a foreach expression. | ||
956 | <Parameter Type="System.String" Name="variableName" /> | ||
957 | </Instance> | ||
958 | </Message> | ||
959 | <Message Id="PreprocessorMissingParameterPrefix" Number="81"> | ||
960 | <Instance> | ||
961 | Could not find the prefix in parameter name: '{0}'. | ||
962 | <Parameter Type="System.String" Name="parameterName" /> | ||
963 | </Instance> | ||
964 | </Message> | ||
965 | <Message Id="PreprocessorExtensionForParameterMissing" Number="82"> | ||
966 | <Instance> | ||
967 | Could not find the preprocessor extension for parameter '{0}'. A preprocessor extension is expected because the parameter prefix, '{1}', is not one of the standard types: 'env', 'res', 'sys', or 'var'. | ||
968 | <Parameter Type="System.String" Name="parameterName" /> | ||
969 | <Parameter Type="System.String" Name="parameterPrefix" /> | ||
970 | </Instance> | ||
971 | </Message> | ||
972 | <Message Id="CannotFindFile" Number="83"> | ||
973 | <Instance> | ||
974 | The file with id '{0}' and name '{1}' could not be found with source path: '{2}'. | ||
975 | <Parameter Type="System.String" Name="fileId" /> | ||
976 | <Parameter Type="System.String" Name="fileName" /> | ||
977 | <Parameter Type="System.String" Name="filePath" /> | ||
978 | </Instance> | ||
979 | </Message> | ||
980 | <Message Id="BinderFileManagerMissingFile" Number="84"> | ||
981 | <Instance> | ||
982 | {0} | ||
983 | <Parameter Type="System.String" Name="exceptionMessage" /> | ||
984 | </Instance> | ||
985 | </Message> | ||
986 | <Message Id="InvalidFileName" Number="85"> | ||
987 | <Instance> | ||
988 | Invalid file name '{0}'. | ||
989 | <Parameter Type="System.String" Name="fileName" /> | ||
990 | </Instance> | ||
991 | </Message> | ||
992 | <Message Id="ReferenceLoopDetected" Number="86"> | ||
993 | <Instance> | ||
994 | A circular reference of groups was detected. The infinite loop includes: {0}. Group references must form a directed acyclic graph. | ||
995 | <Parameter Type="System.String" Name="loopList" /> | ||
996 | </Instance> | ||
997 | </Message> | ||
998 | <Message Id="GuidContainsLowercaseLetters" Number="87"> | ||
999 | <Instance> | ||
1000 | The {0}/@{1} attribute's value, '{2}', is a mixed-case guid. All letters in a guid value should be uppercase. | ||
1001 | <Parameter Type="System.String" Name="elementName" /> | ||
1002 | <Parameter Type="System.String" Name="attributeName" /> | ||
1003 | <Parameter Type="System.String" Name="value" /> | ||
1004 | </Instance> | ||
1005 | </Message> | ||
1006 | <Message Id="InvalidDateTimeFormat" Number="88"> | ||
1007 | <Instance> | ||
1008 | The {0}/@{1} attribute's value '{2}' is not a valid date/time value. A date/time value should follow the format YYYY-MM-DDTHH:mm:ss. | ||
1009 | <Parameter Type="System.String" Name="elementName" /> | ||
1010 | <Parameter Type="System.String" Name="attributeName" /> | ||
1011 | <Parameter Type="System.String" Name="value" /> | ||
1012 | </Instance> | ||
1013 | </Message> | ||
1014 | <Message Id="MultipleEntrySections" Number="89"> | ||
1015 | <Instance> | ||
1016 | Multiple entry sections '{0}' and '{1}' found. Only one entry section may be present in a single target. | ||
1017 | <Parameter Type="System.String" Name="sectionName1" /> | ||
1018 | <Parameter Type="System.String" Name="sectionName2" /> | ||
1019 | </Instance> | ||
1020 | </Message> | ||
1021 | <Message Id="MultipleEntrySections2" Number="90"> | ||
1022 | <Instance>Location of entry section related to previous error.</Instance> | ||
1023 | </Message> | ||
1024 | <Message Id="DuplicateSymbol" Number="91"> | ||
1025 | <Instance> | ||
1026 | Duplicate symbol '{0}' found. This typically means that an Id is duplicated. Access modifiers (internal, protected, private) cannot prevent these conflicts. Ensure all your identifiers of a given type (File, Component, Feature) are unique. | ||
1027 | <Parameter Type="System.String" Name="symbolName" /> | ||
1028 | </Instance> | ||
1029 | <Instance> | ||
1030 | Duplicate symbol '{0}' referenced by {1}. This typically means that an Id is duplicated. Ensure all your identifiers of a given type (File, Component, Feature) are unique or use an access modifier to scope the identfier. | ||
1031 | <Parameter Type="System.String" Name="symbolName" /> | ||
1032 | <Parameter Type="System.String" Name="referencingSourceLineNumber" /> | ||
1033 | </Instance> | ||
1034 | </Message> | ||
1035 | <Message Id="DuplicateSymbol2" Number="92"> | ||
1036 | <Instance>Location of symbol related to previous error.</Instance> | ||
1037 | </Message> | ||
1038 | <Message Id="MissingEntrySection" Number="93" SourceLineNumbers="no"> | ||
1039 | <Instance> | ||
1040 | Could not find entry section in provided list of intermediates. Expected section of type '{0}'. | ||
1041 | <Parameter Type="System.String" Name="sectionType" /> | ||
1042 | </Instance> | ||
1043 | </Message> | ||
1044 | <Message Id="UnresolvedReference" Number="94"> | ||
1045 | <Instance> | ||
1046 | The identifier '{0}' could not be found. Ensure you have typed the reference correctly and that all the necessary inputs are provided to the linker. | ||
1047 | <Parameter Type="System.String" Name="symbolName" /> | ||
1048 | </Instance> | ||
1049 | <Instance> | ||
1050 | The identifier '{0}' is inaccessible due to its protection level. | ||
1051 | <Parameter Type="System.String" Name="symbolName" /> | ||
1052 | <Parameter Type="WixToolset.Data.AccessModifier" Name="accessModifier" /> | ||
1053 | </Instance> | ||
1054 | </Message> | ||
1055 | <Message Id="MultiplePrimaryReferences" Number="95"> | ||
1056 | <Instance> | ||
1057 | Multiple primary references were found for {0} '{1}' in {2} '{3}' and {4} '{5}'. | ||
1058 | <Parameter Type="System.String" Name="crefChildType" /> | ||
1059 | <Parameter Type="System.String" Name="crefChildId" /> | ||
1060 | <Parameter Type="System.String" Name="crefParentType" /> | ||
1061 | <Parameter Type="System.String" Name="crefParentId" /> | ||
1062 | <Parameter Type="System.String" Name="conflictParentType" /> | ||
1063 | <Parameter Type="System.String" Name="conflictParentId" /> | ||
1064 | </Instance> | ||
1065 | </Message> | ||
1066 | <Message Id="ComponentReferencedTwice" Number="96"> | ||
1067 | <Instance> | ||
1068 | Component {0} cannot be contained in a Module twice. | ||
1069 | <Parameter Type="System.String" Name="crefChildId" /> | ||
1070 | </Instance> | ||
1071 | </Message> | ||
1072 | <Message Id="DuplicateModuleFileIdentifier" Number="97"> | ||
1073 | <Instance> | ||
1074 | The merge module '{0}' contains a file identifier, '{1}', that is duplicated either in another merge module or in a File/@Id attribute. File identifiers must be unique. Please change one of the file identifiers to a different value. | ||
1075 | <Parameter Type="System.String" Name="moduleId" /> | ||
1076 | <Parameter Type="System.String" Name="fileId" /> | ||
1077 | </Instance> | ||
1078 | </Message> | ||
1079 | <Message Id="DuplicateModuleCaseInsensitiveFileIdentifier" Number="98"> | ||
1080 | <Instance> | ||
1081 | The merge module '{0}' contains 2 or more file identifiers that only differ by case: '{1}' and '{2}'. The WiX toolset extracts merge module files to the file system using these identifiers. Since most file systems are not case-sensitive a collision is likely. Please contact the owner of the merge module for a fix. | ||
1082 | <Parameter Type="System.String" Name="moduleId" /> | ||
1083 | <Parameter Type="System.String" Name="fileId1" /> | ||
1084 | <Parameter Type="System.String" Name="fileId2" /> | ||
1085 | </Instance> | ||
1086 | </Message> | ||
1087 | <Message Id="ImplicitComponentKeyPath" Number="99"> | ||
1088 | <Instance> | ||
1089 | The component '{0}' does not have an explicit key path specified. If the ordering of the elements under the Component element changes, the key path will also change. To prevent accidental changes, the key path should be set to 'yes' in one of the following locations: Component/@KeyPath, File/@KeyPath, ODBCDataSource/@KeyPath, or Registry/@KeyPath. | ||
1090 | <Parameter Type="System.String" Name="componentId" /> | ||
1091 | </Instance> | ||
1092 | </Message> | ||
1093 | <Message Id="LocalizationVariableUnknown" Number="102"> | ||
1094 | <Instance> | ||
1095 | The localization variable !(loc.{0}) is unknown. Please ensure the variable is defined. | ||
1096 | <Parameter Type="System.String" Name="variableId" /> | ||
1097 | </Instance> | ||
1098 | </Message> | ||
1099 | <Message Id="FileNotFound" Number="103"> | ||
1100 | <Instance> | ||
1101 | The system cannot find the file '{0}'. | ||
1102 | <Parameter Type="System.String" Name="file" /> | ||
1103 | </Instance> | ||
1104 | <Instance> | ||
1105 | The system cannot find the file '{0}' with type '{1}'. | ||
1106 | <Parameter Type="System.String" Name="file" /> | ||
1107 | <Parameter Type="System.String" Name="fileType" /> | ||
1108 | </Instance> | ||
1109 | </Message> | ||
1110 | <Message Id="InvalidXml" Number="104"> | ||
1111 | <Instance> | ||
1112 | Not a valid {0} file; detail: {1} | ||
1113 | <Parameter Type="System.String" Name="fileType" /> | ||
1114 | <Parameter Type="System.String" Name="detail" /> | ||
1115 | </Instance> | ||
1116 | </Message> | ||
1117 | <Message Id="ProgIdNestedTooDeep" Number="105"> | ||
1118 | <Instance>ProgId elements may not be nested more than 1 level deep.</Instance> | ||
1119 | </Message> | ||
1120 | <Message Id="CanNotHaveTwoParents" Number="106"> | ||
1121 | <Instance> | ||
1122 | The DirectorySearchRef {0} can not have a Parent attribute {1} and also be nested under parent element {2} | ||
1123 | <Parameter Type="System.String" Name="directorySearch" /> | ||
1124 | <Parameter Type="System.String" Name="parentAttribute" /> | ||
1125 | <Parameter Type="System.String" Name="parentElement" /> | ||
1126 | </Instance> | ||
1127 | </Message> | ||
1128 | <Message Id="SchemaValidationFailed" Number="107"> | ||
1129 | <Instance> | ||
1130 | Schema validation failed with the following error at line {1}, column {2}: {0} | ||
1131 | <Parameter Type="System.String" Name="validationError" /> | ||
1132 | <Parameter Type="System.Int32" Name="lineNumber" /> | ||
1133 | <Parameter Type="System.Int32" Name="linePosition" /> | ||
1134 | </Instance> | ||
1135 | </Message> | ||
1136 | <Message Id="IllegalVersionValue" Number="108"> | ||
1137 | <Instance> | ||
1138 | The {0}/@{1} attribute's value, '{2}', is not a valid version. Legal version values should look like 'x.x.x.x' where x is an integer from 0 to 65534. | ||
1139 | <Parameter Type="System.String" Name="elementName" /> | ||
1140 | <Parameter Type="System.String" Name="attributeName" /> | ||
1141 | <Parameter Type="System.String" Name="value" /> | ||
1142 | </Instance> | ||
1143 | </Message> | ||
1144 | <Message Id="CustomTableNameTooLong" Number="109"> | ||
1145 | <Instance> | ||
1146 | The {0}/@{1} attribute's value, '{2}', is too long for a table name. It cannot be more than than 31 characters long. | ||
1147 | <Parameter Type="System.String" Name="elementName" /> | ||
1148 | <Parameter Type="System.String" Name="attributeName" /> | ||
1149 | <Parameter Type="System.String" Name="value" /> | ||
1150 | </Instance> | ||
1151 | </Message> | ||
1152 | <Message Id="CustomTableIllegalColumnWidth" Number="110"> | ||
1153 | <Instance> | ||
1154 | The {0}/@{1} attribute's value, '{2}', is not a valid column width. Valid column widths are 2 or 4. | ||
1155 | <Parameter Type="System.String" Name="elementName" /> | ||
1156 | <Parameter Type="System.String" Name="attributeName" /> | ||
1157 | <Parameter Type="System.Int32" Name="value" /> | ||
1158 | </Instance> | ||
1159 | </Message> | ||
1160 | <Message Id="CustomTableMissingPrimaryKey" Number="111"> | ||
1161 | <Instance>The CustomTable is missing a Column element with the PrimaryKey attribute set to 'yes'. At least one column must be marked as the primary key.</Instance> | ||
1162 | </Message> | ||
1163 | <Message Id="TypeSpecificationForExtensionRequired" Number="113" SourceLineNumbers="no"> | ||
1164 | <Instance> | ||
1165 | The parameter '{0}' must be followed by the extension's type specification. The type specification should be a fully qualified class and assembly identity, for example: "MyNamespace.MyClass,myextension.dll". | ||
1166 | <Parameter Type="System.String" Name="parameter" /> | ||
1167 | </Instance> | ||
1168 | </Message> | ||
1169 | <Message Id="FilePathRequired" SourceLineNumbers="no" Number="114"> | ||
1170 | <Instance> | ||
1171 | The parameter '{0}' must be followed by a file path. | ||
1172 | <Parameter Type="System.String" Name="parameter" /> | ||
1173 | </Instance> | ||
1174 | </Message> | ||
1175 | <Message Id="DirectoryPathRequired" Number="115" SourceLineNumbers="no"> | ||
1176 | <Instance> | ||
1177 | The parameter '{0}' must be followed by a directory path. | ||
1178 | <Parameter Type="System.String" Name="parameter" /> | ||
1179 | </Instance> | ||
1180 | </Message> | ||
1181 | <Message Id="FileOrDirectoryPathRequired" Number="116" SourceLineNumbers="no"> | ||
1182 | <Instance> | ||
1183 | The parameter '{0}' must be followed by a file or directory path. To specify a directory path the string must end with a backslash, for example: "C:\Path\". | ||
1184 | <Parameter Type="System.String" Name="parameter" /> | ||
1185 | </Instance> | ||
1186 | </Message> | ||
1187 | <Message Id="PathCannotContainQuote" Number="117" SourceLineNumbers="no"> | ||
1188 | <Instance> | ||
1189 | Path '{0}' contains a literal quote character. Quotes are often accidentally introduced when trying to refer to a directory path with spaces in it, such as "C:\Out Directory\" -- the backslash before the quote acts an escape character. The correct representation for that path is: "C:\Out Directory\\". | ||
1190 | <Parameter Type="System.String" Name="fileName" /> | ||
1191 | </Instance> | ||
1192 | </Message> | ||
1193 | <Message Id="AdditionalArgumentUnexpected" Number="118" SourceLineNumbers="no"> | ||
1194 | <Instance> | ||
1195 | Additional argument '{0}' was unexpected. Remove the argument and add the '-?' switch for more information. | ||
1196 | <Parameter Type="System.String" Name="argument" /> | ||
1197 | </Instance> | ||
1198 | </Message> | ||
1199 | <Message Id="RegistryNameValueIncorrect" Number="119"> | ||
1200 | <Instance> | ||
1201 | The {0}/@{1} attribute's value, '{2}', is incorrect. It should not contain values of '+', '-', or '*' when the {0}/@Value attribute is empty. Instead, use the proper element and attributes: for Name='+' use RegistryKey/@Action='createKey', for Name='-' use RemoveRegistryKey/@Action='removeOnUninstall', for Name='*' use RegistryKey/@Action='createAndRemoveOnUninstall'. | ||
1202 | <Parameter Type="System.String" Name="elementName" /> | ||
1203 | <Parameter Type="System.String" Name="attributeName" /> | ||
1204 | <Parameter Type="System.String" Name="value" /> | ||
1205 | </Instance> | ||
1206 | </Message> | ||
1207 | <Message Id="FamilyNameTooLong" Number="120"> | ||
1208 | <Instance> | ||
1209 | The {0}/@{1} attribute's value, '{2}', is {3} characters long. This is too long for a family name because the maximum allowed length is 8 characters long. | ||
1210 | <Parameter Type="System.String" Name="elementName" /> | ||
1211 | <Parameter Type="System.String" Name="attributeName" /> | ||
1212 | <Parameter Type="System.String" Name="value" /> | ||
1213 | <Parameter Type="System.Int32" Name="length" /> | ||
1214 | </Instance> | ||
1215 | </Message> | ||
1216 | <Message Id="IllegalFamilyName" Number="121"> | ||
1217 | <Instance> | ||
1218 | The {0}/@{1} attribute's value, '{2}', contains illegal characters for a family name. Legal values include letters, numbers, and underscores. | ||
1219 | <Parameter Type="System.String" Name="elementName" /> | ||
1220 | <Parameter Type="System.String" Name="attributeName" /> | ||
1221 | <Parameter Type="System.String" Name="value" /> | ||
1222 | </Instance> | ||
1223 | </Message> | ||
1224 | <Message Id="IllegalLongValue" Number="122"> | ||
1225 | <Instance> | ||
1226 | The {0}/@{1} attribute's value, '{2}', is not a legal long value. Legal long values are from -9,223,372,036,854,775,808 to 9,223,372,036,854,775,807. | ||
1227 | <Parameter Type="System.String" Name="elementName" /> | ||
1228 | <Parameter Type="System.String" Name="attributeName" /> | ||
1229 | <Parameter Type="System.String" Name="value" /> | ||
1230 | </Instance> | ||
1231 | </Message> | ||
1232 | <Message Id="IntegralValueOutOfRange" Number="123"> | ||
1233 | <Instance> | ||
1234 | The {0}/@{1} attribute's value, '{2}', is not in the range of legal values. Legal values for this attribute are from {3} to {4}. | ||
1235 | <Parameter Type="System.String" Name="elementName" /> | ||
1236 | <Parameter Type="System.String" Name="attributeName" /> | ||
1237 | <Parameter Type="System.Int32" Name="value" /> | ||
1238 | <Parameter Type="System.Int32" Name="minimum" /> | ||
1239 | <Parameter Type="System.Int32" Name="maximum" /> | ||
1240 | </Instance> | ||
1241 | <Instance> | ||
1242 | The {0}/@{1} attribute's value, '{2}', is not in the range of legal values. Legal values for this attribute are from {3} to {4}. | ||
1243 | <Parameter Type="System.String" Name="elementName" /> | ||
1244 | <Parameter Type="System.String" Name="attributeName" /> | ||
1245 | <Parameter Type="System.Int64" Name="value" /> | ||
1246 | <Parameter Type="System.Int64" Name="minimum" /> | ||
1247 | <Parameter Type="System.Int64" Name="maximum" /> | ||
1248 | </Instance> | ||
1249 | </Message> | ||
1250 | <Message Id="DuplicateExtensionXmlSchemaNamespace" Number="125" SourceLineNumbers="no"> | ||
1251 | <Instance> | ||
1252 | The extension '{0}' uses the same xml schema namespace, '{1}', as previously loaded extension '{2}'. Please either remove one of the extensions or rename the xml schema namespace to avoid the collision. | ||
1253 | <Parameter Type="System.String" Name="extension" /> | ||
1254 | <Parameter Type="System.String" Name="extensionXmlSchemaNamespace" /> | ||
1255 | <Parameter Type="System.String" Name="collidingExtension" /> | ||
1256 | </Instance> | ||
1257 | </Message> | ||
1258 | <Message Id="DuplicateExtensionTable" Number="126" SourceLineNumbers="no"> | ||
1259 | <Instance> | ||
1260 | The extension '{0}' contains a definition for table '{1}' that collides with a previously loaded table definition. Please remove one of the conflicting extensions or rename one of the tables to avoid the collision. | ||
1261 | <Parameter Type="System.String" Name="extension" /> | ||
1262 | <Parameter Type="System.String" Name="tableName" /> | ||
1263 | </Instance> | ||
1264 | </Message> | ||
1265 | <Message Id="DuplicateExtensionPreprocessorType" Number="127" SourceLineNumbers="no"> | ||
1266 | <Instance> | ||
1267 | The extension '{0}' uses the same preprocessor variable prefix, '{1}', as previously loaded extension '{2}'. Please remove one of the extensions or rename the prefix to avoid the collision. | ||
1268 | <Parameter Type="System.String" Name="extension" /> | ||
1269 | <Parameter Type="System.String" Name="variablePrefix" /> | ||
1270 | <Parameter Type="System.String" Name="collidingExtension" /> | ||
1271 | </Instance> | ||
1272 | </Message> | ||
1273 | <Message Id="FileInUse" Number="128"> | ||
1274 | <Instance> | ||
1275 | The process can not access the file '{0}' because it is being used by another process. | ||
1276 | <Parameter Type="System.String" Name="file" /> | ||
1277 | </Instance> | ||
1278 | </Message> | ||
1279 | <Message Id="CannotOpenMergeModule" Number="129"> | ||
1280 | <Instance> | ||
1281 | Cannot open the merge module '{0}' from file '{1}'. | ||
1282 | <Parameter Type="System.String" Name="mergeModuleIdentifier" /> | ||
1283 | <Parameter Type="System.String" Name="mergeModuleFile" /> | ||
1284 | </Instance> | ||
1285 | </Message> | ||
1286 | <Message Id="DuplicatePrimaryKey" Number="130"> | ||
1287 | <Instance> | ||
1288 | The primary key '{0}' is duplicated in table '{1}'. Please remove one of the entries or rename a part of the primary key to avoid the collision. | ||
1289 | <Parameter Type="System.String" Name="primaryKey" /> | ||
1290 | <Parameter Type="System.String" Name="tableName" /> | ||
1291 | </Instance> | ||
1292 | </Message> | ||
1293 | <Message Id="FileIdentifierNotFound" Number="131"> | ||
1294 | <Instance> | ||
1295 | The file row with identifier '{0}' could not be found. | ||
1296 | <Parameter Type="System.String" Name="fileIdentifier" /> | ||
1297 | </Instance> | ||
1298 | </Message> | ||
1299 | <Message Id="InvalidAssemblyFile" Number="132"> | ||
1300 | <Instance> | ||
1301 | The assembly file '{0}' appears to be invalid. Please ensure this is a valid assembly file and that the user has the appropriate access rights to this file. More information: {1} | ||
1302 | <Parameter Type="System.String" Name="assemblyFile" /> | ||
1303 | <Parameter Type="System.String" Name="moreInformation" /> | ||
1304 | </Instance> | ||
1305 | </Message> | ||
1306 | <Message Id="ExpectedEndElement" Number="133"> | ||
1307 | <Instance> | ||
1308 | The end element matching the '{0}' start element was not found. | ||
1309 | <Parameter Type="System.String" Name="elementName" /> | ||
1310 | </Instance> | ||
1311 | </Message> | ||
1312 | <Message Id="IllegalCodepage" Number="134" SourceLineNumbers="no"> | ||
1313 | <Instance> | ||
1314 | The code page '{0}' is not a valid Windows code page. Update the database's code page by modifying one of the following attributes: Product/@Codepage, Module/@Codepage, Patch/@Codepage, PatchCreation/@Codepage, or WixLocalization/@Codepage. | ||
1315 | <Parameter Type="System.Int32" Name="codepage" /> | ||
1316 | </Instance> | ||
1317 | </Message> | ||
1318 | <Message Id="ExpectedMediaCabinet" Number="135"> | ||
1319 | <Instance> | ||
1320 | The file '{0}' should be compressed but is not part of a compressed media. Files will be compressed if either the File/@Compressed or Package/@Compressed attributes are set to 'yes'. This can be fixed by setting the Media/@Cabinet attribute for media '{1}'. | ||
1321 | <Parameter Type="System.String" Name="fileId" /> | ||
1322 | <Parameter Type="System.Int32" Name="diskId" /> | ||
1323 | </Instance> | ||
1324 | </Message> | ||
1325 | <Message Id="InvalidIdt" Number="136"> | ||
1326 | <Instance> | ||
1327 | There was an error importing the file '{0}'. | ||
1328 | <Parameter Type="System.String" Name="idtFile" /> | ||
1329 | </Instance> | ||
1330 | <Instance> | ||
1331 | There was an error importing table '{1}' from file '{0}'. | ||
1332 | <Parameter Type="System.String" Name="idtFile" /> | ||
1333 | <Parameter Type="System.String" Name="tableName" /> | ||
1334 | </Instance> | ||
1335 | </Message> | ||
1336 | <Message Id="InvalidSequenceTable" Number="137" SourceLineNumbers="no"> | ||
1337 | <Instance> | ||
1338 | Found an invalid sequence table '{0}'. | ||
1339 | <Parameter Type="System.String" Name="sequenceTableName" /> | ||
1340 | </Instance> | ||
1341 | </Message> | ||
1342 | <Message Id="ExpectedDirectory" Number="138" SourceLineNumbers="no"> | ||
1343 | <Instance> | ||
1344 | The directory '{0}' could not be found. | ||
1345 | <Parameter Type="System.String" Name="directory" /> | ||
1346 | </Instance> | ||
1347 | </Message> | ||
1348 | <Message Id="ComponentExpectedFeature" Number="139"> | ||
1349 | <Instance> | ||
1350 | The component '{0}' is not assigned to a feature. The component's {1} '{2}' requires it to be assigned to at least one feature. | ||
1351 | <Parameter Type="System.String" Name="component" /> | ||
1352 | <Parameter Type="System.String" Name="type" /> | ||
1353 | <Parameter Type="System.String" Name="target" /> | ||
1354 | </Instance> | ||
1355 | </Message> | ||
1356 | <Message Id="RecursiveAction" Number="140" SourceLineNumbers="no"> | ||
1357 | <Instance> | ||
1358 | The action '{0}' is recursively placed in the '{1}' table. | ||
1359 | <Parameter Type="System.String" Name="action" /> | ||
1360 | <Parameter Type="System.String" Name="tableName" /> | ||
1361 | </Instance> | ||
1362 | </Message> | ||
1363 | <Message Id="VersionMismatch" Number="141"> | ||
1364 | <Instance> | ||
1365 | The {0} file format version {1} is not compatible with the expected {0} file format version {2}. | ||
1366 | <Parameter Type="System.String" Name="fileType" /> | ||
1367 | <Parameter Type="System.String" Name="version" /> | ||
1368 | <Parameter Type="System.String" Name="expectedVersion" /> | ||
1369 | </Instance> | ||
1370 | </Message> | ||
1371 | <Message Id="UnexpectedContentNode" Number="142"> | ||
1372 | <Instance> | ||
1373 | The {0} element contains an unexpected xml node of type {1}. | ||
1374 | <Parameter Type="System.String" Name="elementName" /> | ||
1375 | <Parameter Type="System.String" Name="unexpectedNodeType" /> | ||
1376 | </Instance> | ||
1377 | </Message> | ||
1378 | <Message Id="UnexpectedColumnCount" Number="143"> | ||
1379 | <Instance> | ||
1380 | A parsed row has more fields that contain data for table '{0}' than are defined. This is potentially because a standard table is being redefined as a custom table or is based on an older table schema. | ||
1381 | <Parameter Type="System.String" Name="tableName" /> | ||
1382 | </Instance> | ||
1383 | </Message> | ||
1384 | <Message Id="InvalidExtension" Number="144" SourceLineNumbers="no"> | ||
1385 | <Instance> | ||
1386 | The extension '{0}' could not be loaded. | ||
1387 | <Parameter Type="System.String" Name="extension" /> | ||
1388 | </Instance> | ||
1389 | <Instance> | ||
1390 | The extension '{0}' could not be loaded because of the following reason: {1} | ||
1391 | <Parameter Type="System.String" Name="extension" /> | ||
1392 | <Parameter Type="System.String" Name="invalidReason" /> | ||
1393 | </Instance> | ||
1394 | <Instance> | ||
1395 | The extension '{0}' is the wrong type: '{1}'. The expected type was '{2}'. | ||
1396 | <Parameter Type="System.String" Name="extension" /> | ||
1397 | <Parameter Type="System.String" Name="extensionType" /> | ||
1398 | <Parameter Type="System.String" Name="expectedType" /> | ||
1399 | </Instance> | ||
1400 | <Instance> | ||
1401 | The extension '{0}' is the wrong type: '{1}'. The expected type was '{2}' or '{3}'. | ||
1402 | <Parameter Type="System.String" Name="extension" /> | ||
1403 | <Parameter Type="System.String" Name="extensionType" /> | ||
1404 | <Parameter Type="System.String" Name="expectedType1" /> | ||
1405 | <Parameter Type="System.String" Name="expectedType2" /> | ||
1406 | </Instance> | ||
1407 | </Message> | ||
1408 | <Message Id="InvalidSubExpression" Number="145"> | ||
1409 | <Instance> | ||
1410 | Found invalid subexpression '{0}' in expression '{1}'. | ||
1411 | <Parameter Type="System.String" Name="subExpression" /> | ||
1412 | <Parameter Type="System.String" Name="expression" /> | ||
1413 | </Instance> | ||
1414 | </Message> | ||
1415 | <Message Id="UnmatchedPreprocessorInstruction" Number="146"> | ||
1416 | <Instance> | ||
1417 | Found a <?{1}?> processing instruction without a matching <?{0}?> before it. | ||
1418 | <Parameter Type="System.String" Name="beginInstruction" /> | ||
1419 | <Parameter Type="System.String" Name="endInstruction" /> | ||
1420 | </Instance> | ||
1421 | </Message> | ||
1422 | <Message Id="NonterminatedPreprocessorInstruction" Number="147"> | ||
1423 | <Instance> | ||
1424 | Found a <?{0}?> processing instruction without a matching <?{1}?> after it. | ||
1425 | <Parameter Type="System.String" Name="beginInstruction" /> | ||
1426 | <Parameter Type="System.String" Name="endInstruction" /> | ||
1427 | </Instance> | ||
1428 | </Message> | ||
1429 | <Message Id="ExpectedExpressionAfterNot" Number="148"> | ||
1430 | <Instance> | ||
1431 | Expecting an argument for 'NOT' in expression '{0}'. | ||
1432 | <Parameter Type="System.String" Name="expression" /> | ||
1433 | </Instance> | ||
1434 | </Message> | ||
1435 | <Message Id="InvalidPreprocessorVariable" Number="149"> | ||
1436 | <Instance> | ||
1437 | Ill-formed preprocessor variable '$({0})'. Variables must have a prefix (like 'var.', 'env.', or 'sys.') and a name at least 1 character long. If the literal string '$({0})' is desired, use '$$({0})'. | ||
1438 | <Parameter Type="System.String" Name="variable" /> | ||
1439 | </Instance> | ||
1440 | </Message> | ||
1441 | <Message Id="UndefinedPreprocessorVariable" Number="150"> | ||
1442 | <Instance> | ||
1443 | Undefined preprocessor variable '$({0})'. | ||
1444 | <Parameter Type="System.String" Name="variableName" /> | ||
1445 | </Instance> | ||
1446 | </Message> | ||
1447 | <Message Id="IllegalDefineStatement" Number="151"> | ||
1448 | <Instance> | ||
1449 | The define statement '<?define {0}?>' is not well-formed. Define statements should be in the form <?define variableName = "variable value"?>. | ||
1450 | <Parameter Type="System.String" Name="defineStatement" /> | ||
1451 | </Instance> | ||
1452 | </Message> | ||
1453 | <Message Id="VariableDeclarationCollision" Number="152"> | ||
1454 | <Instance> | ||
1455 | The variable '{0}' with value '{1}' was previously declared with value '{2}'. | ||
1456 | <Parameter Type="System.String" Name="variableName" /> | ||
1457 | <Parameter Type="System.String" Name="variableValue" /> | ||
1458 | <Parameter Type="System.String" Name="variableCollidingValue" /> | ||
1459 | </Instance> | ||
1460 | </Message> | ||
1461 | <Message Id="CannotReundefineVariable" Number="153"> | ||
1462 | <Instance> | ||
1463 | The variable '{0}' cannot be undefined because its already undefined. | ||
1464 | <Parameter Type="System.String" Name="variableName" /> | ||
1465 | </Instance> | ||
1466 | </Message> | ||
1467 | <Message Id="IllegalForeach" Number="154"> | ||
1468 | <Instance> | ||
1469 | The foreach statement '{0}' is illegal. The proper format for foreach is <?foreach varName in valueList?>. | ||
1470 | <Parameter Type="System.String" Name="foreachStatement" /> | ||
1471 | </Instance> | ||
1472 | </Message> | ||
1473 | <Message Id="IllegalParentAttributeWhenNested" Number="155"> | ||
1474 | <Instance> | ||
1475 | The {0}/@{1} attribute cannot be specified when a {2} element is nested underneath the {0} element. | ||
1476 | <Parameter Type="System.String" Name="parentElementName" /> | ||
1477 | <Parameter Type="System.String" Name="parentAttributeName" /> | ||
1478 | <Parameter Type="System.String" Name="childElement" /> | ||
1479 | </Instance> | ||
1480 | </Message> | ||
1481 | <Message Id="ExpectedEndforeach" Number="156"> | ||
1482 | <Instance>A <?foreach?> statement was found that had no matching <?endforeach?>.</Instance> | ||
1483 | </Message> | ||
1484 | <Message Id="UnmatchedQuotesInExpression" Number="158"> | ||
1485 | <Instance> | ||
1486 | The quotes don't match in the expression '{0}'. | ||
1487 | <Parameter Type="System.String" Name="expression" /> | ||
1488 | </Instance> | ||
1489 | </Message> | ||
1490 | <Message Id="UnmatchedParenthesisInExpression" Number="159"> | ||
1491 | <Instance> | ||
1492 | The parenthesis don't match in the expression '{0}'. | ||
1493 | <Parameter Type="System.String" Name="expression" /> | ||
1494 | </Instance> | ||
1495 | </Message> | ||
1496 | <Message Id="ExpectedVariable" Number="160"> | ||
1497 | <Instance> | ||
1498 | A required variable was missing in the expression '{0}'. | ||
1499 | <Parameter Type="System.String" Name="expression" /> | ||
1500 | </Instance> | ||
1501 | </Message> | ||
1502 | <Message Id="UnexpectedLiteral" Number="161"> | ||
1503 | <Instance> | ||
1504 | An unexpected literal was found in the expression '{0}'. | ||
1505 | <Parameter Type="System.String" Name="expression" /> | ||
1506 | </Instance> | ||
1507 | </Message> | ||
1508 | <Message Id="IllegalIntegerInExpression" Number="162"> | ||
1509 | <Instance> | ||
1510 | An illegal number was found in the expression '{0}'. | ||
1511 | <Parameter Type="System.String" Name="expression" /> | ||
1512 | </Instance> | ||
1513 | </Message> | ||
1514 | <Message Id="UnexpectedPreprocessorOperator" Number="163"> | ||
1515 | <Instance> | ||
1516 | The operator '{0}' is unexpected. | ||
1517 | <Parameter Type="System.String" Name="op" /> | ||
1518 | </Instance> | ||
1519 | </Message> | ||
1520 | <Message Id="UnexpectedEmptySubexpression" Number="164"> | ||
1521 | <Instance> | ||
1522 | The empty subexpression is unexpected in the expression '{0}'. | ||
1523 | <Parameter Type="System.String" Name="expression" /> | ||
1524 | </Instance> | ||
1525 | </Message> | ||
1526 | <Message Id="UnexpectedCustomTableColumn" Number="165"> | ||
1527 | <Instance> | ||
1528 | The custom table column '{0}' is unknown. | ||
1529 | <Parameter Type="System.String" Name="column" /> | ||
1530 | </Instance> | ||
1531 | </Message> | ||
1532 | <Message Id="UnknownCustomTableColumnType" Number="166"> | ||
1533 | <Instance> | ||
1534 | Encountered an unknown custom table column type '{0}'. | ||
1535 | <Parameter Type="System.String" Name="columnType" /> | ||
1536 | </Instance> | ||
1537 | </Message> | ||
1538 | <Message Id="IllegalFileCompressionAttributes" Number="167"> | ||
1539 | <Instance>Cannot have both the MsidbFileAttributesCompressed and MsidbFileAttributesNoncompressed options set in a file attributes column.</Instance> | ||
1540 | </Message> | ||
1541 | <Message Id="OverridableActionCollision" Number="168"> | ||
1542 | <Instance> | ||
1543 | The {0} table contains an action '{1}' that is declared overridable in two different locations. Please remove one of the actions or the Overridable='yes' attribute from one of the actions. | ||
1544 | <Parameter Type="System.String" Name="sequenceTableName" /> | ||
1545 | <Parameter Type="System.String" Name="actionName" /> | ||
1546 | </Instance> | ||
1547 | </Message> | ||
1548 | <Message Id="OverridableActionCollision2" Number="169"> | ||
1549 | <Instance>The location of the action related to previous error.</Instance> | ||
1550 | </Message> | ||
1551 | <Message Id="ActionCollision" Number="170"> | ||
1552 | <Instance> | ||
1553 | The {0} table contains an action '{1}' that is declared in two different locations. Please remove one of the actions or set the Overridable='yes' attribute on one of their elements. | ||
1554 | <Parameter Type="System.String" Name="sequenceTableName" /> | ||
1555 | <Parameter Type="System.String" Name="actionName" /> | ||
1556 | </Instance> | ||
1557 | </Message> | ||
1558 | <Message Id="ActionCollision2" Number="171"> | ||
1559 | <Instance>The location of the action related to previous error.</Instance> | ||
1560 | </Message> | ||
1561 | <Message Id="SuppressNonoverridableAction" Number="172"> | ||
1562 | <Instance> | ||
1563 | The {0} table contains an action '{1}' that cannot be suppressed because it is not declared overridable in the base definition. Please stop suppressing the action or make it overridable in its base declaration. | ||
1564 | <Parameter Type="System.String" Name="sequenceTableName" /> | ||
1565 | <Parameter Type="System.String" Name="actionName" /> | ||
1566 | </Instance> | ||
1567 | </Message> | ||
1568 | <Message Id="SuppressNonoverridableAction2" Number="173"> | ||
1569 | <Instance>The location of the non-overridable definition of the action related to previous error.</Instance> | ||
1570 | </Message> | ||
1571 | <Message Id="CustomActionSequencedInModule" Number="174"> | ||
1572 | <Instance> | ||
1573 | The {0} table contains a custom action '{1}' that has a sequence number specified. The Sequence attribute is not allowed for custom actions in a merge module. Please remove the action or use the Before or After attributes to specify where this action should be sequenced relative to another action. | ||
1574 | <Parameter Type="System.String" Name="sequenceTableName" /> | ||
1575 | <Parameter Type="System.String" Name="actionName" /> | ||
1576 | </Instance> | ||
1577 | </Message> | ||
1578 | <Message Id="StandardActionRelativelyScheduledInModule" Number="175"> | ||
1579 | <Instance> | ||
1580 | The {0} table contains a standard action '{1}' that does not have a sequence number specified. The Sequence attribute is required for standard actions in a merge module. Please remove the action or use the Sequence attribute. | ||
1581 | <Parameter Type="System.String" Name="sequenceTableName" /> | ||
1582 | <Parameter Type="System.String" Name="actionName" /> | ||
1583 | </Instance> | ||
1584 | </Message> | ||
1585 | <Message Id="ActionCircularDependency" Number="176"> | ||
1586 | <Instance> | ||
1587 | The {0} table contains an action '{1}' that is scheduled to come before or after action '{2}', which is also scheduled to come before or after action '{1}'. Please remove this circular dependency by changing the Before or After attribute for one of the actions. | ||
1588 | <Parameter Type="System.String" Name="sequenceTableName" /> | ||
1589 | <Parameter Type="System.String" Name="actionName1" /> | ||
1590 | <Parameter Type="System.String" Name="actionName2" /> | ||
1591 | </Instance> | ||
1592 | </Message> | ||
1593 | <Message Id="ActionScheduledRelativeToTerminationAction" Number="177"> | ||
1594 | <Instance> | ||
1595 | The {0} table contains an action '{1}' that is scheduled to come before or after action '{2}', which is a special action which only occurs when the installer terminates. These special actions can be identified by their negative sequence numbers. Please schedule the action '{1}' to come before or after a different action. | ||
1596 | <Parameter Type="System.String" Name="sequenceTableName" /> | ||
1597 | <Parameter Type="System.String" Name="actionName1" /> | ||
1598 | <Parameter Type="System.String" Name="actionName2" /> | ||
1599 | </Instance> | ||
1600 | </Message> | ||
1601 | <Message Id="ActionScheduledRelativeToTerminationAction2" Number="178"> | ||
1602 | <Instance>The location of the special termination action related to previous error(s).</Instance> | ||
1603 | </Message> | ||
1604 | <Message Id="NoUniqueActionSequenceNumber" Number="179"> | ||
1605 | <Instance> | ||
1606 | The {0} table contains an action '{1}' which cannot have a unique sequence number because it is scheduled before or after action '{2}'. There is not enough room before or after this action to assign a unique sequence number. Please schedule one of the actions differently so that it will be in a position with more sequence numbers available. Please note that sequence numbers must be an integer in the range 1 - 32767 (inclusive). | ||
1607 | <Parameter Type="System.String" Name="sequenceTableName" /> | ||
1608 | <Parameter Type="System.String" Name="actionName1" /> | ||
1609 | <Parameter Type="System.String" Name="actionName2" /> | ||
1610 | </Instance> | ||
1611 | </Message> | ||
1612 | <Message Id="NoUniqueActionSequenceNumber2" Number="180"> | ||
1613 | <Instance>The location of the sequenced action related to previous error.</Instance> | ||
1614 | </Message> | ||
1615 | <Message Id="ActionScheduledRelativeToItself" Number="181"> | ||
1616 | <Instance> | ||
1617 | The {0}/@{1} attribute's value '{2}' is invalid because it would make this action dependent upon itself. Please change the value to the name of a different action. | ||
1618 | <Parameter Type="System.String" Name="elementName" /> | ||
1619 | <Parameter Type="System.String" Name="attributeName" /> | ||
1620 | <Parameter Type="System.String" Name="attributeValue" /> | ||
1621 | </Instance> | ||
1622 | </Message> | ||
1623 | <Message Id="MissingTableDefinition" Number="182" SourceLineNumbers="no"> | ||
1624 | <Instance> | ||
1625 | Cannot find the table definitions for the '{0}' table. This is likely due to a typing error or missing extension. Please ensure all the necessary extensions are supplied on the command line with the -ext parameter. | ||
1626 | <Parameter Type="System.String" Name="tableName" /> | ||
1627 | </Instance> | ||
1628 | </Message> | ||
1629 | <Message Id="ExpectedRowInPatchCreationPackage" Number="183" SourceLineNumbers="no"> | ||
1630 | <Instance> | ||
1631 | Could not find a row in the '{0}' table for this patch creation package. Patch creation packages must contain at least one row in the '{0}' table. | ||
1632 | <Parameter Type="System.String" Name="tableName" /> | ||
1633 | </Instance> | ||
1634 | </Message> | ||
1635 | <Message Id="UnexpectedTableInMergeModule" Number="184"> | ||
1636 | <Instance> | ||
1637 | An unexpected row in the '{0}' table was found in this merge module. Merge modules cannot contain the '{0}' table. | ||
1638 | <Parameter Type="System.String" Name="tableName" /> | ||
1639 | </Instance> | ||
1640 | </Message> | ||
1641 | <Message Id="UnexpectedTableInPatchCreationPackage" Number="185"> | ||
1642 | <Instance> | ||
1643 | An unexpected row in the '{0}' table was found in this patch creation package. Patch creation packages cannot contain the '{0}' table. | ||
1644 | <Parameter Type="System.String" Name="tableName" /> | ||
1645 | </Instance> | ||
1646 | </Message> | ||
1647 | <Message Id="MergeExcludedModule" Number="186"> | ||
1648 | <Instance> | ||
1649 | The module '{0}' cannot be merged because it excludes or is excluded by the merge module with signature '{1}'. | ||
1650 | <Parameter Type="System.String" Name="mergeId" /> | ||
1651 | <Parameter Type="System.String" Name="otherMergeId" /> | ||
1652 | </Instance> | ||
1653 | </Message> | ||
1654 | <Message Id="MergeFeatureRequired" Number="187"> | ||
1655 | <Instance> | ||
1656 | The {0} table contains a row with primary key(s) '{1}' which requires a feature to properly merge from the merge module '{2}'. Nest a MergeRef element with an Id attribute set to the value '{3}' under a Feature element to fix this error. | ||
1657 | <Parameter Type="System.String" Name="tableName" /> | ||
1658 | <Parameter Type="System.String" Name="primaryKeys" /> | ||
1659 | <Parameter Type="System.String" Name="mergeModuleFile" /> | ||
1660 | <Parameter Type="System.String" Name="mergeId" /> | ||
1661 | </Instance> | ||
1662 | </Message> | ||
1663 | <Message Id="MergeLanguageFailed" Number="188"> | ||
1664 | <Instance> | ||
1665 | The language '{0}' is supported but uses an invalid language transform in the merge module '{1}'. | ||
1666 | <Parameter Type="System.Int16" Name="language" /> | ||
1667 | <Parameter Type="System.String" Name="mergeModuleFile" /> | ||
1668 | </Instance> | ||
1669 | </Message> | ||
1670 | <Message Id="MergeLanguageUnsupported" Number="189"> | ||
1671 | <Instance> | ||
1672 | Could not locate language '{0}' (or a transform for this language) in the merge module '{1}'. This is likely due to an incorrectly authored Merge/@Language attribute. | ||
1673 | <Parameter Type="System.Int16" Name="language" /> | ||
1674 | <Parameter Type="System.String" Name="mergeModuleFile" /> | ||
1675 | </Instance> | ||
1676 | </Message> | ||
1677 | <Message Id="TableDecompilationUnimplemented" Number="190" SourceLineNumbers="no"> | ||
1678 | <Instance> | ||
1679 | Decompilation of the {0} table has not been implemented by its extension. | ||
1680 | <Parameter Type="System.String" Name="tableName" /> | ||
1681 | </Instance> | ||
1682 | </Message> | ||
1683 | <Message Id="CannotDefaultMismatchedAdvertiseStates" Number="191"> | ||
1684 | <Instance> | ||
1685 | MIME element cannot be marked as the default when its advertise state differs from its parent element. Ensure that the advertise state of the MIME element matches its parents element or remove the Mime/@Advertise attribute completely. | ||
1686 | </Instance> | ||
1687 | </Message> | ||
1688 | <Message Id="VersionIndependentProgIdsCannotHaveIcons" Number="192"> | ||
1689 | <Instance> | ||
1690 | Version independent ProgIds cannot have Icons. Remove the Icon and/or IconIndex attributes from your ProgId element. | ||
1691 | </Instance> | ||
1692 | </Message> | ||
1693 | <Message Id="IllegalAttributeValueWithOtherAttribute" Number="193"> | ||
1694 | <Instance> | ||
1695 | The {0}/@{1} attribute's value, '{2}', cannot be specified with attribute {3} present. | ||
1696 | <Parameter Type="System.String" Name="elementName" /> | ||
1697 | <Parameter Type="System.String" Name="attributeName" /> | ||
1698 | <Parameter Type="System.String" Name="attributeValue" /> | ||
1699 | <Parameter Type="System.String" Name="otherAttributeName" /> | ||
1700 | </Instance> | ||
1701 | <Instance> | ||
1702 | The {0}/@{1} attribute's value, '{2}', cannot be specified with attribute {3} present with value '{4}'. | ||
1703 | <Parameter Type="System.String" Name="elementName" /> | ||
1704 | <Parameter Type="System.String" Name="attributeName" /> | ||
1705 | <Parameter Type="System.String" Name="attributeValue" /> | ||
1706 | <Parameter Type="System.String" Name="otherAttributeName" /> | ||
1707 | <Parameter Type="System.String" Name="otherAttributeValue" /> | ||
1708 | </Instance> | ||
1709 | </Message> | ||
1710 | <Message Id="InvalidMergeLanguage" Number="194"> | ||
1711 | <Instance> | ||
1712 | The Merge element '{0}' specified an invalid language '{1}'. Verify that localization tokens are being properly resolved to a numeric LCID. | ||
1713 | <Parameter Type="System.String" Name="mergeId" /> | ||
1714 | <Parameter Type="System.String" Name="mergeLanguage" /> | ||
1715 | </Instance> | ||
1716 | </Message> | ||
1717 | <Message Id="WixVariableCollision" Number="195"> | ||
1718 | <Instance> | ||
1719 | The WiX variable '{0}' is declared in more than one location. Please remove one of the declarations. | ||
1720 | <Parameter Type="System.String" Name="variableId" /> | ||
1721 | </Instance> | ||
1722 | </Message> | ||
1723 | <Message Id="ExpectedWixVariableValue" Number="196" SourceLineNumbers="no"> | ||
1724 | <Instance> | ||
1725 | The WiX variable '{0}' was declared without a value. Please specify a value for the variable. | ||
1726 | <Parameter Type="System.String" Name="variableId" /> | ||
1727 | </Instance> | ||
1728 | </Message> | ||
1729 | <Message Id="WixVariableUnknown" Number="197"> | ||
1730 | <Instance> | ||
1731 | The WiX variable !(wix.{0}) is unknown. Please ensure the variable is declared on the command line for light.exe, via a WixVariable element, or inline using the syntax !(wix.{0}=some value which doesn't contain parenthesis). | ||
1732 | <Parameter Type="System.String" Name="variableId" /> | ||
1733 | </Instance> | ||
1734 | </Message> | ||
1735 | <Message Id="IllegalWixVariablePrefix" Number="198"> | ||
1736 | <Instance> | ||
1737 | The WiX variable $(wix.{0}) uses an illegal prefix '$'. Please use the '!' prefix instead. | ||
1738 | <Parameter Type="System.String" Name="variableId" /> | ||
1739 | </Instance> | ||
1740 | </Message> | ||
1741 | <Message Id="InvalidWixXmlNamespace" Number="199"> | ||
1742 | <Instance> | ||
1743 | The {0} element has no namespace. Please make the {0} element look like the following: <{0} xmlns="{1}">. | ||
1744 | <Parameter Type="System.String" Name="wixElementName" /> | ||
1745 | <Parameter Type="System.String" Name="wixNamespace" /> | ||
1746 | </Instance> | ||
1747 | <Instance> | ||
1748 | The {0} element has an incorrect namespace of '{1}'. Please make the {0} element look like the following: <{0} xmlns="{2}">. | ||
1749 | <Parameter Type="System.String" Name="wixElementName" /> | ||
1750 | <Parameter Type="System.String" Name="elementNamespace" /> | ||
1751 | <Parameter Type="System.String" Name="wixNamespace" /> | ||
1752 | </Instance> | ||
1753 | </Message> | ||
1754 | <Message Id="UnhandledExtensionElement" Number="200"> | ||
1755 | <Instance> | ||
1756 | The {0} element contains an unhandled extension element '{1}'. Please ensure that the extension for elements in the '{2}' namespace has been provided. | ||
1757 | <Parameter Type="System.String" Name="elementName" /> | ||
1758 | <Parameter Type="System.String" Name="extensionElementName" /> | ||
1759 | <Parameter Type="System.String" Name="extensionNamespace" /> | ||
1760 | </Instance> | ||
1761 | </Message> | ||
1762 | <Message Id="UnhandledExtensionAttribute" Number="201"> | ||
1763 | <Instance> | ||
1764 | The {0} element contains an unhandled extension attribute '{1}'. Please ensure that the extension for attributes in the '{2}' namespace has been provided. | ||
1765 | <Parameter Type="System.String" Name="elementName" /> | ||
1766 | <Parameter Type="System.String" Name="extensionAttributeName" /> | ||
1767 | <Parameter Type="System.String" Name="extensionNamespace" /> | ||
1768 | </Instance> | ||
1769 | </Message> | ||
1770 | <Message Id="UnsupportedExtensionAttribute" Number="202"> | ||
1771 | <Instance> | ||
1772 | The {0} element contains an unsupported extension attribute '{1}'. The {0} element does not currently support extension attributes. Is the {1} attribute using the correct XML namespace? | ||
1773 | <Parameter Type="System.String" Name="elementName" /> | ||
1774 | <Parameter Type="System.String" Name="extensionElementName" /> | ||
1775 | </Instance> | ||
1776 | </Message> | ||
1777 | <Message Id="UnsupportedExtensionElement" Number="203"> | ||
1778 | <Instance> | ||
1779 | The {0} element contains an unsupported extension element '{1}'. The {0} element does not currently support extension elements. Is the {1} element using the correct XML namespace? | ||
1780 | <Parameter Type="System.String" Name="elementName" /> | ||
1781 | <Parameter Type="System.String" Name="extensionElementName" /> | ||
1782 | </Instance> | ||
1783 | </Message> | ||
1784 | <Message Id="ValidationError" Number="204"> | ||
1785 | <Instance> | ||
1786 | {0}: {1} | ||
1787 | <Parameter Type="System.String" Name="ice" /> | ||
1788 | <Parameter Type="System.String" Name="message" /> | ||
1789 | </Instance> | ||
1790 | </Message> | ||
1791 | <Message Id="IllegalRootDirectory" Number="205"> | ||
1792 | <Instance> | ||
1793 | The Directory with Id '{0}' is not a valid root directory. There may only be a single root directory per product or module and its Id attribute value must be 'TARGETDIR' and its Name attribute value must be 'SourceDir'. | ||
1794 | <Parameter Type="System.String" Name="directoryId" /> | ||
1795 | </Instance> | ||
1796 | </Message> | ||
1797 | <Message Id="IllegalTargetDirDefaultDir" Number="206"> | ||
1798 | <Instance> | ||
1799 | The 'TARGETDIR' directory has an illegal DefaultDir value of '{0}'. The DefaultDir value is created from the *Name attributes of the Directory element. The TARGETDIR directory is a special directory which must have its Name attribute set to 'SourceDir'. | ||
1800 | <Parameter Type="System.String" Name="defaultDir" /> | ||
1801 | </Instance> | ||
1802 | </Message> | ||
1803 | <Message Id="TooManyElements" Number="207"> | ||
1804 | <Instance> | ||
1805 | The {0} element contains an unexpected child element '{1}'. The '{1}' element may only occur {2} time(s) under the {0} element. | ||
1806 | <Parameter Type="System.String" Name="elementName" /> | ||
1807 | <Parameter Type="System.String" Name="childElementName" /> | ||
1808 | <Parameter Type="System.Int32" Name="expectedInstances" /> | ||
1809 | </Instance> | ||
1810 | </Message> | ||
1811 | <Message Id="ExpectedBinaryCategory" Number="208"> | ||
1812 | <Instance>The Column element specifies a binary column but does not have the correct Category specified. Windows Installer requires binary columns to specify their category as binary. Please set the Category attribute's value to 'Binary'.</Instance> | ||
1813 | </Message> | ||
1814 | <Message Id="RootFeatureCannotFollowParent" Number="209"> | ||
1815 | <Instance>The Feature element specifies a root feature with an illegal InstallDefault value of 'followParent'. Root features cannot follow their parent feature's install state because they don't have a parent feature. Please remove or change the value of the InstallDefault attribute.</Instance> | ||
1816 | </Message> | ||
1817 | <Message Id="FeatureNameTooLong" Number="210"> | ||
1818 | <Instance> | ||
1819 | The {0}/@{1} attribute with value '{2}', is too long for a feature name. Due to limitations in the Windows Installer, feature names cannot be longer than 38 characters in length. | ||
1820 | <Parameter Type="System.String" Name="elementName" /> | ||
1821 | <Parameter Type="System.String" Name="attributeName" /> | ||
1822 | <Parameter Type="System.String" Name="attributeValue" /> | ||
1823 | </Instance> | ||
1824 | </Message> | ||
1825 | <Message Id="SignedEmbeddedCabinet" Number="211"> | ||
1826 | <Instance>The DigitalSignature element cannot be nested under a Media element which specifies EmbedCab='yes'. This is because Windows Installer can only verify the digital signatures of external cabinets. Please either remove the DigitalSignature element or change the value of the Media/@EmbedCab attribute to 'no'.</Instance> | ||
1827 | </Message> | ||
1828 | <Message Id="ExpectedSignedCabinetName" Number="212"> | ||
1829 | <Instance>The Media/@Cabinet attribute was not found; it is required when this element contains a DigitalSignature child element. This is because Windows Installer can only verify the digital signatures of external cabinets. Please either remove the DigitalSignature element or specify a valid external cabinet name via the Cabinet attribute.</Instance> | ||
1830 | </Message> | ||
1831 | <Message Id="IllegalInlineLocVariable" Number="213"> | ||
1832 | <Instance> | ||
1833 | The localization variable '{0}' specifies an illegal inline default value of '{1}'. Localization variables cannot specify default values inline, instead the value should be specified in a WiX localization (.wxl) file. | ||
1834 | <Parameter Type="System.String" Name="variableName" /> | ||
1835 | <Parameter Type="System.String" Name="variableValue" /> | ||
1836 | </Instance> | ||
1837 | </Message> | ||
1838 | <Message Id="MergeModuleExpectedFeature" Number="215"> | ||
1839 | <Instance> | ||
1840 | The merge module '{0}' is not assigned to a feature. All merge modules must be assigned to at least one feature. | ||
1841 | <Parameter Type="System.String" Name="mergeId" /> | ||
1842 | </Instance> | ||
1843 | </Message> | ||
1844 | <Message Id="Win32Exception" Number="216" SourceLineNumbers="no"> | ||
1845 | <Instance> | ||
1846 | An unexpected Win32 exception with error code 0x{0:X} occurred: {1} | ||
1847 | <Parameter Type="System.Int32" Name="nativeErrorCode"/> | ||
1848 | <Parameter Type="System.String" Name="message" /> | ||
1849 | </Instance> | ||
1850 | <Instance> | ||
1851 | An unexpected Win32 exception with error code 0x{0:X} occurred while accessing file '{1}': {2} | ||
1852 | <Parameter Type="System.Int32" Name="nativeErrorCode"/> | ||
1853 | <Parameter Type="System.String" Name="file"/> | ||
1854 | <Parameter Type="System.String" Name="message" /> | ||
1855 | </Instance> | ||
1856 | </Message> | ||
1857 | <Message Id="UnexpectedExternalUIMessage" Number="217" SourceLineNumbers="no"> | ||
1858 | <Instance> | ||
1859 | Error executing unknown ICE action. The most common cause of this kind of ICE failure is an incorrectly registered scripting engine. See http://wixtoolset.org/documentation/error217/ for details and how to solve this problem. The following string format was not expected by the external UI message logger: "{0}". | ||
1860 | <Parameter Type="System.String" Name="message" /> | ||
1861 | </Instance> | ||
1862 | <Instance> | ||
1863 | Error executing ICE action '{1}'. The most common cause of this kind of ICE failure is an incorrectly registered scripting engine. See http://wixtoolset.org/documentation/error217/ for details and how to solve this problem. The following string format was not expected by the external UI message logger: "{0}". | ||
1864 | <Parameter Type="System.String" Name="message" /> | ||
1865 | <Parameter Type="System.String" Name="action" /> | ||
1866 | </Instance> | ||
1867 | </Message> | ||
1868 | <Message Id="IllegalCabbingThreadCount" Number="218" SourceLineNumbers="no"> | ||
1869 | <Instance> | ||
1870 | Illegal number of threads to create cabinets: '{0}' for -ct <N> command line option. Specify the number of threads to use like -ct 2. | ||
1871 | <Parameter Type="System.String" Name="numThreads" /> | ||
1872 | </Instance> | ||
1873 | </Message> | ||
1874 | <Message Id="IllegalEnvironmentVariable" Number="219" SourceLineNumbers="no"> | ||
1875 | <Instance> | ||
1876 | The {0} environment variable is set to an invalid value of '{1}'. | ||
1877 | <Parameter Type="System.String" Name="environmentVariable" /> | ||
1878 | <Parameter Type="System.String" Name="value" /> | ||
1879 | </Instance> | ||
1880 | </Message> | ||
1881 | <Message Id="InvalidKeyColumn" Number="220" SourceLineNumbers="no"> | ||
1882 | <Instance> | ||
1883 | The definition for the '{0}' table's '{1}' column is an invalid foreign key relationship to the {2} table's column number {3}. It is not a valid foreign key table column number because it is too small (less than 1) or greater than the count of columns in the foreign table's definition. | ||
1884 | <Parameter Type="System.String" Name="tableName" /> | ||
1885 | <Parameter Type="System.String" Name="columnName" /> | ||
1886 | <Parameter Type="System.String" Name="foreignTableName" /> | ||
1887 | <Parameter Type="System.Int32" Name="foreignColumnNumber" /> | ||
1888 | </Instance> | ||
1889 | </Message> | ||
1890 | <Message Id="CollidingModularizationTypes" Number="221" SourceLineNumbers="no"> | ||
1891 | <Instance> | ||
1892 | The definition for the '{0}' table's '{1}' column is a foreign key relationship to the '{2}' table's column number {3}. The modularization types of the two column definitions differ: one is {4} and the other is {5}. Change one of the modularization types so that they match. | ||
1893 | <Parameter Type="System.String" Name="tableName" /> | ||
1894 | <Parameter Type="System.String" Name="columnName" /> | ||
1895 | <Parameter Type="System.String" Name="foreignTableName" /> | ||
1896 | <Parameter Type="System.Int32" Name="foreignColumnNumber" /> | ||
1897 | <Parameter Type="System.String" Name="modularizationType" /> | ||
1898 | <Parameter Type="System.String" Name="foreignModularizationType" /> | ||
1899 | </Instance> | ||
1900 | </Message> | ||
1901 | <Message Id="CubeFileNotFound" Number="222" SourceLineNumbers="no"> | ||
1902 | <Instance> | ||
1903 | The cube file '{0}' cannot be found. This file is required for MSI validation. | ||
1904 | <Parameter Type="System.String" Name="cubeFile" /> | ||
1905 | </Instance> | ||
1906 | </Message> | ||
1907 | <Message Id="OpenDatabaseFailed" Number="223" SourceLineNumbers="no"> | ||
1908 | <Instance> | ||
1909 | Failed to open database '{0}'. Ensure it is a valid database, and it is not open by another process. | ||
1910 | <Parameter Type="System.String" Name="databaseFile" /> | ||
1911 | </Instance> | ||
1912 | </Message> | ||
1913 | <Message Id="OutputTypeMismatch" Number="224"> | ||
1914 | <Instance> | ||
1915 | The types of the outputs do not match. One output's type is '{0}' while the other is '{1}'. | ||
1916 | <Parameter Type="System.String" Name="beforeOutputType" /> | ||
1917 | <Parameter Type="System.String" Name="afterOutputType" /> | ||
1918 | </Instance> | ||
1919 | </Message> | ||
1920 | <Message Id="RealTableMissingPrimaryKeyColumn" Number="225"> | ||
1921 | <Instance> | ||
1922 | The table '{0}' does not contain any primary key columns. At least one column must be marked as the primary key to ensure this table can be patched. | ||
1923 | <Parameter Type="System.String" Name="tableName" /> | ||
1924 | </Instance> | ||
1925 | </Message> | ||
1926 | <Message Id="IllegalColumnName" Number="226"> | ||
1927 | <Instance> | ||
1928 | The {0}/@{1} attribute's value, '{2}', is not a legal column name. It will collide with the sentinel values used in the _TransformView table. | ||
1929 | <Parameter Type="System.String" Name="elementName" /> | ||
1930 | <Parameter Type="System.String" Name="attributeName" /> | ||
1931 | <Parameter Type="System.String" Name="value" /> | ||
1932 | </Instance> | ||
1933 | </Message> | ||
1934 | <Message Id="NoDifferencesInTransform" Number="227"> | ||
1935 | <Instance> | ||
1936 | The transform being built did not contain any differences so it could not be created. | ||
1937 | </Instance> | ||
1938 | </Message> | ||
1939 | <Message Id="OutputCodepageMismatch" Number="228"> | ||
1940 | <Instance> | ||
1941 | The code pages of the outputs do not match. One output's code page is '{0}' while the other is '{1}'. | ||
1942 | <Parameter Type="System.Int32" Name="beforeCodepage" /> | ||
1943 | <Parameter Type="System.Int32" Name="afterCodepage" /> | ||
1944 | </Instance> | ||
1945 | </Message> | ||
1946 | <Message Id="OutputCodepageMismatch2" Number="229"> | ||
1947 | <Instance> | ||
1948 | The location of the mismatched code page related to the previous warning. | ||
1949 | </Instance> | ||
1950 | </Message> | ||
1951 | <Message Id="IllegalComponentWithAutoGeneratedGuid" Number="230"> | ||
1952 | <Instance> | ||
1953 | The Component/@Guid attribute's value '*' is not valid for this component because it does not meet the criteria for having an automatically generated guid. Components using a Directory as a KeyPath or containing ODBCDataSource child elements cannot use an automatically generated guid. Make sure your component doesn't have a Directory as the KeyPath and move any ODBCDataSource child elements to components with explicit component guids. | ||
1954 | </Instance> | ||
1955 | <Instance> | ||
1956 | The Component/@Guid attribute's value '*' is not valid for this component because it does not meet the criteria for having an automatically generated guid. Components with registry keypaths and files cannot use an automatically generated guid. Create multiple components, each with one file and/or one registry value keypath, to use automatically generated guids. | ||
1957 | <Parameter Type="System.Boolean" Name="registryKeyPath" /> | ||
1958 | </Instance> | ||
1959 | </Message> | ||
1960 | <Message Id="IllegalPathForGeneratedComponentGuid" Number="231"> | ||
1961 | <Instance> | ||
1962 | The component '{0}' has a key file with path '{1}'. Since this path is not rooted in one of the standard directories (like ProgramFilesFolder), this component does not fit the criteria for having an automatically generated guid. (This error may also occur if a path contains a likely standard directory such as nesting a directory with name "Common Files" under ProgramFilesFolder.) | ||
1963 | <Parameter Type="System.String" Name="componentName" /> | ||
1964 | <Parameter Type="System.String" Name="keyFilePath" /> | ||
1965 | </Instance> | ||
1966 | </Message> | ||
1967 | <Message Id="IllegalTerminalServerCustomActionAttributes" Number="232"> | ||
1968 | <Instance> | ||
1969 | The CustomAction/@TerminalServerAware attribute's value is 'yes' but the Execute attribute is not 'deferred,' 'rollback,' or 'commit.' Terminal-Server-aware custom actions must be deferred, rollback, or commit custom actions. For more information, see http://msdn.microsoft.com/library/aa372071.aspx." | ||
1970 | </Instance> | ||
1971 | </Message> | ||
1972 | <Message Id="IllegalPropertyCustomActionAttributes" Number="233"> | ||
1973 | <Instance> | ||
1974 | The CustomAction sets a property but its Execute attribute is not 'immediate' (the default). Property-setting custom actions cannot be deferred." | ||
1975 | </Instance> | ||
1976 | </Message> | ||
1977 | <Message Id="InvalidPreprocessorFunction" Number="234"> | ||
1978 | <Instance> | ||
1979 | Ill-formed preprocessor function '${0}'. Functions must have a prefix (like 'fun.'), a name at least 1 character long, and matching opening and closing parentheses. | ||
1980 | <Parameter Type="System.String" Name="variable" /> | ||
1981 | </Instance> | ||
1982 | </Message> | ||
1983 | <Message Id="UndefinedPreprocessorFunction" Number="235"> | ||
1984 | <Instance> | ||
1985 | Undefined preprocessor function '$({0})'. | ||
1986 | <Parameter Type="System.String" Name="variableName" /> | ||
1987 | </Instance> | ||
1988 | </Message> | ||
1989 | <Message Id="PreprocessorExtensionEvaluateFunctionFailed" Number="236"> | ||
1990 | <Instance> | ||
1991 | In the preprocessor extension that handles prefix '{0}' while trying to call function '{1}({2})' and exception has occurred : {3} | ||
1992 | <Parameter Type="System.String" Name="prefix" /> | ||
1993 | <Parameter Type="System.String" Name="function" /> | ||
1994 | <Parameter Type="System.String" Name="args" /> | ||
1995 | <Parameter Type="System.String" Name="message" /> | ||
1996 | </Instance> | ||
1997 | </Message> | ||
1998 | <Message Id="PreprocessorExtensionGetVariableValueFailed" Number="237"> | ||
1999 | <Instance> | ||
2000 | In the preprocessor extension that handles prefix '{0}' while trying to get the value for variable '{1}' and exception has occured : {2} | ||
2001 | <Parameter Type="System.String" Name="prefix" /> | ||
2002 | <Parameter Type="System.String" Name="variable" /> | ||
2003 | <Parameter Type="System.String" Name="message" /> | ||
2004 | </Instance> | ||
2005 | </Message> | ||
2006 | <Message Id="InvalidManifestContent" Number="238"> | ||
2007 | <Instance> | ||
2008 | The manifest '{0}' does not have the required assembly/assemblyIdentity element. | ||
2009 | <Parameter Type="System.String" Name="fileName" /> | ||
2010 | </Instance> | ||
2011 | </Message> | ||
2012 | <Message Id="InvalidWixTransform" Number="239" SourceLineNumbers="no"> | ||
2013 | <Instance> | ||
2014 | The file '{0}' is not a valid WiX Transform. | ||
2015 | <Parameter Type="System.String" Name="fileName" /> | ||
2016 | </Instance> | ||
2017 | </Message> | ||
2018 | <Message Id="UnexpectedFileExtension" Number="240" SourceLineNumbers="no"> | ||
2019 | <Instance> | ||
2020 | The file '{0}' has an unexpected extension. Expected one of the following: '{1}'. | ||
2021 | <Parameter Type="System.String" Name="fileName" /> | ||
2022 | <Parameter Type="System.String" Name="expectedExtensions" /> | ||
2023 | </Instance> | ||
2024 | </Message> | ||
2025 | <Message Id="UnexpectedTableInPatch" Number="241"> | ||
2026 | <Instance> | ||
2027 | An unexpected row in the '{0}' table was found in this patch. Patches cannot contain the '{0}' table. | ||
2028 | <Parameter Type="System.String" Name="tableName" /> | ||
2029 | </Instance> | ||
2030 | </Message> | ||
2031 | <Message Id="InvalidProductVersion" Number="242"> | ||
2032 | <Instance> | ||
2033 | Invalid product version '{0}'. Product version must have a major version less than 256, a minor version less than 256, and a build version less than 65536. | ||
2034 | <Parameter Type="System.String" Name="version" /> | ||
2035 | </Instance> | ||
2036 | <Instance> | ||
2037 | Invalid product version '{0}' in package '{1}'. When included in a bundle, all product version fields in an MSI package must be less than 65536. | ||
2038 | <Parameter Type="System.String" Name="version" /> | ||
2039 | <Parameter Type="System.String" Name="packagePath" /> | ||
2040 | </Instance> | ||
2041 | </Message> | ||
2042 | <Message Id="InvalidKeypathChange" Number="243"> | ||
2043 | <Instance> | ||
2044 | Component '{0}' has a changed keypath in the transform '{1}'. Patches cannot change the keypath of a component. | ||
2045 | <Parameter Type="System.String" Name="component" /> | ||
2046 | <Parameter Type="System.String" Name="transformPath" /> | ||
2047 | </Instance> | ||
2048 | </Message> | ||
2049 | <Message Id="MissingValidatorExtension" Number="244" SourceLineNumbers="no"> | ||
2050 | <Instance> | ||
2051 | The validator requires at least one extension. Add "ValidatorExtension, Wix" for the default implementation. | ||
2052 | </Instance> | ||
2053 | </Message> | ||
2054 | <Message Id="InvalidValidatorMessageType" Number="245" SourceLineNumbers="no"> | ||
2055 | <Instance> | ||
2056 | Unknown validation message type '{0}'. | ||
2057 | <Parameter Type="System.String" Name="type" /> | ||
2058 | </Instance> | ||
2059 | </Message> | ||
2060 | <Message Id="PatchWithoutTransforms" Number="246" SourceLineNumbers="no"> | ||
2061 | <Instance> | ||
2062 | No transforms were provided to attach to the patch. | ||
2063 | </Instance> | ||
2064 | </Message> | ||
2065 | <Message Id="SingleExtensionSupported" Number="247" SourceLineNumbers="no"> | ||
2066 | <Instance> | ||
2067 | Multiple extensions were specified on the command line, only a single extension is supported. | ||
2068 | </Instance> | ||
2069 | </Message> | ||
2070 | <Message Id="DuplicateTransform" Number="248" SourceLineNumbers="no"> | ||
2071 | <Instance> | ||
2072 | The transform {0} was included twice on the command line. Each transform can be applied to a patch only once. | ||
2073 | <Parameter Type="System.String" Name="transform" /> | ||
2074 | </Instance> | ||
2075 | </Message> | ||
2076 | <Message Id="BaselineRequired" Number="249" SourceLineNumbers="no"> | ||
2077 | <Instance> | ||
2078 | No baseline was specified for one of the transforms specified. A baseline is required for all transforms in a patch. | ||
2079 | </Instance> | ||
2080 | </Message> | ||
2081 | <Message Id="PreprocessorError" Number="250"> | ||
2082 | <Instance> | ||
2083 | {0} | ||
2084 | <Parameter Type="System.String" Name="message" /> | ||
2085 | </Instance> | ||
2086 | </Message> | ||
2087 | <Message Id="ExpectedArgument" Number="251" SourceLineNumbers="no"> | ||
2088 | <Instance> | ||
2089 | {0} is expected to be followed by a value argument. | ||
2090 | <Parameter Type="System.String" Name="argument" /> | ||
2091 | </Instance> | ||
2092 | </Message> | ||
2093 | <Message Id="PatchWithoutValidTransforms" Number="252" SourceLineNumbers="no"> | ||
2094 | <Instance> | ||
2095 | No valid transforms were provided to attach to the patch. Check to make sure the transforms you passed on the command line have a matching baseline authored in the patch. Also, make sure there are differences between your target and upgrade. | ||
2096 | </Instance> | ||
2097 | </Message> | ||
2098 | <Message Id="ExpectedDecompiler" Number="253" SourceLineNumbers="no"> | ||
2099 | <Instance> | ||
2100 | No decompiler was provided. {0} requires a decompiler. | ||
2101 | <Parameter Type="System.String" Name="identifier" /> | ||
2102 | </Instance> | ||
2103 | </Message> | ||
2104 | <Message Id="ExpectedTableInMergeModule" Number="254" SourceLineNumbers="no"> | ||
2105 | <Instance> | ||
2106 | The table '{0}' was expected but was missing. | ||
2107 | <Parameter Type="System.String" Name="identifier" /> | ||
2108 | </Instance> | ||
2109 | </Message> | ||
2110 | <Message Id="UnexpectedElementWithAttributeValue" Number="255"> | ||
2111 | <Instance> | ||
2112 | The {0} element cannot have a child element '{1}' unless attribute '{2}' is set to '{3}'. | ||
2113 | <Parameter Type="System.String" Name="elementName" /> | ||
2114 | <Parameter Type="System.String" Name="childElementName" /> | ||
2115 | <Parameter Type="System.String" Name="attribute" /> | ||
2116 | <Parameter Type="System.String" Name="attributeValue" /> | ||
2117 | </Instance> | ||
2118 | <Instance> | ||
2119 | The {0} element cannot have a child element '{1}' unless attribute '{2}' is set to '{3}' or '{4}'. | ||
2120 | <Parameter Type="System.String" Name="elementName" /> | ||
2121 | <Parameter Type="System.String" Name="childElementName" /> | ||
2122 | <Parameter Type="System.String" Name="attribute" /> | ||
2123 | <Parameter Type="System.String" Name="attributeValue1" /> | ||
2124 | <Parameter Type="System.String" Name="attributeValue2" /> | ||
2125 | </Instance> | ||
2126 | </Message> | ||
2127 | <Message Id="ExpectedPatchIdInWixMsp" Number="256" SourceLineNumbers="no"> | ||
2128 | <Instance> | ||
2129 | The WixMsp is missing the patch ID. | ||
2130 | </Instance> | ||
2131 | </Message> | ||
2132 | <Message Id="ExpectedMediaRowsInWixMsp" Number="257" SourceLineNumbers="no"> | ||
2133 | <Instance> | ||
2134 | The WixMsp has no media rows defined. | ||
2135 | </Instance> | ||
2136 | </Message> | ||
2137 | <Message Id="WixFileNotFound" Number="258" SourceLineNumbers="no"> | ||
2138 | <Instance> | ||
2139 | The file '{0}' cannot be found. | ||
2140 | <Parameter Type="System.String" Name="file" /> | ||
2141 | </Instance> | ||
2142 | </Message> | ||
2143 | <Message Id="ExpectedClientPatchIdInWixMsp" Number="259" SourceLineNumbers="no"> | ||
2144 | <Instance> | ||
2145 | The WixMsp is missing the client patch ID. Recompile the patch source files with the latest WiX toolset. | ||
2146 | </Instance> | ||
2147 | </Message> | ||
2148 | <Message Id="NewRowAddedInTable" Number="260"> | ||
2149 | <Instance> | ||
2150 | Product '{0}': Table '{1}' has a new row '{2}' added. This makes the patch not uninstallable. | ||
2151 | <Parameter Type="System.String" Name="productCode" /> | ||
2152 | <Parameter Type="System.String" Name="tableName" /> | ||
2153 | <Parameter Type="System.String" Name="rowId" /> | ||
2154 | </Instance> | ||
2155 | </Message> | ||
2156 | <Message Id="PatchNotRemovable" Number="261" SourceLineNumbers="no"> | ||
2157 | <Instance> | ||
2158 | This patch is not uninstallable. The 'Patch' element's attribute 'AllowRemoval' should be set to 'no'. | ||
2159 | </Instance> | ||
2160 | </Message> | ||
2161 | <Message Id="PathTooLong" Number="262"> | ||
2162 | <Instance> | ||
2163 | '{0}' is too long, the fully qualified file name must be less than 260 characters, and the directory name must be less than 248 characters. | ||
2164 | <Parameter Type="System.String" Name="fileName" /> | ||
2165 | </Instance> | ||
2166 | </Message> | ||
2167 | <Message Id="FileTooLarge" Number="263"> | ||
2168 | <Instance> | ||
2169 | '{0}' is too large, file size must be less than 2147483648. | ||
2170 | <Parameter Type="System.String" Name="fileName" /> | ||
2171 | </Instance> | ||
2172 | </Message> | ||
2173 | <Message Id="InvalidPlatformParameter" Number="264" SourceLineNumbers="no"> | ||
2174 | <Instance> | ||
2175 | The parameter '{0}' is missing or has an invalid value {1}. Possible values are x86, x64, or ia64. | ||
2176 | <Parameter Type="System.String" Name="name" /> | ||
2177 | <Parameter Type="System.String" Name="value" /> | ||
2178 | </Instance> | ||
2179 | </Message> | ||
2180 | <Message Id="InvalidPlatformValue" Number="265"> | ||
2181 | <Instance> | ||
2182 | The Platform attribute has an invalid value {0}. Possible values are x86, x64, or ia64. | ||
2183 | <Parameter Type="System.String" Name="value" /> | ||
2184 | </Instance> | ||
2185 | </Message> | ||
2186 | <Message Id="IllegalValidationArguments" Number="266" SourceLineNumbers="no"> | ||
2187 | <Instance> | ||
2188 | You may only specify a single default type using -t or specify custom validation using -serr and -val. | ||
2189 | </Instance> | ||
2190 | </Message> | ||
2191 | <Message Id="OrphanedComponent" Number="267"> | ||
2192 | <Instance> | ||
2193 | Found orphaned Component '{0}'. If this is a Product, every Component must have at least one parent Feature. To include a Component in a Module, you must include it directly as a Component element of the Module element or indirectly via ComponentRef, ComponentGroup, or ComponentGroupRef elements. | ||
2194 | <Parameter Type="System.String" Name="componentName" /> | ||
2195 | </Instance> | ||
2196 | </Message> | ||
2197 | <Message Id="IllegalCommandlineArgumentCombination" Number="268" SourceLineNumbers="no"> | ||
2198 | <Instance> | ||
2199 | '-{0}' cannot be specfied in combination with '-{1}'. | ||
2200 | <Parameter Type="System.String" Name="arg1" /> | ||
2201 | <Parameter Type="System.String" Name="arg2" /> | ||
2202 | </Instance> | ||
2203 | </Message> | ||
2204 | <Message Id="ProductCodeInvalidForTransform" Number="269"> | ||
2205 | <Instance> | ||
2206 | The value '*' is not valid for the ProductCode when used in a transform or in a patch. Copy the ProductCode from your target product MSI into the Product/@Id attribute value for your product authoring. | ||
2207 | </Instance> | ||
2208 | </Message> | ||
2209 | <Message Id="InsertInvalidSequenceActionOrder" Number="270"> | ||
2210 | <Instance> | ||
2211 | Invalid order of actions {1} and {2} in sequence table {0}. Action {3} must occur after {1} and before {2}, but {2} is currently sequenced after {1}. Please fix the ordering or explicitly supply a location for the action {3}. | ||
2212 | <Parameter Type="System.String" Name="sequenceTableName" /> | ||
2213 | <Parameter Type="System.String" Name="actionNameBefore" /> | ||
2214 | <Parameter Type="System.String" Name="actionNameAfter" /> | ||
2215 | <Parameter Type="System.String" Name="actionNameNew" /> | ||
2216 | </Instance> | ||
2217 | </Message> | ||
2218 | <Message Id="InsertSequenceNoSpace" Number="271"> | ||
2219 | <Instance> | ||
2220 | Not enough space exists to sequence action {3} in table {0}. It must be sequenced after {1} and before {2}, but those two actions are currently sequenced next to each other. Please move one of those actions to allow {3} to be inserted between them. | ||
2221 | <Parameter Type="System.String" Name="sequenceTableName" /> | ||
2222 | <Parameter Type="System.String" Name="actionNameBefore" /> | ||
2223 | <Parameter Type="System.String" Name="actionNameAfter" /> | ||
2224 | <Parameter Type="System.String" Name="actionNameNew" /> | ||
2225 | </Instance> | ||
2226 | </Message> | ||
2227 | <Message Id="MissingManifestForWin32Assembly" Number="272"> | ||
2228 | <Instance> | ||
2229 | File '{0}' is marked as a Win32 assembly but it refers to assembly manifest '{1}' that is not present in this product. | ||
2230 | <Parameter Type="System.String" Name="file" /> | ||
2231 | <Parameter Type="System.String" Name="manifest" /> | ||
2232 | </Instance> | ||
2233 | </Message> | ||
2234 | <Message Id="UnableToOpenModule" Number="273"> | ||
2235 | <Instance> | ||
2236 | Unable to open merge module '{0}'. Check to make sure the module language is correct. '{1}' | ||
2237 | <Parameter Type="System.String" Name="modulePath" /> | ||
2238 | <Parameter Type="System.String" Name="message" /> | ||
2239 | </Instance> | ||
2240 | </Message> | ||
2241 | <Message Id="ExpectedAttributeWhenElementNotUnderElement" Number="274"> | ||
2242 | <Instance> | ||
2243 | The '{0}/@{1}' attribute was not found; it is required when element '{0}' is not nested under a '{2}' element. | ||
2244 | <Parameter Type="System.String" Name="elementName" /> | ||
2245 | <Parameter Type="System.String" Name="attributeName" /> | ||
2246 | <Parameter Type="System.String" Name="parentElementName" /> | ||
2247 | </Instance> | ||
2248 | </Message> | ||
2249 | <Message Id="IllegalIdentifierLooksLikeFormatted" Number="275"> | ||
2250 | <Instance> | ||
2251 | The {0}/@{1} attribute's value, '{2}', is not a legal identifier. The {0}/@{1} attribute does not support formatted string values, such as property names enclosed in brackets ([LIKETHIS]). The value must be the identifier of another element, such as the Directory/@Id attribute value. | ||
2252 | <Parameter Type="System.String" Name="elementName" /> | ||
2253 | <Parameter Type="System.String" Name="attributeName" /> | ||
2254 | <Parameter Type="System.String" Name="value" /> | ||
2255 | </Instance> | ||
2256 | </Message> | ||
2257 | <Message Id="IllegalCodepageAttribute" Number="276"> | ||
2258 | <Instance> | ||
2259 | The code page '{0}' is not a valid Windows code page. Please check the {1}/@{2} attribute value in your source file. | ||
2260 | <Parameter Type="System.String" Name="codepage" /> | ||
2261 | <Parameter Type="System.String" Name="elementName" /> | ||
2262 | <Parameter Type="System.String" Name="attributeName" /> | ||
2263 | </Instance> | ||
2264 | </Message> | ||
2265 | <Message Id="IllegalCompressionLevel" Number="277" SourceLineNumbers="no"> | ||
2266 | <Instance> | ||
2267 | The compression level '{0}' is not valid. Valid values are 'none', 'low', 'medium', 'high', and 'mszip'. | ||
2268 | <Parameter Type="System.String" Name="compressionLevel" /> | ||
2269 | </Instance> | ||
2270 | </Message> | ||
2271 | <Message Id="TransformSchemaMismatch" Number="278" SourceLineNumbers="no"> | ||
2272 | <Instance>The transform schema does not match the database schema. The transform may have been generated from a different database.</Instance> | ||
2273 | </Message> | ||
2274 | <Message Id="DatabaseSchemaMismatch" Number="279"> | ||
2275 | <Instance> | ||
2276 | The table definition of '{0}' in the target database does not match the table definition in the updated database. A transform requires that the target database schema match the updated database schema. | ||
2277 | <Parameter Type="System.String" Name="tableName" /> | ||
2278 | </Instance> | ||
2279 | </Message> | ||
2280 | <Message Id="ExpectedDirectoryGotFile" Number="280" SourceLineNumbers="no"> | ||
2281 | <Instance> | ||
2282 | The {0} option requires a directory, but the provided path is a file: {1} | ||
2283 | <Parameter Type="System.String" Name="option" /> | ||
2284 | <Parameter Type="System.String" Name="path" /> | ||
2285 | </Instance> | ||
2286 | </Message> | ||
2287 | <Message Id="ExpectedFileGotDirectory" Number="281" SourceLineNumbers="no"> | ||
2288 | <Instance> | ||
2289 | The {0} option requires a file, but the provided path is a directory: {1} | ||
2290 | <Parameter Type="System.String" Name="option" /> | ||
2291 | <Parameter Type="System.String" Name="path" /> | ||
2292 | </Instance> | ||
2293 | </Message> | ||
2294 | <Message Id="GacAssemblyNoStrongName" Number="282"> | ||
2295 | <Instance> | ||
2296 | Assembly {0} in component {1} has no strong name and has been marked to be placed in the GAC. All assemblies installed to the GAC must have a valid strong name. | ||
2297 | <Parameter Type="System.String" Name="assemblyName" /> | ||
2298 | <Parameter Type="System.String" Name="componentName" /> | ||
2299 | </Instance> | ||
2300 | </Message> | ||
2301 | <Message Id="FileWriteError" Number="283" SourceLineNumbers="no"> | ||
2302 | <Instance> | ||
2303 | Error writing to the path: '{0}'. Error message: '{1}' | ||
2304 | <Parameter Type="System.String" Name="path" /> | ||
2305 | <Parameter Type="System.String" Name="error" /> | ||
2306 | </Instance> | ||
2307 | </Message> | ||
2308 | <Message Id="InvalidCommandLineFileName" Number="284" SourceLineNumbers="no"> | ||
2309 | <Instance> | ||
2310 | Invalid file name specified on the command line: '{0}'. Error message: '{1}' | ||
2311 | <Parameter Type="System.String" Name="fileName" /> | ||
2312 | <Parameter Type="System.String" Name="error" /> | ||
2313 | </Instance> | ||
2314 | </Message> | ||
2315 | <Message Id="ExpectedParentWithAttribute" Number="285"> | ||
2316 | <Instance> | ||
2317 | When the {0}/@{1} attribute is specified, the {0} element must be nested under a {2} element. | ||
2318 | <Parameter Type="System.String" Name="parentElement" /> | ||
2319 | <Parameter Type="System.String" Name="attribute" /> | ||
2320 | <Parameter Type="System.String" Name="grandparentElement" /> | ||
2321 | </Instance> | ||
2322 | </Message> | ||
2323 | <Message Id="IllegalWarningIdAsError" Number="286" SourceLineNumbers="no"> | ||
2324 | <Instance> | ||
2325 | Illegal value '{0}' for the -wx<N> command line option. Specify a particular warning number, like '-wx6' to display the warning with ID 6 as an error, or '-wx' alone to suppress all warnings. | ||
2326 | <Parameter Type="System.String" Name="warningId" /> | ||
2327 | </Instance> | ||
2328 | </Message> | ||
2329 | <Message Id="ExpectedAttributeOrElement" Number="287"> | ||
2330 | <Instance> | ||
2331 | Element '{0}' missing attribute '{1}' or child element '{2}'. Exactly one of those is required. | ||
2332 | <Parameter Type="System.String" Name="parentElement" /> | ||
2333 | <Parameter Type="System.String" Name="attribute" /> | ||
2334 | <Parameter Type="System.String" Name="childElement" /> | ||
2335 | </Instance> | ||
2336 | </Message> | ||
2337 | <Message Id="DuplicateVariableDefinition" Number="288" SourceLineNumbers="no"> | ||
2338 | <Instance> | ||
2339 | The variable '{0}' with value '{1}' was previously declared with value '{2}'. | ||
2340 | <Parameter Type="System.String" Name="variableName" /> | ||
2341 | <Parameter Type="System.String" Name="variableValue" /> | ||
2342 | <Parameter Type="System.String" Name="variableCollidingValue" /> | ||
2343 | </Instance> | ||
2344 | </Message> | ||
2345 | <Message Id="InvalidVariableDefinition" Number="289" SourceLineNumbers="no"> | ||
2346 | <Instance> | ||
2347 | The variable definition '{0}' is not valid. Variable definitions should be in the form -dname=value where the value is optional. | ||
2348 | <Parameter Type="System.String" Name="variableDefinition" /> | ||
2349 | </Instance> | ||
2350 | </Message> | ||
2351 | <Message Id="DuplicateCabinetName" Number="290"> | ||
2352 | <Instance> | ||
2353 | Duplicate cabinet name '{0}' found. | ||
2354 | <Parameter Type="System.String" Name="cabinetName" /> | ||
2355 | </Instance> | ||
2356 | </Message> | ||
2357 | <Message Id="DuplicateCabinetName2" Number="291"> | ||
2358 | <Instance> | ||
2359 | Duplicate cabinet name '{0}' error related to previous error. | ||
2360 | <Parameter Type="System.String" Name="cabinetName" /> | ||
2361 | </Instance> | ||
2362 | </Message> | ||
2363 | <Message Id="InvalidAddedFileRowWithoutSequence" Number="292"> | ||
2364 | <Instance> | ||
2365 | A row has been added to the File table with id '{1}' that does not have a sequence number assigned to it. Create your transform from a pair of msi's instead of xml outputs to get sequences assigned to your File table's rows. | ||
2366 | <Parameter Type="System.String" Name="fileRowId" /> | ||
2367 | </Instance> | ||
2368 | </Message> | ||
2369 | <Message Id="DuplicateFileId" Number="293" SourceLineNumbers="no"> | ||
2370 | <Instance> | ||
2371 | Multiple files with ID '{0}' exist. Windows Installer does not support file IDs that differ only by case. Change the file IDs to be unique. | ||
2372 | <Parameter Type="System.String" Name="fileId" /> | ||
2373 | </Instance> | ||
2374 | </Message> | ||
2375 | <Message Id="FullTempDirectory" Number="294" SourceLineNumbers="no"> | ||
2376 | <Instance> | ||
2377 | Unable to create temporary file. A common cause is that too many files that have names beginning with '{0}' are present. Delete any unneeded files in the '{1}' directory and try again. | ||
2378 | <Parameter Type="System.String" Name="prefix" /> | ||
2379 | <Parameter Type="System.String" Name="directory" /> | ||
2380 | </Instance> | ||
2381 | </Message> | ||
2382 | <Message Id="CreateCabAddFileFailed" Number="296" SourceLineNumbers="no"> | ||
2383 | <Instance> | ||
2384 | An error (E_FAIL) was returned while adding files to a CAB file. This most commonly happens when creating a CAB file 2 GB or larger. Either reduce the size of your installation package, raise Media/@CompressionLevel to a higher compression level, or split your installation package's files into more than one CAB file. | ||
2385 | </Instance> | ||
2386 | </Message> | ||
2387 | <Message Id="CreateCabInsufficientDiskSpace" Number="297" SourceLineNumbers="no"> | ||
2388 | <Instance> | ||
2389 | An error (ERROR_DISK_FULL) was returned while creating a CAB file. This means you have insufficient disk space - please clear more disk space and try this operation again. | ||
2390 | </Instance> | ||
2391 | </Message> | ||
2392 | <Message Id="UnresolvedBindReference" Number="298" SourceLineNumbers="yes"> | ||
2393 | <Instance> | ||
2394 | Unresolved bind-time variable {0}. | ||
2395 | <Parameter Type="System.String" Name="BindRef" /> | ||
2396 | </Instance> | ||
2397 | </Message> | ||
2398 | <Message Id="GACAssemblyIdentityWarning" Number="299" SourceLineNumbers="yes"> | ||
2399 | <Instance> | ||
2400 | The destination name of file '{0}' does not match its assembly name '{1}' in your authoring. This will cause an installation failure for this assembly, because it will be installed to the Global Assembly Cache. To fix this error, update File/@Name of file '{0}' to be the actual name of the assembly. | ||
2401 | <Parameter Type="System.String" Name="fileName" /> | ||
2402 | <Parameter Type="System.String" Name="assemblyName" /> | ||
2403 | </Instance> | ||
2404 | </Message> | ||
2405 | <Message Id="IllegalCharactersInPath" Number="300" SourceLineNumbers="no"> | ||
2406 | <Instance> | ||
2407 | Illegal characters in path '{0}'. Ensure you provided a valid path to the file. | ||
2408 | <Parameter Type="System.String" Name="pathName" /> | ||
2409 | </Instance> | ||
2410 | </Message> | ||
2411 | <Message Id="ValidationFailedToOpenDatabase" Number="301" SourceLineNumbers="no"> | ||
2412 | <Instance> | ||
2413 | Failed to open the database. During validation, this most commonly happens when attempting to open a database using an unsupported code page or a file that is not a valid Windows Installer database. Please use a different code page in Module/@Codepage, Package/@SummaryCodepage, Product/@Codepage, or WixLocalization/@Codepage; or make sure you provide the path to a valid Windows Installer database. | ||
2414 | </Instance> | ||
2415 | </Message> | ||
2416 | <Message Id="MustSpecifyOutputWithMoreThanOneInput" Number="302" SourceLineNumbers="no"> | ||
2417 | <Instance> | ||
2418 | You must specify an output file using the "-o" or "-out" switch when you provide more than one input file. | ||
2419 | </Instance> | ||
2420 | </Message> | ||
2421 | <Message Id="IllegalSearchIdForParentDepth" Number="303"> | ||
2422 | <Instance> | ||
2423 | When the parent DirectorySearch/@Depth attribute is greater than 1 for the DirectorySearch '{1}', the FileSearch/@Id attribute must be absent for FileSearch '{0}' unless the parent DirectorySearch/@AssignToProperty attribute value is 'yes'. Remove the FileSearch/@Id attribute for '{0}' to resolve this issue. | ||
2424 | <Parameter Type="System.String" Name="id" /> | ||
2425 | <Parameter Type="System.String" Name="parentId" /> | ||
2426 | </Instance> | ||
2427 | </Message> | ||
2428 | <Message Id="IdentifierTooLongError" Number="304"> | ||
2429 | <Instance> | ||
2430 | The {0}/@{1} attribute's value, '{2}', is too long. {0}/@{1} attribute's must be {3} characters long or less. | ||
2431 | <Parameter Type="System.String" Name="elementName" /> | ||
2432 | <Parameter Type="System.String" Name="attributeName" /> | ||
2433 | <Parameter Type="System.String" Name="value" /> | ||
2434 | <Parameter Type="System.Int32" Name="maxLength" /> | ||
2435 | </Instance> | ||
2436 | </Message> | ||
2437 | <Message Id="InvalidRemoveComponent" Number="305"> | ||
2438 | <Instance> | ||
2439 | Removing component '{0}' from feature '{1}' is not supported. Either the component was removed or the guid changed in the transform '{2}'. Add the component back, undo the change to the component guid, or remove the entire feature. | ||
2440 | <Parameter Type="System.String" Name="component" /> | ||
2441 | <Parameter Type="System.String" Name="feature" /> | ||
2442 | <Parameter Type="System.String" Name="transformPath" /> | ||
2443 | </Instance> | ||
2444 | </Message> | ||
2445 | <Message Id="FinishCabFailed" Number="306" SourceLineNumbers="no"> | ||
2446 | <Instance> | ||
2447 | An error (E_FAIL) was returned while finalizing a CAB file. This most commonly happens when creating a CAB file with more than 65535 files in it. Either reduce the number of files in your installation package or split your installation package's files into more than one CAB file using the Media element. | ||
2448 | </Instance> | ||
2449 | </Message> | ||
2450 | <Message Id="InvalidExtensionType" Number="307" SourceLineNumbers="no"> | ||
2451 | <Instance> | ||
2452 | Either '{1}' was not defined in the assembly or the type defined in extension '{0}' could not be loaded. | ||
2453 | <Parameter Type="System.String" Name="extension" /> | ||
2454 | <Parameter Type="System.String" Name="attributeType" /> | ||
2455 | </Instance> | ||
2456 | <Instance> | ||
2457 | The extension type '{1}' in extension '{0}' does not inherit from the expected class '{2}'. | ||
2458 | <Parameter Type="System.String" Name="extension" /> | ||
2459 | <Parameter Type="System.String" Name="className" /> | ||
2460 | <Parameter Type="System.String" Name="expectedType" /> | ||
2461 | </Instance> | ||
2462 | <Instance> | ||
2463 | The type '{1}' in extension '{0}' could not be loaded. Exception type '{2}' returned the following message: {3} | ||
2464 | <Parameter Type="System.String" Name="extension" /> | ||
2465 | <Parameter Type="System.String" Name="className" /> | ||
2466 | <Parameter Type="System.String" Name="exceptionType" /> | ||
2467 | <Parameter Type="System.String" Name="exceptionMessage"/> | ||
2468 | </Instance> | ||
2469 | </Message> | ||
2470 | <Message Id="ValidationFailedDueToMultilanguageMergeModule" Number="309" SourceLineNumbers="no"> | ||
2471 | <Instance> | ||
2472 | Failed to open merge module for validation. The most common cause of this error is specifying that the merge module supports multiple languages (using the Package/@Languages attribute) but not including language-specific embedded transforms. To fix this error, make the merge module language-neutral, make it language-specific, embed language transforms as specified in the MSI SDK at http://msdn.microsoft.com/library/aa367799.aspx, or disable validation. | ||
2473 | </Instance> | ||
2474 | </Message> | ||
2475 | <Message Id="ValidationFailedDueToInvalidPackage" Number="310" SourceLineNumbers="no"> | ||
2476 | <Instance> | ||
2477 | Failed to open package for validation. The most common cause of this error is validating an x64 package on an x86 system. To fix this error, run validation on an x64 system or disable validation. | ||
2478 | </Instance> | ||
2479 | </Message> | ||
2480 | <Message Id="InvalidStringForCodepage" Number="311"> | ||
2481 | <Instance> | ||
2482 | A string was provided with characters that are not available in the specified database code page '{0}'. Either change these characters to ones that exist in the database's code page, or update the database's code page by modifying one of the following attributes: Product/@Codepage, Module/@Codepage, Patch/@Codepage, PatchCreation/@Codepage, or WixLocalization/@Codepage. | ||
2483 | <Parameter Type="System.String" Name="codepage" /> | ||
2484 | </Instance> | ||
2485 | </Message> | ||
2486 | <Message Id="InvalidEmbeddedUIFileName" Number="312"> | ||
2487 | <Instance> | ||
2488 | The EmbeddedUI/@Name attribute value, '{0}', does not contain an extension. Windows Installer will not load an embedded UI DLL without an extension. Include an extension or just omit the Name attribute so it defaults to the file name portion of the Source attribute value. | ||
2489 | <Parameter Type="System.String" Name="codepage" /> | ||
2490 | </Instance> | ||
2491 | </Message> | ||
2492 | <Message Id="UniqueFileSearchIdRequired" Number="313"> | ||
2493 | <Instance> | ||
2494 | The DirectorySearch element '{0}' requires that the child {1} element has a unique Id when the DirectorySearch/@AssignToProperty attribute is set to 'yes'. | ||
2495 | <Parameter Type="System.String" Name="id" /> | ||
2496 | <Parameter Type="System.String" Name="elementName" /> | ||
2497 | </Instance> | ||
2498 | </Message> | ||
2499 | <Message Id="IllegalAttributeValueWhenNested" Number="314"> | ||
2500 | <Instance> | ||
2501 | The {0}/@{1} attribute value, '{2}', cannot be specified when the {0} element is nested underneath a {3} element. | ||
2502 | <Parameter Type="System.String" Name="elementName" /> | ||
2503 | <Parameter Type="System.String" Name="attributeName" /> | ||
2504 | <Parameter Type="System.String" Name="attrivuteValue" /> | ||
2505 | <Parameter Type="System.String" Name="parentElementName" /> | ||
2506 | </Instance> | ||
2507 | </Message> | ||
2508 | <Message Id="AdminImageRequired" Number="315" SourceLineNumbers="no"> | ||
2509 | <Instance> | ||
2510 | Source information is required for the product '{0}'. If you ran torch.exe with both target and updated .msi files, you must first perform an administrative installation of both .msi files then pass -a when running torch.exe. | ||
2511 | <Parameter Type="System.String" Name="productCode" /> | ||
2512 | </Instance> | ||
2513 | </Message> | ||
2514 | <Message Id="SamePatchBaselineId" Number="316"> | ||
2515 | <Instance> | ||
2516 | The PatchBaseline/@Id attribute value '{0}' is a child of multiple Media elements. This prevents transforms from being resolved to distinct media. Change the PatchBaseline/@Id attribute values to be unique. | ||
2517 | <Parameter Type="System.String" Name="id" /> | ||
2518 | </Instance> | ||
2519 | </Message> | ||
2520 | <Message Id="SameFileIdDifferentSource" Number="317"> | ||
2521 | <Instance> | ||
2522 | Two different source paths '{1}' and '{2}' were detected for the same file identifier '{0}'. You must either author these under Media elements with different Id attribute values or in different patches. | ||
2523 | <Parameter Type="System.String" Name="fileId" /> | ||
2524 | <Parameter Type="System.String" Name="sourcePath1" /> | ||
2525 | <Parameter Type="System.String" Name="sourcePath2" /> | ||
2526 | </Instance> | ||
2527 | </Message> | ||
2528 | <Message Id="HarvestSourceNotSpecified" Number="318" SourceLineNumbers="no"> | ||
2529 | <Instance> | ||
2530 | A harvest source must be specified after the harvest type and can be followed by harvester arguments. | ||
2531 | </Instance> | ||
2532 | </Message> | ||
2533 | <Message Id="OutputTargetNotSpecified" Number="319" SourceLineNumbers="no"> | ||
2534 | <Instance> | ||
2535 | The '-out' or '-o' parameter must specify a file path. | ||
2536 | </Instance> | ||
2537 | </Message> | ||
2538 | <Message Id="DuplicateCommandLineOptionInExtension" Number="320" SourceLineNumbers="no"> | ||
2539 | <Instance> | ||
2540 | The command line option '{0}' has already been loaded by another Heat extension. | ||
2541 | <Parameter Type="System.String" Name="arg" /> | ||
2542 | </Instance> | ||
2543 | </Message> | ||
2544 | <Message Id="HarvestTypeNotFound" Number="321" SourceLineNumbers="no"> | ||
2545 | <Instance> | ||
2546 | The harvest type was not found in the list of loaded Heat extensions. | ||
2547 | </Instance> | ||
2548 | <Instance> | ||
2549 | The harvest type '{0}' was specified. Harvest types cannot start with a '-'. Remove the '-' to specify a valid harvest type. | ||
2550 | <Parameter Type="System.String" Name="harvestType" /> | ||
2551 | </Instance> | ||
2552 | </Message> | ||
2553 | <Message Id="BothUpgradeCodesRequired" Number="322" SourceLineNumbers="no"> | ||
2554 | <Instance> | ||
2555 | Both the target and updated product authoring must define the Product/@UpgradeCode attribute if the transform validates the UpgradeCode (default). Either define the Product/@UpgradeCode attribute in both the target and updated authoring, or set the Validate/@UpgradeCode attribute to 'no' in the patch authoring. | ||
2556 | </Instance> | ||
2557 | </Message> | ||
2558 | <Message Id="IllegalBinderClassName" Number="323" SourceLineNumbers="no"> | ||
2559 | <Instance> | ||
2560 | Illegal binder class name specified for -binder command line option. | ||
2561 | </Instance> | ||
2562 | </Message> | ||
2563 | <Message Id="SpecifiedBinderNotFound" Number="324" SourceLineNumbers="no"> | ||
2564 | <Instance> | ||
2565 | The specified binder class '{0}' was not found in any extensions. | ||
2566 | <Parameter Type="System.String" Name="binderClass" /> | ||
2567 | </Instance> | ||
2568 | </Message> | ||
2569 | <Message Id="CannotLoadBinderFileManager" Number="325" SourceLineNumbers="no"> | ||
2570 | <Instance> | ||
2571 | Cannot load binder file manager: {0}. Light can only load one binder file manager and has already loaded binder file manager: {1}. | ||
2572 | <Parameter Type="System.String" Name="binderFileManager" /> | ||
2573 | <Parameter Type="System.String" Name="currentBinderFileManager" /> | ||
2574 | </Instance> | ||
2575 | </Message> | ||
2576 | <Message Id="CannotLoadLinkerExtension" Number="326" SourceLineNumbers="no"> | ||
2577 | <Instance> | ||
2578 | Cannot load linker extension: {0}. Light can only load one link extension and has already loaded link extension: {1}. | ||
2579 | <Parameter Type="System.String" Name="linkerExtension" /> | ||
2580 | <Parameter Type="System.String" Name="currentLinkerExtension" /> | ||
2581 | </Instance> | ||
2582 | </Message> | ||
2583 | <Message Id="UnableToGetAuthenticodeCertOfFile" Number="327" SourceLineNumbers="no"> | ||
2584 | <Instance> | ||
2585 | Unable to get the authenticode certificate of '{0}'. More information: {1} | ||
2586 | <Parameter Type="System.String" Name="filePath" /> | ||
2587 | <Parameter Type="System.String" Name="moreInformation" /> | ||
2588 | </Instance> | ||
2589 | </Message> | ||
2590 | <Message Id="UnableToGetAuthenticodeCertOfFileDownlevelOS" Number="328" SourceLineNumbers="no"> | ||
2591 | <Instance> | ||
2592 | Unable to get the authenticode certificate of '{0}'. The cryptography API has limitations on Windows XP and Windows Server 2003. More information: {1} | ||
2593 | <Parameter Type="System.String" Name="filePath" /> | ||
2594 | <Parameter Type="System.String" Name="moreInformation" /> | ||
2595 | </Instance> | ||
2596 | </Message> | ||
2597 | <Message Id="ReadOnlyOutputFile" Number="329" SourceLineNumbers="no"> | ||
2598 | <Instance> | ||
2599 | Unable to output to file '{0}' because it is marked as read-only. | ||
2600 | <Parameter Type="System.String" Name="filePath" /> | ||
2601 | </Instance> | ||
2602 | </Message> | ||
2603 | <Message Id="CannotDefaultComponentId" Number="330"> | ||
2604 | <Instance> | ||
2605 | The Component/@Id attribute was not found; it is required when there is no valid keypath to use as the default id value. | ||
2606 | </Instance> | ||
2607 | </Message> | ||
2608 | <Message Id="ParentElementAttributeRequired" Number="331"> | ||
2609 | <Instance> | ||
2610 | The parent {0} element is missing the {1} attribute that is required for the {2} child element. | ||
2611 | <Parameter Type="System.String" Name="parentElement" /> | ||
2612 | <Parameter Type="System.String" Name="parentAttribute" /> | ||
2613 | <Parameter Type="System.String" Name="childElement" /> | ||
2614 | </Instance> | ||
2615 | </Message> | ||
2616 | <Message Id="PreprocessorExtensionPragmaFailed" Number="333"> | ||
2617 | <Instance> | ||
2618 | Exception thrown while processing pragma '{0}'. The exception's message is: {1} | ||
2619 | <Parameter Type="System.String" Name="pragma" /> | ||
2620 | <Parameter Type="System.String" Name="message" /> | ||
2621 | </Instance> | ||
2622 | </Message> | ||
2623 | <Message Id="InvalidPreprocessorPragma" Number="334"> | ||
2624 | <Instance> | ||
2625 | Malformed preprocessor pragma '{0}'. Pragmas must have a prefix, a name of at least 1 character long, and be followed by optional arguments. | ||
2626 | <Parameter Type="System.String" Name="variable" /> | ||
2627 | </Instance> | ||
2628 | </Message> | ||
2629 | <Message Id="SmokeUnknownFileExtension" Number="335" SourceLineNumbers="no"> | ||
2630 | <Instance> | ||
2631 | Unknown input file format - expected a .msi or .msm file. | ||
2632 | </Instance> | ||
2633 | </Message> | ||
2634 | <Message Id="SmokeUnsupportedFileExtension" Number="336" SourceLineNumbers="no"> | ||
2635 | <Instance> | ||
2636 | Files with an extension of .msp are not currently supported. | ||
2637 | </Instance> | ||
2638 | </Message> | ||
2639 | <Message Id="SmokeMalformedPath" Number="337" SourceLineNumbers="no"> | ||
2640 | <Instance> | ||
2641 | Path contains one or more invalid characters. | ||
2642 | </Instance> | ||
2643 | </Message> | ||
2644 | <Message Id="InvalidStubExe" Number="338" SourceLineNumbers="no"> | ||
2645 | <Instance> | ||
2646 | Stub executable '{0}' is not a valid Win32 executable. | ||
2647 | <Parameter Type="System.String" Name="filename" /> | ||
2648 | </Instance> | ||
2649 | </Message> | ||
2650 | <Message Id="StubMissingWixburnSection" Number="339" SourceLineNumbers="no"> | ||
2651 | <Instance> | ||
2652 | Stub executable '{0}' does not contain a .wixburn data section. | ||
2653 | <Parameter Type="System.String" Name="filename" /> | ||
2654 | </Instance> | ||
2655 | </Message> | ||
2656 | <Message Id="StubWixburnSectionTooSmall" Number="340" SourceLineNumbers="no"> | ||
2657 | <Instance> | ||
2658 | Stub executable '{0}' .wixburn data section is too small to store the Burn container header. | ||
2659 | <Parameter Type="System.String" Name="filename" /> | ||
2660 | </Instance> | ||
2661 | </Message> | ||
2662 | <Message Id="MissingBundleInformation" Number="341" SourceLineNumbers="no"> | ||
2663 | <Instance> | ||
2664 | The Bundle is missing '{0}' data, and cannot continue. | ||
2665 | <Parameter Type="System.String" Name="data" /> | ||
2666 | </Instance> | ||
2667 | </Message> | ||
2668 | <Message Id="UnexpectedGroupChild" Number="342" SourceLineNumbers="no"> | ||
2669 | <Instance> | ||
2670 | A group parent ('{0}'/'{1}') had an unexpected child ('{2}'/'{3}'). | ||
2671 | <Parameter Type="System.String" Name="parentType" /> | ||
2672 | <Parameter Type="System.String" Name="parentId" /> | ||
2673 | <Parameter Type="System.String" Name="childType" /> | ||
2674 | <Parameter Type="System.String" Name="childId" /> | ||
2675 | </Instance> | ||
2676 | </Message> | ||
2677 | <Message Id="OrderingReferenceLoopDetected" Number="343"> | ||
2678 | <Instance> | ||
2679 | A circular reference of ordering dependencies was detected. The infinite loop includes: {0}. Ordering dependency references must form a directed acyclic graph. | ||
2680 | <Parameter Type="System.String" Name="loopList" /> | ||
2681 | </Instance> | ||
2682 | </Message> | ||
2683 | <Message Id="IdentifierNotFound" Number="344" SourceLineNumbers="no"> | ||
2684 | <Instance> | ||
2685 | An expected identifier ('{1}', of type '{0}') was not found. | ||
2686 | <Parameter Type="System.String" Name="type" /> | ||
2687 | <Parameter Type="System.String" Name="identifier" /> | ||
2688 | </Instance> | ||
2689 | </Message> | ||
2690 | <Message Id="MergePlatformMismatch" Number="345"> | ||
2691 | <Instance> | ||
2692 | '{0}' is a 64-bit merge module but the product consuming it is 32-bit. 32-bit products can consume only 32-bit merge modules. | ||
2693 | <Parameter Type="System.String" Name="mergeModuleFile" /> | ||
2694 | </Instance> | ||
2695 | </Message> | ||
2696 | <Message Id="IllegalRelativeLongFilename" Number="346"> | ||
2697 | <Instance> | ||
2698 | The {0}/@{1} attribute's value, '{2}', is not a valid relative long name because it contains illegal characters. Legal relative long names contain no more than 260 characters and must contain at least one non-period character. Any character except for the follow may be used: ? | > < : / * ". | ||
2699 | <Parameter Type="System.String" Name="elementName" /> | ||
2700 | <Parameter Type="System.String" Name="attributeName" /> | ||
2701 | <Parameter Type="System.String" Name="value" /> | ||
2702 | </Instance> | ||
2703 | </Message> | ||
2704 | <Message Id="IllegalAttributeValueWithLegalList" Number="347"> | ||
2705 | <Instance> | ||
2706 | The {0}/@{1} attribute's value, '{2}', is not one of the legal options: {3}. | ||
2707 | <Parameter Type="System.String" Name="elementName" /> | ||
2708 | <Parameter Type="System.String" Name="attributeName" /> | ||
2709 | <Parameter Type="System.String" Name="value" /> | ||
2710 | <Parameter Type="System.String" Name="legalValueList" /> | ||
2711 | </Instance> | ||
2712 | </Message> | ||
2713 | <Message Id="IllegalAttributeValueWithIllegalList" Number="348"> | ||
2714 | <Instance> | ||
2715 | The {0}/@{1} attribute's value, '{2}', is one of the illegal options: {3}. | ||
2716 | <Parameter Type="System.String" Name="elementName" /> | ||
2717 | <Parameter Type="System.String" Name="attributeName" /> | ||
2718 | <Parameter Type="System.String" Name="value" /> | ||
2719 | <Parameter Type="System.String" Name="illegalValueList" /> | ||
2720 | </Instance> | ||
2721 | </Message> | ||
2722 | |||
2723 | <Message Id="InvalidSummaryInfoCodePage" Number="349"> | ||
2724 | <Instance> | ||
2725 | The code page '{0}' is invalid for summary information. You must specify an ANSI code page. | ||
2726 | <Parameter Type="System.Int32" Name="codePage" /> | ||
2727 | </Instance> | ||
2728 | </Message> | ||
2729 | <Message Id="ValidationFailedDueToLowMsiEngine" Number="350" SourceLineNumbers="no"> | ||
2730 | <Instance> | ||
2731 | The package being validated requires a higher version of Windows Installer than is installed on this machine. Validation cannot continue. | ||
2732 | </Instance> | ||
2733 | </Message> | ||
2734 | <Message Id="DuplicateSourcesForOutput" Number="351" SourceLineNumbers="no"> | ||
2735 | <Instance> | ||
2736 | Multiple source files ({0}) have resulted in the same output file '{1}'. This is likely because the source files only differ in extension or path. Rename the source files to avoid this problem. | ||
2737 | <Parameter Type="System.String" Name="sourceList" /> | ||
2738 | <Parameter Type="System.String" Name="outputFile" /> | ||
2739 | </Instance> | ||
2740 | </Message> | ||
2741 | <Message Id="UnableToReadPackageInformation" Number="352"> | ||
2742 | <Instance> | ||
2743 | Unable to read package '{0}'. {1} | ||
2744 | <Parameter Type="System.String" Name="packagePath" /> | ||
2745 | <Parameter Type="System.String" Name="detailedErrorMessage" /> | ||
2746 | </Instance> | ||
2747 | </Message> | ||
2748 | <Message Id="MultipleFilesMatchedWithOutputSpecification" Number="353" SourceLineNumbers="no"> | ||
2749 | <Instance> | ||
2750 | A per-source file output specification has been provided ('{0}'), but multiple source files match the source specification ({1}). Specifying a unique output requires that only a single source file match. | ||
2751 | <Parameter Type="System.String" Name="sourceSpecification" /> | ||
2752 | <Parameter Type="System.String" Name="sourceList" /> | ||
2753 | </Instance> | ||
2754 | </Message> | ||
2755 | <Message Id="InvalidBundle" Number="354" SourceLineNumbers="no"> | ||
2756 | <Instance> | ||
2757 | Unable to read bundle executable '{0}'. This is not a valid WiX bundle. | ||
2758 | <Parameter Type="System.String" Name="bundleExecutable" /> | ||
2759 | </Instance> | ||
2760 | </Message> | ||
2761 | <Message Id="BundleTooNew" Number="355" SourceLineNumbers="no"> | ||
2762 | <Instance> | ||
2763 | Unable to read bundle executable '{0}', because this bundle was created with a newer version of WiX (bundle version '{1}'). You must use a newer version of WiX in order to read this bundle. | ||
2764 | <Parameter Type="System.String" Name="bundleExecutable" /> | ||
2765 | <!-- we use a 64-bit field here because the field is really a 32-bit UInt, | ||
2766 | but UInt gives a non-CLS-compliant warning. | ||
2767 | So 64-bit makes sure we don't drop the last bit --> | ||
2768 | <Parameter Type="System.Int64" Name="bundleVersion" /> | ||
2769 | </Instance> | ||
2770 | </Message> | ||
2771 | <Message Id="WrongFileExtensionForNumberOfInputs" Number="356" SourceLineNumbers="no"> | ||
2772 | <Instance> | ||
2773 | The extension '{0}' on the input specified '{1}' does not match the number of inputs required to handle an input with this extension. Check if you are missing an input or have too many. | ||
2774 | <Parameter Type="System.String" Name="inputExtension" /> | ||
2775 | <Parameter Type="System.String" Name="input" /> | ||
2776 | </Instance> | ||
2777 | </Message> | ||
2778 | <Message Id="MediaTableCollision" Number="357"> | ||
2779 | <Instance> | ||
2780 | Only one of Media and MediaTemplate tables should be authored. | ||
2781 | </Instance> | ||
2782 | </Message> | ||
2783 | <Message Id="InvalidCabinetTemplate" Number="358"> | ||
2784 | <Instance> | ||
2785 | CabinetTemplate attribute's value '{0}' must contain '{{0}}' and should contain no more than 8 characters followed by an optional extension of no more than 3 characters. Any character except for the follow may be used: \ ? | > < : / * " + , ; = [ ] (space). The Windows Installer team has recommended following the 8.3 format for external cabinet files and any other naming scheme is officially unsupported (which means it is not guaranteed to work on all platforms). | ||
2786 | <Parameter Type="System.String" Name="cabinetTemplate" /> | ||
2787 | </Instance> | ||
2788 | </Message> | ||
2789 | <Message Id="MaximumUncompressedMediaSizeTooLarge" Number="359"> | ||
2790 | <Instance> | ||
2791 | '{0}' is too large. Reduce the size of maximum uncompressed media size. | ||
2792 | <Parameter Type="System.Int32" Name="maximumUncompressedMediaSize" /> | ||
2793 | </Instance> | ||
2794 | </Message> | ||
2795 | <Message Id="CatalogVerificationFailed" Number="360" SourceLineNumbers="no"> | ||
2796 | <Instance> | ||
2797 | File '{0}' could not be verified with a catalog file. | ||
2798 | <Parameter Type="System.String" Name="fileName" /> | ||
2799 | </Instance> | ||
2800 | </Message> | ||
2801 | <Message Id="CatalogFileHashFailed" Number="361" SourceLineNumbers="no"> | ||
2802 | <Instance> | ||
2803 | Could not get hash of file '{0}'. Error: {2}. | ||
2804 | <Parameter Type="System.String" Name="fileName" /> | ||
2805 | <Parameter Type="System.Int32" Name="errorCode" /> | ||
2806 | </Instance> | ||
2807 | </Message> | ||
2808 | <Message Id="ReservedNamespaceViolation" Number="362"> | ||
2809 | <Instance> | ||
2810 | The {0}/@{1} attribute's value begins with the reserved prefix '{2}'. Some prefixes are reserved by the Windows Installer and WiX toolset for well-known values. Change your attribute's value to not begin with the same prefix. | ||
2811 | <Parameter Type="System.String" Name="element" /> | ||
2812 | <Parameter Type="System.String" Name="attribute" /> | ||
2813 | <Parameter Type="System.String" Name="prefix" /> | ||
2814 | </Instance> | ||
2815 | </Message> | ||
2816 | <Message Id="PerUserButAllUsersEquals1" Number="363"> | ||
2817 | <Instance> | ||
2818 | The MSI '{0}' is explicitly marked to not elevate so it must be a per-user package but the ALLUSERS Property is set to '1' creating a per-machine package. Remove the Property with Id='ALLUSERS' and use Package/@InstallScope attribute to be explicit instead. | ||
2819 | <Parameter Type="System.String" Name="path" /> | ||
2820 | </Instance> | ||
2821 | </Message> | ||
2822 | <Message Id="UnsupportedAllUsersValue" Number="364"> | ||
2823 | <Instance> | ||
2824 | The MSI '{0}' set the ALLUSERS Property to '{0}' which is not supported. Remove the Property with Id='ALLUSERS' and use Package/@InstallScope attribute instead. | ||
2825 | <Parameter Type="System.String" Name="path" /> | ||
2826 | <Parameter Type="System.String" Name="value" /> | ||
2827 | </Instance> | ||
2828 | </Message> | ||
2829 | <Message Id="DisallowedMsiProperty" Number="365"> | ||
2830 | <Instance> | ||
2831 | The '{0}' MsiProperty is controlled by the bootstrapper and cannot be authored. (Illegal properties are: {1}.) Remove the MsiProperty element. | ||
2832 | <Parameter Type="System.String" Name="property" /> | ||
2833 | <Parameter Type="System.String" Name="illegalValueList" /> | ||
2834 | </Instance> | ||
2835 | </Message> | ||
2836 | <Message Id="MissingOrInvalidModuleInstallerVersion" Number="366"> | ||
2837 | <Instance> | ||
2838 | The merge module '{0}' from file '{1}' is either missing or has an invalid installer version. The value read from the installer version in module's summary information was '{2}'. This should be a numeric value representing a valid installer version such as 200 or 301. | ||
2839 | <Parameter Type="System.String" Name="moduleId" /> | ||
2840 | <Parameter Type="System.String" Name="mergeModuleFile" /> | ||
2841 | <Parameter Type="System.String" Name="productInstallerVersion" /> | ||
2842 | </Instance> | ||
2843 | </Message> | ||
2844 | <Message Id="IllegalGeneratedGuidComponentUnversionedKeypath" Number="367"> | ||
2845 | <Instance> | ||
2846 | The Component/@Guid attribute's value '*' is not valid for this component because it does not meet the criteria for having an automatically generated guid. Components with more than one file cannot use an automatically generated guid unless a versioned file is the keypath and the other files are unversioned. This component's keypath is not versioned. Create multiple components to use automatically generated guids. | ||
2847 | </Instance> | ||
2848 | </Message> | ||
2849 | <Message Id="IllegalGeneratedGuidComponentVersionedNonkeypath" Number="368"> | ||
2850 | <Instance> | ||
2851 | The Component/@Guid attribute's value '*' is not valid for this component because it does not meet the criteria for having an automatically generated guid. Components with more than one file cannot use an automatically generated guid unless a versioned file is the keypath and the other files are unversioned. This component has a non-keypath file that is versioned. Create multiple components to use automatically generated guids. | ||
2852 | </Instance> | ||
2853 | </Message> | ||
2854 | <Message Id="DuplicateComponentGuids" Number="369"> | ||
2855 | <Instance> | ||
2856 | Component/@Id='{0}' has a @Guid value '{1}' that duplicates another component in this package. It is recommended to give each component its own unique GUID. | ||
2857 | <Parameter Type="System.String" Name="componentId" /> | ||
2858 | <Parameter Type="System.String" Name="guid" /> | ||
2859 | </Instance> | ||
2860 | </Message> | ||
2861 | <Message Id="DuplicateProviderDependencyKey" Number="370" SourceLineNumbers="no"> | ||
2862 | <Instance> | ||
2863 | The provider dependency key '{0}' was already imported from the package with Id '{1}'. Please remove the Provides element with the key '{0}' from the package authoring. | ||
2864 | <Parameter Type="System.String" Name="providerKey" /> | ||
2865 | <Parameter Type="System.String" Name="packageId" /> | ||
2866 | </Instance> | ||
2867 | </Message> | ||
2868 | <Message Id="MissingDependencyVersion" Number="371" SourceLineNumbers="no"> | ||
2869 | <Instance> | ||
2870 | The provider dependency version was not authored for the package with Id '{0}'. Please author the Provides/@Version attribute for this package. | ||
2871 | <Parameter Type="System.String" Name="packageId" /> | ||
2872 | </Instance> | ||
2873 | </Message> | ||
2874 | |||
2875 | <Message Id="UnexpectedElementWithAttribute" Number="372"> | ||
2876 | <Instance> | ||
2877 | The {0} element cannot have a child element '{1}' when attribute '{2}' is set. | ||
2878 | <Parameter Type="System.String" Name="elementName" /> | ||
2879 | <Parameter Type="System.String" Name="childElementName" /> | ||
2880 | <Parameter Type="System.String" Name="attribute" /> | ||
2881 | </Instance> | ||
2882 | </Message> | ||
2883 | <Message Id="ExpectedAttributeWithElement" Number="373"> | ||
2884 | <Instance> | ||
2885 | The {0} element must have attribute '{1}' when child element '{2}' is present. | ||
2886 | <Parameter Type="System.String" Name="elementName" /> | ||
2887 | <Parameter Type="System.String" Name="attribute" /> | ||
2888 | <Parameter Type="System.String" Name="childElementName" /> | ||
2889 | </Instance> | ||
2890 | </Message> | ||
2891 | <Message Id="DuplicatedUiLocalization" Number="374"> | ||
2892 | <Instance> | ||
2893 | The localization for control {0} in dialog {1} is duplicated. Only one localization per control is allowed. | ||
2894 | <Parameter Type="System.String" Name="controlName" /> | ||
2895 | <Parameter Type="System.String" Name="dialogName" /> | ||
2896 | </Instance> | ||
2897 | <Instance> | ||
2898 | The localization for dialog {0} is duplicated. Only one localization per dialog is allowed. | ||
2899 | <Parameter Type="System.String" Name="dialogName" /> | ||
2900 | </Instance> | ||
2901 | </Message> | ||
2902 | <Message Id="MaximumCabinetSizeForLargeFileSplittingTooLarge" Number="375"> | ||
2903 | <Instance> | ||
2904 | '{0}' is too large. Reduce the size of maximum cabinet size for large file splitting. The maximum permitted value is '{1}' MB. | ||
2905 | <Parameter Type="System.Int32" Name="maximumCabinetSizeForLargeFileSplitting" /> | ||
2906 | <Parameter Type="System.Int32" Name="maxValueOfMaxCabSizeForLargeFileSplitting" /> | ||
2907 | </Instance> | ||
2908 | </Message> | ||
2909 | <Message Id="SplitCabinetCopyRegistrationFailed" Number="376" SourceLineNumbers="no"> | ||
2910 | <Instance> | ||
2911 | Failed to register the copy command for cabinet '{0}' formed by splitting cabinet '{1}'. | ||
2912 | <Parameter Type="System.String" Name="newCabName" /> | ||
2913 | <Parameter Type="System.String" Name="firstCabName" /> | ||
2914 | </Instance> | ||
2915 | </Message> | ||
2916 | <Message Id="SplitCabinetNameCollision" Number="377" SourceLineNumbers="no"> | ||
2917 | <Instance> | ||
2918 | The cabinet name '{0}' collides with the new cabinet formed by splitting cabinet '{1}', consider renaming cabinet '{0}'. | ||
2919 | <Parameter Type="System.String" Name="newCabName" /> | ||
2920 | <Parameter Type="System.String" Name="firstCabName" /> | ||
2921 | </Instance> | ||
2922 | </Message> | ||
2923 | <Message Id="SplitCabinetInsertionFailed" Number="378" SourceLineNumbers="no"> | ||
2924 | <Instance> | ||
2925 | Could not find the last split cabinet '{2}' in the Media Table. So failed to add new cabinet '{0}' formed by splitting cabinet '{1}' to the installer package. | ||
2926 | <Parameter Type="System.String" Name="newCabName" /> | ||
2927 | <Parameter Type="System.String" Name="firstCabName" /> | ||
2928 | <Parameter Type="System.String" Name="lastCabinetOfThisSequence" /> | ||
2929 | </Instance> | ||
2930 | </Message> | ||
2931 | <Message Id="InvalidPreprocessorFunctionAutoVersion" Number="379"> | ||
2932 | <Instance> | ||
2933 | Invalid AutoVersion template specified. | ||
2934 | </Instance> | ||
2935 | </Message> | ||
2936 | <Message Id="InvalidModuleOrBundleVersion" Number="380"> | ||
2937 | <Instance> | ||
2938 | Invalid {0}/@Version '{1}'. {0} version has a max value of "65535.65535.65535.65535" and must be all numeric. | ||
2939 | <Parameter Type="System.String" Name="moduleOrBundle" /> | ||
2940 | <Parameter Type="System.String" Name="version" /> | ||
2941 | </Instance> | ||
2942 | </Message> | ||
2943 | <Message Id="UnsupportedPlatformForElement" Number="381"> | ||
2944 | <Instance> | ||
2945 | The element {1} does not support platform '{0}'. Consider removing the element or using the preprocessor to conditionally include the element based on the platform. | ||
2946 | <Parameter Type="System.String" Name="platform" /> | ||
2947 | <Parameter Type="System.String" Name="elementName" /> | ||
2948 | </Instance> | ||
2949 | </Message> | ||
2950 | <Message Id="MissingMedia" Number="382"> | ||
2951 | <Instance> | ||
2952 | There is no media defined for disk id '{0}'. You must author either <Media Id='{0}' ...> or <MediaTemplate ...>. | ||
2953 | <Parameter Type="System.Int32" Name="diskId" /> | ||
2954 | </Instance> | ||
2955 | </Message> | ||
2956 | <Message Id="RemotePayloadUnsupported" Number="383"> | ||
2957 | <Instance> | ||
2958 | The RemotePayload element can only be used for ExePackage and MsuPackage payloads. | ||
2959 | </Instance> | ||
2960 | </Message> | ||
2961 | <Message Id="IllegalYesNoAlwaysValue" Number="384"> | ||
2962 | <Instance> | ||
2963 | The {0}/@{1} attribute's value, '{2}', is not a legal yes/no/always value. The only legal values are 'always', 'no' or 'yes'. | ||
2964 | <Parameter Type="System.String" Name="elementName" /> | ||
2965 | <Parameter Type="System.String" Name="attributeName" /> | ||
2966 | <Parameter Type="System.String" Name="value" /> | ||
2967 | </Instance> | ||
2968 | </Message> | ||
2969 | <Message Id="TooDeeplyIncluded" Number="385"> | ||
2970 | <Instance> | ||
2971 | Include files cannot be nested more deeply than {0} times. Make sure included files don't accidentally include themselves. | ||
2972 | <Parameter Type="System.Int32" Name="depth" /> | ||
2973 | </Instance> | ||
2974 | </Message> | ||
2975 | <Message Id="TooManyColumnsInRealTable" Number="386" SourceLineNumbers="no"> | ||
2976 | <Instance> | ||
2977 | The table '{0}' contains {1} columns which is not supported by Windows Installer. Windows Installer supports a maximum of {2} columns. | ||
2978 | <Parameter Type="System.String" Name="tableName" /> | ||
2979 | <Parameter Type="System.Int32" Name="columnCount" /> | ||
2980 | <Parameter Type="System.Int32" Name="supportedColumnCount" /> | ||
2981 | </Instance> | ||
2982 | </Message> | ||
2983 | <Message Id="InlineDirectorySyntaxRequiresPath" Number="387"> | ||
2984 | <Instance> | ||
2985 | The {0}/@{1} attribute's value '{2}' only specifies a directory reference. The inline directory syntax requires that at least one directory be specified in addition to the value. For example, use '{3}:\foo\' to add a 'foo' directory. | ||
2986 | <Parameter Type="System.String" Name="elementName" /> | ||
2987 | <Parameter Type="System.String" Name="attributeName" /> | ||
2988 | <Parameter Type="System.String" Name="value" /> | ||
2989 | <Parameter Type="System.String" Name="identifier" /> | ||
2990 | </Instance> | ||
2991 | </Message> | ||
2992 | <Message Id="InsecureBundleFilename" Number="388" SourceLineNumbers="no"> | ||
2993 | <Instance> | ||
2994 | The file name '{0}' creates an insecure bundle. Windows will load unnecessary compatibility shims into a bundle with that file name. These compatibility shims can be DLL hijacked allowing attackers to compromise your customers' computer. Choose a different bundle file name. | ||
2995 | <Parameter Type="System.String" Name="filename" /> | ||
2996 | </Instance> | ||
2997 | </Message> | ||
2998 | <Message Id="PayloadMustBeRelativeToCache" Number="389"> | ||
2999 | <Instance> | ||
3000 | The {0}/@{1} attribute's value, '{2}', is not a legal path name: Payload names must be relative to their cache directory and cannot contain '..'. | ||
3001 | <Parameter Type="System.String" Name="elementName" /> | ||
3002 | <Parameter Type="System.String" Name="attributeName" /> | ||
3003 | <Parameter Type="System.String" Name="attributeValue" /> | ||
3004 | </Instance> | ||
3005 | </Message> | ||
3006 | <Message Id="MsiTransactionX86BeforeX64" Number="390"> | ||
3007 | <Instance> | ||
3008 | MSI transactions must install all x64 packages before any x86 package. | ||
3009 | </Instance> | ||
3010 | </Message> | ||
3011 | </Class> | ||
3012 | |||
3013 | <Class Name="WixWarnings" ContainerName="WixWarningEventArgs" BaseContainerName="MessageEventArgs" Level="Warning"> | ||
3014 | <Message Id="IdentifierCannotBeModularized" Number="1000"> | ||
3015 | <Instance> | ||
3016 | The {0}/@{1} attribute's value, '{2}', is {3} characters long. It will be too long if modularized. The identifier shouldn't be longer than {4} characters long to allow for modularization (appending a guid for merge modules). | ||
3017 | <Parameter Type="System.String" Name="elementName" /> | ||
3018 | <Parameter Type="System.String" Name="attributeName" /> | ||
3019 | <Parameter Type="System.String" Name="identifier" /> | ||
3020 | <Parameter Type="System.Int32" Name="length" /> | ||
3021 | <Parameter Type="System.Int32" Name="maximumLength" /> | ||
3022 | </Instance> | ||
3023 | </Message> | ||
3024 | <Message Id="EmptyAttributeValue" Number="1001"> | ||
3025 | <Instance> | ||
3026 | The {0}/@{1} attribute's value cannot be an empty string. If you want the value to be null or empty, simply remove the entire attribute. | ||
3027 | <Parameter Type="System.String" Name="elementName" /> | ||
3028 | <Parameter Type="System.String" Name="attributeName" /> | ||
3029 | </Instance> | ||
3030 | </Message> | ||
3031 | <Message Id="UnableToFindFileFromCabOrImage" Number="1002"> | ||
3032 | <Instance> | ||
3033 | Unable to find existing file {0} to place in src location {1}. Will likely cause a linker break. | ||
3034 | <Parameter Type="System.String" Name="existingFileSpec" /> | ||
3035 | <Parameter Type="System.String" Name="srcFileSpec" /> | ||
3036 | </Instance> | ||
3037 | </Message> | ||
3038 | <Message Id="CopyFileFileIdUseless" Number="1003"> | ||
3039 | <Instance>Since the CopyFile/@FileId attribute was specified but none of the following attributes (DestinationName, DestinationDirectory, DestinationProperty) were specified, this authoring will not do anything.</Instance> | ||
3040 | </Message> | ||
3041 | <Message Id="NestedInstall" Number="1004"> | ||
3042 | <Instance> | ||
3043 | The {0}.{1} column's value, '{2}', indicates a nested install. Nested installations are not supported by the WiX team. This action will be left out of the decompiled output. | ||
3044 | <Parameter Type="System.String" Name="tableName" /> | ||
3045 | <Parameter Type="System.String" Name="columnName" /> | ||
3046 | <Parameter Type="System.Object" Name="value" /> | ||
3047 | </Instance> | ||
3048 | </Message> | ||
3049 | <Message Id="OrphanedProgId" Number="1005"> | ||
3050 | <Instance> | ||
3051 | ProgId '{0}' is orphaned. It has no associated component, so it will never install. Every ProgId should have either a parent Class element or child Extension element (at any distance). | ||
3052 | <Parameter Type="System.String" Name="progId" /> | ||
3053 | </Instance> | ||
3054 | </Message> | ||
3055 | <Message Id="PropertyUseless" Number="1006"> | ||
3056 | <Instance> | ||
3057 | Property '{0}' does not contain a Value attribute and is not marked as Admin, Secure, or Hidden. The Property element is being ignored. | ||
3058 | <Parameter Type="System.String" Name="id" /> | ||
3059 | </Instance> | ||
3060 | </Message> | ||
3061 | <Message Id="RemoveFileNameRequired" Number="1007"> | ||
3062 | <Instance>The RemoveFile/@Name attribute will soon become required. In order to match the old functionality of not specifying this attribute, please use the new RemoveFolder element instead.</Instance> | ||
3063 | </Message> | ||
3064 | <Message Id="SuppressAction" Number="1008"> | ||
3065 | <Instance> | ||
3066 | The action '{0}' in the {1} table is being suppressed. | ||
3067 | <Parameter Type="System.String" Name="action" /> | ||
3068 | <Parameter Type="System.String" Name="sequenceName" /> | ||
3069 | </Instance> | ||
3070 | </Message> | ||
3071 | <Message Id="SuppressMergedAction" Number="1009" SourceLineNumbers="no"> | ||
3072 | <Instance> | ||
3073 | The merged action '{0}' in the {1} table is being suppressed. | ||
3074 | <Parameter Type="System.String" Name="action" /> | ||
3075 | <Parameter Type="System.String" Name="sequenceName" /> | ||
3076 | </Instance> | ||
3077 | </Message> | ||
3078 | <Message Id="TargetDirCorrectedDefaultDir" Number="1010" SourceLineNumbers="no"> | ||
3079 | <Instance> | ||
3080 | The Directory with Id 'TARGETDIR' must have the value 'SourceDir' in its 'DefaultDir' column. This has been automatically corrected for you in the decompiled output. | ||
3081 | </Instance> | ||
3082 | </Message> | ||
3083 | <Message Id="AccessDeniedForDeletion" Number="1011"> | ||
3084 | <Instance> | ||
3085 | Access denied; cannot delete '{0}'. | ||
3086 | <Parameter Type="System.String" Name="tempFilesBasePath" /> | ||
3087 | </Instance> | ||
3088 | </Message> | ||
3089 | <Message Id="DirectoryInUse" Number="1012"> | ||
3090 | <Instance> | ||
3091 | The directory '{0}' is in use and cannot be deleted. | ||
3092 | <Parameter Type="System.String" Name="filePath" /> | ||
3093 | </Instance> | ||
3094 | </Message> | ||
3095 | <Message Id="AccessDeniedForSettingAttributes" Number="1013"> | ||
3096 | <Instance> | ||
3097 | Access denied; cannot set attributes on '{0}'. | ||
3098 | <Parameter Type="System.String" Name="filePath" /> | ||
3099 | </Instance> | ||
3100 | </Message> | ||
3101 | <Message Id="UnknownAction" Number="1024"> | ||
3102 | <Instance> | ||
3103 | The {0} table contains an action '{1}' which is not a known custom action, dialog, or standard action. This action will be left out of the decompiled output. | ||
3104 | <Parameter Type="System.String" Name="sequenceTableName" /> | ||
3105 | <Parameter Type="System.String" Name="actionName" /> | ||
3106 | </Instance> | ||
3107 | </Message> | ||
3108 | <Message Id="IdentifierTooLong" Number="1026"> | ||
3109 | <Instance> | ||
3110 | The {0}/@{1} attribute's value, '{2}', is too long for an identifier. Standard identifiers are 72 characters long or less. | ||
3111 | <Parameter Type="System.String" Name="elementName" /> | ||
3112 | <Parameter Type="System.String" Name="attributeName" /> | ||
3113 | <Parameter Type="System.String" Name="value" /> | ||
3114 | </Instance> | ||
3115 | </Message> | ||
3116 | <Message Id="UnknownPermission" Number="1030"> | ||
3117 | <Instance> | ||
3118 | The {0} table contains a row with primary key '{1}' which has an unknown permission at bit {2}. | ||
3119 | <Parameter Type="System.String" Name="tableName" /> | ||
3120 | <Parameter Type="System.String" Name="primaryKey" /> | ||
3121 | <Parameter Type="System.Int32" Name="bitPosition" /> | ||
3122 | </Instance> | ||
3123 | </Message> | ||
3124 | <Message Id="DirectoryRedundantNames" Number="1031"> | ||
3125 | <Instance> | ||
3126 | The {0} element's {1} and {2} values are both '{3}'. This is redundant; the {2} attribute should be removed. | ||
3127 | <Parameter Type="System.String" Name="elementName" /> | ||
3128 | <Parameter Type="System.String" Name="shortNameAttributeName" /> | ||
3129 | <Parameter Type="System.String" Name="longNameAttributeName" /> | ||
3130 | <Parameter Type="System.String" Name="attributeValue" /> | ||
3131 | </Instance> | ||
3132 | <Instance> | ||
3133 | The {0} element's source and destination names are identical. This is redundant; the {1} and {2} attributes should be removed if present. | ||
3134 | <Parameter Type="System.String" Name="elementName" /> | ||
3135 | <Parameter Type="System.String" Name="sourceNameAttributeName" /> | ||
3136 | <Parameter Type="System.String" Name="longSourceAttributeName" /> | ||
3137 | </Instance> | ||
3138 | </Message> | ||
3139 | <Message Id="UnableToResetAcls" Number="1032" SourceLineNumbers="no"> | ||
3140 | <Instance>Unable to reset acls on destination files.</Instance> | ||
3141 | </Message> | ||
3142 | <Message Id="MediaExternalCabinetFilenameIllegal" Number="1033"> | ||
3143 | <Instance> | ||
3144 | The {0}/@{1} attribute's value, '{2}', is not a valid external cabinet name. Legal cabinet names should follow 8.3 format: they should contain no more than 8 characters followed by an optional extension of no more than 3 characters. Any character except for the following may be used: \ ? | > < : / * " + , ; = [ ] (space). The Windows Installer team has recommended following the 8.3 format for external cabinet files and any other naming scheme is officially unsupported (which means it is not guaranteed to work on all platforms). | ||
3145 | <Parameter Type="System.String" Name="elementName" /> | ||
3146 | <Parameter Type="System.String" Name="attributeName" /> | ||
3147 | <Parameter Type="System.String" Name="value" /> | ||
3148 | </Instance> | ||
3149 | </Message> | ||
3150 | <Message Id="DeprecatedPreProcVariable" Number="1034"> | ||
3151 | <Instance> | ||
3152 | The built-in preprocessor variable '{0}' is deprecated. Please correct your authoring to use the new '{1}' preprocessor variable instead. | ||
3153 | <Parameter Type="System.String" Name="oldName" /> | ||
3154 | <Parameter Type="System.String" Name="newName" /> | ||
3155 | </Instance> | ||
3156 | </Message> | ||
3157 | <Message Id="FileSearchFileNameIssue" Number="1043"> | ||
3158 | <Instance> | ||
3159 | The {0} element's {1} and {2} attributes were found. Due to a bug with the Windows Installer, only the Name or LongName attribute should be used. Use the Name attribute for 8.3 compliant file names and the LongName attribute for longer ones. When using only the LongName attribute, ICE03 should be ignored for the Signature table's FileName column. | ||
3160 | <Parameter Type="System.String" Name="elementName" /> | ||
3161 | <Parameter Type="System.String" Name="attributeName1" /> | ||
3162 | <Parameter Type="System.String" Name="attributeName2" /> | ||
3163 | </Instance> | ||
3164 | </Message> | ||
3165 | <Message Id="AmbiguousFileOrDirectoryName" Number="1044"> | ||
3166 | <Instance> | ||
3167 | The {0}/@{1} attribute's value '{2}' is an ambiguous short name because it ends with a '~' character followed by a number. Under some circumstances, this name could resolve to more than one file or directory name and lead to unpredictable results (for example 'MICROS~1' may correspond to 'Microsoft Shared' or 'Microsoft Foo' or literally 'Micros~1'). | ||
3168 | <Parameter Type="System.String" Name="elementName" /> | ||
3169 | <Parameter Type="System.String" Name="attributeName" /> | ||
3170 | <Parameter Type="System.String" Name="value" /> | ||
3171 | </Instance> | ||
3172 | </Message> | ||
3173 | <Message Id="PossiblyIncorrectTypelibVersion" Number="1048"> | ||
3174 | <Instance> | ||
3175 | The Typelib table entry with Id '{0}' could have an incorrect version of '256.0'. InstallShield has a bug relating to the Typelib Version column: it will incorrectly set the value '65536' in to represent version '1.0'. However, this number actually corresponds to version '256.0'. This bug will not affect the typelib version that is registered during installation, however, it will prevent the Windows Installer from correctly identifying whether a typelib is already installed and lead to unnecessary reinstallations of the typelib. | ||
3176 | <Parameter Type="System.String" Name="id" /> | ||
3177 | </Instance> | ||
3178 | </Message> | ||
3179 | <Message Id="ImplicitComponentPrimaryFeature" Number="1049" SourceLineNumbers="no"> | ||
3180 | <Instance> | ||
3181 | The component '{0}' does not have an explicit primary feature parent specified. If the source files are linked in a different order, the primary parent feature may change. To prevent accidental changes, the primary feature parent should be set to 'yes' in one of the ComponentRef/@Primary, ComponentGroupRef/@Primary, or FeatureGroupRef/@Primary locations for this component. | ||
3182 | <Parameter Type="System.String" Name="componentId" /> | ||
3183 | </Instance> | ||
3184 | </Message> | ||
3185 | <Message Id="ActionSequenceCollision" Number="1050"> | ||
3186 | <Instance> | ||
3187 | The {0} table contains actions '{1}' and '{2}' which both have the same sequence number {3}. Please change the sequence number for one of these actions to avoid an ICE warning. | ||
3188 | <Parameter Type="System.String" Name="sequenceTableName" /> | ||
3189 | <Parameter Type="System.String" Name="actionName1" /> | ||
3190 | <Parameter Type="System.String" Name="actionName2" /> | ||
3191 | <Parameter Type="System.Int32" Name="sequenceNumber" /> | ||
3192 | </Instance> | ||
3193 | </Message> | ||
3194 | <Message Id="ActionSequenceCollision2" Number="1051"> | ||
3195 | <Instance>The location of the action related to previous warning.</Instance> | ||
3196 | </Message> | ||
3197 | <Message Id="SuppressAction2" Number="1052"> | ||
3198 | <Instance>The location of the suppressed action related to previous warning.</Instance> | ||
3199 | </Message> | ||
3200 | <Message Id="UnexpectedTableInProduct" Number="1053"> | ||
3201 | <Instance> | ||
3202 | An unexpected row in the '{0}' table was found in this product. Products should not contain the '{0}' table. | ||
3203 | <Parameter Type="System.String" Name="tableName" /> | ||
3204 | </Instance> | ||
3205 | </Message> | ||
3206 | <Message Id="DeprecatedAttribute" Number="1054"> | ||
3207 | <Instance> | ||
3208 | The {0}/@{1} attribute has been deprecated. | ||
3209 | <Parameter Type="System.String" Name="elementName" /> | ||
3210 | <Parameter Type="System.String" Name="attributeName" /> | ||
3211 | </Instance> | ||
3212 | <Instance> | ||
3213 | The {0}/@{1} attribute has been deprecated. Please use the {2} attribute instead. | ||
3214 | <Parameter Type="System.String" Name="elementName" /> | ||
3215 | <Parameter Type="System.String" Name="attributeName" /> | ||
3216 | <Parameter Type="System.String" Name="newAttributeName" /> | ||
3217 | </Instance> | ||
3218 | <Instance> | ||
3219 | The {0}/@{1} attribute has been deprecated. Please use the {2} or {3} attribute instead. | ||
3220 | <Parameter Type="System.String" Name="elementName" /> | ||
3221 | <Parameter Type="System.String" Name="attributeName" /> | ||
3222 | <Parameter Type="System.String" Name="newAttributeName1" /> | ||
3223 | <Parameter Type="System.String" Name="newAttributeName2" /> | ||
3224 | </Instance> | ||
3225 | </Message> | ||
3226 | <Message Id="MergeRescheduledAction" Number="1055"> | ||
3227 | <Instance> | ||
3228 | The {0} table contains an action '{1}' which cannot be merged from the merge module '{2}'. This action is likely colliding with an action in the database that is being created. The colliding action may have been authored in the database or merged in from another merge module. If this is a standard action, it is likely colliding due to a difference in the condition for the action in the database and merge module. If this is a custom action, it should only be declared in the database or one merge module. | ||
3229 | <Parameter Type="System.String" Name="tableName" /> | ||
3230 | <Parameter Type="System.String" Name="actionName" /> | ||
3231 | <Parameter Type="System.String" Name="mergeModuleFile" /> | ||
3232 | </Instance> | ||
3233 | </Message> | ||
3234 | <Message Id="MergeTableFailed" Number="1056"> | ||
3235 | <Instance> | ||
3236 | The {0} table contains a row with primary key(s) '{1}' which cannot be merged from the merge module '{2}'. This is likely due to collision of rows with the same primary key(s) (but other different values in other columns) between the database and the merge module. | ||
3237 | <Parameter Type="System.String" Name="tableName" /> | ||
3238 | <Parameter Type="System.String" Name="primaryKeys" /> | ||
3239 | <Parameter Type="System.String" Name="mergeModuleFile" /> | ||
3240 | </Instance> | ||
3241 | </Message> | ||
3242 | <Message Id="DecompiledStandardActionRelativelyScheduledInModule" Number="1057"> | ||
3243 | <Instance> | ||
3244 | The {0} table contains a standard action '{1}' that does not have a sequence number specified. A value in the Sequence column is required for standard actions in a merge module. Remove the action from the decompiled authoring to have WiX automatically sequence it. | ||
3245 | <Parameter Type="System.String" Name="sequenceTableName" /> | ||
3246 | <Parameter Type="System.String" Name="actionName" /> | ||
3247 | </Instance> | ||
3248 | </Message> | ||
3249 | <Message Id="IllegalActionInSequence" Number="1058"> | ||
3250 | <Instance> | ||
3251 | The {0} table contains an action '{1}' which is not allowed in this table. If this is a standard action then it is not valid for this table, if it is a custom action or dialog then this table does not accept actions of that type. This action will be left out of the decompiled output. | ||
3252 | <Parameter Type="System.String" Name="sequenceTableName" /> | ||
3253 | <Parameter Type="System.String" Name="actionName" /> | ||
3254 | </Instance> | ||
3255 | </Message> | ||
3256 | <Message Id="ExpectedForeignRow" Number="1059"> | ||
3257 | <Instance> | ||
3258 | The {0} table contains a row with primary key(s) '{1}' whose {2} column contains a value, '{3}', which specifies a foreign key relationship with the {4} table. However, since the expected foreign row specified by this value does not exist, this will result in some information being left out of the decompiled output. | ||
3259 | <Parameter Type="System.String" Name="tableName" /> | ||
3260 | <Parameter Type="System.String" Name="primaryKey" /> | ||
3261 | <Parameter Type="System.String" Name="columnName" /> | ||
3262 | <Parameter Type="System.String" Name="columnValue" /> | ||
3263 | <Parameter Type="System.String" Name="foreignTableName" /> | ||
3264 | </Instance> | ||
3265 | <Instance> | ||
3266 | The {0} table contains a row with primary key(s) '{1}' whose {2} and {4} columns contain the values, '{3}' and '{5}', which specify a foreign key relationship with the {6} table. However, since the expected foreign row specified by this value does not exist, this will result in some information being left out of the decompiled output. | ||
3267 | <Parameter Type="System.String" Name="tableName" /> | ||
3268 | <Parameter Type="System.String" Name="primaryKey" /> | ||
3269 | <Parameter Type="System.String" Name="columnName1" /> | ||
3270 | <Parameter Type="System.String" Name="columnValue1" /> | ||
3271 | <Parameter Type="System.String" Name="columnName2" /> | ||
3272 | <Parameter Type="System.String" Name="columnValue2" /> | ||
3273 | <Parameter Type="System.String" Name="foreignTableName" /> | ||
3274 | </Instance> | ||
3275 | </Message> | ||
3276 | <Message Id="DecompilingAsCustomTable" Number="1060"> | ||
3277 | <Instance> | ||
3278 | The {0} table is being decompiled as a custom table. | ||
3279 | <Parameter Type="System.String" Name="tableName" /> | ||
3280 | </Instance> | ||
3281 | </Message> | ||
3282 | <Message Id="IllegalPatchCreationTable" Number="1061"> | ||
3283 | <Instance> | ||
3284 | The {0} table is not legal in a patch creation file. The information in this table will be left out of the decompiled output. | ||
3285 | <Parameter Type="System.String" Name="tableName" /> | ||
3286 | </Instance> | ||
3287 | </Message> | ||
3288 | <Message Id="SkippingMergeModuleTable" Number="1062"> | ||
3289 | <Instance> | ||
3290 | The {0} table can only be represented in WiX for merge modules. The information in this table will be left out of the decompiled output. | ||
3291 | <Parameter Type="System.String" Name="tableName" /> | ||
3292 | </Instance> | ||
3293 | </Message> | ||
3294 | <Message Id="SkippingPatchCreationTable" Number="1063"> | ||
3295 | <Instance> | ||
3296 | The {0} table can only be represented in WiX for patch creation files. The information in this table will be left out of the decompiled output. | ||
3297 | <Parameter Type="System.String" Name="tableName" /> | ||
3298 | </Instance> | ||
3299 | </Message> | ||
3300 | <Message Id="UnrepresentableColumnValue" Number="1064"> | ||
3301 | <Instance> | ||
3302 | The {0}.{1} column's value, '{2}', cannot currently be represented in the WiX schema. | ||
3303 | <Parameter Type="System.String" Name="tableName" /> | ||
3304 | <Parameter Type="System.String" Name="columnName" /> | ||
3305 | <Parameter Type="System.Object" Name="value" /> | ||
3306 | </Instance> | ||
3307 | </Message> | ||
3308 | <Message Id="DeprecatedTable" Number="1065" SourceLineNumbers="no"> | ||
3309 | <Instance> | ||
3310 | The {0} table is not supported by the WiX toolset because it has been deprecated by the Windows Installer team. Any information in this table will be left out of the decompiled output. | ||
3311 | <Parameter Type="System.String" Name="tableName" /> | ||
3312 | </Instance> | ||
3313 | </Message> | ||
3314 | <Message Id="PatchTable" Number="1066"> | ||
3315 | <Instance> | ||
3316 | The {0} table is added to the install package by a transform from a patch package (.msp) and not authored directly into an install package (.msi). The information in this table will be left out of the decompiled output. | ||
3317 | <Parameter Type="System.String" Name="tableName" /> | ||
3318 | </Instance> | ||
3319 | </Message> | ||
3320 | <Message Id="IllegalColumnValue" Number="1067"> | ||
3321 | <Instance> | ||
3322 | The {0}.{1} column's value, '{2}', is not a recognized legal value. This information will be left out of the decompiled output. | ||
3323 | <Parameter Type="System.String" Name="tableName" /> | ||
3324 | <Parameter Type="System.String" Name="columnName" /> | ||
3325 | <Parameter Type="System.Object" Name="value" /> | ||
3326 | </Instance> | ||
3327 | </Message> | ||
3328 | <Message Id="DeprecatedLongNameAttribute" Number="1069"> | ||
3329 | <Instance> | ||
3330 | The {0}/@{1} attribute has been deprecated. Since WiX now has the ability to generate short file/directory names, the desired name should be specified in the {2} attribute instead. If the name specified in the {2} attribute is a short name, then WiX will not generate a short name. If the name specified in the {2} attribute is a long name and you want to manually specify the short name, please set the short name value in the {3} attribute. | ||
3331 | <Parameter Type="System.String" Name="elementName" /> | ||
3332 | <Parameter Type="System.String" Name="longNameAttributeName" /> | ||
3333 | <Parameter Type="System.String" Name="nameAttributeName" /> | ||
3334 | <Parameter Type="System.String" Name="shortNameAttributeName" /> | ||
3335 | </Instance> | ||
3336 | </Message> | ||
3337 | <Message Id="GeneratedShortFileNameConflict" Number="1070"> | ||
3338 | <Instance> | ||
3339 | The short file name '{0}' was generated for multiple files that may be installed to the same directory. This could be due to conflicting long file names specified by the File/@Name attribute. If that is the case, please resolve the conflict in those attributes. Otherwise, please manually set the File/@ShortName attribute on the conflicting row to fix the collision. If one of the colliding files was added via a patch, that short file name should be specified manually to avoid disturbing the original short file name. | ||
3340 | <Parameter Type="System.String" Name="shortFileName" /> | ||
3341 | </Instance> | ||
3342 | </Message> | ||
3343 | <Message Id="GeneratedShortFileNameConflict2" Number="1071"> | ||
3344 | <Instance> | ||
3345 | The location of a conflicting generated short file name related to the previous warning. | ||
3346 | </Instance> | ||
3347 | </Message> | ||
3348 | <Message Id="DangerousTableInMergeModule" Number="1072"> | ||
3349 | <Instance> | ||
3350 | Merge modules should not contain the '{0}' table because all merge conflicts cannot avoided. However, this warning can be suppressed if all of the consumers of the Merge Module agree to not duplicate identifiers in the '{0}' table. | ||
3351 | <Parameter Type="System.String" Name="tableName" /> | ||
3352 | </Instance> | ||
3353 | </Message> | ||
3354 | <Message Id="DeprecatedLocalizationVariablePrefix" Number="1073"> | ||
3355 | <Instance> | ||
3356 | The localization variable $(loc.{0}) uses a deprecated prefix '$'. Please use the '!' prefix instead. Since the prefix '$' is also used by the preprocessor, it has been deprecated to avoid namespace collisions. | ||
3357 | <Parameter Type="System.String" Name="variableId" /> | ||
3358 | </Instance> | ||
3359 | </Message> | ||
3360 | <Message Id="PlaceholderValue" Number="1074"> | ||
3361 | <Instance> | ||
3362 | The {0}/@{1} attribute's value, '{2}', is a placeholder value used in example files. Please replace this placeholder with the appropriate value. | ||
3363 | <Parameter Type="System.String" Name="elementName" /> | ||
3364 | <Parameter Type="System.String" Name="attributeName" /> | ||
3365 | <Parameter Type="System.String" Name="value" /> | ||
3366 | </Instance> | ||
3367 | </Message> | ||
3368 | <Message Id="MissingUpgradeCode" Number="1075"> | ||
3369 | <Instance>The Product/@UpgradeCode attribute was not found; it is strongly recommended to ensure that this product can be upgraded.</Instance> | ||
3370 | </Message> | ||
3371 | <Message Id="ValidationWarning" Number="1076"> | ||
3372 | <Instance> | ||
3373 | {0}: {1} | ||
3374 | <Parameter Type="System.String" Name="ice" /> | ||
3375 | <Parameter Type="System.String" Name="message" /> | ||
3376 | </Instance> | ||
3377 | </Message> | ||
3378 | <Message Id="PropertyValueContainsPropertyReference" Number="1077"> | ||
3379 | <Instance> | ||
3380 | The '{0}' Property contains '[{1}]' in its value which is an illegal reference to another property. If this value is a string literal, not a property reference, please ignore this warning. To set a property with the value of another property, use a CustomAction with Property and Value attributes. | ||
3381 | <Parameter Type="System.String" Name="propertyId" /> | ||
3382 | <Parameter Type="System.String" Name="otherProperty" /> | ||
3383 | </Instance> | ||
3384 | </Message> | ||
3385 | <Message Id="DeprecatedUpgradeProperty" Number="1078"> | ||
3386 | <Instance>Specifying a Property element as a child of an Upgrade element has been deprecated. Please specify this Property element as a child of a different element such as Product or Fragment.</Instance> | ||
3387 | </Message> | ||
3388 | <Message Id="EmptyCabinet" Number="1079"> | ||
3389 | <Instance> | ||
3390 | The cabinet '{0}' does not contain any files. If this installation contains no files, this warning can likely be safely ignored. Otherwise, please add files to the cabinet or remove it. | ||
3391 | <Parameter Type="System.String" Name="cabinetName" /> | ||
3392 | </Instance> | ||
3393 | <Instance> | ||
3394 | The cabinet '{0}' does not contain any files. If this patch contains no files, this warning can likely be safely ignored. Otherwise, try passing -p to torch.exe when first building the transforms, or add a ComponentRef to your PatchFamily authoring to pull changed files into the cabinet. | ||
3395 | <Parameter Type="System.String" Name="cabinetName" /> | ||
3396 | <Parameter Type="System.Boolean" Name="isPatch" /> | ||
3397 | </Instance> | ||
3398 | </Message> | ||
3399 | <Message Id="DeprecatedRegistryElement" Number="1080"> | ||
3400 | <Instance>The Registry element has been deprecated. Please use one of the new elements which replaces its functionality: RegistryKey for creating registry keys, RegistryValue for writing registry values, RemoveRegistryKey for removing registry keys, and RemoveRegistryValue for removing registry values.</Instance> | ||
3401 | </Message> | ||
3402 | <Message Id="IllegalRegistryKeyPath" Number="1081"> | ||
3403 | <Instance> | ||
3404 | Component '{0}' specifies an illegal registry keypath of '{1}'. Since this entry actually represents a registry key, not a registry value, it cannot be the keypath. | ||
3405 | <Parameter Type="System.String" Name="componentName" /> | ||
3406 | <Parameter Type="System.String" Name="registryId" /> | ||
3407 | </Instance> | ||
3408 | </Message> | ||
3409 | <Message Id="DeprecatedPatchSequenceTargetAttribute" Number="1082"> | ||
3410 | <Instance> | ||
3411 | The {0}/@{1} attribute has been deprecated in favor of the more strongly-typed ProductCode or TargetImage attributes. Please use the ProductCode attribute for indicating the ProductCode of a patch family directly, or the TargetImage attribute to specify the TargetImage which in turn will retrieve the ProductCode of the patch family. | ||
3412 | <Parameter Type="System.String" Name="elementName" /> | ||
3413 | <Parameter Type="System.String" Name="attributeName" /> | ||
3414 | </Instance> | ||
3415 | </Message> | ||
3416 | <Message Id="ProductIdAuthored" Number="1083"> | ||
3417 | <Instance> | ||
3418 | The 'ProductID' property should not be directly authored because it will prevent the ValidateProductID standard action from performing any validation during the installation. This property will be set by the ValidateProductID standard action or control event. | ||
3419 | </Instance> | ||
3420 | </Message> | ||
3421 | <Message Id="ImplicitMergeModulePrimaryFeature" Number="1084" SourceLineNumbers="no"> | ||
3422 | <Instance> | ||
3423 | The merge module '{0}' does not have an explicit primary feature parent specified. If the source files are linked in a different order, the primary parent feature may change. To prevent accidental changes, the primary feature parent should be set to 'yes' in one of the MergeRef/@Primary or FeatureGroupRef/@Primary locations for this component. | ||
3424 | <Parameter Type="System.String" Name="componentId" /> | ||
3425 | </Instance> | ||
3426 | </Message> | ||
3427 | <Message Id="DeprecatedIgnoreModularizationElement" Number="1085"> | ||
3428 | <Instance> | ||
3429 | The IgnoreModularization element has been deprecated. Use the Binary/@SuppressModularization, CustomAction/@SuppressModularization, or Property/@SuppressModularization attribute instead. | ||
3430 | </Instance> | ||
3431 | </Message> | ||
3432 | <Message Id="PropertyModularizationSuppressed" Number="1086"> | ||
3433 | <Instance> | ||
3434 | The Property/@SuppressModularization attribute has been set to 'yes'. Using this functionality is strongly discouraged; it should only be necessary as a workaround of last resort in rare scenarios. | ||
3435 | </Instance> | ||
3436 | </Message> | ||
3437 | <Message Id="DeprecatedPackageCompressedAttribute" Number="1087"> | ||
3438 | <Instance> | ||
3439 | The Package/@Compressed attribute is deprecated under the Module element because merge modules must always be compressed. | ||
3440 | </Instance> | ||
3441 | </Message> | ||
3442 | <Message Id="DeprecatedModuleGuidAttribute" Number="1088"> | ||
3443 | <Instance> | ||
3444 | The Module/@Guid attribute is deprecated merge modules use their package code as the modularization guid. Use the Package/@Id attribute instead. | ||
3445 | </Instance> | ||
3446 | </Message> | ||
3447 | <Message Id="DeprecatedQuestionMarksGuid" Number="1090"> | ||
3448 | <Instance> | ||
3449 | The {0}/@{1} attribute's value '????????-????-????-????-????????????' has been deprecated. Use '*' instead. | ||
3450 | <Parameter Type="System.String" Name="elementName" /> | ||
3451 | <Parameter Type="System.String" Name="attributeName" /> | ||
3452 | </Instance> | ||
3453 | </Message> | ||
3454 | <Message Id="PackageCodeSet" Number="1091"> | ||
3455 | <Instance> | ||
3456 | The Package/@Id attribute has been set. Setting this attribute will allow nonidentical .msi files to have the same package code. This may be a problem because the package code is the primary identifier used by the installer to search for and validate the correct package for a given installation. If a package is changed without changing the package code, the installer may not use the newer package if both are still accessible to the installer. Please remove the Id attribute in order to automatically generate a new package code for each new .msi file. | ||
3457 | </Instance> | ||
3458 | </Message> | ||
3459 | <Message Id="InvalidModuleOrBundleVersion" Number="1093"> | ||
3460 | <Instance> | ||
3461 | Invalid {0}/@Version '{1}'. {0} version has a max value of "65535.65535.65535.65535" and must be all numeric. | ||
3462 | <Parameter Type="System.String" Name="moduleOrBundle" /> | ||
3463 | <Parameter Type="System.String" Name="version" /> | ||
3464 | </Instance> | ||
3465 | </Message> | ||
3466 | <Message Id="InvalidRemoveFile" Number="1095"> | ||
3467 | <Instance> | ||
3468 | File '{0}' was removed from component '{1}'. Removing a file from a component will not result in the file being removed by a patch. You should author a RemoveFile element in your component to remove the file from the installation if you want the file to be removed. | ||
3469 | <Parameter Type="System.String" Name="file" /> | ||
3470 | <Parameter Type="System.String" Name="component" /> | ||
3471 | </Instance> | ||
3472 | </Message> | ||
3473 | <Message Id="PreprocessorWarning" Number="1096"> | ||
3474 | <Instance> | ||
3475 | {0} | ||
3476 | <Parameter Type="System.String" Name="message" /> | ||
3477 | </Instance> | ||
3478 | </Message> | ||
3479 | <Message Id="UpdateOfNonKeyPathFile" Number="1097" SourceLineNumbers="no"> | ||
3480 | <Instance> | ||
3481 | File '{0}' in Component '{1}' was changed, but the KeyPath file '{2}' was not. This file will not be patched on the target system if the REINSTALLMODE does not contain 'A'. The KeyPath file should also be changed and included in your patch. | ||
3482 | <Parameter Type="System.String" Name="nonKeyPathFileId" /> | ||
3483 | <Parameter Type="System.String" Name="componentId" /> | ||
3484 | <Parameter Type="System.String" Name="keyPathFileId" /> | ||
3485 | </Instance> | ||
3486 | </Message> | ||
3487 | <Message Id="UnsupportedCommandLineArgument" Number="1098" SourceLineNumbers="no"> | ||
3488 | <Instance> | ||
3489 | '{0}' is not a valid command line argument. | ||
3490 | <Parameter Type="System.String" Name="arg" /> | ||
3491 | </Instance> | ||
3492 | </Message> | ||
3493 | <Message Id="MajorUpgradePatchNotRecommended" Number="1099" SourceLineNumbers="no"> | ||
3494 | <Instance> | ||
3495 | Changing the ProductCode in a patch is not recommended because the patch cannot be uninstalled nor can it be sequenced along with other patches for the target product. See http://msdn2.microsoft.com/library/aa367571.aspx for more information. | ||
3496 | </Instance> | ||
3497 | </Message> | ||
3498 | <Message Id="RetainRangeMismatch" Number="1100"> | ||
3499 | <Instance> | ||
3500 | Mismatch in RetainRangeCounts for the file '{0}' - ignoring the retain ranges. | ||
3501 | <Parameter Type="System.String" Name="fileId"/> | ||
3502 | </Instance> | ||
3503 | </Message> | ||
3504 | <Message Id="DefaultLanguageUsedForVersionedFile" Number="1101"> | ||
3505 | <Instance> | ||
3506 | The DefaultLanguage '{0}' was used for file '{1}' which has no language. Specifying a language that is different from the actual file may result in unexpected versioning behavior during a repair or while patching. Either specify a value for DefaultLanguage or put the language in the version information resource to eliminate this warning. | ||
3507 | <Parameter Type="System.String" Name="language"/> | ||
3508 | <Parameter Type="System.String" Name="fileId"/> | ||
3509 | </Instance> | ||
3510 | </Message> | ||
3511 | <Message Id="DefaultLanguageUsedForUnversionedFile" Number="1102"> | ||
3512 | <Instance> | ||
3513 | The DefaultLanguage '{0}' was used for file '{1}' which has no language or version. For unversioned files, specifying a value for DefaultLanguage is not neccessary and it will not be used when determining file versions. Remove the DefaultLanguage attribute to eliminate this warning. | ||
3514 | <Parameter Type="System.String" Name="language"/> | ||
3515 | <Parameter Type="System.String" Name="fileId"/> | ||
3516 | </Instance> | ||
3517 | </Message> | ||
3518 | <Message Id="DefaultVersionUsedForUnversionedFile" Number="1103"> | ||
3519 | <Instance> | ||
3520 | The DefaultVersion '{0}' was used for file '{1}' which has no version. No entry for this file will be placed in the MsiFileHash table. For unversioned files, specifying a version that is different from the actual file may result in unexpected versioning behavior during a repair or while patching. Version the resource to eliminate this warning. | ||
3521 | <Parameter Type="System.String" Name="version"/> | ||
3522 | <Parameter Type="System.String" Name="fileId"/> | ||
3523 | </Instance> | ||
3524 | </Message> | ||
3525 | <Message Id="InvalidHigherInstallerVersionInModule" Number="1104"> | ||
3526 | <Instance> | ||
3527 | Merge module '{0}' has an installer version of {1} which is greater than the product's installer version of {2}. Merging a module with a higher installer version than the product it is being merged into can result in invalid values in the resulting msi. You must set the Package/@InstallerVersion attribute to {1} or greater to merge this merge module into your product. | ||
3528 | <Parameter Type="System.String" Name="moduleId" /> | ||
3529 | <Parameter Type="System.Int32" Name="moduleInstallerVersion" /> | ||
3530 | <Parameter Type="System.Int32" Name="productInstallerVersion" /> | ||
3531 | </Instance> | ||
3532 | </Message> | ||
3533 | <Message Id="ValidationFailedDueToSystemPolicy" Number="1105" SourceLineNumbers="no"> | ||
3534 | <Instance> | ||
3535 | Validation could not run due to system policy. To eliminate this warning, run the process as admin or suppress ICE validation. | ||
3536 | </Instance> | ||
3537 | </Message> | ||
3538 | <Message Id="ColumnsIncompatibleWithInstallerVersion" Number="1106"> | ||
3539 | <Instance> | ||
3540 | Table '{0}' uses columns that require a version of Windows Installer greater than specified in your package ('{1}'). | ||
3541 | <Parameter Type="System.String" Name="tableName" /> | ||
3542 | <Parameter Type="System.Int32" Name="productInstallerVersion" /> | ||
3543 | </Instance> | ||
3544 | </Message> | ||
3545 | <Message Id="TableIncompatibleWithInstallerVersion" Number="1107"> | ||
3546 | <Instance> | ||
3547 | Using table '{0}' requires a version of Windows Installer greater than specified in your package ('{1}'). | ||
3548 | <Parameter Type="System.String" Name="tableName" /> | ||
3549 | <Parameter Type="System.Int32" Name="productInstallerVersion" /> | ||
3550 | </Instance> | ||
3551 | </Message> | ||
3552 | <Message Id="DeprecatedCommandLineSwitch" Number="1108" SourceLineNumbers="no"> | ||
3553 | <Instance> | ||
3554 | The command line switch '{0}' is deprecated. | ||
3555 | <Parameter Type="System.String" Name="oldSwitch" /> | ||
3556 | </Instance> | ||
3557 | <Instance> | ||
3558 | The command line switch '{0}' is deprecated. Please use '{1}' instead. | ||
3559 | <Parameter Type="System.String" Name="oldSwitch" /> | ||
3560 | <Parameter Type="System.String" Name="newSwitch" /> | ||
3561 | </Instance> | ||
3562 | </Message> | ||
3563 | <Message Id="UnexpectedEntrySection" Number="1109"> | ||
3564 | <Instance> | ||
3565 | Found mismatched entry point <{0}>. Expected <{1}> for specified output package type {2}. | ||
3566 | <Parameter Type="System.String" Name="sectionType" /> | ||
3567 | <Parameter Type="System.String" Name="expectedType" /> | ||
3568 | <Parameter Type="System.String" Name="outputExtension" /> | ||
3569 | </Instance> | ||
3570 | </Message> | ||
3571 | <Message Id="NewComponentAddedToExistingFeature" Number="1110"> | ||
3572 | <Instance> | ||
3573 | Component '{0}' was added to feature '{1}' in the transform '{2}'. If you cannot guarantee that this feature will always be installed, you should consider adding new components to new top-level features to prevent prompts for source when installing this patch. | ||
3574 | <Parameter Type="System.String" Name="component" /> | ||
3575 | <Parameter Type="System.String" Name="feature" /> | ||
3576 | <Parameter Type="System.String" Name="transformPath" /> | ||
3577 | </Instance> | ||
3578 | </Message> | ||
3579 | <Message Id="DeprecatedAttributeValue" Number="1111"> | ||
3580 | <Instance> | ||
3581 | The value "{0}" for the {1}/@{2} attribute has been deprecated. Please use "{3}" instead. | ||
3582 | <Parameter Type="System.String" Name="attributeValue" /> | ||
3583 | <Parameter Type="System.String" Name="elementName" /> | ||
3584 | <Parameter Type="System.String" Name="attributeName" /> | ||
3585 | <Parameter Type="System.String" Name="newAttributeValue" /> | ||
3586 | </Instance> | ||
3587 | </Message> | ||
3588 | <Message Id="InsufficientPermissionHarvestTypeLib" Number="1112" SourceLineNumbers="no"> | ||
3589 | <Instance> | ||
3590 | Not enough permissions to harvest type library. On Windows Vista, you must either run Heat elevated, or install Windows Vista SP1 (or higher). | ||
3591 | </Instance> | ||
3592 | </Message> | ||
3593 | <Message Id="UnclearShortcut" Number="1113"> | ||
3594 | <Instance> | ||
3595 | Because it is an advertised shortcut, the target of shortcut '{0}' will be the keypath of component '{2}' rather than parent file '{1}'. To eliminate this warning, you can (1) make the Shortcut element a child of the File element that is the keypath of component '{2}', (2) make file '{1}' the keypath of component '{2}', or (3) remove the @Advertise attribute so the shortcut is a non-advertised shortcut. | ||
3596 | <Parameter Type="System.String" Name="shortcutId" /> | ||
3597 | <Parameter Type="System.String" Name="fileId" /> | ||
3598 | <Parameter Type="System.String" Name="componentId" /> | ||
3599 | </Instance> | ||
3600 | </Message> | ||
3601 | <Message Id="TooManyProgIds" Number="1114"> | ||
3602 | <Instance> | ||
3603 | Class '{0}' tried to use ProgId '{1}' which has already been associated with class '{2}'. This information will be left out of the decompiled output. | ||
3604 | <Parameter Type="System.String" Name="clsId" /> | ||
3605 | <Parameter Type="System.String" Name="progId" /> | ||
3606 | <Parameter Type="System.String" Name="otherClsId" /> | ||
3607 | </Instance> | ||
3608 | </Message> | ||
3609 | <Message Id="BadColumnDataIgnored" Number="1115"> | ||
3610 | <Instance> | ||
3611 | The value '{0}' in table '{1}', column '{2}' is invalid according to the column's validation information. The decompiled output includes a best-effort representation of this value. | ||
3612 | <Parameter Type="System.String" Name="value" /> | ||
3613 | <Parameter Type="System.String" Name="tableName" /> | ||
3614 | <Parameter Type="System.String" Name="columnName" /> | ||
3615 | </Instance> | ||
3616 | </Message> | ||
3617 | <Message Id="NullMsiAssemblyNameValue" Number="1116"> | ||
3618 | <Instance> | ||
3619 | The assembly in component '{0}' has a null or empty {1} assembly name value. | ||
3620 | <Parameter Type="System.String" Name="componentName" /> | ||
3621 | <Parameter Type="System.String" Name="name" /> | ||
3622 | </Instance> | ||
3623 | </Message> | ||
3624 | <Message Id="InvalidAttributeCombination" Number="1117"> | ||
3625 | <Instance> | ||
3626 | It is invalid to combine attributes {0} and {1}. The decompiled output will set attribute {2} to {3}. | ||
3627 | <Parameter Type="System.String" Name="attrib1" /> | ||
3628 | <Parameter Type="System.String" Name="attrib2" /> | ||
3629 | <Parameter Type="System.String" Name="name" /> | ||
3630 | <Parameter Type="System.String" Name="value" /> | ||
3631 | </Instance> | ||
3632 | </Message> | ||
3633 | <Message Id="VariableDeclarationCollision" Number="1118"> | ||
3634 | <Instance> | ||
3635 | The variable '{0}' with value '{1}' was previously declared with value '{2}'. | ||
3636 | <Parameter Type="System.String" Name="variableName" /> | ||
3637 | <Parameter Type="System.String" Name="variableValue" /> | ||
3638 | <Parameter Type="System.String" Name="variableCollidingValue" /> | ||
3639 | </Instance> | ||
3640 | </Message> | ||
3641 | <Message Id="DuplicatePrimaryKey" Number="1119"> | ||
3642 | <Instance> | ||
3643 | The primary key '{0}' is duplicated in table '{1}' and will be ignored. Please remove one of the entries or rename a part of the primary key to avoid the collision. | ||
3644 | <Parameter Type="System.String" Name="primaryKey" /> | ||
3645 | <Parameter Type="System.String" Name="tableName" /> | ||
3646 | </Instance> | ||
3647 | </Message> | ||
3648 | <Message Id="RequiresMsi200for64bitPackage" Number="1121"> | ||
3649 | <Instance> | ||
3650 | Package/@InstallerVersion must be 200 or greater for a 64-bit package. The value will be changed to 200. Please specify a value of 200 or greater in order to eliminate this warning. | ||
3651 | </Instance> | ||
3652 | </Message> | ||
3653 | <Message Id="ExternalCabsAreNotSigned" Number="1122" SourceLineNumbers="no"> | ||
3654 | <Instance> | ||
3655 | The installer database '{0}' has external cabs, but at least one of them is not signed. Please ensure that all external cabs are signed, if you mean to sign them. If you don't mean to sign them, there is no need to run the insignia tool as part of your build. | ||
3656 | <Parameter Type="System.String" Name="databaseFile" /> | ||
3657 | </Instance> | ||
3658 | </Message> | ||
3659 | <Message Id="FailedToDeleteTempDir" Number="1123" SourceLineNumbers="no"> | ||
3660 | <Instance> | ||
3661 | Failed to delete temporary directory: {0} | ||
3662 | <Parameter Type="System.String" Name="directory" /> | ||
3663 | </Instance> | ||
3664 | </Message> | ||
3665 | <Message Id="StandardDirectoryConflictInMergeModule" Number="1124"> | ||
3666 | <Instance> | ||
3667 | The Directory '{0}' starts with the same Id as the standard folder in Windows Installer '{1}'. A directory Id that begins with the same Id as a standard folder that is in an MSM may encounter a conflict when merging the MSM into an MSI. This may result in the contents of this merge module being installed to an unexpected location. To eliminate this warning, change your directory Id to not start with the same Id as any standard folders. | ||
3668 | <Parameter Type="System.String" Name="directory" /> | ||
3669 | <Parameter Type="System.String" Name="standardDirectory" /> | ||
3670 | </Instance> | ||
3671 | </Message> | ||
3672 | <Message Id="PreprocessorUnknownPragma" Number="1125"> | ||
3673 | <Instance> | ||
3674 | The pragma '{0}' is unknown. Please ensure you have referenced the extension that defines this pragma. | ||
3675 | <Parameter Type="System.String" Name="pragmaName" /> | ||
3676 | </Instance> | ||
3677 | </Message> | ||
3678 | <Message Id="DeprecatedComponentGroupId" Number="1126"> | ||
3679 | <Instance> | ||
3680 | The {0}/@Id attribute contains invalid characters for an identifier. Being able to use invalid identifier characters for a {0} identifier has been deprecated. | ||
3681 | <Parameter Type="System.String" Name="elementName" /> | ||
3682 | </Instance> | ||
3683 | </Message> | ||
3684 | <Message Id="UxPayloadsOnlySupportEmbedding" Number="1127"> | ||
3685 | <Instance> | ||
3686 | A UX Payload ('{0}') was marked for something other than embedded packaging, possibly because it included a @DownloadUrl attribute. At present, UX Payloads must be embedded in the Bundle, so the requested packaging is being ignored. | ||
3687 | <Parameter Type="System.String" Name="sourceFile" /> | ||
3688 | </Instance> | ||
3689 | </Message> | ||
3690 | <Message Id="DiscardedRollbackBoundary" Number="1129"> | ||
3691 | <Instance> | ||
3692 | The RollbackBoundary '{0}' was discarded because it was not followed by a package. Without a package the rollback boundary doesn't do anything. Verify that the RollbackBoundary element is not followed by another RollbackBoundary and that the element is not at the end of the chain. | ||
3693 | <Parameter Type="System.String" Name="rollbackBoundaryId" /> | ||
3694 | </Instance> | ||
3695 | </Message> | ||
3696 | <Message Id="DeprecatedElement" Number="1130"> | ||
3697 | <Instance> | ||
3698 | The {0} element has been deprecated. | ||
3699 | <Parameter Type="System.String" Name="elementName" /> | ||
3700 | </Instance> | ||
3701 | <Instance> | ||
3702 | The {0} element has been deprecated. Please use the {1} element instead. | ||
3703 | <Parameter Type="System.String" Name="elementName" /> | ||
3704 | <Parameter Type="System.String" Name="newElementName" /> | ||
3705 | </Instance> | ||
3706 | <Instance> | ||
3707 | The {0} element has been deprecated. Please use the {1} or {2} element instead. | ||
3708 | <Parameter Type="System.String" Name="elementName" /> | ||
3709 | <Parameter Type="System.String" Name="newElementName1" /> | ||
3710 | <Parameter Type="System.String" Name="newElementName2" /> | ||
3711 | </Instance> | ||
3712 | </Message> | ||
3713 | <Message Id="CannotUpdateCabCache" Number="1131"> | ||
3714 | <Instance> | ||
3715 | Cannot update the timestamp of cached cabinet: '{0}'. If the timestamp is not updated, the build may rebuild more than is necessary. To fix the issue, ensure that the cabinet file is writable, error: {1} | ||
3716 | <Parameter Type="System.String" Name="cabinetPath" /> | ||
3717 | <Parameter Type="System.String" Name="detail" /> | ||
3718 | </Instance> | ||
3719 | </Message> | ||
3720 | <Message Id="DownloadUrlNotSupportedForEmbeddedPayloads" Number="1132"> | ||
3721 | <Instance> | ||
3722 | The Payload '{0}' is embedded but included a @DownloadUrl attribute. Embedded Payloads cannot be downloaded so the download URL is being ignored. | ||
3723 | <Parameter Type="System.String" Name="payloadId" /> | ||
3724 | </Instance> | ||
3725 | </Message> | ||
3726 | <Message Id="DiscouragedAllUsersValue" Number="1133"> | ||
3727 | <Instance> | ||
3728 | Bundles require a package to be either per-machine or per-user. The MSI '{0}' ALLUSERS Property is set to '2' which may change from per-user to per-machine at install time. The Bundle will assume the package is per-{1} and will not work correctly if that changes. If possible, remove the Property with Id='ALLUSERS' and use Package/@InstallScope attribute instead. | ||
3729 | <Parameter Type="System.String" Name="path" /> | ||
3730 | <Parameter Type="System.String" Name="machineOrUser" /> | ||
3731 | </Instance> | ||
3732 | </Message> | ||
3733 | <Message Id="ImplicitlyPerUser" Number="1134"> | ||
3734 | <Instance> | ||
3735 | The MSI '{0}' does not explicitly indicate that it is a per-user package even though the ALLUSERS Property is blank. This suggests a per-user package so the Bundle will assume the package is per-user. If possible, use the Package/@InstallScope attribute to be explicit instead. | ||
3736 | <Parameter Type="System.String" Name="path" /> | ||
3737 | </Instance> | ||
3738 | </Message> | ||
3739 | <Message Id="PerUserButForcingPerMachine" Number="1135"> | ||
3740 | <Instance> | ||
3741 | The MSI '{0}' is a per-user package being forced to per-machine. Verify that the MsiPackage/@ForcePerMachine attribute is expected and that the per-user package works correctly when forced to install per-machine. | ||
3742 | <Parameter Type="System.String" Name="path" /> | ||
3743 | </Instance> | ||
3744 | </Message> | ||
3745 | <Message Id="AttributeShouldContain" Number="1136"> | ||
3746 | <Instance> | ||
3747 | The {0}/@{1} attribute value '{2}' should contain '{3}' when the {0}/@{4} attribute is set to '{5}'. | ||
3748 | <Parameter Type="System.String" Name="elementName" /> | ||
3749 | <Parameter Type="System.String" Name="attributeName" /> | ||
3750 | <Parameter Type="System.String" Name="attributeValue" /> | ||
3751 | <Parameter Type="System.String" Name="expectedContains" /> | ||
3752 | <Parameter Type="System.String" Name="otherAttributeName" /> | ||
3753 | <Parameter Type="System.String" Name="otherAttributeValue" /> | ||
3754 | </Instance> | ||
3755 | </Message> | ||
3756 | <Message Id="DuplicateComponentGuidsMustHaveMutuallyExclusiveConditions" Number="1137"> | ||
3757 | <Instance> | ||
3758 | Component/@Id='{0}' has a @Guid value '{1}' that duplicates another component in this package. This is not officially supported by Windows Installer but works as long as all components have mutually-exclusive conditions. It is recommended to give each component its own unique GUID. | ||
3759 | <Parameter Type="System.String" Name="componentId" /> | ||
3760 | <Parameter Type="System.String" Name="guid" /> | ||
3761 | </Instance> | ||
3762 | </Message> | ||
3763 | <Message Id="DeprecatedRegistryKeyActionAttribute" Number="1138"> | ||
3764 | <Instance> | ||
3765 | The RegistryKey/@Action attribute has been deprecated. In most cases, you can simply omit @Action. If you need to force Windows Installer to create an empty key or recursively delete the key, use the ForceCreateOnInstall or ForceDeleteOnUninstall attributes instead. | ||
3766 | </Instance> | ||
3767 | </Message> | ||
3768 | <Message Id="NotABinaryWixlib" Number="1139" SourceLineNumbers="no"> | ||
3769 | <Instance> | ||
3770 | '{0}' is not a binary Wixlib and has no embedded files. | ||
3771 | <Parameter Type="System.String" Name="wixlib" /> | ||
3772 | </Instance> | ||
3773 | </Message> | ||
3774 | <Message Id="NoPerMachineDependencies" Number="1140"> | ||
3775 | <Instance> | ||
3776 | Bundle dependencies will not be registered on per-machine package '{0}' for a per-user bundle. Either make sure that all packages are installed per-machine, or author any per-machine dependencies as permanent packages. | ||
3777 | <Parameter Type="System.String" Name="packageId" /> | ||
3778 | </Instance> | ||
3779 | </Message> | ||
3780 | <Message Id="DownloadUrlNotSupportedForAttachedContainers" Number="1141"> | ||
3781 | <Instance> | ||
3782 | The Container '{0}' is attached but included a @DownloadUrl attribute. Attached Containers cannot be downloaded so the download URL is being ignored. | ||
3783 | <Parameter Type="System.String" Name="containerId" /> | ||
3784 | </Instance> | ||
3785 | </Message> | ||
3786 | <Message Id="ReservedAttribute" Number="1142"> | ||
3787 | <Instance> | ||
3788 | The {0}/@{1} attribute is reserved for future use and has no effect in this version of the WiX toolset. | ||
3789 | <Parameter Type="System.String" Name="elementName" /> | ||
3790 | <Parameter Type="System.String" Name="attributeName" /> | ||
3791 | </Instance> | ||
3792 | </Message> | ||
3793 | <Message Id="RequiresMsi500forArmPackage" Number="1143"> | ||
3794 | <Instance> | ||
3795 | Package/@InstallerVersion must be 500 or greater for an Arm package. The value will be changed to 500. Please specify a value of 500 or greater in order to eliminate this warning. | ||
3796 | </Instance> | ||
3797 | </Message> | ||
3798 | <Message Id="RemotePayloadsMustNotAlsoBeCompressed" Number="1144"> | ||
3799 | <Instance> | ||
3800 | The {0}/@Compressed attribute must have value 'no' when a RemotePayload child element is present. RemotePayload indicates that a package will always be downloaded and cannot be compressed into a bundle. To eliminate this warning, explicitly set the {0}/@Compressed attribute to 'no'. | ||
3801 | <Parameter Type="System.String" Name="elementName" /> | ||
3802 | </Instance> | ||
3803 | </Message> | ||
3804 | <Message Id="AllChangesIncludedInPatch" Number="1145"> | ||
3805 | <Instance> | ||
3806 | All changes between the baseline and upgraded packages will be included in the patch except for any change to the ProductCode. The 'All' element is supported primarily for testing purposes and negates the benefits of patch families. | ||
3807 | </Instance> | ||
3808 | </Message> | ||
3809 | <Message Id="RelatedAttributeConditionallyIgnored" Number="1146"> | ||
3810 | <Instance> | ||
3811 | Ignoring attribute {0} because attribute {1} is set to {2}. | ||
3812 | <Parameter Type="System.String" Name="recessiveAttribute" /> | ||
3813 | <Parameter Type="System.String" Name="dominantAttribute" /> | ||
3814 | <Parameter Type="System.String" Name="dominantValue" /> | ||
3815 | </Instance> | ||
3816 | </Message> | ||
3817 | <Message Id="BackslashTerminateInlineDirectorySyntax" Number="1147"> | ||
3818 | <Instance> | ||
3819 | Backslash terminate the {0}/@{1} attribute's inline directory value '{2}'. A backslash ensures a directory name will not be mistaken for a directory reference. | ||
3820 | <Parameter Type="System.String" Name="elementName" /> | ||
3821 | <Parameter Type="System.String" Name="attributeName" /> | ||
3822 | <Parameter Type="System.String" Name="value" /> | ||
3823 | </Instance> | ||
3824 | </Message> | ||
3825 | <Message Id="VersionTruncated" Number="1148"> | ||
3826 | <Instance> | ||
3827 | Product version {0} in package '{1}' is not valid per the MSI SDK and cannot be represented in a bundle. It has been truncated to {2}. | ||
3828 | <Parameter Type="System.String" Name="originalVersion" /> | ||
3829 | <Parameter Type="System.String" Name="package" /> | ||
3830 | <Parameter Type="System.String" Name="truncatedVersion" /> | ||
3831 | </Instance> | ||
3832 | </Message> | ||
3833 | <Message Id="ServiceConfigFamilyNotSupported" Number="1149"> | ||
3834 | <Instance> | ||
3835 | {0} functionality is documented in the Windows Installer SDK to "not [work] as expected." Consider replacing {0} with the WixUtilExtension ServiceConfig element. | ||
3836 | <Parameter Type="System.String" Name="elementName" /> | ||
3837 | </Instance> | ||
3838 | </Message> | ||
3839 | </Class> | ||
3840 | |||
3841 | <Class Name="WixVerboses" ContainerName="WixVerboseEventArgs" BaseContainerName="MessageEventArgs" Level="Verbose"> | ||
3842 | <Message Id="ImportBinaryStream" Number="9000" SourceLineNumbers="no"> | ||
3843 | <Instance> | ||
3844 | Importing binary stream from '{0}'. | ||
3845 | <Parameter Type="System.String" Name="streamSource" /> | ||
3846 | </Instance> | ||
3847 | </Message> | ||
3848 | <Message Id="ImportIconStream" Number="9001" SourceLineNumbers="no"> | ||
3849 | <Instance> | ||
3850 | Importing icon stream from '{0}'. | ||
3851 | <Parameter Type="System.String" Name="streamSource" /> | ||
3852 | </Instance> | ||
3853 | </Message> | ||
3854 | <Message Id="CopyFile" Number="9002" SourceLineNumbers="no"> | ||
3855 | <Instance> | ||
3856 | Copying file '{0}' to '{1}'. | ||
3857 | <Parameter Type="System.String" Name="sourceFile" /> | ||
3858 | <Parameter Type="System.String" Name="destinationFile" /> | ||
3859 | </Instance> | ||
3860 | </Message> | ||
3861 | <Message Id="MoveFile" Number="9003" SourceLineNumbers="no"> | ||
3862 | <Instance> | ||
3863 | Moving file '{0}' to '{1}'. | ||
3864 | <Parameter Type="System.String" Name="sourceFile" /> | ||
3865 | <Parameter Type="System.String" Name="destinationFile" /> | ||
3866 | </Instance> | ||
3867 | </Message> | ||
3868 | <Message Id="CreateDirectory" Number="9004" SourceLineNumbers="no"> | ||
3869 | <Instance> | ||
3870 | The directory '{0}' does not exist, creating it now. | ||
3871 | <Parameter Type="System.String" Name="directory" /> | ||
3872 | </Instance> | ||
3873 | </Message> | ||
3874 | <Message Id="RemoveDestinationFile" Number="9005" SourceLineNumbers="no"> | ||
3875 | <Instance> | ||
3876 | The destination file '{0}' already exists, attempting to remove it. | ||
3877 | <Parameter Type="System.String" Name="destinationFile" /> | ||
3878 | </Instance> | ||
3879 | </Message> | ||
3880 | <Message Id="CabFile" Number="9006" SourceLineNumbers="no"> | ||
3881 | <Instance> | ||
3882 | Cabbing file {0} from '{1}'. | ||
3883 | <Parameter Type="System.String" Name="fileId" /> | ||
3884 | <Parameter Type="System.String" Name="filePath" /> | ||
3885 | </Instance> | ||
3886 | </Message> | ||
3887 | <Message Id="UpdatingFileInformation" Number="9007" SourceLineNumbers="no"> | ||
3888 | <Instance>Updating file information.</Instance> | ||
3889 | </Message> | ||
3890 | <Message Id="GeneratingDatabase" Number="9008" SourceLineNumbers="no"> | ||
3891 | <Instance>Generating database.</Instance> | ||
3892 | </Message> | ||
3893 | <Message Id="MergingModules" Number="9009" SourceLineNumbers="no"> | ||
3894 | <Instance>Merging modules.</Instance> | ||
3895 | </Message> | ||
3896 | <Message Id="CreatingCabinetFiles" Number="9010" SourceLineNumbers="no"> | ||
3897 | <Instance>Creating cabinet files.</Instance> | ||
3898 | </Message> | ||
3899 | <Message Id="ImportingStreams" Number="9011" SourceLineNumbers="no"> | ||
3900 | <Instance>Importing streams.</Instance> | ||
3901 | </Message> | ||
3902 | <Message Id="LayingOutMedia" Number="9012" SourceLineNumbers="no"> | ||
3903 | <Instance>Laying out media.</Instance> | ||
3904 | </Message> | ||
3905 | <Message Id="DecompilingTable" Number="9013" SourceLineNumbers="no"> | ||
3906 | <Instance> | ||
3907 | Decompiling the {0} table. | ||
3908 | <Parameter Type="System.String" Name="tableName" /> | ||
3909 | </Instance> | ||
3910 | </Message> | ||
3911 | <Message Id="ValidationInfo" Number="9014" SourceLineNumbers="no"> | ||
3912 | <Instance> | ||
3913 | {0}: {1} | ||
3914 | <Parameter Type="System.String" Name="ice" /> | ||
3915 | <Parameter Type="System.String" Name="message" /> | ||
3916 | </Instance> | ||
3917 | </Message> | ||
3918 | <Message Id="CreateCabinet" Number="9015" SourceLineNumbers="no"> | ||
3919 | <Instance> | ||
3920 | Creating cabinet '{0}'. | ||
3921 | <Parameter Type="System.String" Name="cabinet" /> | ||
3922 | </Instance> | ||
3923 | </Message> | ||
3924 | <Message Id="ValidatingDatabase" Number="9016" SourceLineNumbers="no"> | ||
3925 | <Instance>Validating database.</Instance> | ||
3926 | </Message> | ||
3927 | <Message Id="OpeningMergeModule" Number="9017" SourceLineNumbers="no"> | ||
3928 | <Instance> | ||
3929 | Opening merge module '{0}' with language '{1}'. | ||
3930 | <Parameter Type="System.String" Name="modulePath" /> | ||
3931 | <Parameter Type="System.Int16" Name="language" /> | ||
3932 | </Instance> | ||
3933 | </Message> | ||
3934 | <Message Id="MergingMergeModule" Number="9018" SourceLineNumbers="no"> | ||
3935 | <Instance> | ||
3936 | Merging merge module '{0}'. | ||
3937 | <Parameter Type="System.String" Name="modulePath" /> | ||
3938 | </Instance> | ||
3939 | </Message> | ||
3940 | <Message Id="ConnectingMergeModule" Number="9019" SourceLineNumbers="no"> | ||
3941 | <Instance> | ||
3942 | Connecting merge module '{0}' to feature '{1}'. | ||
3943 | <Parameter Type="System.String" Name="modulePath" /> | ||
3944 | <Parameter Type="System.String" Name="feature" /> | ||
3945 | </Instance> | ||
3946 | </Message> | ||
3947 | <Message Id="ResequencingMergeModuleFiles" Number="9020" SourceLineNumbers="no"> | ||
3948 | <Instance>Resequencing files from all merge modules.</Instance> | ||
3949 | </Message> | ||
3950 | <Message Id="BinderTempDirLocatedAt" Number="9021" SourceLineNumbers="no"> | ||
3951 | <Instance> | ||
3952 | Binder temporary directory located at '{0}'. | ||
3953 | <Parameter Type="System.String" Name="directory" /> | ||
3954 | </Instance> | ||
3955 | </Message> | ||
3956 | <Message Id="ValidatorTempDirLocatedAt" Number="9022" SourceLineNumbers="no"> | ||
3957 | <Instance> | ||
3958 | Validator temporary directory located at '{0}'. | ||
3959 | <Parameter Type="System.String" Name="directory" /> | ||
3960 | </Instance> | ||
3961 | </Message> | ||
3962 | <Message Id="GeneratingBundle" Number="9023" SourceLineNumbers="no"> | ||
3963 | <Instance> | ||
3964 | Generating Burn bundle '{0}' from stub '{1}'. | ||
3965 | <Parameter Type="System.String" Name="bundleFile" /> | ||
3966 | <Parameter Type="System.String" Name="stubFile" /> | ||
3967 | </Instance> | ||
3968 | </Message> | ||
3969 | <Message Id="ResolvingManifest" Number="9024" SourceLineNumbers="no"> | ||
3970 | <Instance> | ||
3971 | Generating resolved manifest '{0}'. | ||
3972 | <Parameter Type="System.String" Name="manifestFile" /> | ||
3973 | </Instance> | ||
3974 | </Message> | ||
3975 | <Message Id="LoadingPayload" Number="9025" SourceLineNumbers="no"> | ||
3976 | <Instance> | ||
3977 | Loading payload '{0}' into container. | ||
3978 | <Parameter Type="System.String" Name="payload" /> | ||
3979 | </Instance> | ||
3980 | </Message> | ||
3981 | <Message Id="BundleGuid" Number="9026" SourceLineNumbers="no"> | ||
3982 | <Instance> | ||
3983 | Assigning bundle GUID '{0}'. | ||
3984 | <Parameter Type="System.String" Name="bundleGuid" /> | ||
3985 | </Instance> | ||
3986 | </Message> | ||
3987 | <Message Id="CopyingExternalPayload" Number="9027" SourceLineNumbers="no"> | ||
3988 | <Instance> | ||
3989 | Copying external payload from '{0}' to '{1}'. | ||
3990 | <Parameter Type="System.String" Name="payload" /> | ||
3991 | <Parameter Type="System.String" Name="outputDirectory" /> | ||
3992 | </Instance> | ||
3993 | </Message> | ||
3994 | <Message Id="EmbeddingContainer" Number="9028" SourceLineNumbers="no"> | ||
3995 | <Instance> | ||
3996 | Embedding container '{0}' ({1} bytes) with '{2}' compression. | ||
3997 | <Parameter Type="System.String" Name="container" /> | ||
3998 | <Parameter Type="System.Int64" Name="size" /> | ||
3999 | <Parameter Type="System.String" Name="compression" /> | ||
4000 | </Instance> | ||
4001 | </Message> | ||
4002 | <Message Id="SwitchingToPerUserPackage" Number="9029"> | ||
4003 | <Instance> | ||
4004 | Bundle switching from per-machine to per-user due to addition of per-user package '{0}'. | ||
4005 | <Parameter Type="System.String" Name="path" /> | ||
4006 | </Instance> | ||
4007 | </Message> | ||
4008 | <Message Id="SetCabbingThreadCount" Number="9030" SourceLineNumbers="no"> | ||
4009 | <Instance> | ||
4010 | There will be '{0}' threads used to produce CAB files. | ||
4011 | <Parameter Type="System.String" Name="threads" /> | ||
4012 | </Instance> | ||
4013 | </Message> | ||
4014 | <Message Id="ValidationSerialized" Number="9031" SourceLineNumbers="no"> | ||
4015 | <Instance> | ||
4016 | Multiple packages cannot reliably be validated simultaneously. This validation will resume when the other package being validated has completed. | ||
4017 | </Instance> | ||
4018 | </Message> | ||
4019 | <Message Id="ReusingCabCache" Number="9032"> | ||
4020 | <Instance> | ||
4021 | Reusing cabinet '{0}' from cabinet cache path: '{1}'. | ||
4022 | <Parameter Type="System.String" Name="cabinetName" /> | ||
4023 | <Parameter Type="System.String" Name="source" /> | ||
4024 | </Instance> | ||
4025 | </Message> | ||
4026 | <Message Id="CabinetsSplitInParallel" Number="9033" SourceLineNumbers="no"> | ||
4027 | <Instance> | ||
4028 | Multiple Cabinets with Large Files are splitting simultaneously. This current cabinet is waiting on a shared resource and splitting will resume when the other splitting has completed. | ||
4029 | </Instance> | ||
4030 | </Message> | ||
4031 | <Message Id="ValidatedDatabase" Number="9034" SourceLineNumbers="no"> | ||
4032 | <Instance> | ||
4033 | Validation complete: {0:N0}ms elapsed. | ||
4034 | <Parameter Type="System.Int64" Name="size" /> | ||
4035 | </Instance> | ||
4036 | </Message> | ||
4037 | </Class> | ||
4038 | </Messages> | ||
diff --git a/src/api/wix/WixToolset.Data/DictionaryExtensions.cs b/src/api/wix/WixToolset.Data/DictionaryExtensions.cs new file mode 100644 index 00000000..cb6647ff --- /dev/null +++ b/src/api/wix/WixToolset.Data/DictionaryExtensions.cs | |||
@@ -0,0 +1,14 @@ | |||
1 | // Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. | ||
2 | |||
3 | namespace WixToolset.Data | ||
4 | { | ||
5 | using System.Collections.Generic; | ||
6 | |||
7 | internal static class DictionaryExtensions | ||
8 | { | ||
9 | public static V GetValueOrDefault<K, V>(this IDictionary<K, V> dictionary, K key, V defaultValue = default(V)) | ||
10 | { | ||
11 | return dictionary.TryGetValue(key, out var value) ? value : defaultValue; | ||
12 | } | ||
13 | } | ||
14 | } | ||
diff --git a/src/api/wix/WixToolset.Data/DisplayEventArgs.cs b/src/api/wix/WixToolset.Data/DisplayEventArgs.cs new file mode 100644 index 00000000..baa9b0e2 --- /dev/null +++ b/src/api/wix/WixToolset.Data/DisplayEventArgs.cs | |||
@@ -0,0 +1,15 @@ | |||
1 | // Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. | ||
2 | |||
3 | namespace WixToolset.Data | ||
4 | { | ||
5 | using System; | ||
6 | |||
7 | public delegate void DisplayEventHandler(object sender, DisplayEventArgs e); | ||
8 | |||
9 | public class DisplayEventArgs : EventArgs | ||
10 | { | ||
11 | public MessageLevel Level { get; set; } | ||
12 | |||
13 | public string Message { get; set; } | ||
14 | } | ||
15 | } | ||
diff --git a/src/api/wix/WixToolset.Data/EmptyRule.cs b/src/api/wix/WixToolset.Data/EmptyRule.cs new file mode 100644 index 00000000..0170e457 --- /dev/null +++ b/src/api/wix/WixToolset.Data/EmptyRule.cs | |||
@@ -0,0 +1,22 @@ | |||
1 | // Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. | ||
2 | |||
3 | namespace WixToolset.Data | ||
4 | { | ||
5 | public enum EmptyRule | ||
6 | { | ||
7 | /// <summary> | ||
8 | /// The trimmed value cannot be empty. | ||
9 | /// </summary> | ||
10 | MustHaveNonWhitespaceCharacters, | ||
11 | |||
12 | /// <summary> | ||
13 | /// The trimmed value can be empty, but the value itself cannot be empty. | ||
14 | /// </summary> | ||
15 | CanBeWhitespaceOnly, | ||
16 | |||
17 | /// <summary> | ||
18 | /// The value can be empty. | ||
19 | /// </summary> | ||
20 | CanBeEmpty | ||
21 | } | ||
22 | } | ||
diff --git a/src/api/wix/WixToolset.Data/ErrorMessages.cs b/src/api/wix/WixToolset.Data/ErrorMessages.cs new file mode 100644 index 00000000..86504f60 --- /dev/null +++ b/src/api/wix/WixToolset.Data/ErrorMessages.cs | |||
@@ -0,0 +1,2731 @@ | |||
1 | // Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. | ||
2 | |||
3 | namespace WixToolset.Data | ||
4 | { | ||
5 | using System; | ||
6 | using System.Collections.Generic; | ||
7 | using System.Resources; | ||
8 | |||
9 | public static class ErrorMessages | ||
10 | { | ||
11 | public static Message ActionCircularDependency(SourceLineNumber sourceLineNumbers, string sequenceTableName, string actionName1, string actionName2) | ||
12 | { | ||
13 | return Message(sourceLineNumbers, Ids.ActionCircularDependency, "The {0} table contains an action '{1}' that is scheduled to come before or after action '{2}', which is also scheduled to come before or after action '{1}'. Please remove this circular dependency by changing the Before or After attribute for one of the actions.", sequenceTableName, actionName1, actionName2); | ||
14 | } | ||
15 | |||
16 | public static Message ActionCollision(SourceLineNumber sourceLineNumbers, string sequenceTableName, string actionName) | ||
17 | { | ||
18 | return Message(sourceLineNumbers, Ids.ActionCollision, "The {0} table contains an action '{1}' that is declared in two different locations. Please remove one of the actions or set the Overridable='yes' attribute on one of their elements.", sequenceTableName, actionName); | ||
19 | } | ||
20 | |||
21 | public static Message ActionCollision2(SourceLineNumber sourceLineNumbers) | ||
22 | { | ||
23 | return Message(sourceLineNumbers, Ids.ActionCollision2, "The location of the action related to previous error."); | ||
24 | } | ||
25 | |||
26 | public static Message ActionScheduledRelativeToItself(SourceLineNumber sourceLineNumbers, string elementName, string attributeName, string attributeValue) | ||
27 | { | ||
28 | return Message(sourceLineNumbers, Ids.ActionScheduledRelativeToItself, "The {0}/@{1} attribute's value '{2}' is invalid because it would make this action dependent upon itself. Please change the value to the name of a different action.", elementName, attributeName, attributeValue); | ||
29 | } | ||
30 | |||
31 | public static Message ActionScheduledRelativeToTerminationAction(SourceLineNumber sourceLineNumbers, string sequenceTableName, string actionName1, string actionName2) | ||
32 | { | ||
33 | return Message(sourceLineNumbers, Ids.ActionScheduledRelativeToTerminationAction, "The {0} table contains an action '{1}' that is scheduled to come before or after action '{2}', which is a special action which only occurs when the installer terminates. These special actions can be identified by their negative sequence numbers. Please schedule the action '{1}' to come before or after a different action.", sequenceTableName, actionName1, actionName2); | ||
34 | } | ||
35 | |||
36 | public static Message ActionScheduledRelativeToTerminationAction2(SourceLineNumber sourceLineNumbers) | ||
37 | { | ||
38 | return Message(sourceLineNumbers, Ids.ActionScheduledRelativeToTerminationAction2, "The location of the special termination action related to previous error(s)."); | ||
39 | } | ||
40 | |||
41 | public static Message AdditionalArgumentUnexpected(string argument) | ||
42 | { | ||
43 | return Message(null, Ids.AdditionalArgumentUnexpected, "Additional argument '{0}' was unexpected. Remove the argument and add the '-?' switch for more information.", argument); | ||
44 | } | ||
45 | |||
46 | public static Message AdminImageRequired(string productCode) | ||
47 | { | ||
48 | return Message(null, Ids.AdminImageRequired, "Source information is required for the product '{0}'. If you ran torch.exe with both target and updated .msi files, you must first perform an administrative installation of both .msi files then pass -a when running torch.exe.", productCode); | ||
49 | } | ||
50 | |||
51 | public static Message AdvertiseStateMustMatch(SourceLineNumber sourceLineNumbers, string advertiseState, string parentAdvertiseState) | ||
52 | { | ||
53 | return Message(sourceLineNumbers, Ids.AdvertiseStateMustMatch, "The advertise state of this element: '{0}', does not match the advertise state set on the parent element: '{1}'.", advertiseState, parentAdvertiseState); | ||
54 | } | ||
55 | |||
56 | public static Message AppIdIncompatibleAdvertiseState(SourceLineNumber sourceLineNumbers, string elementName, string attributeName, string value, string parentValue) | ||
57 | { | ||
58 | return Message(sourceLineNumbers, Ids.AppIdIncompatibleAdvertiseState, "The {0}/@(1) attribute's value, '{2}' does not match the advertise state on its parent element: '{3}'. (Note: AppIds nested under Fragment, Module, or Product elements must be advertised.)", elementName, attributeName, value, parentValue); | ||
59 | } | ||
60 | |||
61 | public static Message BaselineRequired() | ||
62 | { | ||
63 | return Message(null, Ids.BaselineRequired, "No baseline was specified for one of the transforms specified. A baseline is required for all transforms in a patch."); | ||
64 | } | ||
65 | |||
66 | public static Message BinderFileManagerMissingFile(SourceLineNumber sourceLineNumbers, string exceptionMessage) | ||
67 | { | ||
68 | return Message(sourceLineNumbers, Ids.BinderFileManagerMissingFile, "{0}", exceptionMessage); | ||
69 | } | ||
70 | |||
71 | public static Message BothUpgradeCodesRequired() | ||
72 | { | ||
73 | return Message(null, Ids.BothUpgradeCodesRequired, "Both the target and updated product authoring must define the Product/@UpgradeCode attribute if the transform validates the UpgradeCode (default). Either define the Product/@UpgradeCode attribute in both the target and updated authoring, or set the Validate/@UpgradeCode attribute to 'no' in the patch authoring."); | ||
74 | } | ||
75 | |||
76 | public static Message BundleTooNew(string bundleExecutable, long bundleVersion) | ||
77 | { | ||
78 | return Message(null, Ids.BundleTooNew, "Unable to read bundle executable '{0}', because this bundle was created with a newer version of WiX (bundle version '{1}'). You must use a newer version of WiX in order to read this bundle.", bundleExecutable, bundleVersion); | ||
79 | } | ||
80 | |||
81 | public static Message CabClosureFailed(string cabinet) | ||
82 | { | ||
83 | return Message(null, Ids.CabClosureFailed, "Failed to close cab '{0}'.", cabinet); | ||
84 | } | ||
85 | |||
86 | public static Message CabClosureFailed(string cabinet, int error) | ||
87 | { | ||
88 | return Message(null, Ids.CabClosureFailed, "Failed to close cab '{0}', error: {1}.", cabinet, error); | ||
89 | } | ||
90 | |||
91 | public static Message CabCreationFailed(string cabName, string fileName, int error) | ||
92 | { | ||
93 | return Message(null, Ids.CabCreationFailed, "Failed to create cab '{0}' while compressing file '{1}' with error 0x{2:X8}.", cabName, fileName, error); | ||
94 | } | ||
95 | |||
96 | public static Message CabCreationFailed(string cabName, int error) | ||
97 | { | ||
98 | return Message(null, Ids.CabCreationFailed, "Failed to create cab '{0}' with error 0x{1:X8}.", cabName, error); | ||
99 | } | ||
100 | |||
101 | public static Message CabExtractionFailed(string cabName, string directoryName) | ||
102 | { | ||
103 | return Message(null, Ids.CabExtractionFailed, "Failed to extract cab '{0}' to directory '{1}'. This is most likely due to a lack of available disk space on the destination drive.", cabName, directoryName); | ||
104 | } | ||
105 | |||
106 | public static Message CabExtractionFailed(string cabName, string mergeModulePath, string directoryName) | ||
107 | { | ||
108 | return Message(null, Ids.CabExtractionFailed, "Failed to extract cab '{0}' from merge module '{1}' to directory '{2}'. This is most likely due to a lack of available disk space on the destination drive.", cabName, mergeModulePath, directoryName); | ||
109 | } | ||
110 | |||
111 | public static Message CabFileDoesNotExist(string cabName, string mergeModulePath, string directoryName) | ||
112 | { | ||
113 | return Message(null, Ids.CabFileDoesNotExist, "Attempted to extract cab '{0}' from merge module '{1}' to directory '{2}'. The cab file was not found. This usually means that you have a merge module without a cabinet inside it.", cabName, mergeModulePath, directoryName); | ||
114 | } | ||
115 | |||
116 | public static Message CannotAuthorSpecialProperties(SourceLineNumber sourceLineNumbers, string propertyName) | ||
117 | { | ||
118 | return Message(sourceLineNumbers, Ids.CannotAuthorSpecialProperties, "The {0} property was specified. Special MSI properties cannot be authored. Use the attributes on the Property element instead.", propertyName); | ||
119 | } | ||
120 | |||
121 | public static Message CannotDefaultComponentId(SourceLineNumber sourceLineNumbers) | ||
122 | { | ||
123 | return Message(sourceLineNumbers, Ids.CannotDefaultComponentId, "The Component/@Id attribute was not found; it is required when there is no valid keypath to use as the default id value."); | ||
124 | } | ||
125 | |||
126 | public static Message CannotDefaultMismatchedAdvertiseStates(SourceLineNumber sourceLineNumbers) | ||
127 | { | ||
128 | return Message(sourceLineNumbers, Ids.CannotDefaultMismatchedAdvertiseStates, "MIME element cannot be marked as the default when its advertise state differs from its parent element. Ensure that the advertise state of the MIME element matches its parents element or remove the Mime/@Advertise attribute completely."); | ||
129 | } | ||
130 | |||
131 | public static Message CannotFindFile(SourceLineNumber sourceLineNumbers, string fileId, string fileName, string filePath) | ||
132 | { | ||
133 | return Message(sourceLineNumbers, Ids.CannotFindFile, "The file with id '{0}' and name '{1}' could not be found with source path: '{2}'.", fileId, fileName, filePath); | ||
134 | } | ||
135 | |||
136 | public static Message CanNotHaveTwoParents(SourceLineNumber sourceLineNumbers, string directorySearch, string parentAttribute, string parentElement) | ||
137 | { | ||
138 | return Message(sourceLineNumbers, Ids.CanNotHaveTwoParents, "The DirectorySearchRef {0} can not have a Parent attribute {1} and also be nested under parent element {2}", directorySearch, parentAttribute, parentElement); | ||
139 | } | ||
140 | |||
141 | public static Message CannotLoadBinderFileManager(string binderFileManager, string currentBinderFileManager) | ||
142 | { | ||
143 | return Message(null, Ids.CannotLoadBinderFileManager, "Cannot load binder file manager: {0}. Light can only load one binder file manager and has already loaded binder file manager: {1}.", binderFileManager, currentBinderFileManager); | ||
144 | } | ||
145 | |||
146 | public static Message CannotLoadLinkerExtension(string linkerExtension, string currentLinkerExtension) | ||
147 | { | ||
148 | return Message(null, Ids.CannotLoadLinkerExtension, "Cannot load linker extension: {0}. Light can only load one link extension and has already loaded link extension: {1}.", linkerExtension, currentLinkerExtension); | ||
149 | } | ||
150 | |||
151 | public static Message CannotOpenMergeModule(SourceLineNumber sourceLineNumbers, string mergeModuleIdentifier, string mergeModuleFile) | ||
152 | { | ||
153 | return Message(sourceLineNumbers, Ids.CannotOpenMergeModule, "Cannot open the merge module '{0}' from file '{1}'.", mergeModuleIdentifier, mergeModuleFile); | ||
154 | } | ||
155 | |||
156 | public static Message CannotReundefineVariable(SourceLineNumber sourceLineNumbers, string variableName) | ||
157 | { | ||
158 | return Message(sourceLineNumbers, Ids.CannotReundefineVariable, "The variable '{0}' cannot be undefined because its already undefined.", variableName); | ||
159 | } | ||
160 | |||
161 | public static Message CheckBoxValueOnlyValidWithCheckBox(SourceLineNumber sourceLineNumbers, string elementName, string controlType) | ||
162 | { | ||
163 | return Message(sourceLineNumbers, Ids.CheckBoxValueOnlyValidWithCheckBox, "A {0} element was specified with Type='{1}' and a CheckBoxValue. Check box values can only be specified with Type='CheckBox'.", elementName, controlType); | ||
164 | } | ||
165 | |||
166 | public static Message CircularSearchReference(string chain) | ||
167 | { | ||
168 | return Message(null, Ids.CircularSearchReference, "A circular reference of search ordering constraints was detected: {0}. Search ordering references must form a directed acyclic graph.", chain); | ||
169 | } | ||
170 | |||
171 | public static Message ComponentExpectedFeature(SourceLineNumber sourceLineNumbers, string component, string type, string target) | ||
172 | { | ||
173 | return Message(sourceLineNumbers, Ids.ComponentExpectedFeature, "The component '{0}' is not assigned to a feature. The component's {1} '{2}' requires it to be assigned to at least one feature.", component, type, target); | ||
174 | } | ||
175 | |||
176 | public static Message ComponentMultipleKeyPaths(SourceLineNumber sourceLineNumbers, string elementName, string attributeName, string value, string fileElementName, string registryElementName, string odbcDataSourceElementName) | ||
177 | { | ||
178 | return Message(sourceLineNumbers, Ids.ComponentMultipleKeyPaths, "The {0} element has multiple key paths set. The key path may only be set to '{2}' in extension elements that support it or one of the following locations: {0}/@{1}, {3}/@{1}, {4}/@{1}, or {5}/@{1}.", elementName, attributeName, value, fileElementName, registryElementName, odbcDataSourceElementName); | ||
179 | } | ||
180 | |||
181 | public static Message ComponentReferencedTwice(SourceLineNumber sourceLineNumbers, string crefChildId) | ||
182 | { | ||
183 | return Message(sourceLineNumbers, Ids.ComponentReferencedTwice, "Component {0} cannot be contained in a Module twice.", crefChildId); | ||
184 | } | ||
185 | |||
186 | public static Message ConditionExpected(SourceLineNumber sourceLineNumbers, string elementName) | ||
187 | { | ||
188 | return Message(sourceLineNumbers, Ids.ConditionExpected, "The {0} element's inner text cannot be an empty string or completely whitespace. If you don't want a condition, then simply remove the entire {0} element.", elementName); | ||
189 | } | ||
190 | |||
191 | public static Message CorruptFileFormat(string path, string format) | ||
192 | { | ||
193 | return Message(null, Ids.CorruptFileFormat, "Attempted to load corrupt file from path: {0}. The file with format {1} contained unexpected content. Ensure the correct path was provided and that the file has not been incorrectly modified.", path, format.ToLowerInvariant()); | ||
194 | } | ||
195 | |||
196 | public static Message CouldNotDetermineProductCodeFromTransformSummaryInfo() | ||
197 | { | ||
198 | return Message(null, Ids.CouldNotDetermineProductCodeFromTransformSummaryInfo, "Could not determine ProductCode from transform summary information."); | ||
199 | } | ||
200 | |||
201 | public static Message CreateCabAddFileFailed() | ||
202 | { | ||
203 | return Message(null, Ids.CreateCabAddFileFailed, "An error (E_FAIL) was returned while adding files to a CAB file. This most commonly happens when creating a CAB file 2 GB or larger. Either reduce the size of your installation package, raise Media/@CompressionLevel to a higher compression level, or split your installation package's files into more than one CAB file."); | ||
204 | } | ||
205 | |||
206 | public static Message CreateCabInsufficientDiskSpace() | ||
207 | { | ||
208 | return Message(null, Ids.CreateCabInsufficientDiskSpace, "An error (ERROR_DISK_FULL) was returned while creating a CAB file. This means you have insufficient disk space - please clear more disk space and try this operation again."); | ||
209 | } | ||
210 | |||
211 | public static Message CubeFileNotFound(string cubeFile) | ||
212 | { | ||
213 | return Message(null, Ids.CubeFileNotFound, "The cube file '{0}' cannot be found. This file is required for MSI validation.", cubeFile); | ||
214 | } | ||
215 | |||
216 | public static Message CustomActionIllegalInnerText(SourceLineNumber sourceLineNumbers, string elementName, string innerText, string attributeName) | ||
217 | { | ||
218 | return Message(sourceLineNumbers, Ids.CustomActionIllegalInnerText, "The {0} element contains illegal inner text: '{1}'. It may not contain inner text unless the {2} attribute is specified.", elementName, innerText, attributeName); | ||
219 | } | ||
220 | |||
221 | public static Message CustomActionMultipleSources(SourceLineNumber sourceLineNumbers, string elementName, string attributeName, string attributeName1, string attributeName2, string attributeName3, string attributeName4, string attributeName5) | ||
222 | { | ||
223 | return Message(sourceLineNumbers, Ids.CustomActionMultipleSources, "The {0}/@{1} attribute cannot coexist with a previously specified attribute on this element. The {0} element may only have one of the following source attributes specified at a time: {2}, {3}, {4}, {5}, or {6}.", elementName, attributeName, attributeName1, attributeName2, attributeName3, attributeName4, attributeName5); | ||
224 | } | ||
225 | |||
226 | public static Message CustomActionMultipleTargets(SourceLineNumber sourceLineNumbers, string elementName, string attributeName, string attributeName1, string attributeName2, string attributeName3, string attributeName4, string attributeName5, string attributeName6, string attributeName7) | ||
227 | { | ||
228 | return Message(sourceLineNumbers, Ids.CustomActionMultipleTargets, "The {0}/@{1} attribute cannot coexist with a previously specified attribute on this element. The {0} element may only have one of the following target attributes specified at a time: {2}, {3}, {4}, {5}, {6}, {7}, or {8}.", elementName, attributeName, attributeName1, attributeName2, attributeName3, attributeName4, attributeName5, attributeName6, attributeName7); | ||
229 | } | ||
230 | |||
231 | public static Message CustomActionSequencedInModule(SourceLineNumber sourceLineNumbers, string sequenceTableName, string actionName) | ||
232 | { | ||
233 | return Message(sourceLineNumbers, Ids.CustomActionSequencedInModule, "The {0} table contains a custom action '{1}' that has a sequence number specified. The Sequence attribute is not allowed for custom actions in a merge module. Please remove the action or use the Before or After attributes to specify where this action should be sequenced relative to another action.", sequenceTableName, actionName); | ||
234 | } | ||
235 | |||
236 | public static Message CustomTableIllegalColumnWidth(SourceLineNumber sourceLineNumbers, string elementName, string attributeName, int value) | ||
237 | { | ||
238 | return Message(sourceLineNumbers, Ids.CustomTableIllegalColumnWidth, "The {0}/@{1} attribute's value, '{2}', is not a valid column width. Valid column widths are 2 or 4.", elementName, attributeName, value); | ||
239 | } | ||
240 | |||
241 | public static Message CustomTableMissingPrimaryKey(SourceLineNumber sourceLineNumbers) | ||
242 | { | ||
243 | return Message(sourceLineNumbers, Ids.CustomTableMissingPrimaryKey, "The CustomTable is missing a Column element with the PrimaryKey attribute set to 'yes'. At least one column must be marked as the primary key."); | ||
244 | } | ||
245 | |||
246 | public static Message CustomTableNameTooLong(SourceLineNumber sourceLineNumbers, string elementName, string attributeName, string value) | ||
247 | { | ||
248 | return Message(sourceLineNumbers, Ids.CustomTableNameTooLong, "The {0}/@{1} attribute's value, '{2}', is too long for a table name. It cannot be more than than 31 characters long.", elementName, attributeName, value); | ||
249 | } | ||
250 | |||
251 | public static Message DatabaseSchemaMismatch(SourceLineNumber sourceLineNumbers, string tableName) | ||
252 | { | ||
253 | return Message(sourceLineNumbers, Ids.DatabaseSchemaMismatch, "The table definition of '{0}' in the target database does not match the table definition in the updated database. A transform requires that the target database schema match the updated database schema.", tableName); | ||
254 | } | ||
255 | |||
256 | public static Message DirectoryPathRequired(string parameter) | ||
257 | { | ||
258 | return Message(null, Ids.DirectoryPathRequired, "The parameter '{0}' must be followed by a directory path.", parameter); | ||
259 | } | ||
260 | |||
261 | public static Message DisallowedMsiProperty(SourceLineNumber sourceLineNumbers, string property, string illegalValueList) | ||
262 | { | ||
263 | return Message(sourceLineNumbers, Ids.DisallowedMsiProperty, "The '{0}' MsiProperty is controlled by the bootstrapper and cannot be authored. (Illegal properties are: {1}.) Remove the MsiProperty element.", property, illegalValueList); | ||
264 | } | ||
265 | |||
266 | public static Message DuplicateCabinetName(SourceLineNumber sourceLineNumbers, string cabinetName) | ||
267 | { | ||
268 | return Message(sourceLineNumbers, Ids.DuplicateCabinetName, "Duplicate cabinet name '{0}' found.", cabinetName); | ||
269 | } | ||
270 | |||
271 | public static Message DuplicateCabinetName2(SourceLineNumber sourceLineNumbers, string cabinetName) | ||
272 | { | ||
273 | return Message(sourceLineNumbers, Ids.DuplicateCabinetName2, "Duplicate cabinet name '{0}' error related to previous error.", cabinetName); | ||
274 | } | ||
275 | |||
276 | public static Message DuplicateCommandLineOptionInExtension(string arg) | ||
277 | { | ||
278 | return Message(null, Ids.DuplicateCommandLineOptionInExtension, "The command line option '{0}' has already been loaded by another Heat extension.", arg); | ||
279 | } | ||
280 | |||
281 | public static Message DuplicateComponentGuids(SourceLineNumber sourceLineNumbers, string componentId, string guid, string type, string keyPath) | ||
282 | { | ||
283 | return Message(sourceLineNumbers, Ids.DuplicateComponentGuids, "Component/@Id='{0}' with {2} '{3}' has a @Guid value '{1}' that duplicates another component in this package. It is recommended to give each component its own unique GUID.", componentId, guid, type, keyPath); | ||
284 | } | ||
285 | |||
286 | public static Message DuplicateContextValue(SourceLineNumber sourceLineNumbers, string contextValue) | ||
287 | { | ||
288 | return Message(sourceLineNumbers, Ids.DuplicateContextValue, "The context value '{0}' was duplicated. Context values must be distinct.", contextValue); | ||
289 | } | ||
290 | |||
291 | public static Message DuplicatedUiLocalization(SourceLineNumber sourceLineNumbers, string controlName, string dialogName) | ||
292 | { | ||
293 | return Message(sourceLineNumbers, Ids.DuplicatedUiLocalization, "The localization for control {0} in dialog {1} is duplicated. Only one localization per control is allowed.", controlName, dialogName); | ||
294 | } | ||
295 | |||
296 | public static Message DuplicatedUiLocalization(SourceLineNumber sourceLineNumbers, string dialogName) | ||
297 | { | ||
298 | return Message(sourceLineNumbers, Ids.DuplicatedUiLocalization, "The localization for dialog {0} is duplicated. Only one localization per dialog is allowed.", dialogName); | ||
299 | } | ||
300 | |||
301 | public static Message DuplicateExtensionPreprocessorType(string extension, string variablePrefix, string collidingExtension) | ||
302 | { | ||
303 | return Message(null, Ids.DuplicateExtensionPreprocessorType, "The extension '{0}' uses the same preprocessor variable prefix, '{1}', as previously loaded extension '{2}'. Please remove one of the extensions or rename the prefix to avoid the collision.", extension, variablePrefix, collidingExtension); | ||
304 | } | ||
305 | |||
306 | public static Message DuplicateExtensionTable(string extension, string tableName) | ||
307 | { | ||
308 | return Message(null, Ids.DuplicateExtensionTable, "The extension '{0}' contains a definition for table '{1}' that collides with a previously loaded table definition. Please remove one of the conflicting extensions or rename one of the tables to avoid the collision.", extension, tableName); | ||
309 | } | ||
310 | |||
311 | public static Message DuplicateExtensionXmlSchemaNamespace(string extension, string extensionXmlSchemaNamespace, string collidingExtension) | ||
312 | { | ||
313 | return Message(null, Ids.DuplicateExtensionXmlSchemaNamespace, "The extension '{0}' uses the same xml schema namespace, '{1}', as previously loaded extension '{2}'. Please either remove one of the extensions or rename the xml schema namespace to avoid the collision.", extension, extensionXmlSchemaNamespace, collidingExtension); | ||
314 | } | ||
315 | |||
316 | public static Message DuplicateFileId(string fileId) | ||
317 | { | ||
318 | return Message(null, Ids.DuplicateFileId, "Multiple files with ID '{0}' exist. Windows Installer does not support file IDs that differ only by case. Change the file IDs to be unique.", fileId); | ||
319 | } | ||
320 | |||
321 | public static Message DuplicateLocalizationIdentifier(SourceLineNumber sourceLineNumbers, string localizationId) | ||
322 | { | ||
323 | return Message(sourceLineNumbers, Ids.DuplicateLocalizationIdentifier, "The localization identifier '{0}' has been duplicated in multiple locations. Please resolve the conflict.", localizationId); | ||
324 | } | ||
325 | |||
326 | public static Message DuplicateModuleCaseInsensitiveFileIdentifier(SourceLineNumber sourceLineNumbers, string moduleId, string fileId1, string fileId2) | ||
327 | { | ||
328 | return Message(sourceLineNumbers, Ids.DuplicateModuleCaseInsensitiveFileIdentifier, "The merge module '{0}' contains 2 or more file identifiers that only differ by case: '{1}' and '{2}'. The WiX toolset extracts merge module files to the file system using these identifiers. Since most file systems are not case-sensitive a collision is likely. Please contact the owner of the merge module for a fix.", moduleId, fileId1, fileId2); | ||
329 | } | ||
330 | |||
331 | public static Message DuplicateModuleFileIdentifier(SourceLineNumber sourceLineNumbers, string moduleId, string fileId) | ||
332 | { | ||
333 | return Message(sourceLineNumbers, Ids.DuplicateModuleFileIdentifier, "The merge module '{0}' contains a file identifier, '{1}', that is duplicated either in another merge module or in a File/@Id attribute. File identifiers must be unique. Please change one of the file identifiers to a different value.", moduleId, fileId); | ||
334 | } | ||
335 | |||
336 | public static Message DuplicatePrimaryKey(SourceLineNumber sourceLineNumbers, string primaryKey, string tableName) | ||
337 | { | ||
338 | return Message(sourceLineNumbers, Ids.DuplicatePrimaryKey, "The primary key '{0}' is duplicated in table '{1}'. Please remove one of the entries or rename a part of the primary key to avoid the collision.", primaryKey, tableName); | ||
339 | } | ||
340 | |||
341 | public static Message DuplicateProviderDependencyKey(string providerKey, string packageId) | ||
342 | { | ||
343 | return Message(null, Ids.DuplicateProviderDependencyKey, "The provider dependency key '{0}' was already imported from the package with Id '{1}'. Please remove the Provides element with the key '{0}' from the package authoring.", providerKey, packageId); | ||
344 | } | ||
345 | |||
346 | public static Message DuplicateSourcesForOutput(string sourceList, string outputFile) | ||
347 | { | ||
348 | return Message(null, Ids.DuplicateSourcesForOutput, "Multiple source files ({0}) have resulted in the same output file '{1}'. This is likely because the source files only differ in extension or path. Rename the source files to avoid this problem.", sourceList, outputFile); | ||
349 | } | ||
350 | |||
351 | public static Message DuplicateSymbol(SourceLineNumber sourceLineNumbers, string symbolName) | ||
352 | { | ||
353 | return Message(sourceLineNumbers, Ids.DuplicateSymbol, "Duplicate symbol '{0}' found. This typically means that an Id is duplicated. Access modifiers (internal, protected, private) cannot prevent these conflicts. Ensure all your identifiers of a given type (File, Component, Feature) are unique.", symbolName); | ||
354 | } | ||
355 | |||
356 | public static Message DuplicateSymbol(SourceLineNumber sourceLineNumbers, string symbolName, string referencingSourceLineNumber) | ||
357 | { | ||
358 | return Message(sourceLineNumbers, Ids.DuplicateSymbol, "Duplicate symbol '{0}' referenced by {1}. This typically means that an Id is duplicated. Ensure all your identifiers of a given type (File, Component, Feature) are unique or use an access modifier to scope the identfier.", symbolName, referencingSourceLineNumber); | ||
359 | } | ||
360 | |||
361 | public static Message DuplicateSymbol2(SourceLineNumber sourceLineNumbers) | ||
362 | { | ||
363 | return Message(sourceLineNumbers, Ids.DuplicateSymbol2, "Location of symbol related to previous error."); | ||
364 | } | ||
365 | |||
366 | public static Message DuplicateTransform(string transform) | ||
367 | { | ||
368 | return Message(null, Ids.DuplicateTransform, "The transform {0} was included twice on the command line. Each transform can be applied to a patch only once.", transform); | ||
369 | } | ||
370 | |||
371 | public static Message DuplicateVariableDefinition(string variableName, string variableValue, string variableCollidingValue) | ||
372 | { | ||
373 | return Message(null, Ids.DuplicateVariableDefinition, "The variable '{0}' with value '{1}' was previously declared with value '{2}'.", variableName, variableValue, variableCollidingValue); | ||
374 | } | ||
375 | |||
376 | public static Message ExampleGuid(SourceLineNumber sourceLineNumbers, string elementName, string attributeName, string value) | ||
377 | { | ||
378 | return Message(sourceLineNumbers, Ids.ExampleGuid, "The {0}/@{1} attribute's value, '{2}', is not a legal Guid value. A Guid needs to be generated and put in place of '{2}' in the source file.", elementName, attributeName, value); | ||
379 | } | ||
380 | |||
381 | public static Message ExpectedArgument(string argument) | ||
382 | { | ||
383 | return Message(null, Ids.ExpectedArgument, "{0} is expected to be followed by a value. See -? for additional detail.", argument); | ||
384 | } | ||
385 | |||
386 | public static Message ExpectedAttribute(SourceLineNumber sourceLineNumbers, string elementName, string attributeName) | ||
387 | { | ||
388 | return Message(sourceLineNumbers, Ids.ExpectedAttribute, "The {0}/@{1} attribute was not found; it is required.", elementName, attributeName); | ||
389 | } | ||
390 | |||
391 | public static Message ExpectedAttribute(SourceLineNumber sourceLineNumbers, string elementName, string attribute1Name, string attribute2Name, Boolean eitherOr) | ||
392 | { | ||
393 | return Message(sourceLineNumbers, Ids.ExpectedAttribute, "The {0} element must have a value for exactly one of the {1} or {2} attributes.", elementName, attribute1Name, attribute2Name, eitherOr); | ||
394 | } | ||
395 | |||
396 | public static Message ExpectedAttribute(SourceLineNumber sourceLineNumbers, string elementName, string attributeName, string otherAttributeName) | ||
397 | { | ||
398 | return Message(sourceLineNumbers, Ids.ExpectedAttribute, "The {0}/@{1} attribute was not found; it is required when attribute {2} is specified.", elementName, attributeName, otherAttributeName); | ||
399 | } | ||
400 | |||
401 | public static Message ExpectedAttribute(SourceLineNumber sourceLineNumbers, string elementName, string attributeName, string otherAttributeName, string otherAttributeValue) | ||
402 | { | ||
403 | return Message(sourceLineNumbers, Ids.ExpectedAttribute, "The {0}/@{1} attribute was not found; it is required when attribute {2} has a value of '{3}'.", elementName, attributeName, otherAttributeName, otherAttributeValue); | ||
404 | } | ||
405 | |||
406 | public static Message ExpectedAttribute(SourceLineNumber sourceLineNumbers, string elementName, string attributeName, string otherAttributeName, string otherAttributeValue, Boolean otherAttributeValueUnless) | ||
407 | { | ||
408 | return Message(sourceLineNumbers, Ids.ExpectedAttribute, "The {0}/@{1} attribute was not found; it is required unless the attribute {2} has a value of '{3}'.", elementName, attributeName, otherAttributeName, otherAttributeValue, otherAttributeValueUnless); | ||
409 | } | ||
410 | |||
411 | public static Message ExpectedAttributeInElementOrParent(SourceLineNumber sourceLineNumbers, string elementName, string attributeName, string parentElementName) | ||
412 | { | ||
413 | return Message(sourceLineNumbers, Ids.ExpectedAttributeInElementOrParent, "The {0}/@{1} attribute was not found or empty; it is required, or it can be specified in the parent {2} element.", elementName, attributeName, parentElementName); | ||
414 | } | ||
415 | |||
416 | public static Message ExpectedAttributeInElementOrParent(SourceLineNumber sourceLineNumbers, string elementName, string attributeName, string parentElementName, string parentAttributeName) | ||
417 | { | ||
418 | return Message(sourceLineNumbers, Ids.ExpectedAttributeInElementOrParent, "The {0}/@{1} attribute was not found or empty; it is required, or it can be specified in the parent {2}/@{3} attribute.", elementName, attributeName, parentElementName, parentAttributeName); | ||
419 | } | ||
420 | |||
421 | public static Message ExpectedAttributeWithValueWithOtherAttribute(SourceLineNumber sourceLineNumbers, string elementName, string attributeName, string attributeName2) | ||
422 | { | ||
423 | return Message(sourceLineNumbers, Ids.ExpectedAttributeWithValueWithOtherAttribute, "The {0}/@{1} attribute is required to have a value when attribute {2} is present.", elementName, attributeName, attributeName2); | ||
424 | } | ||
425 | |||
426 | public static Message ExpectedAttributeOrElement(SourceLineNumber sourceLineNumbers, string parentElement, string attribute, string childElement) | ||
427 | { | ||
428 | return Message(sourceLineNumbers, Ids.ExpectedAttributeOrElement, "Element '{0}' missing attribute '{1}' or child element '{2}'. Exactly one of those is required.", parentElement, attribute, childElement); | ||
429 | } | ||
430 | |||
431 | public static Message ExpectedAttributes(SourceLineNumber sourceLineNumbers, string elementName, string attributeName1, string attributeName2) | ||
432 | { | ||
433 | return Message(sourceLineNumbers, Ids.ExpectedAttributes, "The {0} element's {1} or {2} attribute was not found; one of these is required.", elementName, attributeName1, attributeName2); | ||
434 | } | ||
435 | |||
436 | public static Message ExpectedAttributes(SourceLineNumber sourceLineNumbers, string elementName, string attributeName1, string attributeName2, string attributeName3) | ||
437 | { | ||
438 | return Message(sourceLineNumbers, Ids.ExpectedAttributes, "The {0} element's {1}, {2}, or {3} attribute was not found; one of these is required.", elementName, attributeName1, attributeName2, attributeName3); | ||
439 | } | ||
440 | |||
441 | public static Message ExpectedAttributes(SourceLineNumber sourceLineNumbers, string elementName, string attributeName1, string attributeName2, string attributeName3, string attributeName4) | ||
442 | { | ||
443 | return Message(sourceLineNumbers, Ids.ExpectedAttributes, "The {0} element's {1}, {2}, {3}, or {4} attribute was not found; one of these is required.", elementName, attributeName1, attributeName2, attributeName3, attributeName4); | ||
444 | } | ||
445 | |||
446 | public static Message ExpectedAttributes(SourceLineNumber sourceLineNumbers, string elementName, string attributeName1, string attributeName2, string attributeName3, string attributeName4, string attributeName5) | ||
447 | { | ||
448 | return Message(sourceLineNumbers, Ids.ExpectedAttributes, "The {0} element's {1}, {2}, {3}, {4}, or {5} attribute was not found; one of these is required.", elementName, attributeName1, attributeName2, attributeName3, attributeName4, attributeName5); | ||
449 | } | ||
450 | |||
451 | public static Message ExpectedAttributes(SourceLineNumber sourceLineNumbers, string elementName, string attributeName1, string attributeName2, string attributeName3, string attributeName4, string attributeName5, string attributeName6) | ||
452 | { | ||
453 | return Message(sourceLineNumbers, Ids.ExpectedAttributes, "The {0} element's {1}, {2}, {3}, {4}, {5}, or {6} attribute was not found; one of these is required.", elementName, attributeName1, attributeName2, attributeName3, attributeName4, attributeName5, attributeName6); | ||
454 | } | ||
455 | |||
456 | public static Message ExpectedAttributes(SourceLineNumber sourceLineNumbers, string elementName, string attributeName1, string attributeName2, string attributeName3, string attributeName4, string attributeName5, string attributeName6, string attributeName7) | ||
457 | { | ||
458 | return Message(sourceLineNumbers, Ids.ExpectedAttributes, "The {0} element's {1}, {2}, {3}, {4}, {5}, {6}, or {7} attribute was not found; one of these is required.", elementName, attributeName1, attributeName2, attributeName3, attributeName4, attributeName5, attributeName6, attributeName7); | ||
459 | } | ||
460 | |||
461 | public static Message ExpectedAttributesWithOtherAttribute(SourceLineNumber sourceLineNumbers, string elementName, string attributeName1, string attributeName2) | ||
462 | { | ||
463 | return Message(sourceLineNumbers, Ids.ExpectedAttributesWithOtherAttribute, "The {0} element's {1} or {2} attribute was not found; at least one of these attributes must be specified.", elementName, attributeName1, attributeName2); | ||
464 | } | ||
465 | |||
466 | public static Message ExpectedAttributesWithOtherAttribute(SourceLineNumber sourceLineNumbers, string elementName, string attributeName1, string attributeName2, string otherAttributeName) | ||
467 | { | ||
468 | return Message(sourceLineNumbers, Ids.ExpectedAttributesWithOtherAttribute, "The {0} element's {1} or {2} attribute was not found; one of these is required when attribute {3} is present.", elementName, attributeName1, attributeName2, otherAttributeName); | ||
469 | } | ||
470 | |||
471 | public static Message ExpectedAttributesWithOtherAttribute(SourceLineNumber sourceLineNumbers, string elementName, string attributeName1, string attributeName2, string otherAttributeName, string otherAttributeValue) | ||
472 | { | ||
473 | return Message(sourceLineNumbers, Ids.ExpectedAttributesWithOtherAttribute, "The {0} element's {1} or {2} attribute was not found; one of these is required when attribute {3} has a value of '{4}'.", elementName, attributeName1, attributeName2, otherAttributeName, otherAttributeValue); | ||
474 | } | ||
475 | |||
476 | public static Message ExpectedAttributesWithoutOtherAttribute(SourceLineNumber sourceLineNumbers, string elementName, string attributeName1, string attributeName2, string otherAttributeName) | ||
477 | { | ||
478 | return Message(sourceLineNumbers, Ids.ExpectedAttributesWithoutOtherAttribute, "The {0} element's {1} or {2} attribute was not found; one of these is required without attribute {3} present.", elementName, attributeName1, attributeName2, otherAttributeName); | ||
479 | } | ||
480 | |||
481 | public static Message ExpectedAttributeWhenElementNotUnderElement(SourceLineNumber sourceLineNumbers, string elementName, string attributeName, string parentElementName) | ||
482 | { | ||
483 | return Message(sourceLineNumbers, Ids.ExpectedAttributeWhenElementNotUnderElement, "The '{0}/@{1}' attribute was not found; it is required when element '{0}' is not nested under a '{2}' element.", elementName, attributeName, parentElementName); | ||
484 | } | ||
485 | |||
486 | public static Message ExpectedAttributeWithElement(SourceLineNumber sourceLineNumbers, string elementName, string attribute, string childElementName) | ||
487 | { | ||
488 | return Message(sourceLineNumbers, Ids.ExpectedAttributeWithElement, "The {0} element must have attribute '{1}' when child element '{2}' is present.", elementName, attribute, childElementName); | ||
489 | } | ||
490 | |||
491 | public static Message ExpectedAttributeWithoutOtherAttribute(SourceLineNumber sourceLineNumbers, string elementName, string attributeName, string otherAttributeName) | ||
492 | { | ||
493 | return Message(sourceLineNumbers, Ids.ExpectedAttributeWithoutOtherAttributes, "The {0} element's {1} attribute was not found; it is required without attribute {2} present.", elementName, attributeName, otherAttributeName); | ||
494 | } | ||
495 | |||
496 | public static Message ExpectedAttributeWithoutOtherAttributes(SourceLineNumber sourceLineNumbers, string elementName, string attributeName, string otherAttributeName1, string otherAttributeName2) | ||
497 | { | ||
498 | return Message(sourceLineNumbers, Ids.ExpectedAttributeWithoutOtherAttributes, "The {0} element's {1} attribute was not found; it is required without attribute {2} or {3} present.", elementName, attributeName, otherAttributeName1, otherAttributeName2); | ||
499 | } | ||
500 | |||
501 | public static Message ExpectedBinaryCategory(SourceLineNumber sourceLineNumbers) | ||
502 | { | ||
503 | return Message(sourceLineNumbers, Ids.ExpectedBinaryCategory, "The Column element specifies a binary column but does not have the correct Category specified. Windows Installer requires binary columns to specify their category as binary. Please set the Category attribute's value to 'Binary'."); | ||
504 | } | ||
505 | |||
506 | public static Message ExpectedClientPatchIdInWixMsp() | ||
507 | { | ||
508 | return Message(null, Ids.ExpectedClientPatchIdInWixMsp, "The WixMsp is missing the client patch ID. Recompile the patch source files with the latest WiX toolset."); | ||
509 | } | ||
510 | |||
511 | public static Message ExpectedDecompiler(string identifier) | ||
512 | { | ||
513 | return Message(null, Ids.ExpectedDecompiler, "No decompiler was provided. {0} requires a decompiler.", identifier); | ||
514 | } | ||
515 | |||
516 | public static Message ExpectedDirectory(string directory) | ||
517 | { | ||
518 | return Message(null, Ids.ExpectedDirectory, "The directory '{0}' could not be found.", directory); | ||
519 | } | ||
520 | |||
521 | public static Message ExpectedDirectoryGotFile(string option, string path) | ||
522 | { | ||
523 | return Message(null, Ids.ExpectedDirectoryGotFile, "The {0} option requires a directory, but the provided path is a file: {1}", option, path); | ||
524 | } | ||
525 | |||
526 | public static Message ExpectedElement(SourceLineNumber sourceLineNumbers, string elementName) | ||
527 | { | ||
528 | return Message(sourceLineNumbers, Ids.ExpectedElement, "A {0} element must have at least one child element.", elementName); | ||
529 | } | ||
530 | |||
531 | public static Message ExpectedElement(SourceLineNumber sourceLineNumbers, string elementName, string childName) | ||
532 | { | ||
533 | return Message(sourceLineNumbers, Ids.ExpectedElement, "A {0} element must have at least one child element of type {1}.", elementName, childName); | ||
534 | } | ||
535 | |||
536 | public static Message ExpectedElement(SourceLineNumber sourceLineNumbers, string elementName, string childName1, string childName2) | ||
537 | { | ||
538 | return Message(sourceLineNumbers, Ids.ExpectedElement, "A {0} element must have at least one child element of type {1} or {2}.", elementName, childName1, childName2); | ||
539 | } | ||
540 | |||
541 | public static Message ExpectedElement(SourceLineNumber sourceLineNumbers, string elementName, string childName1, string childName2, string childName3) | ||
542 | { | ||
543 | return Message(sourceLineNumbers, Ids.ExpectedElement, "A {0} element must have at least one child element of type {1}, {2}, or {3}.", elementName, childName1, childName2, childName3); | ||
544 | } | ||
545 | |||
546 | public static Message ExpectedElement(SourceLineNumber sourceLineNumbers, string elementName, string childName1, string childName2, string childName3, string childName4) | ||
547 | { | ||
548 | return Message(sourceLineNumbers, Ids.ExpectedElement, "A {0} element must have at least one child element of type {1}, {2}, {3}, or {4}.", elementName, childName1, childName2, childName3, childName4); | ||
549 | } | ||
550 | |||
551 | public static Message ExpectedEndElement(SourceLineNumber sourceLineNumbers, string elementName) | ||
552 | { | ||
553 | return Message(sourceLineNumbers, Ids.ExpectedEndElement, "The end element matching the '{0}' start element was not found.", elementName); | ||
554 | } | ||
555 | |||
556 | public static Message ExpectedEndforeach(SourceLineNumber sourceLineNumbers) | ||
557 | { | ||
558 | return Message(sourceLineNumbers, Ids.ExpectedEndforeach, "A <?foreach?> statement was found that had no matching <?endforeach?>."); | ||
559 | } | ||
560 | |||
561 | public static Message ExpectedExpressionAfterNot(SourceLineNumber sourceLineNumbers, string expression) | ||
562 | { | ||
563 | return Message(sourceLineNumbers, Ids.ExpectedExpressionAfterNot, "Expecting an argument for 'NOT' in expression '{0}'.", expression); | ||
564 | } | ||
565 | |||
566 | public static Message ExpectedFileGotDirectory(string option, string path) | ||
567 | { | ||
568 | return Message(null, Ids.ExpectedFileGotDirectory, "The {0} option requires a file, but the provided path is a directory: {1}", option, path); | ||
569 | } | ||
570 | |||
571 | public static Message ExpectedMediaCabinet(SourceLineNumber sourceLineNumbers, string fileId, int diskId) | ||
572 | { | ||
573 | return Message(sourceLineNumbers, Ids.ExpectedMediaCabinet, "The file '{0}' should be compressed but is not part of a compressed media. Files will be compressed if either the File/@Compressed or Package/@Compressed attributes are set to 'yes'. This can be fixed by setting the Media/@Cabinet attribute for media '{1}'.", fileId, diskId); | ||
574 | } | ||
575 | |||
576 | public static Message ExpectedMediaRowsInWixMsp() | ||
577 | { | ||
578 | return Message(null, Ids.ExpectedMediaRowsInWixMsp, "The WixMsp has no media rows defined."); | ||
579 | } | ||
580 | |||
581 | public static Message ExpectedParentWithAttribute(SourceLineNumber sourceLineNumbers, string parentElement, string attribute, string grandparentElement) | ||
582 | { | ||
583 | return Message(sourceLineNumbers, Ids.ExpectedParentWithAttribute, "When the {0}/@{1} attribute is specified, the {0} element must be nested under a {2} element.", parentElement, attribute, grandparentElement); | ||
584 | } | ||
585 | |||
586 | public static Message ExpectedPatchIdInWixMsp() | ||
587 | { | ||
588 | return Message(null, Ids.ExpectedPatchIdInWixMsp, "The WixMsp is missing the patch ID."); | ||
589 | } | ||
590 | |||
591 | public static Message ExpectedRowInPatchCreationPackage(string tableName) | ||
592 | { | ||
593 | return Message(null, Ids.ExpectedRowInPatchCreationPackage, "Could not find a row in the '{0}' table for this patch creation package. Patch creation packages must contain at least one row in the '{0}' table.", tableName); | ||
594 | } | ||
595 | |||
596 | public static Message ExpectedSignedCabinetName(SourceLineNumber sourceLineNumbers) | ||
597 | { | ||
598 | return Message(sourceLineNumbers, Ids.ExpectedSignedCabinetName, "The Media/@Cabinet attribute was not found; it is required when this element contains a DigitalSignature child element. This is because Windows Installer can only verify the digital signatures of external cabinets. Please either remove the DigitalSignature element or specify a valid external cabinet name via the Cabinet attribute."); | ||
599 | } | ||
600 | |||
601 | public static Message ExpectedTableInMergeModule(string identifier) | ||
602 | { | ||
603 | return Message(null, Ids.ExpectedTableInMergeModule, "The table '{0}' was expected but was missing.", identifier); | ||
604 | } | ||
605 | |||
606 | public static Message ExpectedVariable(SourceLineNumber sourceLineNumbers, string expression) | ||
607 | { | ||
608 | return Message(sourceLineNumbers, Ids.ExpectedVariable, "A required variable was missing in the expression '{0}'.", expression); | ||
609 | } | ||
610 | |||
611 | public static Message ExpectedWixVariableValue(string variableId) | ||
612 | { | ||
613 | return Message(null, Ids.ExpectedWixVariableValue, "The WiX variable '{0}' was declared without a value. Please specify a value for the variable.", variableId); | ||
614 | } | ||
615 | |||
616 | public static Message FamilyNameTooLong(SourceLineNumber sourceLineNumbers, string elementName, string attributeName, string value, int length) | ||
617 | { | ||
618 | return Message(sourceLineNumbers, Ids.FamilyNameTooLong, "The {0}/@{1} attribute's value, '{2}', is {3} characters long. This is too long for a family name because the maximum allowed length is 8 characters long.", elementName, attributeName, value, length); | ||
619 | } | ||
620 | |||
621 | public static Message FeatureCannotFavorAndDisallowAdvertise(SourceLineNumber sourceLineNumbers, string elementName, string attributeName, string value, string otherAttributeName, string otherValue) | ||
622 | { | ||
623 | return Message(sourceLineNumbers, Ids.FeatureCannotFavorAndDisallowAdvertise, "The {0}/@{1} attribute's value, '{2}', cannot coexist with the {3} attribute's value of '{4}'. These options would ask the installer to disallow the advertised state for this feature while at the same time favoring it.", elementName, attributeName, value, otherAttributeName, otherValue); | ||
624 | } | ||
625 | |||
626 | public static Message FeatureCannotFollowParentAndFavorLocalOrSource(SourceLineNumber sourceLineNumbers, string elementName, string attributeName, string otherAttributeName, string otherValue) | ||
627 | { | ||
628 | return Message(sourceLineNumbers, Ids.FeatureCannotFollowParentAndFavorLocalOrSource, "The {0}/@{1} attribute cannot be specified if the {2} attribute's value is '{3}'. These options would ask the installer to force this feature to follow the parent installation state and simultaneously favor a particular installation state just for this feature.", elementName, attributeName, otherAttributeName, otherValue); | ||
629 | } | ||
630 | |||
631 | public static Message FeatureConfigurableDirectoryNotUppercase(SourceLineNumber sourceLineNumbers, string elementName, string attributeName, string value) | ||
632 | { | ||
633 | return Message(sourceLineNumbers, Ids.FeatureConfigurableDirectoryNotUppercase, "The {0}/@{1} attribute's value, '{2}', contains lowercase characters. Since this directory is user-configurable, it needs to be a public property. This means the value must be completely uppercase.", elementName, attributeName, value); | ||
634 | } | ||
635 | |||
636 | public static Message FeatureNameTooLong(SourceLineNumber sourceLineNumbers, string elementName, string attributeName, string attributeValue) | ||
637 | { | ||
638 | return Message(sourceLineNumbers, Ids.FeatureNameTooLong, "The {0}/@{1} attribute with value '{2}', is too long for a feature name. Due to limitations in the Windows Installer, feature names cannot be longer than 38 characters in length.", elementName, attributeName, attributeValue); | ||
639 | } | ||
640 | |||
641 | public static Message FileIdentifierNotFound(SourceLineNumber sourceLineNumbers, string fileIdentifier) | ||
642 | { | ||
643 | return Message(sourceLineNumbers, Ids.FileIdentifierNotFound, "The file row with identifier '{0}' could not be found.", fileIdentifier); | ||
644 | } | ||
645 | |||
646 | public static Message FileInUse(SourceLineNumber sourceLineNumbers, string file) | ||
647 | { | ||
648 | return Message(sourceLineNumbers, Ids.FileInUse, "The process can not access the file '{0}' because it is being used by another process.", file); | ||
649 | } | ||
650 | |||
651 | public static Message FileNotFound(SourceLineNumber sourceLineNumbers, string file) | ||
652 | { | ||
653 | return Message(sourceLineNumbers, Ids.FileNotFound, "The system cannot find the file '{0}'.", file); | ||
654 | } | ||
655 | |||
656 | public static Message FileNotFound(SourceLineNumber sourceLineNumbers, string file, string fileType) | ||
657 | { | ||
658 | return Message(sourceLineNumbers, Ids.FileNotFound, "The system cannot find the file '{0}' with type '{1}'.", file, fileType); | ||
659 | } | ||
660 | |||
661 | public static Message FileNotFound(SourceLineNumber sourceLineNumbers, string file, string fileType, IEnumerable<string> checkedPaths) | ||
662 | { | ||
663 | var combinedCheckedPaths = String.Join(", ", checkedPaths); | ||
664 | return Message(sourceLineNumbers, Ids.FileNotFound, "The system cannot find the file '{0}' with type '{1}'. The following paths were checked: {2}", file, fileType, combinedCheckedPaths); | ||
665 | } | ||
666 | |||
667 | public static Message FileOrDirectoryPathRequired(string parameter) | ||
668 | { | ||
669 | return Message(null, Ids.FileOrDirectoryPathRequired, "The parameter '{0}' must be followed by a file or directory path. To specify a directory path the string must end with a backslash, for example: \"C:\\Path\\\".", parameter); | ||
670 | } | ||
671 | |||
672 | public static Message FilePathRequired(string parameter) | ||
673 | { | ||
674 | return Message(null, Ids.FilePathRequired, "The parameter '{0}' must be followed by a file path.", parameter); | ||
675 | } | ||
676 | |||
677 | public static Message FileTooLarge(SourceLineNumber sourceLineNumbers, string fileName) | ||
678 | { | ||
679 | return Message(sourceLineNumbers, Ids.FileTooLarge, "'{0}' is too large, file size must be less than 2147483648.", fileName); | ||
680 | } | ||
681 | |||
682 | public static Message FileWriteError(string path, string error) | ||
683 | { | ||
684 | return Message(null, Ids.FileWriteError, "Error writing to the path: '{0}'. Error message: '{1}'", path, error); | ||
685 | } | ||
686 | |||
687 | public static Message FinishCabFailed() | ||
688 | { | ||
689 | return Message(null, Ids.FinishCabFailed, "An error (E_FAIL) was returned while finalizing a CAB file. This most commonly happens when creating a CAB file with more than 65535 files in it or a compressed size greater than 2GB. Either reduce the number of files in your installation package or split your installation package's files into more than one CAB file using the Media element."); | ||
690 | } | ||
691 | |||
692 | public static Message FullTempDirectory(string prefix, string directory) | ||
693 | { | ||
694 | return Message(null, Ids.FullTempDirectory, "Unable to create temporary file. A common cause is that too many files that have names beginning with '{0}' are present. Delete any unneeded files in the '{1}' directory and try again.", prefix, directory); | ||
695 | } | ||
696 | |||
697 | public static Message GACAssemblyIdentityWarning(SourceLineNumber sourceLineNumbers, string fileName, string assemblyName) | ||
698 | { | ||
699 | return Message(sourceLineNumbers, Ids.GACAssemblyIdentityWarning, "The destination name of file '{0}' does not match its assembly name '{1}' in your authoring. This will cause an installation failure for this assembly, because it will be installed to the Global Assembly Cache. To fix this error, update File/@Name of file '{0}' to be the actual name of the assembly.", fileName, assemblyName); | ||
700 | } | ||
701 | |||
702 | public static Message GacAssemblyNoStrongName(SourceLineNumber sourceLineNumbers, string assemblyName, string componentName) | ||
703 | { | ||
704 | return Message(sourceLineNumbers, Ids.GacAssemblyNoStrongName, "Assembly {0} in component {1} has no strong name and has been marked to be placed in the GAC. All assemblies installed to the GAC must have a valid strong name.", assemblyName, componentName); | ||
705 | } | ||
706 | |||
707 | public static Message GenericReadNotAllowed(SourceLineNumber sourceLineNumbers) | ||
708 | { | ||
709 | return Message(sourceLineNumbers, Ids.GenericReadNotAllowed, "Permission elements cannot have GenericRead as the only permission specified. Include at least one other permission."); | ||
710 | } | ||
711 | |||
712 | public static Message GuidContainsLowercaseLetters(SourceLineNumber sourceLineNumbers, string elementName, string attributeName, string value) | ||
713 | { | ||
714 | return Message(sourceLineNumbers, Ids.GuidContainsLowercaseLetters, "The {0}/@{1} attribute's value, '{2}', is a mixed-case guid. All letters in a guid value should be uppercase.", elementName, attributeName, value); | ||
715 | } | ||
716 | |||
717 | public static Message HarvestSourceNotSpecified() | ||
718 | { | ||
719 | return Message(null, Ids.HarvestSourceNotSpecified, "A harvest source must be specified after the harvest type and can be followed by harvester arguments."); | ||
720 | } | ||
721 | |||
722 | public static Message HarvestTypeNotFound() | ||
723 | { | ||
724 | return Message(null, Ids.HarvestTypeNotFound, "The harvest type was not found in the list of loaded Heat extensions."); | ||
725 | } | ||
726 | |||
727 | public static Message HarvestTypeNotFound(string harvestType) | ||
728 | { | ||
729 | return Message(null, Ids.HarvestTypeNotFound, "The harvest type '{0}' was specified. Harvest types cannot start with a '-'. Remove the '-' to specify a valid harvest type.", harvestType); | ||
730 | } | ||
731 | |||
732 | public static Message IdentifierNotFound(string type, string identifier) | ||
733 | { | ||
734 | return Message(null, Ids.IdentifierNotFound, "An expected identifier ('{1}', of type '{0}') was not found.", type, identifier); | ||
735 | } | ||
736 | |||
737 | public static Message IdentifierTooLongError(SourceLineNumber sourceLineNumbers, string elementName, string attributeName, string value, int maxLength) | ||
738 | { | ||
739 | return Message(sourceLineNumbers, Ids.IdentifierTooLongError, "The {0}/@{1} attribute's value, '{2}', is too long. {0}/@{1} attribute's must be {3} characters long or less.", elementName, attributeName, value, maxLength); | ||
740 | } | ||
741 | |||
742 | public static Message IllegalAttributeExceptOnElement(SourceLineNumber sourceLineNumbers, string elementName, string attributeName, string expectedElementName) | ||
743 | { | ||
744 | return Message(sourceLineNumbers, Ids.IllegalAttributeExceptOnElement, "The {1} attribute can only be specified on the {2} element.", elementName, attributeName, expectedElementName); | ||
745 | } | ||
746 | |||
747 | public static Message IllegalAttributeInMergeModule(SourceLineNumber sourceLineNumbers, string elementName, string attributeName) | ||
748 | { | ||
749 | return Message(sourceLineNumbers, Ids.IllegalAttributeInMergeModule, "The {0}/@{1} attribute cannot be specified in a merge module.", elementName, attributeName); | ||
750 | } | ||
751 | |||
752 | public static Message IllegalAttributeValue(SourceLineNumber sourceLineNumbers, string elementName, string attributeName, string value, string legalValue1) | ||
753 | { | ||
754 | return Message(sourceLineNumbers, Ids.IllegalAttributeValue, "The {0}/@{1} attribute's value, '{2}', is not one of the legal options: '{3}'.", elementName, attributeName, value, legalValue1); | ||
755 | } | ||
756 | |||
757 | public static Message IllegalAttributeValue(SourceLineNumber sourceLineNumbers, string elementName, string attributeName, string value, string legalValue1, string legalValue2) | ||
758 | { | ||
759 | return Message(sourceLineNumbers, Ids.IllegalAttributeValue, "The {0}/@{1} attribute's value, '{2}', is not one of the legal options: '{3}', or '{4}'.", elementName, attributeName, value, legalValue1, legalValue2); | ||
760 | } | ||
761 | |||
762 | public static Message IllegalAttributeValue(SourceLineNumber sourceLineNumbers, string elementName, string attributeName, string value, string legalValue1, string legalValue2, string legalValue3) | ||
763 | { | ||
764 | return Message(sourceLineNumbers, Ids.IllegalAttributeValue, "The {0}/@{1} attribute's value, '{2}', is not one of the legal options: '{3}', '{4}', or '{5}'.", elementName, attributeName, value, legalValue1, legalValue2, legalValue3); | ||
765 | } | ||
766 | |||
767 | public static Message IllegalAttributeValue(SourceLineNumber sourceLineNumbers, string elementName, string attributeName, string value, string legalValue1, string legalValue2, string legalValue3, string legalValue4) | ||
768 | { | ||
769 | return Message(sourceLineNumbers, Ids.IllegalAttributeValue, "The {0}/@{1} attribute's value, '{2}', is not one of the legal options: '{3}', '{4}', '{5}', or '{6}'.", elementName, attributeName, value, legalValue1, legalValue2, legalValue3, legalValue4); | ||
770 | } | ||
771 | |||
772 | public static Message IllegalAttributeValue(SourceLineNumber sourceLineNumbers, string elementName, string attributeName, string value, string legalValue1, string legalValue2, string legalValue3, string legalValue4, string legalValue5) | ||
773 | { | ||
774 | return Message(sourceLineNumbers, Ids.IllegalAttributeValue, "The {0}/@{1} attribute's value, '{2}', is not one of the legal options: '{3}', '{4}', '{5}', '{6}', or '{7}'.", elementName, attributeName, value, legalValue1, legalValue2, legalValue3, legalValue4, legalValue5); | ||
775 | } | ||
776 | |||
777 | public static Message IllegalAttributeValue(SourceLineNumber sourceLineNumbers, string elementName, string attributeName, string value, string legalValue1, string legalValue2, string legalValue3, string legalValue4, string legalValue5, string legalValue6) | ||
778 | { | ||
779 | return Message(sourceLineNumbers, Ids.IllegalAttributeValue, "The {0}/@{1} attribute's value, '{2}', is not one of the legal options: '{3}', '{4}', '{5}', '{6}', '{7}', or '{8}'.", elementName, attributeName, value, legalValue1, legalValue2, legalValue3, legalValue4, legalValue5, legalValue6); | ||
780 | } | ||
781 | |||
782 | public static Message IllegalAttributeValue(SourceLineNumber sourceLineNumbers, string elementName, string attributeName, string value, string legalValue1, string legalValue2, string legalValue3, string legalValue4, string legalValue5, string legalValue6, string legalValue7) | ||
783 | { | ||
784 | return Message(sourceLineNumbers, Ids.IllegalAttributeValue, "The {0}/@{1} attribute's value, '{2}', is not one of the legal options: '{3}', '{4}', '{5}', '{6}', '{7}', '{8}', or '{9}'.", elementName, attributeName, value, legalValue1, legalValue2, legalValue3, legalValue4, legalValue5, legalValue6, legalValue7); | ||
785 | } | ||
786 | |||
787 | public static Message IllegalAttributeValue(SourceLineNumber sourceLineNumbers, string elementName, string attributeName, string value, string legalValue1, string legalValue2, string legalValue3, string legalValue4, string legalValue5, string legalValue6, string legalValue7, string legalValue8) | ||
788 | { | ||
789 | return Message(sourceLineNumbers, Ids.IllegalAttributeValue, "The {0}/@{1} attribute's value, '{2}', is not one of the legal options: '{3}', '{4}', '{5}', '{6}', '{7}', '{8}', '{9}', or '{10}'.", elementName, attributeName, value, legalValue1, legalValue2, legalValue3, legalValue4, legalValue5, legalValue6, legalValue7, legalValue8); | ||
790 | } | ||
791 | |||
792 | public static Message IllegalAttributeValue(SourceLineNumber sourceLineNumbers, string elementName, string attributeName, string value, string legalValue1, string legalValue2, string legalValue3, string legalValue4, string legalValue5, string legalValue6, string legalValue7, string legalValue8, string legalValue9, string legalValue10, string legalValue11, string legalValue12, string legalValue13, string legalValue14, string legalValue15, string legalValue16, string legalValue17, string legalValue18, string legalValue19, string legalValue20, string legalValue21, string legalValue22, string legalValue23, string legalValue24, string legalValue25, string legalValue26) | ||
793 | { | ||
794 | return Message(sourceLineNumbers, Ids.IllegalAttributeValue, "The {0}/@{1} attribute's value, '{2}', is not one of the legal options: '{3}', '{4}', '{5}', '{6}', '{7}', '{8}', '{9}', '{10}', '{11}', '{12}', '{13}', '{14}', '{15}', '{16}', '{17}', '{18}', '{19}', '{20}', '{21}', '{22}', '{23}', '{24}', '{25}', '{26}', '{27}', or '{28}'.", elementName, attributeName, value, legalValue1, legalValue2, legalValue3, legalValue4, legalValue5, legalValue6, legalValue7, legalValue8, legalValue9, legalValue10, legalValue11, legalValue12, legalValue13, legalValue14, legalValue15, legalValue16, legalValue17, legalValue18, legalValue19, legalValue20, legalValue21, legalValue22, legalValue23, legalValue24, legalValue25, legalValue26); | ||
795 | } | ||
796 | |||
797 | public static Message IllegalAttributeValueWhenNested(SourceLineNumber sourceLineNumbers, string elementName, string attributeName, string attrivuteValue, string parentElementName) | ||
798 | { | ||
799 | return Message(sourceLineNumbers, Ids.IllegalAttributeValueWhenNested, "The {0}/@{1} attribute value, '{2}', cannot be specified when the {0} element is nested underneath a {3} element.", elementName, attributeName, attrivuteValue, parentElementName); | ||
800 | } | ||
801 | |||
802 | public static Message IllegalAttributeValueWithIllegalList(SourceLineNumber sourceLineNumbers, string elementName, string attributeName, string value, string illegalValueList) | ||
803 | { | ||
804 | return Message(sourceLineNumbers, Ids.IllegalAttributeValueWithIllegalList, "The {0}/@{1} attribute's value, '{2}', is one of the illegal options: {3}.", elementName, attributeName, value, illegalValueList); | ||
805 | } | ||
806 | |||
807 | public static Message IllegalAttributeValueWithLegalList(SourceLineNumber sourceLineNumbers, string elementName, string attributeName, string value, string legalValueList) | ||
808 | { | ||
809 | return Message(sourceLineNumbers, Ids.IllegalAttributeValueWithLegalList, "The {0}/@{1} attribute's value, '{2}', is not one of the legal options: {3}.", elementName, attributeName, value, legalValueList); | ||
810 | } | ||
811 | |||
812 | public static Message IllegalAttributeValueWithOtherAttribute(SourceLineNumber sourceLineNumbers, string elementName, string attributeName, string attributeValue, string otherAttributeName) | ||
813 | { | ||
814 | return Message(sourceLineNumbers, Ids.IllegalAttributeValueWithOtherAttribute, "The {0}/@{1} attribute's value, '{2}', cannot be specified with attribute {3} present.", elementName, attributeName, attributeValue, otherAttributeName); | ||
815 | } | ||
816 | |||
817 | public static Message IllegalAttributeValueWithOtherAttribute(SourceLineNumber sourceLineNumbers, string elementName, string attributeName, string attributeValue, string otherAttributeName, string otherAttributeValue) | ||
818 | { | ||
819 | return Message(sourceLineNumbers, Ids.IllegalAttributeValueWithOtherAttribute, "The {0}/@{1} attribute's value, '{2}', cannot be specified with attribute {3} present with value '{4}'.", elementName, attributeName, attributeValue, otherAttributeName, otherAttributeValue); | ||
820 | } | ||
821 | |||
822 | public static Message IllegalAttributeValueWithoutOtherAttribute(SourceLineNumber sourceLineNumbers, string elementName, string attributeName, string attributeValue, string otherAttributeName, string otherAttributeValue) | ||
823 | { | ||
824 | return Message(sourceLineNumbers, Ids.IllegalAttributeValueWithoutOtherAttribute, "The {0}/@{1} attribute's value, '{2}', can only be specified with attribute {3} present with value '{4}'.", elementName, attributeName, attributeValue, otherAttributeName, otherAttributeValue); | ||
825 | } | ||
826 | |||
827 | public static Message IllegalAttributeValueWithoutOtherAttribute(SourceLineNumber sourceLineNumbers, string elementName, string attributeName, string attributeValue, string otherAttributeName) | ||
828 | { | ||
829 | return Message(sourceLineNumbers, Ids.IllegalAttributeValueWithoutOtherAttribute, "The {0}/@{1} attribute's value, '{2}', cannot be specified without attribute {3} present.", elementName, attributeName, attributeValue, otherAttributeName); | ||
830 | } | ||
831 | |||
832 | public static Message IllegalAttributeWhenAdvertised(SourceLineNumber sourceLineNumbers, string elementName, string attributeName) | ||
833 | { | ||
834 | return Message(sourceLineNumbers, Ids.IllegalAttributeWhenAdvertised, "The {0}/@{1} attribute cannot be specified because the element is advertised.", elementName, attributeName); | ||
835 | } | ||
836 | |||
837 | public static Message IllegalAttributeWhenNested(SourceLineNumber sourceLineNumbers, string elementName, string attributeName, string parentElement) | ||
838 | { | ||
839 | return Message(sourceLineNumbers, Ids.IllegalAttributeWhenNested, "The {0}/@{1} attribute cannot be specified when the {0} element is nested underneath a {2} element. If this {0} is a member of a ComponentGroup where ComponentGroup/@{1} is set, then the {0}/@{1} attribute should be removed.", elementName, attributeName, parentElement); | ||
840 | } | ||
841 | |||
842 | public static Message IllegalAttributeWithInnerText(SourceLineNumber sourceLineNumbers, string elementName, string attributeName) | ||
843 | { | ||
844 | return Message(sourceLineNumbers, Ids.IllegalAttributeWithInnerText, "The {0}/@{1} attribute cannot be specified when the element has body text as well. Specify either the attribute or the body, but not both.", elementName, attributeName); | ||
845 | } | ||
846 | |||
847 | public static Message IllegalAttributeWithOtherAttribute(SourceLineNumber sourceLineNumbers, string elementName, string attributeName, string otherAttributeName) | ||
848 | { | ||
849 | return Message(sourceLineNumbers, Ids.IllegalAttributeWithOtherAttribute, "The {0}/@{1} attribute cannot be specified when attribute {2} is present.", elementName, attributeName, otherAttributeName); | ||
850 | } | ||
851 | |||
852 | public static Message IllegalAttributeWithOtherAttribute(SourceLineNumber sourceLineNumbers, string elementName, string attributeName, string otherAttributeName, string otherAttributeValue) | ||
853 | { | ||
854 | return Message(sourceLineNumbers, Ids.IllegalAttributeWithOtherAttribute, "The {0}/@{1} attribute cannot be specified when attribute {2} is present with value '{3}'.", elementName, attributeName, otherAttributeName, otherAttributeValue); | ||
855 | } | ||
856 | |||
857 | public static Message IllegalAttributeWithOtherAttributes(SourceLineNumber sourceLineNumbers, string elementName, string attributeName, string otherAttributeName1, string otherAttributeName2) | ||
858 | { | ||
859 | return Message(sourceLineNumbers, Ids.IllegalAttributeWithOtherAttributes, "The {0}/@{1} attribute cannot be specified when attribute {2} or {3} is also present.", elementName, attributeName, otherAttributeName1, otherAttributeName2); | ||
860 | } | ||
861 | |||
862 | public static Message IllegalAttributeWithOtherAttributes(SourceLineNumber sourceLineNumbers, string elementName, string attributeName, string otherAttributeName1, string otherAttributeName2, string otherAttributeName3) | ||
863 | { | ||
864 | return Message(sourceLineNumbers, Ids.IllegalAttributeWithOtherAttributes, "The {0}/@{1} attribute cannot be specified when attribute {2}, {3}, or {4} is also present.", elementName, attributeName, otherAttributeName1, otherAttributeName2, otherAttributeName3); | ||
865 | } | ||
866 | |||
867 | public static Message IllegalAttributeWithOtherAttributes(SourceLineNumber sourceLineNumbers, string elementName, string attributeName, string otherAttributeName1, string otherAttributeName2, string otherAttributeName3, string otherAttributeName4) | ||
868 | { | ||
869 | return Message(sourceLineNumbers, Ids.IllegalAttributeWithOtherAttributes, "The {0}/@{1} attribute cannot be specified when attribute {2}, {3}, {4}, or {5} is also present.", elementName, attributeName, otherAttributeName1, otherAttributeName2, otherAttributeName3, otherAttributeName4); | ||
870 | } | ||
871 | |||
872 | public static Message IllegalAttributeWithoutOtherAttributes(SourceLineNumber sourceLineNumbers, string elementName, string attributeName, string otherAttributeName) | ||
873 | { | ||
874 | return Message(sourceLineNumbers, Ids.IllegalAttributeWithoutOtherAttributes, "The {0}/@{1} attribute can only be specified with the following attribute {2} present.", elementName, attributeName, otherAttributeName); | ||
875 | } | ||
876 | |||
877 | public static Message IllegalAttributeWithoutOtherAttributes(SourceLineNumber sourceLineNumbers, string elementName, string attributeName, string otherAttributeName1, string otherAttributeName2) | ||
878 | { | ||
879 | return Message(sourceLineNumbers, Ids.IllegalAttributeWithoutOtherAttributes, "The {0}/@{1} attribute can only be specified with one of the following attributes: {2} or {3} present.", elementName, attributeName, otherAttributeName1, otherAttributeName2); | ||
880 | } | ||
881 | |||
882 | public static Message IllegalAttributeWithoutOtherAttributes(SourceLineNumber sourceLineNumbers, string elementName, string attributeName, string otherAttributeName1, string otherAttributeName2, string otherAttributeValue, Boolean uniquifier) | ||
883 | { | ||
884 | return Message(sourceLineNumbers, Ids.IllegalAttributeWithoutOtherAttributes, "The {0}/@{1} attribute can only be specified with one of the following attributes: {2} or {3} present with value '{4}'.", elementName, attributeName, otherAttributeName1, otherAttributeName2, otherAttributeValue, uniquifier); | ||
885 | } | ||
886 | |||
887 | public static Message IllegalAttributeWithoutOtherAttributes(SourceLineNumber sourceLineNumbers, string elementName, string attributeName, string otherAttributeName1, string otherAttributeName2, string otherAttributeName3) | ||
888 | { | ||
889 | return Message(sourceLineNumbers, Ids.IllegalAttributeWithoutOtherAttributes, "The {0}/@{1} attribute can only be specified with one of the following attributes: {2}, {3}, or {4} present.", elementName, attributeName, otherAttributeName1, otherAttributeName2, otherAttributeName3); | ||
890 | } | ||
891 | |||
892 | public static Message IllegalAttributeWithoutOtherAttributes(SourceLineNumber sourceLineNumbers, string elementName, string attributeName, string otherAttributeName1, string otherAttributeName2, string otherAttributeName3, string otherAttributeName4) | ||
893 | { | ||
894 | return Message(sourceLineNumbers, Ids.IllegalAttributeWithoutOtherAttributes, "The {0}/@{1} attribute can only be specified with one of the following attributes: {2}, {3}, {4}, or {5} present.", elementName, attributeName, otherAttributeName1, otherAttributeName2, otherAttributeName3, otherAttributeName4); | ||
895 | } | ||
896 | |||
897 | public static Message IllegalBinderClassName() | ||
898 | { | ||
899 | return Message(null, Ids.IllegalBinderClassName, "Illegal binder class name specified for -binder command line option."); | ||
900 | } | ||
901 | |||
902 | public static Message IllegalCabbingThreadCount(string numThreads) | ||
903 | { | ||
904 | return Message(null, Ids.IllegalCabbingThreadCount, "Illegal number of threads to create cabinets: '{0}' for -ct <N> command line option. Specify the number of threads to use like -ct 2.", numThreads); | ||
905 | } | ||
906 | |||
907 | public static Message IllegalCharactersInPath(string pathName) | ||
908 | { | ||
909 | return Message(null, Ids.IllegalCharactersInPath, "Illegal characters in path '{0}'. Ensure you provided a valid path to the file.", pathName); | ||
910 | } | ||
911 | |||
912 | public static Message IllegalCodepage(int codepage) | ||
913 | { | ||
914 | return Message(null, Ids.IllegalCodepage, "The code page '{0}' is not a valid Windows code page. Update the database's code page by modifying one of the following attributes: Product/@Codepage, Module/@Codepage, Patch/@Codepage, PatchCreation/@Codepage, or WixLocalization/@Codepage.", codepage); | ||
915 | } | ||
916 | |||
917 | public static Message IllegalCodepage(SourceLineNumber sourceLineNumbers, int codepage) | ||
918 | { | ||
919 | return Message(sourceLineNumbers, Ids.IllegalCodepage, "The code page '{0}' is not a valid Windows code page. Update the database's code page by modifying one of the following attributes: Product/@Codepage, Module/@Codepage, Patch/@Codepage, PatchCreation/@Codepage, or WixLocalization/@Codepage.", codepage); | ||
920 | } | ||
921 | |||
922 | public static Message IllegalCodepageAttribute(SourceLineNumber sourceLineNumbers, string codepage, string elementName, string attributeName) | ||
923 | { | ||
924 | return Message(sourceLineNumbers, Ids.IllegalCodepageAttribute, "The code page '{0}' is not a valid Windows code page. Please check the {1}/@{2} attribute value in your source file.", codepage, elementName, attributeName); | ||
925 | } | ||
926 | |||
927 | public static Message IllegalColumnName(SourceLineNumber sourceLineNumbers, string elementName, string attributeName, string value) | ||
928 | { | ||
929 | return Message(sourceLineNumbers, Ids.IllegalColumnName, "The {0}/@{1} attribute's value, '{2}', is not a legal column name. It will collide with the sentinel values used in the _TransformView table.", elementName, attributeName, value); | ||
930 | } | ||
931 | |||
932 | public static Message IllegalCommandlineArgumentCombination(string arg1, string arg2) | ||
933 | { | ||
934 | return Message(null, Ids.IllegalCommandlineArgumentCombination, "'-{0}' cannot be specfied in combination with '-{1}'.", arg1, arg2); | ||
935 | } | ||
936 | |||
937 | public static Message IllegalComponentWithAutoGeneratedGuid(SourceLineNumber sourceLineNumbers) | ||
938 | { | ||
939 | return Message(sourceLineNumbers, Ids.IllegalComponentWithAutoGeneratedGuid, "The Component/@Guid attribute's value '*' is not valid for this component because it does not meet the criteria for having an automatically generated guid. Components using a Directory as a KeyPath or containing ODBCDataSource child elements cannot use an automatically generated guid. Make sure your component doesn't have a Directory as the KeyPath and move any ODBCDataSource child elements to components with explicit component guids."); | ||
940 | } | ||
941 | |||
942 | public static Message IllegalComponentWithAutoGeneratedGuid(SourceLineNumber sourceLineNumbers, Boolean registryKeyPath) | ||
943 | { | ||
944 | return Message(sourceLineNumbers, Ids.IllegalComponentWithAutoGeneratedGuid, "The Component/@Guid attribute's value '*' is not valid for this component because it does not meet the criteria for having an automatically generated guid. Components with registry keypaths and files cannot use an automatically generated guid. Create multiple components, each with one file and/or one registry value keypath, to use automatically generated guids.", registryKeyPath); | ||
945 | } | ||
946 | |||
947 | public static Message IllegalCompressionLevel(SourceLineNumber sourceLineNumbers, string compressionLevel) | ||
948 | { | ||
949 | return Message(sourceLineNumbers, Ids.IllegalCompressionLevel, "The compression level '{0}' is not valid. Valid values are 'none', 'low', 'medium', 'high', and 'mszip'.", compressionLevel); | ||
950 | } | ||
951 | |||
952 | public static Message IllegalDefineStatement(SourceLineNumber sourceLineNumbers, string defineStatement) | ||
953 | { | ||
954 | return Message(sourceLineNumbers, Ids.IllegalDefineStatement, "The define statement '<?define {0}?>' is not well-formed. Define statements should be in the form <?define variableName = \"variable value\"?>.", defineStatement); | ||
955 | } | ||
956 | |||
957 | public static Message IllegalEmptyAttributeValue(SourceLineNumber sourceLineNumbers, string elementName, string attributeName) | ||
958 | { | ||
959 | return Message(sourceLineNumbers, Ids.IllegalEmptyAttributeValue, "The {0}/@{1} attribute's value cannot be an empty string. If a value is not required, simply remove the entire attribute.", elementName, attributeName); | ||
960 | } | ||
961 | |||
962 | public static Message IllegalEmptyAttributeValue(SourceLineNumber sourceLineNumbers, string elementName, string attributeName, string defaultValue) | ||
963 | { | ||
964 | return Message(sourceLineNumbers, Ids.IllegalEmptyAttributeValue, "The {0}/@{1} attribute's value cannot be an empty string. To use the default value \"{2}\", simply remove the entire attribute.", elementName, attributeName, defaultValue); | ||
965 | } | ||
966 | |||
967 | public static Message IllegalEnvironmentVariable(string environmentVariable, string value) | ||
968 | { | ||
969 | return Message(null, Ids.IllegalEnvironmentVariable, "The {0} environment variable is set to an invalid value of '{1}'.", environmentVariable, value); | ||
970 | } | ||
971 | |||
972 | public static Message IllegalFamilyName(SourceLineNumber sourceLineNumbers, string elementName, string attributeName, string value) | ||
973 | { | ||
974 | return Message(sourceLineNumbers, Ids.IllegalFamilyName, "The {0}/@{1} attribute's value, '{2}', contains illegal characters for a family name. Legal values include letters, numbers, and underscores.", elementName, attributeName, value); | ||
975 | } | ||
976 | |||
977 | public static Message IllegalFileCompressionAttributes(SourceLineNumber sourceLineNumbers) | ||
978 | { | ||
979 | return Message(sourceLineNumbers, Ids.IllegalFileCompressionAttributes, "Cannot have both the MsidbFileAttributesCompressed and MsidbFileAttributesNoncompressed options set in a file attributes column."); | ||
980 | } | ||
981 | |||
982 | public static Message IllegalForeach(SourceLineNumber sourceLineNumbers, string foreachStatement) | ||
983 | { | ||
984 | return Message(sourceLineNumbers, Ids.IllegalForeach, "The foreach statement '{0}' is illegal. The proper format for foreach is <?foreach varName in valueList?>.", foreachStatement); | ||
985 | } | ||
986 | |||
987 | public static Message IllegalGeneratedGuidComponentUnversionedKeypath(SourceLineNumber sourceLineNumbers) | ||
988 | { | ||
989 | return Message(sourceLineNumbers, Ids.IllegalGeneratedGuidComponentUnversionedKeypath, "The Component/@Guid attribute's value '*' is not valid for this component because it does not meet the criteria for having an automatically generated guid. Components with more than one file cannot use an automatically generated guid unless a versioned file is the keypath and the other files are unversioned. This component's keypath is not versioned. Create multiple components to use automatically generated guids."); | ||
990 | } | ||
991 | |||
992 | public static Message IllegalGeneratedGuidComponentVersionedNonkeypath(SourceLineNumber sourceLineNumbers) | ||
993 | { | ||
994 | return Message(sourceLineNumbers, Ids.IllegalGeneratedGuidComponentVersionedNonkeypath, "The Component/@Guid attribute's value '*' is not valid for this component because it does not meet the criteria for having an automatically generated guid. Components with more than one file cannot use an automatically generated guid unless a versioned file is the keypath and the other files are unversioned. This component has a non-keypath file that is versioned. Create multiple components to use automatically generated guids."); | ||
995 | } | ||
996 | |||
997 | public static Message IllegalGuidValue(SourceLineNumber sourceLineNumbers, string elementName, string attributeName, string value) | ||
998 | { | ||
999 | return Message(sourceLineNumbers, Ids.IllegalGuidValue, "The {0}/@{1} attribute's value, '{2}', is not a legal guid value.", elementName, attributeName, value); | ||
1000 | } | ||
1001 | |||
1002 | public static Message IllegalIdentifier(SourceLineNumber sourceLineNumbers, string elementName, string value) | ||
1003 | { | ||
1004 | return Message(sourceLineNumbers, Ids.IllegalIdentifier, "The {0} element's value, '{1}', is not a legal identifier. Identifiers may contain ASCII characters A-Z, a-z, digits, underscores (_), or periods (.). Every identifier must begin with either a letter or an underscore.", elementName, value); | ||
1005 | } | ||
1006 | |||
1007 | public static Message IllegalIdentifier(SourceLineNumber sourceLineNumbers, string elementName, string attributeName, int disambiguator) | ||
1008 | { | ||
1009 | return Message(sourceLineNumbers, Ids.IllegalIdentifier, "The {0}/@{1} attribute's value is not a legal identifier. Identifiers may contain ASCII characters A-Z, a-z, digits, underscores (_), or periods (.). Every identifier must begin with either a letter or an underscore.", elementName, attributeName, disambiguator); | ||
1010 | } | ||
1011 | |||
1012 | public static Message IllegalIdentifier(SourceLineNumber sourceLineNumbers, string elementName, string attributeName, string value) | ||
1013 | { | ||
1014 | return Message(sourceLineNumbers, Ids.IllegalIdentifier, "The {0}/@{1} attribute's value, '{2}', is not a legal identifier. Identifiers may contain ASCII characters A-Z, a-z, digits, underscores (_), or periods (.). Every identifier must begin with either a letter or an underscore.", elementName, attributeName, value); | ||
1015 | } | ||
1016 | |||
1017 | public static Message IllegalIdentifier(SourceLineNumber sourceLineNumbers, string elementName, string attributeName, string value, string identifier) | ||
1018 | { | ||
1019 | return Message(sourceLineNumbers, Ids.IllegalIdentifier, "The {0}/@{1} attribute's value '{2}' contains an illegal identifier '{3}'. Identifiers may contain ASCII characters A-Z, a-z, digits, underscores (_), or periods (.). Every identifier must begin with either a letter or an underscore.", elementName, attributeName, value, identifier); | ||
1020 | } | ||
1021 | |||
1022 | public static Message IllegalIdentifierLooksLikeFormatted(SourceLineNumber sourceLineNumbers, string elementName, string attributeName, string value) | ||
1023 | { | ||
1024 | return Message(sourceLineNumbers, Ids.IllegalIdentifierLooksLikeFormatted, "The {0}/@{1} attribute's value, '{2}', is not a legal identifier. The {0}/@{1} attribute does not support formatted string values, such as property names enclosed in brackets ([LIKETHIS]). The value must be the identifier of another element, such as the Directory/@Id attribute value.", elementName, attributeName, value); | ||
1025 | } | ||
1026 | |||
1027 | public static Message IllegalInlineLocVariable(SourceLineNumber sourceLineNumbers, string variableName, string variableValue) | ||
1028 | { | ||
1029 | return Message(sourceLineNumbers, Ids.IllegalInlineLocVariable, "The localization variable '{0}' specifies an illegal inline default value of '{1}'. Localization variables cannot specify default values inline, instead the value should be specified in a WiX localization (.wxl) file.", variableName, variableValue); | ||
1030 | } | ||
1031 | |||
1032 | public static Message IllegalIntegerInExpression(SourceLineNumber sourceLineNumbers, string expression) | ||
1033 | { | ||
1034 | return Message(sourceLineNumbers, Ids.IllegalIntegerInExpression, "An illegal number was found in the expression '{0}'.", expression); | ||
1035 | } | ||
1036 | |||
1037 | public static Message IllegalIntegerValue(SourceLineNumber sourceLineNumbers, string elementName, string attributeName, string value) | ||
1038 | { | ||
1039 | return Message(sourceLineNumbers, Ids.IllegalIntegerValue, "The {0}/@{1} attribute's value, '{2}', is not a legal integer value. Legal integer values are from -2,147,483,648 to 2,147,483,647.", elementName, attributeName, value); | ||
1040 | } | ||
1041 | |||
1042 | public static Message IllegalLongFilename(SourceLineNumber sourceLineNumbers, string elementName, string attributeName, string value) | ||
1043 | { | ||
1044 | return Message(sourceLineNumbers, Ids.IllegalLongFilename, "The {0}/@{1} attribute's value, '{2}', is not a valid filename because it contains illegal characters. Legal filenames contain no more than 260 characters and must contain at least one non-period character. Any character except for the follow may be used: \\ ? | > < : / * \".", elementName, attributeName, value); | ||
1045 | } | ||
1046 | |||
1047 | public static Message IllegalLongFilename(SourceLineNumber sourceLineNumbers, string elementName, string attributeName, string value, string filename) | ||
1048 | { | ||
1049 | return Message(sourceLineNumbers, Ids.IllegalLongFilename, "The {0}/@{1} attribute's value '{2}' contains a invalid filename '{3}'. Legal filenames contain no more than 260 characters and must contain at least one non-period character. Any character except for the follow may be used: \\ ? | > < : / * \".", elementName, attributeName, value, filename); | ||
1050 | } | ||
1051 | |||
1052 | public static Message IllegalLongValue(SourceLineNumber sourceLineNumbers, string elementName, string attributeName, string value) | ||
1053 | { | ||
1054 | return Message(sourceLineNumbers, Ids.IllegalLongValue, "The {0}/@{1} attribute's value, '{2}', is not a legal long value. Legal long values are from -9,223,372,036,854,775,808 to 9,223,372,036,854,775,807.", elementName, attributeName, value); | ||
1055 | } | ||
1056 | |||
1057 | public static Message IllegalModuleExclusionLanguageAttributes(SourceLineNumber sourceLineNumbers) | ||
1058 | { | ||
1059 | return Message(sourceLineNumbers, Ids.IllegalModuleExclusionLanguageAttributes, "Cannot set both ExcludeLanguage and ExcludeExceptLanguage attributes on a ModuleExclusion element."); | ||
1060 | } | ||
1061 | |||
1062 | public static Message IllegalParentAttributeWhenNested(SourceLineNumber sourceLineNumbers, string parentElementName, string parentAttributeName, string childElement) | ||
1063 | { | ||
1064 | return Message(sourceLineNumbers, Ids.IllegalParentAttributeWhenNested, "The {0}/@{1} attribute cannot be specified when a {2} element is nested underneath the {0} element.", parentElementName, parentAttributeName, childElement); | ||
1065 | } | ||
1066 | |||
1067 | public static Message IllegalPathForGeneratedComponentGuid(SourceLineNumber sourceLineNumbers, string componentName, string keyFilePath) | ||
1068 | { | ||
1069 | return Message(sourceLineNumbers, Ids.IllegalPathForGeneratedComponentGuid, "The component '{0}' has a key file with path '{1}'. Since this path is not rooted in one of the standard directories (like ProgramFilesFolder), this component does not fit the criteria for having an automatically generated guid. (This error may also occur if a path contains a likely standard directory such as nesting a directory with name \"Common Files\" under ProgramFilesFolder.)", componentName, keyFilePath); | ||
1070 | } | ||
1071 | |||
1072 | public static Message IllegalPropertyCustomActionAttributes(SourceLineNumber sourceLineNumbers) | ||
1073 | { | ||
1074 | return Message(sourceLineNumbers, Ids.IllegalPropertyCustomActionAttributes, "The CustomAction sets a property but its Execute attribute is not 'immediate' (the default). Property-setting custom actions cannot be deferred.\""); | ||
1075 | } | ||
1076 | |||
1077 | public static Message IllegalRelativeLongFilename(SourceLineNumber sourceLineNumbers, string elementName, string attributeName, string value) | ||
1078 | { | ||
1079 | return Message(sourceLineNumbers, Ids.IllegalRelativeLongFilename, "The {0}/@{1} attribute's value, '{2}', is not a valid relative long name because it contains illegal characters. Legal relative long names contain no more than 260 characters and must contain at least one non-period character. Any character except for the follow may be used: ? | > < : / * \".", elementName, attributeName, value); | ||
1080 | } | ||
1081 | |||
1082 | public static Message IllegalRootDirectory(SourceLineNumber sourceLineNumbers, string directoryId) | ||
1083 | { | ||
1084 | return Message(sourceLineNumbers, Ids.IllegalRootDirectory, "The Directory with Id '{0}' is not a valid root directory. There may only be a single root directory per product or module and its Id attribute value must be 'TARGETDIR' and its Name attribute value must be 'SourceDir'.", directoryId); | ||
1085 | } | ||
1086 | |||
1087 | public static Message IllegalSearchIdForParentDepth(SourceLineNumber sourceLineNumbers, string id, string parentId) | ||
1088 | { | ||
1089 | return Message(sourceLineNumbers, Ids.IllegalSearchIdForParentDepth, "When the parent DirectorySearch/@Depth attribute is greater than 1 for the DirectorySearch '{1}', the FileSearch/@Id attribute must be absent for FileSearch '{0}' unless the parent DirectorySearch/@AssignToProperty attribute value is 'yes'. Remove the FileSearch/@Id attribute for '{0}' to resolve this issue.", id, parentId); | ||
1090 | } | ||
1091 | |||
1092 | public static Message IllegalShortFilename(SourceLineNumber sourceLineNumbers, string elementName, string attributeName, string value) | ||
1093 | { | ||
1094 | return Message(sourceLineNumbers, Ids.IllegalShortFilename, "The {0}/@{1} attribute's value, '{2}', is not a valid 8.3-compliant name. Legal names contain no more than 8 non-period characters followed by an optional period and extension of no more than 3 non-period characters. Any character except for the follow may be used: \\ ? | > < : / * \" + , ; = [ ] (space).", elementName, attributeName, value); | ||
1095 | } | ||
1096 | |||
1097 | public static Message IllegalSuppressWarningId(string suppressedId) | ||
1098 | { | ||
1099 | return Message(null, Ids.IllegalSuppressWarningId, "Illegal value '{0}' for the -sw<N> command line option. Specify a particular warning number, like '-sw6' to suppress the warning with ID 6, or '-sw' alone to suppress all warnings.", suppressedId); | ||
1100 | } | ||
1101 | |||
1102 | public static Message IllegalTargetDirDefaultDir(SourceLineNumber sourceLineNumbers, string defaultDir) | ||
1103 | { | ||
1104 | return Message(sourceLineNumbers, Ids.IllegalTargetDirDefaultDir, "The 'TARGETDIR' directory has an illegal DefaultDir value of '{0}'. The DefaultDir value is created from the *Name attributes of the Directory element. The TARGETDIR directory is a special directory which must have its Name attribute set to 'SourceDir'.", defaultDir); | ||
1105 | } | ||
1106 | |||
1107 | public static Message IllegalTerminalServerCustomActionAttributes(SourceLineNumber sourceLineNumbers) | ||
1108 | { | ||
1109 | return Message(sourceLineNumbers, Ids.IllegalTerminalServerCustomActionAttributes, "The CustomAction/@TerminalServerAware attribute's value is 'yes' but the Execute attribute is not 'deferred,' 'rollback,' or 'commit.' Terminal-Server-aware custom actions must be deferred, rollback, or commit custom actions. For more information, see http://msdn.microsoft.com/library/aa372071.aspx.\""); | ||
1110 | } | ||
1111 | |||
1112 | public static Message IllegalValidationArguments() | ||
1113 | { | ||
1114 | return Message(null, Ids.IllegalValidationArguments, "You may only specify a single default type using -t or specify custom validation using -serr and -val."); | ||
1115 | } | ||
1116 | |||
1117 | public static Message IllegalVersionValue(SourceLineNumber sourceLineNumbers, string elementName, string attributeName, string value) | ||
1118 | { | ||
1119 | return Message(sourceLineNumbers, Ids.IllegalVersionValue, "The {0}/@{1} attribute's value, '{2}', is not a valid version. Legal version values should look like 'x.x.x.x' where x is an integer from 0 to 65534.", elementName, attributeName, value); | ||
1120 | } | ||
1121 | |||
1122 | public static Message IllegalWarningIdAsError(string warningId) | ||
1123 | { | ||
1124 | return Message(null, Ids.IllegalWarningIdAsError, "Illegal value '{0}' for the -wx<N> command line option. Specify a particular warning number, like '-wx6' to display the warning with ID 6 as an error, or '-wx' alone to suppress all warnings.", warningId); | ||
1125 | } | ||
1126 | |||
1127 | public static Message IllegalWixVariablePrefix(SourceLineNumber sourceLineNumbers, string variableId) | ||
1128 | { | ||
1129 | return Message(sourceLineNumbers, Ids.IllegalWixVariablePrefix, "The WiX variable $(wix.{0}) uses an illegal prefix '$'. Please use the '!' prefix instead.", variableId); | ||
1130 | } | ||
1131 | |||
1132 | public static Message IllegalYesNoAlwaysValue(SourceLineNumber sourceLineNumbers, string elementName, string attributeName, string value) | ||
1133 | { | ||
1134 | return Message(sourceLineNumbers, Ids.IllegalYesNoAlwaysValue, "The {0}/@{1} attribute's value, '{2}', is not a legal yes/no/always value. The only legal values are 'always', 'no' or 'yes'.", elementName, attributeName, value); | ||
1135 | } | ||
1136 | |||
1137 | public static Message IllegalYesNoDefaultValue(SourceLineNumber sourceLineNumbers, string elementName, string attributeName, string value) | ||
1138 | { | ||
1139 | return Message(sourceLineNumbers, Ids.IllegalYesNoDefaultValue, "The {0}/@{1} attribute's value, '{2}', is not a legal yes/no/default value. The only legal values are 'default', 'no' or 'yes'.", elementName, attributeName, value); | ||
1140 | } | ||
1141 | |||
1142 | public static Message IllegalYesNoValue(SourceLineNumber sourceLineNumbers, string elementName, string attributeName, string value) | ||
1143 | { | ||
1144 | return Message(sourceLineNumbers, Ids.IllegalYesNoValue, "The {0}/@{1} attribute's value, '{2}', is not a legal yes/no value. The only legal values are 'no' and 'yes'.", elementName, attributeName, value); | ||
1145 | } | ||
1146 | |||
1147 | public static Message ImplicitComponentKeyPath(SourceLineNumber sourceLineNumbers, string componentId) | ||
1148 | { | ||
1149 | return Message(sourceLineNumbers, Ids.ImplicitComponentKeyPath, "The component '{0}' does not have an explicit key path specified. If the ordering of the elements under the Component element changes, the key path will also change. To prevent accidental changes, the key path should be set to 'yes' in one of the following locations: Component/@KeyPath, File/@KeyPath, ODBCDataSource/@KeyPath, or Registry/@KeyPath.", componentId); | ||
1150 | } | ||
1151 | |||
1152 | public static Message InlineDirectorySyntaxRequiresPath(SourceLineNumber sourceLineNumbers, string elementName, string attributeName, string value, string identifier) | ||
1153 | { | ||
1154 | return Message(sourceLineNumbers, Ids.InlineDirectorySyntaxRequiresPath, "The {0}/@{1} attribute's value '{2}' only specifies a directory reference. The inline directory syntax requires that at least one directory be specified in addition to the value. For example, use '{3}:\\foo\\' to add a 'foo' directory.", elementName, attributeName, value, identifier); | ||
1155 | } | ||
1156 | |||
1157 | public static Message InsecureBundleFilename(string filename) | ||
1158 | { | ||
1159 | return Message(null, Ids.InsecureBundleFilename, "The file name '{0}' creates an insecure bundle. Windows will load unnecessary compatibility shims into a bundle with that file name. These compatibility shims can be DLL hijacked allowing attackers to compromise your customers' computer. Choose a different bundle file name.", filename); | ||
1160 | } | ||
1161 | |||
1162 | public static Message InsertInvalidSequenceActionOrder(SourceLineNumber sourceLineNumbers, string sequenceTableName, string actionNameBefore, string actionNameAfter, string actionNameNew) | ||
1163 | { | ||
1164 | return Message(sourceLineNumbers, Ids.InsertInvalidSequenceActionOrder, "Invalid order of actions {1} and {2} in sequence table {0}. Action {3} must occur after {1} and before {2}, but {2} is currently sequenced after {1}. Please fix the ordering or explicitly supply a location for the action {3}.", sequenceTableName, actionNameBefore, actionNameAfter, actionNameNew); | ||
1165 | } | ||
1166 | |||
1167 | public static Message InsertSequenceNoSpace(SourceLineNumber sourceLineNumbers, string sequenceTableName, string actionNameBefore, string actionNameAfter, string actionNameNew) | ||
1168 | { | ||
1169 | return Message(sourceLineNumbers, Ids.InsertSequenceNoSpace, "Not enough space exists to sequence action {3} in table {0}. It must be sequenced after {1} and before {2}, but those two actions are currently sequenced next to each other. Please move one of those actions to allow {3} to be inserted between them.", sequenceTableName, actionNameBefore, actionNameAfter, actionNameNew); | ||
1170 | } | ||
1171 | |||
1172 | public static Message InsufficientVersion(SourceLineNumber sourceLineNumbers, Version currentVersion, Version requiredVersion) | ||
1173 | { | ||
1174 | return Message(sourceLineNumbers, Ids.InsufficientVersion, "The current version of the toolset is {0}, but version {1} is required.", currentVersion, requiredVersion); | ||
1175 | } | ||
1176 | |||
1177 | public static Message InsufficientVersion(SourceLineNumber sourceLineNumbers, Version currentVersion, Version requiredVersion, string extension) | ||
1178 | { | ||
1179 | return Message(sourceLineNumbers, Ids.InsufficientVersion, "The current version of the extension '{2}' is {0}, but version {1} is required.", currentVersion, requiredVersion, extension); | ||
1180 | } | ||
1181 | |||
1182 | public static Message IntegralValueOutOfRange(SourceLineNumber sourceLineNumbers, string elementName, string attributeName, int value, int minimum, int maximum) | ||
1183 | { | ||
1184 | return Message(sourceLineNumbers, Ids.IntegralValueOutOfRange, "The {0}/@{1} attribute's value, '{2}', is not in the range of legal values. Legal values for this attribute are from {3} to {4}.", elementName, attributeName, value, minimum, maximum); | ||
1185 | } | ||
1186 | |||
1187 | public static Message IntegralValueOutOfRange(SourceLineNumber sourceLineNumbers, string elementName, string attributeName, long value, long minimum, long maximum) | ||
1188 | { | ||
1189 | return Message(sourceLineNumbers, Ids.IntegralValueOutOfRange, "The {0}/@{1} attribute's value, '{2}', is not in the range of legal values. Legal values for this attribute are from {3} to {4}.", elementName, attributeName, value, minimum, maximum); | ||
1190 | } | ||
1191 | |||
1192 | public static Message IntegralValueSentinelCollision(SourceLineNumber sourceLineNumbers, int value) | ||
1193 | { | ||
1194 | return Message(sourceLineNumbers, Ids.IntegralValueSentinelCollision, "The integer value {0} collides with a sentinel value in the compiler code.", value); | ||
1195 | } | ||
1196 | |||
1197 | public static Message IntegralValueSentinelCollision(SourceLineNumber sourceLineNumbers, long value) | ||
1198 | { | ||
1199 | return Message(sourceLineNumbers, Ids.IntegralValueSentinelCollision, "The long integral value {0} collides with a sentinel value in the compiler code.", value); | ||
1200 | } | ||
1201 | |||
1202 | public static Message InvalidAddedFileRowWithoutSequence(SourceLineNumber sourceLineNumbers, string fileRowId) | ||
1203 | { | ||
1204 | return Message(sourceLineNumbers, Ids.InvalidAddedFileRowWithoutSequence, "A row has been added to the File table with id '{1}' that does not have a sequence number assigned to it. Create your transform from a pair of msi's instead of xml outputs to get sequences assigned to your File table's rows.", fileRowId); | ||
1205 | } | ||
1206 | |||
1207 | public static Message InvalidAssemblyFile(SourceLineNumber sourceLineNumbers, string assemblyFile, string moreInformation) | ||
1208 | { | ||
1209 | return Message(sourceLineNumbers, Ids.InvalidAssemblyFile, "The assembly file '{0}' appears to be invalid. Please ensure this is a valid assembly file and that the user has the appropriate access rights to this file. More information: {1}", assemblyFile, moreInformation); | ||
1210 | } | ||
1211 | |||
1212 | public static Message InvalidBundle(string bundleExecutable) | ||
1213 | { | ||
1214 | return Message(null, Ids.InvalidBundle, "Unable to read bundle executable '{0}'. This is not a valid WiX bundle.", bundleExecutable); | ||
1215 | } | ||
1216 | |||
1217 | public static Message InvalidCabinetTemplate(SourceLineNumber sourceLineNumbers, string cabinetTemplate) | ||
1218 | { | ||
1219 | return Message(sourceLineNumbers, Ids.InvalidCabinetTemplate, "CabinetTemplate attribute's value '{0}' must contain '{{0}}' and should contain no more than 8 characters followed by an optional extension of no more than 3 characters. Any character except for the follow may be used: \\ ? | > < : / * \" + , ; = [ ] (space). The Windows Installer team has recommended following the 8.3 format for external cabinet files and any other naming scheme is officially unsupported (which means it is not guaranteed to work on all platforms).", cabinetTemplate); | ||
1220 | } | ||
1221 | |||
1222 | public static Message InvalidCommandLineFileName(string fileName, string error) | ||
1223 | { | ||
1224 | return Message(null, Ids.InvalidCommandLineFileName, "Invalid file name specified on the command line: '{0}'. Error message: '{1}'", fileName, error); | ||
1225 | } | ||
1226 | |||
1227 | public static Message InvalidDateTimeFormat(SourceLineNumber sourceLineNumbers, string elementName, string attributeName, string value) | ||
1228 | { | ||
1229 | return Message(sourceLineNumbers, Ids.InvalidDateTimeFormat, "The {0}/@{1} attribute's value '{2}' is not a valid date/time value. A date/time value should follow the format YYYY-MM-DDTHH:mm:ss.", elementName, attributeName, value); | ||
1230 | } | ||
1231 | |||
1232 | public static Message InvalidDocumentElement(SourceLineNumber sourceLineNumbers, string elementName, string fileType, string expectedElementName) | ||
1233 | { | ||
1234 | return Message(sourceLineNumbers, Ids.InvalidDocumentElement, "The document element name '{0}' is invalid. A WiX {1} file must use '{2}' as the document element name.", elementName, fileType, expectedElementName); | ||
1235 | } | ||
1236 | |||
1237 | public static Message InvalidEmbeddedUIFileName(SourceLineNumber sourceLineNumbers, string codepage) | ||
1238 | { | ||
1239 | return Message(sourceLineNumbers, Ids.InvalidEmbeddedUIFileName, "The EmbeddedUI/@Name attribute value, '{0}', does not contain an extension. Windows Installer will not load an embedded UI DLL without an extension. Include an extension or just omit the Name attribute so it defaults to the file name portion of the Source attribute value.", codepage); | ||
1240 | } | ||
1241 | |||
1242 | public static Message CouldNotFindExtensionInPaths(string extensionPath, IEnumerable<string> checkedPaths) | ||
1243 | { | ||
1244 | return Message(null, Ids.InvalidExtension, "The extension '{0}' could not be found. Checked paths: {1}", extensionPath, String.Join(", ", checkedPaths)); | ||
1245 | } | ||
1246 | |||
1247 | public static Message InvalidExtension(string extension) | ||
1248 | { | ||
1249 | return Message(null, Ids.InvalidExtension, "The extension '{0}' could not be loaded.", extension); | ||
1250 | } | ||
1251 | |||
1252 | public static Message InvalidExtension(string extension, string invalidReason) | ||
1253 | { | ||
1254 | return Message(null, Ids.InvalidExtension, "The extension '{0}' could not be loaded because of the following reason: {1}", extension, invalidReason); | ||
1255 | } | ||
1256 | |||
1257 | public static Message InvalidExtension(string extension, string extensionType, string expectedType) | ||
1258 | { | ||
1259 | return Message(null, Ids.InvalidExtension, "The extension '{0}' is the wrong type: '{1}'. The expected type was '{2}'.", extension, extensionType, expectedType); | ||
1260 | } | ||
1261 | |||
1262 | public static Message InvalidExtension(string extension, string extensionType, string expectedType1, string expectedType2) | ||
1263 | { | ||
1264 | return Message(null, Ids.InvalidExtension, "The extension '{0}' is the wrong type: '{1}'. The expected type was '{2}' or '{3}'.", extension, extensionType, expectedType1, expectedType2); | ||
1265 | } | ||
1266 | |||
1267 | public static Message InvalidExtensionType(string extension, string attributeType) | ||
1268 | { | ||
1269 | return Message(null, Ids.InvalidExtensionType, "Either '{1}' was not defined in the assembly or the type defined in extension '{0}' could not be loaded.", extension, attributeType); | ||
1270 | } | ||
1271 | |||
1272 | public static Message InvalidExtensionType(string extension, string className, string expectedType) | ||
1273 | { | ||
1274 | return Message(null, Ids.InvalidExtensionType, "The extension type '{1}' in extension '{0}' does not inherit from the expected class '{2}'.", extension, className, expectedType); | ||
1275 | } | ||
1276 | |||
1277 | public static Message InvalidExtensionType(string extension, string className, string exceptionType, string exceptionMessage) | ||
1278 | { | ||
1279 | return Message(null, Ids.InvalidExtensionType, "The type '{1}' in extension '{0}' could not be loaded. Exception type '{2}' returned the following message: {3}", extension, className, exceptionType, exceptionMessage); | ||
1280 | } | ||
1281 | |||
1282 | public static Message InvalidFileName(SourceLineNumber sourceLineNumbers, string fileName) | ||
1283 | { | ||
1284 | return Message(sourceLineNumbers, Ids.InvalidFileName, "Invalid file name '{0}'.", fileName); | ||
1285 | } | ||
1286 | |||
1287 | public static Message InvalidIdt(SourceLineNumber sourceLineNumbers, string idtFile) | ||
1288 | { | ||
1289 | return Message(sourceLineNumbers, Ids.InvalidIdt, "There was an error importing the file '{0}'.", idtFile); | ||
1290 | } | ||
1291 | |||
1292 | public static Message InvalidIdt(SourceLineNumber sourceLineNumbers, string idtFile, string tableName) | ||
1293 | { | ||
1294 | return Message(sourceLineNumbers, Ids.InvalidIdt, "There was an error importing table '{1}' from file '{0}'.", idtFile, tableName); | ||
1295 | } | ||
1296 | |||
1297 | public static Message InvalidKeyColumn(string tableName, string columnName, string foreignTableName, int foreignColumnNumber) | ||
1298 | { | ||
1299 | return Message(null, Ids.InvalidKeyColumn, "The definition for the '{0}' table's '{1}' column is an invalid foreign key relationship to the {2} table's column number {3}. It is not a valid foreign key table column number because it is too small (less than 1) or greater than the count of columns in the foreign table's definition.", tableName, columnName, foreignTableName, foreignColumnNumber); | ||
1300 | } | ||
1301 | |||
1302 | public static Message InvalidKeypathChange(SourceLineNumber sourceLineNumbers, string component, string transformPath) | ||
1303 | { | ||
1304 | return Message(sourceLineNumbers, Ids.InvalidKeypathChange, "Component '{0}' has a changed keypath in the transform '{1}'. Patches cannot change the keypath of a component.", component, transformPath); | ||
1305 | } | ||
1306 | |||
1307 | public static Message InvalidManifestContent(SourceLineNumber sourceLineNumbers, string fileName) | ||
1308 | { | ||
1309 | return Message(sourceLineNumbers, Ids.InvalidManifestContent, "The manifest '{0}' does not have the required assembly/assemblyIdentity element.", fileName); | ||
1310 | } | ||
1311 | |||
1312 | public static Message InvalidMergeLanguage(SourceLineNumber sourceLineNumbers, string mergeId, string mergeLanguage) | ||
1313 | { | ||
1314 | return Message(sourceLineNumbers, Ids.InvalidMergeLanguage, "The Merge element '{0}' specified an invalid language '{1}'. Verify that localization tokens are being properly resolved to a numeric LCID.", mergeId, mergeLanguage); | ||
1315 | } | ||
1316 | |||
1317 | public static Message InvalidModuleOrBundleVersion(SourceLineNumber sourceLineNumbers, string moduleOrBundle, string version) | ||
1318 | { | ||
1319 | return Message(sourceLineNumbers, Ids.InvalidModuleOrBundleVersion, "Invalid {0}/@Version '{1}'. {0} version has a max value of \"65535.65535.65535.65535\" and must be all numeric.", moduleOrBundle, version); | ||
1320 | } | ||
1321 | |||
1322 | public static Message InvalidPlatformValue(SourceLineNumber sourceLineNumbers, string value) | ||
1323 | { | ||
1324 | return Message(sourceLineNumbers, Ids.InvalidPlatformValue, "The Platform attribute has an invalid value {0}. Possible values are x86, x64, or arm64.", value); | ||
1325 | } | ||
1326 | |||
1327 | public static Message InvalidPreprocessorFunction(SourceLineNumber sourceLineNumbers, string variable) | ||
1328 | { | ||
1329 | return Message(sourceLineNumbers, Ids.InvalidPreprocessorFunction, "Ill-formed preprocessor function '${0}'. Functions must have a prefix (like 'fun.'), a name at least 1 character long, and matching opening and closing parentheses.", variable); | ||
1330 | } | ||
1331 | |||
1332 | public static Message InvalidPreprocessorFunctionAutoVersion(SourceLineNumber sourceLineNumbers) | ||
1333 | { | ||
1334 | return Message(sourceLineNumbers, Ids.InvalidPreprocessorFunctionAutoVersion, "Invalid AutoVersion template specified."); | ||
1335 | } | ||
1336 | |||
1337 | public static Message InvalidPreprocessorPragma(SourceLineNumber sourceLineNumbers, string variable) | ||
1338 | { | ||
1339 | return Message(sourceLineNumbers, Ids.InvalidPreprocessorPragma, "Malformed preprocessor pragma '{0}'. Pragmas must have a prefix, a name of at least 1 character long, and be followed by optional arguments.", variable); | ||
1340 | } | ||
1341 | |||
1342 | public static Message InvalidPreprocessorVariable(SourceLineNumber sourceLineNumbers, string variable) | ||
1343 | { | ||
1344 | return Message(sourceLineNumbers, Ids.InvalidPreprocessorVariable, "Ill-formed preprocessor variable '$({0})'. Variables must have a prefix (like 'var.', 'env.', or 'sys.') and a name at least 1 character long. If the literal string '$({0})' is desired, use '$$({0})'.", variable); | ||
1345 | } | ||
1346 | |||
1347 | public static Message InvalidProductVersion(SourceLineNumber sourceLineNumbers, string version) | ||
1348 | { | ||
1349 | return Message(sourceLineNumbers, Ids.InvalidProductVersion, "Invalid product version '{0}'. Product version must have a major version less than 256, a minor version less than 256, and a build version less than 65536.", version); | ||
1350 | } | ||
1351 | |||
1352 | public static Message InvalidProductVersion(SourceLineNumber sourceLineNumbers, string version, string packagePath) | ||
1353 | { | ||
1354 | return Message(sourceLineNumbers, Ids.InvalidProductVersion, "Invalid product version '{0}' in package '{1}'. When included in a bundle, all product version fields in an MSI package must be less than 65536.", version, packagePath); | ||
1355 | } | ||
1356 | |||
1357 | public static Message InvalidRemoveComponent(SourceLineNumber sourceLineNumbers, string component, string feature, string transformPath) | ||
1358 | { | ||
1359 | return Message(sourceLineNumbers, Ids.InvalidRemoveComponent, "Removing component '{0}' from feature '{1}' is not supported. Either the component was removed or the guid changed in the transform '{2}'. Add the component back, undo the change to the component guid, or remove the entire feature.", component, feature, transformPath); | ||
1360 | } | ||
1361 | |||
1362 | public static Message InvalidSequenceTable(string sequenceTableName) | ||
1363 | { | ||
1364 | return Message(null, Ids.InvalidSequenceTable, "Found an invalid sequence table '{0}'.", sequenceTableName); | ||
1365 | } | ||
1366 | |||
1367 | public static Message InvalidStringForCodepage(SourceLineNumber sourceLineNumbers, string codepage) | ||
1368 | { | ||
1369 | return Message(sourceLineNumbers, Ids.InvalidStringForCodepage, "A string was provided with characters that are not available in the specified database code page '{0}'. Either change these characters to ones that exist in the database's code page, or update the database's code page by modifying one of the following attributes: Product/@Codepage, Module/@Codepage, Patch/@Codepage, PatchCreation/@Codepage, or WixLocalization/@Codepage.", codepage); | ||
1370 | } | ||
1371 | |||
1372 | public static Message InvalidStubExe(string filename) | ||
1373 | { | ||
1374 | return Message(null, Ids.InvalidStubExe, "Stub executable '{0}' is not a valid Win32 executable.", filename); | ||
1375 | } | ||
1376 | |||
1377 | public static Message InvalidSubExpression(SourceLineNumber sourceLineNumbers, string subExpression, string expression) | ||
1378 | { | ||
1379 | return Message(sourceLineNumbers, Ids.InvalidSubExpression, "Found invalid subexpression '{0}' in expression '{1}'.", subExpression, expression); | ||
1380 | } | ||
1381 | |||
1382 | public static Message InvalidSummaryInfoCodePage(SourceLineNumber sourceLineNumbers, int codePage) | ||
1383 | { | ||
1384 | return Message(sourceLineNumbers, Ids.InvalidSummaryInfoCodePage, "The code page '{0}' is invalid for summary information. You must specify an ANSI code page.", codePage); | ||
1385 | } | ||
1386 | |||
1387 | public static Message InvalidValidatorMessageType(string type) | ||
1388 | { | ||
1389 | return Message(null, Ids.InvalidValidatorMessageType, "Unknown validation message type '{0}'.", type); | ||
1390 | } | ||
1391 | |||
1392 | public static Message InvalidVariableDefinition(string variableDefinition) | ||
1393 | { | ||
1394 | return Message(null, Ids.InvalidVariableDefinition, "The variable definition '{0}' is not valid. Variable definitions should be in the form -dname=value where the value is optional.", variableDefinition); | ||
1395 | } | ||
1396 | |||
1397 | public static Message InvalidWixTransform(string fileName) | ||
1398 | { | ||
1399 | return Message(null, Ids.InvalidWixTransform, "The file '{0}' is not a valid WiX Transform.", fileName); | ||
1400 | } | ||
1401 | |||
1402 | public static Message InvalidWixXmlNamespace(SourceLineNumber sourceLineNumbers, string wixElementName, string wixNamespace) | ||
1403 | { | ||
1404 | return Message(sourceLineNumbers, Ids.InvalidWixXmlNamespace, "The {0} element has no namespace. Please make the {0} element look like the following: <{0} xmlns=\"{1}\">.", wixElementName, wixNamespace); | ||
1405 | } | ||
1406 | |||
1407 | public static Message InvalidWixXmlNamespace(SourceLineNumber sourceLineNumbers, string wixElementName, string elementNamespace, string wixNamespace) | ||
1408 | { | ||
1409 | return Message(sourceLineNumbers, Ids.InvalidWixXmlNamespace, "The {0} element has an incorrect namespace of '{1}'. Please make the {0} element look like the following: <{0} xmlns=\"{2}\">.", wixElementName, elementNamespace, wixNamespace); | ||
1410 | } | ||
1411 | |||
1412 | public static Message InvalidXml(SourceLineNumber sourceLineNumbers, string fileType, string detail) | ||
1413 | { | ||
1414 | return Message(sourceLineNumbers, Ids.InvalidXml, "Not a valid {0} file; detail: {1}", fileType, detail); | ||
1415 | } | ||
1416 | |||
1417 | public static Message LocalizationVariableUnknown(SourceLineNumber sourceLineNumbers, string variableId) | ||
1418 | { | ||
1419 | return Message(sourceLineNumbers, Ids.LocalizationVariableUnknown, "The localization variable !(loc.{0}) is unknown. Please ensure the variable is defined.", variableId); | ||
1420 | } | ||
1421 | |||
1422 | public static Message MaximumCabinetSizeForLargeFileSplittingTooLarge(SourceLineNumber sourceLineNumbers, int maximumCabinetSizeForLargeFileSplitting, int maxValueOfMaxCabSizeForLargeFileSplitting) | ||
1423 | { | ||
1424 | return Message(sourceLineNumbers, Ids.MaximumCabinetSizeForLargeFileSplittingTooLarge, "'{0}' is too large. Reduce the size of maximum cabinet size for large file splitting. The maximum permitted value is '{1}' MB.", maximumCabinetSizeForLargeFileSplitting, maxValueOfMaxCabSizeForLargeFileSplitting); | ||
1425 | } | ||
1426 | |||
1427 | public static Message MaximumUncompressedMediaSizeTooLarge(SourceLineNumber sourceLineNumbers, int maximumUncompressedMediaSize) | ||
1428 | { | ||
1429 | return Message(sourceLineNumbers, Ids.MaximumUncompressedMediaSizeTooLarge, "'{0}' is too large. Reduce the size of maximum uncompressed media size.", maximumUncompressedMediaSize); | ||
1430 | } | ||
1431 | |||
1432 | public static Message MediaEmbeddedCabinetNameTooLong(SourceLineNumber sourceLineNumbers, string elementName, string attributeName, string value, int length) | ||
1433 | { | ||
1434 | return Message(sourceLineNumbers, Ids.MediaEmbeddedCabinetNameTooLong, "The {0}/@{1} attribute's value, '{2}', is {3} characters long. The name is too long for an embedded cabinet. It cannot be more than than 62 characters long.", elementName, attributeName, value, length); | ||
1435 | } | ||
1436 | |||
1437 | public static Message MediaTableCollision(SourceLineNumber sourceLineNumbers) | ||
1438 | { | ||
1439 | return Message(sourceLineNumbers, Ids.MediaTableCollision, "Only one of Media and MediaTemplate tables should be authored."); | ||
1440 | } | ||
1441 | |||
1442 | public static Message MergeExcludedModule(SourceLineNumber sourceLineNumbers, string mergeId, string otherMergeId) | ||
1443 | { | ||
1444 | return Message(sourceLineNumbers, Ids.MergeExcludedModule, "The module '{0}' cannot be merged because it excludes or is excluded by the merge module with signature '{1}'.", mergeId, otherMergeId); | ||
1445 | } | ||
1446 | |||
1447 | public static Message MergeFeatureRequired(SourceLineNumber sourceLineNumbers, string tableName, string primaryKeys, string mergeModuleFile, string mergeId) | ||
1448 | { | ||
1449 | return Message(sourceLineNumbers, Ids.MergeFeatureRequired, "The {0} table contains a row with primary key(s) '{1}' which requires a feature to properly merge from the merge module '{2}'. Nest a MergeRef element with an Id attribute set to the value '{3}' under a Feature element to fix this error.", tableName, primaryKeys, mergeModuleFile, mergeId); | ||
1450 | } | ||
1451 | |||
1452 | public static Message MergeLanguageFailed(SourceLineNumber sourceLineNumbers, Int16 language, string mergeModuleFile) | ||
1453 | { | ||
1454 | return Message(sourceLineNumbers, Ids.MergeLanguageFailed, "The language '{0}' is supported but uses an invalid language transform in the merge module '{1}'.", language, mergeModuleFile); | ||
1455 | } | ||
1456 | |||
1457 | public static Message MergeLanguageUnsupported(SourceLineNumber sourceLineNumbers, Int16 language, string mergeModuleFile) | ||
1458 | { | ||
1459 | return Message(sourceLineNumbers, Ids.MergeLanguageUnsupported, "Could not locate language '{0}' (or a transform for this language) in the merge module '{1}'. This is likely due to an incorrectly authored Merge/@Language attribute.", language, mergeModuleFile); | ||
1460 | } | ||
1461 | |||
1462 | public static Message MergeModuleExpectedFeature(SourceLineNumber sourceLineNumbers, string mergeId) | ||
1463 | { | ||
1464 | return Message(sourceLineNumbers, Ids.MergeModuleExpectedFeature, "The merge module '{0}' is not assigned to a feature. All merge modules must be assigned to at least one feature.", mergeId); | ||
1465 | } | ||
1466 | |||
1467 | public static Message MergePlatformMismatch(SourceLineNumber sourceLineNumbers, string mergeModuleFile) | ||
1468 | { | ||
1469 | return Message(sourceLineNumbers, Ids.MergePlatformMismatch, "'{0}' is a 64-bit merge module but the product consuming it is 32-bit. 32-bit products can consume only 32-bit merge modules.", mergeModuleFile); | ||
1470 | } | ||
1471 | |||
1472 | public static Message MissingBundleInformation(string data) | ||
1473 | { | ||
1474 | return Message(null, Ids.MissingBundleInformation, "The Bundle is missing '{0}' data, and cannot continue.", data); | ||
1475 | } | ||
1476 | |||
1477 | public static Message MissingBundleSearch(SourceLineNumber sourceLineNumbers, string searchId) | ||
1478 | { | ||
1479 | return Message(sourceLineNumbers, Ids.MissingBundleSearch, "Bundle Search with id '{0}' has no corresponding implementation symbol.", searchId); | ||
1480 | } | ||
1481 | |||
1482 | public static Message MissingDependencyVersion(string packageId) | ||
1483 | { | ||
1484 | return Message(null, Ids.MissingDependencyVersion, "The provider dependency version was not authored for the package with Id '{0}'. Please author the Provides/@Version attribute for this package.", packageId); | ||
1485 | } | ||
1486 | |||
1487 | public static Message MissingEntrySection() | ||
1488 | { | ||
1489 | return Message(null, Ids.MissingEntrySection, "Could not find entry section in provided list of intermediates. Supported entry section types are: Product, Bundle, Patch, PatchCreation, Module."); | ||
1490 | } | ||
1491 | |||
1492 | public static Message MissingEntrySection(string sectionType) | ||
1493 | { | ||
1494 | return Message(null, Ids.MissingEntrySection, "Could not find entry section in provided list of intermediates. Expected section of type '{0}'.", sectionType); | ||
1495 | } | ||
1496 | |||
1497 | public static Message MissingManifestForWin32Assembly(SourceLineNumber sourceLineNumbers, string file, string manifest) | ||
1498 | { | ||
1499 | return Message(sourceLineNumbers, Ids.MissingManifestForWin32Assembly, "File '{0}' is marked as a Win32 assembly but it refers to assembly manifest '{1}' that is not present in this product.", file, manifest); | ||
1500 | } | ||
1501 | |||
1502 | public static Message MissingMedia(SourceLineNumber sourceLineNumbers, int diskId) | ||
1503 | { | ||
1504 | return Message(sourceLineNumbers, Ids.MissingMedia, "There is no media defined for disk id '{0}'. You must author either <Media Id='{0}' ...> or <MediaTemplate ...>.", diskId); | ||
1505 | } | ||
1506 | |||
1507 | public static Message MissingOrInvalidModuleInstallerVersion(SourceLineNumber sourceLineNumbers, string moduleId, string mergeModuleFile, string productInstallerVersion) | ||
1508 | { | ||
1509 | return Message(sourceLineNumbers, Ids.MissingOrInvalidModuleInstallerVersion, "The merge module '{0}' from file '{1}' is either missing or has an invalid installer version. The value read from the installer version in module's summary information was '{2}'. This should be a numeric value representing a valid installer version such as 200 or 301.", moduleId, mergeModuleFile, productInstallerVersion); | ||
1510 | } | ||
1511 | |||
1512 | public static Message MissingPackagePayload(SourceLineNumber sourceLineNumbers, string packageId, string packageType) | ||
1513 | { | ||
1514 | return Message(sourceLineNumbers, Ids.MissingPackagePayload, "There is no payload defined for package '{0}'. This is specified on the {1}Package element or a child {1}PackagePayload element.", packageId, packageType); | ||
1515 | } | ||
1516 | |||
1517 | public static Message MissingTableDefinition(string tableName) | ||
1518 | { | ||
1519 | return Message(null, Ids.MissingTableDefinition, "Cannot find the table definitions for the '{0}' table. This is likely due to a typing error or missing extension. Please ensure all the necessary extensions are supplied on the command line with the -ext parameter.", tableName); | ||
1520 | } | ||
1521 | |||
1522 | public static Message MissingTypeLibFile(SourceLineNumber sourceLineNumbers, string elementName, string fileElementName) | ||
1523 | { | ||
1524 | return Message(sourceLineNumbers, Ids.MissingTypeLibFile, "The {0} element is non-advertised and therefore requires a parent {1} element.", elementName, fileElementName); | ||
1525 | } | ||
1526 | |||
1527 | public static Message MissingValidatorExtension() | ||
1528 | { | ||
1529 | return Message(null, Ids.MissingValidatorExtension, "The validator requires at least one extension. Add \"ValidatorExtension, Wix\" for the default implementation."); | ||
1530 | } | ||
1531 | |||
1532 | public static Message MsiTransactionX86BeforeX64(SourceLineNumber sourceLineNumbers) | ||
1533 | { | ||
1534 | return Message(sourceLineNumbers, Ids.MsiTransactionX86BeforeX64, "MSI transactions must install all x64 packages before any x86 package."); | ||
1535 | } | ||
1536 | |||
1537 | public static Message MultipleEntrySections(SourceLineNumber sourceLineNumbers, string sectionName1, string sectionName2) | ||
1538 | { | ||
1539 | return Message(sourceLineNumbers, Ids.MultipleEntrySections, "Multiple entry sections '{0}' and '{1}' found. Only one entry section may be present in a single target.", sectionName1, sectionName2); | ||
1540 | } | ||
1541 | |||
1542 | public static Message MultipleEntrySections2(SourceLineNumber sourceLineNumbers) | ||
1543 | { | ||
1544 | return Message(sourceLineNumbers, Ids.MultipleEntrySections2, "Location of entry section related to previous error."); | ||
1545 | } | ||
1546 | |||
1547 | public static Message MultipleFilesMatchedWithOutputSpecification(string sourceSpecification, string sourceList) | ||
1548 | { | ||
1549 | return Message(null, Ids.MultipleFilesMatchedWithOutputSpecification, "A per-source file output specification has been provided ('{0}'), but multiple source files match the source specification ({1}). Specifying a unique output requires that only a single source file match.", sourceSpecification, sourceList); | ||
1550 | } | ||
1551 | |||
1552 | public static Message MultipleIdentifiersFound(SourceLineNumber sourceLineNumbers, string elementName, string identifier, string mismatchIdentifier) | ||
1553 | { | ||
1554 | return Message(sourceLineNumbers, Ids.MultipleIdentifiersFound, "Under a '{0}' element, multiple identifiers were found: '{1}' and '{2}'. All search elements under this element must have the same id.", elementName, identifier, mismatchIdentifier); | ||
1555 | } | ||
1556 | |||
1557 | public static Message MultiplePackagePayloads(SourceLineNumber sourceLineNumbers, string packageId, string packagePayloadId1, string packagePayloadId2) | ||
1558 | { | ||
1559 | return Message(sourceLineNumbers, Ids.MultiplePackagePayloads, "The package '{0}' has multiple PackagePayloads: '{1}' and '{2}'. This normally happens when the payload is defined on the package element and a child PackagePayload element.", packageId, packagePayloadId1, packagePayloadId2); | ||
1560 | } | ||
1561 | |||
1562 | public static Message MultiplePackagePayloads2(SourceLineNumber sourceLineNumbers) | ||
1563 | { | ||
1564 | return Message(sourceLineNumbers, Ids.MultiplePackagePayloads2, "The location of the package payload related to previous error."); | ||
1565 | } | ||
1566 | |||
1567 | public static Message MultiplePackagePayloads3(SourceLineNumber sourceLineNumbers) | ||
1568 | { | ||
1569 | return Message(sourceLineNumbers, Ids.MultiplePackagePayloads3, "The location of the package related to previous error."); | ||
1570 | } | ||
1571 | |||
1572 | public static Message MultiplePrimaryReferences(SourceLineNumber sourceLineNumbers, string crefChildType, string crefChildId, string crefParentType, string crefParentId, string conflictParentType, string conflictParentId) | ||
1573 | { | ||
1574 | return Message(sourceLineNumbers, Ids.MultiplePrimaryReferences, "Multiple primary references were found for {0} '{1}' in {2} '{3}' and {4} '{5}'.", crefChildType, crefChildId, crefParentType, crefParentId, conflictParentType, conflictParentId); | ||
1575 | } | ||
1576 | |||
1577 | public static Message MustSpecifyOutputWithMoreThanOneInput() | ||
1578 | { | ||
1579 | return Message(null, Ids.MustSpecifyOutputWithMoreThanOneInput, "You must specify an output file using the \"-o\" or \"-out\" switch when you provide more than one input file."); | ||
1580 | } | ||
1581 | |||
1582 | public static Message NeedSequenceBeforeOrAfter(SourceLineNumber sourceLineNumbers, string elementName) | ||
1583 | { | ||
1584 | return Message(sourceLineNumbers, Ids.NeedSequenceBeforeOrAfter, "A {0} element must have a Before attribute, After attribute, or a Sequence attribute.", elementName); | ||
1585 | } | ||
1586 | |||
1587 | public static Message NewRowAddedInTable(SourceLineNumber sourceLineNumbers, string productCode, string tableName, string rowId) | ||
1588 | { | ||
1589 | return Message(sourceLineNumbers, Ids.NewRowAddedInTable, "Product '{0}': Table '{1}' has a new row '{2}' added. This makes the patch not uninstallable.", productCode, tableName, rowId); | ||
1590 | } | ||
1591 | |||
1592 | public static Message NoDataForColumn(SourceLineNumber sourceLineNumbers, string columnName, string tableName) | ||
1593 | { | ||
1594 | return Message(sourceLineNumbers, Ids.NoDataForColumn, "There is no data for column '{0}' in a contained row of custom table '{1}'. A non-null value must be supplied for this column.", columnName, tableName); | ||
1595 | } | ||
1596 | |||
1597 | public static Message NoDifferencesInTransform(SourceLineNumber sourceLineNumbers) | ||
1598 | { | ||
1599 | return Message(sourceLineNumbers, Ids.NoDifferencesInTransform, "The transform being built did not contain any differences so it could not be created."); | ||
1600 | } | ||
1601 | |||
1602 | public static Message NoFirstControlSpecified(SourceLineNumber sourceLineNumbers, string dialogName) | ||
1603 | { | ||
1604 | return Message(sourceLineNumbers, Ids.NoFirstControlSpecified, "The '{0}' dialog element does not have a valid tabbable control. You must either have a tabbable control that is not marked TabSkip='yes', or you must mark a control TabSkip='no'. If you have a page with no tabbable controls (a progress page, for example), you might want to set the first Text control to be TabSkip='no'.", dialogName); | ||
1605 | } | ||
1606 | |||
1607 | public static Message NonterminatedPreprocessorInstruction(SourceLineNumber sourceLineNumbers, string beginInstruction, string endInstruction) | ||
1608 | { | ||
1609 | return Message(sourceLineNumbers, Ids.NonterminatedPreprocessorInstruction, "Found a <?{0}?> processing instruction without a matching <?{1}?> after it.", beginInstruction, endInstruction); | ||
1610 | } | ||
1611 | |||
1612 | public static Message NoUniqueActionSequenceNumber(SourceLineNumber sourceLineNumbers, string sequenceTableName, string actionName1, string actionName2) | ||
1613 | { | ||
1614 | return Message(sourceLineNumbers, Ids.NoUniqueActionSequenceNumber, "The {0} table contains an action '{1}' which cannot have a unique sequence number because it is scheduled before or after action '{2}'. There is not enough room before or after this action to assign a unique sequence number. Please schedule one of the actions differently so that it will be in a position with more sequence numbers available. Please note that sequence numbers must be an integer in the range 1 - 32767 (inclusive).", sequenceTableName, actionName1, actionName2); | ||
1615 | } | ||
1616 | |||
1617 | public static Message NoUniqueActionSequenceNumber2(SourceLineNumber sourceLineNumbers) | ||
1618 | { | ||
1619 | return Message(sourceLineNumbers, Ids.NoUniqueActionSequenceNumber2, "The location of the sequenced action related to previous error."); | ||
1620 | } | ||
1621 | |||
1622 | public static Message OpenDatabaseFailed(string databaseFile) | ||
1623 | { | ||
1624 | return Message(null, Ids.OpenDatabaseFailed, "Failed to open database '{0}'. Ensure it is a valid database, and it is not open by another process.", databaseFile); | ||
1625 | } | ||
1626 | |||
1627 | public static Message OrderingReferenceLoopDetected(SourceLineNumber sourceLineNumbers, string loopList) | ||
1628 | { | ||
1629 | return Message(sourceLineNumbers, Ids.OrderingReferenceLoopDetected, "A circular reference of ordering dependencies was detected. The infinite loop includes: {0}. Ordering dependency references must form a directed acyclic graph.", loopList); | ||
1630 | } | ||
1631 | |||
1632 | public static Message OrphanedComponent(SourceLineNumber sourceLineNumbers, string componentName) | ||
1633 | { | ||
1634 | return Message(sourceLineNumbers, Ids.OrphanedComponent, "Found orphaned Component '{0}'. If this is a Product, every Component must have at least one parent Feature. To include a Component in a Module, you must include it directly as a Component element of the Module element or indirectly via ComponentRef, ComponentGroup, or ComponentGroupRef elements.", componentName); | ||
1635 | } | ||
1636 | |||
1637 | public static Message OutputCodepageMismatch(SourceLineNumber sourceLineNumbers, int beforeCodepage, int afterCodepage) | ||
1638 | { | ||
1639 | return Message(sourceLineNumbers, Ids.OutputCodepageMismatch, "The code pages of the outputs do not match. One output's code page is '{0}' while the other is '{1}'.", beforeCodepage, afterCodepage); | ||
1640 | } | ||
1641 | |||
1642 | public static Message OutputCodepageMismatch2(SourceLineNumber sourceLineNumbers) | ||
1643 | { | ||
1644 | return Message(sourceLineNumbers, Ids.OutputCodepageMismatch2, "The location of the mismatched code page related to the previous warning."); | ||
1645 | } | ||
1646 | |||
1647 | public static Message OutputTargetNotSpecified() | ||
1648 | { | ||
1649 | return Message(null, Ids.OutputTargetNotSpecified, "The '-out' or '-o' parameter must specify a file path."); | ||
1650 | } | ||
1651 | |||
1652 | public static Message OutputTypeMismatch(SourceLineNumber sourceLineNumbers, string beforeOutputType, string afterOutputType) | ||
1653 | { | ||
1654 | return Message(sourceLineNumbers, Ids.OutputTypeMismatch, "The types of the outputs do not match. One output's type is '{0}' while the other is '{1}'.", beforeOutputType, afterOutputType); | ||
1655 | } | ||
1656 | |||
1657 | public static Message OverridableActionCollision(SourceLineNumber sourceLineNumbers, string sequenceTableName, string actionName) | ||
1658 | { | ||
1659 | return Message(sourceLineNumbers, Ids.OverridableActionCollision, "The {0} table contains an action '{1}' that is declared overridable in two different locations. Please remove one of the actions or the Overridable='yes' attribute from one of the actions.", sequenceTableName, actionName); | ||
1660 | } | ||
1661 | |||
1662 | public static Message OverridableActionCollision2(SourceLineNumber sourceLineNumbers) | ||
1663 | { | ||
1664 | return Message(sourceLineNumbers, Ids.OverridableActionCollision2, "The location of the action related to previous error."); | ||
1665 | } | ||
1666 | |||
1667 | public static Message PackagePayloadUnsupported(SourceLineNumber sourceLineNumbers, string packageType) | ||
1668 | { | ||
1669 | return Message(sourceLineNumbers, Ids.PackagePayloadUnsupported, "The {0}PackagePayload element can only be used for {0}Packages.", packageType); | ||
1670 | } | ||
1671 | |||
1672 | public static Message PackagePayloadUnsupported2(SourceLineNumber sourceLineNumbers) | ||
1673 | { | ||
1674 | return Message(sourceLineNumbers, Ids.PackagePayloadUnsupported2, "The location of the package related to previous error."); | ||
1675 | } | ||
1676 | |||
1677 | public static Message ParentElementAttributeRequired(SourceLineNumber sourceLineNumbers, string parentElement, string parentAttribute, string childElement) | ||
1678 | { | ||
1679 | return Message(sourceLineNumbers, Ids.ParentElementAttributeRequired, "The parent {0} element is missing the {1} attribute that is required for the {2} child element.", parentElement, parentAttribute, childElement); | ||
1680 | } | ||
1681 | |||
1682 | public static Message PatchNotRemovable() | ||
1683 | { | ||
1684 | return Message(null, Ids.PatchNotRemovable, "This patch is not uninstallable. The 'Patch' element's attribute 'AllowRemoval' should be set to 'no'."); | ||
1685 | } | ||
1686 | |||
1687 | public static Message PatchWithoutTransforms() | ||
1688 | { | ||
1689 | return Message(null, Ids.PatchWithoutTransforms, "No transforms were provided to attach to the patch."); | ||
1690 | } | ||
1691 | |||
1692 | public static Message PatchWithoutValidTransforms() | ||
1693 | { | ||
1694 | return Message(null, Ids.PatchWithoutValidTransforms, "No valid transforms were provided to attach to the patch. Check to make sure the transforms you passed on the command line have a matching baseline authored in the patch. Also, make sure there are differences between your target and upgrade."); | ||
1695 | } | ||
1696 | |||
1697 | public static Message PathCannotContainQuote(string fileName) | ||
1698 | { | ||
1699 | return Message(null, Ids.PathCannotContainQuote, "Path '{0}' contains a literal quote character. Quotes are often accidentally introduced when trying to refer to a directory path with spaces in it, such as \"C:\\Out Directory\\\" -- the backslash before the quote acts an escape character. The correct representation for that path is: \"C:\\Out Directory\\\\\".", fileName); | ||
1700 | } | ||
1701 | |||
1702 | public static Message PathTooLong(SourceLineNumber sourceLineNumbers, string fileName) | ||
1703 | { | ||
1704 | return Message(sourceLineNumbers, Ids.PathTooLong, "'{0}' is too long, the fully qualified file name must be less than 260 characters, and the directory name must be less than 248 characters.", fileName); | ||
1705 | } | ||
1706 | |||
1707 | public static Message PayloadMustBeRelativeToCache(SourceLineNumber sourceLineNumbers, string elementName, string attributeName, string attributeValue) | ||
1708 | { | ||
1709 | return Message(sourceLineNumbers, Ids.PayloadMustBeRelativeToCache, "The {0}/@{1} attribute's value, '{2}', is not a relative path.", elementName, attributeName, attributeValue); | ||
1710 | } | ||
1711 | |||
1712 | public static Message PerUserButAllUsersEquals1(SourceLineNumber sourceLineNumbers, string path) | ||
1713 | { | ||
1714 | return Message(sourceLineNumbers, Ids.PerUserButAllUsersEquals1, "The MSI '{0}' is explicitly marked to not elevate so it must be a per-user package but the ALLUSERS Property is set to '1' creating a per-machine package. Remove the Property with Id='ALLUSERS' and use Package/@InstallScope attribute to be explicit instead.", path); | ||
1715 | } | ||
1716 | |||
1717 | public static Message PreprocessorError(SourceLineNumber sourceLineNumbers, string message) | ||
1718 | { | ||
1719 | return Message(sourceLineNumbers, Ids.PreprocessorError, "{0}", message); | ||
1720 | } | ||
1721 | |||
1722 | public static Message PreprocessorExtensionEvaluateFunctionFailed(SourceLineNumber sourceLineNumbers, string prefix, string function, string args, string message) | ||
1723 | { | ||
1724 | return Message(sourceLineNumbers, Ids.PreprocessorExtensionEvaluateFunctionFailed, "In the preprocessor extension that handles prefix '{0}' while trying to call function '{1}({2})' and exception has occurred : {3}", prefix, function, args, message); | ||
1725 | } | ||
1726 | |||
1727 | public static Message PreprocessorExtensionForParameterMissing(SourceLineNumber sourceLineNumbers, string parameterName, string parameterPrefix) | ||
1728 | { | ||
1729 | return Message(sourceLineNumbers, Ids.PreprocessorExtensionForParameterMissing, "Could not find the preprocessor extension for parameter '{0}'. A preprocessor extension is expected because the parameter prefix, '{1}', is not one of the standard types: 'env', 'res', 'sys', or 'var'.", parameterName, parameterPrefix); | ||
1730 | } | ||
1731 | |||
1732 | public static Message PreprocessorExtensionGetVariableValueFailed(SourceLineNumber sourceLineNumbers, string prefix, string variable, string message) | ||
1733 | { | ||
1734 | return Message(sourceLineNumbers, Ids.PreprocessorExtensionGetVariableValueFailed, "In the preprocessor extension that handles prefix '{0}' while trying to get the value for variable '{1}' and exception has occured : {2}", prefix, variable, message); | ||
1735 | } | ||
1736 | |||
1737 | public static Message PreprocessorExtensionPragmaFailed(SourceLineNumber sourceLineNumbers, string pragma, string message) | ||
1738 | { | ||
1739 | return Message(sourceLineNumbers, Ids.PreprocessorExtensionPragmaFailed, "Exception thrown while processing pragma '{0}'. The exception's message is: {1}", pragma, message); | ||
1740 | } | ||
1741 | |||
1742 | public static Message PreprocessorIllegalForeachVariable(SourceLineNumber sourceLineNumbers, string variableName) | ||
1743 | { | ||
1744 | return Message(sourceLineNumbers, Ids.PreprocessorIllegalForeachVariable, "The variable named '{0}' is not allowed in a foreach expression.", variableName); | ||
1745 | } | ||
1746 | |||
1747 | public static Message PreprocessorMissingParameterPrefix(SourceLineNumber sourceLineNumbers, string parameterName) | ||
1748 | { | ||
1749 | return Message(sourceLineNumbers, Ids.PreprocessorMissingParameterPrefix, "Could not find the prefix in parameter name: '{0}'.", parameterName); | ||
1750 | } | ||
1751 | |||
1752 | public static Message ProductCodeInvalidForTransform(SourceLineNumber sourceLineNumbers) | ||
1753 | { | ||
1754 | return Message(sourceLineNumbers, Ids.ProductCodeInvalidForTransform, "The value '*' is not valid for the ProductCode when used in a transform or in a patch. Copy the ProductCode from your target product MSI into the Product/@Id attribute value for your product authoring."); | ||
1755 | } | ||
1756 | |||
1757 | public static Message ProgIdNestedTooDeep(SourceLineNumber sourceLineNumbers) | ||
1758 | { | ||
1759 | return Message(sourceLineNumbers, Ids.ProgIdNestedTooDeep, "ProgId elements may not be nested more than 1 level deep."); | ||
1760 | } | ||
1761 | |||
1762 | public static Message RadioButtonBitmapAndIconDisallowed(SourceLineNumber sourceLineNumbers) | ||
1763 | { | ||
1764 | return Message(sourceLineNumbers, Ids.RadioButtonBitmapAndIconDisallowed, "RadioButtonGroup elements that contain RadioButton elements with Bitmap or Icon attributes set to \"yes\" can only be specified under a Control element. Move your RadioButtonGroup element as a child of the appropriate Control element."); | ||
1765 | } | ||
1766 | |||
1767 | public static Message RadioButtonTypeInconsistent(SourceLineNumber sourceLineNumbers) | ||
1768 | { | ||
1769 | return Message(sourceLineNumbers, Ids.RadioButtonTypeInconsistent, "All RadioButton elements in a RadioButtonGroup must be consistent with their use of the Bitmap, Icon, and Text attributes. Ensure all of the RadioButton elements in this group have the same attribute specified."); | ||
1770 | } | ||
1771 | |||
1772 | public static Message ReadOnlyOutputFile(string filePath) | ||
1773 | { | ||
1774 | return Message(null, Ids.ReadOnlyOutputFile, "Unable to output to file '{0}' because it is marked as read-only.", filePath); | ||
1775 | } | ||
1776 | |||
1777 | public static Message RealTableMissingPrimaryKeyColumn(SourceLineNumber sourceLineNumbers, string tableName) | ||
1778 | { | ||
1779 | return Message(sourceLineNumbers, Ids.RealTableMissingPrimaryKeyColumn, "The table '{0}' does not contain any primary key columns. At least one column must be marked as the primary key to ensure this table can be patched.", tableName); | ||
1780 | } | ||
1781 | |||
1782 | public static Message RecursiveAction(string action, string tableName) | ||
1783 | { | ||
1784 | return Message(null, Ids.RecursiveAction, "The action '{0}' is recursively placed in the '{1}' table.", action, tableName); | ||
1785 | } | ||
1786 | |||
1787 | public static Message ReferenceLoopDetected(SourceLineNumber sourceLineNumbers, string loopList) | ||
1788 | { | ||
1789 | return Message(sourceLineNumbers, Ids.ReferenceLoopDetected, "A circular reference of groups was detected. The infinite loop includes: {0}. Group references must form a directed acyclic graph.", loopList); | ||
1790 | } | ||
1791 | |||
1792 | public static Message RegistryMultipleValuesWithoutMultiString(SourceLineNumber sourceLineNumbers, string registryElementName, string valueAttributeName, string registryValueElementName, string typeAttributeName) | ||
1793 | { | ||
1794 | return Message(sourceLineNumbers, Ids.RegistryMultipleValuesWithoutMultiString, "The {0}/@{1} attribute and a {0}/{2} element cannot both be specified. Only one may be specified if the {3} attribute's value is not 'multiString'.", registryElementName, valueAttributeName, registryValueElementName, typeAttributeName); | ||
1795 | } | ||
1796 | |||
1797 | public static Message RegistryNameValueIncorrect(SourceLineNumber sourceLineNumbers, string elementName, string attributeName, string value) | ||
1798 | { | ||
1799 | return Message(sourceLineNumbers, Ids.RegistryNameValueIncorrect, "The {0}/@{1} attribute's value, '{2}', is incorrect. It should not contain values of '+', '-', or '*' when the {0}/@Value attribute is empty. Instead, use the proper element and attributes: for Name='+' use RegistryKey/@Action='createKey', for Name='-' use RemoveRegistryKey/@Action='removeOnUninstall', for Name='*' use RegistryKey/@Action='createAndRemoveOnUninstall'.", elementName, attributeName, value); | ||
1800 | } | ||
1801 | |||
1802 | public static Message RegistryRootInvalid(SourceLineNumber sourceLineNumbers) | ||
1803 | { | ||
1804 | return Message(sourceLineNumbers, Ids.RegistryRootInvalid, "Registry/@Root attribute is invalid on a nested Registry element. Either remove the Root attribute or move the Registry element so it is not nested under another Registry element."); | ||
1805 | } | ||
1806 | |||
1807 | public static Message RegistrySubElementCannotBeRemoved(SourceLineNumber sourceLineNumbers, string registryElementName, string registryValueElementName, string actionAttributeName, string removeValue, string removeKeyOnInstallValue) | ||
1808 | { | ||
1809 | return Message(sourceLineNumbers, Ids.RegistrySubElementCannotBeRemoved, "The {0}/{1} element cannot be specified if the {2} attribute's value is '{3}' or '{4}'.", registryElementName, registryValueElementName, actionAttributeName, removeValue, removeKeyOnInstallValue); | ||
1810 | } | ||
1811 | |||
1812 | public static Message RelativePathForRegistryElement(SourceLineNumber sourceLineNumbers) | ||
1813 | { | ||
1814 | return Message(sourceLineNumbers, Ids.RelativePathForRegistryElement, "Cannot convert RelativePath into Registry elements."); | ||
1815 | } | ||
1816 | |||
1817 | public static Message ReservedNamespaceViolation(SourceLineNumber sourceLineNumbers, string element, string attribute, string prefix) | ||
1818 | { | ||
1819 | return Message(sourceLineNumbers, Ids.ReservedNamespaceViolation, "The {0}/@{1} attribute's value begins with the reserved prefix '{2}'. Some prefixes are reserved by the Windows Installer and WiX toolset for well-known values. Change your attribute's value to not begin with the same prefix.", element, attribute, prefix); | ||
1820 | } | ||
1821 | |||
1822 | public static Message RootFeatureCannotFollowParent(SourceLineNumber sourceLineNumbers) | ||
1823 | { | ||
1824 | return Message(sourceLineNumbers, Ids.RootFeatureCannotFollowParent, "The Feature element specifies a root feature with an illegal InstallDefault value of 'followParent'. Root features cannot follow their parent feature's install state because they don't have a parent feature. Please remove or change the value of the InstallDefault attribute."); | ||
1825 | } | ||
1826 | |||
1827 | public static Message SameFileIdDifferentSource(SourceLineNumber sourceLineNumbers, string fileId, string sourcePath1, string sourcePath2) | ||
1828 | { | ||
1829 | return Message(sourceLineNumbers, Ids.SameFileIdDifferentSource, "Two different source paths '{1}' and '{2}' were detected for the same file identifier '{0}'. You must either author these under Media elements with different Id attribute values or in different patches.", fileId, sourcePath1, sourcePath2); | ||
1830 | } | ||
1831 | |||
1832 | public static Message SamePatchBaselineId(SourceLineNumber sourceLineNumbers, string id) | ||
1833 | { | ||
1834 | return Message(sourceLineNumbers, Ids.SamePatchBaselineId, "The PatchBaseline/@Id attribute value '{0}' is a child of multiple Media elements. This prevents transforms from being resolved to distinct media. Change the PatchBaseline/@Id attribute values to be unique.", id); | ||
1835 | } | ||
1836 | |||
1837 | public static Message SchemaValidationFailed(SourceLineNumber sourceLineNumbers, string validationError, int lineNumber, int linePosition) | ||
1838 | { | ||
1839 | return Message(sourceLineNumbers, Ids.SchemaValidationFailed, "Schema validation failed with the following error at line {1}, column {2}: {0}", validationError, lineNumber, linePosition); | ||
1840 | } | ||
1841 | |||
1842 | public static Message SearchElementRequired(SourceLineNumber sourceLineNumbers, string elementName) | ||
1843 | { | ||
1844 | return Message(sourceLineNumbers, Ids.SearchElementRequired, "A '{0}' element must have a search element as a child.", elementName); | ||
1845 | } | ||
1846 | |||
1847 | public static Message SearchElementRequiredWithAttribute(SourceLineNumber sourceLineNumbers, string elementName, string attributeName, string attributeValue) | ||
1848 | { | ||
1849 | return Message(sourceLineNumbers, Ids.SearchElementRequiredWithAttribute, "A {0} element must have a search element as a child when the {0}/@{1} attribute has the value '{2}'.", elementName, attributeName, attributeValue); | ||
1850 | } | ||
1851 | |||
1852 | public static Message SearchPropertyNotUppercase(SourceLineNumber sourceLineNumbers, string elementName, string attributeName, string value) | ||
1853 | { | ||
1854 | return Message(sourceLineNumbers, Ids.SearchPropertyNotUppercase, "The {0}/@{1} attribute's value, '{2}', cannot contain lowercase characters. Since this is a search property, it must also be a public property. This means the Property/@Id value must be completely uppercase.", elementName, attributeName, value); | ||
1855 | } | ||
1856 | |||
1857 | public static Message SecurePropertyNotUppercase(SourceLineNumber sourceLineNumbers, string elementName, string attributeName, string propertyId) | ||
1858 | { | ||
1859 | return Message(sourceLineNumbers, Ids.SecurePropertyNotUppercase, "The {0}/@{1} attribute's value, '{2}', cannot contain lowercase characters. Since this is a secure property, it must also be a public property. This means the Property/@Id value must be completely uppercase.", elementName, attributeName, propertyId); | ||
1860 | } | ||
1861 | |||
1862 | public static Message SignedEmbeddedCabinet(SourceLineNumber sourceLineNumbers) | ||
1863 | { | ||
1864 | return Message(sourceLineNumbers, Ids.SignedEmbeddedCabinet, "The DigitalSignature element cannot be nested under a Media element which specifies EmbedCab='yes'. This is because Windows Installer can only verify the digital signatures of external cabinets. Please either remove the DigitalSignature element or change the value of the Media/@EmbedCab attribute to 'no'."); | ||
1865 | } | ||
1866 | |||
1867 | public static Message SingleExtensionSupported() | ||
1868 | { | ||
1869 | return Message(null, Ids.SingleExtensionSupported, "Multiple extensions were specified on the command line, only a single extension is supported."); | ||
1870 | } | ||
1871 | |||
1872 | public static Message SmokeMalformedPath() | ||
1873 | { | ||
1874 | return Message(null, Ids.SmokeMalformedPath, "Path contains one or more invalid characters."); | ||
1875 | } | ||
1876 | |||
1877 | public static Message SmokeUnknownFileExtension() | ||
1878 | { | ||
1879 | return Message(null, Ids.SmokeUnknownFileExtension, "Unknown input file format - expected a .msi or .msm file."); | ||
1880 | } | ||
1881 | |||
1882 | public static Message SmokeUnsupportedFileExtension() | ||
1883 | { | ||
1884 | return Message(null, Ids.SmokeUnsupportedFileExtension, "Files with an extension of .msp are not currently supported."); | ||
1885 | } | ||
1886 | |||
1887 | public static Message SpecifiedBinderNotFound(string binderClass) | ||
1888 | { | ||
1889 | return Message(null, Ids.SpecifiedBinderNotFound, "The specified binder class '{0}' was not found in any extensions.", binderClass); | ||
1890 | } | ||
1891 | |||
1892 | public static Message SplitCabinetCopyRegistrationFailed(string newCabName, string firstCabName) | ||
1893 | { | ||
1894 | return Message(null, Ids.SplitCabinetCopyRegistrationFailed, "Failed to register the copy command for cabinet '{0}' formed by splitting cabinet '{1}'.", newCabName, firstCabName); | ||
1895 | } | ||
1896 | |||
1897 | public static Message SplitCabinetInsertionFailed(string newCabName, string firstCabName, string lastCabinetOfThisSequence) | ||
1898 | { | ||
1899 | return Message(null, Ids.SplitCabinetInsertionFailed, "Could not find the last split cabinet '{2}' in the Media Table. So failed to add new cabinet '{0}' formed by splitting cabinet '{1}' to the installer package.", newCabName, firstCabName, lastCabinetOfThisSequence); | ||
1900 | } | ||
1901 | |||
1902 | public static Message SplitCabinetNameCollision(string newCabName, string firstCabName) | ||
1903 | { | ||
1904 | return Message(null, Ids.SplitCabinetNameCollision, "The cabinet name '{0}' collides with the new cabinet formed by splitting cabinet '{1}', consider renaming cabinet '{0}'.", newCabName, firstCabName); | ||
1905 | } | ||
1906 | |||
1907 | public static Message StandardActionRelativelyScheduledInModule(SourceLineNumber sourceLineNumbers, string sequenceTableName, string actionName) | ||
1908 | { | ||
1909 | return Message(sourceLineNumbers, Ids.StandardActionRelativelyScheduledInModule, "The {0} table contains a standard action '{1}' that does not have a sequence number specified. The Sequence attribute is required for standard actions in a merge module. Please remove the action or use the Sequence attribute.", sequenceTableName, actionName); | ||
1910 | } | ||
1911 | |||
1912 | public static Message StreamNameTooLong(SourceLineNumber sourceLineNumbers, string elementName, string attributeName, string value, int length, int maximumLength) | ||
1913 | { | ||
1914 | return Message(sourceLineNumbers, Ids.StreamNameTooLong, "The {0}/@{1} attribute's value, '{2}', is {3} characters long. This is too long because it will be used to create a stream name. It cannot be more than than {4} characters long.", elementName, attributeName, value, length, maximumLength); | ||
1915 | } | ||
1916 | |||
1917 | public static Message StreamNameTooLong(SourceLineNumber sourceLineNumbers, string tableName, string streamName, int streamLength) | ||
1918 | { | ||
1919 | return Message(sourceLineNumbers, Ids.StreamNameTooLong, "The binary value in table '{0}' will be stored with a stream name, '{1}', that is {2} characters long. This is too long because the maximum allowed length for a stream name is 62 characters long. Since the stream name is created by concatenating the table name and values of the primary key for a row (delimited by periods), this error can be resolved by shortening a value that is part of the primary key.", tableName, streamName, streamLength); | ||
1920 | } | ||
1921 | |||
1922 | public static Message StubMissingWixburnSection(string filename) | ||
1923 | { | ||
1924 | return Message(null, Ids.StubMissingWixburnSection, "Stub executable '{0}' does not contain a .wixburn data section.", filename); | ||
1925 | } | ||
1926 | |||
1927 | public static Message StubWixburnSectionTooSmall(string filename) | ||
1928 | { | ||
1929 | return Message(null, Ids.StubWixburnSectionTooSmall, "Stub executable '{0}' .wixburn data section is too small to store the Burn container header.", filename); | ||
1930 | } | ||
1931 | |||
1932 | public static Message SuppressNonoverridableAction(SourceLineNumber sourceLineNumbers, string sequenceTableName, string actionName) | ||
1933 | { | ||
1934 | return Message(sourceLineNumbers, Ids.SuppressNonoverridableAction, "The {0} table contains an action '{1}' that cannot be suppressed because it is not declared overridable in the base definition. Please stop suppressing the action or make it overridable in its base declaration.", sequenceTableName, actionName); | ||
1935 | } | ||
1936 | |||
1937 | public static Message SuppressNonoverridableAction2(SourceLineNumber sourceLineNumbers) | ||
1938 | { | ||
1939 | return Message(sourceLineNumbers, Ids.SuppressNonoverridableAction2, "The location of the non-overridable definition of the action related to previous error."); | ||
1940 | } | ||
1941 | |||
1942 | public static Message TabbableControlNotAllowedInBillboard(SourceLineNumber sourceLineNumbers, string elementName, string controlType) | ||
1943 | { | ||
1944 | return Message(sourceLineNumbers, Ids.TabbableControlNotAllowedInBillboard, "A {0} element was specified with Type='{1}' and TabSkip='no'. Tabbable controls are not allowed in Billboards.", elementName, controlType); | ||
1945 | } | ||
1946 | |||
1947 | public static Message TableDecompilationUnimplemented(string tableName) | ||
1948 | { | ||
1949 | return Message(null, Ids.TableDecompilationUnimplemented, "Decompilation of the {0} table has not been implemented by its extension.", tableName); | ||
1950 | } | ||
1951 | |||
1952 | public static Message TableNameTooLong(SourceLineNumber sourceLineNumbers, string elementName, string attributeName, string value) | ||
1953 | { | ||
1954 | return Message(sourceLineNumbers, Ids.TableNameTooLong, "The {0}/@{1} attribute's value, '{2}', is too long for a table name. It cannot be more than than 31 characters long.", elementName, attributeName, value); | ||
1955 | } | ||
1956 | |||
1957 | public static Message TooDeeplyIncluded(SourceLineNumber sourceLineNumbers, int depth) | ||
1958 | { | ||
1959 | return Message(sourceLineNumbers, Ids.TooDeeplyIncluded, "Include files cannot be nested more deeply than {0} times. Make sure included files don't accidentally include themselves.", depth); | ||
1960 | } | ||
1961 | |||
1962 | public static Message TooManyChildren(SourceLineNumber sourceLineNumbers, string elementName, string childElementName) | ||
1963 | { | ||
1964 | return Message(sourceLineNumbers, Ids.TooManyChildren, "The {0} element contains multiple {1} child elements. There can only be one {1} child element per {0} element.", elementName, childElementName); | ||
1965 | } | ||
1966 | |||
1967 | public static Message TooManyColumnsInRealTable(string tableName, int columnCount, int supportedColumnCount) | ||
1968 | { | ||
1969 | return Message(null, Ids.TooManyColumnsInRealTable, "The table '{0}' contains {1} columns which is not supported by Windows Installer. Windows Installer supports a maximum of {2} columns.", tableName, columnCount, supportedColumnCount); | ||
1970 | } | ||
1971 | |||
1972 | public static Message TooManyElements(SourceLineNumber sourceLineNumbers, string elementName, string childElementName, int expectedInstances) | ||
1973 | { | ||
1974 | return Message(sourceLineNumbers, Ids.TooManyElements, "The {0} element contains an unexpected child element '{1}'. The '{1}' element may only occur {2} time(s) under the {0} element.", elementName, childElementName, expectedInstances); | ||
1975 | } | ||
1976 | |||
1977 | public static Message TooManySearchElements(SourceLineNumber sourceLineNumbers, string elementName) | ||
1978 | { | ||
1979 | return Message(sourceLineNumbers, Ids.TooManySearchElements, "Only one search element can appear under a '{0}' element.", elementName); | ||
1980 | } | ||
1981 | |||
1982 | public static Message TransformSchemaMismatch() | ||
1983 | { | ||
1984 | return Message(null, Ids.TransformSchemaMismatch, "The transform schema does not match the database schema. The transform may have been generated from a different database."); | ||
1985 | } | ||
1986 | |||
1987 | public static Message TypeSpecificationForExtensionRequired(string parameter) | ||
1988 | { | ||
1989 | return Message(null, Ids.TypeSpecificationForExtensionRequired, "The parameter '{0}' must be followed by the extension's type specification. The type specification should be a fully qualified class and assembly identity, for example: \"MyNamespace.MyClass,myextension.dll\".", parameter); | ||
1990 | } | ||
1991 | |||
1992 | public static Message UnableToGetAuthenticodeCertOfFile(string filePath, string moreInformation) | ||
1993 | { | ||
1994 | return Message(null, Ids.UnableToGetAuthenticodeCertOfFile, "Unable to get the authenticode certificate of '{0}'. More information: {1}", filePath, moreInformation); | ||
1995 | } | ||
1996 | |||
1997 | public static Message UnableToGetAuthenticodeCertOfFileDownlevelOS(string filePath, string moreInformation) | ||
1998 | { | ||
1999 | return Message(null, Ids.UnableToGetAuthenticodeCertOfFileDownlevelOS, "Unable to get the authenticode certificate of '{0}'. The cryptography API has limitations on Windows XP and Windows Server 2003. More information: {1}", filePath, moreInformation); | ||
2000 | } | ||
2001 | |||
2002 | public static Message UnableToConvertFieldToNumber(string value) | ||
2003 | { | ||
2004 | return Message(null, Ids.UnableToConvertFieldToNumber, "Unable to convert intermediate symbol field value '{0}' to a number. This means the intermediate is corrupt or of an unsupported version.", value); | ||
2005 | } | ||
2006 | |||
2007 | public static Message UnableToOpenModule(SourceLineNumber sourceLineNumbers, string modulePath, string message) | ||
2008 | { | ||
2009 | return Message(sourceLineNumbers, Ids.UnableToOpenModule, "Unable to open merge module '{0}'. Check to make sure the module language is correct. '{1}'", modulePath, message); | ||
2010 | } | ||
2011 | |||
2012 | public static Message UnableToReadPackageInformation(SourceLineNumber sourceLineNumbers, string packagePath, string detailedErrorMessage) | ||
2013 | { | ||
2014 | return Message(sourceLineNumbers, Ids.UnableToReadPackageInformation, "Unable to read package '{0}'. {1}", packagePath, detailedErrorMessage); | ||
2015 | } | ||
2016 | |||
2017 | public static Message UnauthorizedAccess(string filePath) | ||
2018 | { | ||
2019 | return Message(null, Ids.UnauthorizedAccess, "Access to the path '{0}' is denied.", filePath); | ||
2020 | } | ||
2021 | |||
2022 | public static Message UndefinedPreprocessorFunction(SourceLineNumber sourceLineNumbers, string variableName) | ||
2023 | { | ||
2024 | return Message(sourceLineNumbers, Ids.UndefinedPreprocessorFunction, "Undefined preprocessor function '$({0})'.", variableName); | ||
2025 | } | ||
2026 | |||
2027 | public static Message UndefinedPreprocessorVariable(SourceLineNumber sourceLineNumbers, string variableName) | ||
2028 | { | ||
2029 | return Message(sourceLineNumbers, Ids.UndefinedPreprocessorVariable, "Undefined preprocessor variable '$({0})'.", variableName); | ||
2030 | } | ||
2031 | |||
2032 | public static Message UnexpectedAttribute(SourceLineNumber sourceLineNumbers, string elementName, string attributeName) | ||
2033 | { | ||
2034 | return Message(sourceLineNumbers, Ids.UnexpectedAttribute, "The {0} element contains an unexpected attribute '{1}'.", elementName, attributeName); | ||
2035 | } | ||
2036 | |||
2037 | public static Message UnexpectedColumnCount(SourceLineNumber sourceLineNumbers, string tableName) | ||
2038 | { | ||
2039 | return Message(sourceLineNumbers, Ids.UnexpectedColumnCount, "A parsed row has more fields that contain data for table '{0}' than are defined. This is potentially because a standard table is being redefined as a custom table or is based on an older table schema.", tableName); | ||
2040 | } | ||
2041 | |||
2042 | public static Message UnexpectedContentNode(SourceLineNumber sourceLineNumbers, string elementName, string unexpectedNodeType) | ||
2043 | { | ||
2044 | return Message(sourceLineNumbers, Ids.UnexpectedContentNode, "The {0} element contains an unexpected xml node of type {1}.", elementName, unexpectedNodeType); | ||
2045 | } | ||
2046 | |||
2047 | public static Message UnexpectedCustomTableColumn(SourceLineNumber sourceLineNumbers, string column) | ||
2048 | { | ||
2049 | return Message(sourceLineNumbers, Ids.UnexpectedCustomTableColumn, "The custom table column '{0}' is unknown.", column); | ||
2050 | } | ||
2051 | |||
2052 | public static Message UnexpectedElement(SourceLineNumber sourceLineNumbers, string elementName, string childElementName) | ||
2053 | { | ||
2054 | return Message(sourceLineNumbers, Ids.UnexpectedElement, "The {0} element contains an unexpected child element '{1}'.", elementName, childElementName); | ||
2055 | } | ||
2056 | |||
2057 | public static Message UnexpectedElementWithAttribute(SourceLineNumber sourceLineNumbers, string elementName, string childElementName, string attribute) | ||
2058 | { | ||
2059 | return Message(sourceLineNumbers, Ids.UnexpectedElementWithAttribute, "The {0} element cannot have a child element '{1}' when attribute '{2}' is set.", elementName, childElementName, attribute); | ||
2060 | } | ||
2061 | |||
2062 | public static Message UnexpectedElementWithAttribute(SourceLineNumber sourceLineNumbers, string elementName, string childElementName, string attribute1, string attribute2, string attribute3, string attribute4) | ||
2063 | { | ||
2064 | return Message(sourceLineNumbers, Ids.UnexpectedElementWithAttribute, "The {0} element cannot have a child element '{1}' when any of attributes '{2}', '{3}', '{4}', or '{5}' are set.", elementName, childElementName, attribute1, attribute2, attribute3, attribute4); | ||
2065 | } | ||
2066 | |||
2067 | public static Message UnexpectedElementWithAttributeValue(SourceLineNumber sourceLineNumbers, string elementName, string childElementName, string attribute, string attributeValue) | ||
2068 | { | ||
2069 | return Message(sourceLineNumbers, Ids.UnexpectedElementWithAttributeValue, "The {0} element cannot have a child element '{1}' unless attribute '{2}' is set to '{3}'.", elementName, childElementName, attribute, attributeValue); | ||
2070 | } | ||
2071 | |||
2072 | public static Message UnexpectedElementWithAttributeValue(SourceLineNumber sourceLineNumbers, string elementName, string childElementName, string attribute, string attributeValue1, string attributeValue2) | ||
2073 | { | ||
2074 | return Message(sourceLineNumbers, Ids.UnexpectedElementWithAttributeValue, "The {0} element cannot have a child element '{1}' unless attribute '{2}' is set to '{3}' or '{4}'.", elementName, childElementName, attribute, attributeValue1, attributeValue2); | ||
2075 | } | ||
2076 | |||
2077 | public static Message UnexpectedEmptySubexpression(SourceLineNumber sourceLineNumbers, string expression) | ||
2078 | { | ||
2079 | return Message(sourceLineNumbers, Ids.UnexpectedEmptySubexpression, "The empty subexpression is unexpected in the expression '{0}'.", expression); | ||
2080 | } | ||
2081 | |||
2082 | public static Message UnexpectedException(Exception exception) | ||
2083 | { | ||
2084 | return Message(null, Ids.UnexpectedException, exception.ToString()); | ||
2085 | } | ||
2086 | |||
2087 | public static Message UnexpectedException(string message, string type, string stackTrace) | ||
2088 | { | ||
2089 | return Message(null, Ids.UnexpectedException, "{0}\r\n\r\nException Type: {1}\r\n\r\nStack Trace:\r\n{2}", message, type, stackTrace); | ||
2090 | } | ||
2091 | |||
2092 | public static Message UnexpectedExternalUIMessage(string message) | ||
2093 | { | ||
2094 | return Message(null, Ids.UnexpectedExternalUIMessage, "Error executing unknown ICE action. The most common cause of this kind of ICE failure is an incorrectly registered scripting engine. See http://wixtoolset.org/documentation/error217/ for details and how to solve this problem. The following string format was not expected by the external UI message logger: \"{0}\".", message); | ||
2095 | } | ||
2096 | |||
2097 | public static Message UnexpectedExternalUIMessage(string message, string action) | ||
2098 | { | ||
2099 | return Message(null, Ids.UnexpectedExternalUIMessage, "Error executing ICE action '{1}'. The most common cause of this kind of ICE failure is an incorrectly registered scripting engine. See http://wixtoolset.org/documentation/error217/ for details and how to solve this problem. The following string format was not expected by the external UI message logger: \"{0}\".", message, action); | ||
2100 | } | ||
2101 | |||
2102 | public static Message UnexpectedFileExtension(string fileName, string expectedExtensions) | ||
2103 | { | ||
2104 | return Message(null, Ids.UnexpectedFileExtension, "The file '{0}' has an unexpected extension. Expected one of the following: '{1}'.", fileName, expectedExtensions); | ||
2105 | } | ||
2106 | |||
2107 | public static Message UnexpectedFileFormat(string path, string expectedFormat, string actualFormat) | ||
2108 | { | ||
2109 | return Message(null, Ids.UnexpectedFileFormat, "Unexpected file format loaded from path: {0}. The file was expected to be a {1} but was actually: {2}. Ensure the correct path was provided.", path, expectedFormat.ToLowerInvariant(), actualFormat.ToLowerInvariant()); | ||
2110 | } | ||
2111 | |||
2112 | public static Message UnexpectedGroupChild(string parentType, string parentId, string childType, string childId) | ||
2113 | { | ||
2114 | return Message(null, Ids.UnexpectedGroupChild, "A group parent ('{0}'/'{1}') had an unexpected child ('{2}'/'{3}').", parentType, parentId, childType, childId); | ||
2115 | } | ||
2116 | |||
2117 | public static Message UnexpectedLiteral(SourceLineNumber sourceLineNumbers, string expression) | ||
2118 | { | ||
2119 | return Message(sourceLineNumbers, Ids.UnexpectedLiteral, "An unexpected literal was found in the expression '{0}'.", expression); | ||
2120 | } | ||
2121 | |||
2122 | public static Message UnexpectedPreprocessorOperator(SourceLineNumber sourceLineNumbers, string op) | ||
2123 | { | ||
2124 | return Message(sourceLineNumbers, Ids.UnexpectedPreprocessorOperator, "The operator '{0}' is unexpected.", op); | ||
2125 | } | ||
2126 | |||
2127 | public static Message UnexpectedTableInMergeModule(SourceLineNumber sourceLineNumbers, string tableName) | ||
2128 | { | ||
2129 | return Message(sourceLineNumbers, Ids.UnexpectedTableInMergeModule, "An unexpected row in the '{0}' table was found in this merge module. Merge modules cannot contain the '{0}' table.", tableName); | ||
2130 | } | ||
2131 | |||
2132 | public static Message UnexpectedTableInPatch(SourceLineNumber sourceLineNumbers, string tableName) | ||
2133 | { | ||
2134 | return Message(sourceLineNumbers, Ids.UnexpectedTableInPatch, "An unexpected row in the '{0}' table was found in this patch. Patches cannot contain the '{0}' table.", tableName); | ||
2135 | } | ||
2136 | |||
2137 | public static Message UnexpectedTableInPatchCreationPackage(SourceLineNumber sourceLineNumbers, string tableName) | ||
2138 | { | ||
2139 | return Message(sourceLineNumbers, Ids.UnexpectedTableInPatchCreationPackage, "An unexpected row in the '{0}' table was found in this patch creation package. Patch creation packages cannot contain the '{0}' table.", tableName); | ||
2140 | } | ||
2141 | |||
2142 | public static Message UnhandledExtensionAttribute(SourceLineNumber sourceLineNumbers, string elementName, string extensionAttributeName, string extensionNamespace) | ||
2143 | { | ||
2144 | return Message(sourceLineNumbers, Ids.UnhandledExtensionAttribute, "The {0} element contains an unhandled extension attribute '{1}'. Please ensure that the extension for attributes in the '{2}' namespace has been provided.", elementName, extensionAttributeName, extensionNamespace); | ||
2145 | } | ||
2146 | |||
2147 | public static Message UnhandledExtensionElement(SourceLineNumber sourceLineNumbers, string elementName, string extensionElementName, string extensionNamespace) | ||
2148 | { | ||
2149 | return Message(sourceLineNumbers, Ids.UnhandledExtensionElement, "The {0} element contains an unhandled extension element '{1}'. Please ensure that the extension for elements in the '{2}' namespace has been provided.", elementName, extensionElementName, extensionNamespace); | ||
2150 | } | ||
2151 | |||
2152 | public static Message UniqueFileSearchIdRequired(SourceLineNumber sourceLineNumbers, string id, string elementName) | ||
2153 | { | ||
2154 | return Message(sourceLineNumbers, Ids.UniqueFileSearchIdRequired, "The DirectorySearch element '{0}' requires that the child {1} element has a unique Id when the DirectorySearch/@AssignToProperty attribute is set to 'yes'.", id, elementName); | ||
2155 | } | ||
2156 | |||
2157 | public static Message UnknownCustomTableColumnType(SourceLineNumber sourceLineNumbers, string columnType) | ||
2158 | { | ||
2159 | return Message(sourceLineNumbers, Ids.UnknownCustomTableColumnType, "Encountered an unknown custom table column type '{0}'.", columnType); | ||
2160 | } | ||
2161 | |||
2162 | public static Message UnmatchedParenthesisInExpression(SourceLineNumber sourceLineNumbers, string expression) | ||
2163 | { | ||
2164 | return Message(sourceLineNumbers, Ids.UnmatchedParenthesisInExpression, "The parenthesis don't match in the expression '{0}'.", expression); | ||
2165 | } | ||
2166 | |||
2167 | public static Message UnmatchedPreprocessorInstruction(SourceLineNumber sourceLineNumbers, string beginInstruction, string endInstruction) | ||
2168 | { | ||
2169 | return Message(sourceLineNumbers, Ids.UnmatchedPreprocessorInstruction, "Found a <?{1}?> processing instruction without a matching <?{0}?> before it.", beginInstruction, endInstruction); | ||
2170 | } | ||
2171 | |||
2172 | public static Message UnmatchedQuotesInExpression(SourceLineNumber sourceLineNumbers, string expression) | ||
2173 | { | ||
2174 | return Message(sourceLineNumbers, Ids.UnmatchedQuotesInExpression, "The quotes don't match in the expression '{0}'.", expression); | ||
2175 | } | ||
2176 | |||
2177 | public static Message UnresolvedBindReference(SourceLineNumber sourceLineNumbers, string BindRef) | ||
2178 | { | ||
2179 | return Message(sourceLineNumbers, Ids.UnresolvedBindReference, "Unresolved bind-time variable {0}.", BindRef); | ||
2180 | } | ||
2181 | |||
2182 | public static Message UnresolvedReference(SourceLineNumber sourceLineNumbers, string symbolName) | ||
2183 | { | ||
2184 | return Message(sourceLineNumbers, Ids.UnresolvedReference, "The identifier '{0}' could not be found. Ensure you have typed the reference correctly and that all the necessary inputs are provided to the linker.", symbolName); | ||
2185 | } | ||
2186 | |||
2187 | public static Message UnresolvedReference(SourceLineNumber sourceLineNumbers, string symbolName, WixToolset.Data.AccessModifier accessModifier) | ||
2188 | { | ||
2189 | return Message(sourceLineNumbers, Ids.UnresolvedReference, "The identifier '{0}' is inaccessible due to its protection level.", symbolName, accessModifier); | ||
2190 | } | ||
2191 | |||
2192 | public static Message UnsupportedAllUsersValue(SourceLineNumber sourceLineNumbers, string path, string value) | ||
2193 | { | ||
2194 | return Message(sourceLineNumbers, Ids.UnsupportedAllUsersValue, "The MSI '{0}' set the ALLUSERS Property to '{0}' which is not supported. Remove the Property with Id='ALLUSERS' and use Package/@InstallScope attribute instead.", path, value); | ||
2195 | } | ||
2196 | |||
2197 | public static Message UnsupportedExtensionAttribute(SourceLineNumber sourceLineNumbers, string elementName, string extensionElementName) | ||
2198 | { | ||
2199 | return Message(sourceLineNumbers, Ids.UnsupportedExtensionAttribute, "The {0} element contains an unsupported extension attribute '{1}'. The {0} element does not currently support extension attributes. Is the {1} attribute using the correct XML namespace?", elementName, extensionElementName); | ||
2200 | } | ||
2201 | |||
2202 | public static Message UnsupportedExtensionElement(SourceLineNumber sourceLineNumbers, string elementName, string extensionElementName) | ||
2203 | { | ||
2204 | return Message(sourceLineNumbers, Ids.UnsupportedExtensionElement, "The {0} element contains an unsupported extension element '{1}'. The {0} element does not currently support extension elements. Is the {1} element using the correct XML namespace?", elementName, extensionElementName); | ||
2205 | } | ||
2206 | |||
2207 | public static Message UnsupportedPlatformForElement(SourceLineNumber sourceLineNumbers, string platform, string elementName) | ||
2208 | { | ||
2209 | return Message(sourceLineNumbers, Ids.UnsupportedPlatformForElement, "The element {1} does not support platform '{0}'. Consider removing the element or using the preprocessor to conditionally include the element based on the platform.", platform, elementName); | ||
2210 | } | ||
2211 | |||
2212 | public static Message ValidationError(SourceLineNumber sourceLineNumbers, string ice, string message) | ||
2213 | { | ||
2214 | return Message(sourceLineNumbers, Ids.ValidationError, "{0}: {1}", ice, message); | ||
2215 | } | ||
2216 | |||
2217 | public static Message ValidationFailedDueToInvalidPackage() | ||
2218 | { | ||
2219 | return Message(null, Ids.ValidationFailedDueToInvalidPackage, "Failed to open package for validation. The most common cause of this error is validating an x64 package on an x86 system. To fix this error, run validation on an x64 system or disable validation."); | ||
2220 | } | ||
2221 | |||
2222 | public static Message ValidationFailedDueToLowMsiEngine() | ||
2223 | { | ||
2224 | return Message(null, Ids.ValidationFailedDueToLowMsiEngine, "The package being validated requires a higher version of Windows Installer than is installed on this machine. Validation cannot continue."); | ||
2225 | } | ||
2226 | |||
2227 | public static Message ValidationFailedDueToMultilanguageMergeModule() | ||
2228 | { | ||
2229 | return Message(null, Ids.ValidationFailedDueToMultilanguageMergeModule, "Failed to open merge module for validation. The most common cause of this error is specifying that the merge module supports multiple languages (using the Package/@Languages attribute) but not including language-specific embedded transforms. To fix this error, make the merge module language-neutral, make it language-specific, embed language transforms as specified in the MSI SDK at http://msdn.microsoft.com/library/aa367799.aspx, or disable validation."); | ||
2230 | } | ||
2231 | |||
2232 | public static Message ValidationFailedToOpenDatabase() | ||
2233 | { | ||
2234 | return Message(null, Ids.ValidationFailedToOpenDatabase, "Failed to open the database. During validation, this most commonly happens when attempting to open a database using an unsupported code page or a file that is not a valid Windows Installer database. Please use a different code page in Module/@Codepage, Package/@SummaryCodepage, Product/@Codepage, or WixLocalization/@Codepage; or make sure you provide the path to a valid Windows Installer database."); | ||
2235 | } | ||
2236 | |||
2237 | public static Message ValueAndMaskMustBeSameLength(SourceLineNumber sourceLineNumbers) | ||
2238 | { | ||
2239 | return Message(sourceLineNumbers, Ids.ValueAndMaskMustBeSameLength, "The FileTypeMask/@Value and FileTypeMask/@Mask attributes must be the same length."); | ||
2240 | } | ||
2241 | |||
2242 | public static Message ValueNotSupported(SourceLineNumber sourceLineNumbers, string elementName, string attributeName, string attributeValue) | ||
2243 | { | ||
2244 | return Message(sourceLineNumbers, Ids.ValueNotSupported, "The {0}/@{1} attribute's value, '{2}, is not supported by the Windows Installer.", elementName, attributeName, attributeValue); | ||
2245 | } | ||
2246 | |||
2247 | public static Message VariableDeclarationCollision(SourceLineNumber sourceLineNumbers, string variableName, string variableValue, string variableCollidingValue) | ||
2248 | { | ||
2249 | return Message(sourceLineNumbers, Ids.VariableDeclarationCollision, "The variable '{0}' with value '{1}' was previously declared with value '{2}'.", variableName, variableValue, variableCollidingValue); | ||
2250 | } | ||
2251 | |||
2252 | public static Message VersionIndependentProgIdsCannotHaveIcons(SourceLineNumber sourceLineNumbers) | ||
2253 | { | ||
2254 | return Message(sourceLineNumbers, Ids.VersionIndependentProgIdsCannotHaveIcons, "Version independent ProgIds cannot have Icons. Remove the Icon and/or IconIndex attributes from your ProgId element."); | ||
2255 | } | ||
2256 | |||
2257 | public static Message VersionMismatch(SourceLineNumber sourceLineNumbers, string fileType, string version, string expectedVersion) | ||
2258 | { | ||
2259 | return Message(sourceLineNumbers, Ids.VersionMismatch, "The {0} file format version {1} is not compatible with the expected {0} file format version {2}.", fileType, version, expectedVersion); | ||
2260 | } | ||
2261 | |||
2262 | public static Message Win32Exception(int nativeErrorCode, string message) | ||
2263 | { | ||
2264 | return Message(null, Ids.Win32Exception, "An unexpected Win32 exception with error code 0x{0:X} occurred: {1}", nativeErrorCode, message); | ||
2265 | } | ||
2266 | |||
2267 | public static Message Win32Exception(int nativeErrorCode, string file, string message) | ||
2268 | { | ||
2269 | return Message(null, Ids.Win32Exception, "An unexpected Win32 exception with error code 0x{0:X} occurred while accessing file '{1}': {2}", nativeErrorCode, file, message); | ||
2270 | } | ||
2271 | |||
2272 | public static Message WixFileNotFound(string file) | ||
2273 | { | ||
2274 | return Message(null, Ids.WixFileNotFound, "The file '{0}' cannot be found.", file); | ||
2275 | } | ||
2276 | |||
2277 | public static Message WixVariableCollision(SourceLineNumber sourceLineNumbers, string variableId) | ||
2278 | { | ||
2279 | return Message(sourceLineNumbers, Ids.WixVariableCollision, "The WiX variable '{0}' is declared in more than one location. Please remove one of the declarations.", variableId); | ||
2280 | } | ||
2281 | |||
2282 | public static Message WixVariableUnknown(SourceLineNumber sourceLineNumbers, string variableId) | ||
2283 | { | ||
2284 | return Message(sourceLineNumbers, Ids.WixVariableUnknown, "The WiX variable !(wix.{0}) is unknown. Please ensure the variable is declared on the command line for light.exe, via a WixVariable element, or inline using the syntax !(wix.{0}=some value which doesn't contain parenthesis).", variableId); | ||
2285 | } | ||
2286 | |||
2287 | public static Message WrongFileExtensionForNumberOfInputs(string inputExtension, string input) | ||
2288 | { | ||
2289 | return Message(null, Ids.WrongFileExtensionForNumberOfInputs, "The extension '{0}' on the input specified '{1}' does not match the number of inputs required to handle an input with this extension. Check if you are missing an input or have too many.", inputExtension, input); | ||
2290 | } | ||
2291 | |||
2292 | public static Message NoSourceFiles() | ||
2293 | { | ||
2294 | return Message(null, Ids.NoSourceFiles, "No source files specified."); | ||
2295 | } | ||
2296 | |||
2297 | public static Message WixiplSourceFileIsExclusive() | ||
2298 | { | ||
2299 | return Message(null, Ids.WixiplSourceFileIsExclusive, "When an intermediate post link source file is specified, it must be the only source file provided."); | ||
2300 | } | ||
2301 | |||
2302 | public static Message IntermediatesMustBeCompiled(string invalidIntermediates) | ||
2303 | { | ||
2304 | return Message(null, Ids.IntermediatesMustBeCompiled, "Intermediates being linked must have been compiled. Intermediates with these ids were not compiled: {0}", invalidIntermediates); | ||
2305 | } | ||
2306 | |||
2307 | public static Message IntermediatesMustBeResolved(string invalidIntermediate) | ||
2308 | { | ||
2309 | return Message(null, Ids.IntermediatesMustBeResolved, "Intermediates being bound must have been resolved. This intermediate was not resolved: {0}", invalidIntermediate); | ||
2310 | } | ||
2311 | |||
2312 | public static Message UnknownSymbolType(string symbolName) | ||
2313 | { | ||
2314 | return Message(null, Ids.UnknownSymbolType, "Could not deserialize symbol of type type '{0}' because it is not a standard symbol type or one provided by a loaded extension.", symbolName); | ||
2315 | } | ||
2316 | |||
2317 | public static Message IllegalInnerText(SourceLineNumber sourceLineNumbers, string elementName, string innerText) | ||
2318 | { | ||
2319 | return Message(sourceLineNumbers, Ids.IllegalInnerText, "The {0} element contains illegal inner text: '{1}'.", elementName, innerText); | ||
2320 | } | ||
2321 | |||
2322 | private static Message Message(SourceLineNumber sourceLineNumber, Ids id, string format, params object[] args) | ||
2323 | { | ||
2324 | return new Message(sourceLineNumber, MessageLevel.Error, (int)id, format, args); | ||
2325 | } | ||
2326 | |||
2327 | private static Message Message(SourceLineNumber sourceLineNumber, Ids id, ResourceManager resourceManager, string resourceName, params object[] args) | ||
2328 | { | ||
2329 | return new Message(sourceLineNumber, MessageLevel.Error, (int)id, resourceManager, resourceName, args); | ||
2330 | } | ||
2331 | |||
2332 | public enum Ids | ||
2333 | { | ||
2334 | UnexpectedException = 1, | ||
2335 | UnexpectedFileFormat = 2, | ||
2336 | CorruptFileFormat = 3, | ||
2337 | UnexpectedAttribute = 4, | ||
2338 | UnexpectedElement = 5, | ||
2339 | IllegalEmptyAttributeValue = 6, | ||
2340 | InsufficientVersion = 7, | ||
2341 | IllegalIntegerValue = 8, | ||
2342 | IllegalGuidValue = 9, | ||
2343 | ExpectedAttribute = 10, | ||
2344 | SecurePropertyNotUppercase = 11, | ||
2345 | SearchPropertyNotUppercase = 12, | ||
2346 | StreamNameTooLong = 13, | ||
2347 | IllegalIdentifier = 14, | ||
2348 | IllegalYesNoValue = 15, | ||
2349 | CabCreationFailed = 16, | ||
2350 | CabExtractionFailed = 17, | ||
2351 | AppIdIncompatibleAdvertiseState = 18, | ||
2352 | IllegalAttributeWhenAdvertised = 19, | ||
2353 | ConditionExpected = 20, | ||
2354 | IllegalAttributeValue = 21, | ||
2355 | CustomActionMultipleSources = 22, | ||
2356 | CustomActionMultipleTargets = 23, | ||
2357 | CustomActionIllegalInnerText = 24, | ||
2358 | IllegalShortFilename = 26, | ||
2359 | IllegalLongFilename = 27, | ||
2360 | TableNameTooLong = 28, | ||
2361 | FeatureConfigurableDirectoryNotUppercase = 29, | ||
2362 | FeatureCannotFavorAndDisallowAdvertise = 30, | ||
2363 | FeatureCannotFollowParentAndFavorLocalOrSource = 31, | ||
2364 | MediaEmbeddedCabinetNameTooLong = 32, | ||
2365 | RegistrySubElementCannotBeRemoved = 33, | ||
2366 | RegistryMultipleValuesWithoutMultiString = 34, | ||
2367 | IllegalAttributeWithOtherAttribute = 35, | ||
2368 | IllegalAttributeWithOtherAttributes = 36, | ||
2369 | IllegalAttributeWithoutOtherAttributes = 37, | ||
2370 | IllegalAttributeValueWithoutOtherAttribute = 38, | ||
2371 | IntegralValueSentinelCollision = 39, | ||
2372 | ExampleGuid = 40, | ||
2373 | TooManyChildren = 41, | ||
2374 | ComponentMultipleKeyPaths = 42, | ||
2375 | CabClosureFailed = 43, | ||
2376 | ExpectedAttributes = 44, | ||
2377 | ExpectedAttributesWithOtherAttribute = 45, | ||
2378 | ExpectedAttributesWithoutOtherAttribute = 46, | ||
2379 | MissingTypeLibFile = 47, | ||
2380 | InvalidDocumentElement = 48, | ||
2381 | ExpectedAttributeInElementOrParent = 49, | ||
2382 | UnauthorizedAccess = 50, | ||
2383 | IllegalModuleExclusionLanguageAttributes = 51, | ||
2384 | NoFirstControlSpecified = 52, | ||
2385 | NoDataForColumn = 53, | ||
2386 | ValueAndMaskMustBeSameLength = 54, | ||
2387 | TooManySearchElements = 55, | ||
2388 | IllegalAttributeExceptOnElement = 56, | ||
2389 | SearchElementRequired = 57, | ||
2390 | MultipleIdentifiersFound = 58, | ||
2391 | AdvertiseStateMustMatch = 59, | ||
2392 | DuplicateContextValue = 60, | ||
2393 | RelativePathForRegistryElement = 61, | ||
2394 | IllegalAttributeWhenNested = 62, | ||
2395 | ExpectedElement = 63, | ||
2396 | RegistryRootInvalid = 64, | ||
2397 | IllegalYesNoDefaultValue = 65, | ||
2398 | IllegalAttributeInMergeModule = 66, | ||
2399 | GenericReadNotAllowed = 67, | ||
2400 | IllegalAttributeWithInnerText = 68, | ||
2401 | SearchElementRequiredWithAttribute = 69, | ||
2402 | CannotAuthorSpecialProperties = 70, | ||
2403 | NeedSequenceBeforeOrAfter = 72, | ||
2404 | ValueNotSupported = 73, | ||
2405 | TabbableControlNotAllowedInBillboard = 74, | ||
2406 | CheckBoxValueOnlyValidWithCheckBox = 75, | ||
2407 | CabFileDoesNotExist = 76, | ||
2408 | RadioButtonTypeInconsistent = 77, | ||
2409 | RadioButtonBitmapAndIconDisallowed = 78, | ||
2410 | IllegalSuppressWarningId = 79, | ||
2411 | PreprocessorIllegalForeachVariable = 80, | ||
2412 | PreprocessorMissingParameterPrefix = 81, | ||
2413 | PreprocessorExtensionForParameterMissing = 82, | ||
2414 | CannotFindFile = 83, | ||
2415 | BinderFileManagerMissingFile = 84, | ||
2416 | InvalidFileName = 85, | ||
2417 | ReferenceLoopDetected = 86, | ||
2418 | GuidContainsLowercaseLetters = 87, | ||
2419 | InvalidDateTimeFormat = 88, | ||
2420 | MultipleEntrySections = 89, | ||
2421 | MultipleEntrySections2 = 90, | ||
2422 | DuplicateSymbol = 91, | ||
2423 | DuplicateSymbol2 = 92, | ||
2424 | MissingEntrySection = 93, | ||
2425 | UnresolvedReference = 94, | ||
2426 | MultiplePrimaryReferences = 95, | ||
2427 | ComponentReferencedTwice = 96, | ||
2428 | DuplicateModuleFileIdentifier = 97, | ||
2429 | DuplicateModuleCaseInsensitiveFileIdentifier = 98, | ||
2430 | ImplicitComponentKeyPath = 99, | ||
2431 | DuplicateLocalizationIdentifier = 100, | ||
2432 | LocalizationVariableUnknown = 102, | ||
2433 | FileNotFound = 103, | ||
2434 | InvalidXml = 104, | ||
2435 | ProgIdNestedTooDeep = 105, | ||
2436 | CanNotHaveTwoParents = 106, | ||
2437 | SchemaValidationFailed = 107, | ||
2438 | IllegalVersionValue = 108, | ||
2439 | CustomTableNameTooLong = 109, | ||
2440 | CustomTableIllegalColumnWidth = 110, | ||
2441 | CustomTableMissingPrimaryKey = 111, | ||
2442 | TypeSpecificationForExtensionRequired = 113, | ||
2443 | FilePathRequired = 114, | ||
2444 | DirectoryPathRequired = 115, | ||
2445 | FileOrDirectoryPathRequired = 116, | ||
2446 | PathCannotContainQuote = 117, | ||
2447 | AdditionalArgumentUnexpected = 118, | ||
2448 | RegistryNameValueIncorrect = 119, | ||
2449 | FamilyNameTooLong = 120, | ||
2450 | IllegalFamilyName = 121, | ||
2451 | IllegalLongValue = 122, | ||
2452 | IntegralValueOutOfRange = 123, | ||
2453 | DuplicateExtensionXmlSchemaNamespace = 125, | ||
2454 | DuplicateExtensionTable = 126, | ||
2455 | DuplicateExtensionPreprocessorType = 127, | ||
2456 | FileInUse = 128, | ||
2457 | CannotOpenMergeModule = 129, | ||
2458 | DuplicatePrimaryKey = 130, | ||
2459 | FileIdentifierNotFound = 131, | ||
2460 | InvalidAssemblyFile = 132, | ||
2461 | ExpectedEndElement = 133, | ||
2462 | IllegalCodepage = 134, | ||
2463 | ExpectedMediaCabinet = 135, | ||
2464 | InvalidIdt = 136, | ||
2465 | InvalidSequenceTable = 137, | ||
2466 | ExpectedDirectory = 138, | ||
2467 | ComponentExpectedFeature = 139, | ||
2468 | RecursiveAction = 140, | ||
2469 | VersionMismatch = 141, | ||
2470 | UnexpectedContentNode = 142, | ||
2471 | UnexpectedColumnCount = 143, | ||
2472 | InvalidExtension = 144, | ||
2473 | InvalidSubExpression = 145, | ||
2474 | UnmatchedPreprocessorInstruction = 146, | ||
2475 | NonterminatedPreprocessorInstruction = 147, | ||
2476 | ExpectedExpressionAfterNot = 148, | ||
2477 | InvalidPreprocessorVariable = 149, | ||
2478 | UndefinedPreprocessorVariable = 150, | ||
2479 | IllegalDefineStatement = 151, | ||
2480 | VariableDeclarationCollision = 152, | ||
2481 | CannotReundefineVariable = 153, | ||
2482 | IllegalForeach = 154, | ||
2483 | IllegalParentAttributeWhenNested = 155, | ||
2484 | ExpectedEndforeach = 156, | ||
2485 | UnmatchedQuotesInExpression = 158, | ||
2486 | UnmatchedParenthesisInExpression = 159, | ||
2487 | ExpectedVariable = 160, | ||
2488 | UnexpectedLiteral = 161, | ||
2489 | IllegalIntegerInExpression = 162, | ||
2490 | UnexpectedPreprocessorOperator = 163, | ||
2491 | UnexpectedEmptySubexpression = 164, | ||
2492 | UnexpectedCustomTableColumn = 165, | ||
2493 | UnknownCustomTableColumnType = 166, | ||
2494 | IllegalFileCompressionAttributes = 167, | ||
2495 | OverridableActionCollision = 168, | ||
2496 | OverridableActionCollision2 = 169, | ||
2497 | ActionCollision = 170, | ||
2498 | ActionCollision2 = 171, | ||
2499 | SuppressNonoverridableAction = 172, | ||
2500 | SuppressNonoverridableAction2 = 173, | ||
2501 | CustomActionSequencedInModule = 174, | ||
2502 | StandardActionRelativelyScheduledInModule = 175, | ||
2503 | ActionCircularDependency = 176, | ||
2504 | ActionScheduledRelativeToTerminationAction = 177, | ||
2505 | ActionScheduledRelativeToTerminationAction2 = 178, | ||
2506 | NoUniqueActionSequenceNumber = 179, | ||
2507 | NoUniqueActionSequenceNumber2 = 180, | ||
2508 | ActionScheduledRelativeToItself = 181, | ||
2509 | MissingTableDefinition = 182, | ||
2510 | ExpectedRowInPatchCreationPackage = 183, | ||
2511 | UnexpectedTableInMergeModule = 184, | ||
2512 | UnexpectedTableInPatchCreationPackage = 185, | ||
2513 | MergeExcludedModule = 186, | ||
2514 | MergeFeatureRequired = 187, | ||
2515 | MergeLanguageFailed = 188, | ||
2516 | MergeLanguageUnsupported = 189, | ||
2517 | TableDecompilationUnimplemented = 190, | ||
2518 | CannotDefaultMismatchedAdvertiseStates = 191, | ||
2519 | VersionIndependentProgIdsCannotHaveIcons = 192, | ||
2520 | IllegalAttributeValueWithOtherAttribute = 193, | ||
2521 | InvalidMergeLanguage = 194, | ||
2522 | WixVariableCollision = 195, | ||
2523 | ExpectedWixVariableValue = 196, | ||
2524 | WixVariableUnknown = 197, | ||
2525 | IllegalWixVariablePrefix = 198, | ||
2526 | InvalidWixXmlNamespace = 199, | ||
2527 | UnhandledExtensionElement = 200, | ||
2528 | UnhandledExtensionAttribute = 201, | ||
2529 | UnsupportedExtensionAttribute = 202, | ||
2530 | UnsupportedExtensionElement = 203, | ||
2531 | ValidationError = 204, | ||
2532 | IllegalRootDirectory = 205, | ||
2533 | IllegalTargetDirDefaultDir = 206, | ||
2534 | TooManyElements = 207, | ||
2535 | ExpectedBinaryCategory = 208, | ||
2536 | RootFeatureCannotFollowParent = 209, | ||
2537 | FeatureNameTooLong = 210, | ||
2538 | SignedEmbeddedCabinet = 211, | ||
2539 | ExpectedSignedCabinetName = 212, | ||
2540 | IllegalInlineLocVariable = 213, | ||
2541 | MergeModuleExpectedFeature = 215, | ||
2542 | Win32Exception = 216, | ||
2543 | UnexpectedExternalUIMessage = 217, | ||
2544 | IllegalCabbingThreadCount = 218, | ||
2545 | IllegalEnvironmentVariable = 219, | ||
2546 | InvalidKeyColumn = 220, | ||
2547 | CollidingModularizationTypes = 221, | ||
2548 | CubeFileNotFound = 222, | ||
2549 | OpenDatabaseFailed = 223, | ||
2550 | OutputTypeMismatch = 224, | ||
2551 | RealTableMissingPrimaryKeyColumn = 225, | ||
2552 | IllegalColumnName = 226, | ||
2553 | NoDifferencesInTransform = 227, | ||
2554 | OutputCodepageMismatch = 228, | ||
2555 | OutputCodepageMismatch2 = 229, | ||
2556 | IllegalComponentWithAutoGeneratedGuid = 230, | ||
2557 | IllegalPathForGeneratedComponentGuid = 231, | ||
2558 | IllegalTerminalServerCustomActionAttributes = 232, | ||
2559 | IllegalPropertyCustomActionAttributes = 233, | ||
2560 | InvalidPreprocessorFunction = 234, | ||
2561 | UndefinedPreprocessorFunction = 235, | ||
2562 | PreprocessorExtensionEvaluateFunctionFailed = 236, | ||
2563 | PreprocessorExtensionGetVariableValueFailed = 237, | ||
2564 | InvalidManifestContent = 238, | ||
2565 | InvalidWixTransform = 239, | ||
2566 | UnexpectedFileExtension = 240, | ||
2567 | UnexpectedTableInPatch = 241, | ||
2568 | InvalidProductVersion = 242, | ||
2569 | InvalidKeypathChange = 243, | ||
2570 | MissingValidatorExtension = 244, | ||
2571 | InvalidValidatorMessageType = 245, | ||
2572 | PatchWithoutTransforms = 246, | ||
2573 | SingleExtensionSupported = 247, | ||
2574 | DuplicateTransform = 248, | ||
2575 | BaselineRequired = 249, | ||
2576 | PreprocessorError = 250, | ||
2577 | ExpectedArgument = 251, | ||
2578 | PatchWithoutValidTransforms = 252, | ||
2579 | ExpectedDecompiler = 253, | ||
2580 | ExpectedTableInMergeModule = 254, | ||
2581 | UnexpectedElementWithAttributeValue = 255, | ||
2582 | ExpectedPatchIdInWixMsp = 256, | ||
2583 | ExpectedMediaRowsInWixMsp = 257, | ||
2584 | WixFileNotFound = 258, | ||
2585 | ExpectedClientPatchIdInWixMsp = 259, | ||
2586 | NewRowAddedInTable = 260, | ||
2587 | PatchNotRemovable = 261, | ||
2588 | PathTooLong = 262, | ||
2589 | FileTooLarge = 263, | ||
2590 | InvalidPlatformParameter = 264, | ||
2591 | InvalidPlatformValue = 265, | ||
2592 | IllegalValidationArguments = 266, | ||
2593 | OrphanedComponent = 267, | ||
2594 | IllegalCommandlineArgumentCombination = 268, | ||
2595 | ProductCodeInvalidForTransform = 269, | ||
2596 | InsertInvalidSequenceActionOrder = 270, | ||
2597 | InsertSequenceNoSpace = 271, | ||
2598 | MissingManifestForWin32Assembly = 272, | ||
2599 | UnableToOpenModule = 273, | ||
2600 | ExpectedAttributeWhenElementNotUnderElement = 274, | ||
2601 | IllegalIdentifierLooksLikeFormatted = 275, | ||
2602 | IllegalCodepageAttribute = 276, | ||
2603 | IllegalCompressionLevel = 277, | ||
2604 | TransformSchemaMismatch = 278, | ||
2605 | DatabaseSchemaMismatch = 279, | ||
2606 | ExpectedDirectoryGotFile = 280, | ||
2607 | ExpectedFileGotDirectory = 281, | ||
2608 | GacAssemblyNoStrongName = 282, | ||
2609 | FileWriteError = 283, | ||
2610 | InvalidCommandLineFileName = 284, | ||
2611 | ExpectedParentWithAttribute = 285, | ||
2612 | IllegalWarningIdAsError = 286, | ||
2613 | ExpectedAttributeOrElement = 287, | ||
2614 | DuplicateVariableDefinition = 288, | ||
2615 | InvalidVariableDefinition = 289, | ||
2616 | DuplicateCabinetName = 290, | ||
2617 | DuplicateCabinetName2 = 291, | ||
2618 | InvalidAddedFileRowWithoutSequence = 292, | ||
2619 | DuplicateFileId = 293, | ||
2620 | FullTempDirectory = 294, | ||
2621 | CreateCabAddFileFailed = 296, | ||
2622 | CreateCabInsufficientDiskSpace = 297, | ||
2623 | UnresolvedBindReference = 298, | ||
2624 | GACAssemblyIdentityWarning = 299, | ||
2625 | IllegalCharactersInPath = 300, | ||
2626 | ValidationFailedToOpenDatabase = 301, | ||
2627 | MustSpecifyOutputWithMoreThanOneInput = 302, | ||
2628 | IllegalSearchIdForParentDepth = 303, | ||
2629 | IdentifierTooLongError = 304, | ||
2630 | InvalidRemoveComponent = 305, | ||
2631 | FinishCabFailed = 306, | ||
2632 | InvalidExtensionType = 307, | ||
2633 | ValidationFailedDueToMultilanguageMergeModule = 309, | ||
2634 | ValidationFailedDueToInvalidPackage = 310, | ||
2635 | InvalidStringForCodepage = 311, | ||
2636 | InvalidEmbeddedUIFileName = 312, | ||
2637 | UniqueFileSearchIdRequired = 313, | ||
2638 | IllegalAttributeValueWhenNested = 314, | ||
2639 | AdminImageRequired = 315, | ||
2640 | SamePatchBaselineId = 316, | ||
2641 | SameFileIdDifferentSource = 317, | ||
2642 | HarvestSourceNotSpecified = 318, | ||
2643 | OutputTargetNotSpecified = 319, | ||
2644 | DuplicateCommandLineOptionInExtension = 320, | ||
2645 | HarvestTypeNotFound = 321, | ||
2646 | BothUpgradeCodesRequired = 322, | ||
2647 | IllegalBinderClassName = 323, | ||
2648 | SpecifiedBinderNotFound = 324, | ||
2649 | CannotLoadBinderFileManager = 325, | ||
2650 | CannotLoadLinkerExtension = 326, | ||
2651 | UnableToGetAuthenticodeCertOfFile = 327, | ||
2652 | UnableToGetAuthenticodeCertOfFileDownlevelOS = 328, | ||
2653 | ReadOnlyOutputFile = 329, | ||
2654 | CannotDefaultComponentId = 330, | ||
2655 | ParentElementAttributeRequired = 331, | ||
2656 | PreprocessorExtensionPragmaFailed = 333, | ||
2657 | InvalidPreprocessorPragma = 334, | ||
2658 | SmokeUnknownFileExtension = 335, | ||
2659 | SmokeUnsupportedFileExtension = 336, | ||
2660 | SmokeMalformedPath = 337, | ||
2661 | InvalidStubExe = 338, | ||
2662 | StubMissingWixburnSection = 339, | ||
2663 | StubWixburnSectionTooSmall = 340, | ||
2664 | MissingBundleInformation = 341, | ||
2665 | UnexpectedGroupChild = 342, | ||
2666 | OrderingReferenceLoopDetected = 343, | ||
2667 | IdentifierNotFound = 344, | ||
2668 | MergePlatformMismatch = 345, | ||
2669 | IllegalRelativeLongFilename = 346, | ||
2670 | IllegalAttributeValueWithLegalList = 347, | ||
2671 | IllegalAttributeValueWithIllegalList = 348, | ||
2672 | InvalidSummaryInfoCodePage = 349, | ||
2673 | ValidationFailedDueToLowMsiEngine = 350, | ||
2674 | DuplicateSourcesForOutput = 351, | ||
2675 | UnableToReadPackageInformation = 352, | ||
2676 | MultipleFilesMatchedWithOutputSpecification = 353, | ||
2677 | InvalidBundle = 354, | ||
2678 | BundleTooNew = 355, | ||
2679 | WrongFileExtensionForNumberOfInputs = 356, | ||
2680 | MediaTableCollision = 357, | ||
2681 | InvalidCabinetTemplate = 358, | ||
2682 | MaximumUncompressedMediaSizeTooLarge = 359, | ||
2683 | ReservedNamespaceViolation = 362, | ||
2684 | PerUserButAllUsersEquals1 = 363, | ||
2685 | UnsupportedAllUsersValue = 364, | ||
2686 | DisallowedMsiProperty = 365, | ||
2687 | MissingOrInvalidModuleInstallerVersion = 366, | ||
2688 | IllegalGeneratedGuidComponentUnversionedKeypath = 367, | ||
2689 | IllegalGeneratedGuidComponentVersionedNonkeypath = 368, | ||
2690 | DuplicateComponentGuids = 369, | ||
2691 | DuplicateProviderDependencyKey = 370, | ||
2692 | MissingDependencyVersion = 371, | ||
2693 | UnexpectedElementWithAttribute = 372, | ||
2694 | ExpectedAttributeWithElement = 373, | ||
2695 | DuplicatedUiLocalization = 374, | ||
2696 | MaximumCabinetSizeForLargeFileSplittingTooLarge = 375, | ||
2697 | SplitCabinetCopyRegistrationFailed = 376, | ||
2698 | SplitCabinetNameCollision = 377, | ||
2699 | SplitCabinetInsertionFailed = 378, | ||
2700 | InvalidPreprocessorFunctionAutoVersion = 379, | ||
2701 | InvalidModuleOrBundleVersion = 380, | ||
2702 | UnsupportedPlatformForElement = 381, | ||
2703 | MissingMedia = 382, | ||
2704 | IllegalYesNoAlwaysValue = 384, | ||
2705 | TooDeeplyIncluded = 385, | ||
2706 | TooManyColumnsInRealTable = 386, | ||
2707 | InlineDirectorySyntaxRequiresPath = 387, | ||
2708 | InsecureBundleFilename = 388, | ||
2709 | PayloadMustBeRelativeToCache = 389, | ||
2710 | MsiTransactionX86BeforeX64 = 390, | ||
2711 | NoSourceFiles = 391, | ||
2712 | WixiplSourceFileIsExclusive = 392, | ||
2713 | UnableToConvertFieldToNumber = 393, | ||
2714 | CouldNotDetermineProductCodeFromTransformSummaryInfo = 394, | ||
2715 | IntermediatesMustBeCompiled = 395, | ||
2716 | IntermediatesMustBeResolved = 396, | ||
2717 | MissingBundleSearch = 397, | ||
2718 | CircularSearchReference = 398, | ||
2719 | UnknownSymbolType = 399, | ||
2720 | IllegalInnerText = 400, | ||
2721 | ExpectedAttributeWithValueWithOtherAttribute = 401, | ||
2722 | PackagePayloadUnsupported = 402, | ||
2723 | PackagePayloadUnsupported2 = 403, | ||
2724 | MultiplePackagePayloads = 404, | ||
2725 | MultiplePackagePayloads2 = 405, | ||
2726 | MultiplePackagePayloads3 = 406, | ||
2727 | MissingPackagePayload = 407, | ||
2728 | ExpectedAttributeWithoutOtherAttributes = 408, | ||
2729 | } | ||
2730 | } | ||
2731 | } | ||
diff --git a/src/api/wix/WixToolset.Data/ISymbolDefinitionCreator.cs b/src/api/wix/WixToolset.Data/ISymbolDefinitionCreator.cs new file mode 100644 index 00000000..93b10ce8 --- /dev/null +++ b/src/api/wix/WixToolset.Data/ISymbolDefinitionCreator.cs | |||
@@ -0,0 +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. | ||
2 | |||
3 | namespace WixToolset.Data | ||
4 | { | ||
5 | public interface ISymbolDefinitionCreator | ||
6 | { | ||
7 | void AddCustomSymbolDefinition(IntermediateSymbolDefinition definition); | ||
8 | |||
9 | bool TryGetSymbolDefinitionByName(string name, out IntermediateSymbolDefinition symbolDefinition); | ||
10 | } | ||
11 | } | ||
diff --git a/src/api/wix/WixToolset.Data/Identifier.cs b/src/api/wix/WixToolset.Data/Identifier.cs new file mode 100644 index 00000000..8333198f --- /dev/null +++ b/src/api/wix/WixToolset.Data/Identifier.cs | |||
@@ -0,0 +1,77 @@ | |||
1 | // Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. | ||
2 | |||
3 | namespace WixToolset.Data | ||
4 | { | ||
5 | using System; | ||
6 | using System.Diagnostics; | ||
7 | using SimpleJson; | ||
8 | |||
9 | /// <summary> | ||
10 | /// Class to define the identifier and access for a symbol. | ||
11 | /// </summary> | ||
12 | [DebuggerDisplay("{Access} {Id,nq}")] | ||
13 | public class Identifier | ||
14 | { | ||
15 | public static Identifier Invalid = new Identifier(AccessModifier.Section, (string)null); | ||
16 | |||
17 | [Obsolete] | ||
18 | public Identifier(string id, AccessModifier access) | ||
19 | { | ||
20 | this.Id = id; | ||
21 | this.Access = access; | ||
22 | } | ||
23 | |||
24 | public Identifier(AccessModifier access, string id) | ||
25 | { | ||
26 | this.Access = access; | ||
27 | this.Id = id; | ||
28 | } | ||
29 | |||
30 | public Identifier(AccessModifier access, params string[] ids) | ||
31 | { | ||
32 | this.Access = access; | ||
33 | this.Id = String.Join("/", ids); | ||
34 | } | ||
35 | |||
36 | public Identifier(AccessModifier access, params object[] ids) | ||
37 | { | ||
38 | this.Access = access; | ||
39 | this.Id = String.Join("/", ids); | ||
40 | } | ||
41 | |||
42 | public Identifier(AccessModifier access, int id) | ||
43 | { | ||
44 | this.Access = access; | ||
45 | this.Id = id.ToString(); | ||
46 | } | ||
47 | |||
48 | /// <summary> | ||
49 | /// Access modifier for a symbol. | ||
50 | /// </summary> | ||
51 | public AccessModifier Access { get; } | ||
52 | |||
53 | /// <summary> | ||
54 | /// Identifier for the symbol. | ||
55 | /// </summary> | ||
56 | public string Id { get; } | ||
57 | |||
58 | internal static Identifier Deserialize(JsonObject jsonObject) | ||
59 | { | ||
60 | var id = jsonObject.GetValueOrDefault<string>("id"); | ||
61 | var accessValue = jsonObject.GetValueOrDefault("access", "global"); | ||
62 | |||
63 | return new Identifier(accessValue.AsAccessModifier(), id); | ||
64 | } | ||
65 | |||
66 | internal JsonObject Serialize() | ||
67 | { | ||
68 | var jsonObject = new JsonObject | ||
69 | { | ||
70 | { "id", this.Id }, | ||
71 | { "access", this.Access.AsString() } | ||
72 | }; | ||
73 | |||
74 | return jsonObject; | ||
75 | } | ||
76 | } | ||
77 | } | ||
diff --git a/src/api/wix/WixToolset.Data/Intermediate.cs b/src/api/wix/WixToolset.Data/Intermediate.cs new file mode 100644 index 00000000..64f9810d --- /dev/null +++ b/src/api/wix/WixToolset.Data/Intermediate.cs | |||
@@ -0,0 +1,484 @@ | |||
1 | // Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. | ||
2 | |||
3 | namespace WixToolset.Data | ||
4 | { | ||
5 | using System; | ||
6 | using System.Collections.Generic; | ||
7 | using System.IO; | ||
8 | using System.Linq; | ||
9 | using System.Reflection; | ||
10 | using SimpleJson; | ||
11 | |||
12 | /// <summary> | ||
13 | /// Container class for an intermediate object. | ||
14 | /// </summary> | ||
15 | public sealed class Intermediate | ||
16 | { | ||
17 | private static readonly Version CurrentVersion = new Version("4.0.0.0"); | ||
18 | private const string WixOutputStreamName = "wix-ir.json"; | ||
19 | |||
20 | private readonly Dictionary<string, Localization> localizationsByCulture; | ||
21 | private readonly List<IntermediateSection> sections; | ||
22 | |||
23 | /// <summary> | ||
24 | /// Instantiate a new Intermediate. | ||
25 | /// </summary> | ||
26 | public Intermediate() | ||
27 | { | ||
28 | this.Id = Convert.ToBase64String(Guid.NewGuid().ToByteArray()).TrimEnd('=').Replace('+', '.').Replace('/', '_'); | ||
29 | this.localizationsByCulture = new Dictionary<string, Localization>(StringComparer.OrdinalIgnoreCase); | ||
30 | this.sections = new List<IntermediateSection>(); | ||
31 | } | ||
32 | |||
33 | public Intermediate(string id, IEnumerable<IntermediateSection> sections, IDictionary<string, Localization> localizationsByCulture) : this(id, level: null, sections, localizationsByCulture) | ||
34 | { | ||
35 | } | ||
36 | |||
37 | public Intermediate(string id, string level, IEnumerable<IntermediateSection> sections, IDictionary<string, Localization> localizationsByCulture) | ||
38 | { | ||
39 | this.Id = id; | ||
40 | this.Level = level; | ||
41 | this.localizationsByCulture = (localizationsByCulture != null) ? new Dictionary<string, Localization>(localizationsByCulture, StringComparer.OrdinalIgnoreCase) : new Dictionary<string, Localization>(StringComparer.OrdinalIgnoreCase); | ||
42 | this.sections = (sections != null) ? new List<IntermediateSection>(sections) : new List<IntermediateSection>(); | ||
43 | } | ||
44 | |||
45 | /// <summary> | ||
46 | /// Get the id for the intermediate. | ||
47 | /// </summary> | ||
48 | public string Id { get; } | ||
49 | |||
50 | /// <summary> | ||
51 | /// Get the level of the intermediate. | ||
52 | /// </summary> | ||
53 | public string Level { get; private set; } | ||
54 | |||
55 | /// <summary> | ||
56 | /// Get the localizations contained in this intermediate. | ||
57 | /// </summary> | ||
58 | public IReadOnlyCollection<Localization> Localizations => this.localizationsByCulture.Values; | ||
59 | |||
60 | /// <summary> | ||
61 | /// Get the sections contained in this intermediate. | ||
62 | /// </summary> | ||
63 | public IReadOnlyCollection<IntermediateSection> Sections => this.sections; | ||
64 | |||
65 | /// <summary> | ||
66 | /// Loads an intermediate from a path on disk. | ||
67 | /// </summary> | ||
68 | /// <param name="path">Path to intermediate file saved on disk.</param> | ||
69 | /// <param name="suppressVersionCheck">Suppress checking for wix.dll version mismatches.</param> | ||
70 | /// <returns>Returns the loaded intermediate.</returns> | ||
71 | public static Intermediate Load(string path, bool suppressVersionCheck = false) | ||
72 | { | ||
73 | var creator = new SimpleSymbolDefinitionCreator(); | ||
74 | return Intermediate.Load(path, creator, suppressVersionCheck); | ||
75 | } | ||
76 | |||
77 | /// <summary> | ||
78 | /// Loads an intermediate from a stream. | ||
79 | /// </summary> | ||
80 | /// <param name="assembly">Assembly with intermediate embedded in resource stream.</param> | ||
81 | /// <param name="resourceName">Name of resource stream.</param> | ||
82 | /// <param name="suppressVersionCheck">Suppress checking for wix.dll version mismatches.</param> | ||
83 | /// <returns>Returns the loaded intermediate.</returns> | ||
84 | public static Intermediate Load(Assembly assembly, string resourceName, bool suppressVersionCheck = false) | ||
85 | { | ||
86 | var creator = new SimpleSymbolDefinitionCreator(); | ||
87 | return Intermediate.Load(assembly, resourceName, creator, suppressVersionCheck); | ||
88 | } | ||
89 | |||
90 | /// <summary> | ||
91 | /// Loads an intermediate from a stream. | ||
92 | /// </summary> | ||
93 | /// <param name="assembly">Assembly with intermediate embedded in resource stream.</param> | ||
94 | /// <param name="resourceName">Name of resource stream.</param> | ||
95 | /// <param name="creator">ISymbolDefinitionCreator to use when reconstituting the intermediate.</param> | ||
96 | /// <param name="suppressVersionCheck">Suppress checking for wix.dll version mismatches.</param> | ||
97 | /// <returns>Returns the loaded intermediate.</returns> | ||
98 | public static Intermediate Load(Assembly assembly, string resourceName, ISymbolDefinitionCreator creator, bool suppressVersionCheck = false) | ||
99 | { | ||
100 | using (var wixout = WixOutput.Read(assembly, resourceName)) | ||
101 | { | ||
102 | return Intermediate.LoadIntermediate(wixout, creator, suppressVersionCheck); | ||
103 | } | ||
104 | } | ||
105 | |||
106 | /// <summary> | ||
107 | /// Loads an intermediate from a path on disk. | ||
108 | /// </summary> | ||
109 | /// <param name="path">Path to intermediate file saved on disk.</param> | ||
110 | /// <param name="creator">ISymbolDefinitionCreator to use when reconstituting the intermediate.</param> | ||
111 | /// <param name="suppressVersionCheck">Suppress checking for wix.dll version mismatches.</param> | ||
112 | /// <returns>Returns the loaded intermediate.</returns> | ||
113 | public static Intermediate Load(string path, ISymbolDefinitionCreator creator, bool suppressVersionCheck = false) | ||
114 | { | ||
115 | using (var wixout = WixOutput.Read(path)) | ||
116 | { | ||
117 | return Intermediate.LoadIntermediate(wixout, creator, suppressVersionCheck); | ||
118 | } | ||
119 | } | ||
120 | |||
121 | /// <summary> | ||
122 | /// Loads an intermediate from a WixOutput object. | ||
123 | /// </summary> | ||
124 | /// <param name="wixOutput">WixOutput object.</param> | ||
125 | /// <param name="suppressVersionCheck">Suppress checking for wix.dll version mismatches.</param> | ||
126 | /// <returns>Returns the loaded intermediate.</returns> | ||
127 | public static Intermediate Load(WixOutput wixOutput, bool suppressVersionCheck = false) | ||
128 | { | ||
129 | var creator = new SimpleSymbolDefinitionCreator(); | ||
130 | return Intermediate.LoadIntermediate(wixOutput, creator, suppressVersionCheck); | ||
131 | } | ||
132 | |||
133 | /// <summary> | ||
134 | /// Loads an intermediate from a WixOutput object. | ||
135 | /// </summary> | ||
136 | /// <param name="wixOutput">WixOutput object.</param> | ||
137 | /// <param name="creator">ISymbolDefinitionCreator to use when reconstituting the intermediate.</param> | ||
138 | /// <param name="suppressVersionCheck">Suppress checking for wix.dll version mismatches.</param> | ||
139 | /// <returns>Returns the loaded intermediate.</returns> | ||
140 | public static Intermediate Load(WixOutput wixOutput, ISymbolDefinitionCreator creator, bool suppressVersionCheck = false) | ||
141 | { | ||
142 | return Intermediate.LoadIntermediate(wixOutput, creator, suppressVersionCheck); | ||
143 | } | ||
144 | |||
145 | /// <summary> | ||
146 | /// Loads several intermediates from paths on disk using the same definitions. | ||
147 | /// </summary> | ||
148 | /// <param name="intermediateFiles">Paths to intermediate files saved on disk.</param> | ||
149 | /// <returns>Returns the loaded intermediates</returns> | ||
150 | public static IReadOnlyList<Intermediate> Load(IEnumerable<string> intermediateFiles) | ||
151 | { | ||
152 | var creator = new SimpleSymbolDefinitionCreator(); | ||
153 | return Intermediate.Load(intermediateFiles, creator); | ||
154 | } | ||
155 | |||
156 | /// <summary> | ||
157 | /// Loads several intermediates from paths on disk using the same definitions. | ||
158 | /// </summary> | ||
159 | /// <param name="intermediateFiles">Paths to intermediate files saved on disk.</param> | ||
160 | /// <param name="creator">ISymbolDefinitionCreator to use when reconstituting the intermediates.</param> | ||
161 | /// <param name="suppressVersionCheck">Suppress checking for wix.dll version mismatches.</param> | ||
162 | /// <returns>Returns the loaded intermediates</returns> | ||
163 | public static IReadOnlyList<Intermediate> Load(IEnumerable<string> intermediateFiles, ISymbolDefinitionCreator creator, bool suppressVersionCheck = false) | ||
164 | { | ||
165 | var jsons = new Queue<JsonWithPath>(); | ||
166 | var intermediates = new List<Intermediate>(); | ||
167 | |||
168 | foreach (var path in intermediateFiles) | ||
169 | { | ||
170 | using (var wixout = WixOutput.Read(path)) | ||
171 | { | ||
172 | var data = wixout.GetData(WixOutputStreamName); | ||
173 | var json = Intermediate.LoadJson(data, wixout.Uri, suppressVersionCheck); | ||
174 | |||
175 | Intermediate.LoadDefinitions(json, creator); | ||
176 | |||
177 | jsons.Enqueue(new JsonWithPath { Json = json, Path = wixout.Uri }); | ||
178 | } | ||
179 | } | ||
180 | |||
181 | while (jsons.Count > 0) | ||
182 | { | ||
183 | var jsonWithPath = jsons.Dequeue(); | ||
184 | |||
185 | var intermediate = Intermediate.FinalizeLoad(jsonWithPath.Json, jsonWithPath.Path, creator); | ||
186 | |||
187 | intermediates.Add(intermediate); | ||
188 | } | ||
189 | |||
190 | return intermediates; | ||
191 | } | ||
192 | |||
193 | /// <summary> | ||
194 | /// Adds a section to the intermedaite. | ||
195 | /// </summary> | ||
196 | /// <param name="section">Section to add to the intermediate.</param> | ||
197 | /// <returns>Section added to the intermediate.</returns> | ||
198 | public IntermediateSection AddSection(IntermediateSection section) | ||
199 | { | ||
200 | this.sections.Add(section); | ||
201 | return section; | ||
202 | } | ||
203 | |||
204 | /// <summary> | ||
205 | /// Removes a section from the intermediate. | ||
206 | /// </summary> | ||
207 | /// <param name="section">Section to remove.</param> | ||
208 | /// <returns>True if the section was removed; otherwise false.</returns> | ||
209 | public bool RemoveSection(IntermediateSection section) | ||
210 | { | ||
211 | return this.sections.Remove(section); | ||
212 | } | ||
213 | |||
214 | /// <summary> | ||
215 | /// Updates the intermediate level to the specified level. | ||
216 | /// </summary> | ||
217 | /// <param name="level">Intermediate level.</param> | ||
218 | public void UpdateLevel(string level) | ||
219 | { | ||
220 | this.Level = String.IsNullOrEmpty(this.Level) ? level : String.Concat(this.Level, ";", level); | ||
221 | } | ||
222 | |||
223 | /// <summary> | ||
224 | /// Returns whether a specifed intermediate level has been set for this intermediate. | ||
225 | /// </summary> | ||
226 | /// <param name="level">Intermediate level.</param> | ||
227 | /// <returns>True if the specifed intermediate level has been set for this intermediate.</returns> | ||
228 | public bool HasLevel(string level) | ||
229 | { | ||
230 | return this.Level?.Contains(level) == true; | ||
231 | } | ||
232 | |||
233 | /// <summary> | ||
234 | /// Saves an intermediate to a path on disk. | ||
235 | /// </summary> | ||
236 | /// <param name="path">Path to save intermediate file to disk.</param> | ||
237 | public void Save(string path) | ||
238 | { | ||
239 | Directory.CreateDirectory(Path.GetDirectoryName(Path.GetFullPath(path))); | ||
240 | |||
241 | using (var wixout = WixOutput.Create(path)) | ||
242 | { | ||
243 | this.Save(wixout); | ||
244 | } | ||
245 | } | ||
246 | |||
247 | /// <summary> | ||
248 | /// Saves an intermediate to a WixOutput. | ||
249 | /// </summary> | ||
250 | /// <param name="wixout">Destination to save.</param> | ||
251 | public void Save(WixOutput wixout) | ||
252 | { | ||
253 | this.SaveEmbedFiles(wixout); | ||
254 | |||
255 | this.SaveIR(wixout); | ||
256 | } | ||
257 | |||
258 | /// <summary> | ||
259 | /// Loads an intermediate from a WixOutput. | ||
260 | /// </summary> | ||
261 | /// <param name="wixout">Source to load from.</param> | ||
262 | /// <param name="creator">ISymbolDefinitionCreator to use when reconstituting the intermediate.</param> | ||
263 | /// <param name="suppressVersionCheck">Suppress checking for wix.dll version mismatches.</param> | ||
264 | /// <returns>Returns the loaded intermediate.</returns> | ||
265 | private static Intermediate LoadIntermediate(WixOutput wixout, ISymbolDefinitionCreator creator, bool suppressVersionCheck = false) | ||
266 | { | ||
267 | var data = wixout.GetData(WixOutputStreamName); | ||
268 | var json = Intermediate.LoadJson(data, wixout.Uri, suppressVersionCheck); | ||
269 | |||
270 | Intermediate.LoadDefinitions(json, creator); | ||
271 | |||
272 | return Intermediate.FinalizeLoad(json, wixout.Uri, creator); | ||
273 | } | ||
274 | |||
275 | /// <summary> | ||
276 | /// Loads json form of intermediate. | ||
277 | /// </summary> | ||
278 | /// <param name="json">Source to load from.</param> | ||
279 | /// <param name="baseUri">Path name of intermediate file.</param> | ||
280 | /// <param name="suppressVersionCheck">Suppress checking for wix.dll version mismatches.</param> | ||
281 | /// <returns>Returns the loaded json.</returns> | ||
282 | private static JsonObject LoadJson(string json, Uri baseUri, bool suppressVersionCheck) | ||
283 | { | ||
284 | var jsonObject = SimpleJson.DeserializeObject(json) as JsonObject; | ||
285 | |||
286 | if (!suppressVersionCheck) | ||
287 | { | ||
288 | var versionJson = jsonObject.GetValueOrDefault<string>("version"); | ||
289 | |||
290 | if (!Version.TryParse(versionJson, out var version) || !Intermediate.CurrentVersion.Equals(version)) | ||
291 | { | ||
292 | throw new WixException(ErrorMessages.VersionMismatch(SourceLineNumber.CreateFromUri(baseUri.AbsoluteUri), "intermediate", versionJson, Intermediate.CurrentVersion.ToString())); | ||
293 | } | ||
294 | } | ||
295 | |||
296 | return jsonObject; | ||
297 | } | ||
298 | |||
299 | /// <summary> | ||
300 | /// Loads custom definitions in intermediate json into the creator. | ||
301 | /// </summary> | ||
302 | /// <param name="json">Json version of intermediate.</param> | ||
303 | /// <param name="creator">ISymbolDefinitionCreator to use when reconstituting the intermediate.</param> | ||
304 | private static void LoadDefinitions(JsonObject json, ISymbolDefinitionCreator creator) | ||
305 | { | ||
306 | var definitionsJson = json.GetValueOrDefault<JsonArray>("definitions"); | ||
307 | |||
308 | if (definitionsJson != null) | ||
309 | { | ||
310 | foreach (JsonObject definitionJson in definitionsJson) | ||
311 | { | ||
312 | var definition = IntermediateSymbolDefinition.Deserialize(definitionJson); | ||
313 | creator.AddCustomSymbolDefinition(definition); | ||
314 | } | ||
315 | } | ||
316 | } | ||
317 | |||
318 | /// <summary> | ||
319 | /// Loads the sections and localization for the intermediate. | ||
320 | /// </summary> | ||
321 | /// <param name="json">Json version of intermediate.</param> | ||
322 | /// <param name="baseUri">Path to the intermediate.</param> | ||
323 | /// <param name="creator">ISymbolDefinitionCreator to use when reconstituting the intermediate.</param> | ||
324 | /// <returns>The finalized intermediate.</returns> | ||
325 | private static Intermediate FinalizeLoad(JsonObject json, Uri baseUri, ISymbolDefinitionCreator creator) | ||
326 | { | ||
327 | var id = json.GetValueOrDefault<string>("id"); | ||
328 | var level = json.GetValueOrDefault<string>("level"); | ||
329 | |||
330 | var sections = new List<IntermediateSection>(); | ||
331 | |||
332 | var sectionsJson = json.GetValueOrDefault<JsonArray>("sections"); | ||
333 | foreach (JsonObject sectionJson in sectionsJson) | ||
334 | { | ||
335 | var section = IntermediateSection.Deserialize(creator, baseUri, sectionJson); | ||
336 | sections.Add(section); | ||
337 | } | ||
338 | |||
339 | var localizations = new Dictionary<string, Localization>(StringComparer.OrdinalIgnoreCase); | ||
340 | |||
341 | var localizationsJson = json.GetValueOrDefault<JsonArray>("localizations") ?? new JsonArray(); | ||
342 | foreach (JsonObject localizationJson in localizationsJson) | ||
343 | { | ||
344 | var localization = Localization.Deserialize(localizationJson); | ||
345 | localizations.Add(localization.Culture, localization); | ||
346 | } | ||
347 | |||
348 | return new Intermediate(id, level, sections, localizations); | ||
349 | } | ||
350 | |||
351 | private void SaveEmbedFiles(WixOutput wixout) | ||
352 | { | ||
353 | var embeddedFields = this.Sections.SelectMany(s => s.Symbols) | ||
354 | .SelectMany(t => t.Fields) | ||
355 | .Where(f => f?.Type == IntermediateFieldType.Path) | ||
356 | .Select(f => f.AsPath()) | ||
357 | .Where(f => f.Embed) | ||
358 | .ToList(); | ||
359 | |||
360 | var savedEmbedFields = new Dictionary<string, IntermediateFieldPathValue>(StringComparer.OrdinalIgnoreCase); | ||
361 | var uniqueEntryNames = new HashSet<string>(StringComparer.OrdinalIgnoreCase); | ||
362 | |||
363 | foreach (var embeddedField in embeddedFields) | ||
364 | { | ||
365 | var key = String.Concat(embeddedField.BaseUri?.AbsoluteUri, "?", embeddedField.Path); | ||
366 | |||
367 | if (savedEmbedFields.TryGetValue(key, out var existing)) | ||
368 | { | ||
369 | embeddedField.Path = existing.Path; | ||
370 | } | ||
371 | else | ||
372 | { | ||
373 | var entryName = CalculateUniqueEntryName(uniqueEntryNames, embeddedField.Path); | ||
374 | |||
375 | if (embeddedField.BaseUri == null) | ||
376 | { | ||
377 | wixout.ImportDataStream(entryName, embeddedField.Path); | ||
378 | } | ||
379 | else // open the container specified in baseUri and copy the correct stream out of it. | ||
380 | { | ||
381 | using (var otherWixout = WixOutput.Read(embeddedField.BaseUri)) | ||
382 | using (var stream = otherWixout.GetDataStream(embeddedField.Path)) | ||
383 | using (var target = wixout.CreateDataStream(entryName)) | ||
384 | { | ||
385 | stream.CopyTo(target); | ||
386 | } | ||
387 | } | ||
388 | |||
389 | embeddedField.Path = entryName; | ||
390 | |||
391 | savedEmbedFields.Add(key, embeddedField); | ||
392 | } | ||
393 | } | ||
394 | } | ||
395 | |||
396 | private void SaveIR(WixOutput wixout) | ||
397 | { | ||
398 | using (var writer = new StreamWriter(wixout.CreateDataStream(WixOutputStreamName))) | ||
399 | { | ||
400 | var jsonObject = new JsonObject | ||
401 | { | ||
402 | { "id", this.Id }, | ||
403 | { "level", this.Level }, | ||
404 | { "version", Intermediate.CurrentVersion.ToString() } | ||
405 | }; | ||
406 | |||
407 | var sectionsJson = new JsonArray(this.Sections.Count); | ||
408 | foreach (var section in this.Sections) | ||
409 | { | ||
410 | var sectionJson = section.Serialize(); | ||
411 | sectionsJson.Add(sectionJson); | ||
412 | } | ||
413 | |||
414 | jsonObject.Add("sections", sectionsJson); | ||
415 | |||
416 | var customDefinitions = this.GetCustomDefinitionsInSections(); | ||
417 | |||
418 | if (customDefinitions.Count > 0) | ||
419 | { | ||
420 | var customDefinitionsJson = new JsonArray(customDefinitions.Count); | ||
421 | |||
422 | foreach (var kvp in customDefinitions.OrderBy(d => d.Key)) | ||
423 | { | ||
424 | var customDefinitionJson = kvp.Value.Serialize(); | ||
425 | customDefinitionsJson.Add(customDefinitionJson); | ||
426 | } | ||
427 | |||
428 | jsonObject.Add("definitions", customDefinitionsJson); | ||
429 | } | ||
430 | |||
431 | if (this.Localizations.Any()) | ||
432 | { | ||
433 | var localizationsJson = new JsonArray(); | ||
434 | foreach (var localization in this.Localizations) | ||
435 | { | ||
436 | var localizationJson = localization.Serialize(); | ||
437 | localizationsJson.Add(localizationJson); | ||
438 | } | ||
439 | |||
440 | jsonObject.Add("localizations", localizationsJson); | ||
441 | } | ||
442 | |||
443 | var json = SimpleJson.SerializeObject(jsonObject); | ||
444 | writer.Write(json); | ||
445 | } | ||
446 | } | ||
447 | |||
448 | private static string CalculateUniqueEntryName(ISet<string> entryNames, string path) | ||
449 | { | ||
450 | var filename = Path.GetFileName(path); | ||
451 | var entryName = "wix-ir/" + filename; | ||
452 | var i = 0; | ||
453 | |||
454 | while (!entryNames.Add(entryName)) | ||
455 | { | ||
456 | entryName = $"wix-ir/{filename}-{++i}"; | ||
457 | } | ||
458 | |||
459 | return entryName; | ||
460 | } | ||
461 | |||
462 | private Dictionary<string, IntermediateSymbolDefinition> GetCustomDefinitionsInSections() | ||
463 | { | ||
464 | var customDefinitions = new Dictionary<string, IntermediateSymbolDefinition>(); | ||
465 | |||
466 | foreach (var symbol in this.Sections.SelectMany(s => s.Symbols).Where(t => t.Definition.Type == SymbolDefinitionType.MustBeFromAnExtension)) | ||
467 | { | ||
468 | if (!customDefinitions.ContainsKey(symbol.Definition.Name)) | ||
469 | { | ||
470 | customDefinitions.Add(symbol.Definition.Name, symbol.Definition); | ||
471 | } | ||
472 | } | ||
473 | |||
474 | return customDefinitions; | ||
475 | } | ||
476 | |||
477 | private struct JsonWithPath | ||
478 | { | ||
479 | public JsonObject Json { get; set; } | ||
480 | |||
481 | public Uri Path { get; set; } | ||
482 | } | ||
483 | } | ||
484 | } | ||
diff --git a/src/api/wix/WixToolset.Data/IntermediateField.cs b/src/api/wix/WixToolset.Data/IntermediateField.cs new file mode 100644 index 00000000..2310f447 --- /dev/null +++ b/src/api/wix/WixToolset.Data/IntermediateField.cs | |||
@@ -0,0 +1,56 @@ | |||
1 | // Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. | ||
2 | |||
3 | namespace WixToolset.Data | ||
4 | { | ||
5 | using System; | ||
6 | using System.Diagnostics; | ||
7 | using SimpleJson; | ||
8 | |||
9 | [DebuggerDisplay("Name={Name,nq} Type={Type} Value={Value?.AsString()}")] | ||
10 | public class IntermediateField | ||
11 | { | ||
12 | public IntermediateField(IntermediateFieldDefinition definition) => this.Definition = definition; | ||
13 | |||
14 | public IntermediateFieldDefinition Definition { get; } | ||
15 | |||
16 | public string Name => this.Definition.Name; | ||
17 | |||
18 | public IntermediateFieldType Type => this.Definition.Type; | ||
19 | |||
20 | public string Context => this.Value?.Context; | ||
21 | |||
22 | public IntermediateFieldValue PreviousValue => this.Value?.PreviousValue; | ||
23 | |||
24 | internal IntermediateFieldValue Value { get; set; } | ||
25 | |||
26 | public static explicit operator bool(IntermediateField field) => field.AsBool(); | ||
27 | |||
28 | public static explicit operator bool? (IntermediateField field) => field.AsNullableBool(); | ||
29 | |||
30 | public static explicit operator long(IntermediateField field) => field.AsLargeNumber(); | ||
31 | |||
32 | public static explicit operator long?(IntermediateField field) => field.AsNullableLargeNumber(); | ||
33 | |||
34 | public static explicit operator int(IntermediateField field) => field.AsNumber(); | ||
35 | |||
36 | public static explicit operator int? (IntermediateField field) => field.AsNullableNumber(); | ||
37 | |||
38 | public static explicit operator string(IntermediateField field) => field.AsString(); | ||
39 | |||
40 | internal static IntermediateField Deserialize(IntermediateFieldDefinition definition, Uri baseUri, JsonObject jsonObject) | ||
41 | { | ||
42 | IntermediateField field = null; | ||
43 | |||
44 | if (jsonObject != null) | ||
45 | { | ||
46 | field = new IntermediateField(definition); | ||
47 | |||
48 | field.Value = IntermediateFieldValue.Deserialize(jsonObject, baseUri, definition.Type); | ||
49 | } | ||
50 | |||
51 | return field; | ||
52 | } | ||
53 | |||
54 | internal JsonObject Serialize() => this.Value?.Serialize(); | ||
55 | } | ||
56 | } | ||
diff --git a/src/api/wix/WixToolset.Data/IntermediateFieldContext.cs b/src/api/wix/WixToolset.Data/IntermediateFieldContext.cs new file mode 100644 index 00000000..785a959f --- /dev/null +++ b/src/api/wix/WixToolset.Data/IntermediateFieldContext.cs | |||
@@ -0,0 +1,38 @@ | |||
1 | // Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. | ||
2 | |||
3 | namespace WixToolset.Data | ||
4 | { | ||
5 | using System; | ||
6 | |||
7 | public class IntermediateFieldContext : IDisposable | ||
8 | { | ||
9 | private readonly string previous; | ||
10 | private bool disposed; | ||
11 | |||
12 | public IntermediateFieldContext(string context) | ||
13 | { | ||
14 | this.previous = IntermediateFieldExtensions.valueContext; | ||
15 | |||
16 | IntermediateFieldExtensions.valueContext = context; | ||
17 | } | ||
18 | |||
19 | public void Dispose() | ||
20 | { | ||
21 | this.Dispose(true); | ||
22 | GC.SuppressFinalize(this); | ||
23 | } | ||
24 | |||
25 | protected virtual void Dispose(bool disposing) | ||
26 | { | ||
27 | if (!this.disposed) | ||
28 | { | ||
29 | if (disposing) | ||
30 | { | ||
31 | IntermediateFieldExtensions.valueContext = this.previous; | ||
32 | } | ||
33 | |||
34 | this.disposed = true; | ||
35 | } | ||
36 | } | ||
37 | } | ||
38 | } | ||
diff --git a/src/api/wix/WixToolset.Data/IntermediateFieldDefinition.cs b/src/api/wix/WixToolset.Data/IntermediateFieldDefinition.cs new file mode 100644 index 00000000..5e1d8f29 --- /dev/null +++ b/src/api/wix/WixToolset.Data/IntermediateFieldDefinition.cs | |||
@@ -0,0 +1,26 @@ | |||
1 | // Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. | ||
2 | |||
3 | namespace WixToolset.Data | ||
4 | { | ||
5 | public enum IntermediateFieldType | ||
6 | { | ||
7 | String, | ||
8 | Bool, | ||
9 | Number, | ||
10 | LargeNumber, | ||
11 | Path, | ||
12 | } | ||
13 | |||
14 | public class IntermediateFieldDefinition | ||
15 | { | ||
16 | public IntermediateFieldDefinition(string name, IntermediateFieldType type) | ||
17 | { | ||
18 | this.Name = name; | ||
19 | this.Type = type; | ||
20 | } | ||
21 | |||
22 | public string Name { get; } | ||
23 | |||
24 | public IntermediateFieldType Type { get; } | ||
25 | } | ||
26 | } | ||
diff --git a/src/api/wix/WixToolset.Data/IntermediateFieldExtensions.cs b/src/api/wix/WixToolset.Data/IntermediateFieldExtensions.cs new file mode 100644 index 00000000..c70eb230 --- /dev/null +++ b/src/api/wix/WixToolset.Data/IntermediateFieldExtensions.cs | |||
@@ -0,0 +1,481 @@ | |||
1 | // Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. | ||
2 | |||
3 | namespace WixToolset.Data | ||
4 | { | ||
5 | using System; | ||
6 | |||
7 | public static class IntermediateFieldExtensions | ||
8 | { | ||
9 | [ThreadStatic] | ||
10 | internal static string valueContext; | ||
11 | |||
12 | public static bool IsNull(this IntermediateField field) => field?.Value?.Data == null; | ||
13 | |||
14 | public static bool AsBool(this IntermediateField field) | ||
15 | { | ||
16 | if (field == null || field.Value == null || field.Value.Data == null) | ||
17 | { | ||
18 | return false; | ||
19 | } | ||
20 | |||
21 | switch (field.Definition.Type) | ||
22 | { | ||
23 | case IntermediateFieldType.Bool: | ||
24 | return field.Value.AsBool(); | ||
25 | |||
26 | case IntermediateFieldType.LargeNumber: | ||
27 | case IntermediateFieldType.Number: | ||
28 | return field.Value.AsLargeNumber() != 0; | ||
29 | |||
30 | case IntermediateFieldType.String: | ||
31 | return !String.IsNullOrEmpty(field.Value.AsString()); | ||
32 | |||
33 | case IntermediateFieldType.Path: | ||
34 | return !String.IsNullOrEmpty(field.Value.AsPath()?.Path); | ||
35 | |||
36 | default: | ||
37 | throw new InvalidCastException($"Cannot convert field {field.Name} with type {field.Type} to boolean"); | ||
38 | } | ||
39 | } | ||
40 | |||
41 | public static bool? AsNullableBool(this IntermediateField field) | ||
42 | { | ||
43 | if (field == null || field.Value == null || field.Value.Data == null) | ||
44 | { | ||
45 | return null; | ||
46 | } | ||
47 | |||
48 | return field.AsBool(); | ||
49 | } | ||
50 | |||
51 | public static long AsLargeNumber(this IntermediateField field) | ||
52 | { | ||
53 | if (field == null || field.Value == null || field.Value.Data == null) | ||
54 | { | ||
55 | return 0; | ||
56 | } | ||
57 | |||
58 | switch (field.Definition.Type) | ||
59 | { | ||
60 | case IntermediateFieldType.Bool: | ||
61 | return field.Value.AsBool() ? 1 : 0; | ||
62 | |||
63 | case IntermediateFieldType.LargeNumber: | ||
64 | case IntermediateFieldType.Number: | ||
65 | return field.Value.AsLargeNumber(); | ||
66 | |||
67 | case IntermediateFieldType.String: | ||
68 | return Convert.ToInt64(field.Value.AsString()); | ||
69 | |||
70 | default: | ||
71 | throw new InvalidCastException($"Cannot convert field {field.Name} with type {field.Type} to large number"); | ||
72 | } | ||
73 | } | ||
74 | |||
75 | public static long? AsNullableLargeNumber(this IntermediateField field) | ||
76 | { | ||
77 | if (field == null || field.Value == null || field.Value.Data == null) | ||
78 | { | ||
79 | return null; | ||
80 | } | ||
81 | |||
82 | return field.AsLargeNumber(); | ||
83 | } | ||
84 | |||
85 | public static int AsNumber(this IntermediateField field) | ||
86 | { | ||
87 | if (field == null || field.Value == null || field.Value.Data == null) | ||
88 | { | ||
89 | return 0; | ||
90 | } | ||
91 | |||
92 | switch (field.Definition.Type) | ||
93 | { | ||
94 | case IntermediateFieldType.Bool: | ||
95 | return field.Value.AsBool() ? 1 : 0; | ||
96 | |||
97 | case IntermediateFieldType.LargeNumber: | ||
98 | case IntermediateFieldType.Number: | ||
99 | return field.Value.AsNumber(); | ||
100 | |||
101 | case IntermediateFieldType.String: | ||
102 | return Convert.ToInt32(field.Value.AsString()); | ||
103 | |||
104 | default: | ||
105 | throw new InvalidCastException($"Cannot convert field {field.Name} with type {field.Type} to number"); | ||
106 | } | ||
107 | } | ||
108 | |||
109 | public static int? AsNullableNumber(this IntermediateField field) | ||
110 | { | ||
111 | if (field == null || field.Value == null || field.Value.Data == null) | ||
112 | { | ||
113 | return null; | ||
114 | } | ||
115 | |||
116 | return field.AsNumber(); | ||
117 | } | ||
118 | |||
119 | public static IntermediateFieldPathValue AsPath(this IntermediateField field) | ||
120 | { | ||
121 | if (field == null || field.Value == null || field.Value.Data == null) | ||
122 | { | ||
123 | return null; | ||
124 | } | ||
125 | |||
126 | switch (field.Definition.Type) | ||
127 | { | ||
128 | case IntermediateFieldType.String: | ||
129 | return new IntermediateFieldPathValue { Path = field.Value.AsString() }; | ||
130 | |||
131 | case IntermediateFieldType.Path: | ||
132 | return field.Value.AsPath(); | ||
133 | |||
134 | default: | ||
135 | throw new InvalidCastException($"Cannot convert field {field.Name} with type {field.Type} to string"); | ||
136 | } | ||
137 | } | ||
138 | |||
139 | public static string AsString(this IntermediateField field) | ||
140 | { | ||
141 | if (field == null || field.Value == null || field.Value.Data == null) | ||
142 | { | ||
143 | return null; | ||
144 | } | ||
145 | |||
146 | switch (field.Definition.Type) | ||
147 | { | ||
148 | case IntermediateFieldType.Bool: | ||
149 | return field.Value.AsBool() ? "true" : "false"; | ||
150 | |||
151 | case IntermediateFieldType.LargeNumber: | ||
152 | case IntermediateFieldType.Number: | ||
153 | return field.Value.AsLargeNumber().ToString(); | ||
154 | |||
155 | case IntermediateFieldType.String: | ||
156 | return field.Value.AsString(); | ||
157 | |||
158 | case IntermediateFieldType.Path: | ||
159 | return field.Value.AsPath()?.Path; | ||
160 | |||
161 | default: | ||
162 | throw new InvalidCastException($"Cannot convert field {field.Name} with type {field.Type} to string"); | ||
163 | } | ||
164 | } | ||
165 | |||
166 | public static object AsObject(this IntermediateField field) | ||
167 | { | ||
168 | return field?.Value.Data; | ||
169 | } | ||
170 | |||
171 | public static IntermediateField Set(this IntermediateField field, bool value) | ||
172 | { | ||
173 | object data; | ||
174 | |||
175 | if (field == null) | ||
176 | { | ||
177 | throw new ArgumentNullException(nameof(field)); | ||
178 | } | ||
179 | |||
180 | switch (field.Type) | ||
181 | { | ||
182 | case IntermediateFieldType.Bool: | ||
183 | data = value; | ||
184 | break; | ||
185 | |||
186 | case IntermediateFieldType.LargeNumber: | ||
187 | data = value ? (long)1 : (long)0; | ||
188 | break; | ||
189 | |||
190 | case IntermediateFieldType.Number: | ||
191 | data = value ? 1 : 0; | ||
192 | break; | ||
193 | |||
194 | case IntermediateFieldType.Path: | ||
195 | throw new ArgumentException($"Cannot convert bool '{value}' to a 'Path' field type.", nameof(value)); | ||
196 | |||
197 | case IntermediateFieldType.String: | ||
198 | data = value ? "true" : "false"; | ||
199 | break; | ||
200 | |||
201 | default: | ||
202 | throw new ArgumentOutOfRangeException(nameof(value), $"Unknown intermediate field type: {value.GetType()}"); | ||
203 | }; | ||
204 | |||
205 | return AssignFieldValue(field, data); | ||
206 | } | ||
207 | |||
208 | public static IntermediateField Set(this IntermediateField field, bool? value) | ||
209 | { | ||
210 | if (field == null) | ||
211 | { | ||
212 | throw new ArgumentNullException(nameof(field)); | ||
213 | } | ||
214 | |||
215 | return value.HasValue ? field.Set(value.Value) : AssignFieldValue(field, null); | ||
216 | } | ||
217 | |||
218 | public static IntermediateField Set(this IntermediateField field, long value) | ||
219 | { | ||
220 | object data; | ||
221 | |||
222 | if (field == null) | ||
223 | { | ||
224 | throw new ArgumentNullException(nameof(field)); | ||
225 | } | ||
226 | |||
227 | switch (field.Type) | ||
228 | { | ||
229 | case IntermediateFieldType.Bool: | ||
230 | data = (value != 0); | ||
231 | break; | ||
232 | |||
233 | case IntermediateFieldType.LargeNumber: | ||
234 | data = value; | ||
235 | break; | ||
236 | |||
237 | case IntermediateFieldType.Number: | ||
238 | data = (int)value; | ||
239 | break; | ||
240 | |||
241 | case IntermediateFieldType.Path: | ||
242 | throw new ArgumentException($"Cannot convert large number '{value}' to a 'Path' field type.", nameof(value)); | ||
243 | |||
244 | case IntermediateFieldType.String: | ||
245 | data = value.ToString(); | ||
246 | break; | ||
247 | |||
248 | default: | ||
249 | throw new ArgumentOutOfRangeException(nameof(value), $"Unknown intermediate field type: {value.GetType()}"); | ||
250 | }; | ||
251 | |||
252 | return AssignFieldValue(field, data); | ||
253 | } | ||
254 | |||
255 | public static IntermediateField Set(this IntermediateField field, long? value) | ||
256 | { | ||
257 | if (field == null) | ||
258 | { | ||
259 | throw new ArgumentNullException(nameof(field)); | ||
260 | } | ||
261 | |||
262 | return value.HasValue ? field.Set(value.Value) : AssignFieldValue(field, null); | ||
263 | } | ||
264 | |||
265 | public static IntermediateField Set(this IntermediateField field, int value) | ||
266 | { | ||
267 | object data; | ||
268 | |||
269 | if (field == null) | ||
270 | { | ||
271 | throw new ArgumentNullException(nameof(field)); | ||
272 | } | ||
273 | |||
274 | switch (field.Type) | ||
275 | { | ||
276 | case IntermediateFieldType.Bool: | ||
277 | data = (value != 0); | ||
278 | break; | ||
279 | |||
280 | case IntermediateFieldType.LargeNumber: | ||
281 | data = (long)value; | ||
282 | break; | ||
283 | |||
284 | case IntermediateFieldType.Number: | ||
285 | data = value; | ||
286 | break; | ||
287 | |||
288 | case IntermediateFieldType.Path: | ||
289 | throw new ArgumentException($"Cannot convert number '{value}' to a 'Path' field type.", nameof(value)); | ||
290 | |||
291 | case IntermediateFieldType.String: | ||
292 | data = value.ToString(); | ||
293 | break; | ||
294 | |||
295 | default: | ||
296 | throw new ArgumentOutOfRangeException(nameof(value), $"Unknown intermediate field type: {value.GetType()}"); | ||
297 | }; | ||
298 | |||
299 | return AssignFieldValue(field, data); | ||
300 | } | ||
301 | |||
302 | public static IntermediateField Set(this IntermediateField field, int? value) | ||
303 | { | ||
304 | if (field == null) | ||
305 | { | ||
306 | throw new ArgumentNullException(nameof(field)); | ||
307 | } | ||
308 | |||
309 | return value.HasValue ? field.Set(value.Value) : AssignFieldValue(field, null); | ||
310 | } | ||
311 | |||
312 | public static IntermediateField Set(this IntermediateField field, IntermediateFieldPathValue value) | ||
313 | { | ||
314 | object data; | ||
315 | |||
316 | if (field == null) | ||
317 | { | ||
318 | throw new ArgumentNullException(nameof(field)); | ||
319 | } | ||
320 | else if (value == null) // null is always allowed. | ||
321 | { | ||
322 | data = null; | ||
323 | } | ||
324 | else | ||
325 | { | ||
326 | switch (field.Type) | ||
327 | { | ||
328 | case IntermediateFieldType.Bool: | ||
329 | throw new ArgumentException($"Cannot convert path '{value.Path}' to a 'bool' field type.", nameof(value)); | ||
330 | |||
331 | case IntermediateFieldType.LargeNumber: | ||
332 | throw new ArgumentException($"Cannot convert path '{value.Path}' to a 'large number' field type.", nameof(value)); | ||
333 | |||
334 | case IntermediateFieldType.Number: | ||
335 | throw new ArgumentException($"Cannot convert path '{value.Path}' to a 'number' field type.", nameof(value)); | ||
336 | |||
337 | case IntermediateFieldType.Path: | ||
338 | data = value; | ||
339 | break; | ||
340 | |||
341 | case IntermediateFieldType.String: | ||
342 | data = value.Path; | ||
343 | break; | ||
344 | |||
345 | default: | ||
346 | throw new ArgumentOutOfRangeException(nameof(value), $"Unknown intermediate field type: {value.GetType()}"); | ||
347 | } | ||
348 | } | ||
349 | |||
350 | return AssignFieldValue(field, data); | ||
351 | } | ||
352 | |||
353 | public static IntermediateField Set(this IntermediateField field, string value) | ||
354 | { | ||
355 | object data; | ||
356 | |||
357 | if (field == null) | ||
358 | { | ||
359 | throw new ArgumentNullException(nameof(field)); | ||
360 | } | ||
361 | else if (value == null) // Null is always allowed. | ||
362 | { | ||
363 | data = null; | ||
364 | } | ||
365 | else | ||
366 | { | ||
367 | switch (field.Type) | ||
368 | { | ||
369 | case IntermediateFieldType.Bool: | ||
370 | if (value.Equals("yes", StringComparison.OrdinalIgnoreCase) || value.Equals("true", StringComparison.OrdinalIgnoreCase)) | ||
371 | { | ||
372 | data = true; | ||
373 | } | ||
374 | else if (value.Equals("no", StringComparison.OrdinalIgnoreCase) || value.Equals("false", StringComparison.OrdinalIgnoreCase)) | ||
375 | { | ||
376 | data = false; | ||
377 | } | ||
378 | else | ||
379 | { | ||
380 | throw new ArgumentException($"Cannot convert string '{value}' to a 'bool' field type.", nameof(value)); | ||
381 | } | ||
382 | break; | ||
383 | |||
384 | case IntermediateFieldType.LargeNumber: | ||
385 | if (Int64.TryParse(value, out var largeNumber)) | ||
386 | { | ||
387 | data = largeNumber; | ||
388 | } | ||
389 | else | ||
390 | { | ||
391 | throw new ArgumentException($"Cannot convert string '{value}' to a 'large number' field type.", nameof(value)); | ||
392 | } | ||
393 | break; | ||
394 | |||
395 | case IntermediateFieldType.Number: | ||
396 | if (Int32.TryParse(value, out var number)) | ||
397 | { | ||
398 | data = number; | ||
399 | } | ||
400 | else | ||
401 | { | ||
402 | throw new ArgumentException($"Cannot convert string '{value}' to a 'number' field type.", field.Name); | ||
403 | } | ||
404 | break; | ||
405 | |||
406 | case IntermediateFieldType.Path: | ||
407 | data = new IntermediateFieldPathValue { Path = value }; | ||
408 | break; | ||
409 | |||
410 | case IntermediateFieldType.String: | ||
411 | data = value; | ||
412 | break; | ||
413 | |||
414 | default: | ||
415 | throw new ArgumentOutOfRangeException(nameof(value), $"Unknown intermediate field type: {value.GetType()}"); | ||
416 | } | ||
417 | } | ||
418 | |||
419 | return AssignFieldValue(field, data); | ||
420 | } | ||
421 | |||
422 | public static IntermediateField Set(this IntermediateField field, IntermediateFieldDefinition definition, bool value) | ||
423 | { | ||
424 | return EnsureField(field, definition).Set(value); | ||
425 | } | ||
426 | |||
427 | public static IntermediateField Set(this IntermediateField field, IntermediateFieldDefinition definition, bool? value) | ||
428 | { | ||
429 | return EnsureField(field, definition).Set(value); | ||
430 | } | ||
431 | |||
432 | public static IntermediateField Set(this IntermediateField field, IntermediateFieldDefinition definition, long value) | ||
433 | { | ||
434 | return EnsureField(field, definition).Set(value); | ||
435 | } | ||
436 | |||
437 | public static IntermediateField Set(this IntermediateField field, IntermediateFieldDefinition definition, long? value) | ||
438 | { | ||
439 | return EnsureField(field, definition).Set(value); | ||
440 | } | ||
441 | |||
442 | public static IntermediateField Set(this IntermediateField field, IntermediateFieldDefinition definition, int value) | ||
443 | { | ||
444 | return EnsureField(field, definition).Set(value); | ||
445 | } | ||
446 | |||
447 | public static IntermediateField Set(this IntermediateField field, IntermediateFieldDefinition definition, int? value) | ||
448 | { | ||
449 | return EnsureField(field, definition).Set(value); | ||
450 | } | ||
451 | |||
452 | public static IntermediateField Set(this IntermediateField field, IntermediateFieldDefinition definition, IntermediateFieldPathValue value) | ||
453 | { | ||
454 | return EnsureField(field, definition).Set(value); | ||
455 | } | ||
456 | |||
457 | public static IntermediateField Set(this IntermediateField field, IntermediateFieldDefinition definition, string value) | ||
458 | { | ||
459 | return EnsureField(field, definition).Set(value); | ||
460 | } | ||
461 | |||
462 | public static void Overwrite(this IntermediateField field, string value) => field.Value.Data = value; | ||
463 | |||
464 | private static IntermediateField AssignFieldValue(IntermediateField field, object data) | ||
465 | { | ||
466 | field.Value = new IntermediateFieldValue | ||
467 | { | ||
468 | Context = valueContext, | ||
469 | Data = data, | ||
470 | PreviousValue = field.Value | ||
471 | }; | ||
472 | |||
473 | return field; | ||
474 | } | ||
475 | |||
476 | private static IntermediateField EnsureField(IntermediateField field, IntermediateFieldDefinition definition) | ||
477 | { | ||
478 | return field ?? new IntermediateField(definition); | ||
479 | } | ||
480 | } | ||
481 | } | ||
diff --git a/src/api/wix/WixToolset.Data/IntermediateFieldPathValue.cs b/src/api/wix/WixToolset.Data/IntermediateFieldPathValue.cs new file mode 100644 index 00000000..a8d2735a --- /dev/null +++ b/src/api/wix/WixToolset.Data/IntermediateFieldPathValue.cs | |||
@@ -0,0 +1,26 @@ | |||
1 | // Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. | ||
2 | |||
3 | namespace WixToolset.Data | ||
4 | { | ||
5 | using System; | ||
6 | |||
7 | public class IntermediateFieldPathValue | ||
8 | { | ||
9 | /// <summary> | ||
10 | /// Indicates whether to embed the path to the file when the intermediate field is saved. | ||
11 | /// </summary> | ||
12 | public bool Embed { get; set; } | ||
13 | |||
14 | /// <summary> | ||
15 | /// Gets the base URI of the path field. | ||
16 | /// </summary> | ||
17 | /// <value>The base URI of the path field.</value> | ||
18 | public Uri BaseUri { get; set; } | ||
19 | |||
20 | /// <summary> | ||
21 | /// Gets or sets the data for this field. | ||
22 | /// </summary> | ||
23 | /// <value>Data in the field.</value> | ||
24 | public string Path { get; set; } | ||
25 | } | ||
26 | } | ||
diff --git a/src/api/wix/WixToolset.Data/IntermediateFieldValue.cs b/src/api/wix/WixToolset.Data/IntermediateFieldValue.cs new file mode 100644 index 00000000..84a23931 --- /dev/null +++ b/src/api/wix/WixToolset.Data/IntermediateFieldValue.cs | |||
@@ -0,0 +1,146 @@ | |||
1 | // Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. | ||
2 | |||
3 | namespace WixToolset.Data | ||
4 | { | ||
5 | using System; | ||
6 | using System.Diagnostics; | ||
7 | using SimpleJson; | ||
8 | |||
9 | [DebuggerDisplay("{Data}")] | ||
10 | public class IntermediateFieldValue | ||
11 | { | ||
12 | public string Context { get; internal set; } | ||
13 | |||
14 | internal object Data { get; set; } | ||
15 | |||
16 | public IntermediateFieldValue PreviousValue { get; internal set; } | ||
17 | |||
18 | public static explicit operator bool(IntermediateFieldValue value) => value.AsBool(); | ||
19 | |||
20 | public static explicit operator bool?(IntermediateFieldValue value) => value.AsNullableBool(); | ||
21 | |||
22 | public static explicit operator int(IntermediateFieldValue value) => value.AsNumber(); | ||
23 | |||
24 | public static explicit operator int?(IntermediateFieldValue value) => value.AsNullableNumber(); | ||
25 | |||
26 | public static explicit operator IntermediateFieldPathValue(IntermediateFieldValue value) => value.AsPath(); | ||
27 | |||
28 | public static explicit operator string(IntermediateFieldValue value) => value.AsString(); | ||
29 | |||
30 | internal static IntermediateFieldValue Deserialize(JsonObject jsonObject, Uri baseUri, IntermediateFieldType type) | ||
31 | { | ||
32 | var context = jsonObject.GetValueOrDefault<string>("context"); | ||
33 | if (!jsonObject.TryGetValue("data", out var data)) | ||
34 | { | ||
35 | throw new ArgumentException(); | ||
36 | } | ||
37 | |||
38 | var value = data; | ||
39 | |||
40 | switch (value) | ||
41 | { | ||
42 | case int intData: | ||
43 | switch (type) | ||
44 | { | ||
45 | case IntermediateFieldType.Bool: | ||
46 | value = intData != 0; | ||
47 | break; | ||
48 | |||
49 | case IntermediateFieldType.LargeNumber: | ||
50 | value = Convert.ToInt64(data); | ||
51 | break; | ||
52 | |||
53 | case IntermediateFieldType.Path: | ||
54 | case IntermediateFieldType.String: | ||
55 | value = intData.ToString(); | ||
56 | break; | ||
57 | } | ||
58 | break; | ||
59 | |||
60 | case long longData: | ||
61 | switch (type) | ||
62 | { | ||
63 | case IntermediateFieldType.Bool: | ||
64 | value = longData != 0; | ||
65 | break; | ||
66 | |||
67 | case IntermediateFieldType.Number: | ||
68 | value = Convert.ToInt32(longData); | ||
69 | break; | ||
70 | |||
71 | case IntermediateFieldType.Path: | ||
72 | case IntermediateFieldType.String: | ||
73 | value = longData.ToString(); | ||
74 | break; | ||
75 | } | ||
76 | break; | ||
77 | |||
78 | case JsonObject jsonData: | ||
79 | jsonData.TryGetValue("embed", out var embed); | ||
80 | |||
81 | value = new IntermediateFieldPathValue | ||
82 | { | ||
83 | BaseUri = (embed != null) ? baseUri : null, | ||
84 | Embed = embed != null, | ||
85 | Path = jsonData.GetValueOrDefault<string>("path"), | ||
86 | }; | ||
87 | break; | ||
88 | |||
89 | // Nothing to do for this case, so leave it out. | ||
90 | // case string stringData: | ||
91 | // break; | ||
92 | } | ||
93 | |||
94 | var previousValueJson = jsonObject.GetValueOrDefault<JsonObject>("prev"); | ||
95 | var previousValue = (previousValueJson == null) ? null : IntermediateFieldValue.Deserialize(previousValueJson, baseUri, type); | ||
96 | |||
97 | return new IntermediateFieldValue | ||
98 | { | ||
99 | Context = context, | ||
100 | Data = value, | ||
101 | PreviousValue = previousValue | ||
102 | }; | ||
103 | } | ||
104 | |||
105 | internal JsonObject Serialize() | ||
106 | { | ||
107 | var jsonObject = new JsonObject(); | ||
108 | |||
109 | if (!String.IsNullOrEmpty(this.Context)) | ||
110 | { | ||
111 | jsonObject.Add("context", this.Context); | ||
112 | } | ||
113 | |||
114 | if (this.Data is IntermediateFieldPathValue pathField) | ||
115 | { | ||
116 | var jsonData = new JsonObject(); | ||
117 | |||
118 | // pathField.BaseUri is set during load, not saved. | ||
119 | |||
120 | if (pathField.Embed) | ||
121 | { | ||
122 | jsonData.Add("embed", "true"); | ||
123 | } | ||
124 | |||
125 | if (!String.IsNullOrEmpty(pathField.Path)) | ||
126 | { | ||
127 | jsonData.Add("path", pathField.Path); | ||
128 | } | ||
129 | |||
130 | jsonObject.Add("data", jsonData); | ||
131 | } | ||
132 | else | ||
133 | { | ||
134 | jsonObject.Add("data", this.Data); | ||
135 | } | ||
136 | |||
137 | if (this.PreviousValue != null) | ||
138 | { | ||
139 | var previousValueJson = this.PreviousValue.Serialize(); | ||
140 | jsonObject.Add("prev", previousValueJson); | ||
141 | } | ||
142 | |||
143 | return jsonObject; | ||
144 | } | ||
145 | } | ||
146 | } | ||
diff --git a/src/api/wix/WixToolset.Data/IntermediateFieldValueExtensions.cs b/src/api/wix/WixToolset.Data/IntermediateFieldValueExtensions.cs new file mode 100644 index 00000000..8ff923a7 --- /dev/null +++ b/src/api/wix/WixToolset.Data/IntermediateFieldValueExtensions.cs | |||
@@ -0,0 +1,161 @@ | |||
1 | // Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. | ||
2 | |||
3 | namespace WixToolset.Data | ||
4 | { | ||
5 | using System; | ||
6 | |||
7 | public static class IntermediateFieldValueExtensions | ||
8 | { | ||
9 | public static bool AsBool(this IntermediateFieldValue value) | ||
10 | { | ||
11 | if (value.Data is bool b) | ||
12 | { | ||
13 | return b; | ||
14 | } | ||
15 | else if (value.Data is int n) | ||
16 | { | ||
17 | return n != 0; | ||
18 | } | ||
19 | else if (value.Data is long l) | ||
20 | { | ||
21 | return l != 0; | ||
22 | } | ||
23 | else if (value.Data is string s) | ||
24 | { | ||
25 | if (s.Equals("yes", StringComparison.OrdinalIgnoreCase) || s.Equals("true", StringComparison.OrdinalIgnoreCase)) | ||
26 | { | ||
27 | return true; | ||
28 | } | ||
29 | else if (s.Equals("no", StringComparison.OrdinalIgnoreCase) || s.Equals("false", StringComparison.OrdinalIgnoreCase)) | ||
30 | { | ||
31 | return false; | ||
32 | } | ||
33 | } | ||
34 | |||
35 | return (bool)value.Data; | ||
36 | } | ||
37 | |||
38 | public static bool? AsNullableBool(this IntermediateFieldValue value) | ||
39 | { | ||
40 | if (value?.Data == null) | ||
41 | { | ||
42 | return null; | ||
43 | } | ||
44 | |||
45 | return value.AsBool(); | ||
46 | } | ||
47 | |||
48 | public static long AsLargeNumber(this IntermediateFieldValue value) | ||
49 | { | ||
50 | if (value.Data is long l) | ||
51 | { | ||
52 | return l; | ||
53 | } | ||
54 | else if (value.Data is int n) | ||
55 | { | ||
56 | return n; | ||
57 | } | ||
58 | else if (value.Data is bool b) | ||
59 | { | ||
60 | return b ? 1 : 0; | ||
61 | } | ||
62 | else if (value.Data is string s) | ||
63 | { | ||
64 | try | ||
65 | { | ||
66 | return Convert.ToInt32(s); | ||
67 | } | ||
68 | catch (FormatException) | ||
69 | { | ||
70 | throw new WixException(ErrorMessages.UnableToConvertFieldToNumber(s)); | ||
71 | } | ||
72 | } | ||
73 | |||
74 | return (long)value.Data; | ||
75 | } | ||
76 | |||
77 | public static long? AsNullableLargeNumber(this IntermediateFieldValue value) | ||
78 | { | ||
79 | if (value?.Data == null) | ||
80 | { | ||
81 | return null; | ||
82 | } | ||
83 | |||
84 | return value.AsLargeNumber(); | ||
85 | } | ||
86 | |||
87 | public static int AsNumber(this IntermediateFieldValue value) | ||
88 | { | ||
89 | if (value.Data is int n) | ||
90 | { | ||
91 | return n; | ||
92 | } | ||
93 | else if (value.Data is long l) | ||
94 | { | ||
95 | return (int)l; | ||
96 | } | ||
97 | else if (value.Data is bool b) | ||
98 | { | ||
99 | return b ? 1 : 0; | ||
100 | } | ||
101 | else if (value.Data is string s) | ||
102 | { | ||
103 | try | ||
104 | { | ||
105 | return Convert.ToInt32(s); | ||
106 | } | ||
107 | catch (FormatException) | ||
108 | { | ||
109 | throw new WixException(ErrorMessages.UnableToConvertFieldToNumber(s)); | ||
110 | } | ||
111 | } | ||
112 | |||
113 | return (int)value.Data; | ||
114 | } | ||
115 | |||
116 | public static int? AsNullableNumber(this IntermediateFieldValue value) | ||
117 | { | ||
118 | if (value?.Data == null) | ||
119 | { | ||
120 | return null; | ||
121 | } | ||
122 | |||
123 | return value.AsNumber(); | ||
124 | } | ||
125 | |||
126 | public static IntermediateFieldPathValue AsPath(this IntermediateFieldValue value) | ||
127 | { | ||
128 | return (IntermediateFieldPathValue)value?.Data; | ||
129 | } | ||
130 | |||
131 | public static string AsString(this IntermediateFieldValue value) | ||
132 | { | ||
133 | if (value?.Data == null) | ||
134 | { | ||
135 | return null; | ||
136 | } | ||
137 | else if (value.Data is string s) | ||
138 | { | ||
139 | return s; | ||
140 | } | ||
141 | else if (value.Data is int n) | ||
142 | { | ||
143 | return n.ToString(); | ||
144 | } | ||
145 | else if (value.Data is long l) | ||
146 | { | ||
147 | return l.ToString(); | ||
148 | } | ||
149 | else if (value.Data is bool b) | ||
150 | { | ||
151 | return b ? "true" : "false"; | ||
152 | } | ||
153 | else if (value.Data is IntermediateFieldPathValue p) | ||
154 | { | ||
155 | return p.Path; | ||
156 | } | ||
157 | |||
158 | return (string)value.Data; | ||
159 | } | ||
160 | } | ||
161 | } | ||
diff --git a/src/api/wix/WixToolset.Data/IntermediateLevels.cs b/src/api/wix/WixToolset.Data/IntermediateLevels.cs new file mode 100644 index 00000000..64c19ae1 --- /dev/null +++ b/src/api/wix/WixToolset.Data/IntermediateLevels.cs | |||
@@ -0,0 +1,10 @@ | |||
1 | namespace WixToolset.Data | ||
2 | { | ||
3 | public static class IntermediateLevels | ||
4 | { | ||
5 | public const string Compiled = "compiled"; | ||
6 | public const string Combined = "combined"; | ||
7 | public const string Linked = "linked"; | ||
8 | public const string Resolved = "resolved"; | ||
9 | } | ||
10 | } | ||
diff --git a/src/api/wix/WixToolset.Data/IntermediateSection.cs b/src/api/wix/WixToolset.Data/IntermediateSection.cs new file mode 100644 index 00000000..b9157875 --- /dev/null +++ b/src/api/wix/WixToolset.Data/IntermediateSection.cs | |||
@@ -0,0 +1,139 @@ | |||
1 | // Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. | ||
2 | |||
3 | namespace WixToolset.Data | ||
4 | { | ||
5 | using System; | ||
6 | using System.Collections.Generic; | ||
7 | using SimpleJson; | ||
8 | |||
9 | /// <summary> | ||
10 | /// Section in an intermediate file. | ||
11 | /// </summary> | ||
12 | public class IntermediateSection | ||
13 | { | ||
14 | private readonly List<IntermediateSymbol> symbols; | ||
15 | |||
16 | /// <summary> | ||
17 | /// Creates a new section as part of an intermediate. | ||
18 | /// </summary> | ||
19 | /// <param name="id">Identifier for section.</param> | ||
20 | /// <param name="type">Type of section.</param> | ||
21 | /// <param name="compilationId">Optional compilation identifier</param> | ||
22 | public IntermediateSection(string id, SectionType type, string compilationId = null) | ||
23 | { | ||
24 | this.Id = id; | ||
25 | this.Type = type; | ||
26 | this.CompilationId = compilationId; | ||
27 | this.symbols = new List<IntermediateSymbol>(); | ||
28 | } | ||
29 | |||
30 | /// <summary> | ||
31 | /// Gets the identifier for the section. | ||
32 | /// </summary> | ||
33 | /// <value>Section identifier.</value> | ||
34 | public string Id { get; } | ||
35 | |||
36 | /// <summary> | ||
37 | /// Gets the type of the section. | ||
38 | /// </summary> | ||
39 | /// <value>Type of section.</value> | ||
40 | public SectionType Type { get; } | ||
41 | |||
42 | /// <summary> | ||
43 | /// Gets and sets the identifier of the compilation of the source file containing the section. | ||
44 | /// </summary> | ||
45 | public string CompilationId { get; } | ||
46 | |||
47 | /// <summary> | ||
48 | /// Gets and sets the identifier of the library that combined the section. | ||
49 | /// </summary> | ||
50 | public string LibraryId { get; private set; } | ||
51 | |||
52 | /// <summary> | ||
53 | /// Symbols in the section. | ||
54 | /// </summary> | ||
55 | public IReadOnlyCollection<IntermediateSymbol> Symbols => this.symbols; | ||
56 | |||
57 | /// <summary> | ||
58 | /// Adds a symbol to the section. | ||
59 | /// </summary> | ||
60 | /// <typeparam name="T">Type of IntermediateSymbol to add to the section.</typeparam> | ||
61 | /// <param name="symbol">Symbol to add to the section.</param> | ||
62 | /// <returns>Symbol added to the section.</returns> | ||
63 | public T AddSymbol<T>(T symbol) where T : IntermediateSymbol | ||
64 | { | ||
65 | this.symbols.Add(symbol); | ||
66 | return symbol; | ||
67 | } | ||
68 | |||
69 | /// <summary> | ||
70 | /// Assigns the section to a library. | ||
71 | /// </summary> | ||
72 | /// <param name="libraryId">Identifier of the library.</param> | ||
73 | public void AssignToLibrary(string libraryId) | ||
74 | { | ||
75 | this.LibraryId = libraryId; | ||
76 | } | ||
77 | |||
78 | /// <summary> | ||
79 | /// Removes a symbol from the section. | ||
80 | /// </summary> | ||
81 | /// <param name="symbol">Symbol to remove.</param> | ||
82 | /// <returns>True if the symbol was removed; otherwise false.</returns> | ||
83 | public bool RemoveSymbol(IntermediateSymbol symbol) | ||
84 | { | ||
85 | return this.symbols.Remove(symbol); | ||
86 | } | ||
87 | |||
88 | /// <summary> | ||
89 | /// Parse a section from the JSON data. | ||
90 | /// </summary> | ||
91 | internal static IntermediateSection Deserialize(ISymbolDefinitionCreator creator, Uri baseUri, JsonObject jsonObject) | ||
92 | { | ||
93 | var id = jsonObject.GetValueOrDefault<string>("id"); | ||
94 | var type = jsonObject.GetEnumOrDefault("type", SectionType.Unknown); | ||
95 | |||
96 | if (SectionType.Unknown == type) | ||
97 | { | ||
98 | throw new ArgumentException("JSON object is not a valid section, unknown section type", nameof(type)); | ||
99 | } | ||
100 | |||
101 | var section = new IntermediateSection(id, type); | ||
102 | |||
103 | var symbolsJson = jsonObject.GetValueOrDefault<JsonArray>("symbols"); | ||
104 | |||
105 | foreach (JsonObject symbolJson in symbolsJson) | ||
106 | { | ||
107 | var symbol = IntermediateSymbol.Deserialize(creator, baseUri, symbolJson); | ||
108 | section.symbols.Add(symbol); | ||
109 | } | ||
110 | |||
111 | return section; | ||
112 | } | ||
113 | |||
114 | internal JsonObject Serialize() | ||
115 | { | ||
116 | var jsonObject = new JsonObject | ||
117 | { | ||
118 | { "type", this.Type.ToString().ToLowerInvariant() } | ||
119 | }; | ||
120 | |||
121 | if (!String.IsNullOrEmpty(this.Id)) | ||
122 | { | ||
123 | jsonObject.Add("id", this.Id); | ||
124 | } | ||
125 | |||
126 | var symbolsJson = new JsonArray(this.Symbols.Count); | ||
127 | |||
128 | foreach (var symbol in this.Symbols) | ||
129 | { | ||
130 | var symbolJson = symbol.Serialize(); | ||
131 | symbolsJson.Add(symbolJson); | ||
132 | } | ||
133 | |||
134 | jsonObject.Add("symbols", symbolsJson); | ||
135 | |||
136 | return jsonObject; | ||
137 | } | ||
138 | } | ||
139 | } | ||
diff --git a/src/api/wix/WixToolset.Data/IntermediateSymbol.cs b/src/api/wix/WixToolset.Data/IntermediateSymbol.cs new file mode 100644 index 00000000..4be17094 --- /dev/null +++ b/src/api/wix/WixToolset.Data/IntermediateSymbol.cs | |||
@@ -0,0 +1,300 @@ | |||
1 | // Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. | ||
2 | |||
3 | namespace WixToolset.Data | ||
4 | { | ||
5 | using System; | ||
6 | using System.Diagnostics; | ||
7 | using SimpleJson; | ||
8 | |||
9 | /// <summary> | ||
10 | /// Intermediate symbol. | ||
11 | /// </summary> | ||
12 | [DebuggerDisplay("{DebuggerDisplay,nq}")] | ||
13 | public class IntermediateSymbol | ||
14 | { | ||
15 | private object tags; | ||
16 | |||
17 | /// <summary> | ||
18 | /// Creates an intermediate symbol. | ||
19 | /// </summary> | ||
20 | /// <param name="definition">Symbol definition.</param> | ||
21 | public IntermediateSymbol(IntermediateSymbolDefinition definition) : this(definition, null, null) | ||
22 | { | ||
23 | } | ||
24 | |||
25 | /// <summary> | ||
26 | /// Creates an intermediate symbol with source line number and identifier. | ||
27 | /// </summary> | ||
28 | /// <param name="definition">Symbol definition.</param> | ||
29 | /// <param name="sourceLineNumber">Source line number.</param> | ||
30 | /// <param name="id">Symbol identifier.</param> | ||
31 | public IntermediateSymbol(IntermediateSymbolDefinition definition, SourceLineNumber sourceLineNumber, Identifier id = null) | ||
32 | { | ||
33 | this.Definition = definition; | ||
34 | this.Fields = new IntermediateField[definition.FieldDefinitions.Length]; | ||
35 | this.SourceLineNumbers = sourceLineNumber; | ||
36 | this.Id = id; | ||
37 | } | ||
38 | |||
39 | /// <summary> | ||
40 | /// Gets the symbol's definition. | ||
41 | /// </summary> | ||
42 | public IntermediateSymbolDefinition Definition { get; } | ||
43 | |||
44 | /// <summary> | ||
45 | /// Gets the symbol's fields. | ||
46 | /// </summary> | ||
47 | public IntermediateField[] Fields { get; } | ||
48 | |||
49 | /// <summary> | ||
50 | /// Gets the optional source line number of the symbol. | ||
51 | /// </summary> | ||
52 | public SourceLineNumber SourceLineNumbers { get; internal set; } | ||
53 | |||
54 | /// <summary> | ||
55 | /// Gets the optional identifier for the symbol. | ||
56 | /// </summary> | ||
57 | public Identifier Id { get; internal set; } | ||
58 | |||
59 | /// <summary> | ||
60 | /// Direct access by index to the symbol's fields. | ||
61 | /// </summary> | ||
62 | /// <param name="index">Index of the field to access.</param> | ||
63 | /// <returns>Symbol's field.</returns> | ||
64 | public IntermediateField this[int index] => this.Fields[index]; | ||
65 | |||
66 | private string DebuggerDisplay => $"{this.Definition?.Name} {this.Id?.Id}"; | ||
67 | |||
68 | /// <summary> | ||
69 | /// Add a custom tag to the symbol. | ||
70 | /// </summary> | ||
71 | /// <param name="add">String tag to add to the symbol.</param> | ||
72 | /// <returns>True if the tag was added; otherwise false if th tag was already present.</returns> | ||
73 | public bool AddTag(string add) | ||
74 | { | ||
75 | if (this.tags == null) | ||
76 | { | ||
77 | this.tags = add; | ||
78 | } | ||
79 | else if (this.tags is string tag) | ||
80 | { | ||
81 | if (tag == add) | ||
82 | { | ||
83 | return false; | ||
84 | } | ||
85 | |||
86 | this.tags = new[] { tag, add }; | ||
87 | } | ||
88 | else | ||
89 | { | ||
90 | var tagsArray = (string[])this.tags; | ||
91 | var array = new string[tagsArray.Length + 1]; | ||
92 | |||
93 | for (var i = 0; i < tagsArray.Length; ++i) | ||
94 | { | ||
95 | if (tagsArray[i] == add) | ||
96 | { | ||
97 | return false; | ||
98 | } | ||
99 | |||
100 | array[i] = tagsArray[i]; | ||
101 | } | ||
102 | |||
103 | array[tagsArray.Length] = add; | ||
104 | |||
105 | this.tags = array; | ||
106 | } | ||
107 | |||
108 | return true; | ||
109 | } | ||
110 | |||
111 | /// <summary> | ||
112 | /// Tests whether a symbol has a tag. | ||
113 | /// </summary> | ||
114 | /// <param name="has">String tag to find.</param> | ||
115 | /// <returns>True if the symbol has the tag; otherwise false.</returns> | ||
116 | public bool HasTag(string has) | ||
117 | { | ||
118 | if (this.tags == null) | ||
119 | { | ||
120 | return false; | ||
121 | } | ||
122 | else if (this.tags is string tag) | ||
123 | { | ||
124 | return tag == has; | ||
125 | } | ||
126 | else | ||
127 | { | ||
128 | foreach (var element in (string[])this.tags) | ||
129 | { | ||
130 | if (element == has) | ||
131 | { | ||
132 | return true; | ||
133 | } | ||
134 | } | ||
135 | } | ||
136 | |||
137 | return false; | ||
138 | } | ||
139 | |||
140 | /// <summary> | ||
141 | /// Removes a tag from the symbol. | ||
142 | /// </summary> | ||
143 | /// <param name="remove">String tag to remove.</param> | ||
144 | /// <returns>True if the tag was removed; otherwise false if the tag was not present.</returns> | ||
145 | public bool RemoveTag(string remove) | ||
146 | { | ||
147 | if (this.tags is string tag) | ||
148 | { | ||
149 | if (tag == remove) | ||
150 | { | ||
151 | this.tags = null; | ||
152 | return true; | ||
153 | } | ||
154 | } | ||
155 | else if (this.tags is string[] tagsArray) | ||
156 | { | ||
157 | if (tagsArray.Length == 2) | ||
158 | { | ||
159 | if (tagsArray[0] == remove) | ||
160 | { | ||
161 | this.tags = tagsArray[1]; | ||
162 | return true; | ||
163 | } | ||
164 | else if (tagsArray[1] == remove) | ||
165 | { | ||
166 | this.tags = tagsArray[0]; | ||
167 | return true; | ||
168 | } | ||
169 | } | ||
170 | else | ||
171 | { | ||
172 | var array = new string[tagsArray.Length - 1]; | ||
173 | var arrayIndex = 0; | ||
174 | var found = false; | ||
175 | |||
176 | for (var i = 0; i < tagsArray.Length; ++i) | ||
177 | { | ||
178 | if (tagsArray[i] == remove) | ||
179 | { | ||
180 | found = true; | ||
181 | continue; | ||
182 | } | ||
183 | else if (arrayIndex == array.Length) | ||
184 | { | ||
185 | break; | ||
186 | } | ||
187 | |||
188 | array[arrayIndex++] = tagsArray[i]; | ||
189 | } | ||
190 | |||
191 | if (found) | ||
192 | { | ||
193 | this.tags = array; | ||
194 | return true; | ||
195 | } | ||
196 | } | ||
197 | } | ||
198 | |||
199 | return false; | ||
200 | } | ||
201 | |||
202 | internal static IntermediateSymbol Deserialize(ISymbolDefinitionCreator creator, Uri baseUri, JsonObject jsonObject) | ||
203 | { | ||
204 | var definitionName = jsonObject.GetValueOrDefault<string>("type"); | ||
205 | var idJson = jsonObject.GetValueOrDefault<JsonObject>("id"); | ||
206 | var sourceLineNumbersJson = jsonObject.GetValueOrDefault<JsonObject>("ln"); | ||
207 | var fieldsJson = jsonObject.GetValueOrDefault<JsonArray>("fields"); | ||
208 | var tagsJson = jsonObject.GetValueOrDefault<JsonArray>("tags"); | ||
209 | |||
210 | var id = (idJson == null) ? null : Identifier.Deserialize(idJson); | ||
211 | var sourceLineNumbers = (sourceLineNumbersJson == null) ? null : SourceLineNumber.Deserialize(sourceLineNumbersJson); | ||
212 | |||
213 | if (!creator.TryGetSymbolDefinitionByName(definitionName, out var definition)) | ||
214 | { | ||
215 | throw new WixException(ErrorMessages.UnknownSymbolType(definitionName)); | ||
216 | } | ||
217 | |||
218 | var symbol = definition.CreateSymbol(sourceLineNumbers, id); | ||
219 | |||
220 | for (var i = 0; i < fieldsJson.Count && i < symbol.Fields.Length; ++i) | ||
221 | { | ||
222 | if (fieldsJson[i] is JsonObject fieldJson) | ||
223 | { | ||
224 | symbol.Fields[i] = IntermediateField.Deserialize(symbol.Definition.FieldDefinitions[i], baseUri, fieldJson); | ||
225 | } | ||
226 | } | ||
227 | |||
228 | if (tagsJson == null || tagsJson.Count == 0) | ||
229 | { | ||
230 | } | ||
231 | else if (tagsJson.Count == 1) | ||
232 | { | ||
233 | symbol.tags = (string)tagsJson[0]; | ||
234 | } | ||
235 | else | ||
236 | { | ||
237 | var tags = new string[tagsJson.Count]; | ||
238 | |||
239 | for (var i = 0; i < tagsJson.Count; ++i) | ||
240 | { | ||
241 | tags[i] = (string)tagsJson[i]; | ||
242 | } | ||
243 | |||
244 | symbol.tags = tags; | ||
245 | } | ||
246 | |||
247 | return symbol; | ||
248 | } | ||
249 | |||
250 | internal JsonObject Serialize() | ||
251 | { | ||
252 | var jsonObject = new JsonObject | ||
253 | { | ||
254 | { "type", this.Definition.Name } | ||
255 | }; | ||
256 | |||
257 | var idJson = this.Id?.Serialize(); | ||
258 | if (idJson != null) | ||
259 | { | ||
260 | jsonObject.Add("id", idJson); | ||
261 | } | ||
262 | |||
263 | var lnJson = this.SourceLineNumbers?.Serialize(); | ||
264 | if (lnJson != null) | ||
265 | { | ||
266 | jsonObject.Add("ln", lnJson); | ||
267 | } | ||
268 | |||
269 | var fieldsJson = new JsonArray(this.Fields.Length); | ||
270 | |||
271 | foreach (var field in this.Fields) | ||
272 | { | ||
273 | var fieldJson = field?.Serialize(); | ||
274 | fieldsJson.Add(fieldJson); | ||
275 | } | ||
276 | |||
277 | jsonObject.Add("fields", fieldsJson); | ||
278 | |||
279 | if (this.tags is string || this.tags is string[]) | ||
280 | { | ||
281 | JsonArray tagsJson; | ||
282 | |||
283 | if (this.tags is string tag) | ||
284 | { | ||
285 | tagsJson = new JsonArray(1) { tag }; | ||
286 | } | ||
287 | else | ||
288 | { | ||
289 | var array = (string[])this.tags; | ||
290 | tagsJson = new JsonArray(array.Length); | ||
291 | tagsJson.AddRange(array); | ||
292 | } | ||
293 | |||
294 | jsonObject.Add("tags", tagsJson); | ||
295 | } | ||
296 | |||
297 | return jsonObject; | ||
298 | } | ||
299 | } | ||
300 | } | ||
diff --git a/src/api/wix/WixToolset.Data/IntermediateSymbolDefinition.cs b/src/api/wix/WixToolset.Data/IntermediateSymbolDefinition.cs new file mode 100644 index 00000000..dc913704 --- /dev/null +++ b/src/api/wix/WixToolset.Data/IntermediateSymbolDefinition.cs | |||
@@ -0,0 +1,270 @@ | |||
1 | // Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. | ||
2 | |||
3 | namespace WixToolset.Data | ||
4 | { | ||
5 | using System; | ||
6 | using SimpleJson; | ||
7 | |||
8 | public class IntermediateSymbolDefinition | ||
9 | { | ||
10 | private object tags; | ||
11 | |||
12 | public IntermediateSymbolDefinition(string name, IntermediateFieldDefinition[] fieldDefinitions, Type strongSymbolType) | ||
13 | : this(SymbolDefinitionType.MustBeFromAnExtension, name, 0, fieldDefinitions, strongSymbolType) | ||
14 | { | ||
15 | } | ||
16 | |||
17 | public IntermediateSymbolDefinition(string name, int revision, IntermediateFieldDefinition[] fieldDefinitions, Type strongSymbolType) | ||
18 | : this(SymbolDefinitionType.MustBeFromAnExtension, name, revision, fieldDefinitions, strongSymbolType) | ||
19 | { | ||
20 | } | ||
21 | |||
22 | internal IntermediateSymbolDefinition(SymbolDefinitionType type, IntermediateFieldDefinition[] fieldDefinitions, Type strongSymbolType) | ||
23 | : this(type, type.ToString(), 0, fieldDefinitions, strongSymbolType) | ||
24 | { | ||
25 | } | ||
26 | |||
27 | private IntermediateSymbolDefinition(SymbolDefinitionType type, string name, int revision, IntermediateFieldDefinition[] fieldDefinitions, Type strongSymbolType) | ||
28 | { | ||
29 | this.Type = type; | ||
30 | this.Name = name; | ||
31 | this.Revision = revision; | ||
32 | this.FieldDefinitions = fieldDefinitions; | ||
33 | this.StrongSymbolType = strongSymbolType ?? typeof(IntermediateSymbol); | ||
34 | #if DEBUG | ||
35 | if (this.StrongSymbolType != typeof(IntermediateSymbol) && !this.StrongSymbolType.IsSubclassOf(typeof(IntermediateSymbol))) { throw new ArgumentException(nameof(strongSymbolType)); } | ||
36 | #endif | ||
37 | } | ||
38 | |||
39 | public int Revision { get; } | ||
40 | |||
41 | public SymbolDefinitionType Type { get; } | ||
42 | |||
43 | public string Name { get; } | ||
44 | |||
45 | public IntermediateFieldDefinition[] FieldDefinitions { get; } | ||
46 | |||
47 | private Type StrongSymbolType { get; } | ||
48 | |||
49 | public IntermediateSymbol CreateSymbol(SourceLineNumber sourceLineNumber = null, Identifier id = null) | ||
50 | { | ||
51 | var symbol = (this.StrongSymbolType == typeof(IntermediateSymbol)) ? (IntermediateSymbol)Activator.CreateInstance(this.StrongSymbolType, this) : (IntermediateSymbol)Activator.CreateInstance(this.StrongSymbolType); | ||
52 | symbol.SourceLineNumbers = sourceLineNumber; | ||
53 | symbol.Id = id; | ||
54 | |||
55 | return symbol; | ||
56 | } | ||
57 | |||
58 | public bool AddTag(string add) | ||
59 | { | ||
60 | if (this.tags == null) | ||
61 | { | ||
62 | this.tags = add; | ||
63 | } | ||
64 | else if (this.tags is string tag) | ||
65 | { | ||
66 | if (tag == add) | ||
67 | { | ||
68 | return false; | ||
69 | } | ||
70 | |||
71 | this.tags = new[] { tag, add }; | ||
72 | } | ||
73 | else | ||
74 | { | ||
75 | var tagsArray = (string[])this.tags; | ||
76 | var array = new string[tagsArray.Length + 1]; | ||
77 | |||
78 | for (var i = 0; i < tagsArray.Length; ++i) | ||
79 | { | ||
80 | if (tagsArray[i] == add) | ||
81 | { | ||
82 | return false; | ||
83 | } | ||
84 | |||
85 | array[i] = tagsArray[i]; | ||
86 | } | ||
87 | |||
88 | array[tagsArray.Length] = add; | ||
89 | |||
90 | this.tags = array; | ||
91 | } | ||
92 | |||
93 | return true; | ||
94 | } | ||
95 | |||
96 | public bool HasTag(string has) | ||
97 | { | ||
98 | if (this.tags == null) | ||
99 | { | ||
100 | return false; | ||
101 | } | ||
102 | else if (this.tags is string tag) | ||
103 | { | ||
104 | return tag == has; | ||
105 | } | ||
106 | else | ||
107 | { | ||
108 | foreach (var element in (string[])this.tags) | ||
109 | { | ||
110 | if (element == has) | ||
111 | { | ||
112 | return true; | ||
113 | } | ||
114 | } | ||
115 | } | ||
116 | |||
117 | return false; | ||
118 | } | ||
119 | |||
120 | public bool RemoveTag(string remove) | ||
121 | { | ||
122 | if (this.tags is string tag) | ||
123 | { | ||
124 | if (tag == remove) | ||
125 | { | ||
126 | this.tags = null; | ||
127 | return true; | ||
128 | } | ||
129 | } | ||
130 | else if (this.tags is string[] tagsArray) | ||
131 | { | ||
132 | if (tagsArray.Length == 2) | ||
133 | { | ||
134 | if (tagsArray[0] == remove) | ||
135 | { | ||
136 | this.tags = tagsArray[1]; | ||
137 | return true; | ||
138 | } | ||
139 | else if (tagsArray[1] == remove) | ||
140 | { | ||
141 | this.tags = tagsArray[0]; | ||
142 | return true; | ||
143 | } | ||
144 | } | ||
145 | else | ||
146 | { | ||
147 | var array = new string[tagsArray.Length - 1]; | ||
148 | var arrayIndex = 0; | ||
149 | var found = false; | ||
150 | |||
151 | for (var i = 0; i < tagsArray.Length; ++i) | ||
152 | { | ||
153 | if (tagsArray[i] == remove) | ||
154 | { | ||
155 | found = true; | ||
156 | continue; | ||
157 | } | ||
158 | else if (arrayIndex == array.Length) | ||
159 | { | ||
160 | break; | ||
161 | } | ||
162 | |||
163 | array[arrayIndex++] = tagsArray[i]; | ||
164 | } | ||
165 | |||
166 | if (found) | ||
167 | { | ||
168 | this.tags = array; | ||
169 | return true; | ||
170 | } | ||
171 | } | ||
172 | } | ||
173 | |||
174 | return false; | ||
175 | } | ||
176 | |||
177 | internal static IntermediateSymbolDefinition Deserialize(JsonObject jsonObject) | ||
178 | { | ||
179 | var name = jsonObject.GetValueOrDefault<string>("name"); | ||
180 | var revision = jsonObject.GetValueOrDefault("rev", 0); | ||
181 | var definitionsJson = jsonObject.GetValueOrDefault<JsonArray>("fields"); | ||
182 | var tagsJson = jsonObject.GetValueOrDefault<JsonArray>("tags"); | ||
183 | |||
184 | var fieldDefinitions = new IntermediateFieldDefinition[definitionsJson.Count]; | ||
185 | |||
186 | for (var i = 0; i < definitionsJson.Count; ++i) | ||
187 | { | ||
188 | var definitionJson = (JsonObject)definitionsJson[i]; | ||
189 | var fieldName = definitionJson.GetValueOrDefault<string>("name"); | ||
190 | var fieldType = definitionJson.GetEnumOrDefault("type", IntermediateFieldType.String); | ||
191 | fieldDefinitions[i] = new IntermediateFieldDefinition(fieldName, fieldType); | ||
192 | } | ||
193 | |||
194 | var definition = new IntermediateSymbolDefinition(name, revision, fieldDefinitions, null); | ||
195 | |||
196 | if (tagsJson == null || tagsJson.Count == 0) | ||
197 | { | ||
198 | } | ||
199 | else if (tagsJson.Count == 1) | ||
200 | { | ||
201 | definition.tags = (string)tagsJson[0]; | ||
202 | } | ||
203 | else | ||
204 | { | ||
205 | var tags = new string[tagsJson.Count]; | ||
206 | |||
207 | for (var i = 0; i < tagsJson.Count; ++i) | ||
208 | { | ||
209 | tags[i] = (string)tagsJson[i]; | ||
210 | } | ||
211 | |||
212 | definition.tags = tags; | ||
213 | } | ||
214 | |||
215 | return definition; | ||
216 | } | ||
217 | |||
218 | internal JsonObject Serialize() | ||
219 | { | ||
220 | var jsonObject = new JsonObject | ||
221 | { | ||
222 | { "name", this.Name } | ||
223 | }; | ||
224 | |||
225 | if (this.Revision > 0) | ||
226 | { | ||
227 | jsonObject.Add("rev", this.Revision); | ||
228 | } | ||
229 | |||
230 | var fieldsJson = new JsonArray(this.FieldDefinitions.Length); | ||
231 | |||
232 | foreach (var fieldDefinition in this.FieldDefinitions) | ||
233 | { | ||
234 | var fieldJson = new JsonObject | ||
235 | { | ||
236 | { "name", fieldDefinition.Name }, | ||
237 | }; | ||
238 | |||
239 | if (fieldDefinition.Type != IntermediateFieldType.String) | ||
240 | { | ||
241 | fieldJson.Add("type", fieldDefinition.Type.ToString().ToLowerInvariant()); | ||
242 | } | ||
243 | |||
244 | fieldsJson.Add(fieldJson); | ||
245 | } | ||
246 | |||
247 | jsonObject.Add("fields", fieldsJson); | ||
248 | |||
249 | if (this.tags is string || this.tags is string[]) | ||
250 | { | ||
251 | JsonArray tagsJson; | ||
252 | |||
253 | if (this.tags is string tag) | ||
254 | { | ||
255 | tagsJson = new JsonArray(1) { tag }; | ||
256 | } | ||
257 | else | ||
258 | { | ||
259 | var array = (string[])this.tags; | ||
260 | tagsJson = new JsonArray(array.Length); | ||
261 | tagsJson.AddRange(array); | ||
262 | } | ||
263 | |||
264 | jsonObject.Add("tags", tagsJson); | ||
265 | } | ||
266 | |||
267 | return jsonObject; | ||
268 | } | ||
269 | } | ||
270 | } | ||
diff --git a/src/api/wix/WixToolset.Data/IntermediateSymbolExtensions.cs b/src/api/wix/WixToolset.Data/IntermediateSymbolExtensions.cs new file mode 100644 index 00000000..10f0d7f0 --- /dev/null +++ b/src/api/wix/WixToolset.Data/IntermediateSymbolExtensions.cs | |||
@@ -0,0 +1,121 @@ | |||
1 | // Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. | ||
2 | |||
3 | namespace WixToolset.Data | ||
4 | { | ||
5 | public static class IntermediateSymbolExtensions | ||
6 | { | ||
7 | public static bool AsBool(this IntermediateSymbol symbol, int index) => symbol?.Fields[index].AsBool() ?? false; | ||
8 | |||
9 | public static bool? AsNullableBool(this IntermediateSymbol symbol, int index) => symbol?.Fields[index].AsNullableBool(); | ||
10 | |||
11 | public static int AsNumber(this IntermediateSymbol symbol, int index) => symbol?.Fields[index].AsNumber() ?? 0; | ||
12 | |||
13 | public static int? AsNullableNumber(this IntermediateSymbol symbol, int index) => symbol?.Fields[index].AsNullableNumber(); | ||
14 | |||
15 | public static string AsString(this IntermediateSymbol symbol, int index) => symbol?.Fields[index].AsString(); | ||
16 | |||
17 | public static IntermediateField Set(this IntermediateSymbol symbol, int index, bool value) | ||
18 | { | ||
19 | var definition = symbol.Definition.FieldDefinitions[index]; | ||
20 | |||
21 | var field = symbol.Fields[index].Set(definition, value); | ||
22 | |||
23 | return symbol.Fields[index] = field; | ||
24 | } | ||
25 | |||
26 | public static IntermediateField Set(this IntermediateSymbol symbol, int index, bool? value) | ||
27 | { | ||
28 | if (value == null && NoFieldMetadata(symbol, index)) | ||
29 | { | ||
30 | return symbol.Fields[index] = null; | ||
31 | } | ||
32 | |||
33 | var definition = symbol.Definition.FieldDefinitions[index]; | ||
34 | |||
35 | var field = symbol.Fields[index].Set(definition, value); | ||
36 | |||
37 | return symbol.Fields[index] = field; | ||
38 | } | ||
39 | |||
40 | public static IntermediateField Set(this IntermediateSymbol symbol, int index, long value) | ||
41 | { | ||
42 | var definition = symbol.Definition.FieldDefinitions[index]; | ||
43 | |||
44 | var field = symbol.Fields[index].Set(definition, value); | ||
45 | |||
46 | return symbol.Fields[index] = field; | ||
47 | } | ||
48 | |||
49 | public static IntermediateField Set(this IntermediateSymbol symbol, int index, long? value) | ||
50 | { | ||
51 | if (value == null && NoFieldMetadata(symbol, index)) | ||
52 | { | ||
53 | return symbol.Fields[index] = null; | ||
54 | } | ||
55 | |||
56 | var definition = symbol.Definition.FieldDefinitions[index]; | ||
57 | |||
58 | var field = symbol.Fields[index].Set(definition, value); | ||
59 | |||
60 | return symbol.Fields[index] = field; | ||
61 | } | ||
62 | |||
63 | public static IntermediateField Set(this IntermediateSymbol symbol, int index, int value) | ||
64 | { | ||
65 | var definition = symbol.Definition.FieldDefinitions[index]; | ||
66 | |||
67 | var field = symbol.Fields[index].Set(definition, value); | ||
68 | |||
69 | return symbol.Fields[index] = field; | ||
70 | } | ||
71 | |||
72 | public static IntermediateField Set(this IntermediateSymbol symbol, int index, int? value) | ||
73 | { | ||
74 | if (value == null && NoFieldMetadata(symbol, index)) | ||
75 | { | ||
76 | return symbol.Fields[index] = null; | ||
77 | } | ||
78 | |||
79 | var definition = symbol.Definition.FieldDefinitions[index]; | ||
80 | |||
81 | var field = symbol.Fields[index].Set(definition, value); | ||
82 | |||
83 | return symbol.Fields[index] = field; | ||
84 | } | ||
85 | |||
86 | public static IntermediateField Set(this IntermediateSymbol symbol, int index, IntermediateFieldPathValue value) | ||
87 | { | ||
88 | if (value?.Path == null && value?.BaseUri == null && NoFieldMetadata(symbol, index)) | ||
89 | { | ||
90 | return symbol.Fields[index] = null; | ||
91 | } | ||
92 | |||
93 | var definition = symbol.Definition.FieldDefinitions[index]; | ||
94 | |||
95 | var field = symbol.Fields[index].Set(definition, value); | ||
96 | |||
97 | return symbol.Fields[index] = field; | ||
98 | } | ||
99 | |||
100 | public static IntermediateField Set(this IntermediateSymbol symbol, int index, string value) | ||
101 | { | ||
102 | if (value == null && NoFieldMetadata(symbol, index)) | ||
103 | { | ||
104 | return symbol.Fields[index] = null; | ||
105 | } | ||
106 | |||
107 | var definition = symbol.Definition.FieldDefinitions[index]; | ||
108 | |||
109 | var field = symbol.Fields[index].Set(definition, value); | ||
110 | |||
111 | return symbol.Fields[index] = field; | ||
112 | } | ||
113 | |||
114 | private static bool NoFieldMetadata(IntermediateSymbol symbol, int index) | ||
115 | { | ||
116 | var field = symbol?.Fields[index]; | ||
117 | |||
118 | return field?.Context == null && field?.PreviousValue == null; | ||
119 | } | ||
120 | } | ||
121 | } | ||
diff --git a/src/api/wix/WixToolset.Data/Json/JsonObjectExtensions.cs b/src/api/wix/WixToolset.Data/Json/JsonObjectExtensions.cs new file mode 100644 index 00000000..bc52333c --- /dev/null +++ b/src/api/wix/WixToolset.Data/Json/JsonObjectExtensions.cs | |||
@@ -0,0 +1,79 @@ | |||
1 | // Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. | ||
2 | |||
3 | namespace WixToolset.Data | ||
4 | { | ||
5 | using System; | ||
6 | using SimpleJson; | ||
7 | |||
8 | internal static class JsonObjectExtensions | ||
9 | { | ||
10 | public static JsonObject AddNonDefaultValue(this JsonObject jsonObject, string key, bool value, bool defaultValue = default(bool)) | ||
11 | { | ||
12 | if (value != defaultValue) | ||
13 | { | ||
14 | jsonObject.Add(key, value); | ||
15 | } | ||
16 | |||
17 | return jsonObject; | ||
18 | } | ||
19 | |||
20 | public static JsonObject AddNonDefaultValue(this JsonObject jsonObject, string key, int value, int defaultValue = default(int)) | ||
21 | { | ||
22 | if (value != defaultValue) | ||
23 | { | ||
24 | jsonObject.Add(key, value); | ||
25 | } | ||
26 | |||
27 | return jsonObject; | ||
28 | } | ||
29 | |||
30 | public static JsonObject AddNonDefaultValue(this JsonObject jsonObject, string key, object value, object defaultValue = null) | ||
31 | { | ||
32 | if (value != defaultValue) | ||
33 | { | ||
34 | jsonObject.Add(key, value); | ||
35 | } | ||
36 | |||
37 | return jsonObject; | ||
38 | } | ||
39 | |||
40 | public static JsonObject AddIsNotNullOrEmpty(this JsonObject jsonObject, string key, string value) | ||
41 | { | ||
42 | if (!String.IsNullOrEmpty(value)) | ||
43 | { | ||
44 | jsonObject.Add(key, value); | ||
45 | } | ||
46 | |||
47 | return jsonObject; | ||
48 | } | ||
49 | |||
50 | public static bool GetValueOrDefault(this JsonObject jsonObject, string key, bool defaultValue) | ||
51 | { | ||
52 | return jsonObject.TryGetValue(key, out var value) ? Convert.ToBoolean(value) : defaultValue; | ||
53 | } | ||
54 | |||
55 | public static int GetValueOrDefault(this JsonObject jsonObject, string key, int defaultValue) | ||
56 | { | ||
57 | return jsonObject.TryGetValue(key, out var value) ? Convert.ToInt32(value) : defaultValue; | ||
58 | } | ||
59 | |||
60 | public static int? GetValueOrDefault(this JsonObject jsonObject, string key, int? defaultValue) | ||
61 | { | ||
62 | return jsonObject.TryGetValue(key, out var value) ? Convert.ToInt32(value) : defaultValue; | ||
63 | } | ||
64 | |||
65 | public static T GetValueOrDefault<T>(this JsonObject jsonObject, string key, T defaultValue = default(T)) where T : class | ||
66 | { | ||
67 | return jsonObject.TryGetValue(key, out var value) ? value as T : defaultValue; | ||
68 | } | ||
69 | |||
70 | public static T GetEnumOrDefault<T>(this JsonObject jsonObject, string key, T defaultValue) where T : struct | ||
71 | { | ||
72 | #if DEBUG | ||
73 | if (!typeof(T).IsEnum) { throw new ArgumentException("This method only supports enums.", nameof(T)); } | ||
74 | #endif | ||
75 | var value = jsonObject.GetValueOrDefault<string>(key); | ||
76 | return Enum.TryParse(value, true, out T e) ? e : defaultValue; | ||
77 | } | ||
78 | } | ||
79 | } | ||
diff --git a/src/api/wix/WixToolset.Data/Json/SimpleJson.cs b/src/api/wix/WixToolset.Data/Json/SimpleJson.cs new file mode 100644 index 00000000..3d956f6e --- /dev/null +++ b/src/api/wix/WixToolset.Data/Json/SimpleJson.cs | |||
@@ -0,0 +1,2127 @@ | |||
1 | //----------------------------------------------------------------------- | ||
2 | // <copyright file="SimpleJson.cs" company="The Outercurve Foundation"> | ||
3 | // Copyright (c) 2011, The Outercurve Foundation. | ||
4 | // | ||
5 | // Licensed under the MIT License (the "License"); | ||
6 | // you may not use this file except in compliance with the License. | ||
7 | // You may obtain a copy of the License at | ||
8 | // http://www.opensource.org/licenses/mit-license.php | ||
9 | // | ||
10 | // Unless required by applicable law or agreed to in writing, software | ||
11 | // distributed under the License is distributed on an "AS IS" BASIS, | ||
12 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | ||
13 | // See the License for the specific language governing permissions and | ||
14 | // limitations under the License. | ||
15 | // </copyright> | ||
16 | // <author>Nathan Totten (ntotten.com), Jim Zimmerman (jimzimmerman.com) and Prabir Shrestha (prabir.me)</author> | ||
17 | // <website>https://github.com/facebook-csharp-sdk/simple-json</website> | ||
18 | //----------------------------------------------------------------------- | ||
19 | |||
20 | // VERSION: | ||
21 | |||
22 | // NOTE: uncomment the following line to make SimpleJson class internal. | ||
23 | #define SIMPLE_JSON_INTERNAL | ||
24 | |||
25 | // NOTE: uncomment the following line to make JsonArray and JsonObject class internal. | ||
26 | #define SIMPLE_JSON_OBJARRAYINTERNAL | ||
27 | |||
28 | // NOTE: uncomment the following line to enable dynamic support. | ||
29 | //#define SIMPLE_JSON_DYNAMIC | ||
30 | |||
31 | // NOTE: uncomment the following line to enable DataContract support. | ||
32 | //#define SIMPLE_JSON_DATACONTRACT | ||
33 | |||
34 | // NOTE: uncomment the following line to enable IReadOnlyCollection<T> and IReadOnlyList<T> support. | ||
35 | //#define SIMPLE_JSON_READONLY_COLLECTIONS | ||
36 | |||
37 | // NOTE: uncomment the following line to disable linq expressions/compiled lambda (better performance) instead of method.invoke(). | ||
38 | // define if you are using .net framework <= 3.0 or < WP7.5 | ||
39 | //#define SIMPLE_JSON_NO_LINQ_EXPRESSION | ||
40 | |||
41 | // NOTE: uncomment the following line if you are compiling under Window Metro style application/library. | ||
42 | // usually already defined in properties | ||
43 | //#define NETFX_CORE; | ||
44 | |||
45 | // If you are targetting WinStore, WP8 and NET4.5+ PCL make sure to #define SIMPLE_JSON_TYPEINFO; | ||
46 | |||
47 | // original json parsing code from http://techblog.procurios.nl/k/618/news/view/14605/14863/How-do-I-write-my-own-parser-for-JSON.html | ||
48 | |||
49 | #if NETFX_CORE | ||
50 | #define SIMPLE_JSON_TYPEINFO | ||
51 | #endif | ||
52 | |||
53 | using System; | ||
54 | using System.CodeDom.Compiler; | ||
55 | using System.Collections; | ||
56 | using System.Collections.Generic; | ||
57 | #if !SIMPLE_JSON_NO_LINQ_EXPRESSION | ||
58 | using System.Linq.Expressions; | ||
59 | #endif | ||
60 | using System.ComponentModel; | ||
61 | using System.Diagnostics.CodeAnalysis; | ||
62 | #if SIMPLE_JSON_DYNAMIC | ||
63 | using System.Dynamic; | ||
64 | #endif | ||
65 | using System.Globalization; | ||
66 | using System.Reflection; | ||
67 | using System.Runtime.Serialization; | ||
68 | using System.Text; | ||
69 | using SimpleJson.Reflection; | ||
70 | |||
71 | // ReSharper disable LoopCanBeConvertedToQuery | ||
72 | // ReSharper disable RedundantExplicitArrayCreation | ||
73 | // ReSharper disable SuggestUseVarKeywordEvident | ||
74 | namespace SimpleJson | ||
75 | { | ||
76 | /// <summary> | ||
77 | /// Represents the json array. | ||
78 | /// </summary> | ||
79 | [GeneratedCode("simple-json", "1.0.0")] | ||
80 | [EditorBrowsable(EditorBrowsableState.Never)] | ||
81 | [SuppressMessage("Microsoft.Naming", "CA1710:IdentifiersShouldHaveCorrectSuffix")] | ||
82 | #if SIMPLE_JSON_OBJARRAYINTERNAL | ||
83 | internal | ||
84 | #else | ||
85 | public | ||
86 | #endif | ||
87 | class JsonArray : List<object> | ||
88 | { | ||
89 | /// <summary> | ||
90 | /// Initializes a new instance of the <see cref="JsonArray"/> class. | ||
91 | /// </summary> | ||
92 | public JsonArray() { } | ||
93 | |||
94 | /// <summary> | ||
95 | /// Initializes a new instance of the <see cref="JsonArray"/> class. | ||
96 | /// </summary> | ||
97 | /// <param name="capacity">The capacity of the json array.</param> | ||
98 | public JsonArray(int capacity) : base(capacity) { } | ||
99 | |||
100 | /// <summary> | ||
101 | /// The json representation of the array. | ||
102 | /// </summary> | ||
103 | /// <returns>The json representation of the array.</returns> | ||
104 | public override string ToString() | ||
105 | { | ||
106 | return SimpleJson.SerializeObject(this) ?? string.Empty; | ||
107 | } | ||
108 | } | ||
109 | |||
110 | /// <summary> | ||
111 | /// Represents the json object. | ||
112 | /// </summary> | ||
113 | [GeneratedCode("simple-json", "1.0.0")] | ||
114 | [EditorBrowsable(EditorBrowsableState.Never)] | ||
115 | [SuppressMessage("Microsoft.Naming", "CA1710:IdentifiersShouldHaveCorrectSuffix")] | ||
116 | #if SIMPLE_JSON_OBJARRAYINTERNAL | ||
117 | internal | ||
118 | #else | ||
119 | public | ||
120 | #endif | ||
121 | class JsonObject : | ||
122 | #if SIMPLE_JSON_DYNAMIC | ||
123 | DynamicObject, | ||
124 | #endif | ||
125 | IDictionary<string, object> | ||
126 | { | ||
127 | /// <summary> | ||
128 | /// The internal member dictionary. | ||
129 | /// </summary> | ||
130 | private readonly Dictionary<string, object> _members; | ||
131 | |||
132 | /// <summary> | ||
133 | /// Initializes a new instance of <see cref="JsonObject"/>. | ||
134 | /// </summary> | ||
135 | public JsonObject() | ||
136 | { | ||
137 | _members = new Dictionary<string, object>(); | ||
138 | } | ||
139 | |||
140 | /// <summary> | ||
141 | /// Initializes a new instance of <see cref="JsonObject"/>. | ||
142 | /// </summary> | ||
143 | /// <param name="comparer">The <see cref="T:System.Collections.Generic.IEqualityComparer`1"/> implementation to use when comparing keys, or null to use the default <see cref="T:System.Collections.Generic.EqualityComparer`1"/> for the type of the key.</param> | ||
144 | public JsonObject(IEqualityComparer<string> comparer) | ||
145 | { | ||
146 | _members = new Dictionary<string, object>(comparer); | ||
147 | } | ||
148 | |||
149 | /// <summary> | ||
150 | /// Gets the <see cref="System.Object"/> at the specified index. | ||
151 | /// </summary> | ||
152 | /// <value></value> | ||
153 | public object this[int index] | ||
154 | { | ||
155 | get { return GetAtIndex(_members, index); } | ||
156 | } | ||
157 | |||
158 | internal static object GetAtIndex(IDictionary<string, object> obj, int index) | ||
159 | { | ||
160 | if (obj == null) | ||
161 | throw new ArgumentNullException("obj"); | ||
162 | if (index >= obj.Count) | ||
163 | throw new ArgumentOutOfRangeException("index"); | ||
164 | int i = 0; | ||
165 | foreach (KeyValuePair<string, object> o in obj) | ||
166 | if (i++ == index) return o.Value; | ||
167 | return null; | ||
168 | } | ||
169 | |||
170 | /// <summary> | ||
171 | /// Adds the specified key. | ||
172 | /// </summary> | ||
173 | /// <param name="key">The key.</param> | ||
174 | /// <param name="value">The value.</param> | ||
175 | public void Add(string key, object value) | ||
176 | { | ||
177 | _members.Add(key, value); | ||
178 | } | ||
179 | |||
180 | /// <summary> | ||
181 | /// Determines whether the specified key contains key. | ||
182 | /// </summary> | ||
183 | /// <param name="key">The key.</param> | ||
184 | /// <returns> | ||
185 | /// <c>true</c> if the specified key contains key; otherwise, <c>false</c>. | ||
186 | /// </returns> | ||
187 | public bool ContainsKey(string key) | ||
188 | { | ||
189 | return _members.ContainsKey(key); | ||
190 | } | ||
191 | |||
192 | /// <summary> | ||
193 | /// Gets the keys. | ||
194 | /// </summary> | ||
195 | /// <value>The keys.</value> | ||
196 | public ICollection<string> Keys | ||
197 | { | ||
198 | get { return _members.Keys; } | ||
199 | } | ||
200 | |||
201 | /// <summary> | ||
202 | /// Removes the specified key. | ||
203 | /// </summary> | ||
204 | /// <param name="key">The key.</param> | ||
205 | /// <returns></returns> | ||
206 | public bool Remove(string key) | ||
207 | { | ||
208 | return _members.Remove(key); | ||
209 | } | ||
210 | |||
211 | /// <summary> | ||
212 | /// Tries the get value. | ||
213 | /// </summary> | ||
214 | /// <param name="key">The key.</param> | ||
215 | /// <param name="value">The value.</param> | ||
216 | /// <returns></returns> | ||
217 | public bool TryGetValue(string key, out object value) | ||
218 | { | ||
219 | return _members.TryGetValue(key, out value); | ||
220 | } | ||
221 | |||
222 | /// <summary> | ||
223 | /// Gets the values. | ||
224 | /// </summary> | ||
225 | /// <value>The values.</value> | ||
226 | public ICollection<object> Values | ||
227 | { | ||
228 | get { return _members.Values; } | ||
229 | } | ||
230 | |||
231 | /// <summary> | ||
232 | /// Gets or sets the <see cref="System.Object"/> with the specified key. | ||
233 | /// </summary> | ||
234 | /// <value></value> | ||
235 | public object this[string key] | ||
236 | { | ||
237 | get { return _members[key]; } | ||
238 | set { _members[key] = value; } | ||
239 | } | ||
240 | |||
241 | /// <summary> | ||
242 | /// Adds the specified item. | ||
243 | /// </summary> | ||
244 | /// <param name="item">The item.</param> | ||
245 | public void Add(KeyValuePair<string, object> item) | ||
246 | { | ||
247 | _members.Add(item.Key, item.Value); | ||
248 | } | ||
249 | |||
250 | /// <summary> | ||
251 | /// Clears this instance. | ||
252 | /// </summary> | ||
253 | public void Clear() | ||
254 | { | ||
255 | _members.Clear(); | ||
256 | } | ||
257 | |||
258 | /// <summary> | ||
259 | /// Determines whether [contains] [the specified item]. | ||
260 | /// </summary> | ||
261 | /// <param name="item">The item.</param> | ||
262 | /// <returns> | ||
263 | /// <c>true</c> if [contains] [the specified item]; otherwise, <c>false</c>. | ||
264 | /// </returns> | ||
265 | public bool Contains(KeyValuePair<string, object> item) | ||
266 | { | ||
267 | return _members.ContainsKey(item.Key) && _members[item.Key] == item.Value; | ||
268 | } | ||
269 | |||
270 | /// <summary> | ||
271 | /// Copies to. | ||
272 | /// </summary> | ||
273 | /// <param name="array">The array.</param> | ||
274 | /// <param name="arrayIndex">Index of the array.</param> | ||
275 | public void CopyTo(KeyValuePair<string, object>[] array, int arrayIndex) | ||
276 | { | ||
277 | if (array == null) throw new ArgumentNullException("array"); | ||
278 | int num = Count; | ||
279 | foreach (KeyValuePair<string, object> kvp in this) | ||
280 | { | ||
281 | array[arrayIndex++] = kvp; | ||
282 | if (--num <= 0) | ||
283 | return; | ||
284 | } | ||
285 | } | ||
286 | |||
287 | /// <summary> | ||
288 | /// Gets the count. | ||
289 | /// </summary> | ||
290 | /// <value>The count.</value> | ||
291 | public int Count | ||
292 | { | ||
293 | get { return _members.Count; } | ||
294 | } | ||
295 | |||
296 | /// <summary> | ||
297 | /// Gets a value indicating whether this instance is read only. | ||
298 | /// </summary> | ||
299 | /// <value> | ||
300 | /// <c>true</c> if this instance is read only; otherwise, <c>false</c>. | ||
301 | /// </value> | ||
302 | public bool IsReadOnly | ||
303 | { | ||
304 | get { return false; } | ||
305 | } | ||
306 | |||
307 | /// <summary> | ||
308 | /// Removes the specified item. | ||
309 | /// </summary> | ||
310 | /// <param name="item">The item.</param> | ||
311 | /// <returns></returns> | ||
312 | public bool Remove(KeyValuePair<string, object> item) | ||
313 | { | ||
314 | return _members.Remove(item.Key); | ||
315 | } | ||
316 | |||
317 | /// <summary> | ||
318 | /// Gets the enumerator. | ||
319 | /// </summary> | ||
320 | /// <returns></returns> | ||
321 | public IEnumerator<KeyValuePair<string, object>> GetEnumerator() | ||
322 | { | ||
323 | return _members.GetEnumerator(); | ||
324 | } | ||
325 | |||
326 | /// <summary> | ||
327 | /// Returns an enumerator that iterates through a collection. | ||
328 | /// </summary> | ||
329 | /// <returns> | ||
330 | /// An <see cref="T:System.Collections.IEnumerator"/> object that can be used to iterate through the collection. | ||
331 | /// </returns> | ||
332 | IEnumerator IEnumerable.GetEnumerator() | ||
333 | { | ||
334 | return _members.GetEnumerator(); | ||
335 | } | ||
336 | |||
337 | /// <summary> | ||
338 | /// Returns a json <see cref="T:System.String"/> that represents the current <see cref="T:System.Object"/>. | ||
339 | /// </summary> | ||
340 | /// <returns> | ||
341 | /// A json <see cref="T:System.String"/> that represents the current <see cref="T:System.Object"/>. | ||
342 | /// </returns> | ||
343 | public override string ToString() | ||
344 | { | ||
345 | return SimpleJson.SerializeObject(this); | ||
346 | } | ||
347 | |||
348 | #if SIMPLE_JSON_DYNAMIC | ||
349 | /// <summary> | ||
350 | /// Provides implementation for type conversion operations. Classes derived from the <see cref="T:System.Dynamic.DynamicObject"/> class can override this method to specify dynamic behavior for operations that convert an object from one type to another. | ||
351 | /// </summary> | ||
352 | /// <param name="binder">Provides information about the conversion operation. The binder.Type property provides the type to which the object must be converted. For example, for the statement (String)sampleObject in C# (CType(sampleObject, Type) in Visual Basic), where sampleObject is an instance of the class derived from the <see cref="T:System.Dynamic.DynamicObject"/> class, binder.Type returns the <see cref="T:System.String"/> type. The binder.Explicit property provides information about the kind of conversion that occurs. It returns true for explicit conversion and false for implicit conversion.</param> | ||
353 | /// <param name="result">The result of the type conversion operation.</param> | ||
354 | /// <returns> | ||
355 | /// Alwasy returns true. | ||
356 | /// </returns> | ||
357 | public override bool TryConvert(ConvertBinder binder, out object result) | ||
358 | { | ||
359 | // <pex> | ||
360 | if (binder == null) | ||
361 | throw new ArgumentNullException("binder"); | ||
362 | // </pex> | ||
363 | Type targetType = binder.Type; | ||
364 | |||
365 | if ((targetType == typeof(IEnumerable)) || | ||
366 | (targetType == typeof(IEnumerable<KeyValuePair<string, object>>)) || | ||
367 | (targetType == typeof(IDictionary<string, object>)) || | ||
368 | (targetType == typeof(IDictionary))) | ||
369 | { | ||
370 | result = this; | ||
371 | return true; | ||
372 | } | ||
373 | |||
374 | return base.TryConvert(binder, out result); | ||
375 | } | ||
376 | |||
377 | /// <summary> | ||
378 | /// Provides the implementation for operations that delete an object member. This method is not intended for use in C# or Visual Basic. | ||
379 | /// </summary> | ||
380 | /// <param name="binder">Provides information about the deletion.</param> | ||
381 | /// <returns> | ||
382 | /// Alwasy returns true. | ||
383 | /// </returns> | ||
384 | public override bool TryDeleteMember(DeleteMemberBinder binder) | ||
385 | { | ||
386 | // <pex> | ||
387 | if (binder == null) | ||
388 | throw new ArgumentNullException("binder"); | ||
389 | // </pex> | ||
390 | return _members.Remove(binder.Name); | ||
391 | } | ||
392 | |||
393 | /// <summary> | ||
394 | /// Provides the implementation for operations that get a value by index. Classes derived from the <see cref="T:System.Dynamic.DynamicObject"/> class can override this method to specify dynamic behavior for indexing operations. | ||
395 | /// </summary> | ||
396 | /// <param name="binder">Provides information about the operation.</param> | ||
397 | /// <param name="indexes">The indexes that are used in the operation. For example, for the sampleObject[3] operation in C# (sampleObject(3) in Visual Basic), where sampleObject is derived from the DynamicObject class, <paramref name="indexes"/> is equal to 3.</param> | ||
398 | /// <param name="result">The result of the index operation.</param> | ||
399 | /// <returns> | ||
400 | /// Alwasy returns true. | ||
401 | /// </returns> | ||
402 | public override bool TryGetIndex(GetIndexBinder binder, object[] indexes, out object result) | ||
403 | { | ||
404 | if (indexes == null) throw new ArgumentNullException("indexes"); | ||
405 | if (indexes.Length == 1) | ||
406 | { | ||
407 | result = ((IDictionary<string, object>)this)[(string)indexes[0]]; | ||
408 | return true; | ||
409 | } | ||
410 | result = null; | ||
411 | return true; | ||
412 | } | ||
413 | |||
414 | /// <summary> | ||
415 | /// Provides the implementation for operations that get member values. Classes derived from the <see cref="T:System.Dynamic.DynamicObject"/> class can override this method to specify dynamic behavior for operations such as getting a value for a property. | ||
416 | /// </summary> | ||
417 | /// <param name="binder">Provides information about the object that called the dynamic operation. The binder.Name property provides the name of the member on which the dynamic operation is performed. For example, for the Console.WriteLine(sampleObject.SampleProperty) statement, where sampleObject is an instance of the class derived from the <see cref="T:System.Dynamic.DynamicObject"/> class, binder.Name returns "SampleProperty". The binder.IgnoreCase property specifies whether the member name is case-sensitive.</param> | ||
418 | /// <param name="result">The result of the get operation. For example, if the method is called for a property, you can assign the property value to <paramref name="result"/>.</param> | ||
419 | /// <returns> | ||
420 | /// Alwasy returns true. | ||
421 | /// </returns> | ||
422 | public override bool TryGetMember(GetMemberBinder binder, out object result) | ||
423 | { | ||
424 | object value; | ||
425 | if (_members.TryGetValue(binder.Name, out value)) | ||
426 | { | ||
427 | result = value; | ||
428 | return true; | ||
429 | } | ||
430 | result = null; | ||
431 | return true; | ||
432 | } | ||
433 | |||
434 | /// <summary> | ||
435 | /// Provides the implementation for operations that set a value by index. Classes derived from the <see cref="T:System.Dynamic.DynamicObject"/> class can override this method to specify dynamic behavior for operations that access objects by a specified index. | ||
436 | /// </summary> | ||
437 | /// <param name="binder">Provides information about the operation.</param> | ||
438 | /// <param name="indexes">The indexes that are used in the operation. For example, for the sampleObject[3] = 10 operation in C# (sampleObject(3) = 10 in Visual Basic), where sampleObject is derived from the <see cref="T:System.Dynamic.DynamicObject"/> class, <paramref name="indexes"/> is equal to 3.</param> | ||
439 | /// <param name="value">The value to set to the object that has the specified index. For example, for the sampleObject[3] = 10 operation in C# (sampleObject(3) = 10 in Visual Basic), where sampleObject is derived from the <see cref="T:System.Dynamic.DynamicObject"/> class, <paramref name="value"/> is equal to 10.</param> | ||
440 | /// <returns> | ||
441 | /// true if the operation is successful; otherwise, false. If this method returns false, the run-time binder of the language determines the behavior. (In most cases, a language-specific run-time exception is thrown. | ||
442 | /// </returns> | ||
443 | public override bool TrySetIndex(SetIndexBinder binder, object[] indexes, object value) | ||
444 | { | ||
445 | if (indexes == null) throw new ArgumentNullException("indexes"); | ||
446 | if (indexes.Length == 1) | ||
447 | { | ||
448 | ((IDictionary<string, object>)this)[(string)indexes[0]] = value; | ||
449 | return true; | ||
450 | } | ||
451 | return base.TrySetIndex(binder, indexes, value); | ||
452 | } | ||
453 | |||
454 | /// <summary> | ||
455 | /// Provides the implementation for operations that set member values. Classes derived from the <see cref="T:System.Dynamic.DynamicObject"/> class can override this method to specify dynamic behavior for operations such as setting a value for a property. | ||
456 | /// </summary> | ||
457 | /// <param name="binder">Provides information about the object that called the dynamic operation. The binder.Name property provides the name of the member to which the value is being assigned. For example, for the statement sampleObject.SampleProperty = "Test", where sampleObject is an instance of the class derived from the <see cref="T:System.Dynamic.DynamicObject"/> class, binder.Name returns "SampleProperty". The binder.IgnoreCase property specifies whether the member name is case-sensitive.</param> | ||
458 | /// <param name="value">The value to set to the member. For example, for sampleObject.SampleProperty = "Test", where sampleObject is an instance of the class derived from the <see cref="T:System.Dynamic.DynamicObject"/> class, the <paramref name="value"/> is "Test".</param> | ||
459 | /// <returns> | ||
460 | /// true if the operation is successful; otherwise, false. If this method returns false, the run-time binder of the language determines the behavior. (In most cases, a language-specific run-time exception is thrown.) | ||
461 | /// </returns> | ||
462 | public override bool TrySetMember(SetMemberBinder binder, object value) | ||
463 | { | ||
464 | // <pex> | ||
465 | if (binder == null) | ||
466 | throw new ArgumentNullException("binder"); | ||
467 | // </pex> | ||
468 | _members[binder.Name] = value; | ||
469 | return true; | ||
470 | } | ||
471 | |||
472 | /// <summary> | ||
473 | /// Returns the enumeration of all dynamic member names. | ||
474 | /// </summary> | ||
475 | /// <returns> | ||
476 | /// A sequence that contains dynamic member names. | ||
477 | /// </returns> | ||
478 | public override IEnumerable<string> GetDynamicMemberNames() | ||
479 | { | ||
480 | foreach (var key in Keys) | ||
481 | yield return key; | ||
482 | } | ||
483 | #endif | ||
484 | } | ||
485 | } | ||
486 | |||
487 | namespace SimpleJson | ||
488 | { | ||
489 | /// <summary> | ||
490 | /// This class encodes and decodes JSON strings. | ||
491 | /// Spec. details, see http://www.json.org/ | ||
492 | /// | ||
493 | /// JSON uses Arrays and Objects. These correspond here to the datatypes JsonArray(IList<object>) and JsonObject(IDictionary<string,object>). | ||
494 | /// All numbers are parsed to doubles. | ||
495 | /// </summary> | ||
496 | [GeneratedCode("simple-json", "1.0.0")] | ||
497 | #if SIMPLE_JSON_INTERNAL | ||
498 | internal | ||
499 | #else | ||
500 | public | ||
501 | #endif | ||
502 | static class SimpleJson | ||
503 | { | ||
504 | private const int TOKEN_NONE = 0; | ||
505 | private const int TOKEN_CURLY_OPEN = 1; | ||
506 | private const int TOKEN_CURLY_CLOSE = 2; | ||
507 | private const int TOKEN_SQUARED_OPEN = 3; | ||
508 | private const int TOKEN_SQUARED_CLOSE = 4; | ||
509 | private const int TOKEN_COLON = 5; | ||
510 | private const int TOKEN_COMMA = 6; | ||
511 | private const int TOKEN_STRING = 7; | ||
512 | private const int TOKEN_NUMBER = 8; | ||
513 | private const int TOKEN_TRUE = 9; | ||
514 | private const int TOKEN_FALSE = 10; | ||
515 | private const int TOKEN_NULL = 11; | ||
516 | private const int BUILDER_CAPACITY = 2000; | ||
517 | |||
518 | private static readonly char[] EscapeTable; | ||
519 | private static readonly char[] EscapeCharacters = new char[] { '"', '\\', '\b', '\f', '\n', '\r', '\t' }; | ||
520 | private static readonly string EscapeCharactersString = new string(EscapeCharacters); | ||
521 | |||
522 | static SimpleJson() | ||
523 | { | ||
524 | EscapeTable = new char[93]; | ||
525 | EscapeTable['"'] = '"'; | ||
526 | EscapeTable['\\'] = '\\'; | ||
527 | EscapeTable['\b'] = 'b'; | ||
528 | EscapeTable['\f'] = 'f'; | ||
529 | EscapeTable['\n'] = 'n'; | ||
530 | EscapeTable['\r'] = 'r'; | ||
531 | EscapeTable['\t'] = 't'; | ||
532 | } | ||
533 | |||
534 | /// <summary> | ||
535 | /// Parses the string json into a value | ||
536 | /// </summary> | ||
537 | /// <param name="json">A JSON string.</param> | ||
538 | /// <returns>An IList<object>, a IDictionary<string,object>, a double, a string, null, true, or false</returns> | ||
539 | public static object DeserializeObject(string json) | ||
540 | { | ||
541 | object obj; | ||
542 | if (TryDeserializeObject(json, out obj)) | ||
543 | return obj; | ||
544 | throw new SerializationException("Invalid JSON string"); | ||
545 | } | ||
546 | |||
547 | /// <summary> | ||
548 | /// Try parsing the json string into a value. | ||
549 | /// </summary> | ||
550 | /// <param name="json"> | ||
551 | /// A JSON string. | ||
552 | /// </param> | ||
553 | /// <param name="obj"> | ||
554 | /// The object. | ||
555 | /// </param> | ||
556 | /// <returns> | ||
557 | /// Returns true if successfull otherwise false. | ||
558 | /// </returns> | ||
559 | [SuppressMessage("Microsoft.Design", "CA1007:UseGenericsWhereAppropriate", Justification = "Need to support .NET 2")] | ||
560 | public static bool TryDeserializeObject(string json, out object obj) | ||
561 | { | ||
562 | bool success = true; | ||
563 | if (json != null) | ||
564 | { | ||
565 | char[] charArray = json.ToCharArray(); | ||
566 | int index = 0; | ||
567 | obj = ParseValue(charArray, ref index, ref success); | ||
568 | } | ||
569 | else | ||
570 | obj = null; | ||
571 | |||
572 | return success; | ||
573 | } | ||
574 | |||
575 | public static object DeserializeObject(string json, Type type, IJsonSerializerStrategy jsonSerializerStrategy) | ||
576 | { | ||
577 | object jsonObject = DeserializeObject(json); | ||
578 | return type == null || jsonObject != null && ReflectionUtils.IsAssignableFrom(jsonObject.GetType(), type) | ||
579 | ? jsonObject | ||
580 | : (jsonSerializerStrategy ?? CurrentJsonSerializerStrategy).DeserializeObject(jsonObject, type); | ||
581 | } | ||
582 | |||
583 | public static object DeserializeObject(string json, Type type) | ||
584 | { | ||
585 | return DeserializeObject(json, type, null); | ||
586 | } | ||
587 | |||
588 | public static T DeserializeObject<T>(string json, IJsonSerializerStrategy jsonSerializerStrategy) | ||
589 | { | ||
590 | return (T)DeserializeObject(json, typeof(T), jsonSerializerStrategy); | ||
591 | } | ||
592 | |||
593 | public static T DeserializeObject<T>(string json) | ||
594 | { | ||
595 | return (T)DeserializeObject(json, typeof(T), null); | ||
596 | } | ||
597 | |||
598 | /// <summary> | ||
599 | /// Converts a IDictionary<string,object> / IList<object> object into a JSON string | ||
600 | /// </summary> | ||
601 | /// <param name="json">A IDictionary<string,object> / IList<object></param> | ||
602 | /// <param name="jsonSerializerStrategy">Serializer strategy to use</param> | ||
603 | /// <returns>A JSON encoded string, or null if object 'json' is not serializable</returns> | ||
604 | public static string SerializeObject(object json, IJsonSerializerStrategy jsonSerializerStrategy) | ||
605 | { | ||
606 | StringBuilder builder = new StringBuilder(BUILDER_CAPACITY); | ||
607 | bool success = SerializeValue(jsonSerializerStrategy, json, builder); | ||
608 | return (success ? builder.ToString() : null); | ||
609 | } | ||
610 | |||
611 | public static string SerializeObject(object json) | ||
612 | { | ||
613 | return SerializeObject(json, CurrentJsonSerializerStrategy); | ||
614 | } | ||
615 | |||
616 | public static string EscapeToJavascriptString(string jsonString) | ||
617 | { | ||
618 | if (string.IsNullOrEmpty(jsonString)) | ||
619 | return jsonString; | ||
620 | |||
621 | StringBuilder sb = new StringBuilder(); | ||
622 | char c; | ||
623 | |||
624 | for (int i = 0; i < jsonString.Length;) | ||
625 | { | ||
626 | c = jsonString[i++]; | ||
627 | |||
628 | if (c == '\\') | ||
629 | { | ||
630 | int remainingLength = jsonString.Length - i; | ||
631 | if (remainingLength >= 2) | ||
632 | { | ||
633 | char lookahead = jsonString[i]; | ||
634 | if (lookahead == '\\') | ||
635 | { | ||
636 | sb.Append('\\'); | ||
637 | ++i; | ||
638 | } | ||
639 | else if (lookahead == '"') | ||
640 | { | ||
641 | sb.Append("\""); | ||
642 | ++i; | ||
643 | } | ||
644 | else if (lookahead == 't') | ||
645 | { | ||
646 | sb.Append('\t'); | ||
647 | ++i; | ||
648 | } | ||
649 | else if (lookahead == 'b') | ||
650 | { | ||
651 | sb.Append('\b'); | ||
652 | ++i; | ||
653 | } | ||
654 | else if (lookahead == 'n') | ||
655 | { | ||
656 | sb.Append('\n'); | ||
657 | ++i; | ||
658 | } | ||
659 | else if (lookahead == 'r') | ||
660 | { | ||
661 | sb.Append('\r'); | ||
662 | ++i; | ||
663 | } | ||
664 | } | ||
665 | } | ||
666 | else | ||
667 | { | ||
668 | sb.Append(c); | ||
669 | } | ||
670 | } | ||
671 | return sb.ToString(); | ||
672 | } | ||
673 | |||
674 | static IDictionary<string, object> ParseObject(char[] json, ref int index, ref bool success) | ||
675 | { | ||
676 | IDictionary<string, object> table = new JsonObject(); | ||
677 | int token; | ||
678 | |||
679 | // { | ||
680 | NextToken(json, ref index); | ||
681 | |||
682 | bool done = false; | ||
683 | while (!done) | ||
684 | { | ||
685 | token = LookAhead(json, index); | ||
686 | if (token == TOKEN_NONE) | ||
687 | { | ||
688 | success = false; | ||
689 | return null; | ||
690 | } | ||
691 | else if (token == TOKEN_COMMA) | ||
692 | NextToken(json, ref index); | ||
693 | else if (token == TOKEN_CURLY_CLOSE) | ||
694 | { | ||
695 | NextToken(json, ref index); | ||
696 | return table; | ||
697 | } | ||
698 | else | ||
699 | { | ||
700 | // name | ||
701 | string name = ParseString(json, ref index, ref success); | ||
702 | if (!success) | ||
703 | { | ||
704 | success = false; | ||
705 | return null; | ||
706 | } | ||
707 | // : | ||
708 | token = NextToken(json, ref index); | ||
709 | if (token != TOKEN_COLON) | ||
710 | { | ||
711 | success = false; | ||
712 | return null; | ||
713 | } | ||
714 | // value | ||
715 | object value = ParseValue(json, ref index, ref success); | ||
716 | if (!success) | ||
717 | { | ||
718 | success = false; | ||
719 | return null; | ||
720 | } | ||
721 | table[name] = value; | ||
722 | } | ||
723 | } | ||
724 | return table; | ||
725 | } | ||
726 | |||
727 | static JsonArray ParseArray(char[] json, ref int index, ref bool success) | ||
728 | { | ||
729 | JsonArray array = new JsonArray(); | ||
730 | |||
731 | // [ | ||
732 | NextToken(json, ref index); | ||
733 | |||
734 | bool done = false; | ||
735 | while (!done) | ||
736 | { | ||
737 | int token = LookAhead(json, index); | ||
738 | if (token == TOKEN_NONE) | ||
739 | { | ||
740 | success = false; | ||
741 | return null; | ||
742 | } | ||
743 | else if (token == TOKEN_COMMA) | ||
744 | NextToken(json, ref index); | ||
745 | else if (token == TOKEN_SQUARED_CLOSE) | ||
746 | { | ||
747 | NextToken(json, ref index); | ||
748 | break; | ||
749 | } | ||
750 | else | ||
751 | { | ||
752 | object value = ParseValue(json, ref index, ref success); | ||
753 | if (!success) | ||
754 | return null; | ||
755 | array.Add(value); | ||
756 | } | ||
757 | } | ||
758 | return array; | ||
759 | } | ||
760 | |||
761 | static object ParseValue(char[] json, ref int index, ref bool success) | ||
762 | { | ||
763 | switch (LookAhead(json, index)) | ||
764 | { | ||
765 | case TOKEN_STRING: | ||
766 | return ParseString(json, ref index, ref success); | ||
767 | case TOKEN_NUMBER: | ||
768 | return ParseNumber(json, ref index, ref success); | ||
769 | case TOKEN_CURLY_OPEN: | ||
770 | return ParseObject(json, ref index, ref success); | ||
771 | case TOKEN_SQUARED_OPEN: | ||
772 | return ParseArray(json, ref index, ref success); | ||
773 | case TOKEN_TRUE: | ||
774 | NextToken(json, ref index); | ||
775 | return true; | ||
776 | case TOKEN_FALSE: | ||
777 | NextToken(json, ref index); | ||
778 | return false; | ||
779 | case TOKEN_NULL: | ||
780 | NextToken(json, ref index); | ||
781 | return null; | ||
782 | case TOKEN_NONE: | ||
783 | break; | ||
784 | } | ||
785 | success = false; | ||
786 | return null; | ||
787 | } | ||
788 | |||
789 | static string ParseString(char[] json, ref int index, ref bool success) | ||
790 | { | ||
791 | StringBuilder s = new StringBuilder(BUILDER_CAPACITY); | ||
792 | char c; | ||
793 | |||
794 | EatWhitespace(json, ref index); | ||
795 | |||
796 | // " | ||
797 | c = json[index++]; | ||
798 | bool complete = false; | ||
799 | while (!complete) | ||
800 | { | ||
801 | if (index == json.Length) | ||
802 | break; | ||
803 | |||
804 | c = json[index++]; | ||
805 | if (c == '"') | ||
806 | { | ||
807 | complete = true; | ||
808 | break; | ||
809 | } | ||
810 | else if (c == '\\') | ||
811 | { | ||
812 | if (index == json.Length) | ||
813 | break; | ||
814 | c = json[index++]; | ||
815 | if (c == '"') | ||
816 | s.Append('"'); | ||
817 | else if (c == '\\') | ||
818 | s.Append('\\'); | ||
819 | else if (c == '/') | ||
820 | s.Append('/'); | ||
821 | else if (c == 'b') | ||
822 | s.Append('\b'); | ||
823 | else if (c == 'f') | ||
824 | s.Append('\f'); | ||
825 | else if (c == 'n') | ||
826 | s.Append('\n'); | ||
827 | else if (c == 'r') | ||
828 | s.Append('\r'); | ||
829 | else if (c == 't') | ||
830 | s.Append('\t'); | ||
831 | else if (c == 'u') | ||
832 | { | ||
833 | int remainingLength = json.Length - index; | ||
834 | if (remainingLength >= 4) | ||
835 | { | ||
836 | // parse the 32 bit hex into an integer codepoint | ||
837 | uint codePoint; | ||
838 | if (!(success = UInt32.TryParse(new string(json, index, 4), NumberStyles.HexNumber, CultureInfo.InvariantCulture, out codePoint))) | ||
839 | return ""; | ||
840 | |||
841 | // convert the integer codepoint to a unicode char and add to string | ||
842 | if (0xD800 <= codePoint && codePoint <= 0xDBFF) // if high surrogate | ||
843 | { | ||
844 | index += 4; // skip 4 chars | ||
845 | remainingLength = json.Length - index; | ||
846 | if (remainingLength >= 6) | ||
847 | { | ||
848 | uint lowCodePoint; | ||
849 | if (new string(json, index, 2) == "\\u" && UInt32.TryParse(new string(json, index + 2, 4), NumberStyles.HexNumber, CultureInfo.InvariantCulture, out lowCodePoint)) | ||
850 | { | ||
851 | if (0xDC00 <= lowCodePoint && lowCodePoint <= 0xDFFF) // if low surrogate | ||
852 | { | ||
853 | s.Append((char)codePoint); | ||
854 | s.Append((char)lowCodePoint); | ||
855 | index += 6; // skip 6 chars | ||
856 | continue; | ||
857 | } | ||
858 | } | ||
859 | } | ||
860 | success = false; // invalid surrogate pair | ||
861 | return ""; | ||
862 | } | ||
863 | s.Append(ConvertFromUtf32((int)codePoint)); | ||
864 | // skip 4 chars | ||
865 | index += 4; | ||
866 | } | ||
867 | else | ||
868 | break; | ||
869 | } | ||
870 | } | ||
871 | else | ||
872 | s.Append(c); | ||
873 | } | ||
874 | if (!complete) | ||
875 | { | ||
876 | success = false; | ||
877 | return null; | ||
878 | } | ||
879 | return s.ToString(); | ||
880 | } | ||
881 | |||
882 | private static string ConvertFromUtf32(int utf32) | ||
883 | { | ||
884 | // http://www.java2s.com/Open-Source/CSharp/2.6.4-mono-.net-core/System/System/Char.cs.htm | ||
885 | if (utf32 < 0 || utf32 > 0x10FFFF) | ||
886 | throw new ArgumentOutOfRangeException("utf32", "The argument must be from 0 to 0x10FFFF."); | ||
887 | if (0xD800 <= utf32 && utf32 <= 0xDFFF) | ||
888 | throw new ArgumentOutOfRangeException("utf32", "The argument must not be in surrogate pair range."); | ||
889 | if (utf32 < 0x10000) | ||
890 | return new string((char)utf32, 1); | ||
891 | utf32 -= 0x10000; | ||
892 | return new string(new char[] { (char)((utf32 >> 10) + 0xD800), (char)(utf32 % 0x0400 + 0xDC00) }); | ||
893 | } | ||
894 | |||
895 | static object ParseNumber(char[] json, ref int index, ref bool success) | ||
896 | { | ||
897 | EatWhitespace(json, ref index); | ||
898 | int lastIndex = GetLastIndexOfNumber(json, index); | ||
899 | int charLength = (lastIndex - index) + 1; | ||
900 | object returnNumber; | ||
901 | string str = new string(json, index, charLength); | ||
902 | if (str.IndexOf(".", StringComparison.OrdinalIgnoreCase) != -1 || str.IndexOf("e", StringComparison.OrdinalIgnoreCase) != -1) | ||
903 | { | ||
904 | double number; | ||
905 | success = double.TryParse(new string(json, index, charLength), NumberStyles.Any, CultureInfo.InvariantCulture, out number); | ||
906 | returnNumber = number; | ||
907 | } | ||
908 | else | ||
909 | { | ||
910 | long number; | ||
911 | success = long.TryParse(new string(json, index, charLength), NumberStyles.Any, CultureInfo.InvariantCulture, out number); | ||
912 | returnNumber = number; | ||
913 | } | ||
914 | index = lastIndex + 1; | ||
915 | return returnNumber; | ||
916 | } | ||
917 | |||
918 | static int GetLastIndexOfNumber(char[] json, int index) | ||
919 | { | ||
920 | int lastIndex; | ||
921 | for (lastIndex = index; lastIndex < json.Length; lastIndex++) | ||
922 | if ("0123456789+-.eE".IndexOf(json[lastIndex]) == -1) break; | ||
923 | return lastIndex - 1; | ||
924 | } | ||
925 | |||
926 | static void EatWhitespace(char[] json, ref int index) | ||
927 | { | ||
928 | for (; index < json.Length; index++) | ||
929 | if (" \t\n\r\b\f".IndexOf(json[index]) == -1) break; | ||
930 | } | ||
931 | |||
932 | static int LookAhead(char[] json, int index) | ||
933 | { | ||
934 | int saveIndex = index; | ||
935 | return NextToken(json, ref saveIndex); | ||
936 | } | ||
937 | |||
938 | [SuppressMessage("Microsoft.Maintainability", "CA1502:AvoidExcessiveComplexity")] | ||
939 | static int NextToken(char[] json, ref int index) | ||
940 | { | ||
941 | EatWhitespace(json, ref index); | ||
942 | if (index == json.Length) | ||
943 | return TOKEN_NONE; | ||
944 | char c = json[index]; | ||
945 | index++; | ||
946 | switch (c) | ||
947 | { | ||
948 | case '{': | ||
949 | return TOKEN_CURLY_OPEN; | ||
950 | case '}': | ||
951 | return TOKEN_CURLY_CLOSE; | ||
952 | case '[': | ||
953 | return TOKEN_SQUARED_OPEN; | ||
954 | case ']': | ||
955 | return TOKEN_SQUARED_CLOSE; | ||
956 | case ',': | ||
957 | return TOKEN_COMMA; | ||
958 | case '"': | ||
959 | return TOKEN_STRING; | ||
960 | case '0': | ||
961 | case '1': | ||
962 | case '2': | ||
963 | case '3': | ||
964 | case '4': | ||
965 | case '5': | ||
966 | case '6': | ||
967 | case '7': | ||
968 | case '8': | ||
969 | case '9': | ||
970 | case '-': | ||
971 | return TOKEN_NUMBER; | ||
972 | case ':': | ||
973 | return TOKEN_COLON; | ||
974 | } | ||
975 | index--; | ||
976 | int remainingLength = json.Length - index; | ||
977 | // false | ||
978 | if (remainingLength >= 5) | ||
979 | { | ||
980 | if (json[index] == 'f' && json[index + 1] == 'a' && json[index + 2] == 'l' && json[index + 3] == 's' && json[index + 4] == 'e') | ||
981 | { | ||
982 | index += 5; | ||
983 | return TOKEN_FALSE; | ||
984 | } | ||
985 | } | ||
986 | // true | ||
987 | if (remainingLength >= 4) | ||
988 | { | ||
989 | if (json[index] == 't' && json[index + 1] == 'r' && json[index + 2] == 'u' && json[index + 3] == 'e') | ||
990 | { | ||
991 | index += 4; | ||
992 | return TOKEN_TRUE; | ||
993 | } | ||
994 | } | ||
995 | // null | ||
996 | if (remainingLength >= 4) | ||
997 | { | ||
998 | if (json[index] == 'n' && json[index + 1] == 'u' && json[index + 2] == 'l' && json[index + 3] == 'l') | ||
999 | { | ||
1000 | index += 4; | ||
1001 | return TOKEN_NULL; | ||
1002 | } | ||
1003 | } | ||
1004 | return TOKEN_NONE; | ||
1005 | } | ||
1006 | |||
1007 | static bool SerializeValue(IJsonSerializerStrategy jsonSerializerStrategy, object value, StringBuilder builder) | ||
1008 | { | ||
1009 | bool success = true; | ||
1010 | string stringValue = value as string; | ||
1011 | if (stringValue != null) | ||
1012 | success = SerializeString(stringValue, builder); | ||
1013 | else | ||
1014 | { | ||
1015 | IDictionary<string, object> dict = value as IDictionary<string, object>; | ||
1016 | if (dict != null) | ||
1017 | { | ||
1018 | success = SerializeObject(jsonSerializerStrategy, dict.Keys, dict.Values, builder); | ||
1019 | } | ||
1020 | else | ||
1021 | { | ||
1022 | IDictionary<string, string> stringDictionary = value as IDictionary<string, string>; | ||
1023 | if (stringDictionary != null) | ||
1024 | { | ||
1025 | success = SerializeObject(jsonSerializerStrategy, stringDictionary.Keys, stringDictionary.Values, builder); | ||
1026 | } | ||
1027 | else | ||
1028 | { | ||
1029 | IEnumerable enumerableValue = value as IEnumerable; | ||
1030 | if (enumerableValue != null) | ||
1031 | success = SerializeArray(jsonSerializerStrategy, enumerableValue, builder); | ||
1032 | else if (IsNumeric(value)) | ||
1033 | success = SerializeNumber(value, builder); | ||
1034 | else if (value is bool) | ||
1035 | builder.Append((bool)value ? "true" : "false"); | ||
1036 | else if (value == null) | ||
1037 | builder.Append("null"); | ||
1038 | else | ||
1039 | { | ||
1040 | object serializedObject; | ||
1041 | success = jsonSerializerStrategy.TrySerializeNonPrimitiveObject(value, out serializedObject); | ||
1042 | if (success) | ||
1043 | SerializeValue(jsonSerializerStrategy, serializedObject, builder); | ||
1044 | } | ||
1045 | } | ||
1046 | } | ||
1047 | } | ||
1048 | return success; | ||
1049 | } | ||
1050 | |||
1051 | static bool SerializeObject(IJsonSerializerStrategy jsonSerializerStrategy, IEnumerable keys, IEnumerable values, StringBuilder builder) | ||
1052 | { | ||
1053 | builder.Append("{"); | ||
1054 | IEnumerator ke = keys.GetEnumerator(); | ||
1055 | IEnumerator ve = values.GetEnumerator(); | ||
1056 | bool first = true; | ||
1057 | while (ke.MoveNext() && ve.MoveNext()) | ||
1058 | { | ||
1059 | object key = ke.Current; | ||
1060 | object value = ve.Current; | ||
1061 | if (!first) | ||
1062 | builder.Append(","); | ||
1063 | string stringKey = key as string; | ||
1064 | if (stringKey != null) | ||
1065 | SerializeString(stringKey, builder); | ||
1066 | else | ||
1067 | if (!SerializeValue(jsonSerializerStrategy, value, builder)) return false; | ||
1068 | builder.Append(":"); | ||
1069 | if (!SerializeValue(jsonSerializerStrategy, value, builder)) | ||
1070 | return false; | ||
1071 | first = false; | ||
1072 | } | ||
1073 | builder.Append("}"); | ||
1074 | return true; | ||
1075 | } | ||
1076 | |||
1077 | static bool SerializeArray(IJsonSerializerStrategy jsonSerializerStrategy, IEnumerable anArray, StringBuilder builder) | ||
1078 | { | ||
1079 | builder.Append("["); | ||
1080 | bool first = true; | ||
1081 | foreach (object value in anArray) | ||
1082 | { | ||
1083 | if (!first) | ||
1084 | builder.Append(","); | ||
1085 | if (!SerializeValue(jsonSerializerStrategy, value, builder)) | ||
1086 | return false; | ||
1087 | first = false; | ||
1088 | } | ||
1089 | builder.Append("]"); | ||
1090 | return true; | ||
1091 | } | ||
1092 | |||
1093 | static bool SerializeString(string aString, StringBuilder builder) | ||
1094 | { | ||
1095 | // Happy path if there's nothing to be escaped. IndexOfAny is highly optimized (and unmanaged) | ||
1096 | if (aString.IndexOfAny(EscapeCharacters) == -1) | ||
1097 | { | ||
1098 | builder.Append('"'); | ||
1099 | builder.Append(aString); | ||
1100 | builder.Append('"'); | ||
1101 | |||
1102 | return true; | ||
1103 | } | ||
1104 | |||
1105 | builder.Append('"'); | ||
1106 | int safeCharacterCount = 0; | ||
1107 | char[] charArray = aString.ToCharArray(); | ||
1108 | |||
1109 | for (int i = 0; i < charArray.Length; i++) | ||
1110 | { | ||
1111 | char c = charArray[i]; | ||
1112 | |||
1113 | // Non ascii characters are fine, buffer them up and send them to the builder | ||
1114 | // in larger chunks if possible. The escape table is a 1:1 translation table | ||
1115 | // with \0 [default(char)] denoting a safe character. | ||
1116 | if (c >= EscapeTable.Length || EscapeTable[c] == default(char)) | ||
1117 | { | ||
1118 | safeCharacterCount++; | ||
1119 | } | ||
1120 | else | ||
1121 | { | ||
1122 | if (safeCharacterCount > 0) | ||
1123 | { | ||
1124 | builder.Append(charArray, i - safeCharacterCount, safeCharacterCount); | ||
1125 | safeCharacterCount = 0; | ||
1126 | } | ||
1127 | |||
1128 | builder.Append('\\'); | ||
1129 | builder.Append(EscapeTable[c]); | ||
1130 | } | ||
1131 | } | ||
1132 | |||
1133 | if (safeCharacterCount > 0) | ||
1134 | { | ||
1135 | builder.Append(charArray, charArray.Length - safeCharacterCount, safeCharacterCount); | ||
1136 | } | ||
1137 | |||
1138 | builder.Append('"'); | ||
1139 | return true; | ||
1140 | } | ||
1141 | |||
1142 | static bool SerializeNumber(object number, StringBuilder builder) | ||
1143 | { | ||
1144 | if (number is long) | ||
1145 | builder.Append(((long)number).ToString(CultureInfo.InvariantCulture)); | ||
1146 | else if (number is ulong) | ||
1147 | builder.Append(((ulong)number).ToString(CultureInfo.InvariantCulture)); | ||
1148 | else if (number is int) | ||
1149 | builder.Append(((int)number).ToString(CultureInfo.InvariantCulture)); | ||
1150 | else if (number is uint) | ||
1151 | builder.Append(((uint)number).ToString(CultureInfo.InvariantCulture)); | ||
1152 | else if (number is decimal) | ||
1153 | builder.Append(((decimal)number).ToString(CultureInfo.InvariantCulture)); | ||
1154 | else if (number is float) | ||
1155 | builder.Append(((float)number).ToString(CultureInfo.InvariantCulture)); | ||
1156 | else | ||
1157 | builder.Append(Convert.ToDouble(number, CultureInfo.InvariantCulture).ToString("r", CultureInfo.InvariantCulture)); | ||
1158 | return true; | ||
1159 | } | ||
1160 | |||
1161 | /// <summary> | ||
1162 | /// Determines if a given object is numeric in any way | ||
1163 | /// (can be integer, double, null, etc). | ||
1164 | /// </summary> | ||
1165 | static bool IsNumeric(object value) | ||
1166 | { | ||
1167 | if (value is sbyte) return true; | ||
1168 | if (value is byte) return true; | ||
1169 | if (value is short) return true; | ||
1170 | if (value is ushort) return true; | ||
1171 | if (value is int) return true; | ||
1172 | if (value is uint) return true; | ||
1173 | if (value is long) return true; | ||
1174 | if (value is ulong) return true; | ||
1175 | if (value is float) return true; | ||
1176 | if (value is double) return true; | ||
1177 | if (value is decimal) return true; | ||
1178 | return false; | ||
1179 | } | ||
1180 | |||
1181 | private static IJsonSerializerStrategy _currentJsonSerializerStrategy; | ||
1182 | public static IJsonSerializerStrategy CurrentJsonSerializerStrategy | ||
1183 | { | ||
1184 | get | ||
1185 | { | ||
1186 | return _currentJsonSerializerStrategy ?? | ||
1187 | (_currentJsonSerializerStrategy = | ||
1188 | #if SIMPLE_JSON_DATACONTRACT | ||
1189 | DataContractJsonSerializerStrategy | ||
1190 | #else | ||
1191 | PocoJsonSerializerStrategy | ||
1192 | #endif | ||
1193 | ); | ||
1194 | } | ||
1195 | set | ||
1196 | { | ||
1197 | _currentJsonSerializerStrategy = value; | ||
1198 | } | ||
1199 | } | ||
1200 | |||
1201 | private static PocoJsonSerializerStrategy _pocoJsonSerializerStrategy; | ||
1202 | [EditorBrowsable(EditorBrowsableState.Advanced)] | ||
1203 | public static PocoJsonSerializerStrategy PocoJsonSerializerStrategy | ||
1204 | { | ||
1205 | get | ||
1206 | { | ||
1207 | return _pocoJsonSerializerStrategy ?? (_pocoJsonSerializerStrategy = new PocoJsonSerializerStrategy()); | ||
1208 | } | ||
1209 | } | ||
1210 | |||
1211 | #if SIMPLE_JSON_DATACONTRACT | ||
1212 | |||
1213 | private static DataContractJsonSerializerStrategy _dataContractJsonSerializerStrategy; | ||
1214 | [System.ComponentModel.EditorBrowsable(EditorBrowsableState.Advanced)] | ||
1215 | public static DataContractJsonSerializerStrategy DataContractJsonSerializerStrategy | ||
1216 | { | ||
1217 | get | ||
1218 | { | ||
1219 | return _dataContractJsonSerializerStrategy ?? (_dataContractJsonSerializerStrategy = new DataContractJsonSerializerStrategy()); | ||
1220 | } | ||
1221 | } | ||
1222 | |||
1223 | #endif | ||
1224 | } | ||
1225 | |||
1226 | [GeneratedCode("simple-json", "1.0.0")] | ||
1227 | #if SIMPLE_JSON_INTERNAL | ||
1228 | internal | ||
1229 | #else | ||
1230 | public | ||
1231 | #endif | ||
1232 | interface IJsonSerializerStrategy | ||
1233 | { | ||
1234 | [SuppressMessage("Microsoft.Design", "CA1007:UseGenericsWhereAppropriate", Justification = "Need to support .NET 2")] | ||
1235 | bool TrySerializeNonPrimitiveObject(object input, out object output); | ||
1236 | object DeserializeObject(object value, Type type); | ||
1237 | } | ||
1238 | |||
1239 | [GeneratedCode("simple-json", "1.0.0")] | ||
1240 | #if SIMPLE_JSON_INTERNAL | ||
1241 | internal | ||
1242 | #else | ||
1243 | public | ||
1244 | #endif | ||
1245 | class PocoJsonSerializerStrategy : IJsonSerializerStrategy | ||
1246 | { | ||
1247 | internal IDictionary<Type, ReflectionUtils.ConstructorDelegate> ConstructorCache; | ||
1248 | internal IDictionary<Type, IDictionary<string, ReflectionUtils.GetDelegate>> GetCache; | ||
1249 | internal IDictionary<Type, IDictionary<string, KeyValuePair<Type, ReflectionUtils.SetDelegate>>> SetCache; | ||
1250 | |||
1251 | internal static readonly Type[] EmptyTypes = new Type[0]; | ||
1252 | internal static readonly Type[] ArrayConstructorParameterTypes = new Type[] { typeof(int) }; | ||
1253 | |||
1254 | private static readonly string[] Iso8601Format = new string[] | ||
1255 | { | ||
1256 | @"yyyy-MM-dd\THH:mm:ss.FFFFFFF\Z", | ||
1257 | @"yyyy-MM-dd\THH:mm:ss\Z", | ||
1258 | @"yyyy-MM-dd\THH:mm:ssK" | ||
1259 | }; | ||
1260 | |||
1261 | public PocoJsonSerializerStrategy() | ||
1262 | { | ||
1263 | ConstructorCache = new ReflectionUtils.ThreadSafeDictionary<Type, ReflectionUtils.ConstructorDelegate>(ContructorDelegateFactory); | ||
1264 | GetCache = new ReflectionUtils.ThreadSafeDictionary<Type, IDictionary<string, ReflectionUtils.GetDelegate>>(GetterValueFactory); | ||
1265 | SetCache = new ReflectionUtils.ThreadSafeDictionary<Type, IDictionary<string, KeyValuePair<Type, ReflectionUtils.SetDelegate>>>(SetterValueFactory); | ||
1266 | } | ||
1267 | |||
1268 | protected virtual string MapClrMemberNameToJsonFieldName(string clrPropertyName) | ||
1269 | { | ||
1270 | return clrPropertyName; | ||
1271 | } | ||
1272 | |||
1273 | internal virtual ReflectionUtils.ConstructorDelegate ContructorDelegateFactory(Type key) | ||
1274 | { | ||
1275 | return ReflectionUtils.GetContructor(key, key.IsArray ? ArrayConstructorParameterTypes : EmptyTypes); | ||
1276 | } | ||
1277 | |||
1278 | internal virtual IDictionary<string, ReflectionUtils.GetDelegate> GetterValueFactory(Type type) | ||
1279 | { | ||
1280 | IDictionary<string, ReflectionUtils.GetDelegate> result = new Dictionary<string, ReflectionUtils.GetDelegate>(); | ||
1281 | foreach (PropertyInfo propertyInfo in ReflectionUtils.GetProperties(type)) | ||
1282 | { | ||
1283 | if (propertyInfo.CanRead) | ||
1284 | { | ||
1285 | MethodInfo getMethod = ReflectionUtils.GetGetterMethodInfo(propertyInfo); | ||
1286 | if (getMethod.IsStatic || !getMethod.IsPublic) | ||
1287 | continue; | ||
1288 | result[MapClrMemberNameToJsonFieldName(propertyInfo.Name)] = ReflectionUtils.GetGetMethod(propertyInfo); | ||
1289 | } | ||
1290 | } | ||
1291 | foreach (FieldInfo fieldInfo in ReflectionUtils.GetFields(type)) | ||
1292 | { | ||
1293 | if (fieldInfo.IsStatic || !fieldInfo.IsPublic) | ||
1294 | continue; | ||
1295 | result[MapClrMemberNameToJsonFieldName(fieldInfo.Name)] = ReflectionUtils.GetGetMethod(fieldInfo); | ||
1296 | } | ||
1297 | return result; | ||
1298 | } | ||
1299 | |||
1300 | internal virtual IDictionary<string, KeyValuePair<Type, ReflectionUtils.SetDelegate>> SetterValueFactory(Type type) | ||
1301 | { | ||
1302 | IDictionary<string, KeyValuePair<Type, ReflectionUtils.SetDelegate>> result = new Dictionary<string, KeyValuePair<Type, ReflectionUtils.SetDelegate>>(); | ||
1303 | foreach (PropertyInfo propertyInfo in ReflectionUtils.GetProperties(type)) | ||
1304 | { | ||
1305 | if (propertyInfo.CanWrite) | ||
1306 | { | ||
1307 | MethodInfo setMethod = ReflectionUtils.GetSetterMethodInfo(propertyInfo); | ||
1308 | if (setMethod.IsStatic || !setMethod.IsPublic) | ||
1309 | continue; | ||
1310 | result[MapClrMemberNameToJsonFieldName(propertyInfo.Name)] = new KeyValuePair<Type, ReflectionUtils.SetDelegate>(propertyInfo.PropertyType, ReflectionUtils.GetSetMethod(propertyInfo)); | ||
1311 | } | ||
1312 | } | ||
1313 | foreach (FieldInfo fieldInfo in ReflectionUtils.GetFields(type)) | ||
1314 | { | ||
1315 | if (fieldInfo.IsInitOnly || fieldInfo.IsStatic || !fieldInfo.IsPublic) | ||
1316 | continue; | ||
1317 | result[MapClrMemberNameToJsonFieldName(fieldInfo.Name)] = new KeyValuePair<Type, ReflectionUtils.SetDelegate>(fieldInfo.FieldType, ReflectionUtils.GetSetMethod(fieldInfo)); | ||
1318 | } | ||
1319 | return result; | ||
1320 | } | ||
1321 | |||
1322 | public virtual bool TrySerializeNonPrimitiveObject(object input, out object output) | ||
1323 | { | ||
1324 | return TrySerializeKnownTypes(input, out output) || TrySerializeUnknownTypes(input, out output); | ||
1325 | } | ||
1326 | |||
1327 | [SuppressMessage("Microsoft.Maintainability", "CA1502:AvoidExcessiveComplexity")] | ||
1328 | public virtual object DeserializeObject(object value, Type type) | ||
1329 | { | ||
1330 | if (type == null) throw new ArgumentNullException("type"); | ||
1331 | string str = value as string; | ||
1332 | |||
1333 | if (type == typeof(Guid) && string.IsNullOrEmpty(str)) | ||
1334 | return default(Guid); | ||
1335 | |||
1336 | if (value == null) | ||
1337 | return null; | ||
1338 | |||
1339 | object obj = null; | ||
1340 | |||
1341 | if (str != null) | ||
1342 | { | ||
1343 | if (str.Length != 0) // We know it can't be null now. | ||
1344 | { | ||
1345 | if (type == typeof(DateTime) || (ReflectionUtils.IsNullableType(type) && Nullable.GetUnderlyingType(type) == typeof(DateTime))) | ||
1346 | return DateTime.ParseExact(str, Iso8601Format, CultureInfo.InvariantCulture, DateTimeStyles.AssumeUniversal | DateTimeStyles.AdjustToUniversal); | ||
1347 | if (type == typeof(DateTimeOffset) || (ReflectionUtils.IsNullableType(type) && Nullable.GetUnderlyingType(type) == typeof(DateTimeOffset))) | ||
1348 | return DateTimeOffset.ParseExact(str, Iso8601Format, CultureInfo.InvariantCulture, DateTimeStyles.AssumeUniversal | DateTimeStyles.AdjustToUniversal); | ||
1349 | if (type == typeof(Guid) || (ReflectionUtils.IsNullableType(type) && Nullable.GetUnderlyingType(type) == typeof(Guid))) | ||
1350 | return new Guid(str); | ||
1351 | if (type == typeof(Uri)) | ||
1352 | { | ||
1353 | bool isValid = Uri.IsWellFormedUriString(str, UriKind.RelativeOrAbsolute); | ||
1354 | |||
1355 | Uri result; | ||
1356 | if (isValid && Uri.TryCreate(str, UriKind.RelativeOrAbsolute, out result)) | ||
1357 | return result; | ||
1358 | |||
1359 | return null; | ||
1360 | } | ||
1361 | |||
1362 | if (type == typeof(string)) | ||
1363 | return str; | ||
1364 | |||
1365 | return Convert.ChangeType(str, type, CultureInfo.InvariantCulture); | ||
1366 | } | ||
1367 | else | ||
1368 | { | ||
1369 | if (type == typeof(Guid)) | ||
1370 | obj = default(Guid); | ||
1371 | else if (ReflectionUtils.IsNullableType(type) && Nullable.GetUnderlyingType(type) == typeof(Guid)) | ||
1372 | obj = null; | ||
1373 | else | ||
1374 | obj = str; | ||
1375 | } | ||
1376 | // Empty string case | ||
1377 | if (!ReflectionUtils.IsNullableType(type) && Nullable.GetUnderlyingType(type) == typeof(Guid)) | ||
1378 | return str; | ||
1379 | } | ||
1380 | else if (value is bool) | ||
1381 | return value; | ||
1382 | |||
1383 | bool valueIsLong = value is long; | ||
1384 | bool valueIsDouble = value is double; | ||
1385 | if ((valueIsLong && type == typeof(long)) || (valueIsDouble && type == typeof(double))) | ||
1386 | return value; | ||
1387 | if ((valueIsDouble && type != typeof(double)) || (valueIsLong && type != typeof(long))) | ||
1388 | { | ||
1389 | obj = type == typeof(int) || type == typeof(long) || type == typeof(double) || type == typeof(float) || type == typeof(bool) || type == typeof(decimal) || type == typeof(byte) || type == typeof(short) | ||
1390 | ? Convert.ChangeType(value, type, CultureInfo.InvariantCulture) | ||
1391 | : value; | ||
1392 | } | ||
1393 | else | ||
1394 | { | ||
1395 | IDictionary<string, object> objects = value as IDictionary<string, object>; | ||
1396 | if (objects != null) | ||
1397 | { | ||
1398 | IDictionary<string, object> jsonObject = objects; | ||
1399 | |||
1400 | if (ReflectionUtils.IsTypeDictionary(type)) | ||
1401 | { | ||
1402 | // if dictionary then | ||
1403 | Type[] types = ReflectionUtils.GetGenericTypeArguments(type); | ||
1404 | Type keyType = types[0]; | ||
1405 | Type valueType = types[1]; | ||
1406 | |||
1407 | Type genericType = typeof(Dictionary<,>).MakeGenericType(keyType, valueType); | ||
1408 | |||
1409 | IDictionary dict = (IDictionary)ConstructorCache[genericType](); | ||
1410 | |||
1411 | foreach (KeyValuePair<string, object> kvp in jsonObject) | ||
1412 | dict.Add(kvp.Key, DeserializeObject(kvp.Value, valueType)); | ||
1413 | |||
1414 | obj = dict; | ||
1415 | } | ||
1416 | else | ||
1417 | { | ||
1418 | if (type == typeof(object)) | ||
1419 | obj = value; | ||
1420 | else | ||
1421 | { | ||
1422 | obj = ConstructorCache[type](); | ||
1423 | foreach (KeyValuePair<string, KeyValuePair<Type, ReflectionUtils.SetDelegate>> setter in SetCache[type]) | ||
1424 | { | ||
1425 | object jsonValue; | ||
1426 | if (jsonObject.TryGetValue(setter.Key, out jsonValue)) | ||
1427 | { | ||
1428 | jsonValue = DeserializeObject(jsonValue, setter.Value.Key); | ||
1429 | setter.Value.Value(obj, jsonValue); | ||
1430 | } | ||
1431 | } | ||
1432 | } | ||
1433 | } | ||
1434 | } | ||
1435 | else | ||
1436 | { | ||
1437 | IList<object> valueAsList = value as IList<object>; | ||
1438 | if (valueAsList != null) | ||
1439 | { | ||
1440 | IList<object> jsonObject = valueAsList; | ||
1441 | IList list = null; | ||
1442 | |||
1443 | if (type.IsArray) | ||
1444 | { | ||
1445 | list = (IList)ConstructorCache[type](jsonObject.Count); | ||
1446 | int i = 0; | ||
1447 | foreach (object o in jsonObject) | ||
1448 | list[i++] = DeserializeObject(o, type.GetElementType()); | ||
1449 | } | ||
1450 | else if (ReflectionUtils.IsTypeGenericeCollectionInterface(type) || ReflectionUtils.IsAssignableFrom(typeof(IList), type)) | ||
1451 | { | ||
1452 | Type innerType = ReflectionUtils.GetGenericListElementType(type); | ||
1453 | list = (IList)(ConstructorCache[type] ?? ConstructorCache[typeof(List<>).MakeGenericType(innerType)])(jsonObject.Count); | ||
1454 | foreach (object o in jsonObject) | ||
1455 | list.Add(DeserializeObject(o, innerType)); | ||
1456 | } | ||
1457 | obj = list; | ||
1458 | } | ||
1459 | } | ||
1460 | return obj; | ||
1461 | } | ||
1462 | if (ReflectionUtils.IsNullableType(type)) | ||
1463 | return ReflectionUtils.ToNullableType(obj, type); | ||
1464 | return obj; | ||
1465 | } | ||
1466 | |||
1467 | protected virtual object SerializeEnum(Enum p) | ||
1468 | { | ||
1469 | return Convert.ToDouble(p, CultureInfo.InvariantCulture); | ||
1470 | } | ||
1471 | |||
1472 | [SuppressMessage("Microsoft.Design", "CA1007:UseGenericsWhereAppropriate", Justification = "Need to support .NET 2")] | ||
1473 | protected virtual bool TrySerializeKnownTypes(object input, out object output) | ||
1474 | { | ||
1475 | bool returnValue = true; | ||
1476 | if (input is DateTime) | ||
1477 | output = ((DateTime)input).ToUniversalTime().ToString(Iso8601Format[0], CultureInfo.InvariantCulture); | ||
1478 | else if (input is DateTimeOffset) | ||
1479 | output = ((DateTimeOffset)input).ToUniversalTime().ToString(Iso8601Format[0], CultureInfo.InvariantCulture); | ||
1480 | else if (input is Guid) | ||
1481 | output = ((Guid)input).ToString("D"); | ||
1482 | else if (input is Uri) | ||
1483 | output = input.ToString(); | ||
1484 | else | ||
1485 | { | ||
1486 | Enum inputEnum = input as Enum; | ||
1487 | if (inputEnum != null) | ||
1488 | output = SerializeEnum(inputEnum); | ||
1489 | else | ||
1490 | { | ||
1491 | returnValue = false; | ||
1492 | output = null; | ||
1493 | } | ||
1494 | } | ||
1495 | return returnValue; | ||
1496 | } | ||
1497 | [SuppressMessage("Microsoft.Design", "CA1007:UseGenericsWhereAppropriate", Justification = "Need to support .NET 2")] | ||
1498 | protected virtual bool TrySerializeUnknownTypes(object input, out object output) | ||
1499 | { | ||
1500 | if (input == null) throw new ArgumentNullException("input"); | ||
1501 | output = null; | ||
1502 | Type type = input.GetType(); | ||
1503 | if (type.FullName == null) | ||
1504 | return false; | ||
1505 | IDictionary<string, object> obj = new JsonObject(); | ||
1506 | IDictionary<string, ReflectionUtils.GetDelegate> getters = GetCache[type]; | ||
1507 | foreach (KeyValuePair<string, ReflectionUtils.GetDelegate> getter in getters) | ||
1508 | { | ||
1509 | if (getter.Value != null) | ||
1510 | obj.Add(MapClrMemberNameToJsonFieldName(getter.Key), getter.Value(input)); | ||
1511 | } | ||
1512 | output = obj; | ||
1513 | return true; | ||
1514 | } | ||
1515 | } | ||
1516 | |||
1517 | #if SIMPLE_JSON_DATACONTRACT | ||
1518 | [GeneratedCode("simple-json", "1.0.0")] | ||
1519 | #if SIMPLE_JSON_INTERNAL | ||
1520 | internal | ||
1521 | #else | ||
1522 | public | ||
1523 | #endif | ||
1524 | class DataContractJsonSerializerStrategy : PocoJsonSerializerStrategy | ||
1525 | { | ||
1526 | public DataContractJsonSerializerStrategy() | ||
1527 | { | ||
1528 | GetCache = new ReflectionUtils.ThreadSafeDictionary<Type, IDictionary<string, ReflectionUtils.GetDelegate>>(GetterValueFactory); | ||
1529 | SetCache = new ReflectionUtils.ThreadSafeDictionary<Type, IDictionary<string, KeyValuePair<Type, ReflectionUtils.SetDelegate>>>(SetterValueFactory); | ||
1530 | } | ||
1531 | |||
1532 | internal override IDictionary<string, ReflectionUtils.GetDelegate> GetterValueFactory(Type type) | ||
1533 | { | ||
1534 | bool hasDataContract = ReflectionUtils.GetAttribute(type, typeof(DataContractAttribute)) != null; | ||
1535 | if (!hasDataContract) | ||
1536 | return base.GetterValueFactory(type); | ||
1537 | string jsonKey; | ||
1538 | IDictionary<string, ReflectionUtils.GetDelegate> result = new Dictionary<string, ReflectionUtils.GetDelegate>(); | ||
1539 | foreach (PropertyInfo propertyInfo in ReflectionUtils.GetProperties(type)) | ||
1540 | { | ||
1541 | if (propertyInfo.CanRead) | ||
1542 | { | ||
1543 | MethodInfo getMethod = ReflectionUtils.GetGetterMethodInfo(propertyInfo); | ||
1544 | if (!getMethod.IsStatic && CanAdd(propertyInfo, out jsonKey)) | ||
1545 | result[jsonKey] = ReflectionUtils.GetGetMethod(propertyInfo); | ||
1546 | } | ||
1547 | } | ||
1548 | foreach (FieldInfo fieldInfo in ReflectionUtils.GetFields(type)) | ||
1549 | { | ||
1550 | if (!fieldInfo.IsStatic && CanAdd(fieldInfo, out jsonKey)) | ||
1551 | result[jsonKey] = ReflectionUtils.GetGetMethod(fieldInfo); | ||
1552 | } | ||
1553 | return result; | ||
1554 | } | ||
1555 | |||
1556 | internal override IDictionary<string, KeyValuePair<Type, ReflectionUtils.SetDelegate>> SetterValueFactory(Type type) | ||
1557 | { | ||
1558 | bool hasDataContract = ReflectionUtils.GetAttribute(type, typeof(DataContractAttribute)) != null; | ||
1559 | if (!hasDataContract) | ||
1560 | return base.SetterValueFactory(type); | ||
1561 | string jsonKey; | ||
1562 | IDictionary<string, KeyValuePair<Type, ReflectionUtils.SetDelegate>> result = new Dictionary<string, KeyValuePair<Type, ReflectionUtils.SetDelegate>>(); | ||
1563 | foreach (PropertyInfo propertyInfo in ReflectionUtils.GetProperties(type)) | ||
1564 | { | ||
1565 | if (propertyInfo.CanWrite) | ||
1566 | { | ||
1567 | MethodInfo setMethod = ReflectionUtils.GetSetterMethodInfo(propertyInfo); | ||
1568 | if (!setMethod.IsStatic && CanAdd(propertyInfo, out jsonKey)) | ||
1569 | result[jsonKey] = new KeyValuePair<Type, ReflectionUtils.SetDelegate>(propertyInfo.PropertyType, ReflectionUtils.GetSetMethod(propertyInfo)); | ||
1570 | } | ||
1571 | } | ||
1572 | foreach (FieldInfo fieldInfo in ReflectionUtils.GetFields(type)) | ||
1573 | { | ||
1574 | if (!fieldInfo.IsInitOnly && !fieldInfo.IsStatic && CanAdd(fieldInfo, out jsonKey)) | ||
1575 | result[jsonKey] = new KeyValuePair<Type, ReflectionUtils.SetDelegate>(fieldInfo.FieldType, ReflectionUtils.GetSetMethod(fieldInfo)); | ||
1576 | } | ||
1577 | // todo implement sorting for DATACONTRACT. | ||
1578 | return result; | ||
1579 | } | ||
1580 | |||
1581 | private static bool CanAdd(MemberInfo info, out string jsonKey) | ||
1582 | { | ||
1583 | jsonKey = null; | ||
1584 | if (ReflectionUtils.GetAttribute(info, typeof(IgnoreDataMemberAttribute)) != null) | ||
1585 | return false; | ||
1586 | DataMemberAttribute dataMemberAttribute = (DataMemberAttribute)ReflectionUtils.GetAttribute(info, typeof(DataMemberAttribute)); | ||
1587 | if (dataMemberAttribute == null) | ||
1588 | return false; | ||
1589 | jsonKey = string.IsNullOrEmpty(dataMemberAttribute.Name) ? info.Name : dataMemberAttribute.Name; | ||
1590 | return true; | ||
1591 | } | ||
1592 | } | ||
1593 | |||
1594 | #endif | ||
1595 | |||
1596 | namespace Reflection | ||
1597 | { | ||
1598 | // This class is meant to be copied into other libraries. So we want to exclude it from Code Analysis rules | ||
1599 | // that might be in place in the target project. | ||
1600 | [GeneratedCode("reflection-utils", "1.0.0")] | ||
1601 | #if SIMPLE_JSON_REFLECTION_UTILS_PUBLIC | ||
1602 | public | ||
1603 | #else | ||
1604 | internal | ||
1605 | #endif | ||
1606 | class ReflectionUtils | ||
1607 | { | ||
1608 | private static readonly object[] EmptyObjects = new object[] { }; | ||
1609 | |||
1610 | public delegate object GetDelegate(object source); | ||
1611 | public delegate void SetDelegate(object source, object value); | ||
1612 | public delegate object ConstructorDelegate(params object[] args); | ||
1613 | |||
1614 | public delegate TValue ThreadSafeDictionaryValueFactory<TKey, TValue>(TKey key); | ||
1615 | |||
1616 | #if SIMPLE_JSON_TYPEINFO | ||
1617 | public static TypeInfo GetTypeInfo(Type type) | ||
1618 | { | ||
1619 | return type.GetTypeInfo(); | ||
1620 | } | ||
1621 | #else | ||
1622 | public static Type GetTypeInfo(Type type) | ||
1623 | { | ||
1624 | return type; | ||
1625 | } | ||
1626 | #endif | ||
1627 | |||
1628 | public static Attribute GetAttribute(MemberInfo info, Type type) | ||
1629 | { | ||
1630 | #if SIMPLE_JSON_TYPEINFO | ||
1631 | if (info == null || type == null || !info.IsDefined(type)) | ||
1632 | return null; | ||
1633 | return info.GetCustomAttribute(type); | ||
1634 | #else | ||
1635 | if (info == null || type == null || !Attribute.IsDefined(info, type)) | ||
1636 | return null; | ||
1637 | return Attribute.GetCustomAttribute(info, type); | ||
1638 | #endif | ||
1639 | } | ||
1640 | |||
1641 | public static Type GetGenericListElementType(Type type) | ||
1642 | { | ||
1643 | IEnumerable<Type> interfaces; | ||
1644 | #if SIMPLE_JSON_TYPEINFO | ||
1645 | interfaces = type.GetTypeInfo().ImplementedInterfaces; | ||
1646 | #else | ||
1647 | interfaces = type.GetInterfaces(); | ||
1648 | #endif | ||
1649 | foreach (Type implementedInterface in interfaces) | ||
1650 | { | ||
1651 | if (IsTypeGeneric(implementedInterface) && | ||
1652 | implementedInterface.GetGenericTypeDefinition() == typeof(IList<>)) | ||
1653 | { | ||
1654 | return GetGenericTypeArguments(implementedInterface)[0]; | ||
1655 | } | ||
1656 | } | ||
1657 | return GetGenericTypeArguments(type)[0]; | ||
1658 | } | ||
1659 | |||
1660 | public static Attribute GetAttribute(Type objectType, Type attributeType) | ||
1661 | { | ||
1662 | |||
1663 | #if SIMPLE_JSON_TYPEINFO | ||
1664 | if (objectType == null || attributeType == null || !objectType.GetTypeInfo().IsDefined(attributeType)) | ||
1665 | return null; | ||
1666 | return objectType.GetTypeInfo().GetCustomAttribute(attributeType); | ||
1667 | #else | ||
1668 | if (objectType == null || attributeType == null || !Attribute.IsDefined(objectType, attributeType)) | ||
1669 | return null; | ||
1670 | return Attribute.GetCustomAttribute(objectType, attributeType); | ||
1671 | #endif | ||
1672 | } | ||
1673 | |||
1674 | public static Type[] GetGenericTypeArguments(Type type) | ||
1675 | { | ||
1676 | #if SIMPLE_JSON_TYPEINFO | ||
1677 | return type.GetTypeInfo().GenericTypeArguments; | ||
1678 | #else | ||
1679 | return type.GetGenericArguments(); | ||
1680 | #endif | ||
1681 | } | ||
1682 | |||
1683 | public static bool IsTypeGeneric(Type type) | ||
1684 | { | ||
1685 | return GetTypeInfo(type).IsGenericType; | ||
1686 | } | ||
1687 | |||
1688 | public static bool IsTypeGenericeCollectionInterface(Type type) | ||
1689 | { | ||
1690 | if (!IsTypeGeneric(type)) | ||
1691 | return false; | ||
1692 | |||
1693 | Type genericDefinition = type.GetGenericTypeDefinition(); | ||
1694 | |||
1695 | return (genericDefinition == typeof(IList<>) | ||
1696 | || genericDefinition == typeof(ICollection<>) | ||
1697 | || genericDefinition == typeof(IEnumerable<>) | ||
1698 | #if SIMPLE_JSON_READONLY_COLLECTIONS | ||
1699 | || genericDefinition == typeof(IReadOnlyCollection<>) | ||
1700 | || genericDefinition == typeof(IReadOnlyList<>) | ||
1701 | #endif | ||
1702 | ); | ||
1703 | } | ||
1704 | |||
1705 | public static bool IsAssignableFrom(Type type1, Type type2) | ||
1706 | { | ||
1707 | return GetTypeInfo(type1).IsAssignableFrom(GetTypeInfo(type2)); | ||
1708 | } | ||
1709 | |||
1710 | public static bool IsTypeDictionary(Type type) | ||
1711 | { | ||
1712 | #if SIMPLE_JSON_TYPEINFO | ||
1713 | if (typeof(IDictionary<,>).GetTypeInfo().IsAssignableFrom(type.GetTypeInfo())) | ||
1714 | return true; | ||
1715 | #else | ||
1716 | if (typeof(System.Collections.IDictionary).IsAssignableFrom(type)) | ||
1717 | return true; | ||
1718 | #endif | ||
1719 | if (!GetTypeInfo(type).IsGenericType) | ||
1720 | return false; | ||
1721 | |||
1722 | Type genericDefinition = type.GetGenericTypeDefinition(); | ||
1723 | return genericDefinition == typeof(IDictionary<,>); | ||
1724 | } | ||
1725 | |||
1726 | public static bool IsNullableType(Type type) | ||
1727 | { | ||
1728 | return GetTypeInfo(type).IsGenericType && type.GetGenericTypeDefinition() == typeof(Nullable<>); | ||
1729 | } | ||
1730 | |||
1731 | public static object ToNullableType(object obj, Type nullableType) | ||
1732 | { | ||
1733 | return obj == null ? null : Convert.ChangeType(obj, Nullable.GetUnderlyingType(nullableType), CultureInfo.InvariantCulture); | ||
1734 | } | ||
1735 | |||
1736 | public static bool IsValueType(Type type) | ||
1737 | { | ||
1738 | return GetTypeInfo(type).IsValueType; | ||
1739 | } | ||
1740 | |||
1741 | public static IEnumerable<ConstructorInfo> GetConstructors(Type type) | ||
1742 | { | ||
1743 | #if SIMPLE_JSON_TYPEINFO | ||
1744 | return type.GetTypeInfo().DeclaredConstructors; | ||
1745 | #else | ||
1746 | return type.GetConstructors(); | ||
1747 | #endif | ||
1748 | } | ||
1749 | |||
1750 | public static ConstructorInfo GetConstructorInfo(Type type, params Type[] argsType) | ||
1751 | { | ||
1752 | IEnumerable<ConstructorInfo> constructorInfos = GetConstructors(type); | ||
1753 | int i; | ||
1754 | bool matches; | ||
1755 | foreach (ConstructorInfo constructorInfo in constructorInfos) | ||
1756 | { | ||
1757 | ParameterInfo[] parameters = constructorInfo.GetParameters(); | ||
1758 | if (argsType.Length != parameters.Length) | ||
1759 | continue; | ||
1760 | |||
1761 | i = 0; | ||
1762 | matches = true; | ||
1763 | foreach (ParameterInfo parameterInfo in constructorInfo.GetParameters()) | ||
1764 | { | ||
1765 | if (parameterInfo.ParameterType != argsType[i]) | ||
1766 | { | ||
1767 | matches = false; | ||
1768 | break; | ||
1769 | } | ||
1770 | } | ||
1771 | |||
1772 | if (matches) | ||
1773 | return constructorInfo; | ||
1774 | } | ||
1775 | |||
1776 | return null; | ||
1777 | } | ||
1778 | |||
1779 | public static IEnumerable<PropertyInfo> GetProperties(Type type) | ||
1780 | { | ||
1781 | #if SIMPLE_JSON_TYPEINFO | ||
1782 | return type.GetRuntimeProperties(); | ||
1783 | #else | ||
1784 | return type.GetProperties(BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Static); | ||
1785 | #endif | ||
1786 | } | ||
1787 | |||
1788 | public static IEnumerable<FieldInfo> GetFields(Type type) | ||
1789 | { | ||
1790 | #if SIMPLE_JSON_TYPEINFO | ||
1791 | return type.GetRuntimeFields(); | ||
1792 | #else | ||
1793 | return type.GetFields(BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Static); | ||
1794 | #endif | ||
1795 | } | ||
1796 | |||
1797 | public static MethodInfo GetGetterMethodInfo(PropertyInfo propertyInfo) | ||
1798 | { | ||
1799 | #if SIMPLE_JSON_TYPEINFO | ||
1800 | return propertyInfo.GetMethod; | ||
1801 | #else | ||
1802 | return propertyInfo.GetGetMethod(true); | ||
1803 | #endif | ||
1804 | } | ||
1805 | |||
1806 | public static MethodInfo GetSetterMethodInfo(PropertyInfo propertyInfo) | ||
1807 | { | ||
1808 | #if SIMPLE_JSON_TYPEINFO | ||
1809 | return propertyInfo.SetMethod; | ||
1810 | #else | ||
1811 | return propertyInfo.GetSetMethod(true); | ||
1812 | #endif | ||
1813 | } | ||
1814 | |||
1815 | public static ConstructorDelegate GetContructor(ConstructorInfo constructorInfo) | ||
1816 | { | ||
1817 | #if SIMPLE_JSON_NO_LINQ_EXPRESSION | ||
1818 | return GetConstructorByReflection(constructorInfo); | ||
1819 | #else | ||
1820 | return GetConstructorByExpression(constructorInfo); | ||
1821 | #endif | ||
1822 | } | ||
1823 | |||
1824 | public static ConstructorDelegate GetContructor(Type type, params Type[] argsType) | ||
1825 | { | ||
1826 | #if SIMPLE_JSON_NO_LINQ_EXPRESSION | ||
1827 | return GetConstructorByReflection(type, argsType); | ||
1828 | #else | ||
1829 | return GetConstructorByExpression(type, argsType); | ||
1830 | #endif | ||
1831 | } | ||
1832 | |||
1833 | public static ConstructorDelegate GetConstructorByReflection(ConstructorInfo constructorInfo) | ||
1834 | { | ||
1835 | return delegate (object[] args) { return constructorInfo.Invoke(args); }; | ||
1836 | } | ||
1837 | |||
1838 | public static ConstructorDelegate GetConstructorByReflection(Type type, params Type[] argsType) | ||
1839 | { | ||
1840 | ConstructorInfo constructorInfo = GetConstructorInfo(type, argsType); | ||
1841 | return constructorInfo == null ? null : GetConstructorByReflection(constructorInfo); | ||
1842 | } | ||
1843 | |||
1844 | #if !SIMPLE_JSON_NO_LINQ_EXPRESSION | ||
1845 | |||
1846 | public static ConstructorDelegate GetConstructorByExpression(ConstructorInfo constructorInfo) | ||
1847 | { | ||
1848 | ParameterInfo[] paramsInfo = constructorInfo.GetParameters(); | ||
1849 | ParameterExpression param = Expression.Parameter(typeof(object[]), "args"); | ||
1850 | Expression[] argsExp = new Expression[paramsInfo.Length]; | ||
1851 | for (int i = 0; i < paramsInfo.Length; i++) | ||
1852 | { | ||
1853 | Expression index = Expression.Constant(i); | ||
1854 | Type paramType = paramsInfo[i].ParameterType; | ||
1855 | Expression paramAccessorExp = Expression.ArrayIndex(param, index); | ||
1856 | Expression paramCastExp = Expression.Convert(paramAccessorExp, paramType); | ||
1857 | argsExp[i] = paramCastExp; | ||
1858 | } | ||
1859 | NewExpression newExp = Expression.New(constructorInfo, argsExp); | ||
1860 | Expression<Func<object[], object>> lambda = Expression.Lambda<Func<object[], object>>(newExp, param); | ||
1861 | Func<object[], object> compiledLambda = lambda.Compile(); | ||
1862 | return delegate (object[] args) { return compiledLambda(args); }; | ||
1863 | } | ||
1864 | |||
1865 | public static ConstructorDelegate GetConstructorByExpression(Type type, params Type[] argsType) | ||
1866 | { | ||
1867 | ConstructorInfo constructorInfo = GetConstructorInfo(type, argsType); | ||
1868 | return constructorInfo == null ? null : GetConstructorByExpression(constructorInfo); | ||
1869 | } | ||
1870 | |||
1871 | #endif | ||
1872 | |||
1873 | public static GetDelegate GetGetMethod(PropertyInfo propertyInfo) | ||
1874 | { | ||
1875 | #if SIMPLE_JSON_NO_LINQ_EXPRESSION | ||
1876 | return GetGetMethodByReflection(propertyInfo); | ||
1877 | #else | ||
1878 | return GetGetMethodByExpression(propertyInfo); | ||
1879 | #endif | ||
1880 | } | ||
1881 | |||
1882 | public static GetDelegate GetGetMethod(FieldInfo fieldInfo) | ||
1883 | { | ||
1884 | #if SIMPLE_JSON_NO_LINQ_EXPRESSION | ||
1885 | return GetGetMethodByReflection(fieldInfo); | ||
1886 | #else | ||
1887 | return GetGetMethodByExpression(fieldInfo); | ||
1888 | #endif | ||
1889 | } | ||
1890 | |||
1891 | public static GetDelegate GetGetMethodByReflection(PropertyInfo propertyInfo) | ||
1892 | { | ||
1893 | MethodInfo methodInfo = GetGetterMethodInfo(propertyInfo); | ||
1894 | return delegate (object source) { return methodInfo.Invoke(source, EmptyObjects); }; | ||
1895 | } | ||
1896 | |||
1897 | public static GetDelegate GetGetMethodByReflection(FieldInfo fieldInfo) | ||
1898 | { | ||
1899 | return delegate (object source) { return fieldInfo.GetValue(source); }; | ||
1900 | } | ||
1901 | |||
1902 | #if !SIMPLE_JSON_NO_LINQ_EXPRESSION | ||
1903 | |||
1904 | public static GetDelegate GetGetMethodByExpression(PropertyInfo propertyInfo) | ||
1905 | { | ||
1906 | MethodInfo getMethodInfo = GetGetterMethodInfo(propertyInfo); | ||
1907 | ParameterExpression instance = Expression.Parameter(typeof(object), "instance"); | ||
1908 | UnaryExpression instanceCast = (!IsValueType(propertyInfo.DeclaringType)) ? Expression.TypeAs(instance, propertyInfo.DeclaringType) : Expression.Convert(instance, propertyInfo.DeclaringType); | ||
1909 | Func<object, object> compiled = Expression.Lambda<Func<object, object>>(Expression.TypeAs(Expression.Call(instanceCast, getMethodInfo), typeof(object)), instance).Compile(); | ||
1910 | return delegate (object source) { return compiled(source); }; | ||
1911 | } | ||
1912 | |||
1913 | public static GetDelegate GetGetMethodByExpression(FieldInfo fieldInfo) | ||
1914 | { | ||
1915 | ParameterExpression instance = Expression.Parameter(typeof(object), "instance"); | ||
1916 | MemberExpression member = Expression.Field(Expression.Convert(instance, fieldInfo.DeclaringType), fieldInfo); | ||
1917 | GetDelegate compiled = Expression.Lambda<GetDelegate>(Expression.Convert(member, typeof(object)), instance).Compile(); | ||
1918 | return delegate (object source) { return compiled(source); }; | ||
1919 | } | ||
1920 | |||
1921 | #endif | ||
1922 | |||
1923 | public static SetDelegate GetSetMethod(PropertyInfo propertyInfo) | ||
1924 | { | ||
1925 | #if SIMPLE_JSON_NO_LINQ_EXPRESSION | ||
1926 | return GetSetMethodByReflection(propertyInfo); | ||
1927 | #else | ||
1928 | return GetSetMethodByExpression(propertyInfo); | ||
1929 | #endif | ||
1930 | } | ||
1931 | |||
1932 | public static SetDelegate GetSetMethod(FieldInfo fieldInfo) | ||
1933 | { | ||
1934 | #if SIMPLE_JSON_NO_LINQ_EXPRESSION | ||
1935 | return GetSetMethodByReflection(fieldInfo); | ||
1936 | #else | ||
1937 | return GetSetMethodByExpression(fieldInfo); | ||
1938 | #endif | ||
1939 | } | ||
1940 | |||
1941 | public static SetDelegate GetSetMethodByReflection(PropertyInfo propertyInfo) | ||
1942 | { | ||
1943 | MethodInfo methodInfo = GetSetterMethodInfo(propertyInfo); | ||
1944 | return delegate (object source, object value) { methodInfo.Invoke(source, new object[] { value }); }; | ||
1945 | } | ||
1946 | |||
1947 | public static SetDelegate GetSetMethodByReflection(FieldInfo fieldInfo) | ||
1948 | { | ||
1949 | return delegate (object source, object value) { fieldInfo.SetValue(source, value); }; | ||
1950 | } | ||
1951 | |||
1952 | #if !SIMPLE_JSON_NO_LINQ_EXPRESSION | ||
1953 | |||
1954 | public static SetDelegate GetSetMethodByExpression(PropertyInfo propertyInfo) | ||
1955 | { | ||
1956 | MethodInfo setMethodInfo = GetSetterMethodInfo(propertyInfo); | ||
1957 | ParameterExpression instance = Expression.Parameter(typeof(object), "instance"); | ||
1958 | ParameterExpression value = Expression.Parameter(typeof(object), "value"); | ||
1959 | UnaryExpression instanceCast = (!IsValueType(propertyInfo.DeclaringType)) ? Expression.TypeAs(instance, propertyInfo.DeclaringType) : Expression.Convert(instance, propertyInfo.DeclaringType); | ||
1960 | UnaryExpression valueCast = (!IsValueType(propertyInfo.PropertyType)) ? Expression.TypeAs(value, propertyInfo.PropertyType) : Expression.Convert(value, propertyInfo.PropertyType); | ||
1961 | Action<object, object> compiled = Expression.Lambda<Action<object, object>>(Expression.Call(instanceCast, setMethodInfo, valueCast), new ParameterExpression[] { instance, value }).Compile(); | ||
1962 | return delegate (object source, object val) { compiled(source, val); }; | ||
1963 | } | ||
1964 | |||
1965 | public static SetDelegate GetSetMethodByExpression(FieldInfo fieldInfo) | ||
1966 | { | ||
1967 | ParameterExpression instance = Expression.Parameter(typeof(object), "instance"); | ||
1968 | ParameterExpression value = Expression.Parameter(typeof(object), "value"); | ||
1969 | Action<object, object> compiled = Expression.Lambda<Action<object, object>>( | ||
1970 | Assign(Expression.Field(Expression.Convert(instance, fieldInfo.DeclaringType), fieldInfo), Expression.Convert(value, fieldInfo.FieldType)), instance, value).Compile(); | ||
1971 | return delegate (object source, object val) { compiled(source, val); }; | ||
1972 | } | ||
1973 | |||
1974 | public static BinaryExpression Assign(Expression left, Expression right) | ||
1975 | { | ||
1976 | #if SIMPLE_JSON_TYPEINFO | ||
1977 | return Expression.Assign(left, right); | ||
1978 | #else | ||
1979 | MethodInfo assign = typeof(Assigner<>).MakeGenericType(left.Type).GetMethod("Assign"); | ||
1980 | BinaryExpression assignExpr = Expression.Add(left, right, assign); | ||
1981 | return assignExpr; | ||
1982 | #endif | ||
1983 | } | ||
1984 | |||
1985 | private static class Assigner<T> | ||
1986 | { | ||
1987 | public static T Assign(ref T left, T right) | ||
1988 | { | ||
1989 | return (left = right); | ||
1990 | } | ||
1991 | } | ||
1992 | |||
1993 | #endif | ||
1994 | |||
1995 | public sealed class ThreadSafeDictionary<TKey, TValue> : IDictionary<TKey, TValue> | ||
1996 | { | ||
1997 | private readonly object _lock = new object(); | ||
1998 | private readonly ThreadSafeDictionaryValueFactory<TKey, TValue> _valueFactory; | ||
1999 | private Dictionary<TKey, TValue> _dictionary; | ||
2000 | |||
2001 | public ThreadSafeDictionary(ThreadSafeDictionaryValueFactory<TKey, TValue> valueFactory) | ||
2002 | { | ||
2003 | _valueFactory = valueFactory; | ||
2004 | } | ||
2005 | |||
2006 | private TValue Get(TKey key) | ||
2007 | { | ||
2008 | if (_dictionary == null) | ||
2009 | return AddValue(key); | ||
2010 | TValue value; | ||
2011 | if (!_dictionary.TryGetValue(key, out value)) | ||
2012 | return AddValue(key); | ||
2013 | return value; | ||
2014 | } | ||
2015 | |||
2016 | private TValue AddValue(TKey key) | ||
2017 | { | ||
2018 | TValue value = _valueFactory(key); | ||
2019 | lock (_lock) | ||
2020 | { | ||
2021 | if (_dictionary == null) | ||
2022 | { | ||
2023 | _dictionary = new Dictionary<TKey, TValue>(); | ||
2024 | _dictionary[key] = value; | ||
2025 | } | ||
2026 | else | ||
2027 | { | ||
2028 | TValue val; | ||
2029 | if (_dictionary.TryGetValue(key, out val)) | ||
2030 | return val; | ||
2031 | Dictionary<TKey, TValue> dict = new Dictionary<TKey, TValue>(_dictionary); | ||
2032 | dict[key] = value; | ||
2033 | _dictionary = dict; | ||
2034 | } | ||
2035 | } | ||
2036 | return value; | ||
2037 | } | ||
2038 | |||
2039 | public void Add(TKey key, TValue value) | ||
2040 | { | ||
2041 | throw new NotImplementedException(); | ||
2042 | } | ||
2043 | |||
2044 | public bool ContainsKey(TKey key) | ||
2045 | { | ||
2046 | return _dictionary.ContainsKey(key); | ||
2047 | } | ||
2048 | |||
2049 | public ICollection<TKey> Keys | ||
2050 | { | ||
2051 | get { return _dictionary.Keys; } | ||
2052 | } | ||
2053 | |||
2054 | public bool Remove(TKey key) | ||
2055 | { | ||
2056 | throw new NotImplementedException(); | ||
2057 | } | ||
2058 | |||
2059 | public bool TryGetValue(TKey key, out TValue value) | ||
2060 | { | ||
2061 | value = this[key]; | ||
2062 | return true; | ||
2063 | } | ||
2064 | |||
2065 | public ICollection<TValue> Values | ||
2066 | { | ||
2067 | get { return _dictionary.Values; } | ||
2068 | } | ||
2069 | |||
2070 | public TValue this[TKey key] | ||
2071 | { | ||
2072 | get { return Get(key); } | ||
2073 | set { throw new NotImplementedException(); } | ||
2074 | } | ||
2075 | |||
2076 | public void Add(KeyValuePair<TKey, TValue> item) | ||
2077 | { | ||
2078 | throw new NotImplementedException(); | ||
2079 | } | ||
2080 | |||
2081 | public void Clear() | ||
2082 | { | ||
2083 | throw new NotImplementedException(); | ||
2084 | } | ||
2085 | |||
2086 | public bool Contains(KeyValuePair<TKey, TValue> item) | ||
2087 | { | ||
2088 | throw new NotImplementedException(); | ||
2089 | } | ||
2090 | |||
2091 | public void CopyTo(KeyValuePair<TKey, TValue>[] array, int arrayIndex) | ||
2092 | { | ||
2093 | throw new NotImplementedException(); | ||
2094 | } | ||
2095 | |||
2096 | public int Count | ||
2097 | { | ||
2098 | get { return _dictionary.Count; } | ||
2099 | } | ||
2100 | |||
2101 | public bool IsReadOnly | ||
2102 | { | ||
2103 | get { throw new NotImplementedException(); } | ||
2104 | } | ||
2105 | |||
2106 | public bool Remove(KeyValuePair<TKey, TValue> item) | ||
2107 | { | ||
2108 | throw new NotImplementedException(); | ||
2109 | } | ||
2110 | |||
2111 | public IEnumerator<KeyValuePair<TKey, TValue>> GetEnumerator() | ||
2112 | { | ||
2113 | return _dictionary.GetEnumerator(); | ||
2114 | } | ||
2115 | |||
2116 | System.Collections.IEnumerator System.Collections.IEnumerable.GetEnumerator() | ||
2117 | { | ||
2118 | return _dictionary.GetEnumerator(); | ||
2119 | } | ||
2120 | } | ||
2121 | |||
2122 | } | ||
2123 | } | ||
2124 | } | ||
2125 | // ReSharper restore LoopCanBeConvertedToQuery | ||
2126 | // ReSharper restore RedundantExplicitArrayCreation | ||
2127 | // ReSharper restore SuggestUseVarKeywordEvident \ No newline at end of file | ||
diff --git a/src/api/wix/WixToolset.Data/Localization.cs b/src/api/wix/WixToolset.Data/Localization.cs new file mode 100644 index 00000000..70c096de --- /dev/null +++ b/src/api/wix/WixToolset.Data/Localization.cs | |||
@@ -0,0 +1,137 @@ | |||
1 | // Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. | ||
2 | |||
3 | namespace WixToolset.Data | ||
4 | { | ||
5 | using System; | ||
6 | using System.Collections.Generic; | ||
7 | using SimpleJson; | ||
8 | using WixToolset.Data.Bind; | ||
9 | |||
10 | /// <summary> | ||
11 | /// Object that represents a localization file. | ||
12 | /// </summary> | ||
13 | public sealed class Localization | ||
14 | { | ||
15 | private readonly Dictionary<string, BindVariable> variables = new Dictionary<string, BindVariable>(); | ||
16 | private readonly Dictionary<string, LocalizedControl> localizedControls = new Dictionary<string, LocalizedControl>(); | ||
17 | |||
18 | /// <summary> | ||
19 | /// Instantiates a new localization object. | ||
20 | /// </summary> | ||
21 | public Localization(int? codepage, int? summaryInformationCodepage, string culture, IDictionary<string, BindVariable> variables, IDictionary<string, LocalizedControl> localizedControls) | ||
22 | { | ||
23 | this.Codepage = codepage; | ||
24 | this.SummaryInformationCodepage = summaryInformationCodepage; | ||
25 | this.Culture = culture?.ToLowerInvariant() ?? String.Empty; | ||
26 | this.variables = new Dictionary<string, BindVariable>(variables); | ||
27 | this.localizedControls = new Dictionary<string, LocalizedControl>(localizedControls); | ||
28 | } | ||
29 | |||
30 | /// <summary> | ||
31 | /// Gets the codepage. | ||
32 | /// </summary> | ||
33 | /// <value>The codepage.</value> | ||
34 | public int? Codepage { get; private set; } | ||
35 | |||
36 | /// <summary> | ||
37 | /// Gets the summary information codepage. | ||
38 | /// </summary> | ||
39 | /// <value>The summary information codepage.</value> | ||
40 | public int? SummaryInformationCodepage { get; private set; } | ||
41 | |||
42 | /// <summary> | ||
43 | /// Gets the culture. | ||
44 | /// </summary> | ||
45 | /// <value>The culture.</value> | ||
46 | public string Culture { get; private set; } | ||
47 | |||
48 | /// <summary> | ||
49 | /// Gets the variables. | ||
50 | /// </summary> | ||
51 | /// <value>The variables.</value> | ||
52 | public ICollection<BindVariable> Variables => this.variables.Values; | ||
53 | |||
54 | /// <summary> | ||
55 | /// Gets the localized controls. | ||
56 | /// </summary> | ||
57 | /// <value>The localized controls.</value> | ||
58 | public ICollection<KeyValuePair<string, LocalizedControl>> LocalizedControls => this.localizedControls; | ||
59 | |||
60 | internal JsonObject Serialize() | ||
61 | { | ||
62 | var jsonObject = new JsonObject(); | ||
63 | |||
64 | if (this.Codepage.HasValue) | ||
65 | { | ||
66 | jsonObject.Add("codepage", this.Codepage.Value); | ||
67 | } | ||
68 | |||
69 | if (this.SummaryInformationCodepage.HasValue) | ||
70 | { | ||
71 | jsonObject.Add("summaryCodepage", this.SummaryInformationCodepage.Value); | ||
72 | } | ||
73 | |||
74 | jsonObject.AddIsNotNullOrEmpty("culture", this.Culture); | ||
75 | |||
76 | // Serialize bind variables. | ||
77 | if (this.Variables.Count > 0) | ||
78 | { | ||
79 | var variablesJson = new JsonArray(this.Variables.Count); | ||
80 | |||
81 | foreach (var variable in this.Variables) | ||
82 | { | ||
83 | var variableJson = variable.Serialize(); | ||
84 | |||
85 | variablesJson.Add(variableJson); | ||
86 | } | ||
87 | |||
88 | jsonObject.Add("variables", variablesJson); | ||
89 | } | ||
90 | |||
91 | // Serialize localized control. | ||
92 | if (this.LocalizedControls.Count > 0) | ||
93 | { | ||
94 | var controlsJson = new JsonObject(); | ||
95 | |||
96 | foreach (var controlWithKey in this.LocalizedControls) | ||
97 | { | ||
98 | var controlJson = controlWithKey.Value.Serialize(); | ||
99 | |||
100 | controlsJson.Add(controlWithKey.Key, controlJson); | ||
101 | } | ||
102 | |||
103 | jsonObject.Add("controls", controlsJson); | ||
104 | } | ||
105 | |||
106 | return jsonObject; | ||
107 | } | ||
108 | |||
109 | internal static Localization Deserialize(JsonObject jsonObject) | ||
110 | { | ||
111 | var codepage = jsonObject.GetValueOrDefault("codepage", null); | ||
112 | var summaryCodepage = jsonObject.GetValueOrDefault("summaryCodepage", null); | ||
113 | var culture = jsonObject.GetValueOrDefault<string>("culture"); | ||
114 | |||
115 | var variables = new Dictionary<string, BindVariable>(); | ||
116 | var variablesJson = jsonObject.GetValueOrDefault("variables", new JsonArray()); | ||
117 | foreach (JsonObject variableJson in variablesJson) | ||
118 | { | ||
119 | var bindPath = BindVariable.Deserialize(variableJson); | ||
120 | variables.Add(bindPath.Id, bindPath); | ||
121 | } | ||
122 | |||
123 | var controls = new Dictionary<string, LocalizedControl>(); | ||
124 | var controlsJson = jsonObject.GetValueOrDefault<JsonObject>("controls"); | ||
125 | if (controlsJson != null) | ||
126 | { | ||
127 | foreach (var controlJsonWithKey in controlsJson) | ||
128 | { | ||
129 | var control = LocalizedControl.Deserialize((JsonObject)controlJsonWithKey.Value); | ||
130 | controls.Add(controlJsonWithKey.Key, control); | ||
131 | } | ||
132 | } | ||
133 | |||
134 | return new Localization(codepage, summaryCodepage, culture, variables, controls); | ||
135 | } | ||
136 | } | ||
137 | } | ||
diff --git a/src/api/wix/WixToolset.Data/LocalizedControl.cs b/src/api/wix/WixToolset.Data/LocalizedControl.cs new file mode 100644 index 00000000..1252842b --- /dev/null +++ b/src/api/wix/WixToolset.Data/LocalizedControl.cs | |||
@@ -0,0 +1,94 @@ | |||
1 | // Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. | ||
2 | |||
3 | namespace WixToolset.Data | ||
4 | { | ||
5 | using System; | ||
6 | using SimpleJson; | ||
7 | |||
8 | public class LocalizedControl | ||
9 | { | ||
10 | public LocalizedControl(string dialog, string control, int x, int y, int width, int height, bool rightToLeft, bool rightAligned, bool leftScroll, string text) | ||
11 | { | ||
12 | this.Dialog = dialog; | ||
13 | this.Control = control; | ||
14 | this.X = x; | ||
15 | this.Y = y; | ||
16 | this.Width = width; | ||
17 | this.Height = height; | ||
18 | this.RightToLeft = rightToLeft; | ||
19 | this.RightAligned = rightAligned; | ||
20 | this.LeftScroll = leftScroll; | ||
21 | this.Text = text; | ||
22 | } | ||
23 | |||
24 | public string Dialog { get; } | ||
25 | |||
26 | public string Control { get; } | ||
27 | |||
28 | public int X { get; } | ||
29 | |||
30 | public int Y { get; } | ||
31 | |||
32 | public int Width { get; } | ||
33 | |||
34 | public int Height { get; } | ||
35 | |||
36 | public bool RightToLeft { get; } | ||
37 | |||
38 | public bool RightAligned { get; } | ||
39 | |||
40 | public bool LeftScroll { get; } | ||
41 | |||
42 | public string Text { get; } | ||
43 | |||
44 | /// <summary> | ||
45 | /// Get key for a localized control. | ||
46 | /// </summary> | ||
47 | /// <returns>The localized control id.</returns> | ||
48 | public string GetKey() => LocalizedControl.GetKey(this.Dialog, this.Control); | ||
49 | |||
50 | /// <summary> | ||
51 | /// Get key for a localized control. | ||
52 | /// </summary> | ||
53 | /// <param name="dialog">The optional id of the control's dialog.</param> | ||
54 | /// <param name="control">The id of the control.</param> | ||
55 | /// <returns>The localized control id.</returns> | ||
56 | public static string GetKey(string dialog, string control) => String.Concat(dialog, "/", control); | ||
57 | |||
58 | internal JsonObject Serialize() | ||
59 | { | ||
60 | var jsonObject = new JsonObject | ||
61 | { | ||
62 | { "dialog", this.Dialog }, | ||
63 | }; | ||
64 | |||
65 | jsonObject.AddIsNotNullOrEmpty("control", this.Control); | ||
66 | jsonObject.AddNonDefaultValue("x", this.X); | ||
67 | jsonObject.AddNonDefaultValue("y", this.Y); | ||
68 | jsonObject.AddNonDefaultValue("width", this.Width); | ||
69 | jsonObject.AddNonDefaultValue("height", this.Height); | ||
70 | jsonObject.AddNonDefaultValue("rightToLeft", this.RightToLeft); | ||
71 | jsonObject.AddNonDefaultValue("rightAligned", this.RightAligned); | ||
72 | jsonObject.AddNonDefaultValue("leftScroll", this.LeftScroll); | ||
73 | jsonObject.AddIsNotNullOrEmpty("text", this.Text); | ||
74 | |||
75 | return jsonObject; | ||
76 | } | ||
77 | |||
78 | internal static LocalizedControl Deserialize(JsonObject jsonObject) | ||
79 | { | ||
80 | var dialog = jsonObject.GetValueOrDefault<string>("dialog"); | ||
81 | var control = jsonObject.GetValueOrDefault<string>("control"); | ||
82 | var x = jsonObject.GetValueOrDefault("x", 0); | ||
83 | var y = jsonObject.GetValueOrDefault("y", 0); | ||
84 | var width = jsonObject.GetValueOrDefault("width", 0); | ||
85 | var height = jsonObject.GetValueOrDefault("height", 0); | ||
86 | var rightToLeft = jsonObject.GetValueOrDefault("rightToLeft", false); | ||
87 | var rightAligned = jsonObject.GetValueOrDefault("rightAligned", false); | ||
88 | var leftScroll = jsonObject.GetValueOrDefault("leftScroll", false); | ||
89 | var text = jsonObject.GetValueOrDefault<string>("text"); | ||
90 | |||
91 | return new LocalizedControl(dialog, control, x, y, width, height, rightToLeft, rightAligned, leftScroll, text); | ||
92 | } | ||
93 | } | ||
94 | } | ||
diff --git a/src/api/wix/WixToolset.Data/Message.cs b/src/api/wix/WixToolset.Data/Message.cs new file mode 100644 index 00000000..85a402e5 --- /dev/null +++ b/src/api/wix/WixToolset.Data/Message.cs | |||
@@ -0,0 +1,97 @@ | |||
1 | // Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. | ||
2 | |||
3 | namespace WixToolset.Data | ||
4 | { | ||
5 | using System; | ||
6 | using System.Resources; | ||
7 | |||
8 | /// <summary> | ||
9 | /// Event args for message events. | ||
10 | /// </summary> | ||
11 | public class Message | ||
12 | { | ||
13 | /// <summary> | ||
14 | /// Creates a new Message using a format string. | ||
15 | /// </summary> | ||
16 | /// <param name="sourceLineNumbers">Source line numbers for the message.</param> | ||
17 | /// <param name="level">Message level.</param> | ||
18 | /// <param name="id">Id for the message.</param> | ||
19 | /// <param name="format">Format .</param> | ||
20 | /// <param name="messageArgs">Arguments for the format string.</param> | ||
21 | public Message(SourceLineNumber sourceLineNumbers, MessageLevel level, int id, string format, params object[] messageArgs) | ||
22 | { | ||
23 | this.SourceLineNumbers = sourceLineNumbers; | ||
24 | this.Level = level; | ||
25 | this.Id = id; | ||
26 | this.ResourceNameOrFormat = format; | ||
27 | this.MessageArgs = messageArgs; | ||
28 | } | ||
29 | |||
30 | /// <summary> | ||
31 | /// Creates a new Message using a format string from a resource manager. | ||
32 | /// </summary> | ||
33 | /// <param name="sourceLineNumbers">Source line numbers for the message.</param> | ||
34 | /// <param name="level">Message level.</param> | ||
35 | /// <param name="id">Id for the message.</param> | ||
36 | /// <param name="resourceManager">Resource manager.</param> | ||
37 | /// <param name="resourceName">Name of the resource.</param> | ||
38 | /// <param name="messageArgs">Arguments for the format string.</param> | ||
39 | public Message(SourceLineNumber sourceLineNumbers, MessageLevel level, int id, ResourceManager resourceManager, string resourceName, params object[] messageArgs) | ||
40 | { | ||
41 | this.SourceLineNumbers = sourceLineNumbers; | ||
42 | this.Level = level; | ||
43 | this.Id = id; | ||
44 | this.ResourceManager = resourceManager; | ||
45 | this.ResourceNameOrFormat = resourceName; | ||
46 | this.MessageArgs = messageArgs; | ||
47 | } | ||
48 | |||
49 | /// <summary> | ||
50 | /// Gets the source line numbers. | ||
51 | /// </summary> | ||
52 | /// <value>The source line numbers.</value> | ||
53 | public SourceLineNumber SourceLineNumbers { get; } | ||
54 | |||
55 | /// <summary> | ||
56 | /// Gets the Id for the message. | ||
57 | /// </summary> | ||
58 | /// <value>The Id for the message.</value> | ||
59 | public int Id { get; } | ||
60 | |||
61 | /// <summary> | ||
62 | /// Gets the resource manager for this event args. | ||
63 | /// </summary> | ||
64 | /// <value>The resource manager for this event args.</value> | ||
65 | public ResourceManager ResourceManager { get; } | ||
66 | |||
67 | /// <summary> | ||
68 | /// Gets the name of the resource or format string if no resource manager was provided. | ||
69 | /// </summary> | ||
70 | /// <value>The name of the resource or format string.</value> | ||
71 | public string ResourceNameOrFormat { get; } | ||
72 | |||
73 | /// <summary> | ||
74 | /// Gets or sets the <see cref="MessageLevel"/> for the message. | ||
75 | /// </summary> | ||
76 | /// <value>The <see cref="MessageLevel"/> for the message.</value> | ||
77 | public MessageLevel Level { get; private set; } | ||
78 | |||
79 | /// <summary> | ||
80 | /// Gets the arguments for the format string. | ||
81 | /// </summary> | ||
82 | /// <value>The arguments for the format string.</value> | ||
83 | public object[] MessageArgs { get; } | ||
84 | |||
85 | public override string ToString() | ||
86 | { | ||
87 | if (this.ResourceManager == null) | ||
88 | { | ||
89 | return String.Format(this.ResourceNameOrFormat, this.MessageArgs); | ||
90 | } | ||
91 | else | ||
92 | { | ||
93 | return String.Format(this.ResourceManager.GetString(this.ResourceNameOrFormat), this.MessageArgs); | ||
94 | } | ||
95 | } | ||
96 | } | ||
97 | } | ||
diff --git a/src/api/wix/WixToolset.Data/MessageLevel.cs b/src/api/wix/WixToolset.Data/MessageLevel.cs new file mode 100644 index 00000000..d980e371 --- /dev/null +++ b/src/api/wix/WixToolset.Data/MessageLevel.cs | |||
@@ -0,0 +1,25 @@ | |||
1 | // Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. | ||
2 | |||
3 | namespace WixToolset.Data | ||
4 | { | ||
5 | /// <summary> | ||
6 | /// Enum for message to display. | ||
7 | /// </summary> | ||
8 | public enum MessageLevel | ||
9 | { | ||
10 | /// <summary>Display nothing.</summary> | ||
11 | Nothing, | ||
12 | |||
13 | /// <summary>Display verbose information.</summary> | ||
14 | Verbose, | ||
15 | |||
16 | /// <summary>Display information.</summary> | ||
17 | Information, | ||
18 | |||
19 | /// <summary>Display warning.</summary> | ||
20 | Warning, | ||
21 | |||
22 | /// <summary>Display error.</summary> | ||
23 | Error, | ||
24 | } | ||
25 | } | ||
diff --git a/src/api/wix/WixToolset.Data/OutputType.cs b/src/api/wix/WixToolset.Data/OutputType.cs new file mode 100644 index 00000000..3bbdddcc --- /dev/null +++ b/src/api/wix/WixToolset.Data/OutputType.cs | |||
@@ -0,0 +1,37 @@ | |||
1 | // Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. | ||
2 | |||
3 | namespace WixToolset.Data | ||
4 | { | ||
5 | /// <summary> | ||
6 | /// Various types of output. | ||
7 | /// </summary> | ||
8 | public enum OutputType | ||
9 | { | ||
10 | /// <summary>Unknown output type.</summary> | ||
11 | Unknown, | ||
12 | |||
13 | /// <summary>Bundle output type.</summary> | ||
14 | Bundle, | ||
15 | |||
16 | /// <summary>Library output type.</summary> | ||
17 | Library, | ||
18 | |||
19 | /// <summary>Module output type.</summary> | ||
20 | Module, | ||
21 | |||
22 | /// <summary>Patch output type.</summary> | ||
23 | Patch, | ||
24 | |||
25 | /// <summary>Patch Creation output type.</summary> | ||
26 | PatchCreation, | ||
27 | |||
28 | /// <summary>Product output type.</summary> | ||
29 | Product, | ||
30 | |||
31 | /// <summary>Transform output type.</summary> | ||
32 | Transform, | ||
33 | |||
34 | /// <summary>Intermediate representation post-link output type.</summary> | ||
35 | IntermediatePostLink, | ||
36 | } | ||
37 | } | ||
diff --git a/src/api/wix/WixToolset.Data/PackagingType.cs b/src/api/wix/WixToolset.Data/PackagingType.cs new file mode 100644 index 00000000..a50f1236 --- /dev/null +++ b/src/api/wix/WixToolset.Data/PackagingType.cs | |||
@@ -0,0 +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. | ||
2 | |||
3 | namespace WixToolset.Data | ||
4 | { | ||
5 | public enum PackagingType | ||
6 | { | ||
7 | Unknown, | ||
8 | Embedded, | ||
9 | External, | ||
10 | } | ||
11 | } | ||
diff --git a/src/api/wix/WixToolset.Data/PdbType.cs b/src/api/wix/WixToolset.Data/PdbType.cs new file mode 100644 index 00000000..fcbf9cb7 --- /dev/null +++ b/src/api/wix/WixToolset.Data/PdbType.cs | |||
@@ -0,0 +1,16 @@ | |||
1 | // Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. | ||
2 | |||
3 | namespace WixToolset.Data | ||
4 | { | ||
5 | /// <summary> | ||
6 | /// Platforms supported by compiler. | ||
7 | /// </summary> | ||
8 | public enum PdbType | ||
9 | { | ||
10 | /// <summary>A .wixpdb file matching the generated output (default).</summary> | ||
11 | Full, | ||
12 | |||
13 | /// <summary>No .wixpdb file.</summary> | ||
14 | None, | ||
15 | } | ||
16 | } | ||
diff --git a/src/api/wix/WixToolset.Data/Platform.cs b/src/api/wix/WixToolset.Data/Platform.cs new file mode 100644 index 00000000..f939ac55 --- /dev/null +++ b/src/api/wix/WixToolset.Data/Platform.cs | |||
@@ -0,0 +1,19 @@ | |||
1 | // Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. | ||
2 | |||
3 | namespace WixToolset.Data | ||
4 | { | ||
5 | /// <summary> | ||
6 | /// Platforms supported by compiler. | ||
7 | /// </summary> | ||
8 | public enum Platform | ||
9 | { | ||
10 | /// <summary>x86.</summary> | ||
11 | X86, | ||
12 | |||
13 | /// <summary>x64.</summary> | ||
14 | X64, | ||
15 | |||
16 | /// <summary>arm64.</summary> | ||
17 | ARM64, | ||
18 | } | ||
19 | } | ||
diff --git a/src/api/wix/WixToolset.Data/SectionType.cs b/src/api/wix/WixToolset.Data/SectionType.cs new file mode 100644 index 00000000..3322ba1a --- /dev/null +++ b/src/api/wix/WixToolset.Data/SectionType.cs | |||
@@ -0,0 +1,31 @@ | |||
1 | // Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. | ||
2 | |||
3 | namespace WixToolset.Data | ||
4 | { | ||
5 | /// <summary> | ||
6 | /// Type of section. | ||
7 | /// </summary> | ||
8 | public enum SectionType | ||
9 | { | ||
10 | /// <summary>Unknown section type, default and invalid.</summary> | ||
11 | Unknown, | ||
12 | |||
13 | /// <summary>Bundle section type.</summary> | ||
14 | Bundle, | ||
15 | |||
16 | /// <summary>Fragment section type.</summary> | ||
17 | Fragment, | ||
18 | |||
19 | /// <summary>Module section type.</summary> | ||
20 | Module, | ||
21 | |||
22 | /// <summary>Product section type.</summary> | ||
23 | Product, | ||
24 | |||
25 | /// <summary>Patch creation section type.</summary> | ||
26 | PatchCreation, | ||
27 | |||
28 | /// <summary>Patch section type.</summary> | ||
29 | Patch | ||
30 | } | ||
31 | } | ||
diff --git a/src/api/wix/WixToolset.Data/SimpleSymbolDefinitionCreator.cs b/src/api/wix/WixToolset.Data/SimpleSymbolDefinitionCreator.cs new file mode 100644 index 00000000..e22d53e7 --- /dev/null +++ b/src/api/wix/WixToolset.Data/SimpleSymbolDefinitionCreator.cs | |||
@@ -0,0 +1,31 @@ | |||
1 | // Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. | ||
2 | |||
3 | namespace WixToolset.Data | ||
4 | { | ||
5 | using System.Collections.Generic; | ||
6 | |||
7 | internal class SimpleSymbolDefinitionCreator : ISymbolDefinitionCreator | ||
8 | { | ||
9 | private Dictionary<string, IntermediateSymbolDefinition> CustomDefinitionByName { get; } = new Dictionary<string, IntermediateSymbolDefinition>(); | ||
10 | |||
11 | public void AddCustomSymbolDefinition(IntermediateSymbolDefinition definition) | ||
12 | { | ||
13 | if (!this.CustomDefinitionByName.TryGetValue(definition.Name, out var existing) || definition.Revision > existing.Revision) | ||
14 | { | ||
15 | this.CustomDefinitionByName[definition.Name] = definition; | ||
16 | } | ||
17 | } | ||
18 | |||
19 | public bool TryGetSymbolDefinitionByName(string name, out IntermediateSymbolDefinition symbolDefinition) | ||
20 | { | ||
21 | symbolDefinition = SymbolDefinitions.ByName(name); | ||
22 | |||
23 | if (symbolDefinition == null) | ||
24 | { | ||
25 | symbolDefinition = this.CustomDefinitionByName.GetValueOrDefault(name); | ||
26 | } | ||
27 | |||
28 | return symbolDefinition != null; | ||
29 | } | ||
30 | } | ||
31 | } | ||
diff --git a/src/api/wix/WixToolset.Data/SourceLineNumber.cs b/src/api/wix/WixToolset.Data/SourceLineNumber.cs new file mode 100644 index 00000000..970f17e7 --- /dev/null +++ b/src/api/wix/WixToolset.Data/SourceLineNumber.cs | |||
@@ -0,0 +1,275 @@ | |||
1 | // Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. | ||
2 | |||
3 | namespace WixToolset.Data | ||
4 | { | ||
5 | using System; | ||
6 | using System.IO; | ||
7 | using System.Text; | ||
8 | using System.Xml; | ||
9 | using System.Xml.Linq; | ||
10 | using SimpleJson; | ||
11 | |||
12 | /// <summary> | ||
13 | /// Represents file name and line number for source file | ||
14 | /// </summary> | ||
15 | public sealed class SourceLineNumber | ||
16 | { | ||
17 | /// <summary> | ||
18 | /// Constructor for a source with no line information. | ||
19 | /// </summary> | ||
20 | /// <param name="fileName">File name of the source.</param> | ||
21 | public SourceLineNumber(string fileName) | ||
22 | { | ||
23 | this.FileName = fileName; | ||
24 | } | ||
25 | |||
26 | /// <summary> | ||
27 | /// Constructor for a source with line information. | ||
28 | /// </summary> | ||
29 | /// <param name="fileName">File name of the source.</param> | ||
30 | /// <param name="lineNumber">Line number of the source.</param> | ||
31 | public SourceLineNumber(string fileName, int lineNumber) | ||
32 | { | ||
33 | this.FileName = fileName; | ||
34 | this.LineNumber = lineNumber; | ||
35 | } | ||
36 | |||
37 | /// <summary> | ||
38 | /// Constructor for a source with a parent and no line information. | ||
39 | /// </summary> | ||
40 | /// <param name="fileName">File name of the source.</param> | ||
41 | /// <param name="parent">Parent of this source line number</param> | ||
42 | public SourceLineNumber(string fileName, SourceLineNumber parent) | ||
43 | { | ||
44 | this.FileName = fileName; | ||
45 | this.Parent = parent; | ||
46 | } | ||
47 | |||
48 | /// <summary> | ||
49 | /// Constructor for a source with a parent and line information. | ||
50 | /// </summary> | ||
51 | /// <param name="fileName">File name of the source.</param> | ||
52 | /// <param name="parent">Parent of this source line number</param> | ||
53 | /// <param name="lineNumber">Line number of the source.</param> | ||
54 | public SourceLineNumber(string fileName, SourceLineNumber parent, int lineNumber) | ||
55 | { | ||
56 | this.FileName = fileName; | ||
57 | this.Parent = parent; | ||
58 | this.LineNumber = lineNumber; | ||
59 | } | ||
60 | |||
61 | /// <summary> | ||
62 | /// Gets the file name of the source. | ||
63 | /// </summary> | ||
64 | /// <value>File name for the source.</value> | ||
65 | public string FileName { get; } | ||
66 | |||
67 | /// <summary> | ||
68 | /// Gets or sets the line number of the source. | ||
69 | /// </summary> | ||
70 | /// <value>Line number of the source.</value> | ||
71 | public int? LineNumber { get; set; } | ||
72 | |||
73 | /// <summary> | ||
74 | /// Gets or sets the parent source line number that included this source line number. | ||
75 | /// </summary> | ||
76 | public SourceLineNumber Parent { get; private set; } | ||
77 | |||
78 | /// <summary> | ||
79 | /// Gets the file name and line information. | ||
80 | /// </summary> | ||
81 | /// <value>File name and line information.</value> | ||
82 | public string QualifiedFileName => this.LineNumber.HasValue ? String.Concat(this.FileName, "*", this.LineNumber) : this.FileName; | ||
83 | |||
84 | internal static SourceLineNumber Deserialize(JsonObject jsonObject) | ||
85 | { | ||
86 | var fileName = jsonObject.GetValueOrDefault<string>("file"); | ||
87 | var lineNumber = jsonObject.GetValueOrDefault("line", null); | ||
88 | |||
89 | var parentJson = jsonObject.GetValueOrDefault<JsonObject>("parent"); | ||
90 | var parent = (parentJson == null) ? null : SourceLineNumber.Deserialize(parentJson); | ||
91 | |||
92 | return new SourceLineNumber(fileName) | ||
93 | { | ||
94 | LineNumber = lineNumber, | ||
95 | Parent = parent | ||
96 | }; | ||
97 | } | ||
98 | |||
99 | internal JsonObject Serialize() | ||
100 | { | ||
101 | var jsonObject = new JsonObject | ||
102 | { | ||
103 | { "file", this.FileName }, | ||
104 | { "line", this.LineNumber } | ||
105 | }; | ||
106 | |||
107 | if (this.Parent != null) | ||
108 | { | ||
109 | var parentJson = this.Parent.Serialize(); | ||
110 | jsonObject.Add("parent", parentJson); | ||
111 | } | ||
112 | |||
113 | return jsonObject; | ||
114 | } | ||
115 | |||
116 | /// <summary> | ||
117 | /// Creates a source line number from an encoded string. | ||
118 | /// </summary> | ||
119 | /// <param name="encodedSourceLineNumbers">Encoded string to parse.</param> | ||
120 | public static SourceLineNumber CreateFromEncoded(string encodedSourceLineNumbers) | ||
121 | { | ||
122 | var linesSplitIndex = encodedSourceLineNumbers.IndexOf('|'); | ||
123 | |||
124 | // The most common case is that there is a single encoded line, | ||
125 | // so optimize for that case. | ||
126 | if (linesSplitIndex < 0) | ||
127 | { | ||
128 | return DecodeSourceLineNumber(encodedSourceLineNumbers, 0, -1); | ||
129 | } | ||
130 | else // decode the multiple lines. | ||
131 | { | ||
132 | var startLine = 0; | ||
133 | |||
134 | SourceLineNumber first = null; | ||
135 | SourceLineNumber parent = null; | ||
136 | while (startLine < encodedSourceLineNumbers.Length) | ||
137 | { | ||
138 | var source = DecodeSourceLineNumber(encodedSourceLineNumbers, startLine, linesSplitIndex - 1); | ||
139 | |||
140 | if (null != parent) | ||
141 | { | ||
142 | parent.Parent = source; | ||
143 | } | ||
144 | |||
145 | parent = source; | ||
146 | if (null == first) | ||
147 | { | ||
148 | first = parent; | ||
149 | } | ||
150 | |||
151 | if (linesSplitIndex < 0) | ||
152 | { | ||
153 | break; | ||
154 | } | ||
155 | |||
156 | startLine = linesSplitIndex + 1; | ||
157 | linesSplitIndex = encodedSourceLineNumbers.IndexOf('|', startLine); | ||
158 | } | ||
159 | |||
160 | return first; | ||
161 | } | ||
162 | } | ||
163 | |||
164 | /// <summary> | ||
165 | /// Creates a source line number from a URI. | ||
166 | /// </summary> | ||
167 | /// <param name="uri">Uri to convert into source line number</param> | ||
168 | public static SourceLineNumber CreateFromUri(string uri) | ||
169 | { | ||
170 | if (String.IsNullOrEmpty(uri)) | ||
171 | { | ||
172 | return null; | ||
173 | } | ||
174 | |||
175 | // make the local path look like a normal local path | ||
176 | var localPath = new Uri(uri).LocalPath; | ||
177 | localPath = localPath.TrimStart(Path.AltDirectorySeparatorChar).Replace(Path.AltDirectorySeparatorChar, Path.DirectorySeparatorChar); | ||
178 | |||
179 | return new SourceLineNumber(localPath); | ||
180 | } | ||
181 | |||
182 | /// <summary> | ||
183 | /// Creates a source line number from an XObject. | ||
184 | /// </summary> | ||
185 | /// <param name="node">XML node to create source line number from.</param> | ||
186 | /// <param name="offset">Optional line number offset into XML file not already included in the line information.</param> | ||
187 | public static SourceLineNumber CreateFromXObject(XObject node, int offset = 0) | ||
188 | { | ||
189 | var result = CreateFromUri(node.BaseUri); | ||
190 | if (null != result && node is IXmlLineInfo lineInfo) | ||
191 | { | ||
192 | result.LineNumber = lineInfo.LineNumber + offset; | ||
193 | } | ||
194 | |||
195 | return result; | ||
196 | } | ||
197 | |||
198 | /// <summary> | ||
199 | /// Get the source line information for the current element. Typically this information | ||
200 | /// is set by the precompiler for each element that it encounters. | ||
201 | /// </summary> | ||
202 | /// <param name="node">Element to get source line information for.</param> | ||
203 | /// <returns> | ||
204 | /// The source line number used to author the element being processed or | ||
205 | /// null if the preprocessor did not process the element or the node is | ||
206 | /// not an element. | ||
207 | /// </returns> | ||
208 | public static SourceLineNumber GetFromXAnnotation(XObject node) | ||
209 | { | ||
210 | return node.Annotation<SourceLineNumber>(); | ||
211 | } | ||
212 | |||
213 | /// <summary> | ||
214 | /// Returns the SourceLineNumber and parents encoded as a string. | ||
215 | /// </summary> | ||
216 | public string GetEncoded() | ||
217 | { | ||
218 | var sb = new StringBuilder(this.QualifiedFileName); | ||
219 | |||
220 | for (var parent = this.Parent; null != parent; parent = parent.Parent) | ||
221 | { | ||
222 | sb.Append("|"); | ||
223 | sb.Append(parent.QualifiedFileName); | ||
224 | } | ||
225 | |||
226 | return sb.ToString(); | ||
227 | } | ||
228 | |||
229 | /// <summary> | ||
230 | /// Determines if two SourceLineNumbers are equivalent. | ||
231 | /// </summary> | ||
232 | /// <param name="obj">Object to compare.</param> | ||
233 | /// <returns>True if SourceLineNumbers are equivalent.</returns> | ||
234 | public override bool Equals(object obj) | ||
235 | { | ||
236 | return obj is SourceLineNumber other && | ||
237 | this.LineNumber.HasValue == other.LineNumber.HasValue && | ||
238 | (!this.LineNumber.HasValue || this.LineNumber == other.LineNumber) && | ||
239 | this.FileName.Equals(other.FileName, StringComparison.OrdinalIgnoreCase) && | ||
240 | (null == this.Parent && null == other.Parent || this.Parent.Equals(other.Parent)); | ||
241 | } | ||
242 | |||
243 | /// <summary> | ||
244 | /// Serves as a hash code for a particular type. | ||
245 | /// </summary> | ||
246 | /// <returns>The hash code.</returns> | ||
247 | public override int GetHashCode() | ||
248 | { | ||
249 | return this.GetEncoded().GetHashCode(); | ||
250 | } | ||
251 | |||
252 | /// <summary> | ||
253 | /// Shows a string representation of a source line number. | ||
254 | /// </summary> | ||
255 | /// <returns>String representation of a source line number.</returns> | ||
256 | public override string ToString() | ||
257 | { | ||
258 | return this.LineNumber.HasValue && !String.IsNullOrEmpty(this.FileName) ? String.Concat(this.FileName, "(", this.LineNumber, ")") : this.FileName ?? String.Empty; | ||
259 | } | ||
260 | |||
261 | private static SourceLineNumber DecodeSourceLineNumber(string encoded, int startIndex, int endIndex) | ||
262 | { | ||
263 | if (endIndex < 0) | ||
264 | { | ||
265 | endIndex = encoded.Length - 1; | ||
266 | } | ||
267 | |||
268 | var count = endIndex - startIndex; | ||
269 | var filenameSplitIndex = encoded.LastIndexOf('*', endIndex - 1, count); | ||
270 | return (filenameSplitIndex < 0) ? new SourceLineNumber(encoded) : | ||
271 | new SourceLineNumber(encoded.Substring(startIndex, filenameSplitIndex - startIndex), | ||
272 | Convert.ToInt32(encoded.Substring(filenameSplitIndex + 1, endIndex - filenameSplitIndex))); | ||
273 | } | ||
274 | } | ||
275 | } | ||
diff --git a/src/api/wix/WixToolset.Data/Symbols/ActionTextSymbol.cs b/src/api/wix/WixToolset.Data/Symbols/ActionTextSymbol.cs new file mode 100644 index 00000000..80662060 --- /dev/null +++ b/src/api/wix/WixToolset.Data/Symbols/ActionTextSymbol.cs | |||
@@ -0,0 +1,60 @@ | |||
1 | // Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. | ||
2 | |||
3 | namespace WixToolset.Data | ||
4 | { | ||
5 | using WixToolset.Data.Symbols; | ||
6 | |||
7 | public static partial class SymbolDefinitions | ||
8 | { | ||
9 | public static readonly IntermediateSymbolDefinition ActionText = new IntermediateSymbolDefinition( | ||
10 | SymbolDefinitionType.ActionText, | ||
11 | new[] | ||
12 | { | ||
13 | new IntermediateFieldDefinition(nameof(ActionTextSymbolFields.Action), IntermediateFieldType.String), | ||
14 | new IntermediateFieldDefinition(nameof(ActionTextSymbolFields.Description), IntermediateFieldType.String), | ||
15 | new IntermediateFieldDefinition(nameof(ActionTextSymbolFields.Template), IntermediateFieldType.String), | ||
16 | }, | ||
17 | typeof(ActionTextSymbol)); | ||
18 | } | ||
19 | } | ||
20 | |||
21 | namespace WixToolset.Data.Symbols | ||
22 | { | ||
23 | public enum ActionTextSymbolFields | ||
24 | { | ||
25 | Action, | ||
26 | Description, | ||
27 | Template, | ||
28 | } | ||
29 | |||
30 | public class ActionTextSymbol : IntermediateSymbol | ||
31 | { | ||
32 | public ActionTextSymbol() : base(SymbolDefinitions.ActionText, null, null) | ||
33 | { | ||
34 | } | ||
35 | |||
36 | public ActionTextSymbol(SourceLineNumber sourceLineNumber, Identifier id = null) : base(SymbolDefinitions.ActionText, sourceLineNumber, id) | ||
37 | { | ||
38 | } | ||
39 | |||
40 | public IntermediateField this[ActionTextSymbolFields index] => this.Fields[(int)index]; | ||
41 | |||
42 | public string Action | ||
43 | { | ||
44 | get => (string)this.Fields[(int)ActionTextSymbolFields.Action]; | ||
45 | set => this.Set((int)ActionTextSymbolFields.Action, value); | ||
46 | } | ||
47 | |||
48 | public string Description | ||
49 | { | ||
50 | get => (string)this.Fields[(int)ActionTextSymbolFields.Description]; | ||
51 | set => this.Set((int)ActionTextSymbolFields.Description, value); | ||
52 | } | ||
53 | |||
54 | public string Template | ||
55 | { | ||
56 | get => (string)this.Fields[(int)ActionTextSymbolFields.Template]; | ||
57 | set => this.Set((int)ActionTextSymbolFields.Template, value); | ||
58 | } | ||
59 | } | ||
60 | } \ No newline at end of file | ||
diff --git a/src/api/wix/WixToolset.Data/Symbols/AppIdSymbol.cs b/src/api/wix/WixToolset.Data/Symbols/AppIdSymbol.cs new file mode 100644 index 00000000..3eafa26f --- /dev/null +++ b/src/api/wix/WixToolset.Data/Symbols/AppIdSymbol.cs | |||
@@ -0,0 +1,92 @@ | |||
1 | // Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. | ||
2 | |||
3 | namespace WixToolset.Data | ||
4 | { | ||
5 | using WixToolset.Data.Symbols; | ||
6 | |||
7 | public static partial class SymbolDefinitions | ||
8 | { | ||
9 | public static readonly IntermediateSymbolDefinition AppId = new IntermediateSymbolDefinition( | ||
10 | SymbolDefinitionType.AppId, | ||
11 | new[] | ||
12 | { | ||
13 | new IntermediateFieldDefinition(nameof(AppIdSymbolFields.AppId), IntermediateFieldType.String), | ||
14 | new IntermediateFieldDefinition(nameof(AppIdSymbolFields.RemoteServerName), IntermediateFieldType.String), | ||
15 | new IntermediateFieldDefinition(nameof(AppIdSymbolFields.LocalService), IntermediateFieldType.String), | ||
16 | new IntermediateFieldDefinition(nameof(AppIdSymbolFields.ServiceParameters), IntermediateFieldType.String), | ||
17 | new IntermediateFieldDefinition(nameof(AppIdSymbolFields.DllSurrogate), IntermediateFieldType.String), | ||
18 | new IntermediateFieldDefinition(nameof(AppIdSymbolFields.ActivateAtStorage), IntermediateFieldType.Number), | ||
19 | new IntermediateFieldDefinition(nameof(AppIdSymbolFields.RunAsInteractiveUser), IntermediateFieldType.Number), | ||
20 | }, | ||
21 | typeof(AppIdSymbol)); | ||
22 | } | ||
23 | } | ||
24 | |||
25 | namespace WixToolset.Data.Symbols | ||
26 | { | ||
27 | public enum AppIdSymbolFields | ||
28 | { | ||
29 | AppId, | ||
30 | RemoteServerName, | ||
31 | LocalService, | ||
32 | ServiceParameters, | ||
33 | DllSurrogate, | ||
34 | ActivateAtStorage, | ||
35 | RunAsInteractiveUser, | ||
36 | } | ||
37 | |||
38 | public class AppIdSymbol : IntermediateSymbol | ||
39 | { | ||
40 | public AppIdSymbol() : base(SymbolDefinitions.AppId, null, null) | ||
41 | { | ||
42 | } | ||
43 | |||
44 | public AppIdSymbol(SourceLineNumber sourceLineNumber, Identifier id = null) : base(SymbolDefinitions.AppId, sourceLineNumber, id) | ||
45 | { | ||
46 | } | ||
47 | |||
48 | public IntermediateField this[AppIdSymbolFields index] => this.Fields[(int)index]; | ||
49 | |||
50 | public string AppId | ||
51 | { | ||
52 | get => (string)this.Fields[(int)AppIdSymbolFields.AppId]; | ||
53 | set => this.Set((int)AppIdSymbolFields.AppId, value); | ||
54 | } | ||
55 | |||
56 | public string RemoteServerName | ||
57 | { | ||
58 | get => (string)this.Fields[(int)AppIdSymbolFields.RemoteServerName]; | ||
59 | set => this.Set((int)AppIdSymbolFields.RemoteServerName, value); | ||
60 | } | ||
61 | |||
62 | public string LocalService | ||
63 | { | ||
64 | get => (string)this.Fields[(int)AppIdSymbolFields.LocalService]; | ||
65 | set => this.Set((int)AppIdSymbolFields.LocalService, value); | ||
66 | } | ||
67 | |||
68 | public string ServiceParameters | ||
69 | { | ||
70 | get => (string)this.Fields[(int)AppIdSymbolFields.ServiceParameters]; | ||
71 | set => this.Set((int)AppIdSymbolFields.ServiceParameters, value); | ||
72 | } | ||
73 | |||
74 | public string DllSurrogate | ||
75 | { | ||
76 | get => (string)this.Fields[(int)AppIdSymbolFields.DllSurrogate]; | ||
77 | set => this.Set((int)AppIdSymbolFields.DllSurrogate, value); | ||
78 | } | ||
79 | |||
80 | public bool? ActivateAtStorage | ||
81 | { | ||
82 | get => (bool?)this.Fields[(int)AppIdSymbolFields.ActivateAtStorage]; | ||
83 | set => this.Set((int)AppIdSymbolFields.ActivateAtStorage, value); | ||
84 | } | ||
85 | |||
86 | public bool? RunAsInteractiveUser | ||
87 | { | ||
88 | get => (bool?)this.Fields[(int)AppIdSymbolFields.RunAsInteractiveUser]; | ||
89 | set => this.Set((int)AppIdSymbolFields.RunAsInteractiveUser, value); | ||
90 | } | ||
91 | } | ||
92 | } \ No newline at end of file | ||
diff --git a/src/api/wix/WixToolset.Data/Symbols/AppSearchSymbol.cs b/src/api/wix/WixToolset.Data/Symbols/AppSearchSymbol.cs new file mode 100644 index 00000000..2bd3d6ba --- /dev/null +++ b/src/api/wix/WixToolset.Data/Symbols/AppSearchSymbol.cs | |||
@@ -0,0 +1,52 @@ | |||
1 | // Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. | ||
2 | |||
3 | namespace WixToolset.Data | ||
4 | { | ||
5 | using WixToolset.Data.Symbols; | ||
6 | |||
7 | public static partial class SymbolDefinitions | ||
8 | { | ||
9 | public static readonly IntermediateSymbolDefinition AppSearch = new IntermediateSymbolDefinition( | ||
10 | SymbolDefinitionType.AppSearch, | ||
11 | new[] | ||
12 | { | ||
13 | new IntermediateFieldDefinition(nameof(AppSearchSymbolFields.PropertyRef), IntermediateFieldType.String), | ||
14 | new IntermediateFieldDefinition(nameof(AppSearchSymbolFields.SignatureRef), IntermediateFieldType.String), | ||
15 | }, | ||
16 | typeof(AppSearchSymbol)); | ||
17 | } | ||
18 | } | ||
19 | |||
20 | namespace WixToolset.Data.Symbols | ||
21 | { | ||
22 | public enum AppSearchSymbolFields | ||
23 | { | ||
24 | PropertyRef, | ||
25 | SignatureRef, | ||
26 | } | ||
27 | |||
28 | public class AppSearchSymbol : IntermediateSymbol | ||
29 | { | ||
30 | public AppSearchSymbol() : base(SymbolDefinitions.AppSearch, null, null) | ||
31 | { | ||
32 | } | ||
33 | |||
34 | public AppSearchSymbol(SourceLineNumber sourceLineNumber, Identifier id = null) : base(SymbolDefinitions.AppSearch, sourceLineNumber, id) | ||
35 | { | ||
36 | } | ||
37 | |||
38 | public IntermediateField this[AppSearchSymbolFields index] => this.Fields[(int)index]; | ||
39 | |||
40 | public string PropertyRef | ||
41 | { | ||
42 | get => (string)this.Fields[(int)AppSearchSymbolFields.PropertyRef]; | ||
43 | set => this.Set((int)AppSearchSymbolFields.PropertyRef, value); | ||
44 | } | ||
45 | |||
46 | public string SignatureRef | ||
47 | { | ||
48 | get => (string)this.Fields[(int)AppSearchSymbolFields.SignatureRef]; | ||
49 | set => this.Set((int)AppSearchSymbolFields.SignatureRef, value); | ||
50 | } | ||
51 | } | ||
52 | } \ No newline at end of file | ||
diff --git a/src/api/wix/WixToolset.Data/Symbols/AssemblySymbol.cs b/src/api/wix/WixToolset.Data/Symbols/AssemblySymbol.cs new file mode 100644 index 00000000..192ca4eb --- /dev/null +++ b/src/api/wix/WixToolset.Data/Symbols/AssemblySymbol.cs | |||
@@ -0,0 +1,96 @@ | |||
1 | // Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. | ||
2 | |||
3 | namespace WixToolset.Data | ||
4 | { | ||
5 | using WixToolset.Data.Symbols; | ||
6 | |||
7 | public static partial class SymbolDefinitions | ||
8 | { | ||
9 | public static readonly IntermediateSymbolDefinition Assembly = new IntermediateSymbolDefinition( | ||
10 | SymbolDefinitionType.Assembly, | ||
11 | new[] | ||
12 | { | ||
13 | new IntermediateFieldDefinition(nameof(AssemblySymbolFields.ComponentRef), IntermediateFieldType.String), | ||
14 | new IntermediateFieldDefinition(nameof(AssemblySymbolFields.FeatureRef), IntermediateFieldType.String), | ||
15 | new IntermediateFieldDefinition(nameof(AssemblySymbolFields.ManifestFileRef), IntermediateFieldType.String), | ||
16 | new IntermediateFieldDefinition(nameof(AssemblySymbolFields.ApplicationFileRef), IntermediateFieldType.String), | ||
17 | new IntermediateFieldDefinition(nameof(AssemblySymbolFields.Type), IntermediateFieldType.Number), | ||
18 | new IntermediateFieldDefinition(nameof(AssemblySymbolFields.ProcessorArchitecture), IntermediateFieldType.String), | ||
19 | }, | ||
20 | typeof(AssemblySymbol)); | ||
21 | } | ||
22 | } | ||
23 | |||
24 | namespace WixToolset.Data.Symbols | ||
25 | { | ||
26 | public enum AssemblySymbolFields | ||
27 | { | ||
28 | ComponentRef, | ||
29 | FeatureRef, | ||
30 | ManifestFileRef, | ||
31 | ApplicationFileRef, | ||
32 | Type, | ||
33 | ProcessorArchitecture, | ||
34 | } | ||
35 | |||
36 | public enum AssemblyType | ||
37 | { | ||
38 | /// <summary>File is not an assembly.</summary> | ||
39 | NotAnAssembly, | ||
40 | |||
41 | /// <summary>File is a Common Language Runtime Assembly.</summary> | ||
42 | DotNetAssembly, | ||
43 | |||
44 | /// <summary>File is Win32 SxS assembly.</summary> | ||
45 | Win32Assembly, | ||
46 | } | ||
47 | |||
48 | public class AssemblySymbol : IntermediateSymbol | ||
49 | { | ||
50 | public AssemblySymbol() : base(SymbolDefinitions.Assembly, null, null) | ||
51 | { | ||
52 | } | ||
53 | |||
54 | public AssemblySymbol(SourceLineNumber sourceLineNumber, Identifier id = null) : base(SymbolDefinitions.Assembly, sourceLineNumber, id) | ||
55 | { | ||
56 | } | ||
57 | |||
58 | public IntermediateField this[AssemblySymbolFields index] => this.Fields[(int)index]; | ||
59 | |||
60 | public string ComponentRef | ||
61 | { | ||
62 | get => (string)this.Fields[(int)AssemblySymbolFields.ComponentRef]; | ||
63 | set => this.Set((int)AssemblySymbolFields.ComponentRef, value); | ||
64 | } | ||
65 | |||
66 | public string FeatureRef | ||
67 | { | ||
68 | get => (string)this.Fields[(int)AssemblySymbolFields.FeatureRef]; | ||
69 | set => this.Set((int)AssemblySymbolFields.FeatureRef, value); | ||
70 | } | ||
71 | |||
72 | public string ManifestFileRef | ||
73 | { | ||
74 | get => (string)this.Fields[(int)AssemblySymbolFields.ManifestFileRef]; | ||
75 | set => this.Set((int)AssemblySymbolFields.ManifestFileRef, value); | ||
76 | } | ||
77 | |||
78 | public string ApplicationFileRef | ||
79 | { | ||
80 | get => (string)this.Fields[(int)AssemblySymbolFields.ApplicationFileRef]; | ||
81 | set => this.Set((int)AssemblySymbolFields.ApplicationFileRef, value); | ||
82 | } | ||
83 | |||
84 | public AssemblyType Type | ||
85 | { | ||
86 | get => (AssemblyType)this.Fields[(int)AssemblySymbolFields.Type].AsNumber(); | ||
87 | set => this.Set((int)AssemblySymbolFields.Type, (int)value); | ||
88 | } | ||
89 | |||
90 | public string ProcessorArchitecture | ||
91 | { | ||
92 | get => (string)this.Fields[(int)AssemblySymbolFields.ProcessorArchitecture]; | ||
93 | set => this.Set((int)AssemblySymbolFields.ProcessorArchitecture, value); | ||
94 | } | ||
95 | } | ||
96 | } | ||
diff --git a/src/api/wix/WixToolset.Data/Symbols/BBControlSymbol.cs b/src/api/wix/WixToolset.Data/Symbols/BBControlSymbol.cs new file mode 100644 index 00000000..277d1d85 --- /dev/null +++ b/src/api/wix/WixToolset.Data/Symbols/BBControlSymbol.cs | |||
@@ -0,0 +1,180 @@ | |||
1 | // Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. | ||
2 | |||
3 | namespace WixToolset.Data | ||
4 | { | ||
5 | using WixToolset.Data.Symbols; | ||
6 | |||
7 | public static partial class SymbolDefinitions | ||
8 | { | ||
9 | public static readonly IntermediateSymbolDefinition BBControl = new IntermediateSymbolDefinition( | ||
10 | SymbolDefinitionType.BBControl, | ||
11 | new[] | ||
12 | { | ||
13 | new IntermediateFieldDefinition(nameof(BBControlSymbolFields.BillboardRef), IntermediateFieldType.String), | ||
14 | new IntermediateFieldDefinition(nameof(BBControlSymbolFields.BBControl), IntermediateFieldType.String), | ||
15 | new IntermediateFieldDefinition(nameof(BBControlSymbolFields.Type), IntermediateFieldType.String), | ||
16 | new IntermediateFieldDefinition(nameof(BBControlSymbolFields.X), IntermediateFieldType.Number), | ||
17 | new IntermediateFieldDefinition(nameof(BBControlSymbolFields.Y), IntermediateFieldType.Number), | ||
18 | new IntermediateFieldDefinition(nameof(BBControlSymbolFields.Width), IntermediateFieldType.Number), | ||
19 | new IntermediateFieldDefinition(nameof(BBControlSymbolFields.Height), IntermediateFieldType.Number), | ||
20 | new IntermediateFieldDefinition(nameof(BBControlSymbolFields.Attributes), IntermediateFieldType.Number), | ||
21 | new IntermediateFieldDefinition(nameof(BBControlSymbolFields.Enabled), IntermediateFieldType.Bool), | ||
22 | new IntermediateFieldDefinition(nameof(BBControlSymbolFields.Indirect), IntermediateFieldType.Bool), | ||
23 | new IntermediateFieldDefinition(nameof(BBControlSymbolFields.Integer), IntermediateFieldType.Bool), | ||
24 | new IntermediateFieldDefinition(nameof(BBControlSymbolFields.LeftScroll), IntermediateFieldType.Bool), | ||
25 | new IntermediateFieldDefinition(nameof(BBControlSymbolFields.RightAligned), IntermediateFieldType.Bool), | ||
26 | new IntermediateFieldDefinition(nameof(BBControlSymbolFields.RightToLeft), IntermediateFieldType.Bool), | ||
27 | new IntermediateFieldDefinition(nameof(BBControlSymbolFields.Sunken), IntermediateFieldType.Bool), | ||
28 | new IntermediateFieldDefinition(nameof(BBControlSymbolFields.Visible), IntermediateFieldType.Bool), | ||
29 | new IntermediateFieldDefinition(nameof(BBControlSymbolFields.Text), IntermediateFieldType.String), | ||
30 | new IntermediateFieldDefinition(nameof(BBControlSymbolFields.SourceFile), IntermediateFieldType.Path), | ||
31 | }, | ||
32 | typeof(BBControlSymbol)); | ||
33 | } | ||
34 | } | ||
35 | |||
36 | namespace WixToolset.Data.Symbols | ||
37 | { | ||
38 | public enum BBControlSymbolFields | ||
39 | { | ||
40 | BillboardRef, | ||
41 | BBControl, | ||
42 | Type, | ||
43 | X, | ||
44 | Y, | ||
45 | Width, | ||
46 | Height, | ||
47 | Attributes, | ||
48 | Enabled, | ||
49 | Indirect, | ||
50 | Integer, | ||
51 | LeftScroll, | ||
52 | RightAligned, | ||
53 | RightToLeft, | ||
54 | Sunken, | ||
55 | Visible, | ||
56 | Text, | ||
57 | SourceFile | ||
58 | } | ||
59 | |||
60 | public class BBControlSymbol : IntermediateSymbol | ||
61 | { | ||
62 | public BBControlSymbol() : base(SymbolDefinitions.BBControl, null, null) | ||
63 | { | ||
64 | } | ||
65 | |||
66 | public BBControlSymbol(SourceLineNumber sourceLineNumber, Identifier id = null) : base(SymbolDefinitions.BBControl, sourceLineNumber, id) | ||
67 | { | ||
68 | } | ||
69 | |||
70 | public IntermediateField this[BBControlSymbolFields index] => this.Fields[(int)index]; | ||
71 | |||
72 | public string BillboardRef | ||
73 | { | ||
74 | get => (string)this.Fields[(int)BBControlSymbolFields.BillboardRef]; | ||
75 | set => this.Set((int)BBControlSymbolFields.BillboardRef, value); | ||
76 | } | ||
77 | |||
78 | public string BBControl | ||
79 | { | ||
80 | get => (string)this.Fields[(int)BBControlSymbolFields.BBControl]; | ||
81 | set => this.Set((int)BBControlSymbolFields.BBControl, value); | ||
82 | } | ||
83 | |||
84 | public string Type | ||
85 | { | ||
86 | get => (string)this.Fields[(int)BBControlSymbolFields.Type]; | ||
87 | set => this.Set((int)BBControlSymbolFields.Type, value); | ||
88 | } | ||
89 | |||
90 | public int X | ||
91 | { | ||
92 | get => (int)this.Fields[(int)BBControlSymbolFields.X]; | ||
93 | set => this.Set((int)BBControlSymbolFields.X, value); | ||
94 | } | ||
95 | |||
96 | public int Y | ||
97 | { | ||
98 | get => (int)this.Fields[(int)BBControlSymbolFields.Y]; | ||
99 | set => this.Set((int)BBControlSymbolFields.Y, value); | ||
100 | } | ||
101 | |||
102 | public int Width | ||
103 | { | ||
104 | get => (int)this.Fields[(int)BBControlSymbolFields.Width].AsNumber(); | ||
105 | set => this.Set((int)BBControlSymbolFields.Width, value); | ||
106 | } | ||
107 | |||
108 | public int Height | ||
109 | { | ||
110 | get => (int)this.Fields[(int)BBControlSymbolFields.Height]; | ||
111 | set => this.Set((int)BBControlSymbolFields.Height, value); | ||
112 | } | ||
113 | |||
114 | public int Attributes | ||
115 | { | ||
116 | get => this.Fields[(int)BBControlSymbolFields.Attributes].AsNumber(); | ||
117 | set => this.Set((int)BBControlSymbolFields.Attributes, value); | ||
118 | } | ||
119 | |||
120 | public bool Enabled | ||
121 | { | ||
122 | get => this.Fields[(int)BBControlSymbolFields.Enabled].AsBool(); | ||
123 | set => this.Set((int)BBControlSymbolFields.Enabled, value); | ||
124 | } | ||
125 | |||
126 | public bool Indirect | ||
127 | { | ||
128 | get => this.Fields[(int)BBControlSymbolFields.Indirect].AsBool(); | ||
129 | set => this.Set((int)BBControlSymbolFields.Indirect, value); | ||
130 | } | ||
131 | |||
132 | public bool Integer | ||
133 | { | ||
134 | get => this.Fields[(int)BBControlSymbolFields.Integer].AsBool(); | ||
135 | set => this.Set((int)BBControlSymbolFields.Integer, value); | ||
136 | } | ||
137 | |||
138 | public bool LeftScroll | ||
139 | { | ||
140 | get => this.Fields[(int)BBControlSymbolFields.LeftScroll].AsBool(); | ||
141 | set => this.Set((int)BBControlSymbolFields.LeftScroll, value); | ||
142 | } | ||
143 | |||
144 | public bool RightAligned | ||
145 | { | ||
146 | get => this.Fields[(int)BBControlSymbolFields.RightAligned].AsBool(); | ||
147 | set => this.Set((int)BBControlSymbolFields.RightAligned, value); | ||
148 | } | ||
149 | |||
150 | public bool RightToLeft | ||
151 | { | ||
152 | get => this.Fields[(int)BBControlSymbolFields.RightToLeft].AsBool(); | ||
153 | set => this.Set((int)BBControlSymbolFields.RightToLeft, value); | ||
154 | } | ||
155 | |||
156 | public bool Sunken | ||
157 | { | ||
158 | get => this.Fields[(int)BBControlSymbolFields.Sunken].AsBool(); | ||
159 | set => this.Set((int)BBControlSymbolFields.Sunken, value); | ||
160 | } | ||
161 | |||
162 | public bool Visible | ||
163 | { | ||
164 | get => this.Fields[(int)BBControlSymbolFields.Visible].AsBool(); | ||
165 | set => this.Set((int)BBControlSymbolFields.Visible, value); | ||
166 | } | ||
167 | |||
168 | public string Text | ||
169 | { | ||
170 | get => (string)this.Fields[(int)BBControlSymbolFields.Text]; | ||
171 | set => this.Set((int)BBControlSymbolFields.Text, value); | ||
172 | } | ||
173 | |||
174 | public IntermediateFieldPathValue SourceFile | ||
175 | { | ||
176 | get => this.Fields[(int)BBControlSymbolFields.SourceFile].AsPath(); | ||
177 | set => this.Set((int)BBControlSymbolFields.SourceFile, value); | ||
178 | } | ||
179 | } | ||
180 | } \ No newline at end of file | ||
diff --git a/src/api/wix/WixToolset.Data/Symbols/BillboardSymbol.cs b/src/api/wix/WixToolset.Data/Symbols/BillboardSymbol.cs new file mode 100644 index 00000000..77f60bcb --- /dev/null +++ b/src/api/wix/WixToolset.Data/Symbols/BillboardSymbol.cs | |||
@@ -0,0 +1,60 @@ | |||
1 | // Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. | ||
2 | |||
3 | namespace WixToolset.Data | ||
4 | { | ||
5 | using WixToolset.Data.Symbols; | ||
6 | |||
7 | public static partial class SymbolDefinitions | ||
8 | { | ||
9 | public static readonly IntermediateSymbolDefinition Billboard = new IntermediateSymbolDefinition( | ||
10 | SymbolDefinitionType.Billboard, | ||
11 | new[] | ||
12 | { | ||
13 | new IntermediateFieldDefinition(nameof(BillboardSymbolFields.FeatureRef), IntermediateFieldType.String), | ||
14 | new IntermediateFieldDefinition(nameof(BillboardSymbolFields.Action), IntermediateFieldType.String), | ||
15 | new IntermediateFieldDefinition(nameof(BillboardSymbolFields.Ordering), IntermediateFieldType.Number), | ||
16 | }, | ||
17 | typeof(BillboardSymbol)); | ||
18 | } | ||
19 | } | ||
20 | |||
21 | namespace WixToolset.Data.Symbols | ||
22 | { | ||
23 | public enum BillboardSymbolFields | ||
24 | { | ||
25 | FeatureRef, | ||
26 | Action, | ||
27 | Ordering, | ||
28 | } | ||
29 | |||
30 | public class BillboardSymbol : IntermediateSymbol | ||
31 | { | ||
32 | public BillboardSymbol() : base(SymbolDefinitions.Billboard, null, null) | ||
33 | { | ||
34 | } | ||
35 | |||
36 | public BillboardSymbol(SourceLineNumber sourceLineNumber, Identifier id = null) : base(SymbolDefinitions.Billboard, sourceLineNumber, id) | ||
37 | { | ||
38 | } | ||
39 | |||
40 | public IntermediateField this[BillboardSymbolFields index] => this.Fields[(int)index]; | ||
41 | |||
42 | public string FeatureRef | ||
43 | { | ||
44 | get => (string)this.Fields[(int)BillboardSymbolFields.FeatureRef]; | ||
45 | set => this.Set((int)BillboardSymbolFields.FeatureRef, value); | ||
46 | } | ||
47 | |||
48 | public string Action | ||
49 | { | ||
50 | get => (string)this.Fields[(int)BillboardSymbolFields.Action]; | ||
51 | set => this.Set((int)BillboardSymbolFields.Action, value); | ||
52 | } | ||
53 | |||
54 | public int? Ordering | ||
55 | { | ||
56 | get => (int?)this.Fields[(int)BillboardSymbolFields.Ordering]; | ||
57 | set => this.Set((int)BillboardSymbolFields.Ordering, value); | ||
58 | } | ||
59 | } | ||
60 | } \ No newline at end of file | ||
diff --git a/src/api/wix/WixToolset.Data/Symbols/BinarySymbol.cs b/src/api/wix/WixToolset.Data/Symbols/BinarySymbol.cs new file mode 100644 index 00000000..ec26b01a --- /dev/null +++ b/src/api/wix/WixToolset.Data/Symbols/BinarySymbol.cs | |||
@@ -0,0 +1,44 @@ | |||
1 | // Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. | ||
2 | |||
3 | namespace WixToolset.Data | ||
4 | { | ||
5 | using WixToolset.Data.Symbols; | ||
6 | |||
7 | public static partial class SymbolDefinitions | ||
8 | { | ||
9 | public static readonly IntermediateSymbolDefinition Binary = new IntermediateSymbolDefinition( | ||
10 | SymbolDefinitionType.Binary, | ||
11 | new[] | ||
12 | { | ||
13 | new IntermediateFieldDefinition(nameof(BinarySymbolFields.Data), IntermediateFieldType.Path), | ||
14 | }, | ||
15 | typeof(BinarySymbol)); | ||
16 | } | ||
17 | } | ||
18 | |||
19 | namespace WixToolset.Data.Symbols | ||
20 | { | ||
21 | public enum BinarySymbolFields | ||
22 | { | ||
23 | Data, | ||
24 | } | ||
25 | |||
26 | public class BinarySymbol : IntermediateSymbol | ||
27 | { | ||
28 | public BinarySymbol() : base(SymbolDefinitions.Binary, null, null) | ||
29 | { | ||
30 | } | ||
31 | |||
32 | public BinarySymbol(SourceLineNumber sourceLineNumber, Identifier id = null) : base(SymbolDefinitions.Binary, sourceLineNumber, id) | ||
33 | { | ||
34 | } | ||
35 | |||
36 | public IntermediateField this[BinarySymbolFields index] => this.Fields[(int)index]; | ||
37 | |||
38 | public IntermediateFieldPathValue Data | ||
39 | { | ||
40 | get => this.Fields[(int)BinarySymbolFields.Data].AsPath(); | ||
41 | set => this.Set((int)BinarySymbolFields.Data, value); | ||
42 | } | ||
43 | } | ||
44 | } \ No newline at end of file | ||
diff --git a/src/api/wix/WixToolset.Data/Symbols/CCPSearchSymbol.cs b/src/api/wix/WixToolset.Data/Symbols/CCPSearchSymbol.cs new file mode 100644 index 00000000..6f6227fd --- /dev/null +++ b/src/api/wix/WixToolset.Data/Symbols/CCPSearchSymbol.cs | |||
@@ -0,0 +1,36 @@ | |||
1 | // Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. | ||
2 | |||
3 | namespace WixToolset.Data | ||
4 | { | ||
5 | using WixToolset.Data.Symbols; | ||
6 | |||
7 | public static partial class SymbolDefinitions | ||
8 | { | ||
9 | public static readonly IntermediateSymbolDefinition CCPSearch = new IntermediateSymbolDefinition( | ||
10 | SymbolDefinitionType.CCPSearch, | ||
11 | new IntermediateFieldDefinition[] | ||
12 | { | ||
13 | }, | ||
14 | typeof(CCPSearchSymbol)); | ||
15 | } | ||
16 | } | ||
17 | |||
18 | namespace WixToolset.Data.Symbols | ||
19 | { | ||
20 | public enum CCPSearchSymbolFields | ||
21 | { | ||
22 | } | ||
23 | |||
24 | public class CCPSearchSymbol : IntermediateSymbol | ||
25 | { | ||
26 | public CCPSearchSymbol() : base(SymbolDefinitions.CCPSearch, null, null) | ||
27 | { | ||
28 | } | ||
29 | |||
30 | public CCPSearchSymbol(SourceLineNumber sourceLineNumber, Identifier id = null) : base(SymbolDefinitions.CCPSearch, sourceLineNumber, id) | ||
31 | { | ||
32 | } | ||
33 | |||
34 | public IntermediateField this[CCPSearchSymbolFields index] => this.Fields[(int)index]; | ||
35 | } | ||
36 | } \ No newline at end of file | ||
diff --git a/src/api/wix/WixToolset.Data/Symbols/CheckBoxSymbol.cs b/src/api/wix/WixToolset.Data/Symbols/CheckBoxSymbol.cs new file mode 100644 index 00000000..cd6355c4 --- /dev/null +++ b/src/api/wix/WixToolset.Data/Symbols/CheckBoxSymbol.cs | |||
@@ -0,0 +1,52 @@ | |||
1 | // Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. | ||
2 | |||
3 | namespace WixToolset.Data | ||
4 | { | ||
5 | using WixToolset.Data.Symbols; | ||
6 | |||
7 | public static partial class SymbolDefinitions | ||
8 | { | ||
9 | public static readonly IntermediateSymbolDefinition CheckBox = new IntermediateSymbolDefinition( | ||
10 | SymbolDefinitionType.CheckBox, | ||
11 | new[] | ||
12 | { | ||
13 | new IntermediateFieldDefinition(nameof(CheckBoxSymbolFields.Property), IntermediateFieldType.String), | ||
14 | new IntermediateFieldDefinition(nameof(CheckBoxSymbolFields.Value), IntermediateFieldType.String), | ||
15 | }, | ||
16 | typeof(CheckBoxSymbol)); | ||
17 | } | ||
18 | } | ||
19 | |||
20 | namespace WixToolset.Data.Symbols | ||
21 | { | ||
22 | public enum CheckBoxSymbolFields | ||
23 | { | ||
24 | Property, | ||
25 | Value, | ||
26 | } | ||
27 | |||
28 | public class CheckBoxSymbol : IntermediateSymbol | ||
29 | { | ||
30 | public CheckBoxSymbol() : base(SymbolDefinitions.CheckBox, null, null) | ||
31 | { | ||
32 | } | ||
33 | |||
34 | public CheckBoxSymbol(SourceLineNumber sourceLineNumber, Identifier id = null) : base(SymbolDefinitions.CheckBox, sourceLineNumber, id) | ||
35 | { | ||
36 | } | ||
37 | |||
38 | public IntermediateField this[CheckBoxSymbolFields index] => this.Fields[(int)index]; | ||
39 | |||
40 | public string Property | ||
41 | { | ||
42 | get => (string)this.Fields[(int)CheckBoxSymbolFields.Property]; | ||
43 | set => this.Set((int)CheckBoxSymbolFields.Property, value); | ||
44 | } | ||
45 | |||
46 | public string Value | ||
47 | { | ||
48 | get => (string)this.Fields[(int)CheckBoxSymbolFields.Value]; | ||
49 | set => this.Set((int)CheckBoxSymbolFields.Value, value); | ||
50 | } | ||
51 | } | ||
52 | } \ No newline at end of file | ||
diff --git a/src/api/wix/WixToolset.Data/Symbols/ClassSymbol.cs b/src/api/wix/WixToolset.Data/Symbols/ClassSymbol.cs new file mode 100644 index 00000000..833867b1 --- /dev/null +++ b/src/api/wix/WixToolset.Data/Symbols/ClassSymbol.cs | |||
@@ -0,0 +1,140 @@ | |||
1 | // Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. | ||
2 | |||
3 | namespace WixToolset.Data | ||
4 | { | ||
5 | using WixToolset.Data.Symbols; | ||
6 | |||
7 | public static partial class SymbolDefinitions | ||
8 | { | ||
9 | public static readonly IntermediateSymbolDefinition Class = new IntermediateSymbolDefinition( | ||
10 | SymbolDefinitionType.Class, | ||
11 | new[] | ||
12 | { | ||
13 | new IntermediateFieldDefinition(nameof(ClassSymbolFields.CLSID), IntermediateFieldType.String), | ||
14 | new IntermediateFieldDefinition(nameof(ClassSymbolFields.Context), IntermediateFieldType.String), | ||
15 | new IntermediateFieldDefinition(nameof(ClassSymbolFields.ComponentRef), IntermediateFieldType.String), | ||
16 | new IntermediateFieldDefinition(nameof(ClassSymbolFields.DefaultProgIdRef), IntermediateFieldType.String), | ||
17 | new IntermediateFieldDefinition(nameof(ClassSymbolFields.Description), IntermediateFieldType.String), | ||
18 | new IntermediateFieldDefinition(nameof(ClassSymbolFields.AppIdRef), IntermediateFieldType.String), | ||
19 | new IntermediateFieldDefinition(nameof(ClassSymbolFields.FileTypeMask), IntermediateFieldType.String), | ||
20 | new IntermediateFieldDefinition(nameof(ClassSymbolFields.IconRef), IntermediateFieldType.String), | ||
21 | new IntermediateFieldDefinition(nameof(ClassSymbolFields.IconIndex), IntermediateFieldType.Number), | ||
22 | new IntermediateFieldDefinition(nameof(ClassSymbolFields.DefInprocHandler), IntermediateFieldType.String), | ||
23 | new IntermediateFieldDefinition(nameof(ClassSymbolFields.Argument), IntermediateFieldType.String), | ||
24 | new IntermediateFieldDefinition(nameof(ClassSymbolFields.FeatureRef), IntermediateFieldType.String), | ||
25 | new IntermediateFieldDefinition(nameof(ClassSymbolFields.RelativePath), IntermediateFieldType.Bool), | ||
26 | }, | ||
27 | typeof(ClassSymbol)); | ||
28 | } | ||
29 | } | ||
30 | |||
31 | namespace WixToolset.Data.Symbols | ||
32 | { | ||
33 | public enum ClassSymbolFields | ||
34 | { | ||
35 | CLSID, | ||
36 | Context, | ||
37 | ComponentRef, | ||
38 | DefaultProgIdRef, | ||
39 | Description, | ||
40 | AppIdRef, | ||
41 | FileTypeMask, | ||
42 | IconRef, | ||
43 | IconIndex, | ||
44 | DefInprocHandler, | ||
45 | Argument, | ||
46 | FeatureRef, | ||
47 | RelativePath, | ||
48 | } | ||
49 | |||
50 | public class ClassSymbol : IntermediateSymbol | ||
51 | { | ||
52 | public ClassSymbol() : base(SymbolDefinitions.Class, null, null) | ||
53 | { | ||
54 | } | ||
55 | |||
56 | public ClassSymbol(SourceLineNumber sourceLineNumber, Identifier id = null) : base(SymbolDefinitions.Class, sourceLineNumber, id) | ||
57 | { | ||
58 | } | ||
59 | |||
60 | public IntermediateField this[ClassSymbolFields index] => this.Fields[(int)index]; | ||
61 | |||
62 | public string CLSID | ||
63 | { | ||
64 | get => (string)this.Fields[(int)ClassSymbolFields.CLSID]; | ||
65 | set => this.Set((int)ClassSymbolFields.CLSID, value); | ||
66 | } | ||
67 | |||
68 | public string Context | ||
69 | { | ||
70 | get => (string)this.Fields[(int)ClassSymbolFields.Context]; | ||
71 | set => this.Set((int)ClassSymbolFields.Context, value); | ||
72 | } | ||
73 | |||
74 | public string ComponentRef | ||
75 | { | ||
76 | get => (string)this.Fields[(int)ClassSymbolFields.ComponentRef]; | ||
77 | set => this.Set((int)ClassSymbolFields.ComponentRef, value); | ||
78 | } | ||
79 | |||
80 | public string DefaultProgIdRef | ||
81 | { | ||
82 | get => (string)this.Fields[(int)ClassSymbolFields.DefaultProgIdRef]; | ||
83 | set => this.Set((int)ClassSymbolFields.DefaultProgIdRef, value); | ||
84 | } | ||
85 | |||
86 | public string Description | ||
87 | { | ||
88 | get => (string)this.Fields[(int)ClassSymbolFields.Description]; | ||
89 | set => this.Set((int)ClassSymbolFields.Description, value); | ||
90 | } | ||
91 | |||
92 | public string AppIdRef | ||
93 | { | ||
94 | get => (string)this.Fields[(int)ClassSymbolFields.AppIdRef]; | ||
95 | set => this.Set((int)ClassSymbolFields.AppIdRef, value); | ||
96 | } | ||
97 | |||
98 | public string FileTypeMask | ||
99 | { | ||
100 | get => (string)this.Fields[(int)ClassSymbolFields.FileTypeMask]; | ||
101 | set => this.Set((int)ClassSymbolFields.FileTypeMask, value); | ||
102 | } | ||
103 | |||
104 | public string IconRef | ||
105 | { | ||
106 | get => (string)this.Fields[(int)ClassSymbolFields.IconRef]; | ||
107 | set => this.Set((int)ClassSymbolFields.IconRef, value); | ||
108 | } | ||
109 | |||
110 | public int? IconIndex | ||
111 | { | ||
112 | get => (int?)this.Fields[(int)ClassSymbolFields.IconIndex]; | ||
113 | set => this.Set((int)ClassSymbolFields.IconIndex, value); | ||
114 | } | ||
115 | |||
116 | public string DefInprocHandler | ||
117 | { | ||
118 | get => (string)this.Fields[(int)ClassSymbolFields.DefInprocHandler]; | ||
119 | set => this.Set((int)ClassSymbolFields.DefInprocHandler, value); | ||
120 | } | ||
121 | |||
122 | public string Argument | ||
123 | { | ||
124 | get => (string)this.Fields[(int)ClassSymbolFields.Argument]; | ||
125 | set => this.Set((int)ClassSymbolFields.Argument, value); | ||
126 | } | ||
127 | |||
128 | public string FeatureRef | ||
129 | { | ||
130 | get => (string)this.Fields[(int)ClassSymbolFields.FeatureRef]; | ||
131 | set => this.Set((int)ClassSymbolFields.FeatureRef, value); | ||
132 | } | ||
133 | |||
134 | public bool RelativePath | ||
135 | { | ||
136 | get => this.Fields[(int)ClassSymbolFields.RelativePath].AsBool(); | ||
137 | set => this.Set((int)ClassSymbolFields.RelativePath, value); | ||
138 | } | ||
139 | } | ||
140 | } \ No newline at end of file | ||
diff --git a/src/api/wix/WixToolset.Data/Symbols/ComboBoxSymbol.cs b/src/api/wix/WixToolset.Data/Symbols/ComboBoxSymbol.cs new file mode 100644 index 00000000..c7d8d986 --- /dev/null +++ b/src/api/wix/WixToolset.Data/Symbols/ComboBoxSymbol.cs | |||
@@ -0,0 +1,68 @@ | |||
1 | // Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. | ||
2 | |||
3 | namespace WixToolset.Data | ||
4 | { | ||
5 | using WixToolset.Data.Symbols; | ||
6 | |||
7 | public static partial class SymbolDefinitions | ||
8 | { | ||
9 | public static readonly IntermediateSymbolDefinition ComboBox = new IntermediateSymbolDefinition( | ||
10 | SymbolDefinitionType.ComboBox, | ||
11 | new[] | ||
12 | { | ||
13 | new IntermediateFieldDefinition(nameof(ComboBoxSymbolFields.Property), IntermediateFieldType.String), | ||
14 | new IntermediateFieldDefinition(nameof(ComboBoxSymbolFields.Order), IntermediateFieldType.Number), | ||
15 | new IntermediateFieldDefinition(nameof(ComboBoxSymbolFields.Value), IntermediateFieldType.String), | ||
16 | new IntermediateFieldDefinition(nameof(ComboBoxSymbolFields.Text), IntermediateFieldType.String), | ||
17 | }, | ||
18 | typeof(ComboBoxSymbol)); | ||
19 | } | ||
20 | } | ||
21 | |||
22 | namespace WixToolset.Data.Symbols | ||
23 | { | ||
24 | public enum ComboBoxSymbolFields | ||
25 | { | ||
26 | Property, | ||
27 | Order, | ||
28 | Value, | ||
29 | Text, | ||
30 | } | ||
31 | |||
32 | public class ComboBoxSymbol : IntermediateSymbol | ||
33 | { | ||
34 | public ComboBoxSymbol() : base(SymbolDefinitions.ComboBox, null, null) | ||
35 | { | ||
36 | } | ||
37 | |||
38 | public ComboBoxSymbol(SourceLineNumber sourceLineNumber, Identifier id = null) : base(SymbolDefinitions.ComboBox, sourceLineNumber, id) | ||
39 | { | ||
40 | } | ||
41 | |||
42 | public IntermediateField this[ComboBoxSymbolFields index] => this.Fields[(int)index]; | ||
43 | |||
44 | public string Property | ||
45 | { | ||
46 | get => (string)this.Fields[(int)ComboBoxSymbolFields.Property]; | ||
47 | set => this.Set((int)ComboBoxSymbolFields.Property, value); | ||
48 | } | ||
49 | |||
50 | public int Order | ||
51 | { | ||
52 | get => (int)this.Fields[(int)ComboBoxSymbolFields.Order]; | ||
53 | set => this.Set((int)ComboBoxSymbolFields.Order, value); | ||
54 | } | ||
55 | |||
56 | public string Value | ||
57 | { | ||
58 | get => (string)this.Fields[(int)ComboBoxSymbolFields.Value]; | ||
59 | set => this.Set((int)ComboBoxSymbolFields.Value, value); | ||
60 | } | ||
61 | |||
62 | public string Text | ||
63 | { | ||
64 | get => (string)this.Fields[(int)ComboBoxSymbolFields.Text]; | ||
65 | set => this.Set((int)ComboBoxSymbolFields.Text, value); | ||
66 | } | ||
67 | } | ||
68 | } \ No newline at end of file | ||
diff --git a/src/api/wix/WixToolset.Data/Symbols/CompLocatorSymbol.cs b/src/api/wix/WixToolset.Data/Symbols/CompLocatorSymbol.cs new file mode 100644 index 00000000..9004859c --- /dev/null +++ b/src/api/wix/WixToolset.Data/Symbols/CompLocatorSymbol.cs | |||
@@ -0,0 +1,60 @@ | |||
1 | // Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. | ||
2 | |||
3 | namespace WixToolset.Data | ||
4 | { | ||
5 | using WixToolset.Data.Symbols; | ||
6 | |||
7 | public static partial class SymbolDefinitions | ||
8 | { | ||
9 | public static readonly IntermediateSymbolDefinition CompLocator = new IntermediateSymbolDefinition( | ||
10 | SymbolDefinitionType.CompLocator, | ||
11 | new[] | ||
12 | { | ||
13 | new IntermediateFieldDefinition(nameof(CompLocatorSymbolFields.SignatureRef), IntermediateFieldType.String), | ||
14 | new IntermediateFieldDefinition(nameof(CompLocatorSymbolFields.ComponentId), IntermediateFieldType.String), | ||
15 | new IntermediateFieldDefinition(nameof(CompLocatorSymbolFields.Type), IntermediateFieldType.Number), | ||
16 | }, | ||
17 | typeof(CompLocatorSymbol)); | ||
18 | } | ||
19 | } | ||
20 | |||
21 | namespace WixToolset.Data.Symbols | ||
22 | { | ||
23 | public enum CompLocatorSymbolFields | ||
24 | { | ||
25 | SignatureRef, | ||
26 | ComponentId, | ||
27 | Type, | ||
28 | } | ||
29 | |||
30 | public class CompLocatorSymbol : IntermediateSymbol | ||
31 | { | ||
32 | public CompLocatorSymbol() : base(SymbolDefinitions.CompLocator, null, null) | ||
33 | { | ||
34 | } | ||
35 | |||
36 | public CompLocatorSymbol(SourceLineNumber sourceLineNumber, Identifier id = null) : base(SymbolDefinitions.CompLocator, sourceLineNumber, id) | ||
37 | { | ||
38 | } | ||
39 | |||
40 | public IntermediateField this[CompLocatorSymbolFields index] => this.Fields[(int)index]; | ||
41 | |||
42 | public string SignatureRef | ||
43 | { | ||
44 | get => (string)this.Fields[(int)CompLocatorSymbolFields.SignatureRef]; | ||
45 | set => this.Set((int)CompLocatorSymbolFields.SignatureRef, value); | ||
46 | } | ||
47 | |||
48 | public string ComponentId | ||
49 | { | ||
50 | get => (string)this.Fields[(int)CompLocatorSymbolFields.ComponentId]; | ||
51 | set => this.Set((int)CompLocatorSymbolFields.ComponentId, value); | ||
52 | } | ||
53 | |||
54 | public LocatorType Type | ||
55 | { | ||
56 | get => (LocatorType)this.Fields[(int)CompLocatorSymbolFields.Type].AsNumber(); | ||
57 | set => this.Set((int)CompLocatorSymbolFields.Type, (int)value); | ||
58 | } | ||
59 | } | ||
60 | } \ No newline at end of file | ||
diff --git a/src/api/wix/WixToolset.Data/Symbols/ComplusSymbol.cs b/src/api/wix/WixToolset.Data/Symbols/ComplusSymbol.cs new file mode 100644 index 00000000..fa16af86 --- /dev/null +++ b/src/api/wix/WixToolset.Data/Symbols/ComplusSymbol.cs | |||
@@ -0,0 +1,52 @@ | |||
1 | // Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. | ||
2 | |||
3 | namespace WixToolset.Data | ||
4 | { | ||
5 | using WixToolset.Data.Symbols; | ||
6 | |||
7 | public static partial class SymbolDefinitions | ||
8 | { | ||
9 | public static readonly IntermediateSymbolDefinition Complus = new IntermediateSymbolDefinition( | ||
10 | SymbolDefinitionType.Complus, | ||
11 | new[] | ||
12 | { | ||
13 | new IntermediateFieldDefinition(nameof(ComplusSymbolFields.ComponentRef), IntermediateFieldType.String), | ||
14 | new IntermediateFieldDefinition(nameof(ComplusSymbolFields.ExpType), IntermediateFieldType.Number), | ||
15 | }, | ||
16 | typeof(ComplusSymbol)); | ||
17 | } | ||
18 | } | ||
19 | |||
20 | namespace WixToolset.Data.Symbols | ||
21 | { | ||
22 | public enum ComplusSymbolFields | ||
23 | { | ||
24 | ComponentRef, | ||
25 | ExpType, | ||
26 | } | ||
27 | |||
28 | public class ComplusSymbol : IntermediateSymbol | ||
29 | { | ||
30 | public ComplusSymbol() : base(SymbolDefinitions.Complus, null, null) | ||
31 | { | ||
32 | } | ||
33 | |||
34 | public ComplusSymbol(SourceLineNumber sourceLineNumber, Identifier id = null) : base(SymbolDefinitions.Complus, sourceLineNumber, id) | ||
35 | { | ||
36 | } | ||
37 | |||
38 | public IntermediateField this[ComplusSymbolFields index] => this.Fields[(int)index]; | ||
39 | |||
40 | public string ComponentRef | ||
41 | { | ||
42 | get => (string)this.Fields[(int)ComplusSymbolFields.ComponentRef]; | ||
43 | set => this.Set((int)ComplusSymbolFields.ComponentRef, value); | ||
44 | } | ||
45 | |||
46 | public int? ExpType | ||
47 | { | ||
48 | get => (int?)this.Fields[(int)ComplusSymbolFields.ExpType]; | ||
49 | set => this.Set((int)ComplusSymbolFields.ExpType, value); | ||
50 | } | ||
51 | } | ||
52 | } \ No newline at end of file | ||
diff --git a/src/api/wix/WixToolset.Data/Symbols/ComponentSymbol.cs b/src/api/wix/WixToolset.Data/Symbols/ComponentSymbol.cs new file mode 100644 index 00000000..13d398b1 --- /dev/null +++ b/src/api/wix/WixToolset.Data/Symbols/ComponentSymbol.cs | |||
@@ -0,0 +1,155 @@ | |||
1 | // Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. | ||
2 | |||
3 | namespace WixToolset.Data | ||
4 | { | ||
5 | using WixToolset.Data.Symbols; | ||
6 | |||
7 | public static partial class SymbolDefinitions | ||
8 | { | ||
9 | public static readonly IntermediateSymbolDefinition Component = new IntermediateSymbolDefinition( | ||
10 | SymbolDefinitionType.Component, | ||
11 | new[] | ||
12 | { | ||
13 | new IntermediateFieldDefinition(nameof(ComponentSymbolFields.ComponentId), IntermediateFieldType.String), | ||
14 | new IntermediateFieldDefinition(nameof(ComponentSymbolFields.DirectoryRef), IntermediateFieldType.String), | ||
15 | new IntermediateFieldDefinition(nameof(ComponentSymbolFields.Location), IntermediateFieldType.Number), | ||
16 | new IntermediateFieldDefinition(nameof(ComponentSymbolFields.DisableRegistryReflection), IntermediateFieldType.Bool), | ||
17 | new IntermediateFieldDefinition(nameof(ComponentSymbolFields.NeverOverwrite), IntermediateFieldType.Bool), | ||
18 | new IntermediateFieldDefinition(nameof(ComponentSymbolFields.Permanent), IntermediateFieldType.Bool), | ||
19 | new IntermediateFieldDefinition(nameof(ComponentSymbolFields.SharedDllRefCount), IntermediateFieldType.Bool), | ||
20 | new IntermediateFieldDefinition(nameof(ComponentSymbolFields.Shared), IntermediateFieldType.Bool), | ||
21 | new IntermediateFieldDefinition(nameof(ComponentSymbolFields.Transitive), IntermediateFieldType.Bool), | ||
22 | new IntermediateFieldDefinition(nameof(ComponentSymbolFields.UninstallWhenSuperseded), IntermediateFieldType.Bool), | ||
23 | new IntermediateFieldDefinition(nameof(ComponentSymbolFields.Win64), IntermediateFieldType.Bool), | ||
24 | new IntermediateFieldDefinition(nameof(ComponentSymbolFields.Condition), IntermediateFieldType.String), | ||
25 | new IntermediateFieldDefinition(nameof(ComponentSymbolFields.KeyPath), IntermediateFieldType.String), | ||
26 | new IntermediateFieldDefinition(nameof(ComponentSymbolFields.KeyPathType), IntermediateFieldType.Number), | ||
27 | }, | ||
28 | typeof(ComponentSymbol)); | ||
29 | } | ||
30 | } | ||
31 | |||
32 | namespace WixToolset.Data.Symbols | ||
33 | { | ||
34 | public enum ComponentSymbolFields | ||
35 | { | ||
36 | ComponentId, | ||
37 | DirectoryRef, | ||
38 | Location, | ||
39 | DisableRegistryReflection, | ||
40 | NeverOverwrite, | ||
41 | Permanent, | ||
42 | SharedDllRefCount, | ||
43 | Shared, | ||
44 | Transitive, | ||
45 | UninstallWhenSuperseded, | ||
46 | Win64, | ||
47 | Condition, | ||
48 | KeyPath, | ||
49 | KeyPathType, | ||
50 | } | ||
51 | |||
52 | public enum ComponentLocation | ||
53 | { | ||
54 | LocalOnly, | ||
55 | SourceOnly, | ||
56 | Either | ||
57 | } | ||
58 | |||
59 | public class ComponentSymbol : IntermediateSymbol | ||
60 | { | ||
61 | public ComponentSymbol() : base(SymbolDefinitions.Component, null, null) | ||
62 | { | ||
63 | } | ||
64 | |||
65 | public ComponentSymbol(SourceLineNumber sourceLineNumber, Identifier id = null) : base(SymbolDefinitions.Component, sourceLineNumber, id) | ||
66 | { | ||
67 | } | ||
68 | |||
69 | public IntermediateField this[ComponentSymbolFields index] => this.Fields[(int)index]; | ||
70 | |||
71 | public string ComponentId | ||
72 | { | ||
73 | get => (string)this.Fields[(int)ComponentSymbolFields.ComponentId]; | ||
74 | set => this.Set((int)ComponentSymbolFields.ComponentId, value); | ||
75 | } | ||
76 | |||
77 | public string DirectoryRef | ||
78 | { | ||
79 | get => (string)this.Fields[(int)ComponentSymbolFields.DirectoryRef]; | ||
80 | set => this.Set((int)ComponentSymbolFields.DirectoryRef, value); | ||
81 | } | ||
82 | |||
83 | public ComponentLocation Location | ||
84 | { | ||
85 | get => (ComponentLocation)this.Fields[(int)ComponentSymbolFields.Location].AsNumber(); | ||
86 | set => this.Set((int)ComponentSymbolFields.Location, (int)value); | ||
87 | } | ||
88 | |||
89 | public bool DisableRegistryReflection | ||
90 | { | ||
91 | get => this.Fields[(int)ComponentSymbolFields.DisableRegistryReflection].AsBool(); | ||
92 | set => this.Set((int)ComponentSymbolFields.DisableRegistryReflection, value); | ||
93 | } | ||
94 | |||
95 | public bool NeverOverwrite | ||
96 | { | ||
97 | get => this.Fields[(int)ComponentSymbolFields.NeverOverwrite].AsBool(); | ||
98 | set => this.Set((int)ComponentSymbolFields.NeverOverwrite, value); | ||
99 | } | ||
100 | |||
101 | public bool Permanent | ||
102 | { | ||
103 | get => this.Fields[(int)ComponentSymbolFields.Permanent].AsBool(); | ||
104 | set => this.Set((int)ComponentSymbolFields.Permanent, value); | ||
105 | } | ||
106 | |||
107 | public bool SharedDllRefCount | ||
108 | { | ||
109 | get => this.Fields[(int)ComponentSymbolFields.SharedDllRefCount].AsBool(); | ||
110 | set => this.Set((int)ComponentSymbolFields.SharedDllRefCount, value); | ||
111 | } | ||
112 | |||
113 | public bool Shared | ||
114 | { | ||
115 | get => this.Fields[(int)ComponentSymbolFields.Shared].AsBool(); | ||
116 | set => this.Set((int)ComponentSymbolFields.Shared, value); | ||
117 | } | ||
118 | |||
119 | public bool Transitive | ||
120 | { | ||
121 | get => this.Fields[(int)ComponentSymbolFields.Transitive].AsBool(); | ||
122 | set => this.Set((int)ComponentSymbolFields.Transitive, value); | ||
123 | } | ||
124 | |||
125 | public bool UninstallWhenSuperseded | ||
126 | { | ||
127 | get => this.Fields[(int)ComponentSymbolFields.UninstallWhenSuperseded].AsBool(); | ||
128 | set => this.Set((int)ComponentSymbolFields.UninstallWhenSuperseded, value); | ||
129 | } | ||
130 | |||
131 | public bool Win64 | ||
132 | { | ||
133 | get => this.Fields[(int)ComponentSymbolFields.Win64].AsBool(); | ||
134 | set => this.Set((int)ComponentSymbolFields.Win64, value); | ||
135 | } | ||
136 | |||
137 | public string Condition | ||
138 | { | ||
139 | get => (string)this.Fields[(int)ComponentSymbolFields.Condition]; | ||
140 | set => this.Set((int)ComponentSymbolFields.Condition, value); | ||
141 | } | ||
142 | |||
143 | public string KeyPath | ||
144 | { | ||
145 | get => (string)this.Fields[(int)ComponentSymbolFields.KeyPath]; | ||
146 | set => this.Set((int)ComponentSymbolFields.KeyPath, value); | ||
147 | } | ||
148 | |||
149 | public ComponentKeyPathType KeyPathType | ||
150 | { | ||
151 | get => (ComponentKeyPathType)this.Fields[(int)ComponentSymbolFields.KeyPathType].AsNumber(); | ||
152 | set => this.Set((int)ComponentSymbolFields.KeyPathType, (int)value); | ||
153 | } | ||
154 | } | ||
155 | } \ No newline at end of file | ||
diff --git a/src/api/wix/WixToolset.Data/Symbols/ConditionSymbol.cs b/src/api/wix/WixToolset.Data/Symbols/ConditionSymbol.cs new file mode 100644 index 00000000..3a94ebb1 --- /dev/null +++ b/src/api/wix/WixToolset.Data/Symbols/ConditionSymbol.cs | |||
@@ -0,0 +1,60 @@ | |||
1 | // Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. | ||
2 | |||
3 | namespace WixToolset.Data | ||
4 | { | ||
5 | using WixToolset.Data.Symbols; | ||
6 | |||
7 | public static partial class SymbolDefinitions | ||
8 | { | ||
9 | public static readonly IntermediateSymbolDefinition Condition = new IntermediateSymbolDefinition( | ||
10 | SymbolDefinitionType.Condition, | ||
11 | new[] | ||
12 | { | ||
13 | new IntermediateFieldDefinition(nameof(ConditionSymbolFields.FeatureRef), IntermediateFieldType.String), | ||
14 | new IntermediateFieldDefinition(nameof(ConditionSymbolFields.Level), IntermediateFieldType.Number), | ||
15 | new IntermediateFieldDefinition(nameof(ConditionSymbolFields.Condition), IntermediateFieldType.String), | ||
16 | }, | ||
17 | typeof(ConditionSymbol)); | ||
18 | } | ||
19 | } | ||
20 | |||
21 | namespace WixToolset.Data.Symbols | ||
22 | { | ||
23 | public enum ConditionSymbolFields | ||
24 | { | ||
25 | FeatureRef, | ||
26 | Level, | ||
27 | Condition, | ||
28 | } | ||
29 | |||
30 | public class ConditionSymbol : IntermediateSymbol | ||
31 | { | ||
32 | public ConditionSymbol() : base(SymbolDefinitions.Condition, null, null) | ||
33 | { | ||
34 | } | ||
35 | |||
36 | public ConditionSymbol(SourceLineNumber sourceLineNumber, Identifier id = null) : base(SymbolDefinitions.Condition, sourceLineNumber, id) | ||
37 | { | ||
38 | } | ||
39 | |||
40 | public IntermediateField this[ConditionSymbolFields index] => this.Fields[(int)index]; | ||
41 | |||
42 | public string FeatureRef | ||
43 | { | ||
44 | get => (string)this.Fields[(int)ConditionSymbolFields.FeatureRef]; | ||
45 | set => this.Set((int)ConditionSymbolFields.FeatureRef, value); | ||
46 | } | ||
47 | |||
48 | public int Level | ||
49 | { | ||
50 | get => (int)this.Fields[(int)ConditionSymbolFields.Level]; | ||
51 | set => this.Set((int)ConditionSymbolFields.Level, value); | ||
52 | } | ||
53 | |||
54 | public string Condition | ||
55 | { | ||
56 | get => (string)this.Fields[(int)ConditionSymbolFields.Condition]; | ||
57 | set => this.Set((int)ConditionSymbolFields.Condition, value); | ||
58 | } | ||
59 | } | ||
60 | } \ No newline at end of file | ||
diff --git a/src/api/wix/WixToolset.Data/Symbols/ControlConditionSymbol.cs b/src/api/wix/WixToolset.Data/Symbols/ControlConditionSymbol.cs new file mode 100644 index 00000000..cc5f2d74 --- /dev/null +++ b/src/api/wix/WixToolset.Data/Symbols/ControlConditionSymbol.cs | |||
@@ -0,0 +1,68 @@ | |||
1 | // Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. | ||
2 | |||
3 | namespace WixToolset.Data | ||
4 | { | ||
5 | using WixToolset.Data.Symbols; | ||
6 | |||
7 | public static partial class SymbolDefinitions | ||
8 | { | ||
9 | public static readonly IntermediateSymbolDefinition ControlCondition = new IntermediateSymbolDefinition( | ||
10 | SymbolDefinitionType.ControlCondition, | ||
11 | new[] | ||
12 | { | ||
13 | new IntermediateFieldDefinition(nameof(ControlConditionSymbolFields.DialogRef), IntermediateFieldType.String), | ||
14 | new IntermediateFieldDefinition(nameof(ControlConditionSymbolFields.ControlRef), IntermediateFieldType.String), | ||
15 | new IntermediateFieldDefinition(nameof(ControlConditionSymbolFields.Action), IntermediateFieldType.String), | ||
16 | new IntermediateFieldDefinition(nameof(ControlConditionSymbolFields.Condition), IntermediateFieldType.String), | ||
17 | }, | ||
18 | typeof(ControlConditionSymbol)); | ||
19 | } | ||
20 | } | ||
21 | |||
22 | namespace WixToolset.Data.Symbols | ||
23 | { | ||
24 | public enum ControlConditionSymbolFields | ||
25 | { | ||
26 | DialogRef, | ||
27 | ControlRef, | ||
28 | Action, | ||
29 | Condition, | ||
30 | } | ||
31 | |||
32 | public class ControlConditionSymbol : IntermediateSymbol | ||
33 | { | ||
34 | public ControlConditionSymbol() : base(SymbolDefinitions.ControlCondition, null, null) | ||
35 | { | ||
36 | } | ||
37 | |||
38 | public ControlConditionSymbol(SourceLineNumber sourceLineNumber, Identifier id = null) : base(SymbolDefinitions.ControlCondition, sourceLineNumber, id) | ||
39 | { | ||
40 | } | ||
41 | |||
42 | public IntermediateField this[ControlConditionSymbolFields index] => this.Fields[(int)index]; | ||
43 | |||
44 | public string DialogRef | ||
45 | { | ||
46 | get => (string)this.Fields[(int)ControlConditionSymbolFields.DialogRef]; | ||
47 | set => this.Set((int)ControlConditionSymbolFields.DialogRef, value); | ||
48 | } | ||
49 | |||
50 | public string ControlRef | ||
51 | { | ||
52 | get => (string)this.Fields[(int)ControlConditionSymbolFields.ControlRef]; | ||
53 | set => this.Set((int)ControlConditionSymbolFields.ControlRef, value); | ||
54 | } | ||
55 | |||
56 | public string Action | ||
57 | { | ||
58 | get => (string)this.Fields[(int)ControlConditionSymbolFields.Action]; | ||
59 | set => this.Set((int)ControlConditionSymbolFields.Action, value); | ||
60 | } | ||
61 | |||
62 | public string Condition | ||
63 | { | ||
64 | get => (string)this.Fields[(int)ControlConditionSymbolFields.Condition]; | ||
65 | set => this.Set((int)ControlConditionSymbolFields.Condition, value); | ||
66 | } | ||
67 | } | ||
68 | } \ No newline at end of file | ||
diff --git a/src/api/wix/WixToolset.Data/Symbols/ControlEventSymbol.cs b/src/api/wix/WixToolset.Data/Symbols/ControlEventSymbol.cs new file mode 100644 index 00000000..3cf6da53 --- /dev/null +++ b/src/api/wix/WixToolset.Data/Symbols/ControlEventSymbol.cs | |||
@@ -0,0 +1,84 @@ | |||
1 | // Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. | ||
2 | |||
3 | namespace WixToolset.Data | ||
4 | { | ||
5 | using WixToolset.Data.Symbols; | ||
6 | |||
7 | public static partial class SymbolDefinitions | ||
8 | { | ||
9 | public static readonly IntermediateSymbolDefinition ControlEvent = new IntermediateSymbolDefinition( | ||
10 | SymbolDefinitionType.ControlEvent, | ||
11 | new[] | ||
12 | { | ||
13 | new IntermediateFieldDefinition(nameof(ControlEventSymbolFields.DialogRef), IntermediateFieldType.String), | ||
14 | new IntermediateFieldDefinition(nameof(ControlEventSymbolFields.ControlRef), IntermediateFieldType.String), | ||
15 | new IntermediateFieldDefinition(nameof(ControlEventSymbolFields.Event), IntermediateFieldType.String), | ||
16 | new IntermediateFieldDefinition(nameof(ControlEventSymbolFields.Argument), IntermediateFieldType.String), | ||
17 | new IntermediateFieldDefinition(nameof(ControlEventSymbolFields.Condition), IntermediateFieldType.String), | ||
18 | new IntermediateFieldDefinition(nameof(ControlEventSymbolFields.Ordering), IntermediateFieldType.Number), | ||
19 | }, | ||
20 | typeof(ControlEventSymbol)); | ||
21 | } | ||
22 | } | ||
23 | |||
24 | namespace WixToolset.Data.Symbols | ||
25 | { | ||
26 | public enum ControlEventSymbolFields | ||
27 | { | ||
28 | DialogRef, | ||
29 | ControlRef, | ||
30 | Event, | ||
31 | Argument, | ||
32 | Condition, | ||
33 | Ordering, | ||
34 | } | ||
35 | |||
36 | public class ControlEventSymbol : IntermediateSymbol | ||
37 | { | ||
38 | public ControlEventSymbol() : base(SymbolDefinitions.ControlEvent, null, null) | ||
39 | { | ||
40 | } | ||
41 | |||
42 | public ControlEventSymbol(SourceLineNumber sourceLineNumber, Identifier id = null) : base(SymbolDefinitions.ControlEvent, sourceLineNumber, id) | ||
43 | { | ||
44 | } | ||
45 | |||
46 | public IntermediateField this[ControlEventSymbolFields index] => this.Fields[(int)index]; | ||
47 | |||
48 | public string DialogRef | ||
49 | { | ||
50 | get => (string)this.Fields[(int)ControlEventSymbolFields.DialogRef]; | ||
51 | set => this.Set((int)ControlEventSymbolFields.DialogRef, value); | ||
52 | } | ||
53 | |||
54 | public string ControlRef | ||
55 | { | ||
56 | get => (string)this.Fields[(int)ControlEventSymbolFields.ControlRef]; | ||
57 | set => this.Set((int)ControlEventSymbolFields.ControlRef, value); | ||
58 | } | ||
59 | |||
60 | public string Event | ||
61 | { | ||
62 | get => (string)this.Fields[(int)ControlEventSymbolFields.Event]; | ||
63 | set => this.Set((int)ControlEventSymbolFields.Event, value); | ||
64 | } | ||
65 | |||
66 | public string Argument | ||
67 | { | ||
68 | get => (string)this.Fields[(int)ControlEventSymbolFields.Argument]; | ||
69 | set => this.Set((int)ControlEventSymbolFields.Argument, value); | ||
70 | } | ||
71 | |||
72 | public string Condition | ||
73 | { | ||
74 | get => (string)this.Fields[(int)ControlEventSymbolFields.Condition]; | ||
75 | set => this.Set((int)ControlEventSymbolFields.Condition, value); | ||
76 | } | ||
77 | |||
78 | public int? Ordering | ||
79 | { | ||
80 | get => (int?)this.Fields[(int)ControlEventSymbolFields.Ordering]; | ||
81 | set => this.Set((int)ControlEventSymbolFields.Ordering, value); | ||
82 | } | ||
83 | } | ||
84 | } \ No newline at end of file | ||
diff --git a/src/api/wix/WixToolset.Data/Symbols/ControlSymbol.cs b/src/api/wix/WixToolset.Data/Symbols/ControlSymbol.cs new file mode 100644 index 00000000..732566d5 --- /dev/null +++ b/src/api/wix/WixToolset.Data/Symbols/ControlSymbol.cs | |||
@@ -0,0 +1,303 @@ | |||
1 | // Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. | ||
2 | |||
3 | namespace WixToolset.Data | ||
4 | { | ||
5 | using WixToolset.Data.Symbols; | ||
6 | |||
7 | public static partial class SymbolDefinitions | ||
8 | { | ||
9 | public static readonly IntermediateSymbolDefinition Control = new IntermediateSymbolDefinition( | ||
10 | SymbolDefinitionType.Control, | ||
11 | new[] | ||
12 | { | ||
13 | new IntermediateFieldDefinition(nameof(ControlSymbolFields.DialogRef), IntermediateFieldType.String), | ||
14 | new IntermediateFieldDefinition(nameof(ControlSymbolFields.Control), IntermediateFieldType.String), | ||
15 | new IntermediateFieldDefinition(nameof(ControlSymbolFields.Type), IntermediateFieldType.String), | ||
16 | new IntermediateFieldDefinition(nameof(ControlSymbolFields.X), IntermediateFieldType.Number), | ||
17 | new IntermediateFieldDefinition(nameof(ControlSymbolFields.Y), IntermediateFieldType.Number), | ||
18 | new IntermediateFieldDefinition(nameof(ControlSymbolFields.Width), IntermediateFieldType.Number), | ||
19 | new IntermediateFieldDefinition(nameof(ControlSymbolFields.Height), IntermediateFieldType.Number), | ||
20 | new IntermediateFieldDefinition(nameof(ControlSymbolFields.Attributes), IntermediateFieldType.Number), | ||
21 | new IntermediateFieldDefinition(nameof(ControlSymbolFields.Enabled), IntermediateFieldType.Bool), | ||
22 | new IntermediateFieldDefinition(nameof(ControlSymbolFields.Indirect), IntermediateFieldType.Bool), | ||
23 | new IntermediateFieldDefinition(nameof(ControlSymbolFields.Integer), IntermediateFieldType.Bool), | ||
24 | new IntermediateFieldDefinition(nameof(ControlSymbolFields.LeftScroll), IntermediateFieldType.Bool), | ||
25 | new IntermediateFieldDefinition(nameof(ControlSymbolFields.RightAligned), IntermediateFieldType.Bool), | ||
26 | new IntermediateFieldDefinition(nameof(ControlSymbolFields.RightToLeft), IntermediateFieldType.Bool), | ||
27 | new IntermediateFieldDefinition(nameof(ControlSymbolFields.Sunken), IntermediateFieldType.Bool), | ||
28 | new IntermediateFieldDefinition(nameof(ControlSymbolFields.Visible), IntermediateFieldType.Bool), | ||
29 | new IntermediateFieldDefinition(nameof(ControlSymbolFields.Property), IntermediateFieldType.String), | ||
30 | new IntermediateFieldDefinition(nameof(ControlSymbolFields.Text), IntermediateFieldType.String), | ||
31 | new IntermediateFieldDefinition(nameof(ControlSymbolFields.NextControlRef), IntermediateFieldType.String), | ||
32 | new IntermediateFieldDefinition(nameof(ControlSymbolFields.Help), IntermediateFieldType.String), | ||
33 | new IntermediateFieldDefinition(nameof(ControlSymbolFields.TrackDiskSpace), IntermediateFieldType.Bool), | ||
34 | new IntermediateFieldDefinition(nameof(ControlSymbolFields.SourceFile), IntermediateFieldType.Path), | ||
35 | }, | ||
36 | typeof(ControlSymbol)); | ||
37 | } | ||
38 | } | ||
39 | |||
40 | namespace WixToolset.Data.Symbols | ||
41 | { | ||
42 | public enum ControlSymbolFields | ||
43 | { | ||
44 | DialogRef, | ||
45 | Control, | ||
46 | Type, | ||
47 | X, | ||
48 | Y, | ||
49 | Width, | ||
50 | Height, | ||
51 | Attributes, | ||
52 | Enabled, | ||
53 | Indirect, | ||
54 | Integer, | ||
55 | LeftScroll, | ||
56 | RightAligned, | ||
57 | RightToLeft, | ||
58 | Sunken, | ||
59 | Visible, | ||
60 | Property, | ||
61 | Text, | ||
62 | NextControlRef, | ||
63 | Help, | ||
64 | TrackDiskSpace, | ||
65 | SourceFile, | ||
66 | } | ||
67 | |||
68 | public class ControlSymbol : IntermediateSymbol | ||
69 | { | ||
70 | public ControlSymbol() : base(SymbolDefinitions.Control, null, null) | ||
71 | { | ||
72 | } | ||
73 | |||
74 | public ControlSymbol(SourceLineNumber sourceLineNumber, Identifier id = null) : base(SymbolDefinitions.Control, sourceLineNumber, id) | ||
75 | { | ||
76 | } | ||
77 | |||
78 | public IntermediateField this[ControlSymbolFields index] => this.Fields[(int)index]; | ||
79 | |||
80 | public string DialogRef | ||
81 | { | ||
82 | get => (string)this.Fields[(int)ControlSymbolFields.DialogRef]; | ||
83 | set => this.Set((int)ControlSymbolFields.DialogRef, value); | ||
84 | } | ||
85 | |||
86 | public string Control | ||
87 | { | ||
88 | get => (string)this.Fields[(int)ControlSymbolFields.Control]; | ||
89 | set => this.Set((int)ControlSymbolFields.Control, value); | ||
90 | } | ||
91 | |||
92 | public string Type | ||
93 | { | ||
94 | get => (string)this.Fields[(int)ControlSymbolFields.Type]; | ||
95 | set => this.Set((int)ControlSymbolFields.Type, value); | ||
96 | } | ||
97 | |||
98 | public int X | ||
99 | { | ||
100 | get => (int)this.Fields[(int)ControlSymbolFields.X]; | ||
101 | set => this.Set((int)ControlSymbolFields.X, value); | ||
102 | } | ||
103 | |||
104 | public int Y | ||
105 | { | ||
106 | get => (int)this.Fields[(int)ControlSymbolFields.Y]; | ||
107 | set => this.Set((int)ControlSymbolFields.Y, value); | ||
108 | } | ||
109 | |||
110 | public int Width | ||
111 | { | ||
112 | get => (int)this.Fields[(int)ControlSymbolFields.Width]; | ||
113 | set => this.Set((int)ControlSymbolFields.Width, value); | ||
114 | } | ||
115 | |||
116 | public int Height | ||
117 | { | ||
118 | get => (int)this.Fields[(int)ControlSymbolFields.Height]; | ||
119 | set => this.Set((int)ControlSymbolFields.Height, value); | ||
120 | } | ||
121 | |||
122 | public int? Attributes | ||
123 | { | ||
124 | get => (int?)this.Fields[(int)ControlSymbolFields.Attributes]; | ||
125 | set => this.Set((int)ControlSymbolFields.Attributes, value); | ||
126 | } | ||
127 | |||
128 | public bool Enabled | ||
129 | { | ||
130 | get => this.Fields[(int)ControlSymbolFields.Enabled].AsBool(); | ||
131 | set => this.Set((int)ControlSymbolFields.Enabled, value); | ||
132 | } | ||
133 | |||
134 | public bool Indirect | ||
135 | { | ||
136 | get => this.Fields[(int)ControlSymbolFields.Indirect].AsBool(); | ||
137 | set => this.Set((int)ControlSymbolFields.Indirect, value); | ||
138 | } | ||
139 | |||
140 | public bool Integer | ||
141 | { | ||
142 | get => this.Fields[(int)ControlSymbolFields.Integer].AsBool(); | ||
143 | set => this.Set((int)ControlSymbolFields.Integer, value); | ||
144 | } | ||
145 | /* | ||
146 | /// <summary>PictureButton control</summary> | ||
147 | public bool Bitmap | ||
148 | { | ||
149 | get => this.Fields[(int)ControlSymbolFields.Bitmap].AsBool(); | ||
150 | set => this.Set((int)ControlSymbolFields.Bitmap, value); | ||
151 | } | ||
152 | |||
153 | /// <summary>RadioButton control</summary> | ||
154 | public bool Border | ||
155 | { | ||
156 | get => this.Fields[(int)ControlSymbolFields.Border].AsBool(); | ||
157 | set => this.Set((int)ControlSymbolFields.Border, value); | ||
158 | } | ||
159 | |||
160 | /// <summary>ListBox and ComboBox control</summary> | ||
161 | public bool ComboList | ||
162 | { | ||
163 | get => this.Fields[(int)ControlSymbolFields.ComboList].AsBool(); | ||
164 | set => this.Set((int)ControlSymbolFields.ComboList, value); | ||
165 | } | ||
166 | |||
167 | /// <summary>PushButton control</summary> | ||
168 | public bool ElevationShield | ||
169 | { | ||
170 | get => this.Fields[(int)ControlSymbolFields.ElevationShield].AsBool(); | ||
171 | set => this.Set((int)ControlSymbolFields.ElevationShield, value); | ||
172 | } | ||
173 | |||
174 | /// <summary>PictureButton control</summary> | ||
175 | public bool FixedSize | ||
176 | { | ||
177 | get => this.Fields[(int)ControlSymbolFields.FixedSize].AsBool(); | ||
178 | set => this.Set((int)ControlSymbolFields.FixedSize, value); | ||
179 | } | ||
180 | |||
181 | /// <summary>PictureButton control</summary> | ||
182 | public bool Icon | ||
183 | { | ||
184 | get => this.Fields[(int)ControlSymbolFields.Icon].AsBool(); | ||
185 | set => this.Set((int)ControlSymbolFields.Icon, value); | ||
186 | } | ||
187 | |||
188 | /// <summary>PictureButton control</summary> | ||
189 | public bool Icon16 | ||
190 | { | ||
191 | get => this.Fields[(int)ControlSymbolFields.Icon16].AsBool(); | ||
192 | set => this.Set((int)ControlSymbolFields.Icon16, value); | ||
193 | } | ||
194 | |||
195 | /// <summary>PictureButton control</summary> | ||
196 | public bool Icon32 | ||
197 | { | ||
198 | get => this.Fields[(int)ControlSymbolFields.Icon32].AsBool(); | ||
199 | set => this.Set((int)ControlSymbolFields.Icon32, value); | ||
200 | } | ||
201 | |||
202 | /// <summary>PictureButton control</summary> | ||
203 | public bool Icon48 | ||
204 | { | ||
205 | get => this.Fields[(int)ControlSymbolFields.Icon48].AsBool(); | ||
206 | set => this.Set((int)ControlSymbolFields.Icon48, value); | ||
207 | } | ||
208 | */ | ||
209 | public bool LeftScroll | ||
210 | { | ||
211 | get => this.Fields[(int)ControlSymbolFields.LeftScroll].AsBool(); | ||
212 | set => this.Set((int)ControlSymbolFields.LeftScroll, value); | ||
213 | } | ||
214 | /* | ||
215 | /// <summary>PictureButton control</summary> | ||
216 | public bool PushLike | ||
217 | { | ||
218 | get => this.Fields[(int)ControlSymbolFields.PushLike].AsBool(); | ||
219 | set => this.Set((int)ControlSymbolFields.PushLike, value); | ||
220 | } | ||
221 | |||
222 | /// <summary>Edit control</summary> | ||
223 | public bool Mulitline | ||
224 | { | ||
225 | get => this.Fields[(int)ControlSymbolFields.Mulitline].AsBool(); | ||
226 | set => this.Set((int)ControlSymbolFields.Mulitline, value); | ||
227 | } | ||
228 | */ | ||
229 | public bool RightAligned | ||
230 | { | ||
231 | get => this.Fields[(int)ControlSymbolFields.RightAligned].AsBool(); | ||
232 | set => this.Set((int)ControlSymbolFields.RightAligned, value); | ||
233 | } | ||
234 | |||
235 | public bool RightToLeft | ||
236 | { | ||
237 | get => this.Fields[(int)ControlSymbolFields.RightToLeft].AsBool(); | ||
238 | set => this.Set((int)ControlSymbolFields.RightToLeft, value); | ||
239 | } | ||
240 | /* | ||
241 | /// <summary>VolumeCostList control</summary> | ||
242 | public bool ShowRollbackCost | ||
243 | { | ||
244 | get => this.Fields[(int)ControlSymbolFields.ShowRollbackCost].AsBool(); | ||
245 | set => this.Set((int)ControlSymbolFields.ShowRollbackCost, value); | ||
246 | } | ||
247 | |||
248 | /// <summary>ListBox and ComboBox control</summary> | ||
249 | public bool Sorted | ||
250 | { | ||
251 | get => this.Fields[(int)ControlSymbolFields.Sorted].AsBool(); | ||
252 | set => this.Set((int)ControlSymbolFields.Sorted, value); | ||
253 | } | ||
254 | */ | ||
255 | public bool Sunken | ||
256 | { | ||
257 | get => this.Fields[(int)ControlSymbolFields.Sunken].AsBool(); | ||
258 | set => this.Set((int)ControlSymbolFields.Sunken, value); | ||
259 | } | ||
260 | |||
261 | public bool Visible | ||
262 | { | ||
263 | get => this.Fields[(int)ControlSymbolFields.Visible].AsBool(); | ||
264 | set => this.Set((int)ControlSymbolFields.Visible, value); | ||
265 | } | ||
266 | |||
267 | public string Property | ||
268 | { | ||
269 | get => (string)this.Fields[(int)ControlSymbolFields.Property]; | ||
270 | set => this.Set((int)ControlSymbolFields.Property, value); | ||
271 | } | ||
272 | |||
273 | public string Text | ||
274 | { | ||
275 | get => (string)this.Fields[(int)ControlSymbolFields.Text]; | ||
276 | set => this.Set((int)ControlSymbolFields.Text, value); | ||
277 | } | ||
278 | |||
279 | public string NextControlRef | ||
280 | { | ||
281 | get => (string)this.Fields[(int)ControlSymbolFields.NextControlRef]; | ||
282 | set => this.Set((int)ControlSymbolFields.NextControlRef, value); | ||
283 | } | ||
284 | |||
285 | public string Help | ||
286 | { | ||
287 | get => (string)this.Fields[(int)ControlSymbolFields.Help]; | ||
288 | set => this.Set((int)ControlSymbolFields.Help, value); | ||
289 | } | ||
290 | |||
291 | public bool TrackDiskSpace | ||
292 | { | ||
293 | get => this.Fields[(int)ControlSymbolFields.TrackDiskSpace].AsBool(); | ||
294 | set => this.Set((int)ControlSymbolFields.TrackDiskSpace, value); | ||
295 | } | ||
296 | |||
297 | public IntermediateFieldPathValue SourceFile | ||
298 | { | ||
299 | get => this.Fields[(int)ControlSymbolFields.SourceFile].AsPath(); | ||
300 | set => this.Set((int)ControlSymbolFields.SourceFile, value); | ||
301 | } | ||
302 | } | ||
303 | } \ No newline at end of file | ||
diff --git a/src/api/wix/WixToolset.Data/Symbols/CreateFolderSymbol.cs b/src/api/wix/WixToolset.Data/Symbols/CreateFolderSymbol.cs new file mode 100644 index 00000000..2b282266 --- /dev/null +++ b/src/api/wix/WixToolset.Data/Symbols/CreateFolderSymbol.cs | |||
@@ -0,0 +1,52 @@ | |||
1 | // Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. | ||
2 | |||
3 | namespace WixToolset.Data | ||
4 | { | ||
5 | using WixToolset.Data.Symbols; | ||
6 | |||
7 | public static partial class SymbolDefinitions | ||
8 | { | ||
9 | public static readonly IntermediateSymbolDefinition CreateFolder = new IntermediateSymbolDefinition( | ||
10 | SymbolDefinitionType.CreateFolder, | ||
11 | new[] | ||
12 | { | ||
13 | new IntermediateFieldDefinition(nameof(CreateFolderSymbolFields.DirectoryRef), IntermediateFieldType.String), | ||
14 | new IntermediateFieldDefinition(nameof(CreateFolderSymbolFields.ComponentRef), IntermediateFieldType.String), | ||
15 | }, | ||
16 | typeof(CreateFolderSymbol)); | ||
17 | } | ||
18 | } | ||
19 | |||
20 | namespace WixToolset.Data.Symbols | ||
21 | { | ||
22 | public enum CreateFolderSymbolFields | ||
23 | { | ||
24 | DirectoryRef, | ||
25 | ComponentRef, | ||
26 | } | ||
27 | |||
28 | public class CreateFolderSymbol : IntermediateSymbol | ||
29 | { | ||
30 | public CreateFolderSymbol() : base(SymbolDefinitions.CreateFolder, null, null) | ||
31 | { | ||
32 | } | ||
33 | |||
34 | public CreateFolderSymbol(SourceLineNumber sourceLineNumber, Identifier id = null) : base(SymbolDefinitions.CreateFolder, sourceLineNumber, id) | ||
35 | { | ||
36 | } | ||
37 | |||
38 | public IntermediateField this[CreateFolderSymbolFields index] => this.Fields[(int)index]; | ||
39 | |||
40 | public string DirectoryRef | ||
41 | { | ||
42 | get => (string)this.Fields[(int)CreateFolderSymbolFields.DirectoryRef]; | ||
43 | set => this.Set((int)CreateFolderSymbolFields.DirectoryRef, value); | ||
44 | } | ||
45 | |||
46 | public string ComponentRef | ||
47 | { | ||
48 | get => (string)this.Fields[(int)CreateFolderSymbolFields.ComponentRef]; | ||
49 | set => this.Set((int)CreateFolderSymbolFields.ComponentRef, value); | ||
50 | } | ||
51 | } | ||
52 | } \ No newline at end of file | ||
diff --git a/src/api/wix/WixToolset.Data/Symbols/CustomActionSymbol.cs b/src/api/wix/WixToolset.Data/Symbols/CustomActionSymbol.cs new file mode 100644 index 00000000..1180dab4 --- /dev/null +++ b/src/api/wix/WixToolset.Data/Symbols/CustomActionSymbol.cs | |||
@@ -0,0 +1,168 @@ | |||
1 | // Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. | ||
2 | |||
3 | namespace WixToolset.Data | ||
4 | { | ||
5 | using WixToolset.Data.Symbols; | ||
6 | |||
7 | public static partial class SymbolDefinitions | ||
8 | { | ||
9 | public static readonly IntermediateSymbolDefinition CustomAction = new IntermediateSymbolDefinition( | ||
10 | SymbolDefinitionType.CustomAction, | ||
11 | new[] | ||
12 | { | ||
13 | new IntermediateFieldDefinition(nameof(CustomActionSymbolFields.ExecutionType), IntermediateFieldType.Number), | ||
14 | new IntermediateFieldDefinition(nameof(CustomActionSymbolFields.Source), IntermediateFieldType.String), | ||
15 | new IntermediateFieldDefinition(nameof(CustomActionSymbolFields.SourceType), IntermediateFieldType.Number), | ||
16 | new IntermediateFieldDefinition(nameof(CustomActionSymbolFields.Target), IntermediateFieldType.String), | ||
17 | new IntermediateFieldDefinition(nameof(CustomActionSymbolFields.TargetType), IntermediateFieldType.Number), | ||
18 | new IntermediateFieldDefinition(nameof(CustomActionSymbolFields.Async), IntermediateFieldType.Bool), | ||
19 | new IntermediateFieldDefinition(nameof(CustomActionSymbolFields.Hidden), IntermediateFieldType.Bool), | ||
20 | new IntermediateFieldDefinition(nameof(CustomActionSymbolFields.IgnoreResult), IntermediateFieldType.Bool), | ||
21 | new IntermediateFieldDefinition(nameof(CustomActionSymbolFields.Impersonate), IntermediateFieldType.Bool), | ||
22 | new IntermediateFieldDefinition(nameof(CustomActionSymbolFields.PatchUninstall), IntermediateFieldType.Bool), | ||
23 | new IntermediateFieldDefinition(nameof(CustomActionSymbolFields.TSAware), IntermediateFieldType.Bool), | ||
24 | new IntermediateFieldDefinition(nameof(CustomActionSymbolFields.Win64), IntermediateFieldType.Bool), | ||
25 | new IntermediateFieldDefinition(nameof(CustomActionSymbolFields.ScriptFile), IntermediateFieldType.Path), | ||
26 | }, | ||
27 | typeof(CustomActionSymbol)); | ||
28 | } | ||
29 | } | ||
30 | |||
31 | namespace WixToolset.Data.Symbols | ||
32 | { | ||
33 | public enum CustomActionSymbolFields | ||
34 | { | ||
35 | ExecutionType, | ||
36 | Source, | ||
37 | SourceType, | ||
38 | Target, | ||
39 | TargetType, | ||
40 | Async, | ||
41 | Hidden, | ||
42 | IgnoreResult, | ||
43 | Impersonate, | ||
44 | PatchUninstall, | ||
45 | TSAware, | ||
46 | Win64, | ||
47 | ScriptFile | ||
48 | } | ||
49 | |||
50 | public enum CustomActionExecutionType | ||
51 | { | ||
52 | Immediate, | ||
53 | FirstSequence = 256, | ||
54 | OncePerProcess = 512, | ||
55 | ClientRepeat = 768, | ||
56 | Deferred = 1024, | ||
57 | Rollback = 1280, | ||
58 | Commit = 1536, | ||
59 | } | ||
60 | |||
61 | public enum CustomActionSourceType | ||
62 | { | ||
63 | Binary, | ||
64 | File = 0x10, | ||
65 | Directory = 0x20, | ||
66 | Property = 0x30, | ||
67 | } | ||
68 | |||
69 | public enum CustomActionTargetType | ||
70 | { | ||
71 | Dll = 1, | ||
72 | Exe = 2, | ||
73 | TextData = 3, | ||
74 | JScript = 5, | ||
75 | VBScript = 6, | ||
76 | } | ||
77 | |||
78 | public class CustomActionSymbol : IntermediateSymbol | ||
79 | { | ||
80 | public CustomActionSymbol() : base(SymbolDefinitions.CustomAction, null, null) | ||
81 | { | ||
82 | } | ||
83 | |||
84 | public CustomActionSymbol(SourceLineNumber sourceLineNumber, Identifier id = null) : base(SymbolDefinitions.CustomAction, sourceLineNumber, id) | ||
85 | { | ||
86 | } | ||
87 | |||
88 | public IntermediateField this[CustomActionSymbolFields index] => this.Fields[(int)index]; | ||
89 | |||
90 | public CustomActionExecutionType ExecutionType | ||
91 | { | ||
92 | get => (CustomActionExecutionType)this.Fields[(int)CustomActionSymbolFields.ExecutionType].AsNumber(); | ||
93 | set => this.Set((int)CustomActionSymbolFields.ExecutionType, (int)value); | ||
94 | } | ||
95 | |||
96 | public string Source | ||
97 | { | ||
98 | get => (string)this.Fields[(int)CustomActionSymbolFields.Source]; | ||
99 | set => this.Set((int)CustomActionSymbolFields.Source, value); | ||
100 | } | ||
101 | |||
102 | public CustomActionSourceType SourceType | ||
103 | { | ||
104 | get => (CustomActionSourceType)this.Fields[(int)CustomActionSymbolFields.SourceType].AsNumber(); | ||
105 | set => this.Set((int)CustomActionSymbolFields.SourceType, (int)value); | ||
106 | } | ||
107 | |||
108 | public string Target | ||
109 | { | ||
110 | get => (string)this.Fields[(int)CustomActionSymbolFields.Target]; | ||
111 | set => this.Set((int)CustomActionSymbolFields.Target, value); | ||
112 | } | ||
113 | |||
114 | public CustomActionTargetType TargetType | ||
115 | { | ||
116 | get => (CustomActionTargetType)this.Fields[(int)CustomActionSymbolFields.TargetType].AsNumber(); | ||
117 | set => this.Set((int)CustomActionSymbolFields.TargetType, (int)value); | ||
118 | } | ||
119 | |||
120 | public bool Async | ||
121 | { | ||
122 | get => this.Fields[(int)CustomActionSymbolFields.Async].AsBool(); | ||
123 | set => this.Set((int)CustomActionSymbolFields.Async, value); | ||
124 | } | ||
125 | |||
126 | public bool Hidden | ||
127 | { | ||
128 | get => this.Fields[(int)CustomActionSymbolFields.Hidden].AsBool(); | ||
129 | set => this.Set((int)CustomActionSymbolFields.Hidden, value); | ||
130 | } | ||
131 | |||
132 | public bool IgnoreResult | ||
133 | { | ||
134 | get => this.Fields[(int)CustomActionSymbolFields.IgnoreResult].AsBool(); | ||
135 | set => this.Set((int)CustomActionSymbolFields.IgnoreResult, value); | ||
136 | } | ||
137 | |||
138 | public bool Impersonate | ||
139 | { | ||
140 | get => this.Fields[(int)CustomActionSymbolFields.Impersonate].AsBool(); | ||
141 | set => this.Set((int)CustomActionSymbolFields.Impersonate, value); | ||
142 | } | ||
143 | |||
144 | public bool PatchUninstall | ||
145 | { | ||
146 | get => this.Fields[(int)CustomActionSymbolFields.PatchUninstall].AsBool(); | ||
147 | set => this.Set((int)CustomActionSymbolFields.PatchUninstall, value); | ||
148 | } | ||
149 | |||
150 | public bool TSAware | ||
151 | { | ||
152 | get => this.Fields[(int)CustomActionSymbolFields.TSAware].AsBool(); | ||
153 | set => this.Set((int)CustomActionSymbolFields.TSAware, value); | ||
154 | } | ||
155 | |||
156 | public bool Win64 | ||
157 | { | ||
158 | get => this.Fields[(int)CustomActionSymbolFields.Win64].AsBool(); | ||
159 | set => this.Set((int)CustomActionSymbolFields.Win64, value); | ||
160 | } | ||
161 | |||
162 | public IntermediateFieldPathValue ScriptFile | ||
163 | { | ||
164 | get => this.Fields[(int)CustomActionSymbolFields.ScriptFile].AsPath(); | ||
165 | set => this.Set((int)CustomActionSymbolFields.ScriptFile, value); | ||
166 | } | ||
167 | } | ||
168 | } | ||
diff --git a/src/api/wix/WixToolset.Data/Symbols/DialogSymbol.cs b/src/api/wix/WixToolset.Data/Symbols/DialogSymbol.cs new file mode 100644 index 00000000..ee030405 --- /dev/null +++ b/src/api/wix/WixToolset.Data/Symbols/DialogSymbol.cs | |||
@@ -0,0 +1,188 @@ | |||
1 | // Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. | ||
2 | |||
3 | namespace WixToolset.Data | ||
4 | { | ||
5 | using WixToolset.Data.Symbols; | ||
6 | |||
7 | public static partial class SymbolDefinitions | ||
8 | { | ||
9 | public static readonly IntermediateSymbolDefinition Dialog = new IntermediateSymbolDefinition( | ||
10 | SymbolDefinitionType.Dialog, | ||
11 | new[] | ||
12 | { | ||
13 | new IntermediateFieldDefinition(nameof(DialogSymbolFields.HCentering), IntermediateFieldType.Number), | ||
14 | new IntermediateFieldDefinition(nameof(DialogSymbolFields.VCentering), IntermediateFieldType.Number), | ||
15 | new IntermediateFieldDefinition(nameof(DialogSymbolFields.Width), IntermediateFieldType.Number), | ||
16 | new IntermediateFieldDefinition(nameof(DialogSymbolFields.Height), IntermediateFieldType.Number), | ||
17 | new IntermediateFieldDefinition(nameof(DialogSymbolFields.CustomPalette), IntermediateFieldType.Bool), | ||
18 | new IntermediateFieldDefinition(nameof(DialogSymbolFields.ErrorDialog), IntermediateFieldType.Bool), | ||
19 | new IntermediateFieldDefinition(nameof(DialogSymbolFields.Visible), IntermediateFieldType.Bool), | ||
20 | new IntermediateFieldDefinition(nameof(DialogSymbolFields.Modal), IntermediateFieldType.Bool), | ||
21 | new IntermediateFieldDefinition(nameof(DialogSymbolFields.KeepModeless), IntermediateFieldType.Bool), | ||
22 | new IntermediateFieldDefinition(nameof(DialogSymbolFields.LeftScroll), IntermediateFieldType.Bool), | ||
23 | new IntermediateFieldDefinition(nameof(DialogSymbolFields.Minimize), IntermediateFieldType.Bool), | ||
24 | new IntermediateFieldDefinition(nameof(DialogSymbolFields.RightAligned), IntermediateFieldType.Bool), | ||
25 | new IntermediateFieldDefinition(nameof(DialogSymbolFields.RightToLeft), IntermediateFieldType.Bool), | ||
26 | new IntermediateFieldDefinition(nameof(DialogSymbolFields.SystemModal), IntermediateFieldType.Bool), | ||
27 | new IntermediateFieldDefinition(nameof(DialogSymbolFields.TrackDiskSpace), IntermediateFieldType.Bool), | ||
28 | new IntermediateFieldDefinition(nameof(DialogSymbolFields.Title), IntermediateFieldType.String), | ||
29 | new IntermediateFieldDefinition(nameof(DialogSymbolFields.FirstControlRef), IntermediateFieldType.String), | ||
30 | new IntermediateFieldDefinition(nameof(DialogSymbolFields.DefaultControlRef), IntermediateFieldType.String), | ||
31 | new IntermediateFieldDefinition(nameof(DialogSymbolFields.CancelControlRef), IntermediateFieldType.String), | ||
32 | }, | ||
33 | typeof(DialogSymbol)); | ||
34 | } | ||
35 | } | ||
36 | |||
37 | namespace WixToolset.Data.Symbols | ||
38 | { | ||
39 | public enum DialogSymbolFields | ||
40 | { | ||
41 | HCentering, | ||
42 | VCentering, | ||
43 | Width, | ||
44 | Height, | ||
45 | CustomPalette, | ||
46 | ErrorDialog, | ||
47 | Visible, | ||
48 | Modal, | ||
49 | KeepModeless, | ||
50 | LeftScroll, | ||
51 | Minimize, | ||
52 | RightAligned, | ||
53 | RightToLeft, | ||
54 | SystemModal, | ||
55 | TrackDiskSpace, | ||
56 | Title, | ||
57 | FirstControlRef, | ||
58 | DefaultControlRef, | ||
59 | CancelControlRef, | ||
60 | } | ||
61 | |||
62 | public class DialogSymbol : IntermediateSymbol | ||
63 | { | ||
64 | public DialogSymbol() : base(SymbolDefinitions.Dialog, null, null) | ||
65 | { | ||
66 | } | ||
67 | |||
68 | public DialogSymbol(SourceLineNumber sourceLineNumber, Identifier id = null) : base(SymbolDefinitions.Dialog, sourceLineNumber, id) | ||
69 | { | ||
70 | } | ||
71 | |||
72 | public IntermediateField this[DialogSymbolFields index] => this.Fields[(int)index]; | ||
73 | |||
74 | public int HCentering | ||
75 | { | ||
76 | get => (int)this.Fields[(int)DialogSymbolFields.HCentering]; | ||
77 | set => this.Set((int)DialogSymbolFields.HCentering, value); | ||
78 | } | ||
79 | |||
80 | public int VCentering | ||
81 | { | ||
82 | get => (int)this.Fields[(int)DialogSymbolFields.VCentering]; | ||
83 | set => this.Set((int)DialogSymbolFields.VCentering, value); | ||
84 | } | ||
85 | |||
86 | public int Width | ||
87 | { | ||
88 | get => (int)this.Fields[(int)DialogSymbolFields.Width]; | ||
89 | set => this.Set((int)DialogSymbolFields.Width, value); | ||
90 | } | ||
91 | |||
92 | public int Height | ||
93 | { | ||
94 | get => (int)this.Fields[(int)DialogSymbolFields.Height]; | ||
95 | set => this.Set((int)DialogSymbolFields.Height, value); | ||
96 | } | ||
97 | |||
98 | public bool CustomPalette | ||
99 | { | ||
100 | get => this.Fields[(int)DialogSymbolFields.CustomPalette].AsBool(); | ||
101 | set => this.Set((int)DialogSymbolFields.CustomPalette, value); | ||
102 | } | ||
103 | |||
104 | public bool ErrorDialog | ||
105 | { | ||
106 | get => this.Fields[(int)DialogSymbolFields.ErrorDialog].AsBool(); | ||
107 | set => this.Set((int)DialogSymbolFields.ErrorDialog, value); | ||
108 | } | ||
109 | |||
110 | public bool Visible | ||
111 | { | ||
112 | get => this.Fields[(int)DialogSymbolFields.Visible].AsBool(); | ||
113 | set => this.Set((int)DialogSymbolFields.Visible, value); | ||
114 | } | ||
115 | |||
116 | public bool Modal | ||
117 | { | ||
118 | get => this.Fields[(int)DialogSymbolFields.Modal].AsBool(); | ||
119 | set => this.Set((int)DialogSymbolFields.Modal, value); | ||
120 | } | ||
121 | |||
122 | public bool KeepModeless | ||
123 | { | ||
124 | get => this.Fields[(int)DialogSymbolFields.KeepModeless].AsBool(); | ||
125 | set => this.Set((int)DialogSymbolFields.KeepModeless, value); | ||
126 | } | ||
127 | |||
128 | public bool LeftScroll | ||
129 | { | ||
130 | get => this.Fields[(int)DialogSymbolFields.LeftScroll].AsBool(); | ||
131 | set => this.Set((int)DialogSymbolFields.LeftScroll, value); | ||
132 | } | ||
133 | |||
134 | public bool Minimize | ||
135 | { | ||
136 | get => this.Fields[(int)DialogSymbolFields.Minimize].AsBool(); | ||
137 | set => this.Set((int)DialogSymbolFields.Minimize, value); | ||
138 | } | ||
139 | |||
140 | public bool RightAligned | ||
141 | { | ||
142 | get => this.Fields[(int)DialogSymbolFields.RightAligned].AsBool(); | ||
143 | set => this.Set((int)DialogSymbolFields.RightAligned, value); | ||
144 | } | ||
145 | |||
146 | public bool RightToLeft | ||
147 | { | ||
148 | get => this.Fields[(int)DialogSymbolFields.RightToLeft].AsBool(); | ||
149 | set => this.Set((int)DialogSymbolFields.RightToLeft, value); | ||
150 | } | ||
151 | |||
152 | public bool TrackDiskSpace | ||
153 | { | ||
154 | get => this.Fields[(int)DialogSymbolFields.TrackDiskSpace].AsBool(); | ||
155 | set => this.Set((int)DialogSymbolFields.TrackDiskSpace, value); | ||
156 | } | ||
157 | |||
158 | public bool SystemModal | ||
159 | { | ||
160 | get => this.Fields[(int)DialogSymbolFields.SystemModal].AsBool(); | ||
161 | set => this.Set((int)DialogSymbolFields.SystemModal, value); | ||
162 | } | ||
163 | |||
164 | public string Title | ||
165 | { | ||
166 | get => (string)this.Fields[(int)DialogSymbolFields.Title]; | ||
167 | set => this.Set((int)DialogSymbolFields.Title, value); | ||
168 | } | ||
169 | |||
170 | public string FirstControlRef | ||
171 | { | ||
172 | get => (string)this.Fields[(int)DialogSymbolFields.FirstControlRef]; | ||
173 | set => this.Set((int)DialogSymbolFields.FirstControlRef, value); | ||
174 | } | ||
175 | |||
176 | public string DefaultControlRef | ||
177 | { | ||
178 | get => (string)this.Fields[(int)DialogSymbolFields.DefaultControlRef]; | ||
179 | set => this.Set((int)DialogSymbolFields.DefaultControlRef, value); | ||
180 | } | ||
181 | |||
182 | public string CancelControlRef | ||
183 | { | ||
184 | get => (string)this.Fields[(int)DialogSymbolFields.CancelControlRef]; | ||
185 | set => this.Set((int)DialogSymbolFields.CancelControlRef, value); | ||
186 | } | ||
187 | } | ||
188 | } \ No newline at end of file | ||
diff --git a/src/api/wix/WixToolset.Data/Symbols/DirectorySymbol.cs b/src/api/wix/WixToolset.Data/Symbols/DirectorySymbol.cs new file mode 100644 index 00000000..209f5ca1 --- /dev/null +++ b/src/api/wix/WixToolset.Data/Symbols/DirectorySymbol.cs | |||
@@ -0,0 +1,84 @@ | |||
1 | // Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. | ||
2 | |||
3 | namespace WixToolset.Data | ||
4 | { | ||
5 | using WixToolset.Data.Symbols; | ||
6 | |||
7 | public static partial class SymbolDefinitions | ||
8 | { | ||
9 | public static readonly IntermediateSymbolDefinition Directory = new IntermediateSymbolDefinition( | ||
10 | SymbolDefinitionType.Directory, | ||
11 | new[] | ||
12 | { | ||
13 | new IntermediateFieldDefinition(nameof(DirectorySymbolFields.ParentDirectoryRef), IntermediateFieldType.String), | ||
14 | new IntermediateFieldDefinition(nameof(DirectorySymbolFields.Name), IntermediateFieldType.String), | ||
15 | new IntermediateFieldDefinition(nameof(DirectorySymbolFields.ShortName), IntermediateFieldType.String), | ||
16 | new IntermediateFieldDefinition(nameof(DirectorySymbolFields.SourceName), IntermediateFieldType.String), | ||
17 | new IntermediateFieldDefinition(nameof(DirectorySymbolFields.SourceShortName), IntermediateFieldType.String), | ||
18 | new IntermediateFieldDefinition(nameof(DirectorySymbolFields.ComponentGuidGenerationSeed), IntermediateFieldType.String), | ||
19 | }, | ||
20 | typeof(DirectorySymbol)); | ||
21 | } | ||
22 | } | ||
23 | |||
24 | namespace WixToolset.Data.Symbols | ||
25 | { | ||
26 | public enum DirectorySymbolFields | ||
27 | { | ||
28 | ParentDirectoryRef, | ||
29 | Name, | ||
30 | ShortName, | ||
31 | SourceName, | ||
32 | SourceShortName, | ||
33 | ComponentGuidGenerationSeed, | ||
34 | } | ||
35 | |||
36 | public class DirectorySymbol : IntermediateSymbol | ||
37 | { | ||
38 | public DirectorySymbol() : base(SymbolDefinitions.Directory, null, null) | ||
39 | { | ||
40 | } | ||
41 | |||
42 | public DirectorySymbol(SourceLineNumber sourceLineNumber, Identifier id = null) : base(SymbolDefinitions.Directory, sourceLineNumber, id) | ||
43 | { | ||
44 | } | ||
45 | |||
46 | public IntermediateField this[DirectorySymbolFields index] => this.Fields[(int)index]; | ||
47 | |||
48 | public string ParentDirectoryRef | ||
49 | { | ||
50 | get => (string)this.Fields[(int)DirectorySymbolFields.ParentDirectoryRef]; | ||
51 | set => this.Set((int)DirectorySymbolFields.ParentDirectoryRef, value); | ||
52 | } | ||
53 | |||
54 | public string Name | ||
55 | { | ||
56 | get => (string)this.Fields[(int)DirectorySymbolFields.Name]; | ||
57 | set => this.Set((int)DirectorySymbolFields.Name, value); | ||
58 | } | ||
59 | |||
60 | public string ShortName | ||
61 | { | ||
62 | get => (string)this.Fields[(int)DirectorySymbolFields.ShortName]; | ||
63 | set => this.Set((int)DirectorySymbolFields.ShortName, value); | ||
64 | } | ||
65 | |||
66 | public string SourceName | ||
67 | { | ||
68 | get => (string)this.Fields[(int)DirectorySymbolFields.SourceName]; | ||
69 | set => this.Set((int)DirectorySymbolFields.SourceName, value); | ||
70 | } | ||
71 | |||
72 | public string SourceShortName | ||
73 | { | ||
74 | get => (string)this.Fields[(int)DirectorySymbolFields.SourceShortName]; | ||
75 | set => this.Set((int)DirectorySymbolFields.SourceShortName, value); | ||
76 | } | ||
77 | |||
78 | public string ComponentGuidGenerationSeed | ||
79 | { | ||
80 | get => (string)this.Fields[(int)DirectorySymbolFields.ComponentGuidGenerationSeed]; | ||
81 | set => this.Set((int)DirectorySymbolFields.ComponentGuidGenerationSeed, value); | ||
82 | } | ||
83 | } | ||
84 | } | ||
diff --git a/src/api/wix/WixToolset.Data/Symbols/DrLocatorSymbol.cs b/src/api/wix/WixToolset.Data/Symbols/DrLocatorSymbol.cs new file mode 100644 index 00000000..e403c61c --- /dev/null +++ b/src/api/wix/WixToolset.Data/Symbols/DrLocatorSymbol.cs | |||
@@ -0,0 +1,68 @@ | |||
1 | // Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. | ||
2 | |||
3 | namespace WixToolset.Data | ||
4 | { | ||
5 | using WixToolset.Data.Symbols; | ||
6 | |||
7 | public static partial class SymbolDefinitions | ||
8 | { | ||
9 | public static readonly IntermediateSymbolDefinition DrLocator = new IntermediateSymbolDefinition( | ||
10 | SymbolDefinitionType.DrLocator, | ||
11 | new[] | ||
12 | { | ||
13 | new IntermediateFieldDefinition(nameof(DrLocatorSymbolFields.SignatureRef), IntermediateFieldType.String), | ||
14 | new IntermediateFieldDefinition(nameof(DrLocatorSymbolFields.Parent), IntermediateFieldType.String), | ||
15 | new IntermediateFieldDefinition(nameof(DrLocatorSymbolFields.Path), IntermediateFieldType.String), | ||
16 | new IntermediateFieldDefinition(nameof(DrLocatorSymbolFields.Depth), IntermediateFieldType.Number), | ||
17 | }, | ||
18 | typeof(DrLocatorSymbol)); | ||
19 | } | ||
20 | } | ||
21 | |||
22 | namespace WixToolset.Data.Symbols | ||
23 | { | ||
24 | public enum DrLocatorSymbolFields | ||
25 | { | ||
26 | SignatureRef, | ||
27 | Parent, | ||
28 | Path, | ||
29 | Depth, | ||
30 | } | ||
31 | |||
32 | public class DrLocatorSymbol : IntermediateSymbol | ||
33 | { | ||
34 | public DrLocatorSymbol() : base(SymbolDefinitions.DrLocator, null, null) | ||
35 | { | ||
36 | } | ||
37 | |||
38 | public DrLocatorSymbol(SourceLineNumber sourceLineNumber, Identifier id = null) : base(SymbolDefinitions.DrLocator, sourceLineNumber, id) | ||
39 | { | ||
40 | } | ||
41 | |||
42 | public IntermediateField this[DrLocatorSymbolFields index] => this.Fields[(int)index]; | ||
43 | |||
44 | public string SignatureRef | ||
45 | { | ||
46 | get => (string)this.Fields[(int)DrLocatorSymbolFields.SignatureRef]; | ||
47 | set => this.Set((int)DrLocatorSymbolFields.SignatureRef, value); | ||
48 | } | ||
49 | |||
50 | public string Parent | ||
51 | { | ||
52 | get => (string)this.Fields[(int)DrLocatorSymbolFields.Parent]; | ||
53 | set => this.Set((int)DrLocatorSymbolFields.Parent, value); | ||
54 | } | ||
55 | |||
56 | public string Path | ||
57 | { | ||
58 | get => (string)this.Fields[(int)DrLocatorSymbolFields.Path]; | ||
59 | set => this.Set((int)DrLocatorSymbolFields.Path, value); | ||
60 | } | ||
61 | |||
62 | public int? Depth | ||
63 | { | ||
64 | get => (int?)this.Fields[(int)DrLocatorSymbolFields.Depth]; | ||
65 | set => this.Set((int)DrLocatorSymbolFields.Depth, value); | ||
66 | } | ||
67 | } | ||
68 | } \ No newline at end of file | ||
diff --git a/src/api/wix/WixToolset.Data/Symbols/DuplicateFileSymbol.cs b/src/api/wix/WixToolset.Data/Symbols/DuplicateFileSymbol.cs new file mode 100644 index 00000000..f2d1d94f --- /dev/null +++ b/src/api/wix/WixToolset.Data/Symbols/DuplicateFileSymbol.cs | |||
@@ -0,0 +1,76 @@ | |||
1 | // Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. | ||
2 | |||
3 | namespace WixToolset.Data | ||
4 | { | ||
5 | using WixToolset.Data.Symbols; | ||
6 | |||
7 | public static partial class SymbolDefinitions | ||
8 | { | ||
9 | public static readonly IntermediateSymbolDefinition DuplicateFile = new IntermediateSymbolDefinition( | ||
10 | SymbolDefinitionType.DuplicateFile, | ||
11 | new[] | ||
12 | { | ||
13 | new IntermediateFieldDefinition(nameof(DuplicateFileSymbolFields.ComponentRef), IntermediateFieldType.String), | ||
14 | new IntermediateFieldDefinition(nameof(DuplicateFileSymbolFields.FileRef), IntermediateFieldType.String), | ||
15 | new IntermediateFieldDefinition(nameof(DuplicateFileSymbolFields.DestinationName), IntermediateFieldType.String), | ||
16 | new IntermediateFieldDefinition(nameof(DuplicateFileSymbolFields.DestinationShortName), IntermediateFieldType.String), | ||
17 | new IntermediateFieldDefinition(nameof(DuplicateFileSymbolFields.DestinationFolder), IntermediateFieldType.String), | ||
18 | }, | ||
19 | typeof(DuplicateFileSymbol)); | ||
20 | } | ||
21 | } | ||
22 | |||
23 | namespace WixToolset.Data.Symbols | ||
24 | { | ||
25 | public enum DuplicateFileSymbolFields | ||
26 | { | ||
27 | ComponentRef, | ||
28 | FileRef, | ||
29 | DestinationName, | ||
30 | DestinationShortName, | ||
31 | DestinationFolder, | ||
32 | } | ||
33 | |||
34 | public class DuplicateFileSymbol : IntermediateSymbol | ||
35 | { | ||
36 | public DuplicateFileSymbol() : base(SymbolDefinitions.DuplicateFile, null, null) | ||
37 | { | ||
38 | } | ||
39 | |||
40 | public DuplicateFileSymbol(SourceLineNumber sourceLineNumber, Identifier id = null) : base(SymbolDefinitions.DuplicateFile, sourceLineNumber, id) | ||
41 | { | ||
42 | } | ||
43 | |||
44 | public IntermediateField this[DuplicateFileSymbolFields index] => this.Fields[(int)index]; | ||
45 | |||
46 | public string ComponentRef | ||
47 | { | ||
48 | get => (string)this.Fields[(int)DuplicateFileSymbolFields.ComponentRef]; | ||
49 | set => this.Set((int)DuplicateFileSymbolFields.ComponentRef, value); | ||
50 | } | ||
51 | |||
52 | public string FileRef | ||
53 | { | ||
54 | get => (string)this.Fields[(int)DuplicateFileSymbolFields.FileRef]; | ||
55 | set => this.Set((int)DuplicateFileSymbolFields.FileRef, value); | ||
56 | } | ||
57 | |||
58 | public string DestinationName | ||
59 | { | ||
60 | get => (string)this.Fields[(int)DuplicateFileSymbolFields.DestinationName]; | ||
61 | set => this.Set((int)DuplicateFileSymbolFields.DestinationName, value); | ||
62 | } | ||
63 | |||
64 | public string DestinationShortName | ||
65 | { | ||
66 | get => (string)this.Fields[(int)DuplicateFileSymbolFields.DestinationShortName]; | ||
67 | set => this.Set((int)DuplicateFileSymbolFields.DestinationShortName, value); | ||
68 | } | ||
69 | |||
70 | public string DestinationFolder | ||
71 | { | ||
72 | get => (string)this.Fields[(int)DuplicateFileSymbolFields.DestinationFolder]; | ||
73 | set => this.Set((int)DuplicateFileSymbolFields.DestinationFolder, value); | ||
74 | } | ||
75 | } | ||
76 | } \ No newline at end of file | ||
diff --git a/src/api/wix/WixToolset.Data/Symbols/EnvironmentSymbol.cs b/src/api/wix/WixToolset.Data/Symbols/EnvironmentSymbol.cs new file mode 100644 index 00000000..3fe12d4b --- /dev/null +++ b/src/api/wix/WixToolset.Data/Symbols/EnvironmentSymbol.cs | |||
@@ -0,0 +1,114 @@ | |||
1 | // Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. | ||
2 | |||
3 | namespace WixToolset.Data | ||
4 | { | ||
5 | using WixToolset.Data.Symbols; | ||
6 | |||
7 | public static partial class SymbolDefinitions | ||
8 | { | ||
9 | public static readonly IntermediateSymbolDefinition Environment = new IntermediateSymbolDefinition( | ||
10 | SymbolDefinitionType.Environment, | ||
11 | new[] | ||
12 | { | ||
13 | new IntermediateFieldDefinition(nameof(EnvironmentSymbolFields.Name), IntermediateFieldType.String), | ||
14 | new IntermediateFieldDefinition(nameof(EnvironmentSymbolFields.Value), IntermediateFieldType.String), | ||
15 | new IntermediateFieldDefinition(nameof(EnvironmentSymbolFields.Separator), IntermediateFieldType.String), | ||
16 | new IntermediateFieldDefinition(nameof(EnvironmentSymbolFields.Action), IntermediateFieldType.Number), | ||
17 | new IntermediateFieldDefinition(nameof(EnvironmentSymbolFields.Part), IntermediateFieldType.Number), | ||
18 | new IntermediateFieldDefinition(nameof(EnvironmentSymbolFields.Permanent), IntermediateFieldType.Bool), | ||
19 | new IntermediateFieldDefinition(nameof(EnvironmentSymbolFields.System), IntermediateFieldType.Bool), | ||
20 | new IntermediateFieldDefinition(nameof(EnvironmentSymbolFields.ComponentRef), IntermediateFieldType.String), | ||
21 | }, | ||
22 | typeof(EnvironmentSymbol)); | ||
23 | } | ||
24 | } | ||
25 | |||
26 | namespace WixToolset.Data.Symbols | ||
27 | { | ||
28 | public enum EnvironmentSymbolFields | ||
29 | { | ||
30 | Name, | ||
31 | Value, | ||
32 | Separator, | ||
33 | Action, | ||
34 | Part, | ||
35 | Permanent, | ||
36 | System, | ||
37 | ComponentRef, | ||
38 | } | ||
39 | |||
40 | public enum EnvironmentActionType | ||
41 | { | ||
42 | Set, | ||
43 | Create, | ||
44 | Remove | ||
45 | } | ||
46 | |||
47 | public enum EnvironmentPartType | ||
48 | { | ||
49 | All, | ||
50 | First, | ||
51 | Last | ||
52 | } | ||
53 | |||
54 | public class EnvironmentSymbol : IntermediateSymbol | ||
55 | { | ||
56 | public EnvironmentSymbol() : base(SymbolDefinitions.Environment, null, null) | ||
57 | { | ||
58 | } | ||
59 | |||
60 | public EnvironmentSymbol(SourceLineNumber sourceLineNumber, Identifier id = null) : base(SymbolDefinitions.Environment, sourceLineNumber, id) | ||
61 | { | ||
62 | } | ||
63 | |||
64 | public IntermediateField this[EnvironmentSymbolFields index] => this.Fields[(int)index]; | ||
65 | |||
66 | public string Name | ||
67 | { | ||
68 | get => (string)this.Fields[(int)EnvironmentSymbolFields.Name]; | ||
69 | set => this.Set((int)EnvironmentSymbolFields.Name, value); | ||
70 | } | ||
71 | |||
72 | public string Value | ||
73 | { | ||
74 | get => (string)this.Fields[(int)EnvironmentSymbolFields.Value]; | ||
75 | set => this.Set((int)EnvironmentSymbolFields.Value, value); | ||
76 | } | ||
77 | |||
78 | public string Separator | ||
79 | { | ||
80 | get => (string)this.Fields[(int)EnvironmentSymbolFields.Separator]; | ||
81 | set => this.Set((int)EnvironmentSymbolFields.Separator, value); | ||
82 | } | ||
83 | |||
84 | public EnvironmentActionType? Action | ||
85 | { | ||
86 | get => (EnvironmentActionType?)this.Fields[(int)EnvironmentSymbolFields.Action].AsNullableNumber(); | ||
87 | set => this.Set((int)EnvironmentSymbolFields.Action, (int?)value); | ||
88 | } | ||
89 | |||
90 | public EnvironmentPartType? Part | ||
91 | { | ||
92 | get => (EnvironmentPartType?)this.Fields[(int)EnvironmentSymbolFields.Part].AsNullableNumber(); | ||
93 | set => this.Set((int)EnvironmentSymbolFields.Part, (int?)value); | ||
94 | } | ||
95 | |||
96 | public bool Permanent | ||
97 | { | ||
98 | get => this.Fields[(int)EnvironmentSymbolFields.Permanent].AsBool(); | ||
99 | set => this.Set((int)EnvironmentSymbolFields.Permanent, value); | ||
100 | } | ||
101 | |||
102 | public bool System | ||
103 | { | ||
104 | get => this.Fields[(int)EnvironmentSymbolFields.System].AsBool(); | ||
105 | set => this.Set((int)EnvironmentSymbolFields.System, value); | ||
106 | } | ||
107 | |||
108 | public string ComponentRef | ||
109 | { | ||
110 | get => (string)this.Fields[(int)EnvironmentSymbolFields.ComponentRef]; | ||
111 | set => this.Set((int)EnvironmentSymbolFields.ComponentRef, value); | ||
112 | } | ||
113 | } | ||
114 | } \ No newline at end of file | ||
diff --git a/src/api/wix/WixToolset.Data/Symbols/ErrorSymbol.cs b/src/api/wix/WixToolset.Data/Symbols/ErrorSymbol.cs new file mode 100644 index 00000000..d2994598 --- /dev/null +++ b/src/api/wix/WixToolset.Data/Symbols/ErrorSymbol.cs | |||
@@ -0,0 +1,44 @@ | |||
1 | // Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. | ||
2 | |||
3 | namespace WixToolset.Data | ||
4 | { | ||
5 | using WixToolset.Data.Symbols; | ||
6 | |||
7 | public static partial class SymbolDefinitions | ||
8 | { | ||
9 | public static readonly IntermediateSymbolDefinition Error = new IntermediateSymbolDefinition( | ||
10 | SymbolDefinitionType.Error, | ||
11 | new[] | ||
12 | { | ||
13 | new IntermediateFieldDefinition(nameof(ErrorSymbolFields.Message), IntermediateFieldType.String), | ||
14 | }, | ||
15 | typeof(ErrorSymbol)); | ||
16 | } | ||
17 | } | ||
18 | |||
19 | namespace WixToolset.Data.Symbols | ||
20 | { | ||
21 | public enum ErrorSymbolFields | ||
22 | { | ||
23 | Message, | ||
24 | } | ||
25 | |||
26 | public class ErrorSymbol : IntermediateSymbol | ||
27 | { | ||
28 | public ErrorSymbol() : base(SymbolDefinitions.Error, null, null) | ||
29 | { | ||
30 | } | ||
31 | |||
32 | public ErrorSymbol(SourceLineNumber sourceLineNumber, Identifier id = null) : base(SymbolDefinitions.Error, sourceLineNumber, id) | ||
33 | { | ||
34 | } | ||
35 | |||
36 | public IntermediateField this[ErrorSymbolFields index] => this.Fields[(int)index]; | ||
37 | |||
38 | public string Message | ||
39 | { | ||
40 | get => (string)this.Fields[(int)ErrorSymbolFields.Message]; | ||
41 | set => this.Set((int)ErrorSymbolFields.Message, value); | ||
42 | } | ||
43 | } | ||
44 | } \ No newline at end of file | ||
diff --git a/src/api/wix/WixToolset.Data/Symbols/EventMappingSymbol.cs b/src/api/wix/WixToolset.Data/Symbols/EventMappingSymbol.cs new file mode 100644 index 00000000..fec7be3b --- /dev/null +++ b/src/api/wix/WixToolset.Data/Symbols/EventMappingSymbol.cs | |||
@@ -0,0 +1,68 @@ | |||
1 | // Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. | ||
2 | |||
3 | namespace WixToolset.Data | ||
4 | { | ||
5 | using WixToolset.Data.Symbols; | ||
6 | |||
7 | public static partial class SymbolDefinitions | ||
8 | { | ||
9 | public static readonly IntermediateSymbolDefinition EventMapping = new IntermediateSymbolDefinition( | ||
10 | SymbolDefinitionType.EventMapping, | ||
11 | new[] | ||
12 | { | ||
13 | new IntermediateFieldDefinition(nameof(EventMappingSymbolFields.DialogRef), IntermediateFieldType.String), | ||
14 | new IntermediateFieldDefinition(nameof(EventMappingSymbolFields.ControlRef), IntermediateFieldType.String), | ||
15 | new IntermediateFieldDefinition(nameof(EventMappingSymbolFields.Event), IntermediateFieldType.String), | ||
16 | new IntermediateFieldDefinition(nameof(EventMappingSymbolFields.Attribute), IntermediateFieldType.String), | ||
17 | }, | ||
18 | typeof(EventMappingSymbol)); | ||
19 | } | ||
20 | } | ||
21 | |||
22 | namespace WixToolset.Data.Symbols | ||
23 | { | ||
24 | public enum EventMappingSymbolFields | ||
25 | { | ||
26 | DialogRef, | ||
27 | ControlRef, | ||
28 | Event, | ||
29 | Attribute, | ||
30 | } | ||
31 | |||
32 | public class EventMappingSymbol : IntermediateSymbol | ||
33 | { | ||
34 | public EventMappingSymbol() : base(SymbolDefinitions.EventMapping, null, null) | ||
35 | { | ||
36 | } | ||
37 | |||
38 | public EventMappingSymbol(SourceLineNumber sourceLineNumber, Identifier id = null) : base(SymbolDefinitions.EventMapping, sourceLineNumber, id) | ||
39 | { | ||
40 | } | ||
41 | |||
42 | public IntermediateField this[EventMappingSymbolFields index] => this.Fields[(int)index]; | ||
43 | |||
44 | public string DialogRef | ||
45 | { | ||
46 | get => (string)this.Fields[(int)EventMappingSymbolFields.DialogRef]; | ||
47 | set => this.Set((int)EventMappingSymbolFields.DialogRef, value); | ||
48 | } | ||
49 | |||
50 | public string ControlRef | ||
51 | { | ||
52 | get => (string)this.Fields[(int)EventMappingSymbolFields.ControlRef]; | ||
53 | set => this.Set((int)EventMappingSymbolFields.ControlRef, value); | ||
54 | } | ||
55 | |||
56 | public string Event | ||
57 | { | ||
58 | get => (string)this.Fields[(int)EventMappingSymbolFields.Event]; | ||
59 | set => this.Set((int)EventMappingSymbolFields.Event, value); | ||
60 | } | ||
61 | |||
62 | public string Attribute | ||
63 | { | ||
64 | get => (string)this.Fields[(int)EventMappingSymbolFields.Attribute]; | ||
65 | set => this.Set((int)EventMappingSymbolFields.Attribute, value); | ||
66 | } | ||
67 | } | ||
68 | } \ No newline at end of file | ||
diff --git a/src/api/wix/WixToolset.Data/Symbols/ExtensionSymbol.cs b/src/api/wix/WixToolset.Data/Symbols/ExtensionSymbol.cs new file mode 100644 index 00000000..b8806971 --- /dev/null +++ b/src/api/wix/WixToolset.Data/Symbols/ExtensionSymbol.cs | |||
@@ -0,0 +1,76 @@ | |||
1 | // Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. | ||
2 | |||
3 | namespace WixToolset.Data | ||
4 | { | ||
5 | using WixToolset.Data.Symbols; | ||
6 | |||
7 | public static partial class SymbolDefinitions | ||
8 | { | ||
9 | public static readonly IntermediateSymbolDefinition Extension = new IntermediateSymbolDefinition( | ||
10 | SymbolDefinitionType.Extension, | ||
11 | new[] | ||
12 | { | ||
13 | new IntermediateFieldDefinition(nameof(ExtensionSymbolFields.Extension), IntermediateFieldType.String), | ||
14 | new IntermediateFieldDefinition(nameof(ExtensionSymbolFields.ComponentRef), IntermediateFieldType.String), | ||
15 | new IntermediateFieldDefinition(nameof(ExtensionSymbolFields.ProgIdRef), IntermediateFieldType.String), | ||
16 | new IntermediateFieldDefinition(nameof(ExtensionSymbolFields.MimeRef), IntermediateFieldType.String), | ||
17 | new IntermediateFieldDefinition(nameof(ExtensionSymbolFields.FeatureRef), IntermediateFieldType.String), | ||
18 | }, | ||
19 | typeof(ExtensionSymbol)); | ||
20 | } | ||
21 | } | ||
22 | |||
23 | namespace WixToolset.Data.Symbols | ||
24 | { | ||
25 | public enum ExtensionSymbolFields | ||
26 | { | ||
27 | Extension, | ||
28 | ComponentRef, | ||
29 | ProgIdRef, | ||
30 | MimeRef, | ||
31 | FeatureRef, | ||
32 | } | ||
33 | |||
34 | public class ExtensionSymbol : IntermediateSymbol | ||
35 | { | ||
36 | public ExtensionSymbol() : base(SymbolDefinitions.Extension, null, null) | ||
37 | { | ||
38 | } | ||
39 | |||
40 | public ExtensionSymbol(SourceLineNumber sourceLineNumber, Identifier id = null) : base(SymbolDefinitions.Extension, sourceLineNumber, id) | ||
41 | { | ||
42 | } | ||
43 | |||
44 | public IntermediateField this[ExtensionSymbolFields index] => this.Fields[(int)index]; | ||
45 | |||
46 | public string Extension | ||
47 | { | ||
48 | get => (string)this.Fields[(int)ExtensionSymbolFields.Extension]; | ||
49 | set => this.Set((int)ExtensionSymbolFields.Extension, value); | ||
50 | } | ||
51 | |||
52 | public string ComponentRef | ||
53 | { | ||
54 | get => (string)this.Fields[(int)ExtensionSymbolFields.ComponentRef]; | ||
55 | set => this.Set((int)ExtensionSymbolFields.ComponentRef, value); | ||
56 | } | ||
57 | |||
58 | public string ProgIdRef | ||
59 | { | ||
60 | get => (string)this.Fields[(int)ExtensionSymbolFields.ProgIdRef]; | ||
61 | set => this.Set((int)ExtensionSymbolFields.ProgIdRef, value); | ||
62 | } | ||
63 | |||
64 | public string MimeRef | ||
65 | { | ||
66 | get => (string)this.Fields[(int)ExtensionSymbolFields.MimeRef]; | ||
67 | set => this.Set((int)ExtensionSymbolFields.MimeRef, value); | ||
68 | } | ||
69 | |||
70 | public string FeatureRef | ||
71 | { | ||
72 | get => (string)this.Fields[(int)ExtensionSymbolFields.FeatureRef]; | ||
73 | set => this.Set((int)ExtensionSymbolFields.FeatureRef, value); | ||
74 | } | ||
75 | } | ||
76 | } \ No newline at end of file | ||
diff --git a/src/api/wix/WixToolset.Data/Symbols/ExternalFilesSymbol.cs b/src/api/wix/WixToolset.Data/Symbols/ExternalFilesSymbol.cs new file mode 100644 index 00000000..87888f0b --- /dev/null +++ b/src/api/wix/WixToolset.Data/Symbols/ExternalFilesSymbol.cs | |||
@@ -0,0 +1,100 @@ | |||
1 | // Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. | ||
2 | |||
3 | namespace WixToolset.Data | ||
4 | { | ||
5 | using WixToolset.Data.Symbols; | ||
6 | |||
7 | public static partial class SymbolDefinitions | ||
8 | { | ||
9 | public static readonly IntermediateSymbolDefinition ExternalFiles = new IntermediateSymbolDefinition( | ||
10 | SymbolDefinitionType.ExternalFiles, | ||
11 | new[] | ||
12 | { | ||
13 | new IntermediateFieldDefinition(nameof(ExternalFilesSymbolFields.Family), IntermediateFieldType.String), | ||
14 | new IntermediateFieldDefinition(nameof(ExternalFilesSymbolFields.FTK), IntermediateFieldType.String), | ||
15 | new IntermediateFieldDefinition(nameof(ExternalFilesSymbolFields.FilePath), IntermediateFieldType.String), | ||
16 | new IntermediateFieldDefinition(nameof(ExternalFilesSymbolFields.SymbolPaths), IntermediateFieldType.String), | ||
17 | new IntermediateFieldDefinition(nameof(ExternalFilesSymbolFields.IgnoreOffsets), IntermediateFieldType.String), | ||
18 | new IntermediateFieldDefinition(nameof(ExternalFilesSymbolFields.IgnoreLengths), IntermediateFieldType.String), | ||
19 | new IntermediateFieldDefinition(nameof(ExternalFilesSymbolFields.RetainOffsets), IntermediateFieldType.String), | ||
20 | new IntermediateFieldDefinition(nameof(ExternalFilesSymbolFields.Order), IntermediateFieldType.Number), | ||
21 | }, | ||
22 | typeof(ExternalFilesSymbol)); | ||
23 | } | ||
24 | } | ||
25 | |||
26 | namespace WixToolset.Data.Symbols | ||
27 | { | ||
28 | public enum ExternalFilesSymbolFields | ||
29 | { | ||
30 | Family, | ||
31 | FTK, | ||
32 | FilePath, | ||
33 | SymbolPaths, | ||
34 | IgnoreOffsets, | ||
35 | IgnoreLengths, | ||
36 | RetainOffsets, | ||
37 | Order, | ||
38 | } | ||
39 | |||
40 | public class ExternalFilesSymbol : IntermediateSymbol | ||
41 | { | ||
42 | public ExternalFilesSymbol() : base(SymbolDefinitions.ExternalFiles, null, null) | ||
43 | { | ||
44 | } | ||
45 | |||
46 | public ExternalFilesSymbol(SourceLineNumber sourceLineNumber, Identifier id = null) : base(SymbolDefinitions.ExternalFiles, sourceLineNumber, id) | ||
47 | { | ||
48 | } | ||
49 | |||
50 | public IntermediateField this[ExternalFilesSymbolFields index] => this.Fields[(int)index]; | ||
51 | |||
52 | public string Family | ||
53 | { | ||
54 | get => (string)this.Fields[(int)ExternalFilesSymbolFields.Family]; | ||
55 | set => this.Set((int)ExternalFilesSymbolFields.Family, value); | ||
56 | } | ||
57 | |||
58 | public string FTK | ||
59 | { | ||
60 | get => (string)this.Fields[(int)ExternalFilesSymbolFields.FTK]; | ||
61 | set => this.Set((int)ExternalFilesSymbolFields.FTK, value); | ||
62 | } | ||
63 | |||
64 | public string FilePath | ||
65 | { | ||
66 | get => (string)this.Fields[(int)ExternalFilesSymbolFields.FilePath]; | ||
67 | set => this.Set((int)ExternalFilesSymbolFields.FilePath, value); | ||
68 | } | ||
69 | |||
70 | public string SymbolPaths | ||
71 | { | ||
72 | get => (string)this.Fields[(int)ExternalFilesSymbolFields.SymbolPaths]; | ||
73 | set => this.Set((int)ExternalFilesSymbolFields.SymbolPaths, value); | ||
74 | } | ||
75 | |||
76 | public string IgnoreOffsets | ||
77 | { | ||
78 | get => (string)this.Fields[(int)ExternalFilesSymbolFields.IgnoreOffsets]; | ||
79 | set => this.Set((int)ExternalFilesSymbolFields.IgnoreOffsets, value); | ||
80 | } | ||
81 | |||
82 | public string IgnoreLengths | ||
83 | { | ||
84 | get => (string)this.Fields[(int)ExternalFilesSymbolFields.IgnoreLengths]; | ||
85 | set => this.Set((int)ExternalFilesSymbolFields.IgnoreLengths, value); | ||
86 | } | ||
87 | |||
88 | public string RetainOffsets | ||
89 | { | ||
90 | get => (string)this.Fields[(int)ExternalFilesSymbolFields.RetainOffsets]; | ||
91 | set => this.Set((int)ExternalFilesSymbolFields.RetainOffsets, value); | ||
92 | } | ||
93 | |||
94 | public int Order | ||
95 | { | ||
96 | get => (int)this.Fields[(int)ExternalFilesSymbolFields.Order]; | ||
97 | set => this.Set((int)ExternalFilesSymbolFields.Order, value); | ||
98 | } | ||
99 | } | ||
100 | } \ No newline at end of file | ||
diff --git a/src/api/wix/WixToolset.Data/Symbols/FamilyFileRangesSymbol.cs b/src/api/wix/WixToolset.Data/Symbols/FamilyFileRangesSymbol.cs new file mode 100644 index 00000000..84cd5b4b --- /dev/null +++ b/src/api/wix/WixToolset.Data/Symbols/FamilyFileRangesSymbol.cs | |||
@@ -0,0 +1,68 @@ | |||
1 | // Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. | ||
2 | |||
3 | namespace WixToolset.Data | ||
4 | { | ||
5 | using WixToolset.Data.Symbols; | ||
6 | |||
7 | public static partial class SymbolDefinitions | ||
8 | { | ||
9 | public static readonly IntermediateSymbolDefinition FamilyFileRanges = new IntermediateSymbolDefinition( | ||
10 | SymbolDefinitionType.FamilyFileRanges, | ||
11 | new[] | ||
12 | { | ||
13 | new IntermediateFieldDefinition(nameof(FamilyFileRangesSymbolFields.Family), IntermediateFieldType.String), | ||
14 | new IntermediateFieldDefinition(nameof(FamilyFileRangesSymbolFields.FTK), IntermediateFieldType.String), | ||
15 | new IntermediateFieldDefinition(nameof(FamilyFileRangesSymbolFields.RetainOffsets), IntermediateFieldType.String), | ||
16 | new IntermediateFieldDefinition(nameof(FamilyFileRangesSymbolFields.RetainLengths), IntermediateFieldType.String), | ||
17 | }, | ||
18 | typeof(FamilyFileRangesSymbol)); | ||
19 | } | ||
20 | } | ||
21 | |||
22 | namespace WixToolset.Data.Symbols | ||
23 | { | ||
24 | public enum FamilyFileRangesSymbolFields | ||
25 | { | ||
26 | Family, | ||
27 | FTK, | ||
28 | RetainOffsets, | ||
29 | RetainLengths, | ||
30 | } | ||
31 | |||
32 | public class FamilyFileRangesSymbol : IntermediateSymbol | ||
33 | { | ||
34 | public FamilyFileRangesSymbol() : base(SymbolDefinitions.FamilyFileRanges, null, null) | ||
35 | { | ||
36 | } | ||
37 | |||
38 | public FamilyFileRangesSymbol(SourceLineNumber sourceLineNumber, Identifier id = null) : base(SymbolDefinitions.FamilyFileRanges, sourceLineNumber, id) | ||
39 | { | ||
40 | } | ||
41 | |||
42 | public IntermediateField this[FamilyFileRangesSymbolFields index] => this.Fields[(int)index]; | ||
43 | |||
44 | public string Family | ||
45 | { | ||
46 | get => (string)this.Fields[(int)FamilyFileRangesSymbolFields.Family]; | ||
47 | set => this.Set((int)FamilyFileRangesSymbolFields.Family, value); | ||
48 | } | ||
49 | |||
50 | public string FTK | ||
51 | { | ||
52 | get => (string)this.Fields[(int)FamilyFileRangesSymbolFields.FTK]; | ||
53 | set => this.Set((int)FamilyFileRangesSymbolFields.FTK, value); | ||
54 | } | ||
55 | |||
56 | public string RetainOffsets | ||
57 | { | ||
58 | get => (string)this.Fields[(int)FamilyFileRangesSymbolFields.RetainOffsets]; | ||
59 | set => this.Set((int)FamilyFileRangesSymbolFields.RetainOffsets, value); | ||
60 | } | ||
61 | |||
62 | public string RetainLengths | ||
63 | { | ||
64 | get => (string)this.Fields[(int)FamilyFileRangesSymbolFields.RetainLengths]; | ||
65 | set => this.Set((int)FamilyFileRangesSymbolFields.RetainLengths, value); | ||
66 | } | ||
67 | } | ||
68 | } \ No newline at end of file | ||
diff --git a/src/api/wix/WixToolset.Data/Symbols/FeatureComponentsSymbol.cs b/src/api/wix/WixToolset.Data/Symbols/FeatureComponentsSymbol.cs new file mode 100644 index 00000000..af51daed --- /dev/null +++ b/src/api/wix/WixToolset.Data/Symbols/FeatureComponentsSymbol.cs | |||
@@ -0,0 +1,52 @@ | |||
1 | // Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. | ||
2 | |||
3 | namespace WixToolset.Data | ||
4 | { | ||
5 | using WixToolset.Data.Symbols; | ||
6 | |||
7 | public static partial class SymbolDefinitions | ||
8 | { | ||
9 | public static readonly IntermediateSymbolDefinition FeatureComponents = new IntermediateSymbolDefinition( | ||
10 | SymbolDefinitionType.FeatureComponents, | ||
11 | new[] | ||
12 | { | ||
13 | new IntermediateFieldDefinition(nameof(FeatureComponentsSymbolFields.FeatureRef), IntermediateFieldType.String), | ||
14 | new IntermediateFieldDefinition(nameof(FeatureComponentsSymbolFields.ComponentRef), IntermediateFieldType.String), | ||
15 | }, | ||
16 | typeof(FeatureComponentsSymbol)); | ||
17 | } | ||
18 | } | ||
19 | |||
20 | namespace WixToolset.Data.Symbols | ||
21 | { | ||
22 | public enum FeatureComponentsSymbolFields | ||
23 | { | ||
24 | FeatureRef, | ||
25 | ComponentRef, | ||
26 | } | ||
27 | |||
28 | public class FeatureComponentsSymbol : IntermediateSymbol | ||
29 | { | ||
30 | public FeatureComponentsSymbol() : base(SymbolDefinitions.FeatureComponents, null, null) | ||
31 | { | ||
32 | } | ||
33 | |||
34 | public FeatureComponentsSymbol(SourceLineNumber sourceLineNumber, Identifier id = null) : base(SymbolDefinitions.FeatureComponents, sourceLineNumber, id) | ||
35 | { | ||
36 | } | ||
37 | |||
38 | public IntermediateField this[FeatureComponentsSymbolFields index] => this.Fields[(int)index]; | ||
39 | |||
40 | public string FeatureRef | ||
41 | { | ||
42 | get => (string)this.Fields[(int)FeatureComponentsSymbolFields.FeatureRef]; | ||
43 | set => this.Set((int)FeatureComponentsSymbolFields.FeatureRef, value); | ||
44 | } | ||
45 | |||
46 | public string ComponentRef | ||
47 | { | ||
48 | get => (string)this.Fields[(int)FeatureComponentsSymbolFields.ComponentRef]; | ||
49 | set => this.Set((int)FeatureComponentsSymbolFields.ComponentRef, value); | ||
50 | } | ||
51 | } | ||
52 | } \ No newline at end of file | ||
diff --git a/src/api/wix/WixToolset.Data/Symbols/FeatureSymbol.cs b/src/api/wix/WixToolset.Data/Symbols/FeatureSymbol.cs new file mode 100644 index 00000000..67972b63 --- /dev/null +++ b/src/api/wix/WixToolset.Data/Symbols/FeatureSymbol.cs | |||
@@ -0,0 +1,129 @@ | |||
1 | // Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. | ||
2 | |||
3 | namespace WixToolset.Data | ||
4 | { | ||
5 | using WixToolset.Data.Symbols; | ||
6 | |||
7 | public static partial class SymbolDefinitions | ||
8 | { | ||
9 | public static readonly IntermediateSymbolDefinition Feature = new IntermediateSymbolDefinition( | ||
10 | SymbolDefinitionType.Feature, | ||
11 | new[] | ||
12 | { | ||
13 | new IntermediateFieldDefinition(nameof(FeatureSymbolFields.ParentFeatureRef), IntermediateFieldType.String), | ||
14 | new IntermediateFieldDefinition(nameof(FeatureSymbolFields.Title), IntermediateFieldType.String), | ||
15 | new IntermediateFieldDefinition(nameof(FeatureSymbolFields.Description), IntermediateFieldType.String), | ||
16 | new IntermediateFieldDefinition(nameof(FeatureSymbolFields.Display), IntermediateFieldType.Number), | ||
17 | new IntermediateFieldDefinition(nameof(FeatureSymbolFields.Level), IntermediateFieldType.Number), | ||
18 | new IntermediateFieldDefinition(nameof(FeatureSymbolFields.DirectoryRef), IntermediateFieldType.String), | ||
19 | new IntermediateFieldDefinition(nameof(FeatureSymbolFields.DisallowAbsent), IntermediateFieldType.Bool), | ||
20 | new IntermediateFieldDefinition(nameof(FeatureSymbolFields.DisallowAdvertise), IntermediateFieldType.Bool), | ||
21 | new IntermediateFieldDefinition(nameof(FeatureSymbolFields.InstallDefault), IntermediateFieldType.Number), | ||
22 | new IntermediateFieldDefinition(nameof(FeatureSymbolFields.TypicalDefault), IntermediateFieldType.Number), | ||
23 | }, | ||
24 | typeof(FeatureSymbol)); | ||
25 | } | ||
26 | } | ||
27 | |||
28 | namespace WixToolset.Data.Symbols | ||
29 | { | ||
30 | public enum FeatureSymbolFields | ||
31 | { | ||
32 | ParentFeatureRef, | ||
33 | Title, | ||
34 | Description, | ||
35 | Display, | ||
36 | Level, | ||
37 | DirectoryRef, | ||
38 | DisallowAbsent, | ||
39 | DisallowAdvertise, | ||
40 | InstallDefault, | ||
41 | TypicalDefault, | ||
42 | } | ||
43 | |||
44 | public enum FeatureInstallDefault | ||
45 | { | ||
46 | Local, | ||
47 | Source, | ||
48 | FollowParent, | ||
49 | } | ||
50 | |||
51 | public enum FeatureTypicalDefault | ||
52 | { | ||
53 | Install, | ||
54 | Advertise | ||
55 | } | ||
56 | |||
57 | public class FeatureSymbol : IntermediateSymbol | ||
58 | { | ||
59 | public FeatureSymbol() : base(SymbolDefinitions.Feature, null, null) | ||
60 | { | ||
61 | } | ||
62 | |||
63 | public FeatureSymbol(SourceLineNumber sourceLineNumber, Identifier id = null) : base(SymbolDefinitions.Feature, sourceLineNumber, id) | ||
64 | { | ||
65 | } | ||
66 | |||
67 | public IntermediateField this[FeatureSymbolFields index] => this.Fields[(int)index]; | ||
68 | |||
69 | public string ParentFeatureRef | ||
70 | { | ||
71 | get => (string)this.Fields[(int)FeatureSymbolFields.ParentFeatureRef]; | ||
72 | set => this.Set((int)FeatureSymbolFields.ParentFeatureRef, value); | ||
73 | } | ||
74 | |||
75 | public string Title | ||
76 | { | ||
77 | get => (string)this.Fields[(int)FeatureSymbolFields.Title]; | ||
78 | set => this.Set((int)FeatureSymbolFields.Title, value); | ||
79 | } | ||
80 | |||
81 | public string Description | ||
82 | { | ||
83 | get => (string)this.Fields[(int)FeatureSymbolFields.Description]; | ||
84 | set => this.Set((int)FeatureSymbolFields.Description, value); | ||
85 | } | ||
86 | |||
87 | public int Display | ||
88 | { | ||
89 | get => (int)this.Fields[(int)FeatureSymbolFields.Display]; | ||
90 | set => this.Set((int)FeatureSymbolFields.Display, value); | ||
91 | } | ||
92 | |||
93 | public int Level | ||
94 | { | ||
95 | get => (int)this.Fields[(int)FeatureSymbolFields.Level]; | ||
96 | set => this.Set((int)FeatureSymbolFields.Level, value); | ||
97 | } | ||
98 | |||
99 | public string DirectoryRef | ||
100 | { | ||
101 | get => (string)this.Fields[(int)FeatureSymbolFields.DirectoryRef]; | ||
102 | set => this.Set((int)FeatureSymbolFields.DirectoryRef, value); | ||
103 | } | ||
104 | |||
105 | public bool DisallowAbsent | ||
106 | { | ||
107 | get => this.Fields[(int)FeatureSymbolFields.DisallowAbsent].AsBool(); | ||
108 | set => this.Set((int)FeatureSymbolFields.DisallowAbsent, value); | ||
109 | } | ||
110 | |||
111 | public bool DisallowAdvertise | ||
112 | { | ||
113 | get => this.Fields[(int)FeatureSymbolFields.DisallowAdvertise].AsBool(); | ||
114 | set => this.Set((int)FeatureSymbolFields.DisallowAdvertise, value); | ||
115 | } | ||
116 | |||
117 | public FeatureInstallDefault InstallDefault | ||
118 | { | ||
119 | get => (FeatureInstallDefault)this.Fields[(int)FeatureSymbolFields.InstallDefault].AsNumber(); | ||
120 | set => this.Set((int)FeatureSymbolFields.InstallDefault, (int)value); | ||
121 | } | ||
122 | |||
123 | public FeatureTypicalDefault TypicalDefault | ||
124 | { | ||
125 | get => (FeatureTypicalDefault)this.Fields[(int)FeatureSymbolFields.TypicalDefault].AsNumber(); | ||
126 | set => this.Set((int)FeatureSymbolFields.TypicalDefault, (int)value); | ||
127 | } | ||
128 | } | ||
129 | } \ No newline at end of file | ||
diff --git a/src/api/wix/WixToolset.Data/Symbols/FileSFPCatalogSymbol.cs b/src/api/wix/WixToolset.Data/Symbols/FileSFPCatalogSymbol.cs new file mode 100644 index 00000000..3abf2915 --- /dev/null +++ b/src/api/wix/WixToolset.Data/Symbols/FileSFPCatalogSymbol.cs | |||
@@ -0,0 +1,52 @@ | |||
1 | // Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. | ||
2 | |||
3 | namespace WixToolset.Data | ||
4 | { | ||
5 | using WixToolset.Data.Symbols; | ||
6 | |||
7 | public static partial class SymbolDefinitions | ||
8 | { | ||
9 | public static readonly IntermediateSymbolDefinition FileSFPCatalog = new IntermediateSymbolDefinition( | ||
10 | SymbolDefinitionType.FileSFPCatalog, | ||
11 | new[] | ||
12 | { | ||
13 | new IntermediateFieldDefinition(nameof(FileSFPCatalogSymbolFields.FileRef), IntermediateFieldType.String), | ||
14 | new IntermediateFieldDefinition(nameof(FileSFPCatalogSymbolFields.SFPCatalogRef), IntermediateFieldType.String), | ||
15 | }, | ||
16 | typeof(FileSFPCatalogSymbol)); | ||
17 | } | ||
18 | } | ||
19 | |||
20 | namespace WixToolset.Data.Symbols | ||
21 | { | ||
22 | public enum FileSFPCatalogSymbolFields | ||
23 | { | ||
24 | FileRef, | ||
25 | SFPCatalogRef, | ||
26 | } | ||
27 | |||
28 | public class FileSFPCatalogSymbol : IntermediateSymbol | ||
29 | { | ||
30 | public FileSFPCatalogSymbol() : base(SymbolDefinitions.FileSFPCatalog, null, null) | ||
31 | { | ||
32 | } | ||
33 | |||
34 | public FileSFPCatalogSymbol(SourceLineNumber sourceLineNumber, Identifier id = null) : base(SymbolDefinitions.FileSFPCatalog, sourceLineNumber, id) | ||
35 | { | ||
36 | } | ||
37 | |||
38 | public IntermediateField this[FileSFPCatalogSymbolFields index] => this.Fields[(int)index]; | ||
39 | |||
40 | public string FileRef | ||
41 | { | ||
42 | get => (string)this.Fields[(int)FileSFPCatalogSymbolFields.FileRef]; | ||
43 | set => this.Set((int)FileSFPCatalogSymbolFields.FileRef, value); | ||
44 | } | ||
45 | |||
46 | public string SFPCatalogRef | ||
47 | { | ||
48 | get => (string)this.Fields[(int)FileSFPCatalogSymbolFields.SFPCatalogRef]; | ||
49 | set => this.Set((int)FileSFPCatalogSymbolFields.SFPCatalogRef, value); | ||
50 | } | ||
51 | } | ||
52 | } \ No newline at end of file | ||
diff --git a/src/api/wix/WixToolset.Data/Symbols/FileSymbol.cs b/src/api/wix/WixToolset.Data/Symbols/FileSymbol.cs new file mode 100644 index 00000000..784b7846 --- /dev/null +++ b/src/api/wix/WixToolset.Data/Symbols/FileSymbol.cs | |||
@@ -0,0 +1,256 @@ | |||
1 | // Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. | ||
2 | |||
3 | namespace WixToolset.Data | ||
4 | { | ||
5 | using WixToolset.Data.Symbols; | ||
6 | |||
7 | public static partial class SymbolDefinitions | ||
8 | { | ||
9 | public static readonly IntermediateSymbolDefinition File = new IntermediateSymbolDefinition( | ||
10 | SymbolDefinitionType.File, | ||
11 | new[] | ||
12 | { | ||
13 | new IntermediateFieldDefinition(nameof(FileSymbolFields.ComponentRef), IntermediateFieldType.String), | ||
14 | new IntermediateFieldDefinition(nameof(FileSymbolFields.Name), IntermediateFieldType.String), | ||
15 | new IntermediateFieldDefinition(nameof(FileSymbolFields.ShortName), IntermediateFieldType.String), | ||
16 | new IntermediateFieldDefinition(nameof(FileSymbolFields.FileSize), IntermediateFieldType.Number), | ||
17 | new IntermediateFieldDefinition(nameof(FileSymbolFields.Version), IntermediateFieldType.String), | ||
18 | new IntermediateFieldDefinition(nameof(FileSymbolFields.Language), IntermediateFieldType.String), | ||
19 | new IntermediateFieldDefinition(nameof(FileSymbolFields.Attributes), IntermediateFieldType.Number), | ||
20 | new IntermediateFieldDefinition(nameof(FileSymbolFields.DirectoryRef), IntermediateFieldType.String), | ||
21 | new IntermediateFieldDefinition(nameof(FileSymbolFields.DiskId), IntermediateFieldType.Number), | ||
22 | new IntermediateFieldDefinition(nameof(FileSymbolFields.Source), IntermediateFieldType.Path), | ||
23 | |||
24 | new IntermediateFieldDefinition(nameof(FileSymbolFields.FontTitle), IntermediateFieldType.String), | ||
25 | new IntermediateFieldDefinition(nameof(FileSymbolFields.SelfRegCost), IntermediateFieldType.Number), | ||
26 | new IntermediateFieldDefinition(nameof(FileSymbolFields.BindPath), IntermediateFieldType.String), | ||
27 | |||
28 | new IntermediateFieldDefinition(nameof(FileSymbolFields.Sequence), IntermediateFieldType.Number), | ||
29 | |||
30 | new IntermediateFieldDefinition(nameof(FileSymbolFields.PatchGroup), IntermediateFieldType.Number), | ||
31 | new IntermediateFieldDefinition(nameof(FileSymbolFields.PatchAttributes), IntermediateFieldType.Number), | ||
32 | new IntermediateFieldDefinition(nameof(FileSymbolFields.DeltaPatchHeaderSource), IntermediateFieldType.String), | ||
33 | |||
34 | new IntermediateFieldDefinition(nameof(FileSymbolFields.RetainLengths), IntermediateFieldType.String), | ||
35 | new IntermediateFieldDefinition(nameof(FileSymbolFields.IgnoreOffsets), IntermediateFieldType.String), | ||
36 | new IntermediateFieldDefinition(nameof(FileSymbolFields.IgnoreLengths), IntermediateFieldType.String), | ||
37 | new IntermediateFieldDefinition(nameof(FileSymbolFields.RetainOffsets), IntermediateFieldType.String), | ||
38 | new IntermediateFieldDefinition(nameof(FileSymbolFields.SymbolPaths), IntermediateFieldType.String), | ||
39 | }, | ||
40 | typeof(FileSymbol)); | ||
41 | } | ||
42 | } | ||
43 | |||
44 | namespace WixToolset.Data.Symbols | ||
45 | { | ||
46 | using System; | ||
47 | |||
48 | public enum FileSymbolFields | ||
49 | { | ||
50 | ComponentRef, | ||
51 | Name, | ||
52 | ShortName, | ||
53 | FileSize, | ||
54 | Version, | ||
55 | Language, | ||
56 | Attributes, | ||
57 | DirectoryRef, | ||
58 | DiskId, | ||
59 | Source, | ||
60 | |||
61 | FontTitle, | ||
62 | SelfRegCost, | ||
63 | BindPath, | ||
64 | |||
65 | Sequence, | ||
66 | |||
67 | PatchGroup, | ||
68 | PatchAttributes, | ||
69 | DeltaPatchHeaderSource, | ||
70 | |||
71 | RetainLengths, | ||
72 | IgnoreOffsets, | ||
73 | IgnoreLengths, | ||
74 | RetainOffsets, | ||
75 | SymbolPaths, | ||
76 | } | ||
77 | |||
78 | [Flags] | ||
79 | public enum FileSymbolAttributes : int | ||
80 | { | ||
81 | None = 0x0, | ||
82 | ReadOnly = 0x1, | ||
83 | Hidden = 0x2, | ||
84 | System = 0x4, | ||
85 | Vital = 0x8, | ||
86 | Compressed = 0x10, | ||
87 | Uncompressed = 0x20, | ||
88 | Checksum = 0x40, | ||
89 | } | ||
90 | |||
91 | /// <summary> | ||
92 | /// PatchAttribute values | ||
93 | /// </summary> | ||
94 | [Flags] | ||
95 | public enum PatchAttributeType | ||
96 | { | ||
97 | None = 0, | ||
98 | |||
99 | /// <summary>Prevents the updating of the file that is in fact changed in the upgraded image relative to the target images.</summary> | ||
100 | Ignore = 1, | ||
101 | |||
102 | /// <summary>Set if the entire file should be installed rather than creating a binary patch.</summary> | ||
103 | IncludeWholeFile = 2, | ||
104 | |||
105 | /// <summary>Set to indicate that the patch is non-vital.</summary> | ||
106 | AllowIgnoreOnError = 4, | ||
107 | |||
108 | /// <summary>Allowed bits.</summary> | ||
109 | Defined = Ignore | IncludeWholeFile | AllowIgnoreOnError | ||
110 | } | ||
111 | |||
112 | public class FileSymbol : IntermediateSymbol | ||
113 | { | ||
114 | public FileSymbol() : base(SymbolDefinitions.File, null, null) | ||
115 | { | ||
116 | } | ||
117 | |||
118 | public FileSymbol(SourceLineNumber sourceLineNumber, Identifier id = null) : base(SymbolDefinitions.File, sourceLineNumber, id) | ||
119 | { | ||
120 | } | ||
121 | |||
122 | public IntermediateField this[FileSymbolFields index] => this.Fields[(int)index]; | ||
123 | |||
124 | public string ComponentRef | ||
125 | { | ||
126 | get => (string)this.Fields[(int)FileSymbolFields.ComponentRef]; | ||
127 | set => this.Set((int)FileSymbolFields.ComponentRef, value); | ||
128 | } | ||
129 | |||
130 | public string Name | ||
131 | { | ||
132 | get => (string)this.Fields[(int)FileSymbolFields.Name]; | ||
133 | set => this.Set((int)FileSymbolFields.Name, value); | ||
134 | } | ||
135 | |||
136 | public string ShortName | ||
137 | { | ||
138 | get => (string)this.Fields[(int)FileSymbolFields.ShortName]; | ||
139 | set => this.Set((int)FileSymbolFields.ShortName, value); | ||
140 | } | ||
141 | |||
142 | public int FileSize | ||
143 | { | ||
144 | get => (int)this.Fields[(int)FileSymbolFields.FileSize]; | ||
145 | set => this.Set((int)FileSymbolFields.FileSize, value); | ||
146 | } | ||
147 | |||
148 | public string Version | ||
149 | { | ||
150 | get => (string)this.Fields[(int)FileSymbolFields.Version]; | ||
151 | set => this.Set((int)FileSymbolFields.Version, value); | ||
152 | } | ||
153 | |||
154 | public string Language | ||
155 | { | ||
156 | get => (string)this.Fields[(int)FileSymbolFields.Language]; | ||
157 | set => this.Set((int)FileSymbolFields.Language, value); | ||
158 | } | ||
159 | |||
160 | public FileSymbolAttributes Attributes | ||
161 | { | ||
162 | get => (FileSymbolAttributes)this.Fields[(int)FileSymbolFields.Attributes].AsNumber(); | ||
163 | set => this.Set((int)FileSymbolFields.Attributes, (int)value); | ||
164 | } | ||
165 | |||
166 | public string DirectoryRef | ||
167 | { | ||
168 | get => (string)this.Fields[(int)FileSymbolFields.DirectoryRef]; | ||
169 | set => this.Set((int)FileSymbolFields.DirectoryRef, value); | ||
170 | } | ||
171 | |||
172 | public int? DiskId | ||
173 | { | ||
174 | get => (int?)this.Fields[(int)FileSymbolFields.DiskId]; | ||
175 | set => this.Set((int)FileSymbolFields.DiskId, value); | ||
176 | } | ||
177 | |||
178 | public IntermediateFieldPathValue Source | ||
179 | { | ||
180 | get => this.Fields[(int)FileSymbolFields.Source].AsPath(); | ||
181 | set => this.Set((int)FileSymbolFields.Source, value); | ||
182 | } | ||
183 | |||
184 | public string FontTitle | ||
185 | { | ||
186 | get => (string)this.Fields[(int)FileSymbolFields.FontTitle]; | ||
187 | set => this.Set((int)FileSymbolFields.FontTitle, value); | ||
188 | } | ||
189 | |||
190 | public int? SelfRegCost | ||
191 | { | ||
192 | get => (int?)this.Fields[(int)FileSymbolFields.SelfRegCost]; | ||
193 | set => this.Set((int)FileSymbolFields.SelfRegCost, value); | ||
194 | } | ||
195 | |||
196 | public string BindPath | ||
197 | { | ||
198 | get => (string)this.Fields[(int)FileSymbolFields.BindPath]; | ||
199 | set => this.Set((int)FileSymbolFields.BindPath, value); | ||
200 | } | ||
201 | |||
202 | public int Sequence | ||
203 | { | ||
204 | get => (int)this.Fields[(int)FileSymbolFields.Sequence]; | ||
205 | set => this.Set((int)FileSymbolFields.Sequence, value); | ||
206 | } | ||
207 | |||
208 | public int? PatchGroup | ||
209 | { | ||
210 | get => (int?)this.Fields[(int)FileSymbolFields.PatchGroup]; | ||
211 | set => this.Set((int)FileSymbolFields.PatchGroup, value); | ||
212 | } | ||
213 | |||
214 | public PatchAttributeType? PatchAttributes | ||
215 | { | ||
216 | get => (PatchAttributeType?)this.Fields[(int)FileSymbolFields.PatchAttributes].AsNullableNumber(); | ||
217 | set => this.Set((int)FileSymbolFields.PatchAttributes, (int?)value); | ||
218 | } | ||
219 | |||
220 | public string DeltaPatchHeaderSource | ||
221 | { | ||
222 | get => (string)this.Fields[(int)FileSymbolFields.DeltaPatchHeaderSource]; | ||
223 | set => this.Set((int)FileSymbolFields.DeltaPatchHeaderSource, value); | ||
224 | } | ||
225 | |||
226 | public string RetainLengths | ||
227 | { | ||
228 | get => (string)this.Fields[(int)FileSymbolFields.RetainLengths]; | ||
229 | set => this.Set((int)FileSymbolFields.RetainLengths, value); | ||
230 | } | ||
231 | |||
232 | public string IgnoreOffsets | ||
233 | { | ||
234 | get => (string)this.Fields[(int)FileSymbolFields.IgnoreOffsets]; | ||
235 | set => this.Set((int)FileSymbolFields.IgnoreOffsets, value); | ||
236 | } | ||
237 | |||
238 | public string IgnoreLengths | ||
239 | { | ||
240 | get => (string)this.Fields[(int)FileSymbolFields.IgnoreLengths]; | ||
241 | set => this.Set((int)FileSymbolFields.IgnoreLengths, value); | ||
242 | } | ||
243 | |||
244 | public string RetainOffsets | ||
245 | { | ||
246 | get => (string)this.Fields[(int)FileSymbolFields.RetainOffsets]; | ||
247 | set => this.Set((int)FileSymbolFields.RetainOffsets, value); | ||
248 | } | ||
249 | |||
250 | public string SymbolPaths | ||
251 | { | ||
252 | get => (string)this.Fields[(int)FileSymbolFields.SymbolPaths]; | ||
253 | set => this.Set((int)FileSymbolFields.SymbolPaths, value); | ||
254 | } | ||
255 | } | ||
256 | } | ||
diff --git a/src/api/wix/WixToolset.Data/Symbols/IconSymbol.cs b/src/api/wix/WixToolset.Data/Symbols/IconSymbol.cs new file mode 100644 index 00000000..f3c825ec --- /dev/null +++ b/src/api/wix/WixToolset.Data/Symbols/IconSymbol.cs | |||
@@ -0,0 +1,44 @@ | |||
1 | // Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. | ||
2 | |||
3 | namespace WixToolset.Data | ||
4 | { | ||
5 | using WixToolset.Data.Symbols; | ||
6 | |||
7 | public static partial class SymbolDefinitions | ||
8 | { | ||
9 | public static readonly IntermediateSymbolDefinition Icon = new IntermediateSymbolDefinition( | ||
10 | SymbolDefinitionType.Icon, | ||
11 | new[] | ||
12 | { | ||
13 | new IntermediateFieldDefinition(nameof(IconSymbolFields.Data), IntermediateFieldType.Path), | ||
14 | }, | ||
15 | typeof(IconSymbol)); | ||
16 | } | ||
17 | } | ||
18 | |||
19 | namespace WixToolset.Data.Symbols | ||
20 | { | ||
21 | public enum IconSymbolFields | ||
22 | { | ||
23 | Data, | ||
24 | } | ||
25 | |||
26 | public class IconSymbol : IntermediateSymbol | ||
27 | { | ||
28 | public IconSymbol() : base(SymbolDefinitions.Icon, null, null) | ||
29 | { | ||
30 | } | ||
31 | |||
32 | public IconSymbol(SourceLineNumber sourceLineNumber, Identifier id = null) : base(SymbolDefinitions.Icon, sourceLineNumber, id) | ||
33 | { | ||
34 | } | ||
35 | |||
36 | public IntermediateField this[IconSymbolFields index] => this.Fields[(int)index]; | ||
37 | |||
38 | public IntermediateFieldPathValue Data | ||
39 | { | ||
40 | get => this.Fields[(int)IconSymbolFields.Data].AsPath(); | ||
41 | set => this.Set((int)IconSymbolFields.Data, value); | ||
42 | } | ||
43 | } | ||
44 | } \ No newline at end of file | ||
diff --git a/src/api/wix/WixToolset.Data/Symbols/ImageFamiliesSymbol.cs b/src/api/wix/WixToolset.Data/Symbols/ImageFamiliesSymbol.cs new file mode 100644 index 00000000..090628ef --- /dev/null +++ b/src/api/wix/WixToolset.Data/Symbols/ImageFamiliesSymbol.cs | |||
@@ -0,0 +1,84 @@ | |||
1 | // Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. | ||
2 | |||
3 | namespace WixToolset.Data | ||
4 | { | ||
5 | using WixToolset.Data.Symbols; | ||
6 | |||
7 | public static partial class SymbolDefinitions | ||
8 | { | ||
9 | public static readonly IntermediateSymbolDefinition ImageFamilies = new IntermediateSymbolDefinition( | ||
10 | SymbolDefinitionType.ImageFamilies, | ||
11 | new[] | ||
12 | { | ||
13 | new IntermediateFieldDefinition(nameof(ImageFamiliesSymbolFields.Family), IntermediateFieldType.String), | ||
14 | new IntermediateFieldDefinition(nameof(ImageFamiliesSymbolFields.MediaSrcPropName), IntermediateFieldType.String), | ||
15 | new IntermediateFieldDefinition(nameof(ImageFamiliesSymbolFields.MediaDiskId), IntermediateFieldType.Number), | ||
16 | new IntermediateFieldDefinition(nameof(ImageFamiliesSymbolFields.FileSequenceStart), IntermediateFieldType.Number), | ||
17 | new IntermediateFieldDefinition(nameof(ImageFamiliesSymbolFields.DiskPrompt), IntermediateFieldType.String), | ||
18 | new IntermediateFieldDefinition(nameof(ImageFamiliesSymbolFields.VolumeLabel), IntermediateFieldType.String), | ||
19 | }, | ||
20 | typeof(ImageFamiliesSymbol)); | ||
21 | } | ||
22 | } | ||
23 | |||
24 | namespace WixToolset.Data.Symbols | ||
25 | { | ||
26 | public enum ImageFamiliesSymbolFields | ||
27 | { | ||
28 | Family, | ||
29 | MediaSrcPropName, | ||
30 | MediaDiskId, | ||
31 | FileSequenceStart, | ||
32 | DiskPrompt, | ||
33 | VolumeLabel, | ||
34 | } | ||
35 | |||
36 | public class ImageFamiliesSymbol : IntermediateSymbol | ||
37 | { | ||
38 | public ImageFamiliesSymbol() : base(SymbolDefinitions.ImageFamilies, null, null) | ||
39 | { | ||
40 | } | ||
41 | |||
42 | public ImageFamiliesSymbol(SourceLineNumber sourceLineNumber, Identifier id = null) : base(SymbolDefinitions.ImageFamilies, sourceLineNumber, id) | ||
43 | { | ||
44 | } | ||
45 | |||
46 | public IntermediateField this[ImageFamiliesSymbolFields index] => this.Fields[(int)index]; | ||
47 | |||
48 | public string Family | ||
49 | { | ||
50 | get => (string)this.Fields[(int)ImageFamiliesSymbolFields.Family]; | ||
51 | set => this.Set((int)ImageFamiliesSymbolFields.Family, value); | ||
52 | } | ||
53 | |||
54 | public string MediaSrcPropName | ||
55 | { | ||
56 | get => (string)this.Fields[(int)ImageFamiliesSymbolFields.MediaSrcPropName]; | ||
57 | set => this.Set((int)ImageFamiliesSymbolFields.MediaSrcPropName, value); | ||
58 | } | ||
59 | |||
60 | public int? MediaDiskId | ||
61 | { | ||
62 | get => (int?)this.Fields[(int)ImageFamiliesSymbolFields.MediaDiskId]; | ||
63 | set => this.Set((int)ImageFamiliesSymbolFields.MediaDiskId, value); | ||
64 | } | ||
65 | |||
66 | public int? FileSequenceStart | ||
67 | { | ||
68 | get => (int?)this.Fields[(int)ImageFamiliesSymbolFields.FileSequenceStart]; | ||
69 | set => this.Set((int)ImageFamiliesSymbolFields.FileSequenceStart, value); | ||
70 | } | ||
71 | |||
72 | public string DiskPrompt | ||
73 | { | ||
74 | get => (string)this.Fields[(int)ImageFamiliesSymbolFields.DiskPrompt]; | ||
75 | set => this.Set((int)ImageFamiliesSymbolFields.DiskPrompt, value); | ||
76 | } | ||
77 | |||
78 | public string VolumeLabel | ||
79 | { | ||
80 | get => (string)this.Fields[(int)ImageFamiliesSymbolFields.VolumeLabel]; | ||
81 | set => this.Set((int)ImageFamiliesSymbolFields.VolumeLabel, value); | ||
82 | } | ||
83 | } | ||
84 | } \ No newline at end of file | ||
diff --git a/src/api/wix/WixToolset.Data/Symbols/IniFileSymbol.cs b/src/api/wix/WixToolset.Data/Symbols/IniFileSymbol.cs new file mode 100644 index 00000000..051acdbb --- /dev/null +++ b/src/api/wix/WixToolset.Data/Symbols/IniFileSymbol.cs | |||
@@ -0,0 +1,100 @@ | |||
1 | // Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. | ||
2 | |||
3 | namespace WixToolset.Data | ||
4 | { | ||
5 | using WixToolset.Data.Symbols; | ||
6 | |||
7 | public static partial class SymbolDefinitions | ||
8 | { | ||
9 | public static readonly IntermediateSymbolDefinition IniFile = new IntermediateSymbolDefinition( | ||
10 | SymbolDefinitionType.IniFile, | ||
11 | new[] | ||
12 | { | ||
13 | new IntermediateFieldDefinition(nameof(IniFileSymbolFields.FileName), IntermediateFieldType.String), | ||
14 | new IntermediateFieldDefinition(nameof(IniFileSymbolFields.ShortFileName), IntermediateFieldType.String), | ||
15 | new IntermediateFieldDefinition(nameof(IniFileSymbolFields.DirProperty), IntermediateFieldType.String), | ||
16 | new IntermediateFieldDefinition(nameof(IniFileSymbolFields.Section), IntermediateFieldType.String), | ||
17 | new IntermediateFieldDefinition(nameof(IniFileSymbolFields.Key), IntermediateFieldType.String), | ||
18 | new IntermediateFieldDefinition(nameof(IniFileSymbolFields.Value), IntermediateFieldType.String), | ||
19 | new IntermediateFieldDefinition(nameof(IniFileSymbolFields.Action), IntermediateFieldType.Number), | ||
20 | new IntermediateFieldDefinition(nameof(IniFileSymbolFields.ComponentRef), IntermediateFieldType.String), | ||
21 | }, | ||
22 | typeof(IniFileSymbol)); | ||
23 | } | ||
24 | } | ||
25 | |||
26 | namespace WixToolset.Data.Symbols | ||
27 | { | ||
28 | public enum IniFileSymbolFields | ||
29 | { | ||
30 | FileName, | ||
31 | ShortFileName, | ||
32 | DirProperty, | ||
33 | Section, | ||
34 | Key, | ||
35 | Value, | ||
36 | Action, | ||
37 | ComponentRef, | ||
38 | } | ||
39 | |||
40 | public class IniFileSymbol : IntermediateSymbol | ||
41 | { | ||
42 | public IniFileSymbol() : base(SymbolDefinitions.IniFile, null, null) | ||
43 | { | ||
44 | } | ||
45 | |||
46 | public IniFileSymbol(SourceLineNumber sourceLineNumber, Identifier id = null) : base(SymbolDefinitions.IniFile, sourceLineNumber, id) | ||
47 | { | ||
48 | } | ||
49 | |||
50 | public IntermediateField this[IniFileSymbolFields index] => this.Fields[(int)index]; | ||
51 | |||
52 | public string FileName | ||
53 | { | ||
54 | get => (string)this.Fields[(int)IniFileSymbolFields.FileName]; | ||
55 | set => this.Set((int)IniFileSymbolFields.FileName, value); | ||
56 | } | ||
57 | |||
58 | public string ShortFileName | ||
59 | { | ||
60 | get => (string)this.Fields[(int)IniFileSymbolFields.ShortFileName]; | ||
61 | set => this.Set((int)IniFileSymbolFields.ShortFileName, value); | ||
62 | } | ||
63 | |||
64 | public string DirProperty | ||
65 | { | ||
66 | get => (string)this.Fields[(int)IniFileSymbolFields.DirProperty]; | ||
67 | set => this.Set((int)IniFileSymbolFields.DirProperty, value); | ||
68 | } | ||
69 | |||
70 | public string Section | ||
71 | { | ||
72 | get => (string)this.Fields[(int)IniFileSymbolFields.Section]; | ||
73 | set => this.Set((int)IniFileSymbolFields.Section, value); | ||
74 | } | ||
75 | |||
76 | public string Key | ||
77 | { | ||
78 | get => (string)this.Fields[(int)IniFileSymbolFields.Key]; | ||
79 | set => this.Set((int)IniFileSymbolFields.Key, value); | ||
80 | } | ||
81 | |||
82 | public string Value | ||
83 | { | ||
84 | get => (string)this.Fields[(int)IniFileSymbolFields.Value]; | ||
85 | set => this.Set((int)IniFileSymbolFields.Value, value); | ||
86 | } | ||
87 | |||
88 | public IniFileActionType Action | ||
89 | { | ||
90 | get => (IniFileActionType)this.Fields[(int)IniFileSymbolFields.Action]?.AsNumber(); | ||
91 | set => this.Set((int)IniFileSymbolFields.Action, (int)value); | ||
92 | } | ||
93 | |||
94 | public string ComponentRef | ||
95 | { | ||
96 | get => (string)this.Fields[(int)IniFileSymbolFields.ComponentRef]; | ||
97 | set => this.Set((int)IniFileSymbolFields.ComponentRef, value); | ||
98 | } | ||
99 | } | ||
100 | } \ No newline at end of file | ||
diff --git a/src/api/wix/WixToolset.Data/Symbols/IniLocatorSymbol.cs b/src/api/wix/WixToolset.Data/Symbols/IniLocatorSymbol.cs new file mode 100644 index 00000000..c36f0dfc --- /dev/null +++ b/src/api/wix/WixToolset.Data/Symbols/IniLocatorSymbol.cs | |||
@@ -0,0 +1,84 @@ | |||
1 | // Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. | ||
2 | |||
3 | namespace WixToolset.Data | ||
4 | { | ||
5 | using WixToolset.Data.Symbols; | ||
6 | |||
7 | public static partial class SymbolDefinitions | ||
8 | { | ||
9 | public static readonly IntermediateSymbolDefinition IniLocator = new IntermediateSymbolDefinition( | ||
10 | SymbolDefinitionType.IniLocator, | ||
11 | new[] | ||
12 | { | ||
13 | new IntermediateFieldDefinition(nameof(IniLocatorSymbolFields.FileName), IntermediateFieldType.String), | ||
14 | new IntermediateFieldDefinition(nameof(IniLocatorSymbolFields.ShortFileName), IntermediateFieldType.String), | ||
15 | new IntermediateFieldDefinition(nameof(IniLocatorSymbolFields.Section), IntermediateFieldType.String), | ||
16 | new IntermediateFieldDefinition(nameof(IniLocatorSymbolFields.Key), IntermediateFieldType.String), | ||
17 | new IntermediateFieldDefinition(nameof(IniLocatorSymbolFields.Field), IntermediateFieldType.Number), | ||
18 | new IntermediateFieldDefinition(nameof(IniLocatorSymbolFields.Type), IntermediateFieldType.Number), | ||
19 | }, | ||
20 | typeof(IniLocatorSymbol)); | ||
21 | } | ||
22 | } | ||
23 | |||
24 | namespace WixToolset.Data.Symbols | ||
25 | { | ||
26 | public enum IniLocatorSymbolFields | ||
27 | { | ||
28 | FileName, | ||
29 | ShortFileName, | ||
30 | Section, | ||
31 | Key, | ||
32 | Field, | ||
33 | Type, | ||
34 | } | ||
35 | |||
36 | public class IniLocatorSymbol : IntermediateSymbol | ||
37 | { | ||
38 | public IniLocatorSymbol() : base(SymbolDefinitions.IniLocator, null, null) | ||
39 | { | ||
40 | } | ||
41 | |||
42 | public IniLocatorSymbol(SourceLineNumber sourceLineNumber, Identifier id = null) : base(SymbolDefinitions.IniLocator, sourceLineNumber, id) | ||
43 | { | ||
44 | } | ||
45 | |||
46 | public IntermediateField this[IniLocatorSymbolFields index] => this.Fields[(int)index]; | ||
47 | |||
48 | public string FileName | ||
49 | { | ||
50 | get => (string)this.Fields[(int)IniLocatorSymbolFields.FileName]; | ||
51 | set => this.Set((int)IniLocatorSymbolFields.FileName, value); | ||
52 | } | ||
53 | |||
54 | public string ShortFileName | ||
55 | { | ||
56 | get => (string)this.Fields[(int)IniLocatorSymbolFields.ShortFileName]; | ||
57 | set => this.Set((int)IniLocatorSymbolFields.ShortFileName, value); | ||
58 | } | ||
59 | |||
60 | public string Section | ||
61 | { | ||
62 | get => (string)this.Fields[(int)IniLocatorSymbolFields.Section]; | ||
63 | set => this.Set((int)IniLocatorSymbolFields.Section, value); | ||
64 | } | ||
65 | |||
66 | public string Key | ||
67 | { | ||
68 | get => (string)this.Fields[(int)IniLocatorSymbolFields.Key]; | ||
69 | set => this.Set((int)IniLocatorSymbolFields.Key, value); | ||
70 | } | ||
71 | |||
72 | public int? Field | ||
73 | { | ||
74 | get => (int?)this.Fields[(int)IniLocatorSymbolFields.Field]; | ||
75 | set => this.Set((int)IniLocatorSymbolFields.Field, value); | ||
76 | } | ||
77 | |||
78 | public int? Type | ||
79 | { | ||
80 | get => (int?)this.Fields[(int)IniLocatorSymbolFields.Type]; | ||
81 | set => this.Set((int)IniLocatorSymbolFields.Type, value); | ||
82 | } | ||
83 | } | ||
84 | } \ No newline at end of file | ||
diff --git a/src/api/wix/WixToolset.Data/Symbols/InifFileActionSymbol.cs b/src/api/wix/WixToolset.Data/Symbols/InifFileActionSymbol.cs new file mode 100644 index 00000000..a04567ec --- /dev/null +++ b/src/api/wix/WixToolset.Data/Symbols/InifFileActionSymbol.cs | |||
@@ -0,0 +1,13 @@ | |||
1 | // Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. | ||
2 | |||
3 | namespace WixToolset.Data.Symbols | ||
4 | { | ||
5 | public enum IniFileActionType | ||
6 | { | ||
7 | AddLine, | ||
8 | AddTag, | ||
9 | CreateLine, | ||
10 | RemoveLine, | ||
11 | RemoveTag, | ||
12 | } | ||
13 | } \ No newline at end of file | ||
diff --git a/src/api/wix/WixToolset.Data/Symbols/IsolatedComponentSymbol.cs b/src/api/wix/WixToolset.Data/Symbols/IsolatedComponentSymbol.cs new file mode 100644 index 00000000..681f1030 --- /dev/null +++ b/src/api/wix/WixToolset.Data/Symbols/IsolatedComponentSymbol.cs | |||
@@ -0,0 +1,52 @@ | |||
1 | // Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. | ||
2 | |||
3 | namespace WixToolset.Data | ||
4 | { | ||
5 | using WixToolset.Data.Symbols; | ||
6 | |||
7 | public static partial class SymbolDefinitions | ||
8 | { | ||
9 | public static readonly IntermediateSymbolDefinition IsolatedComponent = new IntermediateSymbolDefinition( | ||
10 | SymbolDefinitionType.IsolatedComponent, | ||
11 | new[] | ||
12 | { | ||
13 | new IntermediateFieldDefinition(nameof(IsolatedComponentSymbolFields.SharedComponentRef), IntermediateFieldType.String), | ||
14 | new IntermediateFieldDefinition(nameof(IsolatedComponentSymbolFields.ApplicationComponentRef), IntermediateFieldType.String), | ||
15 | }, | ||
16 | typeof(IsolatedComponentSymbol)); | ||
17 | } | ||
18 | } | ||
19 | |||
20 | namespace WixToolset.Data.Symbols | ||
21 | { | ||
22 | public enum IsolatedComponentSymbolFields | ||
23 | { | ||
24 | SharedComponentRef, | ||
25 | ApplicationComponentRef, | ||
26 | } | ||
27 | |||
28 | public class IsolatedComponentSymbol : IntermediateSymbol | ||
29 | { | ||
30 | public IsolatedComponentSymbol() : base(SymbolDefinitions.IsolatedComponent, null, null) | ||
31 | { | ||
32 | } | ||
33 | |||
34 | public IsolatedComponentSymbol(SourceLineNumber sourceLineNumber, Identifier id = null) : base(SymbolDefinitions.IsolatedComponent, sourceLineNumber, id) | ||
35 | { | ||
36 | } | ||
37 | |||
38 | public IntermediateField this[IsolatedComponentSymbolFields index] => this.Fields[(int)index]; | ||
39 | |||
40 | public string SharedComponentRef | ||
41 | { | ||
42 | get => (string)this.Fields[(int)IsolatedComponentSymbolFields.SharedComponentRef]; | ||
43 | set => this.Set((int)IsolatedComponentSymbolFields.SharedComponentRef, value); | ||
44 | } | ||
45 | |||
46 | public string ApplicationComponentRef | ||
47 | { | ||
48 | get => (string)this.Fields[(int)IsolatedComponentSymbolFields.ApplicationComponentRef]; | ||
49 | set => this.Set((int)IsolatedComponentSymbolFields.ApplicationComponentRef, value); | ||
50 | } | ||
51 | } | ||
52 | } | ||
diff --git a/src/api/wix/WixToolset.Data/Symbols/LaunchConditionSymbol.cs b/src/api/wix/WixToolset.Data/Symbols/LaunchConditionSymbol.cs new file mode 100644 index 00000000..a160f25f --- /dev/null +++ b/src/api/wix/WixToolset.Data/Symbols/LaunchConditionSymbol.cs | |||
@@ -0,0 +1,52 @@ | |||
1 | // Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. | ||
2 | |||
3 | namespace WixToolset.Data | ||
4 | { | ||
5 | using WixToolset.Data.Symbols; | ||
6 | |||
7 | public static partial class SymbolDefinitions | ||
8 | { | ||
9 | public static readonly IntermediateSymbolDefinition LaunchCondition = new IntermediateSymbolDefinition( | ||
10 | SymbolDefinitionType.LaunchCondition, | ||
11 | new[] | ||
12 | { | ||
13 | new IntermediateFieldDefinition(nameof(LaunchConditionSymbolFields.Condition), IntermediateFieldType.String), | ||
14 | new IntermediateFieldDefinition(nameof(LaunchConditionSymbolFields.Description), IntermediateFieldType.String), | ||
15 | }, | ||
16 | typeof(LaunchConditionSymbol)); | ||
17 | } | ||
18 | } | ||
19 | |||
20 | namespace WixToolset.Data.Symbols | ||
21 | { | ||
22 | public enum LaunchConditionSymbolFields | ||
23 | { | ||
24 | Condition, | ||
25 | Description, | ||
26 | } | ||
27 | |||
28 | public class LaunchConditionSymbol : IntermediateSymbol | ||
29 | { | ||
30 | public LaunchConditionSymbol() : base(SymbolDefinitions.LaunchCondition, null, null) | ||
31 | { | ||
32 | } | ||
33 | |||
34 | public LaunchConditionSymbol(SourceLineNumber sourceLineNumber, Identifier id = null) : base(SymbolDefinitions.LaunchCondition, sourceLineNumber, id) | ||
35 | { | ||
36 | } | ||
37 | |||
38 | public IntermediateField this[LaunchConditionSymbolFields index] => this.Fields[(int)index]; | ||
39 | |||
40 | public string Condition | ||
41 | { | ||
42 | get => (string)this.Fields[(int)LaunchConditionSymbolFields.Condition]; | ||
43 | set => this.Set((int)LaunchConditionSymbolFields.Condition, value); | ||
44 | } | ||
45 | |||
46 | public string Description | ||
47 | { | ||
48 | get => (string)this.Fields[(int)LaunchConditionSymbolFields.Description]; | ||
49 | set => this.Set((int)LaunchConditionSymbolFields.Description, value); | ||
50 | } | ||
51 | } | ||
52 | } \ No newline at end of file | ||
diff --git a/src/api/wix/WixToolset.Data/Symbols/ListBoxSymbol.cs b/src/api/wix/WixToolset.Data/Symbols/ListBoxSymbol.cs new file mode 100644 index 00000000..174327d1 --- /dev/null +++ b/src/api/wix/WixToolset.Data/Symbols/ListBoxSymbol.cs | |||
@@ -0,0 +1,68 @@ | |||
1 | // Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. | ||
2 | |||
3 | namespace WixToolset.Data | ||
4 | { | ||
5 | using WixToolset.Data.Symbols; | ||
6 | |||
7 | public static partial class SymbolDefinitions | ||
8 | { | ||
9 | public static readonly IntermediateSymbolDefinition ListBox = new IntermediateSymbolDefinition( | ||
10 | SymbolDefinitionType.ListBox, | ||
11 | new[] | ||
12 | { | ||
13 | new IntermediateFieldDefinition(nameof(ListBoxSymbolFields.Property), IntermediateFieldType.String), | ||
14 | new IntermediateFieldDefinition(nameof(ListBoxSymbolFields.Order), IntermediateFieldType.Number), | ||
15 | new IntermediateFieldDefinition(nameof(ListBoxSymbolFields.Value), IntermediateFieldType.String), | ||
16 | new IntermediateFieldDefinition(nameof(ListBoxSymbolFields.Text), IntermediateFieldType.String), | ||
17 | }, | ||
18 | typeof(ListBoxSymbol)); | ||
19 | } | ||
20 | } | ||
21 | |||
22 | namespace WixToolset.Data.Symbols | ||
23 | { | ||
24 | public enum ListBoxSymbolFields | ||
25 | { | ||
26 | Property, | ||
27 | Order, | ||
28 | Value, | ||
29 | Text, | ||
30 | } | ||
31 | |||
32 | public class ListBoxSymbol : IntermediateSymbol | ||
33 | { | ||
34 | public ListBoxSymbol() : base(SymbolDefinitions.ListBox, null, null) | ||
35 | { | ||
36 | } | ||
37 | |||
38 | public ListBoxSymbol(SourceLineNumber sourceLineNumber, Identifier id = null) : base(SymbolDefinitions.ListBox, sourceLineNumber, id) | ||
39 | { | ||
40 | } | ||
41 | |||
42 | public IntermediateField this[ListBoxSymbolFields index] => this.Fields[(int)index]; | ||
43 | |||
44 | public string Property | ||
45 | { | ||
46 | get => (string)this.Fields[(int)ListBoxSymbolFields.Property]; | ||
47 | set => this.Set((int)ListBoxSymbolFields.Property, value); | ||
48 | } | ||
49 | |||
50 | public int Order | ||
51 | { | ||
52 | get => (int)this.Fields[(int)ListBoxSymbolFields.Order]; | ||
53 | set => this.Set((int)ListBoxSymbolFields.Order, value); | ||
54 | } | ||
55 | |||
56 | public string Value | ||
57 | { | ||
58 | get => (string)this.Fields[(int)ListBoxSymbolFields.Value]; | ||
59 | set => this.Set((int)ListBoxSymbolFields.Value, value); | ||
60 | } | ||
61 | |||
62 | public string Text | ||
63 | { | ||
64 | get => (string)this.Fields[(int)ListBoxSymbolFields.Text]; | ||
65 | set => this.Set((int)ListBoxSymbolFields.Text, value); | ||
66 | } | ||
67 | } | ||
68 | } \ No newline at end of file | ||
diff --git a/src/api/wix/WixToolset.Data/Symbols/ListViewSymbol.cs b/src/api/wix/WixToolset.Data/Symbols/ListViewSymbol.cs new file mode 100644 index 00000000..09543ab1 --- /dev/null +++ b/src/api/wix/WixToolset.Data/Symbols/ListViewSymbol.cs | |||
@@ -0,0 +1,76 @@ | |||
1 | // Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. | ||
2 | |||
3 | namespace WixToolset.Data | ||
4 | { | ||
5 | using WixToolset.Data.Symbols; | ||
6 | |||
7 | public static partial class SymbolDefinitions | ||
8 | { | ||
9 | public static readonly IntermediateSymbolDefinition ListView = new IntermediateSymbolDefinition( | ||
10 | SymbolDefinitionType.ListView, | ||
11 | new[] | ||
12 | { | ||
13 | new IntermediateFieldDefinition(nameof(ListViewSymbolFields.Property), IntermediateFieldType.String), | ||
14 | new IntermediateFieldDefinition(nameof(ListViewSymbolFields.Order), IntermediateFieldType.Number), | ||
15 | new IntermediateFieldDefinition(nameof(ListViewSymbolFields.Value), IntermediateFieldType.String), | ||
16 | new IntermediateFieldDefinition(nameof(ListViewSymbolFields.Text), IntermediateFieldType.String), | ||
17 | new IntermediateFieldDefinition(nameof(ListViewSymbolFields.BinaryRef), IntermediateFieldType.String), | ||
18 | }, | ||
19 | typeof(ListViewSymbol)); | ||
20 | } | ||
21 | } | ||
22 | |||
23 | namespace WixToolset.Data.Symbols | ||
24 | { | ||
25 | public enum ListViewSymbolFields | ||
26 | { | ||
27 | Property, | ||
28 | Order, | ||
29 | Value, | ||
30 | Text, | ||
31 | BinaryRef, | ||
32 | } | ||
33 | |||
34 | public class ListViewSymbol : IntermediateSymbol | ||
35 | { | ||
36 | public ListViewSymbol() : base(SymbolDefinitions.ListView, null, null) | ||
37 | { | ||
38 | } | ||
39 | |||
40 | public ListViewSymbol(SourceLineNumber sourceLineNumber, Identifier id = null) : base(SymbolDefinitions.ListView, sourceLineNumber, id) | ||
41 | { | ||
42 | } | ||
43 | |||
44 | public IntermediateField this[ListViewSymbolFields index] => this.Fields[(int)index]; | ||
45 | |||
46 | public string Property | ||
47 | { | ||
48 | get => (string)this.Fields[(int)ListViewSymbolFields.Property]; | ||
49 | set => this.Set((int)ListViewSymbolFields.Property, value); | ||
50 | } | ||
51 | |||
52 | public int Order | ||
53 | { | ||
54 | get => (int)this.Fields[(int)ListViewSymbolFields.Order]; | ||
55 | set => this.Set((int)ListViewSymbolFields.Order, value); | ||
56 | } | ||
57 | |||
58 | public string Value | ||
59 | { | ||
60 | get => (string)this.Fields[(int)ListViewSymbolFields.Value]; | ||
61 | set => this.Set((int)ListViewSymbolFields.Value, value); | ||
62 | } | ||
63 | |||
64 | public string Text | ||
65 | { | ||
66 | get => (string)this.Fields[(int)ListViewSymbolFields.Text]; | ||
67 | set => this.Set((int)ListViewSymbolFields.Text, value); | ||
68 | } | ||
69 | |||
70 | public string BinaryRef | ||
71 | { | ||
72 | get => (string)this.Fields[(int)ListViewSymbolFields.BinaryRef]; | ||
73 | set => this.Set((int)ListViewSymbolFields.BinaryRef, value); | ||
74 | } | ||
75 | } | ||
76 | } \ No newline at end of file | ||
diff --git a/src/api/wix/WixToolset.Data/Symbols/LocatorSymbol.cs b/src/api/wix/WixToolset.Data/Symbols/LocatorSymbol.cs new file mode 100644 index 00000000..6f136389 --- /dev/null +++ b/src/api/wix/WixToolset.Data/Symbols/LocatorSymbol.cs | |||
@@ -0,0 +1,12 @@ | |||
1 | // Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. | ||
2 | |||
3 | namespace WixToolset.Data.Symbols | ||
4 | { | ||
5 | public enum LocatorType | ||
6 | { | ||
7 | Directory, | ||
8 | Filename, | ||
9 | RawValue, | ||
10 | x64 = 16, | ||
11 | } | ||
12 | } | ||
diff --git a/src/api/wix/WixToolset.Data/Symbols/LockPermissionsSymbol.cs b/src/api/wix/WixToolset.Data/Symbols/LockPermissionsSymbol.cs new file mode 100644 index 00000000..b9337446 --- /dev/null +++ b/src/api/wix/WixToolset.Data/Symbols/LockPermissionsSymbol.cs | |||
@@ -0,0 +1,157 @@ | |||
1 | // Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. | ||
2 | |||
3 | namespace WixToolset.Data | ||
4 | { | ||
5 | using WixToolset.Data.Symbols; | ||
6 | |||
7 | public static partial class SymbolDefinitions | ||
8 | { | ||
9 | public static readonly IntermediateSymbolDefinition LockPermissions = new IntermediateSymbolDefinition( | ||
10 | SymbolDefinitionType.LockPermissions, | ||
11 | new[] | ||
12 | { | ||
13 | new IntermediateFieldDefinition(nameof(LockPermissionsSymbolFields.LockObject), IntermediateFieldType.String), | ||
14 | new IntermediateFieldDefinition(nameof(LockPermissionsSymbolFields.Table), IntermediateFieldType.String), | ||
15 | new IntermediateFieldDefinition(nameof(LockPermissionsSymbolFields.Domain), IntermediateFieldType.String), | ||
16 | new IntermediateFieldDefinition(nameof(LockPermissionsSymbolFields.User), IntermediateFieldType.String), | ||
17 | new IntermediateFieldDefinition(nameof(LockPermissionsSymbolFields.Permission), IntermediateFieldType.Number), | ||
18 | }, | ||
19 | typeof(LockPermissionsSymbol)); | ||
20 | } | ||
21 | } | ||
22 | |||
23 | namespace WixToolset.Data.Symbols | ||
24 | { | ||
25 | public enum LockPermissionsSymbolFields | ||
26 | { | ||
27 | LockObject, | ||
28 | Table, | ||
29 | Domain, | ||
30 | User, | ||
31 | Permission, | ||
32 | } | ||
33 | |||
34 | /// <summary> | ||
35 | ///------------------------------------------------------------------------------------------------- | ||
36 | /// Layout of an Access Mask (from http://technet.microsoft.com/en-us/library/cc783530(WS.10).aspx) | ||
37 | /// | ||
38 | /// ------------------------------------------------------------------------------------------------- | ||
39 | /// |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|09|08|07|06|05|04|03|02|01|00| | ||
40 | /// ------------------------------------------------------------------------------------------------- | ||
41 | /// |GR|GW|GE|GA| Reserved |AS|StandardAccessRights| Object-Specific Access Rights | | ||
42 | /// | ||
43 | /// Key | ||
44 | /// GR = Generic Read | ||
45 | /// GW = Generic Write | ||
46 | /// GE = Generic Execute | ||
47 | /// GA = Generic All | ||
48 | /// AS = Right to access SACL | ||
49 | /// </summary> | ||
50 | public static class LockPermissionConstants | ||
51 | { | ||
52 | /// <summary> | ||
53 | /// Generic Access Rights (per WinNT.h) | ||
54 | /// --------------------- | ||
55 | /// GENERIC_ALL (0x10000000L) | ||
56 | /// GENERIC_EXECUTE (0x20000000L) | ||
57 | /// GENERIC_WRITE (0x40000000L) | ||
58 | /// GENERIC_READ (0x80000000L) | ||
59 | /// </summary> | ||
60 | public static readonly string[] GenericPermissions = { "GenericAll", "GenericExecute", "GenericWrite", "GenericRead" }; | ||
61 | |||
62 | /// <summary> | ||
63 | /// Standard Access Rights (per WinNT.h) | ||
64 | /// ---------------------- | ||
65 | /// DELETE (0x00010000L) | ||
66 | /// READ_CONTROL (0x00020000L) | ||
67 | /// WRITE_DAC (0x00040000L) | ||
68 | /// WRITE_OWNER (0x00080000L) | ||
69 | /// SYNCHRONIZE (0x00100000L) | ||
70 | /// </summary> | ||
71 | public static readonly string[] StandardPermissions = { "Delete", "ReadPermission", "ChangePermission", "TakeOwnership", "Synchronize" }; | ||
72 | |||
73 | /// <summary> | ||
74 | /// Object-Specific Access Rights | ||
75 | /// ============================= | ||
76 | /// Directory Access Rights (per WinNT.h) | ||
77 | /// ----------------------- | ||
78 | /// FILE_LIST_DIRECTORY ( 0x0001 ) | ||
79 | /// FILE_ADD_FILE ( 0x0002 ) | ||
80 | /// FILE_ADD_SUBDIRECTORY ( 0x0004 ) | ||
81 | /// FILE_READ_EA ( 0x0008 ) | ||
82 | /// FILE_WRITE_EA ( 0x0010 ) | ||
83 | /// FILE_TRAVERSE ( 0x0020 ) | ||
84 | /// FILE_DELETE_CHILD ( 0x0040 ) | ||
85 | /// FILE_READ_ATTRIBUTES ( 0x0080 ) | ||
86 | /// FILE_WRITE_ATTRIBUTES ( 0x0100 ) | ||
87 | /// </summary> | ||
88 | public static readonly string[] FolderPermissions = { "Read", "CreateFile", "CreateChild", "ReadExtendedAttributes", "WriteExtendedAttributes", "Traverse", "DeleteChild", "ReadAttributes", "WriteAttributes" }; | ||
89 | |||
90 | /// <summary> | ||
91 | /// Registry Access Rights | ||
92 | /// ---------------------- | ||
93 | /// </summary> | ||
94 | public static readonly string[] RegistryPermissions = { "Read", "Write", "CreateSubkeys", "EnumerateSubkeys", "Notify", "CreateLink" }; | ||
95 | |||
96 | /// <summary> | ||
97 | /// File Access Rights (per WinNT.h) | ||
98 | /// ------------------ | ||
99 | /// FILE_READ_DATA ( 0x0001 ) | ||
100 | /// FILE_WRITE_DATA ( 0x0002 ) | ||
101 | /// FILE_APPEND_DATA ( 0x0004 ) | ||
102 | /// FILE_READ_EA ( 0x0008 ) | ||
103 | /// FILE_WRITE_EA ( 0x0010 ) | ||
104 | /// FILE_EXECUTE ( 0x0020 ) | ||
105 | /// via mask FILE_ALL_ACCESS ( 0x0040 ) | ||
106 | /// FILE_READ_ATTRIBUTES ( 0x0080 ) | ||
107 | /// FILE_WRITE_ATTRIBUTES ( 0x0100 ) | ||
108 | /// | ||
109 | /// STANDARD_RIGHTS_REQUIRED (0x000F0000L) | ||
110 | /// FILE_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED | SYNCHRONIZE | 0x1FF) | ||
111 | /// </summary> | ||
112 | public static readonly string[] FilePermissions = { "Read", "Write", "Append", "ReadExtendedAttributes", "WriteExtendedAttributes", "Execute", "FileAllRights", "ReadAttributes", "WriteAttributes" }; | ||
113 | } | ||
114 | |||
115 | public class LockPermissionsSymbol : IntermediateSymbol | ||
116 | { | ||
117 | public LockPermissionsSymbol() : base(SymbolDefinitions.LockPermissions, null, null) | ||
118 | { | ||
119 | } | ||
120 | |||
121 | public LockPermissionsSymbol(SourceLineNumber sourceLineNumber, Identifier id = null) : base(SymbolDefinitions.LockPermissions, sourceLineNumber, id) | ||
122 | { | ||
123 | } | ||
124 | |||
125 | public IntermediateField this[LockPermissionsSymbolFields index] => this.Fields[(int)index]; | ||
126 | |||
127 | public string LockObject | ||
128 | { | ||
129 | get => (string)this.Fields[(int)LockPermissionsSymbolFields.LockObject]; | ||
130 | set => this.Set((int)LockPermissionsSymbolFields.LockObject, value); | ||
131 | } | ||
132 | |||
133 | public string Table | ||
134 | { | ||
135 | get => (string)this.Fields[(int)LockPermissionsSymbolFields.Table]; | ||
136 | set => this.Set((int)LockPermissionsSymbolFields.Table, value); | ||
137 | } | ||
138 | |||
139 | public string Domain | ||
140 | { | ||
141 | get => (string)this.Fields[(int)LockPermissionsSymbolFields.Domain]; | ||
142 | set => this.Set((int)LockPermissionsSymbolFields.Domain, value); | ||
143 | } | ||
144 | |||
145 | public string User | ||
146 | { | ||
147 | get => (string)this.Fields[(int)LockPermissionsSymbolFields.User]; | ||
148 | set => this.Set((int)LockPermissionsSymbolFields.User, value); | ||
149 | } | ||
150 | |||
151 | public int? Permission | ||
152 | { | ||
153 | get => (int?)this.Fields[(int)LockPermissionsSymbolFields.Permission]; | ||
154 | set => this.Set((int)LockPermissionsSymbolFields.Permission, value); | ||
155 | } | ||
156 | } | ||
157 | } \ No newline at end of file | ||
diff --git a/src/api/wix/WixToolset.Data/Symbols/MIMESymbol.cs b/src/api/wix/WixToolset.Data/Symbols/MIMESymbol.cs new file mode 100644 index 00000000..f66d05b8 --- /dev/null +++ b/src/api/wix/WixToolset.Data/Symbols/MIMESymbol.cs | |||
@@ -0,0 +1,60 @@ | |||
1 | // Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. | ||
2 | |||
3 | namespace WixToolset.Data | ||
4 | { | ||
5 | using WixToolset.Data.Symbols; | ||
6 | |||
7 | public static partial class SymbolDefinitions | ||
8 | { | ||
9 | public static readonly IntermediateSymbolDefinition MIME = new IntermediateSymbolDefinition( | ||
10 | SymbolDefinitionType.MIME, | ||
11 | new[] | ||
12 | { | ||
13 | new IntermediateFieldDefinition(nameof(MIMESymbolFields.ContentType), IntermediateFieldType.String), | ||
14 | new IntermediateFieldDefinition(nameof(MIMESymbolFields.ExtensionRef), IntermediateFieldType.String), | ||
15 | new IntermediateFieldDefinition(nameof(MIMESymbolFields.CLSID), IntermediateFieldType.String), | ||
16 | }, | ||
17 | typeof(MIMESymbol)); | ||
18 | } | ||
19 | } | ||
20 | |||
21 | namespace WixToolset.Data.Symbols | ||
22 | { | ||
23 | public enum MIMESymbolFields | ||
24 | { | ||
25 | ContentType, | ||
26 | ExtensionRef, | ||
27 | CLSID, | ||
28 | } | ||
29 | |||
30 | public class MIMESymbol : IntermediateSymbol | ||
31 | { | ||
32 | public MIMESymbol() : base(SymbolDefinitions.MIME, null, null) | ||
33 | { | ||
34 | } | ||
35 | |||
36 | public MIMESymbol(SourceLineNumber sourceLineNumber, Identifier id = null) : base(SymbolDefinitions.MIME, sourceLineNumber, id) | ||
37 | { | ||
38 | } | ||
39 | |||
40 | public IntermediateField this[MIMESymbolFields index] => this.Fields[(int)index]; | ||
41 | |||
42 | public string ContentType | ||
43 | { | ||
44 | get => (string)this.Fields[(int)MIMESymbolFields.ContentType]; | ||
45 | set => this.Set((int)MIMESymbolFields.ContentType, value); | ||
46 | } | ||
47 | |||
48 | public string ExtensionRef | ||
49 | { | ||
50 | get => (string)this.Fields[(int)MIMESymbolFields.ExtensionRef]; | ||
51 | set => this.Set((int)MIMESymbolFields.ExtensionRef, value); | ||
52 | } | ||
53 | |||
54 | public string CLSID | ||
55 | { | ||
56 | get => (string)this.Fields[(int)MIMESymbolFields.CLSID]; | ||
57 | set => this.Set((int)MIMESymbolFields.CLSID, value); | ||
58 | } | ||
59 | } | ||
60 | } \ No newline at end of file | ||
diff --git a/src/api/wix/WixToolset.Data/Symbols/MediaSymbol.cs b/src/api/wix/WixToolset.Data/Symbols/MediaSymbol.cs new file mode 100644 index 00000000..f216cddc --- /dev/null +++ b/src/api/wix/WixToolset.Data/Symbols/MediaSymbol.cs | |||
@@ -0,0 +1,100 @@ | |||
1 | // Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. | ||
2 | |||
3 | namespace WixToolset.Data | ||
4 | { | ||
5 | using WixToolset.Data.Symbols; | ||
6 | |||
7 | public static partial class SymbolDefinitions | ||
8 | { | ||
9 | public static readonly IntermediateSymbolDefinition Media = new IntermediateSymbolDefinition( | ||
10 | SymbolDefinitionType.Media, | ||
11 | new[] | ||
12 | { | ||
13 | new IntermediateFieldDefinition(nameof(MediaSymbolFields.DiskId), IntermediateFieldType.Number), | ||
14 | new IntermediateFieldDefinition(nameof(MediaSymbolFields.LastSequence), IntermediateFieldType.Number), | ||
15 | new IntermediateFieldDefinition(nameof(MediaSymbolFields.DiskPrompt), IntermediateFieldType.String), | ||
16 | new IntermediateFieldDefinition(nameof(MediaSymbolFields.Cabinet), IntermediateFieldType.String), | ||
17 | new IntermediateFieldDefinition(nameof(MediaSymbolFields.VolumeLabel), IntermediateFieldType.String), | ||
18 | new IntermediateFieldDefinition(nameof(MediaSymbolFields.Source), IntermediateFieldType.String), | ||
19 | new IntermediateFieldDefinition(nameof(MediaSymbolFields.CompressionLevel), IntermediateFieldType.Number), | ||
20 | new IntermediateFieldDefinition(nameof(MediaSymbolFields.Layout), IntermediateFieldType.String), | ||
21 | }, | ||
22 | typeof(MediaSymbol)); | ||
23 | } | ||
24 | } | ||
25 | |||
26 | namespace WixToolset.Data.Symbols | ||
27 | { | ||
28 | public enum MediaSymbolFields | ||
29 | { | ||
30 | DiskId, | ||
31 | LastSequence, | ||
32 | DiskPrompt, | ||
33 | Cabinet, | ||
34 | VolumeLabel, | ||
35 | Source, | ||
36 | CompressionLevel, | ||
37 | Layout, | ||
38 | } | ||
39 | |||
40 | public class MediaSymbol : IntermediateSymbol | ||
41 | { | ||
42 | public MediaSymbol() : base(SymbolDefinitions.Media, null, null) | ||
43 | { | ||
44 | } | ||
45 | |||
46 | public MediaSymbol(SourceLineNumber sourceLineNumber, Identifier id = null) : base(SymbolDefinitions.Media, sourceLineNumber, id) | ||
47 | { | ||
48 | } | ||
49 | |||
50 | public IntermediateField this[MediaSymbolFields index] => this.Fields[(int)index]; | ||
51 | |||
52 | public int DiskId | ||
53 | { | ||
54 | get => (int)this.Fields[(int)MediaSymbolFields.DiskId]; | ||
55 | set => this.Set((int)MediaSymbolFields.DiskId, value); | ||
56 | } | ||
57 | |||
58 | public int? LastSequence | ||
59 | { | ||
60 | get => (int?)this.Fields[(int)MediaSymbolFields.LastSequence]; | ||
61 | set => this.Set((int)MediaSymbolFields.LastSequence, value); | ||
62 | } | ||
63 | |||
64 | public string DiskPrompt | ||
65 | { | ||
66 | get => (string)this.Fields[(int)MediaSymbolFields.DiskPrompt]; | ||
67 | set => this.Set((int)MediaSymbolFields.DiskPrompt, value); | ||
68 | } | ||
69 | |||
70 | public string Cabinet | ||
71 | { | ||
72 | get => (string)this.Fields[(int)MediaSymbolFields.Cabinet]; | ||
73 | set => this.Set((int)MediaSymbolFields.Cabinet, value); | ||
74 | } | ||
75 | |||
76 | public string VolumeLabel | ||
77 | { | ||
78 | get => (string)this.Fields[(int)MediaSymbolFields.VolumeLabel]; | ||
79 | set => this.Set((int)MediaSymbolFields.VolumeLabel, value); | ||
80 | } | ||
81 | |||
82 | public string Source | ||
83 | { | ||
84 | get => (string)this.Fields[(int)MediaSymbolFields.Source]; | ||
85 | set => this.Set((int)MediaSymbolFields.Source, value); | ||
86 | } | ||
87 | |||
88 | public CompressionLevel? CompressionLevel | ||
89 | { | ||
90 | get => (CompressionLevel?)this.Fields[(int)MediaSymbolFields.CompressionLevel].AsNullableNumber(); | ||
91 | set => this.Set((int)MediaSymbolFields.CompressionLevel, (int?)value); | ||
92 | } | ||
93 | |||
94 | public string Layout | ||
95 | { | ||
96 | get => (string)this.Fields[(int)MediaSymbolFields.Layout]; | ||
97 | set => this.Set((int)MediaSymbolFields.Layout, value); | ||
98 | } | ||
99 | } | ||
100 | } | ||
diff --git a/src/api/wix/WixToolset.Data/Symbols/ModuleComponentsSymbol.cs b/src/api/wix/WixToolset.Data/Symbols/ModuleComponentsSymbol.cs new file mode 100644 index 00000000..287819ab --- /dev/null +++ b/src/api/wix/WixToolset.Data/Symbols/ModuleComponentsSymbol.cs | |||
@@ -0,0 +1,60 @@ | |||
1 | // Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. | ||
2 | |||
3 | namespace WixToolset.Data | ||
4 | { | ||
5 | using WixToolset.Data.Symbols; | ||
6 | |||
7 | public static partial class SymbolDefinitions | ||
8 | { | ||
9 | public static readonly IntermediateSymbolDefinition ModuleComponents = new IntermediateSymbolDefinition( | ||
10 | SymbolDefinitionType.ModuleComponents, | ||
11 | new[] | ||
12 | { | ||
13 | new IntermediateFieldDefinition(nameof(ModuleComponentsSymbolFields.Component), IntermediateFieldType.String), | ||
14 | new IntermediateFieldDefinition(nameof(ModuleComponentsSymbolFields.ModuleID), IntermediateFieldType.String), | ||
15 | new IntermediateFieldDefinition(nameof(ModuleComponentsSymbolFields.Language), IntermediateFieldType.Number), | ||
16 | }, | ||
17 | typeof(ModuleComponentsSymbol)); | ||
18 | } | ||
19 | } | ||
20 | |||
21 | namespace WixToolset.Data.Symbols | ||
22 | { | ||
23 | public enum ModuleComponentsSymbolFields | ||
24 | { | ||
25 | Component, | ||
26 | ModuleID, | ||
27 | Language, | ||
28 | } | ||
29 | |||
30 | public class ModuleComponentsSymbol : IntermediateSymbol | ||
31 | { | ||
32 | public ModuleComponentsSymbol() : base(SymbolDefinitions.ModuleComponents, null, null) | ||
33 | { | ||
34 | } | ||
35 | |||
36 | public ModuleComponentsSymbol(SourceLineNumber sourceLineNumber, Identifier id = null) : base(SymbolDefinitions.ModuleComponents, sourceLineNumber, id) | ||
37 | { | ||
38 | } | ||
39 | |||
40 | public IntermediateField this[ModuleComponentsSymbolFields index] => this.Fields[(int)index]; | ||
41 | |||
42 | public string Component | ||
43 | { | ||
44 | get => (string)this.Fields[(int)ModuleComponentsSymbolFields.Component]; | ||
45 | set => this.Set((int)ModuleComponentsSymbolFields.Component, value); | ||
46 | } | ||
47 | |||
48 | public string ModuleID | ||
49 | { | ||
50 | get => (string)this.Fields[(int)ModuleComponentsSymbolFields.ModuleID]; | ||
51 | set => this.Set((int)ModuleComponentsSymbolFields.ModuleID, value); | ||
52 | } | ||
53 | |||
54 | public int Language | ||
55 | { | ||
56 | get => (int)this.Fields[(int)ModuleComponentsSymbolFields.Language]; | ||
57 | set => this.Set((int)ModuleComponentsSymbolFields.Language, value); | ||
58 | } | ||
59 | } | ||
60 | } \ No newline at end of file | ||
diff --git a/src/api/wix/WixToolset.Data/Symbols/ModuleConfigurationSymbol.cs b/src/api/wix/WixToolset.Data/Symbols/ModuleConfigurationSymbol.cs new file mode 100644 index 00000000..8188dc87 --- /dev/null +++ b/src/api/wix/WixToolset.Data/Symbols/ModuleConfigurationSymbol.cs | |||
@@ -0,0 +1,116 @@ | |||
1 | // Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. | ||
2 | |||
3 | namespace WixToolset.Data | ||
4 | { | ||
5 | using WixToolset.Data.Symbols; | ||
6 | |||
7 | public static partial class SymbolDefinitions | ||
8 | { | ||
9 | public static readonly IntermediateSymbolDefinition ModuleConfiguration = new IntermediateSymbolDefinition( | ||
10 | SymbolDefinitionType.ModuleConfiguration, | ||
11 | new[] | ||
12 | { | ||
13 | new IntermediateFieldDefinition(nameof(ModuleConfigurationSymbolFields.Format), IntermediateFieldType.Number), | ||
14 | new IntermediateFieldDefinition(nameof(ModuleConfigurationSymbolFields.Type), IntermediateFieldType.String), | ||
15 | new IntermediateFieldDefinition(nameof(ModuleConfigurationSymbolFields.ContextData), IntermediateFieldType.String), | ||
16 | new IntermediateFieldDefinition(nameof(ModuleConfigurationSymbolFields.DefaultValue), IntermediateFieldType.String), | ||
17 | new IntermediateFieldDefinition(nameof(ModuleConfigurationSymbolFields.KeyNoOrphan), IntermediateFieldType.Bool), | ||
18 | new IntermediateFieldDefinition(nameof(ModuleConfigurationSymbolFields.NonNullable), IntermediateFieldType.Bool), | ||
19 | new IntermediateFieldDefinition(nameof(ModuleConfigurationSymbolFields.DisplayName), IntermediateFieldType.String), | ||
20 | new IntermediateFieldDefinition(nameof(ModuleConfigurationSymbolFields.Description), IntermediateFieldType.String), | ||
21 | new IntermediateFieldDefinition(nameof(ModuleConfigurationSymbolFields.HelpLocation), IntermediateFieldType.String), | ||
22 | new IntermediateFieldDefinition(nameof(ModuleConfigurationSymbolFields.HelpKeyword), IntermediateFieldType.String), | ||
23 | }, | ||
24 | typeof(ModuleConfigurationSymbol)); | ||
25 | } | ||
26 | } | ||
27 | |||
28 | namespace WixToolset.Data.Symbols | ||
29 | { | ||
30 | public enum ModuleConfigurationSymbolFields | ||
31 | { | ||
32 | Format, | ||
33 | Type, | ||
34 | ContextData, | ||
35 | DefaultValue, | ||
36 | KeyNoOrphan, | ||
37 | NonNullable, | ||
38 | DisplayName, | ||
39 | Description, | ||
40 | HelpLocation, | ||
41 | HelpKeyword, | ||
42 | } | ||
43 | |||
44 | public class ModuleConfigurationSymbol : IntermediateSymbol | ||
45 | { | ||
46 | public ModuleConfigurationSymbol() : base(SymbolDefinitions.ModuleConfiguration, null, null) | ||
47 | { | ||
48 | } | ||
49 | |||
50 | public ModuleConfigurationSymbol(SourceLineNumber sourceLineNumber, Identifier id = null) : base(SymbolDefinitions.ModuleConfiguration, sourceLineNumber, id) | ||
51 | { | ||
52 | } | ||
53 | |||
54 | public IntermediateField this[ModuleConfigurationSymbolFields index] => this.Fields[(int)index]; | ||
55 | |||
56 | public int Format | ||
57 | { | ||
58 | get => (int)this.Fields[(int)ModuleConfigurationSymbolFields.Format]; | ||
59 | set => this.Set((int)ModuleConfigurationSymbolFields.Format, value); | ||
60 | } | ||
61 | |||
62 | public string Type | ||
63 | { | ||
64 | get => (string)this.Fields[(int)ModuleConfigurationSymbolFields.Type]; | ||
65 | set => this.Set((int)ModuleConfigurationSymbolFields.Type, value); | ||
66 | } | ||
67 | |||
68 | public string ContextData | ||
69 | { | ||
70 | get => (string)this.Fields[(int)ModuleConfigurationSymbolFields.ContextData]; | ||
71 | set => this.Set((int)ModuleConfigurationSymbolFields.ContextData, value); | ||
72 | } | ||
73 | |||
74 | public string DefaultValue | ||
75 | { | ||
76 | get => (string)this.Fields[(int)ModuleConfigurationSymbolFields.DefaultValue]; | ||
77 | set => this.Set((int)ModuleConfigurationSymbolFields.DefaultValue, value); | ||
78 | } | ||
79 | |||
80 | public bool KeyNoOrphan | ||
81 | { | ||
82 | get => this.Fields[(int)ModuleConfigurationSymbolFields.KeyNoOrphan].AsBool(); | ||
83 | set => this.Set((int)ModuleConfigurationSymbolFields.KeyNoOrphan, value); | ||
84 | } | ||
85 | |||
86 | public bool NonNullable | ||
87 | { | ||
88 | get => this.Fields[(int)ModuleConfigurationSymbolFields.NonNullable].AsBool(); | ||
89 | set => this.Set((int)ModuleConfigurationSymbolFields.NonNullable, value); | ||
90 | } | ||
91 | |||
92 | public string DisplayName | ||
93 | { | ||
94 | get => (string)this.Fields[(int)ModuleConfigurationSymbolFields.DisplayName]; | ||
95 | set => this.Set((int)ModuleConfigurationSymbolFields.DisplayName, value); | ||
96 | } | ||
97 | |||
98 | public string Description | ||
99 | { | ||
100 | get => (string)this.Fields[(int)ModuleConfigurationSymbolFields.Description]; | ||
101 | set => this.Set((int)ModuleConfigurationSymbolFields.Description, value); | ||
102 | } | ||
103 | |||
104 | public string HelpLocation | ||
105 | { | ||
106 | get => (string)this.Fields[(int)ModuleConfigurationSymbolFields.HelpLocation]; | ||
107 | set => this.Set((int)ModuleConfigurationSymbolFields.HelpLocation, value); | ||
108 | } | ||
109 | |||
110 | public string HelpKeyword | ||
111 | { | ||
112 | get => (string)this.Fields[(int)ModuleConfigurationSymbolFields.HelpKeyword]; | ||
113 | set => this.Set((int)ModuleConfigurationSymbolFields.HelpKeyword, value); | ||
114 | } | ||
115 | } | ||
116 | } \ No newline at end of file | ||
diff --git a/src/api/wix/WixToolset.Data/Symbols/ModuleDependencySymbol.cs b/src/api/wix/WixToolset.Data/Symbols/ModuleDependencySymbol.cs new file mode 100644 index 00000000..80d2d5f6 --- /dev/null +++ b/src/api/wix/WixToolset.Data/Symbols/ModuleDependencySymbol.cs | |||
@@ -0,0 +1,76 @@ | |||
1 | // Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. | ||
2 | |||
3 | namespace WixToolset.Data | ||
4 | { | ||
5 | using WixToolset.Data.Symbols; | ||
6 | |||
7 | public static partial class SymbolDefinitions | ||
8 | { | ||
9 | public static readonly IntermediateSymbolDefinition ModuleDependency = new IntermediateSymbolDefinition( | ||
10 | SymbolDefinitionType.ModuleDependency, | ||
11 | new[] | ||
12 | { | ||
13 | new IntermediateFieldDefinition(nameof(ModuleDependencySymbolFields.ModuleID), IntermediateFieldType.String), | ||
14 | new IntermediateFieldDefinition(nameof(ModuleDependencySymbolFields.ModuleLanguage), IntermediateFieldType.Number), | ||
15 | new IntermediateFieldDefinition(nameof(ModuleDependencySymbolFields.RequiredID), IntermediateFieldType.String), | ||
16 | new IntermediateFieldDefinition(nameof(ModuleDependencySymbolFields.RequiredLanguage), IntermediateFieldType.Number), | ||
17 | new IntermediateFieldDefinition(nameof(ModuleDependencySymbolFields.RequiredVersion), IntermediateFieldType.String), | ||
18 | }, | ||
19 | typeof(ModuleDependencySymbol)); | ||
20 | } | ||
21 | } | ||
22 | |||
23 | namespace WixToolset.Data.Symbols | ||
24 | { | ||
25 | public enum ModuleDependencySymbolFields | ||
26 | { | ||
27 | ModuleID, | ||
28 | ModuleLanguage, | ||
29 | RequiredID, | ||
30 | RequiredLanguage, | ||
31 | RequiredVersion, | ||
32 | } | ||
33 | |||
34 | public class ModuleDependencySymbol : IntermediateSymbol | ||
35 | { | ||
36 | public ModuleDependencySymbol() : base(SymbolDefinitions.ModuleDependency, null, null) | ||
37 | { | ||
38 | } | ||
39 | |||
40 | public ModuleDependencySymbol(SourceLineNumber sourceLineNumber, Identifier id = null) : base(SymbolDefinitions.ModuleDependency, sourceLineNumber, id) | ||
41 | { | ||
42 | } | ||
43 | |||
44 | public IntermediateField this[ModuleDependencySymbolFields index] => this.Fields[(int)index]; | ||
45 | |||
46 | public string ModuleID | ||
47 | { | ||
48 | get => (string)this.Fields[(int)ModuleDependencySymbolFields.ModuleID]; | ||
49 | set => this.Set((int)ModuleDependencySymbolFields.ModuleID, value); | ||
50 | } | ||
51 | |||
52 | public int ModuleLanguage | ||
53 | { | ||
54 | get => (int)this.Fields[(int)ModuleDependencySymbolFields.ModuleLanguage]; | ||
55 | set => this.Set((int)ModuleDependencySymbolFields.ModuleLanguage, value); | ||
56 | } | ||
57 | |||
58 | public string RequiredID | ||
59 | { | ||
60 | get => (string)this.Fields[(int)ModuleDependencySymbolFields.RequiredID]; | ||
61 | set => this.Set((int)ModuleDependencySymbolFields.RequiredID, value); | ||
62 | } | ||
63 | |||
64 | public int RequiredLanguage | ||
65 | { | ||
66 | get => (int)this.Fields[(int)ModuleDependencySymbolFields.RequiredLanguage]; | ||
67 | set => this.Set((int)ModuleDependencySymbolFields.RequiredLanguage, value); | ||
68 | } | ||
69 | |||
70 | public string RequiredVersion | ||
71 | { | ||
72 | get => (string)this.Fields[(int)ModuleDependencySymbolFields.RequiredVersion]; | ||
73 | set => this.Set((int)ModuleDependencySymbolFields.RequiredVersion, value); | ||
74 | } | ||
75 | } | ||
76 | } \ No newline at end of file | ||
diff --git a/src/api/wix/WixToolset.Data/Symbols/ModuleExclusionSymbol.cs b/src/api/wix/WixToolset.Data/Symbols/ModuleExclusionSymbol.cs new file mode 100644 index 00000000..0c45abfa --- /dev/null +++ b/src/api/wix/WixToolset.Data/Symbols/ModuleExclusionSymbol.cs | |||
@@ -0,0 +1,84 @@ | |||
1 | // Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. | ||
2 | |||
3 | namespace WixToolset.Data | ||
4 | { | ||
5 | using WixToolset.Data.Symbols; | ||
6 | |||
7 | public static partial class SymbolDefinitions | ||
8 | { | ||
9 | public static readonly IntermediateSymbolDefinition ModuleExclusion = new IntermediateSymbolDefinition( | ||
10 | SymbolDefinitionType.ModuleExclusion, | ||
11 | new[] | ||
12 | { | ||
13 | new IntermediateFieldDefinition(nameof(ModuleExclusionSymbolFields.ModuleID), IntermediateFieldType.String), | ||
14 | new IntermediateFieldDefinition(nameof(ModuleExclusionSymbolFields.ModuleLanguage), IntermediateFieldType.Number), | ||
15 | new IntermediateFieldDefinition(nameof(ModuleExclusionSymbolFields.ExcludedID), IntermediateFieldType.String), | ||
16 | new IntermediateFieldDefinition(nameof(ModuleExclusionSymbolFields.ExcludedLanguage), IntermediateFieldType.Number), | ||
17 | new IntermediateFieldDefinition(nameof(ModuleExclusionSymbolFields.ExcludedMinVersion), IntermediateFieldType.String), | ||
18 | new IntermediateFieldDefinition(nameof(ModuleExclusionSymbolFields.ExcludedMaxVersion), IntermediateFieldType.String), | ||
19 | }, | ||
20 | typeof(ModuleExclusionSymbol)); | ||
21 | } | ||
22 | } | ||
23 | |||
24 | namespace WixToolset.Data.Symbols | ||
25 | { | ||
26 | public enum ModuleExclusionSymbolFields | ||
27 | { | ||
28 | ModuleID, | ||
29 | ModuleLanguage, | ||
30 | ExcludedID, | ||
31 | ExcludedLanguage, | ||
32 | ExcludedMinVersion, | ||
33 | ExcludedMaxVersion, | ||
34 | } | ||
35 | |||
36 | public class ModuleExclusionSymbol : IntermediateSymbol | ||
37 | { | ||
38 | public ModuleExclusionSymbol() : base(SymbolDefinitions.ModuleExclusion, null, null) | ||
39 | { | ||
40 | } | ||
41 | |||
42 | public ModuleExclusionSymbol(SourceLineNumber sourceLineNumber, Identifier id = null) : base(SymbolDefinitions.ModuleExclusion, sourceLineNumber, id) | ||
43 | { | ||
44 | } | ||
45 | |||
46 | public IntermediateField this[ModuleExclusionSymbolFields index] => this.Fields[(int)index]; | ||
47 | |||
48 | public string ModuleID | ||
49 | { | ||
50 | get => (string)this.Fields[(int)ModuleExclusionSymbolFields.ModuleID]; | ||
51 | set => this.Set((int)ModuleExclusionSymbolFields.ModuleID, value); | ||
52 | } | ||
53 | |||
54 | public int ModuleLanguage | ||
55 | { | ||
56 | get => (int)this.Fields[(int)ModuleExclusionSymbolFields.ModuleLanguage]; | ||
57 | set => this.Set((int)ModuleExclusionSymbolFields.ModuleLanguage, value); | ||
58 | } | ||
59 | |||
60 | public string ExcludedID | ||
61 | { | ||
62 | get => (string)this.Fields[(int)ModuleExclusionSymbolFields.ExcludedID]; | ||
63 | set => this.Set((int)ModuleExclusionSymbolFields.ExcludedID, value); | ||
64 | } | ||
65 | |||
66 | public int ExcludedLanguage | ||
67 | { | ||
68 | get => (int)this.Fields[(int)ModuleExclusionSymbolFields.ExcludedLanguage]; | ||
69 | set => this.Set((int)ModuleExclusionSymbolFields.ExcludedLanguage, value); | ||
70 | } | ||
71 | |||
72 | public string ExcludedMinVersion | ||
73 | { | ||
74 | get => (string)this.Fields[(int)ModuleExclusionSymbolFields.ExcludedMinVersion]; | ||
75 | set => this.Set((int)ModuleExclusionSymbolFields.ExcludedMinVersion, value); | ||
76 | } | ||
77 | |||
78 | public string ExcludedMaxVersion | ||
79 | { | ||
80 | get => (string)this.Fields[(int)ModuleExclusionSymbolFields.ExcludedMaxVersion]; | ||
81 | set => this.Set((int)ModuleExclusionSymbolFields.ExcludedMaxVersion, value); | ||
82 | } | ||
83 | } | ||
84 | } \ No newline at end of file | ||
diff --git a/src/api/wix/WixToolset.Data/Symbols/ModuleIgnoreTableSymbol.cs b/src/api/wix/WixToolset.Data/Symbols/ModuleIgnoreTableSymbol.cs new file mode 100644 index 00000000..07302df8 --- /dev/null +++ b/src/api/wix/WixToolset.Data/Symbols/ModuleIgnoreTableSymbol.cs | |||
@@ -0,0 +1,36 @@ | |||
1 | // Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. | ||
2 | |||
3 | namespace WixToolset.Data | ||
4 | { | ||
5 | using WixToolset.Data.Symbols; | ||
6 | |||
7 | public static partial class SymbolDefinitions | ||
8 | { | ||
9 | public static readonly IntermediateSymbolDefinition ModuleIgnoreTable = new IntermediateSymbolDefinition( | ||
10 | SymbolDefinitionType.ModuleIgnoreTable, | ||
11 | new IntermediateFieldDefinition[] | ||
12 | { | ||
13 | }, | ||
14 | typeof(ModuleIgnoreTableSymbol)); | ||
15 | } | ||
16 | } | ||
17 | |||
18 | namespace WixToolset.Data.Symbols | ||
19 | { | ||
20 | public enum ModuleIgnoreTableSymbolFields | ||
21 | { | ||
22 | } | ||
23 | |||
24 | public class ModuleIgnoreTableSymbol : IntermediateSymbol | ||
25 | { | ||
26 | public ModuleIgnoreTableSymbol() : base(SymbolDefinitions.ModuleIgnoreTable, null, null) | ||
27 | { | ||
28 | } | ||
29 | |||
30 | public ModuleIgnoreTableSymbol(SourceLineNumber sourceLineNumber, Identifier id = null) : base(SymbolDefinitions.ModuleIgnoreTable, sourceLineNumber, id) | ||
31 | { | ||
32 | } | ||
33 | |||
34 | public IntermediateField this[ModuleIgnoreTableSymbolFields index] => this.Fields[(int)index]; | ||
35 | } | ||
36 | } \ No newline at end of file | ||
diff --git a/src/api/wix/WixToolset.Data/Symbols/ModuleSubstitutionSymbol.cs b/src/api/wix/WixToolset.Data/Symbols/ModuleSubstitutionSymbol.cs new file mode 100644 index 00000000..50d615b0 --- /dev/null +++ b/src/api/wix/WixToolset.Data/Symbols/ModuleSubstitutionSymbol.cs | |||
@@ -0,0 +1,68 @@ | |||
1 | // Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. | ||
2 | |||
3 | namespace WixToolset.Data | ||
4 | { | ||
5 | using WixToolset.Data.Symbols; | ||
6 | |||
7 | public static partial class SymbolDefinitions | ||
8 | { | ||
9 | public static readonly IntermediateSymbolDefinition ModuleSubstitution = new IntermediateSymbolDefinition( | ||
10 | SymbolDefinitionType.ModuleSubstitution, | ||
11 | new[] | ||
12 | { | ||
13 | new IntermediateFieldDefinition(nameof(ModuleSubstitutionSymbolFields.Table), IntermediateFieldType.String), | ||
14 | new IntermediateFieldDefinition(nameof(ModuleSubstitutionSymbolFields.Row), IntermediateFieldType.String), | ||
15 | new IntermediateFieldDefinition(nameof(ModuleSubstitutionSymbolFields.Column), IntermediateFieldType.String), | ||
16 | new IntermediateFieldDefinition(nameof(ModuleSubstitutionSymbolFields.Value), IntermediateFieldType.String), | ||
17 | }, | ||
18 | typeof(ModuleSubstitutionSymbol)); | ||
19 | } | ||
20 | } | ||
21 | |||
22 | namespace WixToolset.Data.Symbols | ||
23 | { | ||
24 | public enum ModuleSubstitutionSymbolFields | ||
25 | { | ||
26 | Table, | ||
27 | Row, | ||
28 | Column, | ||
29 | Value, | ||
30 | } | ||
31 | |||
32 | public class ModuleSubstitutionSymbol : IntermediateSymbol | ||
33 | { | ||
34 | public ModuleSubstitutionSymbol() : base(SymbolDefinitions.ModuleSubstitution, null, null) | ||
35 | { | ||
36 | } | ||
37 | |||
38 | public ModuleSubstitutionSymbol(SourceLineNumber sourceLineNumber, Identifier id = null) : base(SymbolDefinitions.ModuleSubstitution, sourceLineNumber, id) | ||
39 | { | ||
40 | } | ||
41 | |||
42 | public IntermediateField this[ModuleSubstitutionSymbolFields index] => this.Fields[(int)index]; | ||
43 | |||
44 | public string Table | ||
45 | { | ||
46 | get => (string)this.Fields[(int)ModuleSubstitutionSymbolFields.Table]; | ||
47 | set => this.Set((int)ModuleSubstitutionSymbolFields.Table, value); | ||
48 | } | ||
49 | |||
50 | public string Row | ||
51 | { | ||
52 | get => (string)this.Fields[(int)ModuleSubstitutionSymbolFields.Row]; | ||
53 | set => this.Set((int)ModuleSubstitutionSymbolFields.Row, value); | ||
54 | } | ||
55 | |||
56 | public string Column | ||
57 | { | ||
58 | get => (string)this.Fields[(int)ModuleSubstitutionSymbolFields.Column]; | ||
59 | set => this.Set((int)ModuleSubstitutionSymbolFields.Column, value); | ||
60 | } | ||
61 | |||
62 | public string Value | ||
63 | { | ||
64 | get => (string)this.Fields[(int)ModuleSubstitutionSymbolFields.Value]; | ||
65 | set => this.Set((int)ModuleSubstitutionSymbolFields.Value, value); | ||
66 | } | ||
67 | } | ||
68 | } \ No newline at end of file | ||
diff --git a/src/api/wix/WixToolset.Data/Symbols/MoveFileSymbol.cs b/src/api/wix/WixToolset.Data/Symbols/MoveFileSymbol.cs new file mode 100644 index 00000000..6e9e32a5 --- /dev/null +++ b/src/api/wix/WixToolset.Data/Symbols/MoveFileSymbol.cs | |||
@@ -0,0 +1,92 @@ | |||
1 | // Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. | ||
2 | |||
3 | namespace WixToolset.Data | ||
4 | { | ||
5 | using WixToolset.Data.Symbols; | ||
6 | |||
7 | public static partial class SymbolDefinitions | ||
8 | { | ||
9 | public static readonly IntermediateSymbolDefinition MoveFile = new IntermediateSymbolDefinition( | ||
10 | SymbolDefinitionType.MoveFile, | ||
11 | new[] | ||
12 | { | ||
13 | new IntermediateFieldDefinition(nameof(MoveFileSymbolFields.ComponentRef), IntermediateFieldType.String), | ||
14 | new IntermediateFieldDefinition(nameof(MoveFileSymbolFields.SourceName), IntermediateFieldType.String), | ||
15 | new IntermediateFieldDefinition(nameof(MoveFileSymbolFields.DestinationName), IntermediateFieldType.String), | ||
16 | new IntermediateFieldDefinition(nameof(MoveFileSymbolFields.DestinationShortName), IntermediateFieldType.String), | ||
17 | new IntermediateFieldDefinition(nameof(MoveFileSymbolFields.SourceFolder), IntermediateFieldType.String), | ||
18 | new IntermediateFieldDefinition(nameof(MoveFileSymbolFields.DestFolder), IntermediateFieldType.String), | ||
19 | new IntermediateFieldDefinition(nameof(MoveFileSymbolFields.Delete), IntermediateFieldType.Bool), | ||
20 | }, | ||
21 | typeof(MoveFileSymbol)); | ||
22 | } | ||
23 | } | ||
24 | |||
25 | namespace WixToolset.Data.Symbols | ||
26 | { | ||
27 | public enum MoveFileSymbolFields | ||
28 | { | ||
29 | ComponentRef, | ||
30 | SourceName, | ||
31 | DestinationName, | ||
32 | DestinationShortName, | ||
33 | SourceFolder, | ||
34 | DestFolder, | ||
35 | Delete, | ||
36 | } | ||
37 | |||
38 | public class MoveFileSymbol : IntermediateSymbol | ||
39 | { | ||
40 | public MoveFileSymbol() : base(SymbolDefinitions.MoveFile, null, null) | ||
41 | { | ||
42 | } | ||
43 | |||
44 | public MoveFileSymbol(SourceLineNumber sourceLineNumber, Identifier id = null) : base(SymbolDefinitions.MoveFile, sourceLineNumber, id) | ||
45 | { | ||
46 | } | ||
47 | |||
48 | public IntermediateField this[MoveFileSymbolFields index] => this.Fields[(int)index]; | ||
49 | |||
50 | public string ComponentRef | ||
51 | { | ||
52 | get => (string)this.Fields[(int)MoveFileSymbolFields.ComponentRef]; | ||
53 | set => this.Set((int)MoveFileSymbolFields.ComponentRef, value); | ||
54 | } | ||
55 | |||
56 | public string SourceName | ||
57 | { | ||
58 | get => (string)this.Fields[(int)MoveFileSymbolFields.SourceName]; | ||
59 | set => this.Set((int)MoveFileSymbolFields.SourceName, value); | ||
60 | } | ||
61 | |||
62 | public string DestinationName | ||
63 | { | ||
64 | get => (string)this.Fields[(int)MoveFileSymbolFields.DestinationName]; | ||
65 | set => this.Set((int)MoveFileSymbolFields.DestinationName, value); | ||
66 | } | ||
67 | |||
68 | public string DestinationShortName | ||
69 | { | ||
70 | get => (string)this.Fields[(int)MoveFileSymbolFields.DestinationShortName]; | ||
71 | set => this.Set((int)MoveFileSymbolFields.DestinationShortName, value); | ||
72 | } | ||
73 | |||
74 | public string SourceFolder | ||
75 | { | ||
76 | get => (string)this.Fields[(int)MoveFileSymbolFields.SourceFolder]; | ||
77 | set => this.Set((int)MoveFileSymbolFields.SourceFolder, value); | ||
78 | } | ||
79 | |||
80 | public string DestFolder | ||
81 | { | ||
82 | get => (string)this.Fields[(int)MoveFileSymbolFields.DestFolder]; | ||
83 | set => this.Set((int)MoveFileSymbolFields.DestFolder, value); | ||
84 | } | ||
85 | |||
86 | public bool Delete | ||
87 | { | ||
88 | get => (bool)this.Fields[(int)MoveFileSymbolFields.Delete]; | ||
89 | set => this.Set((int)MoveFileSymbolFields.Delete, value); | ||
90 | } | ||
91 | } | ||
92 | } | ||
diff --git a/src/api/wix/WixToolset.Data/Symbols/MsiAssemblyNameSymbol.cs b/src/api/wix/WixToolset.Data/Symbols/MsiAssemblyNameSymbol.cs new file mode 100644 index 00000000..99c9806d --- /dev/null +++ b/src/api/wix/WixToolset.Data/Symbols/MsiAssemblyNameSymbol.cs | |||
@@ -0,0 +1,60 @@ | |||
1 | // Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. | ||
2 | |||
3 | namespace WixToolset.Data | ||
4 | { | ||
5 | using WixToolset.Data.Symbols; | ||
6 | |||
7 | public static partial class SymbolDefinitions | ||
8 | { | ||
9 | public static readonly IntermediateSymbolDefinition MsiAssemblyName = new IntermediateSymbolDefinition( | ||
10 | SymbolDefinitionType.MsiAssemblyName, | ||
11 | new[] | ||
12 | { | ||
13 | new IntermediateFieldDefinition(nameof(MsiAssemblyNameSymbolFields.ComponentRef), IntermediateFieldType.String), | ||
14 | new IntermediateFieldDefinition(nameof(MsiAssemblyNameSymbolFields.Name), IntermediateFieldType.String), | ||
15 | new IntermediateFieldDefinition(nameof(MsiAssemblyNameSymbolFields.Value), IntermediateFieldType.String), | ||
16 | }, | ||
17 | typeof(MsiAssemblyNameSymbol)); | ||
18 | } | ||
19 | } | ||
20 | |||
21 | namespace WixToolset.Data.Symbols | ||
22 | { | ||
23 | public enum MsiAssemblyNameSymbolFields | ||
24 | { | ||
25 | ComponentRef, | ||
26 | Name, | ||
27 | Value, | ||
28 | } | ||
29 | |||
30 | public class MsiAssemblyNameSymbol : IntermediateSymbol | ||
31 | { | ||
32 | public MsiAssemblyNameSymbol() : base(SymbolDefinitions.MsiAssemblyName, null, null) | ||
33 | { | ||
34 | } | ||
35 | |||
36 | public MsiAssemblyNameSymbol(SourceLineNumber sourceLineNumber, Identifier id = null) : base(SymbolDefinitions.MsiAssemblyName, sourceLineNumber, id) | ||
37 | { | ||
38 | } | ||
39 | |||
40 | public IntermediateField this[MsiAssemblyNameSymbolFields index] => this.Fields[(int)index]; | ||
41 | |||
42 | public string ComponentRef | ||
43 | { | ||
44 | get => (string)this.Fields[(int)MsiAssemblyNameSymbolFields.ComponentRef]; | ||
45 | set => this.Set((int)MsiAssemblyNameSymbolFields.ComponentRef, value); | ||
46 | } | ||
47 | |||
48 | public string Name | ||
49 | { | ||
50 | get => (string)this.Fields[(int)MsiAssemblyNameSymbolFields.Name]; | ||
51 | set => this.Set((int)MsiAssemblyNameSymbolFields.Name, value); | ||
52 | } | ||
53 | |||
54 | public string Value | ||
55 | { | ||
56 | get => (string)this.Fields[(int)MsiAssemblyNameSymbolFields.Value]; | ||
57 | set => this.Set((int)MsiAssemblyNameSymbolFields.Value, value); | ||
58 | } | ||
59 | } | ||
60 | } \ No newline at end of file | ||
diff --git a/src/api/wix/WixToolset.Data/Symbols/MsiDigitalCertificateSymbol.cs b/src/api/wix/WixToolset.Data/Symbols/MsiDigitalCertificateSymbol.cs new file mode 100644 index 00000000..febd51cc --- /dev/null +++ b/src/api/wix/WixToolset.Data/Symbols/MsiDigitalCertificateSymbol.cs | |||
@@ -0,0 +1,44 @@ | |||
1 | // Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. | ||
2 | |||
3 | namespace WixToolset.Data | ||
4 | { | ||
5 | using WixToolset.Data.Symbols; | ||
6 | |||
7 | public static partial class SymbolDefinitions | ||
8 | { | ||
9 | public static readonly IntermediateSymbolDefinition MsiDigitalCertificate = new IntermediateSymbolDefinition( | ||
10 | SymbolDefinitionType.MsiDigitalCertificate, | ||
11 | new[] | ||
12 | { | ||
13 | new IntermediateFieldDefinition(nameof(MsiDigitalCertificateSymbolFields.CertData), IntermediateFieldType.Path), | ||
14 | }, | ||
15 | typeof(MsiDigitalCertificateSymbol)); | ||
16 | } | ||
17 | } | ||
18 | |||
19 | namespace WixToolset.Data.Symbols | ||
20 | { | ||
21 | public enum MsiDigitalCertificateSymbolFields | ||
22 | { | ||
23 | CertData, | ||
24 | } | ||
25 | |||
26 | public class MsiDigitalCertificateSymbol : IntermediateSymbol | ||
27 | { | ||
28 | public MsiDigitalCertificateSymbol() : base(SymbolDefinitions.MsiDigitalCertificate, null, null) | ||
29 | { | ||
30 | } | ||
31 | |||
32 | public MsiDigitalCertificateSymbol(SourceLineNumber sourceLineNumber, Identifier id = null) : base(SymbolDefinitions.MsiDigitalCertificate, sourceLineNumber, id) | ||
33 | { | ||
34 | } | ||
35 | |||
36 | public IntermediateField this[MsiDigitalCertificateSymbolFields index] => this.Fields[(int)index]; | ||
37 | |||
38 | public string CertData | ||
39 | { | ||
40 | get => (string)this.Fields[(int)MsiDigitalCertificateSymbolFields.CertData]; | ||
41 | set => this.Set((int)MsiDigitalCertificateSymbolFields.CertData, value); | ||
42 | } | ||
43 | } | ||
44 | } \ No newline at end of file | ||
diff --git a/src/api/wix/WixToolset.Data/Symbols/MsiDigitalSignatureSymbol.cs b/src/api/wix/WixToolset.Data/Symbols/MsiDigitalSignatureSymbol.cs new file mode 100644 index 00000000..560f3590 --- /dev/null +++ b/src/api/wix/WixToolset.Data/Symbols/MsiDigitalSignatureSymbol.cs | |||
@@ -0,0 +1,68 @@ | |||
1 | // Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. | ||
2 | |||
3 | namespace WixToolset.Data | ||
4 | { | ||
5 | using WixToolset.Data.Symbols; | ||
6 | |||
7 | public static partial class SymbolDefinitions | ||
8 | { | ||
9 | public static readonly IntermediateSymbolDefinition MsiDigitalSignature = new IntermediateSymbolDefinition( | ||
10 | SymbolDefinitionType.MsiDigitalSignature, | ||
11 | new[] | ||
12 | { | ||
13 | new IntermediateFieldDefinition(nameof(MsiDigitalSignatureSymbolFields.Table), IntermediateFieldType.String), | ||
14 | new IntermediateFieldDefinition(nameof(MsiDigitalSignatureSymbolFields.SignObject), IntermediateFieldType.String), | ||
15 | new IntermediateFieldDefinition(nameof(MsiDigitalSignatureSymbolFields.DigitalCertificateRef), IntermediateFieldType.String), | ||
16 | new IntermediateFieldDefinition(nameof(MsiDigitalSignatureSymbolFields.Hash), IntermediateFieldType.Path), | ||
17 | }, | ||
18 | typeof(MsiDigitalSignatureSymbol)); | ||
19 | } | ||
20 | } | ||
21 | |||
22 | namespace WixToolset.Data.Symbols | ||
23 | { | ||
24 | public enum MsiDigitalSignatureSymbolFields | ||
25 | { | ||
26 | Table, | ||
27 | SignObject, | ||
28 | DigitalCertificateRef, | ||
29 | Hash, | ||
30 | } | ||
31 | |||
32 | public class MsiDigitalSignatureSymbol : IntermediateSymbol | ||
33 | { | ||
34 | public MsiDigitalSignatureSymbol() : base(SymbolDefinitions.MsiDigitalSignature, null, null) | ||
35 | { | ||
36 | } | ||
37 | |||
38 | public MsiDigitalSignatureSymbol(SourceLineNumber sourceLineNumber, Identifier id = null) : base(SymbolDefinitions.MsiDigitalSignature, sourceLineNumber, id) | ||
39 | { | ||
40 | } | ||
41 | |||
42 | public IntermediateField this[MsiDigitalSignatureSymbolFields index] => this.Fields[(int)index]; | ||
43 | |||
44 | public string Table | ||
45 | { | ||
46 | get => (string)this.Fields[(int)MsiDigitalSignatureSymbolFields.Table]; | ||
47 | set => this.Set((int)MsiDigitalSignatureSymbolFields.Table, value); | ||
48 | } | ||
49 | |||
50 | public string SignObject | ||
51 | { | ||
52 | get => (string)this.Fields[(int)MsiDigitalSignatureSymbolFields.SignObject]; | ||
53 | set => this.Set((int)MsiDigitalSignatureSymbolFields.SignObject, value); | ||
54 | } | ||
55 | |||
56 | public string DigitalCertificateRef | ||
57 | { | ||
58 | get => (string)this.Fields[(int)MsiDigitalSignatureSymbolFields.DigitalCertificateRef]; | ||
59 | set => this.Set((int)MsiDigitalSignatureSymbolFields.DigitalCertificateRef, value); | ||
60 | } | ||
61 | |||
62 | public string Hash | ||
63 | { | ||
64 | get => (string)this.Fields[(int)MsiDigitalSignatureSymbolFields.Hash]; | ||
65 | set => this.Set((int)MsiDigitalSignatureSymbolFields.Hash, value); | ||
66 | } | ||
67 | } | ||
68 | } \ No newline at end of file | ||
diff --git a/src/api/wix/WixToolset.Data/Symbols/MsiEmbeddedChainerSymbol.cs b/src/api/wix/WixToolset.Data/Symbols/MsiEmbeddedChainerSymbol.cs new file mode 100644 index 00000000..eeed1673 --- /dev/null +++ b/src/api/wix/WixToolset.Data/Symbols/MsiEmbeddedChainerSymbol.cs | |||
@@ -0,0 +1,68 @@ | |||
1 | // Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. | ||
2 | |||
3 | namespace WixToolset.Data | ||
4 | { | ||
5 | using WixToolset.Data.Symbols; | ||
6 | |||
7 | public static partial class SymbolDefinitions | ||
8 | { | ||
9 | public static readonly IntermediateSymbolDefinition MsiEmbeddedChainer = new IntermediateSymbolDefinition( | ||
10 | SymbolDefinitionType.MsiEmbeddedChainer, | ||
11 | new[] | ||
12 | { | ||
13 | new IntermediateFieldDefinition(nameof(MsiEmbeddedChainerSymbolFields.Condition), IntermediateFieldType.String), | ||
14 | new IntermediateFieldDefinition(nameof(MsiEmbeddedChainerSymbolFields.CommandLine), IntermediateFieldType.String), | ||
15 | new IntermediateFieldDefinition(nameof(MsiEmbeddedChainerSymbolFields.Source), IntermediateFieldType.String), | ||
16 | new IntermediateFieldDefinition(nameof(MsiEmbeddedChainerSymbolFields.Type), IntermediateFieldType.Number), | ||
17 | }, | ||
18 | typeof(MsiEmbeddedChainerSymbol)); | ||
19 | } | ||
20 | } | ||
21 | |||
22 | namespace WixToolset.Data.Symbols | ||
23 | { | ||
24 | public enum MsiEmbeddedChainerSymbolFields | ||
25 | { | ||
26 | Condition, | ||
27 | CommandLine, | ||
28 | Source, | ||
29 | Type, | ||
30 | } | ||
31 | |||
32 | public class MsiEmbeddedChainerSymbol : IntermediateSymbol | ||
33 | { | ||
34 | public MsiEmbeddedChainerSymbol() : base(SymbolDefinitions.MsiEmbeddedChainer, null, null) | ||
35 | { | ||
36 | } | ||
37 | |||
38 | public MsiEmbeddedChainerSymbol(SourceLineNumber sourceLineNumber, Identifier id = null) : base(SymbolDefinitions.MsiEmbeddedChainer, sourceLineNumber, id) | ||
39 | { | ||
40 | } | ||
41 | |||
42 | public IntermediateField this[MsiEmbeddedChainerSymbolFields index] => this.Fields[(int)index]; | ||
43 | |||
44 | public string Condition | ||
45 | { | ||
46 | get => (string)this.Fields[(int)MsiEmbeddedChainerSymbolFields.Condition]; | ||
47 | set => this.Set((int)MsiEmbeddedChainerSymbolFields.Condition, value); | ||
48 | } | ||
49 | |||
50 | public string CommandLine | ||
51 | { | ||
52 | get => (string)this.Fields[(int)MsiEmbeddedChainerSymbolFields.CommandLine]; | ||
53 | set => this.Set((int)MsiEmbeddedChainerSymbolFields.CommandLine, value); | ||
54 | } | ||
55 | |||
56 | public string Source | ||
57 | { | ||
58 | get => (string)this.Fields[(int)MsiEmbeddedChainerSymbolFields.Source]; | ||
59 | set => this.Set((int)MsiEmbeddedChainerSymbolFields.Source, value); | ||
60 | } | ||
61 | |||
62 | public int Type | ||
63 | { | ||
64 | get => (int)this.Fields[(int)MsiEmbeddedChainerSymbolFields.Type]; | ||
65 | set => this.Set((int)MsiEmbeddedChainerSymbolFields.Type, value); | ||
66 | } | ||
67 | } | ||
68 | } \ No newline at end of file | ||
diff --git a/src/api/wix/WixToolset.Data/Symbols/MsiEmbeddedUISymbol.cs b/src/api/wix/WixToolset.Data/Symbols/MsiEmbeddedUISymbol.cs new file mode 100644 index 00000000..87c9481a --- /dev/null +++ b/src/api/wix/WixToolset.Data/Symbols/MsiEmbeddedUISymbol.cs | |||
@@ -0,0 +1,76 @@ | |||
1 | // Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. | ||
2 | |||
3 | namespace WixToolset.Data | ||
4 | { | ||
5 | using WixToolset.Data.Symbols; | ||
6 | |||
7 | public static partial class SymbolDefinitions | ||
8 | { | ||
9 | public static readonly IntermediateSymbolDefinition MsiEmbeddedUI = new IntermediateSymbolDefinition( | ||
10 | SymbolDefinitionType.MsiEmbeddedUI, | ||
11 | new[] | ||
12 | { | ||
13 | new IntermediateFieldDefinition(nameof(MsiEmbeddedUISymbolFields.FileName), IntermediateFieldType.String), | ||
14 | new IntermediateFieldDefinition(nameof(MsiEmbeddedUISymbolFields.EntryPoint), IntermediateFieldType.Bool), | ||
15 | new IntermediateFieldDefinition(nameof(MsiEmbeddedUISymbolFields.SupportsBasicUI), IntermediateFieldType.Bool), | ||
16 | new IntermediateFieldDefinition(nameof(MsiEmbeddedUISymbolFields.MessageFilter), IntermediateFieldType.Number), | ||
17 | new IntermediateFieldDefinition(nameof(MsiEmbeddedUISymbolFields.Source), IntermediateFieldType.Path), | ||
18 | }, | ||
19 | typeof(MsiEmbeddedUISymbol)); | ||
20 | } | ||
21 | } | ||
22 | |||
23 | namespace WixToolset.Data.Symbols | ||
24 | { | ||
25 | public enum MsiEmbeddedUISymbolFields | ||
26 | { | ||
27 | FileName, | ||
28 | EntryPoint, | ||
29 | SupportsBasicUI, | ||
30 | MessageFilter, | ||
31 | Source, | ||
32 | } | ||
33 | |||
34 | public class MsiEmbeddedUISymbol : IntermediateSymbol | ||
35 | { | ||
36 | public MsiEmbeddedUISymbol() : base(SymbolDefinitions.MsiEmbeddedUI, null, null) | ||
37 | { | ||
38 | } | ||
39 | |||
40 | public MsiEmbeddedUISymbol(SourceLineNumber sourceLineNumber, Identifier id = null) : base(SymbolDefinitions.MsiEmbeddedUI, sourceLineNumber, id) | ||
41 | { | ||
42 | } | ||
43 | |||
44 | public IntermediateField this[MsiEmbeddedUISymbolFields index] => this.Fields[(int)index]; | ||
45 | |||
46 | public string FileName | ||
47 | { | ||
48 | get => (string)this.Fields[(int)MsiEmbeddedUISymbolFields.FileName]; | ||
49 | set => this.Set((int)MsiEmbeddedUISymbolFields.FileName, value); | ||
50 | } | ||
51 | |||
52 | public bool EntryPoint | ||
53 | { | ||
54 | get => this.Fields[(int)MsiEmbeddedUISymbolFields.EntryPoint].AsBool(); | ||
55 | set => this.Set((int)MsiEmbeddedUISymbolFields.EntryPoint, value); | ||
56 | } | ||
57 | |||
58 | public bool SupportsBasicUI | ||
59 | { | ||
60 | get => this.Fields[(int)MsiEmbeddedUISymbolFields.SupportsBasicUI].AsBool(); | ||
61 | set => this.Set((int)MsiEmbeddedUISymbolFields.SupportsBasicUI, value); | ||
62 | } | ||
63 | |||
64 | public int? MessageFilter | ||
65 | { | ||
66 | get => (int?)this.Fields[(int)MsiEmbeddedUISymbolFields.MessageFilter]; | ||
67 | set => this.Set((int)MsiEmbeddedUISymbolFields.MessageFilter, value); | ||
68 | } | ||
69 | |||
70 | public string Source | ||
71 | { | ||
72 | get => (string)this.Fields[(int)MsiEmbeddedUISymbolFields.Source]; | ||
73 | set => this.Set((int)MsiEmbeddedUISymbolFields.Source, value); | ||
74 | } | ||
75 | } | ||
76 | } | ||
diff --git a/src/api/wix/WixToolset.Data/Symbols/MsiFileHashSymbol.cs b/src/api/wix/WixToolset.Data/Symbols/MsiFileHashSymbol.cs new file mode 100644 index 00000000..bfec1c12 --- /dev/null +++ b/src/api/wix/WixToolset.Data/Symbols/MsiFileHashSymbol.cs | |||
@@ -0,0 +1,76 @@ | |||
1 | // Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. | ||
2 | |||
3 | namespace WixToolset.Data | ||
4 | { | ||
5 | using WixToolset.Data.Symbols; | ||
6 | |||
7 | public static partial class SymbolDefinitions | ||
8 | { | ||
9 | public static readonly IntermediateSymbolDefinition MsiFileHash = new IntermediateSymbolDefinition( | ||
10 | SymbolDefinitionType.MsiFileHash, | ||
11 | new[] | ||
12 | { | ||
13 | new IntermediateFieldDefinition(nameof(MsiFileHashSymbolFields.Options), IntermediateFieldType.Number), | ||
14 | new IntermediateFieldDefinition(nameof(MsiFileHashSymbolFields.HashPart1), IntermediateFieldType.Number), | ||
15 | new IntermediateFieldDefinition(nameof(MsiFileHashSymbolFields.HashPart2), IntermediateFieldType.Number), | ||
16 | new IntermediateFieldDefinition(nameof(MsiFileHashSymbolFields.HashPart3), IntermediateFieldType.Number), | ||
17 | new IntermediateFieldDefinition(nameof(MsiFileHashSymbolFields.HashPart4), IntermediateFieldType.Number), | ||
18 | }, | ||
19 | typeof(MsiFileHashSymbol)); | ||
20 | } | ||
21 | } | ||
22 | |||
23 | namespace WixToolset.Data.Symbols | ||
24 | { | ||
25 | public enum MsiFileHashSymbolFields | ||
26 | { | ||
27 | Options, | ||
28 | HashPart1, | ||
29 | HashPart2, | ||
30 | HashPart3, | ||
31 | HashPart4, | ||
32 | } | ||
33 | |||
34 | public class MsiFileHashSymbol : IntermediateSymbol | ||
35 | { | ||
36 | public MsiFileHashSymbol() : base(SymbolDefinitions.MsiFileHash, null, null) | ||
37 | { | ||
38 | } | ||
39 | |||
40 | public MsiFileHashSymbol(SourceLineNumber sourceLineNumber, Identifier id = null) : base(SymbolDefinitions.MsiFileHash, sourceLineNumber, id) | ||
41 | { | ||
42 | } | ||
43 | |||
44 | public IntermediateField this[MsiFileHashSymbolFields index] => this.Fields[(int)index]; | ||
45 | |||
46 | public int Options | ||
47 | { | ||
48 | get => (int)this.Fields[(int)MsiFileHashSymbolFields.Options]; | ||
49 | set => this.Set((int)MsiFileHashSymbolFields.Options, value); | ||
50 | } | ||
51 | |||
52 | public int HashPart1 | ||
53 | { | ||
54 | get => (int)this.Fields[(int)MsiFileHashSymbolFields.HashPart1]; | ||
55 | set => this.Set((int)MsiFileHashSymbolFields.HashPart1, value); | ||
56 | } | ||
57 | |||
58 | public int HashPart2 | ||
59 | { | ||
60 | get => (int)this.Fields[(int)MsiFileHashSymbolFields.HashPart2]; | ||
61 | set => this.Set((int)MsiFileHashSymbolFields.HashPart2, value); | ||
62 | } | ||
63 | |||
64 | public int HashPart3 | ||
65 | { | ||
66 | get => (int)this.Fields[(int)MsiFileHashSymbolFields.HashPart3]; | ||
67 | set => this.Set((int)MsiFileHashSymbolFields.HashPart3, value); | ||
68 | } | ||
69 | |||
70 | public int HashPart4 | ||
71 | { | ||
72 | get => (int)this.Fields[(int)MsiFileHashSymbolFields.HashPart4]; | ||
73 | set => this.Set((int)MsiFileHashSymbolFields.HashPart4, value); | ||
74 | } | ||
75 | } | ||
76 | } \ No newline at end of file | ||
diff --git a/src/api/wix/WixToolset.Data/Symbols/MsiLockPermissionsExSymbol.cs b/src/api/wix/WixToolset.Data/Symbols/MsiLockPermissionsExSymbol.cs new file mode 100644 index 00000000..88e7d019 --- /dev/null +++ b/src/api/wix/WixToolset.Data/Symbols/MsiLockPermissionsExSymbol.cs | |||
@@ -0,0 +1,68 @@ | |||
1 | // Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. | ||
2 | |||
3 | namespace WixToolset.Data | ||
4 | { | ||
5 | using WixToolset.Data.Symbols; | ||
6 | |||
7 | public static partial class SymbolDefinitions | ||
8 | { | ||
9 | public static readonly IntermediateSymbolDefinition MsiLockPermissionsEx = new IntermediateSymbolDefinition( | ||
10 | SymbolDefinitionType.MsiLockPermissionsEx, | ||
11 | new[] | ||
12 | { | ||
13 | new IntermediateFieldDefinition(nameof(MsiLockPermissionsExSymbolFields.LockObject), IntermediateFieldType.String), | ||
14 | new IntermediateFieldDefinition(nameof(MsiLockPermissionsExSymbolFields.Table), IntermediateFieldType.String), | ||
15 | new IntermediateFieldDefinition(nameof(MsiLockPermissionsExSymbolFields.SDDLText), IntermediateFieldType.String), | ||
16 | new IntermediateFieldDefinition(nameof(MsiLockPermissionsExSymbolFields.Condition), IntermediateFieldType.String), | ||
17 | }, | ||
18 | typeof(MsiLockPermissionsExSymbol)); | ||
19 | } | ||
20 | } | ||
21 | |||
22 | namespace WixToolset.Data.Symbols | ||
23 | { | ||
24 | public enum MsiLockPermissionsExSymbolFields | ||
25 | { | ||
26 | LockObject, | ||
27 | Table, | ||
28 | SDDLText, | ||
29 | Condition, | ||
30 | } | ||
31 | |||
32 | public class MsiLockPermissionsExSymbol : IntermediateSymbol | ||
33 | { | ||
34 | public MsiLockPermissionsExSymbol() : base(SymbolDefinitions.MsiLockPermissionsEx, null, null) | ||
35 | { | ||
36 | } | ||
37 | |||
38 | public MsiLockPermissionsExSymbol(SourceLineNumber sourceLineNumber, Identifier id = null) : base(SymbolDefinitions.MsiLockPermissionsEx, sourceLineNumber, id) | ||
39 | { | ||
40 | } | ||
41 | |||
42 | public IntermediateField this[MsiLockPermissionsExSymbolFields index] => this.Fields[(int)index]; | ||
43 | |||
44 | public string LockObject | ||
45 | { | ||
46 | get => (string)this.Fields[(int)MsiLockPermissionsExSymbolFields.LockObject]; | ||
47 | set => this.Set((int)MsiLockPermissionsExSymbolFields.LockObject, value); | ||
48 | } | ||
49 | |||
50 | public string Table | ||
51 | { | ||
52 | get => (string)this.Fields[(int)MsiLockPermissionsExSymbolFields.Table]; | ||
53 | set => this.Set((int)MsiLockPermissionsExSymbolFields.Table, value); | ||
54 | } | ||
55 | |||
56 | public string SDDLText | ||
57 | { | ||
58 | get => (string)this.Fields[(int)MsiLockPermissionsExSymbolFields.SDDLText]; | ||
59 | set => this.Set((int)MsiLockPermissionsExSymbolFields.SDDLText, value); | ||
60 | } | ||
61 | |||
62 | public string Condition | ||
63 | { | ||
64 | get => (string)this.Fields[(int)MsiLockPermissionsExSymbolFields.Condition]; | ||
65 | set => this.Set((int)MsiLockPermissionsExSymbolFields.Condition, value); | ||
66 | } | ||
67 | } | ||
68 | } \ No newline at end of file | ||
diff --git a/src/api/wix/WixToolset.Data/Symbols/MsiPackageCertificateSymbol.cs b/src/api/wix/WixToolset.Data/Symbols/MsiPackageCertificateSymbol.cs new file mode 100644 index 00000000..4a6774b1 --- /dev/null +++ b/src/api/wix/WixToolset.Data/Symbols/MsiPackageCertificateSymbol.cs | |||
@@ -0,0 +1,52 @@ | |||
1 | // Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. | ||
2 | |||
3 | namespace WixToolset.Data | ||
4 | { | ||
5 | using WixToolset.Data.Symbols; | ||
6 | |||
7 | public static partial class SymbolDefinitions | ||
8 | { | ||
9 | public static readonly IntermediateSymbolDefinition MsiPackageCertificate = new IntermediateSymbolDefinition( | ||
10 | SymbolDefinitionType.MsiPackageCertificate, | ||
11 | new[] | ||
12 | { | ||
13 | new IntermediateFieldDefinition(nameof(MsiPackageCertificateSymbolFields.PackageCertificate), IntermediateFieldType.String), | ||
14 | new IntermediateFieldDefinition(nameof(MsiPackageCertificateSymbolFields.DigitalCertificateRef), IntermediateFieldType.String), | ||
15 | }, | ||
16 | typeof(MsiPackageCertificateSymbol)); | ||
17 | } | ||
18 | } | ||
19 | |||
20 | namespace WixToolset.Data.Symbols | ||
21 | { | ||
22 | public enum MsiPackageCertificateSymbolFields | ||
23 | { | ||
24 | PackageCertificate, | ||
25 | DigitalCertificateRef, | ||
26 | } | ||
27 | |||
28 | public class MsiPackageCertificateSymbol : IntermediateSymbol | ||
29 | { | ||
30 | public MsiPackageCertificateSymbol() : base(SymbolDefinitions.MsiPackageCertificate, null, null) | ||
31 | { | ||
32 | } | ||
33 | |||
34 | public MsiPackageCertificateSymbol(SourceLineNumber sourceLineNumber, Identifier id = null) : base(SymbolDefinitions.MsiPackageCertificate, sourceLineNumber, id) | ||
35 | { | ||
36 | } | ||
37 | |||
38 | public IntermediateField this[MsiPackageCertificateSymbolFields index] => this.Fields[(int)index]; | ||
39 | |||
40 | public string PackageCertificate | ||
41 | { | ||
42 | get => (string)this.Fields[(int)MsiPackageCertificateSymbolFields.PackageCertificate]; | ||
43 | set => this.Set((int)MsiPackageCertificateSymbolFields.PackageCertificate, value); | ||
44 | } | ||
45 | |||
46 | public string DigitalCertificateRef | ||
47 | { | ||
48 | get => (string)this.Fields[(int)MsiPackageCertificateSymbolFields.DigitalCertificateRef]; | ||
49 | set => this.Set((int)MsiPackageCertificateSymbolFields.DigitalCertificateRef, value); | ||
50 | } | ||
51 | } | ||
52 | } \ No newline at end of file | ||
diff --git a/src/api/wix/WixToolset.Data/Symbols/MsiPatchCertificateSymbol.cs b/src/api/wix/WixToolset.Data/Symbols/MsiPatchCertificateSymbol.cs new file mode 100644 index 00000000..7d6ce24e --- /dev/null +++ b/src/api/wix/WixToolset.Data/Symbols/MsiPatchCertificateSymbol.cs | |||
@@ -0,0 +1,52 @@ | |||
1 | // Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. | ||
2 | |||
3 | namespace WixToolset.Data | ||
4 | { | ||
5 | using WixToolset.Data.Symbols; | ||
6 | |||
7 | public static partial class SymbolDefinitions | ||
8 | { | ||
9 | public static readonly IntermediateSymbolDefinition MsiPatchCertificate = new IntermediateSymbolDefinition( | ||
10 | SymbolDefinitionType.MsiPatchCertificate, | ||
11 | new[] | ||
12 | { | ||
13 | new IntermediateFieldDefinition(nameof(MsiPatchCertificateSymbolFields.PatchCertificate), IntermediateFieldType.String), | ||
14 | new IntermediateFieldDefinition(nameof(MsiPatchCertificateSymbolFields.DigitalCertificateRef), IntermediateFieldType.String), | ||
15 | }, | ||
16 | typeof(MsiPatchCertificateSymbol)); | ||
17 | } | ||
18 | } | ||
19 | |||
20 | namespace WixToolset.Data.Symbols | ||
21 | { | ||
22 | public enum MsiPatchCertificateSymbolFields | ||
23 | { | ||
24 | PatchCertificate, | ||
25 | DigitalCertificateRef, | ||
26 | } | ||
27 | |||
28 | public class MsiPatchCertificateSymbol : IntermediateSymbol | ||
29 | { | ||
30 | public MsiPatchCertificateSymbol() : base(SymbolDefinitions.MsiPatchCertificate, null, null) | ||
31 | { | ||
32 | } | ||
33 | |||
34 | public MsiPatchCertificateSymbol(SourceLineNumber sourceLineNumber, Identifier id = null) : base(SymbolDefinitions.MsiPatchCertificate, sourceLineNumber, id) | ||
35 | { | ||
36 | } | ||
37 | |||
38 | public IntermediateField this[MsiPatchCertificateSymbolFields index] => this.Fields[(int)index]; | ||
39 | |||
40 | public string PatchCertificate | ||
41 | { | ||
42 | get => (string)this.Fields[(int)MsiPatchCertificateSymbolFields.PatchCertificate]; | ||
43 | set => this.Set((int)MsiPatchCertificateSymbolFields.PatchCertificate, value); | ||
44 | } | ||
45 | |||
46 | public string DigitalCertificateRef | ||
47 | { | ||
48 | get => (string)this.Fields[(int)MsiPatchCertificateSymbolFields.DigitalCertificateRef]; | ||
49 | set => this.Set((int)MsiPatchCertificateSymbolFields.DigitalCertificateRef, value); | ||
50 | } | ||
51 | } | ||
52 | } \ No newline at end of file | ||
diff --git a/src/api/wix/WixToolset.Data/Symbols/MsiPatchHeadersSymbol.cs b/src/api/wix/WixToolset.Data/Symbols/MsiPatchHeadersSymbol.cs new file mode 100644 index 00000000..0c68b164 --- /dev/null +++ b/src/api/wix/WixToolset.Data/Symbols/MsiPatchHeadersSymbol.cs | |||
@@ -0,0 +1,52 @@ | |||
1 | // Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. | ||
2 | |||
3 | namespace WixToolset.Data | ||
4 | { | ||
5 | using WixToolset.Data.Symbols; | ||
6 | |||
7 | public static partial class SymbolDefinitions | ||
8 | { | ||
9 | public static readonly IntermediateSymbolDefinition MsiPatchHeaders = new IntermediateSymbolDefinition( | ||
10 | SymbolDefinitionType.MsiPatchHeaders, | ||
11 | new[] | ||
12 | { | ||
13 | new IntermediateFieldDefinition(nameof(MsiPatchHeadersSymbolFields.StreamRef), IntermediateFieldType.String), | ||
14 | new IntermediateFieldDefinition(nameof(MsiPatchHeadersSymbolFields.Header), IntermediateFieldType.Path), | ||
15 | }, | ||
16 | typeof(MsiPatchHeadersSymbol)); | ||
17 | } | ||
18 | } | ||
19 | |||
20 | namespace WixToolset.Data.Symbols | ||
21 | { | ||
22 | public enum MsiPatchHeadersSymbolFields | ||
23 | { | ||
24 | StreamRef, | ||
25 | Header, | ||
26 | } | ||
27 | |||
28 | public class MsiPatchHeadersSymbol : IntermediateSymbol | ||
29 | { | ||
30 | public MsiPatchHeadersSymbol() : base(SymbolDefinitions.MsiPatchHeaders, null, null) | ||
31 | { | ||
32 | } | ||
33 | |||
34 | public MsiPatchHeadersSymbol(SourceLineNumber sourceLineNumber, Identifier id = null) : base(SymbolDefinitions.MsiPatchHeaders, sourceLineNumber, id) | ||
35 | { | ||
36 | } | ||
37 | |||
38 | public IntermediateField this[MsiPatchHeadersSymbolFields index] => this.Fields[(int)index]; | ||
39 | |||
40 | public string StreamRef | ||
41 | { | ||
42 | get => (string)this.Fields[(int)MsiPatchHeadersSymbolFields.StreamRef]; | ||
43 | set => this.Set((int)MsiPatchHeadersSymbolFields.StreamRef, value); | ||
44 | } | ||
45 | |||
46 | public string Header | ||
47 | { | ||
48 | get => (string)this.Fields[(int)MsiPatchHeadersSymbolFields.Header]; | ||
49 | set => this.Set((int)MsiPatchHeadersSymbolFields.Header, value); | ||
50 | } | ||
51 | } | ||
52 | } \ No newline at end of file | ||
diff --git a/src/api/wix/WixToolset.Data/Symbols/MsiPatchMetadataSymbol.cs b/src/api/wix/WixToolset.Data/Symbols/MsiPatchMetadataSymbol.cs new file mode 100644 index 00000000..682adbca --- /dev/null +++ b/src/api/wix/WixToolset.Data/Symbols/MsiPatchMetadataSymbol.cs | |||
@@ -0,0 +1,60 @@ | |||
1 | // Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. | ||
2 | |||
3 | namespace WixToolset.Data | ||
4 | { | ||
5 | using WixToolset.Data.Symbols; | ||
6 | |||
7 | public static partial class SymbolDefinitions | ||
8 | { | ||
9 | public static readonly IntermediateSymbolDefinition MsiPatchMetadata = new IntermediateSymbolDefinition( | ||
10 | SymbolDefinitionType.MsiPatchMetadata, | ||
11 | new[] | ||
12 | { | ||
13 | new IntermediateFieldDefinition(nameof(MsiPatchMetadataSymbolFields.Company), IntermediateFieldType.String), | ||
14 | new IntermediateFieldDefinition(nameof(MsiPatchMetadataSymbolFields.Property), IntermediateFieldType.String), | ||
15 | new IntermediateFieldDefinition(nameof(MsiPatchMetadataSymbolFields.Value), IntermediateFieldType.String), | ||
16 | }, | ||
17 | typeof(MsiPatchMetadataSymbol)); | ||
18 | } | ||
19 | } | ||
20 | |||
21 | namespace WixToolset.Data.Symbols | ||
22 | { | ||
23 | public enum MsiPatchMetadataSymbolFields | ||
24 | { | ||
25 | Company, | ||
26 | Property, | ||
27 | Value, | ||
28 | } | ||
29 | |||
30 | public class MsiPatchMetadataSymbol : IntermediateSymbol | ||
31 | { | ||
32 | public MsiPatchMetadataSymbol() : base(SymbolDefinitions.MsiPatchMetadata, null, null) | ||
33 | { | ||
34 | } | ||
35 | |||
36 | public MsiPatchMetadataSymbol(SourceLineNumber sourceLineNumber, Identifier id = null) : base(SymbolDefinitions.MsiPatchMetadata, sourceLineNumber, id) | ||
37 | { | ||
38 | } | ||
39 | |||
40 | public IntermediateField this[MsiPatchMetadataSymbolFields index] => this.Fields[(int)index]; | ||
41 | |||
42 | public string Company | ||
43 | { | ||
44 | get => (string)this.Fields[(int)MsiPatchMetadataSymbolFields.Company]; | ||
45 | set => this.Set((int)MsiPatchMetadataSymbolFields.Company, value); | ||
46 | } | ||
47 | |||
48 | public string Property | ||
49 | { | ||
50 | get => (string)this.Fields[(int)MsiPatchMetadataSymbolFields.Property]; | ||
51 | set => this.Set((int)MsiPatchMetadataSymbolFields.Property, value); | ||
52 | } | ||
53 | |||
54 | public string Value | ||
55 | { | ||
56 | get => (string)this.Fields[(int)MsiPatchMetadataSymbolFields.Value]; | ||
57 | set => this.Set((int)MsiPatchMetadataSymbolFields.Value, value); | ||
58 | } | ||
59 | } | ||
60 | } \ No newline at end of file | ||
diff --git a/src/api/wix/WixToolset.Data/Symbols/MsiPatchOldAssemblyFileSymbol.cs b/src/api/wix/WixToolset.Data/Symbols/MsiPatchOldAssemblyFileSymbol.cs new file mode 100644 index 00000000..75385ba8 --- /dev/null +++ b/src/api/wix/WixToolset.Data/Symbols/MsiPatchOldAssemblyFileSymbol.cs | |||
@@ -0,0 +1,52 @@ | |||
1 | // Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. | ||
2 | |||
3 | namespace WixToolset.Data | ||
4 | { | ||
5 | using WixToolset.Data.Symbols; | ||
6 | |||
7 | public static partial class SymbolDefinitions | ||
8 | { | ||
9 | public static readonly IntermediateSymbolDefinition MsiPatchOldAssemblyFile = new IntermediateSymbolDefinition( | ||
10 | SymbolDefinitionType.MsiPatchOldAssemblyFile, | ||
11 | new[] | ||
12 | { | ||
13 | new IntermediateFieldDefinition(nameof(MsiPatchOldAssemblyFileSymbolFields.FileRef), IntermediateFieldType.String), | ||
14 | new IntermediateFieldDefinition(nameof(MsiPatchOldAssemblyFileSymbolFields.AssemblyRef), IntermediateFieldType.String), | ||
15 | }, | ||
16 | typeof(MsiPatchOldAssemblyFileSymbol)); | ||
17 | } | ||
18 | } | ||
19 | |||
20 | namespace WixToolset.Data.Symbols | ||
21 | { | ||
22 | public enum MsiPatchOldAssemblyFileSymbolFields | ||
23 | { | ||
24 | FileRef, | ||
25 | AssemblyRef, | ||
26 | } | ||
27 | |||
28 | public class MsiPatchOldAssemblyFileSymbol : IntermediateSymbol | ||
29 | { | ||
30 | public MsiPatchOldAssemblyFileSymbol() : base(SymbolDefinitions.MsiPatchOldAssemblyFile, null, null) | ||
31 | { | ||
32 | } | ||
33 | |||
34 | public MsiPatchOldAssemblyFileSymbol(SourceLineNumber sourceLineNumber, Identifier id = null) : base(SymbolDefinitions.MsiPatchOldAssemblyFile, sourceLineNumber, id) | ||
35 | { | ||
36 | } | ||
37 | |||
38 | public IntermediateField this[MsiPatchOldAssemblyFileSymbolFields index] => this.Fields[(int)index]; | ||
39 | |||
40 | public string FileRef | ||
41 | { | ||
42 | get => (string)this.Fields[(int)MsiPatchOldAssemblyFileSymbolFields.FileRef]; | ||
43 | set => this.Set((int)MsiPatchOldAssemblyFileSymbolFields.FileRef, value); | ||
44 | } | ||
45 | |||
46 | public string AssemblyRef | ||
47 | { | ||
48 | get => (string)this.Fields[(int)MsiPatchOldAssemblyFileSymbolFields.AssemblyRef]; | ||
49 | set => this.Set((int)MsiPatchOldAssemblyFileSymbolFields.AssemblyRef, value); | ||
50 | } | ||
51 | } | ||
52 | } \ No newline at end of file | ||
diff --git a/src/api/wix/WixToolset.Data/Symbols/MsiPatchOldAssemblyNameSymbol.cs b/src/api/wix/WixToolset.Data/Symbols/MsiPatchOldAssemblyNameSymbol.cs new file mode 100644 index 00000000..199f5ff7 --- /dev/null +++ b/src/api/wix/WixToolset.Data/Symbols/MsiPatchOldAssemblyNameSymbol.cs | |||
@@ -0,0 +1,60 @@ | |||
1 | // Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. | ||
2 | |||
3 | namespace WixToolset.Data | ||
4 | { | ||
5 | using WixToolset.Data.Symbols; | ||
6 | |||
7 | public static partial class SymbolDefinitions | ||
8 | { | ||
9 | public static readonly IntermediateSymbolDefinition MsiPatchOldAssemblyName = new IntermediateSymbolDefinition( | ||
10 | SymbolDefinitionType.MsiPatchOldAssemblyName, | ||
11 | new[] | ||
12 | { | ||
13 | new IntermediateFieldDefinition(nameof(MsiPatchOldAssemblyNameSymbolFields.Assembly), IntermediateFieldType.String), | ||
14 | new IntermediateFieldDefinition(nameof(MsiPatchOldAssemblyNameSymbolFields.Name), IntermediateFieldType.String), | ||
15 | new IntermediateFieldDefinition(nameof(MsiPatchOldAssemblyNameSymbolFields.Value), IntermediateFieldType.String), | ||
16 | }, | ||
17 | typeof(MsiPatchOldAssemblyNameSymbol)); | ||
18 | } | ||
19 | } | ||
20 | |||
21 | namespace WixToolset.Data.Symbols | ||
22 | { | ||
23 | public enum MsiPatchOldAssemblyNameSymbolFields | ||
24 | { | ||
25 | Assembly, | ||
26 | Name, | ||
27 | Value, | ||
28 | } | ||
29 | |||
30 | public class MsiPatchOldAssemblyNameSymbol : IntermediateSymbol | ||
31 | { | ||
32 | public MsiPatchOldAssemblyNameSymbol() : base(SymbolDefinitions.MsiPatchOldAssemblyName, null, null) | ||
33 | { | ||
34 | } | ||
35 | |||
36 | public MsiPatchOldAssemblyNameSymbol(SourceLineNumber sourceLineNumber, Identifier id = null) : base(SymbolDefinitions.MsiPatchOldAssemblyName, sourceLineNumber, id) | ||
37 | { | ||
38 | } | ||
39 | |||
40 | public IntermediateField this[MsiPatchOldAssemblyNameSymbolFields index] => this.Fields[(int)index]; | ||
41 | |||
42 | public string Assembly | ||
43 | { | ||
44 | get => (string)this.Fields[(int)MsiPatchOldAssemblyNameSymbolFields.Assembly]; | ||
45 | set => this.Set((int)MsiPatchOldAssemblyNameSymbolFields.Assembly, value); | ||
46 | } | ||
47 | |||
48 | public string Name | ||
49 | { | ||
50 | get => (string)this.Fields[(int)MsiPatchOldAssemblyNameSymbolFields.Name]; | ||
51 | set => this.Set((int)MsiPatchOldAssemblyNameSymbolFields.Name, value); | ||
52 | } | ||
53 | |||
54 | public string Value | ||
55 | { | ||
56 | get => (string)this.Fields[(int)MsiPatchOldAssemblyNameSymbolFields.Value]; | ||
57 | set => this.Set((int)MsiPatchOldAssemblyNameSymbolFields.Value, value); | ||
58 | } | ||
59 | } | ||
60 | } \ No newline at end of file | ||
diff --git a/src/api/wix/WixToolset.Data/Symbols/MsiPatchSequenceSymbol.cs b/src/api/wix/WixToolset.Data/Symbols/MsiPatchSequenceSymbol.cs new file mode 100644 index 00000000..ac2b0dc4 --- /dev/null +++ b/src/api/wix/WixToolset.Data/Symbols/MsiPatchSequenceSymbol.cs | |||
@@ -0,0 +1,68 @@ | |||
1 | // Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. | ||
2 | |||
3 | namespace WixToolset.Data | ||
4 | { | ||
5 | using WixToolset.Data.Symbols; | ||
6 | |||
7 | public static partial class SymbolDefinitions | ||
8 | { | ||
9 | public static readonly IntermediateSymbolDefinition MsiPatchSequence = new IntermediateSymbolDefinition( | ||
10 | SymbolDefinitionType.MsiPatchSequence, | ||
11 | new[] | ||
12 | { | ||
13 | new IntermediateFieldDefinition(nameof(MsiPatchSequenceSymbolFields.PatchFamily), IntermediateFieldType.String), | ||
14 | new IntermediateFieldDefinition(nameof(MsiPatchSequenceSymbolFields.ProductCode), IntermediateFieldType.String), | ||
15 | new IntermediateFieldDefinition(nameof(MsiPatchSequenceSymbolFields.Sequence), IntermediateFieldType.String), | ||
16 | new IntermediateFieldDefinition(nameof(MsiPatchSequenceSymbolFields.Attributes), IntermediateFieldType.Number), | ||
17 | }, | ||
18 | typeof(MsiPatchSequenceSymbol)); | ||
19 | } | ||
20 | } | ||
21 | |||
22 | namespace WixToolset.Data.Symbols | ||
23 | { | ||
24 | public enum MsiPatchSequenceSymbolFields | ||
25 | { | ||
26 | PatchFamily, | ||
27 | ProductCode, | ||
28 | Sequence, | ||
29 | Attributes, | ||
30 | } | ||
31 | |||
32 | public class MsiPatchSequenceSymbol : IntermediateSymbol | ||
33 | { | ||
34 | public MsiPatchSequenceSymbol() : base(SymbolDefinitions.MsiPatchSequence, null, null) | ||
35 | { | ||
36 | } | ||
37 | |||
38 | public MsiPatchSequenceSymbol(SourceLineNumber sourceLineNumber, Identifier id = null) : base(SymbolDefinitions.MsiPatchSequence, sourceLineNumber, id) | ||
39 | { | ||
40 | } | ||
41 | |||
42 | public IntermediateField this[MsiPatchSequenceSymbolFields index] => this.Fields[(int)index]; | ||
43 | |||
44 | public string PatchFamily | ||
45 | { | ||
46 | get => (string)this.Fields[(int)MsiPatchSequenceSymbolFields.PatchFamily]; | ||
47 | set => this.Set((int)MsiPatchSequenceSymbolFields.PatchFamily, value); | ||
48 | } | ||
49 | |||
50 | public string ProductCode | ||
51 | { | ||
52 | get => (string)this.Fields[(int)MsiPatchSequenceSymbolFields.ProductCode]; | ||
53 | set => this.Set((int)MsiPatchSequenceSymbolFields.ProductCode, value); | ||
54 | } | ||
55 | |||
56 | public string Sequence | ||
57 | { | ||
58 | get => (string)this.Fields[(int)MsiPatchSequenceSymbolFields.Sequence]; | ||
59 | set => this.Set((int)MsiPatchSequenceSymbolFields.Sequence, value); | ||
60 | } | ||
61 | |||
62 | public int? Attributes | ||
63 | { | ||
64 | get => (int?)this.Fields[(int)MsiPatchSequenceSymbolFields.Attributes]; | ||
65 | set => this.Set((int)MsiPatchSequenceSymbolFields.Attributes, value); | ||
66 | } | ||
67 | } | ||
68 | } \ No newline at end of file | ||
diff --git a/src/api/wix/WixToolset.Data/Symbols/MsiServiceConfigFailureActionsSymbol.cs b/src/api/wix/WixToolset.Data/Symbols/MsiServiceConfigFailureActionsSymbol.cs new file mode 100644 index 00000000..92ca4059 --- /dev/null +++ b/src/api/wix/WixToolset.Data/Symbols/MsiServiceConfigFailureActionsSymbol.cs | |||
@@ -0,0 +1,116 @@ | |||
1 | // Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. | ||
2 | |||
3 | namespace WixToolset.Data | ||
4 | { | ||
5 | using WixToolset.Data.Symbols; | ||
6 | |||
7 | public static partial class SymbolDefinitions | ||
8 | { | ||
9 | public static readonly IntermediateSymbolDefinition MsiServiceConfigFailureActions = new IntermediateSymbolDefinition( | ||
10 | SymbolDefinitionType.MsiServiceConfigFailureActions, | ||
11 | new[] | ||
12 | { | ||
13 | new IntermediateFieldDefinition(nameof(MsiServiceConfigFailureActionsSymbolFields.Name), IntermediateFieldType.String), | ||
14 | new IntermediateFieldDefinition(nameof(MsiServiceConfigFailureActionsSymbolFields.OnInstall), IntermediateFieldType.Bool), | ||
15 | new IntermediateFieldDefinition(nameof(MsiServiceConfigFailureActionsSymbolFields.OnReinstall), IntermediateFieldType.Bool), | ||
16 | new IntermediateFieldDefinition(nameof(MsiServiceConfigFailureActionsSymbolFields.OnUninstall), IntermediateFieldType.Bool), | ||
17 | new IntermediateFieldDefinition(nameof(MsiServiceConfigFailureActionsSymbolFields.ResetPeriod), IntermediateFieldType.Number), | ||
18 | new IntermediateFieldDefinition(nameof(MsiServiceConfigFailureActionsSymbolFields.RebootMessage), IntermediateFieldType.String), | ||
19 | new IntermediateFieldDefinition(nameof(MsiServiceConfigFailureActionsSymbolFields.Command), IntermediateFieldType.String), | ||
20 | new IntermediateFieldDefinition(nameof(MsiServiceConfigFailureActionsSymbolFields.Actions), IntermediateFieldType.String), | ||
21 | new IntermediateFieldDefinition(nameof(MsiServiceConfigFailureActionsSymbolFields.DelayActions), IntermediateFieldType.String), | ||
22 | new IntermediateFieldDefinition(nameof(MsiServiceConfigFailureActionsSymbolFields.ComponentRef), IntermediateFieldType.String), | ||
23 | }, | ||
24 | typeof(MsiServiceConfigFailureActionsSymbol)); | ||
25 | } | ||
26 | } | ||
27 | |||
28 | namespace WixToolset.Data.Symbols | ||
29 | { | ||
30 | public enum MsiServiceConfigFailureActionsSymbolFields | ||
31 | { | ||
32 | Name, | ||
33 | OnInstall, | ||
34 | OnReinstall, | ||
35 | OnUninstall, | ||
36 | ResetPeriod, | ||
37 | RebootMessage, | ||
38 | Command, | ||
39 | Actions, | ||
40 | DelayActions, | ||
41 | ComponentRef, | ||
42 | } | ||
43 | |||
44 | public class MsiServiceConfigFailureActionsSymbol : IntermediateSymbol | ||
45 | { | ||
46 | public MsiServiceConfigFailureActionsSymbol() : base(SymbolDefinitions.MsiServiceConfigFailureActions, null, null) | ||
47 | { | ||
48 | } | ||
49 | |||
50 | public MsiServiceConfigFailureActionsSymbol(SourceLineNumber sourceLineNumber, Identifier id = null) : base(SymbolDefinitions.MsiServiceConfigFailureActions, sourceLineNumber, id) | ||
51 | { | ||
52 | } | ||
53 | |||
54 | public IntermediateField this[MsiServiceConfigFailureActionsSymbolFields index] => this.Fields[(int)index]; | ||
55 | |||
56 | public string Name | ||
57 | { | ||
58 | get => (string)this.Fields[(int)MsiServiceConfigFailureActionsSymbolFields.Name]; | ||
59 | set => this.Set((int)MsiServiceConfigFailureActionsSymbolFields.Name, value); | ||
60 | } | ||
61 | |||
62 | public bool OnInstall | ||
63 | { | ||
64 | get => this.Fields[(int)MsiServiceConfigFailureActionsSymbolFields.OnInstall].AsBool(); | ||
65 | set => this.Set((int)MsiServiceConfigFailureActionsSymbolFields.OnInstall, value); | ||
66 | } | ||
67 | |||
68 | public bool OnReinstall | ||
69 | { | ||
70 | get => this.Fields[(int)MsiServiceConfigFailureActionsSymbolFields.OnReinstall].AsBool(); | ||
71 | set => this.Set((int)MsiServiceConfigFailureActionsSymbolFields.OnReinstall, value); | ||
72 | } | ||
73 | |||
74 | public bool OnUninstall | ||
75 | { | ||
76 | get => this.Fields[(int)MsiServiceConfigFailureActionsSymbolFields.OnUninstall].AsBool(); | ||
77 | set => this.Set((int)MsiServiceConfigFailureActionsSymbolFields.OnUninstall, value); | ||
78 | } | ||
79 | |||
80 | public int? ResetPeriod | ||
81 | { | ||
82 | get => (int?)this.Fields[(int)MsiServiceConfigFailureActionsSymbolFields.ResetPeriod]; | ||
83 | set => this.Set((int)MsiServiceConfigFailureActionsSymbolFields.ResetPeriod, value); | ||
84 | } | ||
85 | |||
86 | public string RebootMessage | ||
87 | { | ||
88 | get => (string)this.Fields[(int)MsiServiceConfigFailureActionsSymbolFields.RebootMessage]; | ||
89 | set => this.Set((int)MsiServiceConfigFailureActionsSymbolFields.RebootMessage, value); | ||
90 | } | ||
91 | |||
92 | public string Command | ||
93 | { | ||
94 | get => (string)this.Fields[(int)MsiServiceConfigFailureActionsSymbolFields.Command]; | ||
95 | set => this.Set((int)MsiServiceConfigFailureActionsSymbolFields.Command, value); | ||
96 | } | ||
97 | |||
98 | public string Actions | ||
99 | { | ||
100 | get => (string)this.Fields[(int)MsiServiceConfigFailureActionsSymbolFields.Actions]; | ||
101 | set => this.Set((int)MsiServiceConfigFailureActionsSymbolFields.Actions, value); | ||
102 | } | ||
103 | |||
104 | public string DelayActions | ||
105 | { | ||
106 | get => (string)this.Fields[(int)MsiServiceConfigFailureActionsSymbolFields.DelayActions]; | ||
107 | set => this.Set((int)MsiServiceConfigFailureActionsSymbolFields.DelayActions, value); | ||
108 | } | ||
109 | |||
110 | public string ComponentRef | ||
111 | { | ||
112 | get => (string)this.Fields[(int)MsiServiceConfigFailureActionsSymbolFields.ComponentRef]; | ||
113 | set => this.Set((int)MsiServiceConfigFailureActionsSymbolFields.ComponentRef, value); | ||
114 | } | ||
115 | } | ||
116 | } \ No newline at end of file | ||
diff --git a/src/api/wix/WixToolset.Data/Symbols/MsiServiceConfigSymbol.cs b/src/api/wix/WixToolset.Data/Symbols/MsiServiceConfigSymbol.cs new file mode 100644 index 00000000..9ad72d1e --- /dev/null +++ b/src/api/wix/WixToolset.Data/Symbols/MsiServiceConfigSymbol.cs | |||
@@ -0,0 +1,101 @@ | |||
1 | // Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. | ||
2 | |||
3 | namespace WixToolset.Data | ||
4 | { | ||
5 | using WixToolset.Data.Symbols; | ||
6 | |||
7 | public static partial class SymbolDefinitions | ||
8 | { | ||
9 | public static readonly IntermediateSymbolDefinition MsiServiceConfig = new IntermediateSymbolDefinition( | ||
10 | SymbolDefinitionType.MsiServiceConfig, | ||
11 | new[] | ||
12 | { | ||
13 | new IntermediateFieldDefinition(nameof(MsiServiceConfigSymbolFields.Name), IntermediateFieldType.String), | ||
14 | new IntermediateFieldDefinition(nameof(MsiServiceConfigFailureActionsSymbolFields.OnInstall), IntermediateFieldType.Bool), | ||
15 | new IntermediateFieldDefinition(nameof(MsiServiceConfigFailureActionsSymbolFields.OnReinstall), IntermediateFieldType.Bool), | ||
16 | new IntermediateFieldDefinition(nameof(MsiServiceConfigFailureActionsSymbolFields.OnUninstall), IntermediateFieldType.Bool), | ||
17 | new IntermediateFieldDefinition(nameof(MsiServiceConfigSymbolFields.ConfigType), IntermediateFieldType.Number), | ||
18 | new IntermediateFieldDefinition(nameof(MsiServiceConfigSymbolFields.Argument), IntermediateFieldType.String), | ||
19 | new IntermediateFieldDefinition(nameof(MsiServiceConfigSymbolFields.ComponentRef), IntermediateFieldType.String), | ||
20 | }, | ||
21 | typeof(MsiServiceConfigSymbol)); | ||
22 | } | ||
23 | } | ||
24 | |||
25 | namespace WixToolset.Data.Symbols | ||
26 | { | ||
27 | public enum MsiServiceConfigSymbolFields | ||
28 | { | ||
29 | Name, | ||
30 | OnInstall, | ||
31 | OnReinstall, | ||
32 | OnUninstall, | ||
33 | ConfigType, | ||
34 | Argument, | ||
35 | ComponentRef, | ||
36 | } | ||
37 | |||
38 | public enum MsiServiceConfigType | ||
39 | { | ||
40 | DelayedAutoStart = 3, | ||
41 | FailureActionsFlag, | ||
42 | ServiceSidInfo, | ||
43 | RequiredPrivilegesInfo, | ||
44 | PreshutdownInfo, | ||
45 | } | ||
46 | |||
47 | public class MsiServiceConfigSymbol : IntermediateSymbol | ||
48 | { | ||
49 | public MsiServiceConfigSymbol() : base(SymbolDefinitions.MsiServiceConfig, null, null) | ||
50 | { | ||
51 | } | ||
52 | |||
53 | public MsiServiceConfigSymbol(SourceLineNumber sourceLineNumber, Identifier id = null) : base(SymbolDefinitions.MsiServiceConfig, sourceLineNumber, id) | ||
54 | { | ||
55 | } | ||
56 | |||
57 | public IntermediateField this[MsiServiceConfigSymbolFields index] => this.Fields[(int)index]; | ||
58 | |||
59 | public string Name | ||
60 | { | ||
61 | get => (string)this.Fields[(int)MsiServiceConfigSymbolFields.Name]; | ||
62 | set => this.Set((int)MsiServiceConfigSymbolFields.Name, value); | ||
63 | } | ||
64 | |||
65 | public bool OnInstall | ||
66 | { | ||
67 | get => this.Fields[(int)MsiServiceConfigSymbolFields.OnInstall].AsBool(); | ||
68 | set => this.Set((int)MsiServiceConfigSymbolFields.OnInstall, value); | ||
69 | } | ||
70 | |||
71 | public bool OnReinstall | ||
72 | { | ||
73 | get => this.Fields[(int)MsiServiceConfigSymbolFields.OnReinstall].AsBool(); | ||
74 | set => this.Set((int)MsiServiceConfigSymbolFields.OnReinstall, value); | ||
75 | } | ||
76 | |||
77 | public bool OnUninstall | ||
78 | { | ||
79 | get => this.Fields[(int)MsiServiceConfigSymbolFields.OnUninstall].AsBool(); | ||
80 | set => this.Set((int)MsiServiceConfigSymbolFields.OnUninstall, value); | ||
81 | } | ||
82 | |||
83 | public MsiServiceConfigType ConfigType | ||
84 | { | ||
85 | get => (MsiServiceConfigType)this.Fields[(int)MsiServiceConfigSymbolFields.ConfigType].AsNumber(); | ||
86 | set => this.Set((int)MsiServiceConfigSymbolFields.ConfigType, (int)value); | ||
87 | } | ||
88 | |||
89 | public string Argument | ||
90 | { | ||
91 | get => (string)this.Fields[(int)MsiServiceConfigSymbolFields.Argument]; | ||
92 | set => this.Set((int)MsiServiceConfigSymbolFields.Argument, value); | ||
93 | } | ||
94 | |||
95 | public string ComponentRef | ||
96 | { | ||
97 | get => (string)this.Fields[(int)MsiServiceConfigSymbolFields.ComponentRef]; | ||
98 | set => this.Set((int)MsiServiceConfigSymbolFields.ComponentRef, value); | ||
99 | } | ||
100 | } | ||
101 | } \ No newline at end of file | ||
diff --git a/src/api/wix/WixToolset.Data/Symbols/MsiShortcutPropertySymbol.cs b/src/api/wix/WixToolset.Data/Symbols/MsiShortcutPropertySymbol.cs new file mode 100644 index 00000000..5d5a46e5 --- /dev/null +++ b/src/api/wix/WixToolset.Data/Symbols/MsiShortcutPropertySymbol.cs | |||
@@ -0,0 +1,60 @@ | |||
1 | // Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. | ||
2 | |||
3 | namespace WixToolset.Data | ||
4 | { | ||
5 | using WixToolset.Data.Symbols; | ||
6 | |||
7 | public static partial class SymbolDefinitions | ||
8 | { | ||
9 | public static readonly IntermediateSymbolDefinition MsiShortcutProperty = new IntermediateSymbolDefinition( | ||
10 | SymbolDefinitionType.MsiShortcutProperty, | ||
11 | new[] | ||
12 | { | ||
13 | new IntermediateFieldDefinition(nameof(MsiShortcutPropertySymbolFields.ShortcutRef), IntermediateFieldType.String), | ||
14 | new IntermediateFieldDefinition(nameof(MsiShortcutPropertySymbolFields.PropertyKey), IntermediateFieldType.String), | ||
15 | new IntermediateFieldDefinition(nameof(MsiShortcutPropertySymbolFields.PropVariantValue), IntermediateFieldType.String), | ||
16 | }, | ||
17 | typeof(MsiShortcutPropertySymbol)); | ||
18 | } | ||
19 | } | ||
20 | |||
21 | namespace WixToolset.Data.Symbols | ||
22 | { | ||
23 | public enum MsiShortcutPropertySymbolFields | ||
24 | { | ||
25 | ShortcutRef, | ||
26 | PropertyKey, | ||
27 | PropVariantValue, | ||
28 | } | ||
29 | |||
30 | public class MsiShortcutPropertySymbol : IntermediateSymbol | ||
31 | { | ||
32 | public MsiShortcutPropertySymbol() : base(SymbolDefinitions.MsiShortcutProperty, null, null) | ||
33 | { | ||
34 | } | ||
35 | |||
36 | public MsiShortcutPropertySymbol(SourceLineNumber sourceLineNumber, Identifier id = null) : base(SymbolDefinitions.MsiShortcutProperty, sourceLineNumber, id) | ||
37 | { | ||
38 | } | ||
39 | |||
40 | public IntermediateField this[MsiShortcutPropertySymbolFields index] => this.Fields[(int)index]; | ||
41 | |||
42 | public string ShortcutRef | ||
43 | { | ||
44 | get => (string)this.Fields[(int)MsiShortcutPropertySymbolFields.ShortcutRef]; | ||
45 | set => this.Set((int)MsiShortcutPropertySymbolFields.ShortcutRef, value); | ||
46 | } | ||
47 | |||
48 | public string PropertyKey | ||
49 | { | ||
50 | get => (string)this.Fields[(int)MsiShortcutPropertySymbolFields.PropertyKey]; | ||
51 | set => this.Set((int)MsiShortcutPropertySymbolFields.PropertyKey, value); | ||
52 | } | ||
53 | |||
54 | public string PropVariantValue | ||
55 | { | ||
56 | get => (string)this.Fields[(int)MsiShortcutPropertySymbolFields.PropVariantValue]; | ||
57 | set => this.Set((int)MsiShortcutPropertySymbolFields.PropVariantValue, value); | ||
58 | } | ||
59 | } | ||
60 | } \ No newline at end of file | ||
diff --git a/src/api/wix/WixToolset.Data/Symbols/ODBCAttributeSymbol.cs b/src/api/wix/WixToolset.Data/Symbols/ODBCAttributeSymbol.cs new file mode 100644 index 00000000..45ca6ed8 --- /dev/null +++ b/src/api/wix/WixToolset.Data/Symbols/ODBCAttributeSymbol.cs | |||
@@ -0,0 +1,60 @@ | |||
1 | // Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. | ||
2 | |||
3 | namespace WixToolset.Data | ||
4 | { | ||
5 | using WixToolset.Data.Symbols; | ||
6 | |||
7 | public static partial class SymbolDefinitions | ||
8 | { | ||
9 | public static readonly IntermediateSymbolDefinition ODBCAttribute = new IntermediateSymbolDefinition( | ||
10 | SymbolDefinitionType.ODBCAttribute, | ||
11 | new[] | ||
12 | { | ||
13 | new IntermediateFieldDefinition(nameof(ODBCAttributeSymbolFields.DriverRef), IntermediateFieldType.String), | ||
14 | new IntermediateFieldDefinition(nameof(ODBCAttributeSymbolFields.Attribute), IntermediateFieldType.String), | ||
15 | new IntermediateFieldDefinition(nameof(ODBCAttributeSymbolFields.Value), IntermediateFieldType.String), | ||
16 | }, | ||
17 | typeof(ODBCAttributeSymbol)); | ||
18 | } | ||
19 | } | ||
20 | |||
21 | namespace WixToolset.Data.Symbols | ||
22 | { | ||
23 | public enum ODBCAttributeSymbolFields | ||
24 | { | ||
25 | DriverRef, | ||
26 | Attribute, | ||
27 | Value, | ||
28 | } | ||
29 | |||
30 | public class ODBCAttributeSymbol : IntermediateSymbol | ||
31 | { | ||
32 | public ODBCAttributeSymbol() : base(SymbolDefinitions.ODBCAttribute, null, null) | ||
33 | { | ||
34 | } | ||
35 | |||
36 | public ODBCAttributeSymbol(SourceLineNumber sourceLineNumber, Identifier id = null) : base(SymbolDefinitions.ODBCAttribute, sourceLineNumber, id) | ||
37 | { | ||
38 | } | ||
39 | |||
40 | public IntermediateField this[ODBCAttributeSymbolFields index] => this.Fields[(int)index]; | ||
41 | |||
42 | public string DriverRef | ||
43 | { | ||
44 | get => (string)this.Fields[(int)ODBCAttributeSymbolFields.DriverRef]; | ||
45 | set => this.Set((int)ODBCAttributeSymbolFields.DriverRef, value); | ||
46 | } | ||
47 | |||
48 | public string Attribute | ||
49 | { | ||
50 | get => (string)this.Fields[(int)ODBCAttributeSymbolFields.Attribute]; | ||
51 | set => this.Set((int)ODBCAttributeSymbolFields.Attribute, value); | ||
52 | } | ||
53 | |||
54 | public string Value | ||
55 | { | ||
56 | get => (string)this.Fields[(int)ODBCAttributeSymbolFields.Value]; | ||
57 | set => this.Set((int)ODBCAttributeSymbolFields.Value, value); | ||
58 | } | ||
59 | } | ||
60 | } \ No newline at end of file | ||
diff --git a/src/api/wix/WixToolset.Data/Symbols/ODBCDataSourceSymbol.cs b/src/api/wix/WixToolset.Data/Symbols/ODBCDataSourceSymbol.cs new file mode 100644 index 00000000..6af140bd --- /dev/null +++ b/src/api/wix/WixToolset.Data/Symbols/ODBCDataSourceSymbol.cs | |||
@@ -0,0 +1,68 @@ | |||
1 | // Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. | ||
2 | |||
3 | namespace WixToolset.Data | ||
4 | { | ||
5 | using WixToolset.Data.Symbols; | ||
6 | |||
7 | public static partial class SymbolDefinitions | ||
8 | { | ||
9 | public static readonly IntermediateSymbolDefinition ODBCDataSource = new IntermediateSymbolDefinition( | ||
10 | SymbolDefinitionType.ODBCDataSource, | ||
11 | new[] | ||
12 | { | ||
13 | new IntermediateFieldDefinition(nameof(ODBCDataSourceSymbolFields.ComponentRef), IntermediateFieldType.String), | ||
14 | new IntermediateFieldDefinition(nameof(ODBCDataSourceSymbolFields.Description), IntermediateFieldType.String), | ||
15 | new IntermediateFieldDefinition(nameof(ODBCDataSourceSymbolFields.DriverDescription), IntermediateFieldType.String), | ||
16 | new IntermediateFieldDefinition(nameof(ODBCDataSourceSymbolFields.Registration), IntermediateFieldType.Number), | ||
17 | }, | ||
18 | typeof(ODBCDataSourceSymbol)); | ||
19 | } | ||
20 | } | ||
21 | |||
22 | namespace WixToolset.Data.Symbols | ||
23 | { | ||
24 | public enum ODBCDataSourceSymbolFields | ||
25 | { | ||
26 | ComponentRef, | ||
27 | Description, | ||
28 | DriverDescription, | ||
29 | Registration, | ||
30 | } | ||
31 | |||
32 | public class ODBCDataSourceSymbol : IntermediateSymbol | ||
33 | { | ||
34 | public ODBCDataSourceSymbol() : base(SymbolDefinitions.ODBCDataSource, null, null) | ||
35 | { | ||
36 | } | ||
37 | |||
38 | public ODBCDataSourceSymbol(SourceLineNumber sourceLineNumber, Identifier id = null) : base(SymbolDefinitions.ODBCDataSource, sourceLineNumber, id) | ||
39 | { | ||
40 | } | ||
41 | |||
42 | public IntermediateField this[ODBCDataSourceSymbolFields index] => this.Fields[(int)index]; | ||
43 | |||
44 | public string ComponentRef | ||
45 | { | ||
46 | get => (string)this.Fields[(int)ODBCDataSourceSymbolFields.ComponentRef]; | ||
47 | set => this.Set((int)ODBCDataSourceSymbolFields.ComponentRef, value); | ||
48 | } | ||
49 | |||
50 | public string Description | ||
51 | { | ||
52 | get => (string)this.Fields[(int)ODBCDataSourceSymbolFields.Description]; | ||
53 | set => this.Set((int)ODBCDataSourceSymbolFields.Description, value); | ||
54 | } | ||
55 | |||
56 | public string DriverDescription | ||
57 | { | ||
58 | get => (string)this.Fields[(int)ODBCDataSourceSymbolFields.DriverDescription]; | ||
59 | set => this.Set((int)ODBCDataSourceSymbolFields.DriverDescription, value); | ||
60 | } | ||
61 | |||
62 | public int Registration | ||
63 | { | ||
64 | get => (int)this.Fields[(int)ODBCDataSourceSymbolFields.Registration]; | ||
65 | set => this.Set((int)ODBCDataSourceSymbolFields.Registration, value); | ||
66 | } | ||
67 | } | ||
68 | } | ||
diff --git a/src/api/wix/WixToolset.Data/Symbols/ODBCDriverSymbol.cs b/src/api/wix/WixToolset.Data/Symbols/ODBCDriverSymbol.cs new file mode 100644 index 00000000..b31cc4cb --- /dev/null +++ b/src/api/wix/WixToolset.Data/Symbols/ODBCDriverSymbol.cs | |||
@@ -0,0 +1,68 @@ | |||
1 | // Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. | ||
2 | |||
3 | namespace WixToolset.Data | ||
4 | { | ||
5 | using WixToolset.Data.Symbols; | ||
6 | |||
7 | public static partial class SymbolDefinitions | ||
8 | { | ||
9 | public static readonly IntermediateSymbolDefinition ODBCDriver = new IntermediateSymbolDefinition( | ||
10 | SymbolDefinitionType.ODBCDriver, | ||
11 | new[] | ||
12 | { | ||
13 | new IntermediateFieldDefinition(nameof(ODBCDriverSymbolFields.ComponentRef), IntermediateFieldType.String), | ||
14 | new IntermediateFieldDefinition(nameof(ODBCDriverSymbolFields.Description), IntermediateFieldType.String), | ||
15 | new IntermediateFieldDefinition(nameof(ODBCDriverSymbolFields.FileRef), IntermediateFieldType.String), | ||
16 | new IntermediateFieldDefinition(nameof(ODBCDriverSymbolFields.SetupFileRef), IntermediateFieldType.String), | ||
17 | }, | ||
18 | typeof(ODBCDriverSymbol)); | ||
19 | } | ||
20 | } | ||
21 | |||
22 | namespace WixToolset.Data.Symbols | ||
23 | { | ||
24 | public enum ODBCDriverSymbolFields | ||
25 | { | ||
26 | ComponentRef, | ||
27 | Description, | ||
28 | FileRef, | ||
29 | SetupFileRef, | ||
30 | } | ||
31 | |||
32 | public class ODBCDriverSymbol : IntermediateSymbol | ||
33 | { | ||
34 | public ODBCDriverSymbol() : base(SymbolDefinitions.ODBCDriver, null, null) | ||
35 | { | ||
36 | } | ||
37 | |||
38 | public ODBCDriverSymbol(SourceLineNumber sourceLineNumber, Identifier id = null) : base(SymbolDefinitions.ODBCDriver, sourceLineNumber, id) | ||
39 | { | ||
40 | } | ||
41 | |||
42 | public IntermediateField this[ODBCDriverSymbolFields index] => this.Fields[(int)index]; | ||
43 | |||
44 | public string ComponentRef | ||
45 | { | ||
46 | get => (string)this.Fields[(int)ODBCDriverSymbolFields.ComponentRef]; | ||
47 | set => this.Set((int)ODBCDriverSymbolFields.ComponentRef, value); | ||
48 | } | ||
49 | |||
50 | public string Description | ||
51 | { | ||
52 | get => (string)this.Fields[(int)ODBCDriverSymbolFields.Description]; | ||
53 | set => this.Set((int)ODBCDriverSymbolFields.Description, value); | ||
54 | } | ||
55 | |||
56 | public string FileRef | ||
57 | { | ||
58 | get => (string)this.Fields[(int)ODBCDriverSymbolFields.FileRef]; | ||
59 | set => this.Set((int)ODBCDriverSymbolFields.FileRef, value); | ||
60 | } | ||
61 | |||
62 | public string SetupFileRef | ||
63 | { | ||
64 | get => (string)this.Fields[(int)ODBCDriverSymbolFields.SetupFileRef]; | ||
65 | set => this.Set((int)ODBCDriverSymbolFields.SetupFileRef, value); | ||
66 | } | ||
67 | } | ||
68 | } | ||
diff --git a/src/api/wix/WixToolset.Data/Symbols/ODBCSourceAttributeSymbol.cs b/src/api/wix/WixToolset.Data/Symbols/ODBCSourceAttributeSymbol.cs new file mode 100644 index 00000000..2e25a5f7 --- /dev/null +++ b/src/api/wix/WixToolset.Data/Symbols/ODBCSourceAttributeSymbol.cs | |||
@@ -0,0 +1,60 @@ | |||
1 | // Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. | ||
2 | |||
3 | namespace WixToolset.Data | ||
4 | { | ||
5 | using WixToolset.Data.Symbols; | ||
6 | |||
7 | public static partial class SymbolDefinitions | ||
8 | { | ||
9 | public static readonly IntermediateSymbolDefinition ODBCSourceAttribute = new IntermediateSymbolDefinition( | ||
10 | SymbolDefinitionType.ODBCSourceAttribute, | ||
11 | new[] | ||
12 | { | ||
13 | new IntermediateFieldDefinition(nameof(ODBCSourceAttributeSymbolFields.DataSourceRef), IntermediateFieldType.String), | ||
14 | new IntermediateFieldDefinition(nameof(ODBCSourceAttributeSymbolFields.Attribute), IntermediateFieldType.String), | ||
15 | new IntermediateFieldDefinition(nameof(ODBCSourceAttributeSymbolFields.Value), IntermediateFieldType.String), | ||
16 | }, | ||
17 | typeof(ODBCSourceAttributeSymbol)); | ||
18 | } | ||
19 | } | ||
20 | |||
21 | namespace WixToolset.Data.Symbols | ||
22 | { | ||
23 | public enum ODBCSourceAttributeSymbolFields | ||
24 | { | ||
25 | DataSourceRef, | ||
26 | Attribute, | ||
27 | Value, | ||
28 | } | ||
29 | |||
30 | public class ODBCSourceAttributeSymbol : IntermediateSymbol | ||
31 | { | ||
32 | public ODBCSourceAttributeSymbol() : base(SymbolDefinitions.ODBCSourceAttribute, null, null) | ||
33 | { | ||
34 | } | ||
35 | |||
36 | public ODBCSourceAttributeSymbol(SourceLineNumber sourceLineNumber, Identifier id = null) : base(SymbolDefinitions.ODBCSourceAttribute, sourceLineNumber, id) | ||
37 | { | ||
38 | } | ||
39 | |||
40 | public IntermediateField this[ODBCSourceAttributeSymbolFields index] => this.Fields[(int)index]; | ||
41 | |||
42 | public string DataSourceRef | ||
43 | { | ||
44 | get => (string)this.Fields[(int)ODBCSourceAttributeSymbolFields.DataSourceRef]; | ||
45 | set => this.Set((int)ODBCSourceAttributeSymbolFields.DataSourceRef, value); | ||
46 | } | ||
47 | |||
48 | public string Attribute | ||
49 | { | ||
50 | get => (string)this.Fields[(int)ODBCSourceAttributeSymbolFields.Attribute]; | ||
51 | set => this.Set((int)ODBCSourceAttributeSymbolFields.Attribute, value); | ||
52 | } | ||
53 | |||
54 | public string Value | ||
55 | { | ||
56 | get => (string)this.Fields[(int)ODBCSourceAttributeSymbolFields.Value]; | ||
57 | set => this.Set((int)ODBCSourceAttributeSymbolFields.Value, value); | ||
58 | } | ||
59 | } | ||
60 | } \ No newline at end of file | ||
diff --git a/src/api/wix/WixToolset.Data/Symbols/ODBCTranslatorSymbol.cs b/src/api/wix/WixToolset.Data/Symbols/ODBCTranslatorSymbol.cs new file mode 100644 index 00000000..c444b834 --- /dev/null +++ b/src/api/wix/WixToolset.Data/Symbols/ODBCTranslatorSymbol.cs | |||
@@ -0,0 +1,68 @@ | |||
1 | // Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. | ||
2 | |||
3 | namespace WixToolset.Data | ||
4 | { | ||
5 | using WixToolset.Data.Symbols; | ||
6 | |||
7 | public static partial class SymbolDefinitions | ||
8 | { | ||
9 | public static readonly IntermediateSymbolDefinition ODBCTranslator = new IntermediateSymbolDefinition( | ||
10 | SymbolDefinitionType.ODBCTranslator, | ||
11 | new[] | ||
12 | { | ||
13 | new IntermediateFieldDefinition(nameof(ODBCTranslatorSymbolFields.ComponentRef), IntermediateFieldType.String), | ||
14 | new IntermediateFieldDefinition(nameof(ODBCTranslatorSymbolFields.Description), IntermediateFieldType.String), | ||
15 | new IntermediateFieldDefinition(nameof(ODBCTranslatorSymbolFields.FileRef), IntermediateFieldType.String), | ||
16 | new IntermediateFieldDefinition(nameof(ODBCTranslatorSymbolFields.SetupFileRef), IntermediateFieldType.String), | ||
17 | }, | ||
18 | typeof(ODBCTranslatorSymbol)); | ||
19 | } | ||
20 | } | ||
21 | |||
22 | namespace WixToolset.Data.Symbols | ||
23 | { | ||
24 | public enum ODBCTranslatorSymbolFields | ||
25 | { | ||
26 | ComponentRef, | ||
27 | Description, | ||
28 | FileRef, | ||
29 | SetupFileRef, | ||
30 | } | ||
31 | |||
32 | public class ODBCTranslatorSymbol : IntermediateSymbol | ||
33 | { | ||
34 | public ODBCTranslatorSymbol() : base(SymbolDefinitions.ODBCTranslator, null, null) | ||
35 | { | ||
36 | } | ||
37 | |||
38 | public ODBCTranslatorSymbol(SourceLineNumber sourceLineNumber, Identifier id = null) : base(SymbolDefinitions.ODBCTranslator, sourceLineNumber, id) | ||
39 | { | ||
40 | } | ||
41 | |||
42 | public IntermediateField this[ODBCTranslatorSymbolFields index] => this.Fields[(int)index]; | ||
43 | |||
44 | public string ComponentRef | ||
45 | { | ||
46 | get => (string)this.Fields[(int)ODBCTranslatorSymbolFields.ComponentRef]; | ||
47 | set => this.Set((int)ODBCTranslatorSymbolFields.ComponentRef, value); | ||
48 | } | ||
49 | |||
50 | public string Description | ||
51 | { | ||
52 | get => (string)this.Fields[(int)ODBCTranslatorSymbolFields.Description]; | ||
53 | set => this.Set((int)ODBCTranslatorSymbolFields.Description, value); | ||
54 | } | ||
55 | |||
56 | public string FileRef | ||
57 | { | ||
58 | get => (string)this.Fields[(int)ODBCTranslatorSymbolFields.FileRef]; | ||
59 | set => this.Set((int)ODBCTranslatorSymbolFields.FileRef, value); | ||
60 | } | ||
61 | |||
62 | public string SetupFileRef | ||
63 | { | ||
64 | get => (string)this.Fields[(int)ODBCTranslatorSymbolFields.SetupFileRef]; | ||
65 | set => this.Set((int)ODBCTranslatorSymbolFields.SetupFileRef, value); | ||
66 | } | ||
67 | } | ||
68 | } | ||
diff --git a/src/api/wix/WixToolset.Data/Symbols/PatchMetadataSymbol.cs b/src/api/wix/WixToolset.Data/Symbols/PatchMetadataSymbol.cs new file mode 100644 index 00000000..201b8444 --- /dev/null +++ b/src/api/wix/WixToolset.Data/Symbols/PatchMetadataSymbol.cs | |||
@@ -0,0 +1,89 @@ | |||
1 | // Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. | ||
2 | |||
3 | namespace WixToolset.Data | ||
4 | { | ||
5 | using WixToolset.Data.Symbols; | ||
6 | |||
7 | public static partial class SymbolDefinitions | ||
8 | { | ||
9 | public static readonly IntermediateSymbolDefinition PatchMetadata = new IntermediateSymbolDefinition( | ||
10 | SymbolDefinitionType.PatchMetadata, | ||
11 | new[] | ||
12 | { | ||
13 | new IntermediateFieldDefinition(nameof(PatchMetadataSymbolFields.Company), IntermediateFieldType.String), | ||
14 | new IntermediateFieldDefinition(nameof(PatchMetadataSymbolFields.Property), IntermediateFieldType.String), | ||
15 | new IntermediateFieldDefinition(nameof(PatchMetadataSymbolFields.Value), IntermediateFieldType.String), | ||
16 | }, | ||
17 | typeof(PatchMetadataSymbol)); | ||
18 | } | ||
19 | } | ||
20 | |||
21 | namespace WixToolset.Data.Symbols | ||
22 | { | ||
23 | using System; | ||
24 | |||
25 | public enum PatchMetadataSymbolFields | ||
26 | { | ||
27 | Company, | ||
28 | Property, | ||
29 | Value, | ||
30 | } | ||
31 | |||
32 | /// <summary> | ||
33 | /// Values for the OptimizeCA MsiPatchMetdata property, which indicates whether custom actions can be skipped when applying the patch. | ||
34 | /// </summary> | ||
35 | [Flags] | ||
36 | public enum OptimizeCAFlags | ||
37 | { | ||
38 | /// <summary> | ||
39 | /// No custom actions are skipped. | ||
40 | /// </summary> | ||
41 | None = 0, | ||
42 | |||
43 | /// <summary> | ||
44 | /// Skip property (type 51) and directory (type 35) assignment custom actions. | ||
45 | /// </summary> | ||
46 | SkipAssignment = 1, | ||
47 | |||
48 | /// <summary> | ||
49 | /// Skip immediate custom actions that are not property or directory assignment custom actions. | ||
50 | /// </summary> | ||
51 | SkipImmediate = 2, | ||
52 | |||
53 | /// <summary> | ||
54 | /// Skip custom actions that run within the script. | ||
55 | /// </summary> | ||
56 | SkipDeferred = 4 | ||
57 | } | ||
58 | |||
59 | public class PatchMetadataSymbol : IntermediateSymbol | ||
60 | { | ||
61 | public PatchMetadataSymbol() : base(SymbolDefinitions.PatchMetadata, null, null) | ||
62 | { | ||
63 | } | ||
64 | |||
65 | public PatchMetadataSymbol(SourceLineNumber sourceLineNumber, Identifier id = null) : base(SymbolDefinitions.PatchMetadata, sourceLineNumber, id) | ||
66 | { | ||
67 | } | ||
68 | |||
69 | public IntermediateField this[PatchMetadataSymbolFields index] => this.Fields[(int)index]; | ||
70 | |||
71 | public string Company | ||
72 | { | ||
73 | get => (string)this.Fields[(int)PatchMetadataSymbolFields.Company]; | ||
74 | set => this.Set((int)PatchMetadataSymbolFields.Company, value); | ||
75 | } | ||
76 | |||
77 | public string Property | ||
78 | { | ||
79 | get => (string)this.Fields[(int)PatchMetadataSymbolFields.Property]; | ||
80 | set => this.Set((int)PatchMetadataSymbolFields.Property, value); | ||
81 | } | ||
82 | |||
83 | public string Value | ||
84 | { | ||
85 | get => (string)this.Fields[(int)PatchMetadataSymbolFields.Value]; | ||
86 | set => this.Set((int)PatchMetadataSymbolFields.Value, value); | ||
87 | } | ||
88 | } | ||
89 | } | ||
diff --git a/src/api/wix/WixToolset.Data/Symbols/PatchPackageSymbol.cs b/src/api/wix/WixToolset.Data/Symbols/PatchPackageSymbol.cs new file mode 100644 index 00000000..0efdfd25 --- /dev/null +++ b/src/api/wix/WixToolset.Data/Symbols/PatchPackageSymbol.cs | |||
@@ -0,0 +1,52 @@ | |||
1 | // Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. | ||
2 | |||
3 | namespace WixToolset.Data | ||
4 | { | ||
5 | using WixToolset.Data.Symbols; | ||
6 | |||
7 | public static partial class SymbolDefinitions | ||
8 | { | ||
9 | public static readonly IntermediateSymbolDefinition PatchPackage = new IntermediateSymbolDefinition( | ||
10 | SymbolDefinitionType.PatchPackage, | ||
11 | new[] | ||
12 | { | ||
13 | new IntermediateFieldDefinition(nameof(PatchPackageSymbolFields.PatchId), IntermediateFieldType.String), | ||
14 | new IntermediateFieldDefinition(nameof(PatchPackageSymbolFields.MediaDiskIdRef), IntermediateFieldType.Number), | ||
15 | }, | ||
16 | typeof(PatchPackageSymbol)); | ||
17 | } | ||
18 | } | ||
19 | |||
20 | namespace WixToolset.Data.Symbols | ||
21 | { | ||
22 | public enum PatchPackageSymbolFields | ||
23 | { | ||
24 | PatchId, | ||
25 | MediaDiskIdRef, | ||
26 | } | ||
27 | |||
28 | public class PatchPackageSymbol : IntermediateSymbol | ||
29 | { | ||
30 | public PatchPackageSymbol() : base(SymbolDefinitions.PatchPackage, null, null) | ||
31 | { | ||
32 | } | ||
33 | |||
34 | public PatchPackageSymbol(SourceLineNumber sourceLineNumber, Identifier id = null) : base(SymbolDefinitions.PatchPackage, sourceLineNumber, id) | ||
35 | { | ||
36 | } | ||
37 | |||
38 | public IntermediateField this[PatchPackageSymbolFields index] => this.Fields[(int)index]; | ||
39 | |||
40 | public string PatchId | ||
41 | { | ||
42 | get => (string)this.Fields[(int)PatchPackageSymbolFields.PatchId]; | ||
43 | set => this.Set((int)PatchPackageSymbolFields.PatchId, value); | ||
44 | } | ||
45 | |||
46 | public int MediaDiskIdRef | ||
47 | { | ||
48 | get => (int)this.Fields[(int)PatchPackageSymbolFields.MediaDiskIdRef]; | ||
49 | set => this.Set((int)PatchPackageSymbolFields.MediaDiskIdRef, value); | ||
50 | } | ||
51 | } | ||
52 | } \ No newline at end of file | ||
diff --git a/src/api/wix/WixToolset.Data/Symbols/PatchSequenceSymbol.cs b/src/api/wix/WixToolset.Data/Symbols/PatchSequenceSymbol.cs new file mode 100644 index 00000000..a4cbca61 --- /dev/null +++ b/src/api/wix/WixToolset.Data/Symbols/PatchSequenceSymbol.cs | |||
@@ -0,0 +1,68 @@ | |||
1 | // Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. | ||
2 | |||
3 | namespace WixToolset.Data | ||
4 | { | ||
5 | using WixToolset.Data.Symbols; | ||
6 | |||
7 | public static partial class SymbolDefinitions | ||
8 | { | ||
9 | public static readonly IntermediateSymbolDefinition PatchSequence = new IntermediateSymbolDefinition( | ||
10 | SymbolDefinitionType.PatchSequence, | ||
11 | new[] | ||
12 | { | ||
13 | new IntermediateFieldDefinition(nameof(PatchSequenceSymbolFields.PatchFamily), IntermediateFieldType.String), | ||
14 | new IntermediateFieldDefinition(nameof(PatchSequenceSymbolFields.Target), IntermediateFieldType.String), | ||
15 | new IntermediateFieldDefinition(nameof(PatchSequenceSymbolFields.Sequence), IntermediateFieldType.String), | ||
16 | new IntermediateFieldDefinition(nameof(PatchSequenceSymbolFields.Supersede), IntermediateFieldType.Number), | ||
17 | }, | ||
18 | typeof(PatchSequenceSymbol)); | ||
19 | } | ||
20 | } | ||
21 | |||
22 | namespace WixToolset.Data.Symbols | ||
23 | { | ||
24 | public enum PatchSequenceSymbolFields | ||
25 | { | ||
26 | PatchFamily, | ||
27 | Target, | ||
28 | Sequence, | ||
29 | Supersede, | ||
30 | } | ||
31 | |||
32 | public class PatchSequenceSymbol : IntermediateSymbol | ||
33 | { | ||
34 | public PatchSequenceSymbol() : base(SymbolDefinitions.PatchSequence, null, null) | ||
35 | { | ||
36 | } | ||
37 | |||
38 | public PatchSequenceSymbol(SourceLineNumber sourceLineNumber, Identifier id = null) : base(SymbolDefinitions.PatchSequence, sourceLineNumber, id) | ||
39 | { | ||
40 | } | ||
41 | |||
42 | public IntermediateField this[PatchSequenceSymbolFields index] => this.Fields[(int)index]; | ||
43 | |||
44 | public string PatchFamily | ||
45 | { | ||
46 | get => (string)this.Fields[(int)PatchSequenceSymbolFields.PatchFamily]; | ||
47 | set => this.Set((int)PatchSequenceSymbolFields.PatchFamily, value); | ||
48 | } | ||
49 | |||
50 | public string Target | ||
51 | { | ||
52 | get => (string)this.Fields[(int)PatchSequenceSymbolFields.Target]; | ||
53 | set => this.Set((int)PatchSequenceSymbolFields.Target, value); | ||
54 | } | ||
55 | |||
56 | public string Sequence | ||
57 | { | ||
58 | get => (string)this.Fields[(int)PatchSequenceSymbolFields.Sequence]; | ||
59 | set => this.Set((int)PatchSequenceSymbolFields.Sequence, value); | ||
60 | } | ||
61 | |||
62 | public int? Supersede | ||
63 | { | ||
64 | get => (int?)this.Fields[(int)PatchSequenceSymbolFields.Supersede]; | ||
65 | set => this.Set((int)PatchSequenceSymbolFields.Supersede, value); | ||
66 | } | ||
67 | } | ||
68 | } \ No newline at end of file | ||
diff --git a/src/api/wix/WixToolset.Data/Symbols/PatchSymbol.cs b/src/api/wix/WixToolset.Data/Symbols/PatchSymbol.cs new file mode 100644 index 00000000..31e68d76 --- /dev/null +++ b/src/api/wix/WixToolset.Data/Symbols/PatchSymbol.cs | |||
@@ -0,0 +1,84 @@ | |||
1 | // Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. | ||
2 | |||
3 | namespace WixToolset.Data | ||
4 | { | ||
5 | using WixToolset.Data.Symbols; | ||
6 | |||
7 | public static partial class SymbolDefinitions | ||
8 | { | ||
9 | public static readonly IntermediateSymbolDefinition Patch = new IntermediateSymbolDefinition( | ||
10 | SymbolDefinitionType.Patch, | ||
11 | new[] | ||
12 | { | ||
13 | new IntermediateFieldDefinition(nameof(PatchSymbolFields.FileRef), IntermediateFieldType.String), | ||
14 | new IntermediateFieldDefinition(nameof(PatchSymbolFields.Sequence), IntermediateFieldType.Number), | ||
15 | new IntermediateFieldDefinition(nameof(PatchSymbolFields.PatchSize), IntermediateFieldType.Number), | ||
16 | new IntermediateFieldDefinition(nameof(PatchSymbolFields.Attributes), IntermediateFieldType.Number), | ||
17 | new IntermediateFieldDefinition(nameof(PatchSymbolFields.Header), IntermediateFieldType.Path), | ||
18 | new IntermediateFieldDefinition(nameof(PatchSymbolFields.StreamRef), IntermediateFieldType.String), | ||
19 | }, | ||
20 | typeof(PatchSymbol)); | ||
21 | } | ||
22 | } | ||
23 | |||
24 | namespace WixToolset.Data.Symbols | ||
25 | { | ||
26 | public enum PatchSymbolFields | ||
27 | { | ||
28 | FileRef, | ||
29 | Sequence, | ||
30 | PatchSize, | ||
31 | Attributes, | ||
32 | Header, | ||
33 | StreamRef, | ||
34 | } | ||
35 | |||
36 | public class PatchSymbol : IntermediateSymbol | ||
37 | { | ||
38 | public PatchSymbol() : base(SymbolDefinitions.Patch, null, null) | ||
39 | { | ||
40 | } | ||
41 | |||
42 | public PatchSymbol(SourceLineNumber sourceLineNumber, Identifier id = null) : base(SymbolDefinitions.Patch, sourceLineNumber, id) | ||
43 | { | ||
44 | } | ||
45 | |||
46 | public IntermediateField this[PatchSymbolFields index] => this.Fields[(int)index]; | ||
47 | |||
48 | public string FileRef | ||
49 | { | ||
50 | get => (string)this.Fields[(int)PatchSymbolFields.FileRef]; | ||
51 | set => this.Set((int)PatchSymbolFields.FileRef, value); | ||
52 | } | ||
53 | |||
54 | public int Sequence | ||
55 | { | ||
56 | get => (int)this.Fields[(int)PatchSymbolFields.Sequence]; | ||
57 | set => this.Set((int)PatchSymbolFields.Sequence, value); | ||
58 | } | ||
59 | |||
60 | public int PatchSize | ||
61 | { | ||
62 | get => (int)this.Fields[(int)PatchSymbolFields.PatchSize]; | ||
63 | set => this.Set((int)PatchSymbolFields.PatchSize, value); | ||
64 | } | ||
65 | |||
66 | public int Attributes | ||
67 | { | ||
68 | get => (int)this.Fields[(int)PatchSymbolFields.Attributes]; | ||
69 | set => this.Set((int)PatchSymbolFields.Attributes, value); | ||
70 | } | ||
71 | |||
72 | public string Header | ||
73 | { | ||
74 | get => (string)this.Fields[(int)PatchSymbolFields.Header]; | ||
75 | set => this.Set((int)PatchSymbolFields.Header, value); | ||
76 | } | ||
77 | |||
78 | public string StreamRef | ||
79 | { | ||
80 | get => (string)this.Fields[(int)PatchSymbolFields.StreamRef]; | ||
81 | set => this.Set((int)PatchSymbolFields.StreamRef, value); | ||
82 | } | ||
83 | } | ||
84 | } \ No newline at end of file | ||
diff --git a/src/api/wix/WixToolset.Data/Symbols/ProgIdSymbol.cs b/src/api/wix/WixToolset.Data/Symbols/ProgIdSymbol.cs new file mode 100644 index 00000000..57ac758f --- /dev/null +++ b/src/api/wix/WixToolset.Data/Symbols/ProgIdSymbol.cs | |||
@@ -0,0 +1,84 @@ | |||
1 | // Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. | ||
2 | |||
3 | namespace WixToolset.Data | ||
4 | { | ||
5 | using WixToolset.Data.Symbols; | ||
6 | |||
7 | public static partial class SymbolDefinitions | ||
8 | { | ||
9 | public static readonly IntermediateSymbolDefinition ProgId = new IntermediateSymbolDefinition( | ||
10 | SymbolDefinitionType.ProgId, | ||
11 | new[] | ||
12 | { | ||
13 | new IntermediateFieldDefinition(nameof(ProgIdSymbolFields.ProgId), IntermediateFieldType.String), | ||
14 | new IntermediateFieldDefinition(nameof(ProgIdSymbolFields.ParentProgIdRef), IntermediateFieldType.String), | ||
15 | new IntermediateFieldDefinition(nameof(ProgIdSymbolFields.ClassRef), IntermediateFieldType.String), | ||
16 | new IntermediateFieldDefinition(nameof(ProgIdSymbolFields.Description), IntermediateFieldType.String), | ||
17 | new IntermediateFieldDefinition(nameof(ProgIdSymbolFields.IconRef), IntermediateFieldType.String), | ||
18 | new IntermediateFieldDefinition(nameof(ProgIdSymbolFields.IconIndex), IntermediateFieldType.Number), | ||
19 | }, | ||
20 | typeof(ProgIdSymbol)); | ||
21 | } | ||
22 | } | ||
23 | |||
24 | namespace WixToolset.Data.Symbols | ||
25 | { | ||
26 | public enum ProgIdSymbolFields | ||
27 | { | ||
28 | ProgId, | ||
29 | ParentProgIdRef, | ||
30 | ClassRef, | ||
31 | Description, | ||
32 | IconRef, | ||
33 | IconIndex, | ||
34 | } | ||
35 | |||
36 | public class ProgIdSymbol : IntermediateSymbol | ||
37 | { | ||
38 | public ProgIdSymbol() : base(SymbolDefinitions.ProgId, null, null) | ||
39 | { | ||
40 | } | ||
41 | |||
42 | public ProgIdSymbol(SourceLineNumber sourceLineNumber, Identifier id = null) : base(SymbolDefinitions.ProgId, sourceLineNumber, id) | ||
43 | { | ||
44 | } | ||
45 | |||
46 | public IntermediateField this[ProgIdSymbolFields index] => this.Fields[(int)index]; | ||
47 | |||
48 | public string ProgId | ||
49 | { | ||
50 | get => (string)this.Fields[(int)ProgIdSymbolFields.ProgId]; | ||
51 | set => this.Set((int)ProgIdSymbolFields.ProgId, value); | ||
52 | } | ||
53 | |||
54 | public string ParentProgIdRef | ||
55 | { | ||
56 | get => (string)this.Fields[(int)ProgIdSymbolFields.ParentProgIdRef]; | ||
57 | set => this.Set((int)ProgIdSymbolFields.ParentProgIdRef, value); | ||
58 | } | ||
59 | |||
60 | public string ClassRef | ||
61 | { | ||
62 | get => (string)this.Fields[(int)ProgIdSymbolFields.ClassRef]; | ||
63 | set => this.Set((int)ProgIdSymbolFields.ClassRef, value); | ||
64 | } | ||
65 | |||
66 | public string Description | ||
67 | { | ||
68 | get => (string)this.Fields[(int)ProgIdSymbolFields.Description]; | ||
69 | set => this.Set((int)ProgIdSymbolFields.Description, value); | ||
70 | } | ||
71 | |||
72 | public string IconRef | ||
73 | { | ||
74 | get => (string)this.Fields[(int)ProgIdSymbolFields.IconRef]; | ||
75 | set => this.Set((int)ProgIdSymbolFields.IconRef, value); | ||
76 | } | ||
77 | |||
78 | public int? IconIndex | ||
79 | { | ||
80 | get => (int?)this.Fields[(int)ProgIdSymbolFields.IconIndex]; | ||
81 | set => this.Set((int)ProgIdSymbolFields.IconIndex, value); | ||
82 | } | ||
83 | } | ||
84 | } \ No newline at end of file | ||
diff --git a/src/api/wix/WixToolset.Data/Symbols/PropertiesSymbol.cs b/src/api/wix/WixToolset.Data/Symbols/PropertiesSymbol.cs new file mode 100644 index 00000000..61059aa6 --- /dev/null +++ b/src/api/wix/WixToolset.Data/Symbols/PropertiesSymbol.cs | |||
@@ -0,0 +1,52 @@ | |||
1 | // Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. | ||
2 | |||
3 | namespace WixToolset.Data | ||
4 | { | ||
5 | using WixToolset.Data.Symbols; | ||
6 | |||
7 | public static partial class SymbolDefinitions | ||
8 | { | ||
9 | public static readonly IntermediateSymbolDefinition Properties = new IntermediateSymbolDefinition( | ||
10 | SymbolDefinitionType.Properties, | ||
11 | new[] | ||
12 | { | ||
13 | new IntermediateFieldDefinition(nameof(PropertiesSymbolFields.Name), IntermediateFieldType.String), | ||
14 | new IntermediateFieldDefinition(nameof(PropertiesSymbolFields.Value), IntermediateFieldType.String), | ||
15 | }, | ||
16 | typeof(PropertiesSymbol)); | ||
17 | } | ||
18 | } | ||
19 | |||
20 | namespace WixToolset.Data.Symbols | ||
21 | { | ||
22 | public enum PropertiesSymbolFields | ||
23 | { | ||
24 | Name, | ||
25 | Value, | ||
26 | } | ||
27 | |||
28 | public class PropertiesSymbol : IntermediateSymbol | ||
29 | { | ||
30 | public PropertiesSymbol() : base(SymbolDefinitions.Properties, null, null) | ||
31 | { | ||
32 | } | ||
33 | |||
34 | public PropertiesSymbol(SourceLineNumber sourceLineNumber, Identifier id = null) : base(SymbolDefinitions.Properties, sourceLineNumber, id) | ||
35 | { | ||
36 | } | ||
37 | |||
38 | public IntermediateField this[PropertiesSymbolFields index] => this.Fields[(int)index]; | ||
39 | |||
40 | public string Name | ||
41 | { | ||
42 | get => (string)this.Fields[(int)PropertiesSymbolFields.Name]; | ||
43 | set => this.Set((int)PropertiesSymbolFields.Name, value); | ||
44 | } | ||
45 | |||
46 | public string Value | ||
47 | { | ||
48 | get => (string)this.Fields[(int)PropertiesSymbolFields.Value]; | ||
49 | set => this.Set((int)PropertiesSymbolFields.Value, value); | ||
50 | } | ||
51 | } | ||
52 | } \ No newline at end of file | ||
diff --git a/src/api/wix/WixToolset.Data/Symbols/PropertySymbol.cs b/src/api/wix/WixToolset.Data/Symbols/PropertySymbol.cs new file mode 100644 index 00000000..b93d962a --- /dev/null +++ b/src/api/wix/WixToolset.Data/Symbols/PropertySymbol.cs | |||
@@ -0,0 +1,44 @@ | |||
1 | // Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. | ||
2 | |||
3 | namespace WixToolset.Data | ||
4 | { | ||
5 | using WixToolset.Data.Symbols; | ||
6 | |||
7 | public static partial class SymbolDefinitions | ||
8 | { | ||
9 | public static readonly IntermediateSymbolDefinition Property = new IntermediateSymbolDefinition( | ||
10 | SymbolDefinitionType.Property, | ||
11 | new[] | ||
12 | { | ||
13 | new IntermediateFieldDefinition(nameof(PropertySymbolFields.Value), IntermediateFieldType.String), | ||
14 | }, | ||
15 | typeof(PropertySymbol)); | ||
16 | } | ||
17 | } | ||
18 | |||
19 | namespace WixToolset.Data.Symbols | ||
20 | { | ||
21 | public enum PropertySymbolFields | ||
22 | { | ||
23 | Value, | ||
24 | } | ||
25 | |||
26 | public class PropertySymbol : IntermediateSymbol | ||
27 | { | ||
28 | public PropertySymbol() : base(SymbolDefinitions.Property, null, null) | ||
29 | { | ||
30 | } | ||
31 | |||
32 | public PropertySymbol(SourceLineNumber sourceLineNumber, Identifier id = null) : base(SymbolDefinitions.Property, sourceLineNumber, id) | ||
33 | { | ||
34 | } | ||
35 | |||
36 | public IntermediateField this[PropertySymbolFields index] => this.Fields[(int)index]; | ||
37 | |||
38 | public string Value | ||
39 | { | ||
40 | get => (string)this.Fields[(int)PropertySymbolFields.Value]; | ||
41 | set => this.Set((int)PropertySymbolFields.Value, value); | ||
42 | } | ||
43 | } | ||
44 | } \ No newline at end of file | ||
diff --git a/src/api/wix/WixToolset.Data/Symbols/PublishComponentSymbol.cs b/src/api/wix/WixToolset.Data/Symbols/PublishComponentSymbol.cs new file mode 100644 index 00000000..3fb81801 --- /dev/null +++ b/src/api/wix/WixToolset.Data/Symbols/PublishComponentSymbol.cs | |||
@@ -0,0 +1,76 @@ | |||
1 | // Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. | ||
2 | |||
3 | namespace WixToolset.Data | ||
4 | { | ||
5 | using WixToolset.Data.Symbols; | ||
6 | |||
7 | public static partial class SymbolDefinitions | ||
8 | { | ||
9 | public static readonly IntermediateSymbolDefinition PublishComponent = new IntermediateSymbolDefinition( | ||
10 | SymbolDefinitionType.PublishComponent, | ||
11 | new[] | ||
12 | { | ||
13 | new IntermediateFieldDefinition(nameof(PublishComponentSymbolFields.ComponentId), IntermediateFieldType.String), | ||
14 | new IntermediateFieldDefinition(nameof(PublishComponentSymbolFields.Qualifier), IntermediateFieldType.String), | ||
15 | new IntermediateFieldDefinition(nameof(PublishComponentSymbolFields.ComponentRef), IntermediateFieldType.String), | ||
16 | new IntermediateFieldDefinition(nameof(PublishComponentSymbolFields.AppData), IntermediateFieldType.String), | ||
17 | new IntermediateFieldDefinition(nameof(PublishComponentSymbolFields.FeatureRef), IntermediateFieldType.String), | ||
18 | }, | ||
19 | typeof(PublishComponentSymbol)); | ||
20 | } | ||
21 | } | ||
22 | |||
23 | namespace WixToolset.Data.Symbols | ||
24 | { | ||
25 | public enum PublishComponentSymbolFields | ||
26 | { | ||
27 | ComponentId, | ||
28 | Qualifier, | ||
29 | ComponentRef, | ||
30 | AppData, | ||
31 | FeatureRef, | ||
32 | } | ||
33 | |||
34 | public class PublishComponentSymbol : IntermediateSymbol | ||
35 | { | ||
36 | public PublishComponentSymbol() : base(SymbolDefinitions.PublishComponent, null, null) | ||
37 | { | ||
38 | } | ||
39 | |||
40 | public PublishComponentSymbol(SourceLineNumber sourceLineNumber, Identifier id = null) : base(SymbolDefinitions.PublishComponent, sourceLineNumber, id) | ||
41 | { | ||
42 | } | ||
43 | |||
44 | public IntermediateField this[PublishComponentSymbolFields index] => this.Fields[(int)index]; | ||
45 | |||
46 | public string ComponentId | ||
47 | { | ||
48 | get => (string)this.Fields[(int)PublishComponentSymbolFields.ComponentId]; | ||
49 | set => this.Set((int)PublishComponentSymbolFields.ComponentId, value); | ||
50 | } | ||
51 | |||
52 | public string Qualifier | ||
53 | { | ||
54 | get => (string)this.Fields[(int)PublishComponentSymbolFields.Qualifier]; | ||
55 | set => this.Set((int)PublishComponentSymbolFields.Qualifier, value); | ||
56 | } | ||
57 | |||
58 | public string ComponentRef | ||
59 | { | ||
60 | get => (string)this.Fields[(int)PublishComponentSymbolFields.ComponentRef]; | ||
61 | set => this.Set((int)PublishComponentSymbolFields.ComponentRef, value); | ||
62 | } | ||
63 | |||
64 | public string AppData | ||
65 | { | ||
66 | get => (string)this.Fields[(int)PublishComponentSymbolFields.AppData]; | ||
67 | set => this.Set((int)PublishComponentSymbolFields.AppData, value); | ||
68 | } | ||
69 | |||
70 | public string FeatureRef | ||
71 | { | ||
72 | get => (string)this.Fields[(int)PublishComponentSymbolFields.FeatureRef]; | ||
73 | set => this.Set((int)PublishComponentSymbolFields.FeatureRef, value); | ||
74 | } | ||
75 | } | ||
76 | } \ No newline at end of file | ||
diff --git a/src/api/wix/WixToolset.Data/Symbols/RadioButtonSymbol.cs b/src/api/wix/WixToolset.Data/Symbols/RadioButtonSymbol.cs new file mode 100644 index 00000000..6a26e937 --- /dev/null +++ b/src/api/wix/WixToolset.Data/Symbols/RadioButtonSymbol.cs | |||
@@ -0,0 +1,108 @@ | |||
1 | // Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. | ||
2 | |||
3 | namespace WixToolset.Data | ||
4 | { | ||
5 | using WixToolset.Data.Symbols; | ||
6 | |||
7 | public static partial class SymbolDefinitions | ||
8 | { | ||
9 | public static readonly IntermediateSymbolDefinition RadioButton = new IntermediateSymbolDefinition( | ||
10 | SymbolDefinitionType.RadioButton, | ||
11 | new[] | ||
12 | { | ||
13 | new IntermediateFieldDefinition(nameof(RadioButtonSymbolFields.Property), IntermediateFieldType.String), | ||
14 | new IntermediateFieldDefinition(nameof(RadioButtonSymbolFields.Order), IntermediateFieldType.Number), | ||
15 | new IntermediateFieldDefinition(nameof(RadioButtonSymbolFields.Value), IntermediateFieldType.String), | ||
16 | new IntermediateFieldDefinition(nameof(RadioButtonSymbolFields.X), IntermediateFieldType.Number), | ||
17 | new IntermediateFieldDefinition(nameof(RadioButtonSymbolFields.Y), IntermediateFieldType.Number), | ||
18 | new IntermediateFieldDefinition(nameof(RadioButtonSymbolFields.Width), IntermediateFieldType.Number), | ||
19 | new IntermediateFieldDefinition(nameof(RadioButtonSymbolFields.Height), IntermediateFieldType.Number), | ||
20 | new IntermediateFieldDefinition(nameof(RadioButtonSymbolFields.Text), IntermediateFieldType.String), | ||
21 | new IntermediateFieldDefinition(nameof(RadioButtonSymbolFields.Help), IntermediateFieldType.String), | ||
22 | }, | ||
23 | typeof(RadioButtonSymbol)); | ||
24 | } | ||
25 | } | ||
26 | |||
27 | namespace WixToolset.Data.Symbols | ||
28 | { | ||
29 | public enum RadioButtonSymbolFields | ||
30 | { | ||
31 | Property, | ||
32 | Order, | ||
33 | Value, | ||
34 | X, | ||
35 | Y, | ||
36 | Width, | ||
37 | Height, | ||
38 | Text, | ||
39 | Help, | ||
40 | } | ||
41 | |||
42 | public class RadioButtonSymbol : IntermediateSymbol | ||
43 | { | ||
44 | public RadioButtonSymbol() : base(SymbolDefinitions.RadioButton, null, null) | ||
45 | { | ||
46 | } | ||
47 | |||
48 | public RadioButtonSymbol(SourceLineNumber sourceLineNumber, Identifier id = null) : base(SymbolDefinitions.RadioButton, sourceLineNumber, id) | ||
49 | { | ||
50 | } | ||
51 | |||
52 | public IntermediateField this[RadioButtonSymbolFields index] => this.Fields[(int)index]; | ||
53 | |||
54 | public string Property | ||
55 | { | ||
56 | get => (string)this.Fields[(int)RadioButtonSymbolFields.Property]; | ||
57 | set => this.Set((int)RadioButtonSymbolFields.Property, value); | ||
58 | } | ||
59 | |||
60 | public int Order | ||
61 | { | ||
62 | get => (int)this.Fields[(int)RadioButtonSymbolFields.Order]; | ||
63 | set => this.Set((int)RadioButtonSymbolFields.Order, value); | ||
64 | } | ||
65 | |||
66 | public string Value | ||
67 | { | ||
68 | get => (string)this.Fields[(int)RadioButtonSymbolFields.Value]; | ||
69 | set => this.Set((int)RadioButtonSymbolFields.Value, value); | ||
70 | } | ||
71 | |||
72 | public int X | ||
73 | { | ||
74 | get => (int)this.Fields[(int)RadioButtonSymbolFields.X]; | ||
75 | set => this.Set((int)RadioButtonSymbolFields.X, value); | ||
76 | } | ||
77 | |||
78 | public int Y | ||
79 | { | ||
80 | get => (int)this.Fields[(int)RadioButtonSymbolFields.Y]; | ||
81 | set => this.Set((int)RadioButtonSymbolFields.Y, value); | ||
82 | } | ||
83 | |||
84 | public int Width | ||
85 | { | ||
86 | get => (int)this.Fields[(int)RadioButtonSymbolFields.Width]; | ||
87 | set => this.Set((int)RadioButtonSymbolFields.Width, value); | ||
88 | } | ||
89 | |||
90 | public int Height | ||
91 | { | ||
92 | get => (int)this.Fields[(int)RadioButtonSymbolFields.Height]; | ||
93 | set => this.Set((int)RadioButtonSymbolFields.Height, value); | ||
94 | } | ||
95 | |||
96 | public string Text | ||
97 | { | ||
98 | get => (string)this.Fields[(int)RadioButtonSymbolFields.Text]; | ||
99 | set => this.Set((int)RadioButtonSymbolFields.Text, value); | ||
100 | } | ||
101 | |||
102 | public string Help | ||
103 | { | ||
104 | get => (string)this.Fields[(int)RadioButtonSymbolFields.Help]; | ||
105 | set => this.Set((int)RadioButtonSymbolFields.Help, value); | ||
106 | } | ||
107 | } | ||
108 | } \ No newline at end of file | ||
diff --git a/src/api/wix/WixToolset.Data/Symbols/RegLocatorSymbol.cs b/src/api/wix/WixToolset.Data/Symbols/RegLocatorSymbol.cs new file mode 100644 index 00000000..bf50dab7 --- /dev/null +++ b/src/api/wix/WixToolset.Data/Symbols/RegLocatorSymbol.cs | |||
@@ -0,0 +1,83 @@ | |||
1 | // Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. | ||
2 | |||
3 | namespace WixToolset.Data | ||
4 | { | ||
5 | using WixToolset.Data.Symbols; | ||
6 | |||
7 | public static partial class SymbolDefinitions | ||
8 | { | ||
9 | public static readonly IntermediateSymbolDefinition RegLocator = new IntermediateSymbolDefinition( | ||
10 | SymbolDefinitionType.RegLocator, | ||
11 | new[] | ||
12 | { | ||
13 | new IntermediateFieldDefinition(nameof(RegLocatorSymbolFields.Root), IntermediateFieldType.Number), | ||
14 | new IntermediateFieldDefinition(nameof(RegLocatorSymbolFields.Key), IntermediateFieldType.String), | ||
15 | new IntermediateFieldDefinition(nameof(RegLocatorSymbolFields.Name), IntermediateFieldType.String), | ||
16 | new IntermediateFieldDefinition(nameof(RegLocatorSymbolFields.Type), IntermediateFieldType.Number), | ||
17 | new IntermediateFieldDefinition(nameof(RegLocatorSymbolFields.Win64), IntermediateFieldType.Bool), | ||
18 | }, | ||
19 | typeof(RegLocatorSymbol)); | ||
20 | } | ||
21 | } | ||
22 | |||
23 | namespace WixToolset.Data.Symbols | ||
24 | { | ||
25 | public enum RegLocatorSymbolFields | ||
26 | { | ||
27 | Root, | ||
28 | Key, | ||
29 | Name, | ||
30 | Type, | ||
31 | Win64, | ||
32 | } | ||
33 | |||
34 | public enum RegLocatorType | ||
35 | { | ||
36 | Directory, | ||
37 | FileName, | ||
38 | Raw | ||
39 | }; | ||
40 | |||
41 | public class RegLocatorSymbol : IntermediateSymbol | ||
42 | { | ||
43 | public RegLocatorSymbol() : base(SymbolDefinitions.RegLocator, null, null) | ||
44 | { | ||
45 | } | ||
46 | |||
47 | public RegLocatorSymbol(SourceLineNumber sourceLineNumber, Identifier id = null) : base(SymbolDefinitions.RegLocator, sourceLineNumber, id) | ||
48 | { | ||
49 | } | ||
50 | |||
51 | public IntermediateField this[RegLocatorSymbolFields index] => this.Fields[(int)index]; | ||
52 | |||
53 | public RegistryRootType Root | ||
54 | { | ||
55 | get => (RegistryRootType)this.Fields[(int)RegLocatorSymbolFields.Root].AsNumber(); | ||
56 | set => this.Set((int)RegLocatorSymbolFields.Root, (int)value); | ||
57 | } | ||
58 | |||
59 | public string Key | ||
60 | { | ||
61 | get => (string)this.Fields[(int)RegLocatorSymbolFields.Key]; | ||
62 | set => this.Set((int)RegLocatorSymbolFields.Key, value); | ||
63 | } | ||
64 | |||
65 | public string Name | ||
66 | { | ||
67 | get => (string)this.Fields[(int)RegLocatorSymbolFields.Name]; | ||
68 | set => this.Set((int)RegLocatorSymbolFields.Name, value); | ||
69 | } | ||
70 | |||
71 | public RegLocatorType Type | ||
72 | { | ||
73 | get => (RegLocatorType)this.Fields[(int)RegLocatorSymbolFields.Type].AsNumber(); | ||
74 | set => this.Set((int)RegLocatorSymbolFields.Type, (int)value); | ||
75 | } | ||
76 | |||
77 | public bool Win64 | ||
78 | { | ||
79 | get => this.Fields[(int)RegLocatorSymbolFields.Win64].AsBool(); | ||
80 | set => this.Set((int)RegLocatorSymbolFields.Win64, value); | ||
81 | } | ||
82 | } | ||
83 | } | ||
diff --git a/src/api/wix/WixToolset.Data/Symbols/RegistryRootType.cs b/src/api/wix/WixToolset.Data/Symbols/RegistryRootType.cs new file mode 100644 index 00000000..9f60727c --- /dev/null +++ b/src/api/wix/WixToolset.Data/Symbols/RegistryRootType.cs | |||
@@ -0,0 +1,21 @@ | |||
1 | // Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. | ||
2 | |||
3 | namespace WixToolset.Data.Symbols | ||
4 | { | ||
5 | using System; | ||
6 | |||
7 | /// <summary> | ||
8 | /// Registry root mapping. | ||
9 | /// </summary> | ||
10 | public enum RegistryRootType | ||
11 | { | ||
12 | Unknown = Int32.MaxValue, | ||
13 | |||
14 | /// <summary>HKLM in a per-machine and HKCU in per-user.</summary> | ||
15 | MachineUser = -1, | ||
16 | ClassesRoot = 0, | ||
17 | CurrentUser = 1, | ||
18 | LocalMachine = 2, | ||
19 | Users = 3 | ||
20 | } | ||
21 | } | ||
diff --git a/src/api/wix/WixToolset.Data/Symbols/RegistrySymbol.cs b/src/api/wix/WixToolset.Data/Symbols/RegistrySymbol.cs new file mode 100644 index 00000000..371bfe98 --- /dev/null +++ b/src/api/wix/WixToolset.Data/Symbols/RegistrySymbol.cs | |||
@@ -0,0 +1,108 @@ | |||
1 | // Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. | ||
2 | |||
3 | namespace WixToolset.Data | ||
4 | { | ||
5 | using WixToolset.Data.Symbols; | ||
6 | |||
7 | public static partial class SymbolDefinitions | ||
8 | { | ||
9 | public static readonly IntermediateSymbolDefinition Registry = new IntermediateSymbolDefinition( | ||
10 | SymbolDefinitionType.Registry, | ||
11 | new[] | ||
12 | { | ||
13 | new IntermediateFieldDefinition(nameof(RegistrySymbolFields.Root), IntermediateFieldType.Number), | ||
14 | new IntermediateFieldDefinition(nameof(RegistrySymbolFields.Key), IntermediateFieldType.String), | ||
15 | new IntermediateFieldDefinition(nameof(RegistrySymbolFields.Name), IntermediateFieldType.String), | ||
16 | new IntermediateFieldDefinition(nameof(RegistrySymbolFields.Value), IntermediateFieldType.String), | ||
17 | new IntermediateFieldDefinition(nameof(RegistrySymbolFields.ValueType), IntermediateFieldType.Number), | ||
18 | new IntermediateFieldDefinition(nameof(RegistrySymbolFields.ValueAction), IntermediateFieldType.Number), | ||
19 | new IntermediateFieldDefinition(nameof(RegistrySymbolFields.ComponentRef), IntermediateFieldType.String), | ||
20 | }, | ||
21 | typeof(RegistrySymbol)); | ||
22 | } | ||
23 | } | ||
24 | |||
25 | namespace WixToolset.Data.Symbols | ||
26 | { | ||
27 | public enum RegistrySymbolFields | ||
28 | { | ||
29 | Root, | ||
30 | Key, | ||
31 | Name, | ||
32 | Value, | ||
33 | ValueType, | ||
34 | ValueAction, | ||
35 | ComponentRef, | ||
36 | } | ||
37 | |||
38 | public enum RegistryValueType | ||
39 | { | ||
40 | String, | ||
41 | Binary, | ||
42 | Expandable, | ||
43 | Integer, | ||
44 | MultiString, | ||
45 | } | ||
46 | |||
47 | public enum RegistryValueActionType | ||
48 | { | ||
49 | Write, | ||
50 | Append, | ||
51 | Prepend, | ||
52 | } | ||
53 | |||
54 | public class RegistrySymbol : IntermediateSymbol | ||
55 | { | ||
56 | public RegistrySymbol() : base(SymbolDefinitions.Registry, null, null) | ||
57 | { | ||
58 | } | ||
59 | |||
60 | public RegistrySymbol(SourceLineNumber sourceLineNumber, Identifier id = null) : base(SymbolDefinitions.Registry, sourceLineNumber, id) | ||
61 | { | ||
62 | } | ||
63 | |||
64 | public IntermediateField this[RegistrySymbolFields index] => this.Fields[(int)index]; | ||
65 | |||
66 | public RegistryRootType Root | ||
67 | { | ||
68 | get => (RegistryRootType)this.Fields[(int)RegistrySymbolFields.Root].AsNumber(); | ||
69 | set => this.Set((int)RegistrySymbolFields.Root, (int)value); | ||
70 | } | ||
71 | |||
72 | public string Key | ||
73 | { | ||
74 | get => (string)this.Fields[(int)RegistrySymbolFields.Key]; | ||
75 | set => this.Set((int)RegistrySymbolFields.Key, value); | ||
76 | } | ||
77 | |||
78 | public string Name | ||
79 | { | ||
80 | get => (string)this.Fields[(int)RegistrySymbolFields.Name]; | ||
81 | set => this.Set((int)RegistrySymbolFields.Name, value); | ||
82 | } | ||
83 | |||
84 | public string Value | ||
85 | { | ||
86 | get => this.Fields[(int)RegistrySymbolFields.Value].AsString(); | ||
87 | set => this.Set((int)RegistrySymbolFields.Value, value); | ||
88 | } | ||
89 | |||
90 | public RegistryValueType ValueType | ||
91 | { | ||
92 | get => (RegistryValueType)this.Fields[(int)RegistrySymbolFields.ValueType].AsNumber(); | ||
93 | set => this.Set((int)RegistrySymbolFields.ValueType, (int)value); | ||
94 | } | ||
95 | |||
96 | public RegistryValueActionType ValueAction | ||
97 | { | ||
98 | get => (RegistryValueActionType)this.Fields[(int)RegistrySymbolFields.ValueAction].AsNumber(); | ||
99 | set => this.Set((int)RegistrySymbolFields.ValueAction, (int)value); | ||
100 | } | ||
101 | |||
102 | public string ComponentRef | ||
103 | { | ||
104 | get => (string)this.Fields[(int)RegistrySymbolFields.ComponentRef]; | ||
105 | set => this.Set((int)RegistrySymbolFields.ComponentRef, value); | ||
106 | } | ||
107 | } | ||
108 | } \ No newline at end of file | ||
diff --git a/src/api/wix/WixToolset.Data/Symbols/RemoveFileSymbol.cs b/src/api/wix/WixToolset.Data/Symbols/RemoveFileSymbol.cs new file mode 100644 index 00000000..0167b070 --- /dev/null +++ b/src/api/wix/WixToolset.Data/Symbols/RemoveFileSymbol.cs | |||
@@ -0,0 +1,84 @@ | |||
1 | // Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. | ||
2 | |||
3 | namespace WixToolset.Data | ||
4 | { | ||
5 | using WixToolset.Data.Symbols; | ||
6 | |||
7 | public static partial class SymbolDefinitions | ||
8 | { | ||
9 | public static readonly IntermediateSymbolDefinition RemoveFile = new IntermediateSymbolDefinition( | ||
10 | SymbolDefinitionType.RemoveFile, | ||
11 | new[] | ||
12 | { | ||
13 | new IntermediateFieldDefinition(nameof(RemoveFileSymbolFields.ComponentRef), IntermediateFieldType.String), | ||
14 | new IntermediateFieldDefinition(nameof(RemoveFileSymbolFields.FileName), IntermediateFieldType.String), | ||
15 | new IntermediateFieldDefinition(nameof(RemoveFileSymbolFields.ShortFileName), IntermediateFieldType.String), | ||
16 | new IntermediateFieldDefinition(nameof(RemoveFileSymbolFields.DirPropertyRef), IntermediateFieldType.String), | ||
17 | new IntermediateFieldDefinition(nameof(RemoveFileSymbolFields.OnInstall), IntermediateFieldType.Bool), | ||
18 | new IntermediateFieldDefinition(nameof(RemoveFileSymbolFields.OnUninstall), IntermediateFieldType.Bool), | ||
19 | }, | ||
20 | typeof(RemoveFileSymbol)); | ||
21 | } | ||
22 | } | ||
23 | |||
24 | namespace WixToolset.Data.Symbols | ||
25 | { | ||
26 | public enum RemoveFileSymbolFields | ||
27 | { | ||
28 | ComponentRef, | ||
29 | FileName, | ||
30 | ShortFileName, | ||
31 | DirPropertyRef, | ||
32 | OnInstall, | ||
33 | OnUninstall, | ||
34 | } | ||
35 | |||
36 | public class RemoveFileSymbol : IntermediateSymbol | ||
37 | { | ||
38 | public RemoveFileSymbol() : base(SymbolDefinitions.RemoveFile, null, null) | ||
39 | { | ||
40 | } | ||
41 | |||
42 | public RemoveFileSymbol(SourceLineNumber sourceLineNumber, Identifier id = null) : base(SymbolDefinitions.RemoveFile, sourceLineNumber, id) | ||
43 | { | ||
44 | } | ||
45 | |||
46 | public IntermediateField this[RemoveFileSymbolFields index] => this.Fields[(int)index]; | ||
47 | |||
48 | public string ComponentRef | ||
49 | { | ||
50 | get => (string)this.Fields[(int)RemoveFileSymbolFields.ComponentRef]; | ||
51 | set => this.Set((int)RemoveFileSymbolFields.ComponentRef, value); | ||
52 | } | ||
53 | |||
54 | public string FileName | ||
55 | { | ||
56 | get => (string)this.Fields[(int)RemoveFileSymbolFields.FileName]; | ||
57 | set => this.Set((int)RemoveFileSymbolFields.FileName, value); | ||
58 | } | ||
59 | |||
60 | public string ShortFileName | ||
61 | { | ||
62 | get => (string)this.Fields[(int)RemoveFileSymbolFields.ShortFileName]; | ||
63 | set => this.Set((int)RemoveFileSymbolFields.ShortFileName, value); | ||
64 | } | ||
65 | |||
66 | public string DirPropertyRef | ||
67 | { | ||
68 | get => (string)this.Fields[(int)RemoveFileSymbolFields.DirPropertyRef]; | ||
69 | set => this.Set((int)RemoveFileSymbolFields.DirPropertyRef, value); | ||
70 | } | ||
71 | |||
72 | public bool? OnInstall | ||
73 | { | ||
74 | get => (bool?)this.Fields[(int)RemoveFileSymbolFields.OnInstall]; | ||
75 | set => this.Set((int)RemoveFileSymbolFields.OnInstall, value); | ||
76 | } | ||
77 | |||
78 | public bool? OnUninstall | ||
79 | { | ||
80 | get => (bool?)this.Fields[(int)RemoveFileSymbolFields.OnUninstall]; | ||
81 | set => this.Set((int)RemoveFileSymbolFields.OnUninstall, value); | ||
82 | } | ||
83 | } | ||
84 | } \ No newline at end of file | ||
diff --git a/src/api/wix/WixToolset.Data/Symbols/RemoveRegistrySymbol.cs b/src/api/wix/WixToolset.Data/Symbols/RemoveRegistrySymbol.cs new file mode 100644 index 00000000..a797cd33 --- /dev/null +++ b/src/api/wix/WixToolset.Data/Symbols/RemoveRegistrySymbol.cs | |||
@@ -0,0 +1,82 @@ | |||
1 | // Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. | ||
2 | |||
3 | namespace WixToolset.Data | ||
4 | { | ||
5 | using WixToolset.Data.Symbols; | ||
6 | |||
7 | public static partial class SymbolDefinitions | ||
8 | { | ||
9 | public static readonly IntermediateSymbolDefinition RemoveRegistry = new IntermediateSymbolDefinition( | ||
10 | SymbolDefinitionType.RemoveRegistry, | ||
11 | new[] | ||
12 | { | ||
13 | new IntermediateFieldDefinition(nameof(RemoveRegistrySymbolFields.Root), IntermediateFieldType.Number), | ||
14 | new IntermediateFieldDefinition(nameof(RemoveRegistrySymbolFields.Key), IntermediateFieldType.String), | ||
15 | new IntermediateFieldDefinition(nameof(RemoveRegistrySymbolFields.Name), IntermediateFieldType.String), | ||
16 | new IntermediateFieldDefinition(nameof(RemoveRegistrySymbolFields.Action), IntermediateFieldType.Number), | ||
17 | new IntermediateFieldDefinition(nameof(RemoveRegistrySymbolFields.ComponentRef), IntermediateFieldType.String), | ||
18 | }, | ||
19 | typeof(RemoveRegistrySymbol)); | ||
20 | } | ||
21 | } | ||
22 | |||
23 | namespace WixToolset.Data.Symbols | ||
24 | { | ||
25 | public enum RemoveRegistrySymbolFields | ||
26 | { | ||
27 | Root, | ||
28 | Key, | ||
29 | Name, | ||
30 | Action, | ||
31 | ComponentRef, | ||
32 | } | ||
33 | |||
34 | public enum RemoveRegistryActionType | ||
35 | { | ||
36 | RemoveOnInstall, | ||
37 | RemoveOnUninstall | ||
38 | }; | ||
39 | |||
40 | public class RemoveRegistrySymbol : IntermediateSymbol | ||
41 | { | ||
42 | public RemoveRegistrySymbol() : base(SymbolDefinitions.RemoveRegistry, null, null) | ||
43 | { | ||
44 | } | ||
45 | |||
46 | public RemoveRegistrySymbol(SourceLineNumber sourceLineNumber, Identifier id = null) : base(SymbolDefinitions.RemoveRegistry, sourceLineNumber, id) | ||
47 | { | ||
48 | } | ||
49 | |||
50 | public IntermediateField this[RemoveRegistrySymbolFields index] => this.Fields[(int)index]; | ||
51 | |||
52 | public RegistryRootType Root | ||
53 | { | ||
54 | get => (RegistryRootType)this.Fields[(int)RemoveRegistrySymbolFields.Root].AsNumber(); | ||
55 | set => this.Set((int)RemoveRegistrySymbolFields.Root, (int)value); | ||
56 | } | ||
57 | |||
58 | public string Key | ||
59 | { | ||
60 | get => (string)this.Fields[(int)RemoveRegistrySymbolFields.Key]; | ||
61 | set => this.Set((int)RemoveRegistrySymbolFields.Key, value); | ||
62 | } | ||
63 | |||
64 | public string Name | ||
65 | { | ||
66 | get => (string)this.Fields[(int)RemoveRegistrySymbolFields.Name]; | ||
67 | set => this.Set((int)RemoveRegistrySymbolFields.Name, value); | ||
68 | } | ||
69 | |||
70 | public RemoveRegistryActionType Action | ||
71 | { | ||
72 | get => (RemoveRegistryActionType)this.Fields[(int)RemoveRegistrySymbolFields.Action].AsNumber(); | ||
73 | set => this.Set((int)RemoveRegistrySymbolFields.Action, (int)value); | ||
74 | } | ||
75 | |||
76 | public string ComponentRef | ||
77 | { | ||
78 | get => (string)this.Fields[(int)RemoveRegistrySymbolFields.ComponentRef]; | ||
79 | set => this.Set((int)RemoveRegistrySymbolFields.ComponentRef, value); | ||
80 | } | ||
81 | } | ||
82 | } \ No newline at end of file | ||
diff --git a/src/api/wix/WixToolset.Data/Symbols/ReserveCostSymbol.cs b/src/api/wix/WixToolset.Data/Symbols/ReserveCostSymbol.cs new file mode 100644 index 00000000..b59dea2f --- /dev/null +++ b/src/api/wix/WixToolset.Data/Symbols/ReserveCostSymbol.cs | |||
@@ -0,0 +1,68 @@ | |||
1 | // Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. | ||
2 | |||
3 | namespace WixToolset.Data | ||
4 | { | ||
5 | using WixToolset.Data.Symbols; | ||
6 | |||
7 | public static partial class SymbolDefinitions | ||
8 | { | ||
9 | public static readonly IntermediateSymbolDefinition ReserveCost = new IntermediateSymbolDefinition( | ||
10 | SymbolDefinitionType.ReserveCost, | ||
11 | new[] | ||
12 | { | ||
13 | new IntermediateFieldDefinition(nameof(ReserveCostSymbolFields.ComponentRef), IntermediateFieldType.String), | ||
14 | new IntermediateFieldDefinition(nameof(ReserveCostSymbolFields.ReserveFolder), IntermediateFieldType.String), | ||
15 | new IntermediateFieldDefinition(nameof(ReserveCostSymbolFields.ReserveLocal), IntermediateFieldType.Number), | ||
16 | new IntermediateFieldDefinition(nameof(ReserveCostSymbolFields.ReserveSource), IntermediateFieldType.Number), | ||
17 | }, | ||
18 | typeof(ReserveCostSymbol)); | ||
19 | } | ||
20 | } | ||
21 | |||
22 | namespace WixToolset.Data.Symbols | ||
23 | { | ||
24 | public enum ReserveCostSymbolFields | ||
25 | { | ||
26 | ComponentRef, | ||
27 | ReserveFolder, | ||
28 | ReserveLocal, | ||
29 | ReserveSource, | ||
30 | } | ||
31 | |||
32 | public class ReserveCostSymbol : IntermediateSymbol | ||
33 | { | ||
34 | public ReserveCostSymbol() : base(SymbolDefinitions.ReserveCost, null, null) | ||
35 | { | ||
36 | } | ||
37 | |||
38 | public ReserveCostSymbol(SourceLineNumber sourceLineNumber, Identifier id = null) : base(SymbolDefinitions.ReserveCost, sourceLineNumber, id) | ||
39 | { | ||
40 | } | ||
41 | |||
42 | public IntermediateField this[ReserveCostSymbolFields index] => this.Fields[(int)index]; | ||
43 | |||
44 | public string ComponentRef | ||
45 | { | ||
46 | get => (string)this.Fields[(int)ReserveCostSymbolFields.ComponentRef]; | ||
47 | set => this.Set((int)ReserveCostSymbolFields.ComponentRef, value); | ||
48 | } | ||
49 | |||
50 | public string ReserveFolder | ||
51 | { | ||
52 | get => (string)this.Fields[(int)ReserveCostSymbolFields.ReserveFolder]; | ||
53 | set => this.Set((int)ReserveCostSymbolFields.ReserveFolder, value); | ||
54 | } | ||
55 | |||
56 | public int ReserveLocal | ||
57 | { | ||
58 | get => (int)this.Fields[(int)ReserveCostSymbolFields.ReserveLocal]; | ||
59 | set => this.Set((int)ReserveCostSymbolFields.ReserveLocal, value); | ||
60 | } | ||
61 | |||
62 | public int ReserveSource | ||
63 | { | ||
64 | get => (int)this.Fields[(int)ReserveCostSymbolFields.ReserveSource]; | ||
65 | set => this.Set((int)ReserveCostSymbolFields.ReserveSource, value); | ||
66 | } | ||
67 | } | ||
68 | } | ||
diff --git a/src/api/wix/WixToolset.Data/Symbols/SFPCatalogSymbol.cs b/src/api/wix/WixToolset.Data/Symbols/SFPCatalogSymbol.cs new file mode 100644 index 00000000..0d3f1558 --- /dev/null +++ b/src/api/wix/WixToolset.Data/Symbols/SFPCatalogSymbol.cs | |||
@@ -0,0 +1,60 @@ | |||
1 | // Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. | ||
2 | |||
3 | namespace WixToolset.Data | ||
4 | { | ||
5 | using WixToolset.Data.Symbols; | ||
6 | |||
7 | public static partial class SymbolDefinitions | ||
8 | { | ||
9 | public static readonly IntermediateSymbolDefinition SFPCatalog = new IntermediateSymbolDefinition( | ||
10 | SymbolDefinitionType.SFPCatalog, | ||
11 | new[] | ||
12 | { | ||
13 | new IntermediateFieldDefinition(nameof(SFPCatalogSymbolFields.SFPCatalog), IntermediateFieldType.String), | ||
14 | new IntermediateFieldDefinition(nameof(SFPCatalogSymbolFields.Catalog), IntermediateFieldType.Path), | ||
15 | new IntermediateFieldDefinition(nameof(SFPCatalogSymbolFields.Dependency), IntermediateFieldType.String), | ||
16 | }, | ||
17 | typeof(SFPCatalogSymbol)); | ||
18 | } | ||
19 | } | ||
20 | |||
21 | namespace WixToolset.Data.Symbols | ||
22 | { | ||
23 | public enum SFPCatalogSymbolFields | ||
24 | { | ||
25 | SFPCatalog, | ||
26 | Catalog, | ||
27 | Dependency, | ||
28 | } | ||
29 | |||
30 | public class SFPCatalogSymbol : IntermediateSymbol | ||
31 | { | ||
32 | public SFPCatalogSymbol() : base(SymbolDefinitions.SFPCatalog, null, null) | ||
33 | { | ||
34 | } | ||
35 | |||
36 | public SFPCatalogSymbol(SourceLineNumber sourceLineNumber, Identifier id = null) : base(SymbolDefinitions.SFPCatalog, sourceLineNumber, id) | ||
37 | { | ||
38 | } | ||
39 | |||
40 | public IntermediateField this[SFPCatalogSymbolFields index] => this.Fields[(int)index]; | ||
41 | |||
42 | public string SFPCatalog | ||
43 | { | ||
44 | get => (string)this.Fields[(int)SFPCatalogSymbolFields.SFPCatalog]; | ||
45 | set => this.Set((int)SFPCatalogSymbolFields.SFPCatalog, value); | ||
46 | } | ||
47 | |||
48 | public string Catalog | ||
49 | { | ||
50 | get => (string)this.Fields[(int)SFPCatalogSymbolFields.Catalog]; | ||
51 | set => this.Set((int)SFPCatalogSymbolFields.Catalog, value); | ||
52 | } | ||
53 | |||
54 | public string Dependency | ||
55 | { | ||
56 | get => (string)this.Fields[(int)SFPCatalogSymbolFields.Dependency]; | ||
57 | set => this.Set((int)SFPCatalogSymbolFields.Dependency, value); | ||
58 | } | ||
59 | } | ||
60 | } \ No newline at end of file | ||
diff --git a/src/api/wix/WixToolset.Data/Symbols/ServiceControlSymbol.cs b/src/api/wix/WixToolset.Data/Symbols/ServiceControlSymbol.cs new file mode 100644 index 00000000..6e129681 --- /dev/null +++ b/src/api/wix/WixToolset.Data/Symbols/ServiceControlSymbol.cs | |||
@@ -0,0 +1,116 @@ | |||
1 | // Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. | ||
2 | |||
3 | namespace WixToolset.Data | ||
4 | { | ||
5 | using WixToolset.Data.Symbols; | ||
6 | |||
7 | public static partial class SymbolDefinitions | ||
8 | { | ||
9 | public static readonly IntermediateSymbolDefinition ServiceControl = new IntermediateSymbolDefinition( | ||
10 | SymbolDefinitionType.ServiceControl, | ||
11 | new[] | ||
12 | { | ||
13 | new IntermediateFieldDefinition(nameof(ServiceControlSymbolFields.Name), IntermediateFieldType.String), | ||
14 | new IntermediateFieldDefinition(nameof(ServiceControlSymbolFields.InstallRemove), IntermediateFieldType.Bool), | ||
15 | new IntermediateFieldDefinition(nameof(ServiceControlSymbolFields.UninstallRemove), IntermediateFieldType.Bool), | ||
16 | new IntermediateFieldDefinition(nameof(ServiceControlSymbolFields.InstallStart), IntermediateFieldType.Bool), | ||
17 | new IntermediateFieldDefinition(nameof(ServiceControlSymbolFields.UninstallStart), IntermediateFieldType.Bool), | ||
18 | new IntermediateFieldDefinition(nameof(ServiceControlSymbolFields.InstallStop), IntermediateFieldType.Bool), | ||
19 | new IntermediateFieldDefinition(nameof(ServiceControlSymbolFields.UninstallStop), IntermediateFieldType.Bool), | ||
20 | new IntermediateFieldDefinition(nameof(ServiceControlSymbolFields.Arguments), IntermediateFieldType.String), | ||
21 | new IntermediateFieldDefinition(nameof(ServiceControlSymbolFields.Wait), IntermediateFieldType.Bool), | ||
22 | new IntermediateFieldDefinition(nameof(ServiceControlSymbolFields.ComponentRef), IntermediateFieldType.String), | ||
23 | }, | ||
24 | typeof(ServiceControlSymbol)); | ||
25 | } | ||
26 | } | ||
27 | |||
28 | namespace WixToolset.Data.Symbols | ||
29 | { | ||
30 | public enum ServiceControlSymbolFields | ||
31 | { | ||
32 | Name, | ||
33 | InstallRemove, | ||
34 | UninstallRemove, | ||
35 | InstallStart, | ||
36 | UninstallStart, | ||
37 | InstallStop, | ||
38 | UninstallStop, | ||
39 | Arguments, | ||
40 | Wait, | ||
41 | ComponentRef, | ||
42 | } | ||
43 | |||
44 | public class ServiceControlSymbol : IntermediateSymbol | ||
45 | { | ||
46 | public ServiceControlSymbol() : base(SymbolDefinitions.ServiceControl, null, null) | ||
47 | { | ||
48 | } | ||
49 | |||
50 | public ServiceControlSymbol(SourceLineNumber sourceLineNumber, Identifier id = null) : base(SymbolDefinitions.ServiceControl, sourceLineNumber, id) | ||
51 | { | ||
52 | } | ||
53 | |||
54 | public IntermediateField this[ServiceControlSymbolFields index] => this.Fields[(int)index]; | ||
55 | |||
56 | public string Name | ||
57 | { | ||
58 | get => (string)this.Fields[(int)ServiceControlSymbolFields.Name]; | ||
59 | set => this.Set((int)ServiceControlSymbolFields.Name, value); | ||
60 | } | ||
61 | |||
62 | public bool InstallRemove | ||
63 | { | ||
64 | get => this.Fields[(int)ServiceControlSymbolFields.InstallRemove].AsBool(); | ||
65 | set => this.Set((int)ServiceControlSymbolFields.InstallRemove, value); | ||
66 | } | ||
67 | |||
68 | public bool UninstallRemove | ||
69 | { | ||
70 | get => this.Fields[(int)ServiceControlSymbolFields.UninstallRemove].AsBool(); | ||
71 | set => this.Set((int)ServiceControlSymbolFields.UninstallRemove, value); | ||
72 | } | ||
73 | |||
74 | public bool InstallStart | ||
75 | { | ||
76 | get => this.Fields[(int)ServiceControlSymbolFields.InstallStart].AsBool(); | ||
77 | set => this.Set((int)ServiceControlSymbolFields.InstallStart, value); | ||
78 | } | ||
79 | |||
80 | public bool UninstallStart | ||
81 | { | ||
82 | get => this.Fields[(int)ServiceControlSymbolFields.UninstallStart].AsBool(); | ||
83 | set => this.Set((int)ServiceControlSymbolFields.UninstallStart, value); | ||
84 | } | ||
85 | |||
86 | public bool InstallStop | ||
87 | { | ||
88 | get => this.Fields[(int)ServiceControlSymbolFields.InstallStop].AsBool(); | ||
89 | set => this.Set((int)ServiceControlSymbolFields.InstallStop, value); | ||
90 | } | ||
91 | |||
92 | public bool UninstallStop | ||
93 | { | ||
94 | get => this.Fields[(int)ServiceControlSymbolFields.UninstallStop].AsBool(); | ||
95 | set => this.Set((int)ServiceControlSymbolFields.UninstallStop, value); | ||
96 | } | ||
97 | |||
98 | public string Arguments | ||
99 | { | ||
100 | get => (string)this.Fields[(int)ServiceControlSymbolFields.Arguments]; | ||
101 | set => this.Set((int)ServiceControlSymbolFields.Arguments, value); | ||
102 | } | ||
103 | |||
104 | public bool? Wait | ||
105 | { | ||
106 | get => this.Fields[(int)ServiceControlSymbolFields.Wait].AsNullableBool(); | ||
107 | set => this.Set((int)ServiceControlSymbolFields.Wait, value); | ||
108 | } | ||
109 | |||
110 | public string ComponentRef | ||
111 | { | ||
112 | get => (string)this.Fields[(int)ServiceControlSymbolFields.ComponentRef]; | ||
113 | set => this.Set((int)ServiceControlSymbolFields.ComponentRef, value); | ||
114 | } | ||
115 | } | ||
116 | } \ No newline at end of file | ||
diff --git a/src/api/wix/WixToolset.Data/Symbols/ServiceInstallSymbol.cs b/src/api/wix/WixToolset.Data/Symbols/ServiceInstallSymbol.cs new file mode 100644 index 00000000..f7ec8dbf --- /dev/null +++ b/src/api/wix/WixToolset.Data/Symbols/ServiceInstallSymbol.cs | |||
@@ -0,0 +1,173 @@ | |||
1 | // Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. | ||
2 | |||
3 | namespace WixToolset.Data | ||
4 | { | ||
5 | using WixToolset.Data.Symbols; | ||
6 | |||
7 | public static partial class SymbolDefinitions | ||
8 | { | ||
9 | public static readonly IntermediateSymbolDefinition ServiceInstall = new IntermediateSymbolDefinition( | ||
10 | SymbolDefinitionType.ServiceInstall, | ||
11 | new[] | ||
12 | { | ||
13 | new IntermediateFieldDefinition(nameof(ServiceInstallSymbolFields.Name), IntermediateFieldType.String), | ||
14 | new IntermediateFieldDefinition(nameof(ServiceInstallSymbolFields.DisplayName), IntermediateFieldType.String), | ||
15 | new IntermediateFieldDefinition(nameof(ServiceInstallSymbolFields.ServiceType), IntermediateFieldType.Number), | ||
16 | new IntermediateFieldDefinition(nameof(ServiceInstallSymbolFields.StartType), IntermediateFieldType.Number), | ||
17 | new IntermediateFieldDefinition(nameof(ServiceInstallSymbolFields.ErrorControl), IntermediateFieldType.Number), | ||
18 | new IntermediateFieldDefinition(nameof(ServiceInstallSymbolFields.LoadOrderGroup), IntermediateFieldType.String), | ||
19 | new IntermediateFieldDefinition(nameof(ServiceInstallSymbolFields.Dependencies), IntermediateFieldType.String), | ||
20 | new IntermediateFieldDefinition(nameof(ServiceInstallSymbolFields.StartName), IntermediateFieldType.String), | ||
21 | new IntermediateFieldDefinition(nameof(ServiceInstallSymbolFields.Password), IntermediateFieldType.String), | ||
22 | new IntermediateFieldDefinition(nameof(ServiceInstallSymbolFields.Arguments), IntermediateFieldType.String), | ||
23 | new IntermediateFieldDefinition(nameof(ServiceInstallSymbolFields.ComponentRef), IntermediateFieldType.String), | ||
24 | new IntermediateFieldDefinition(nameof(ServiceInstallSymbolFields.Description), IntermediateFieldType.String), | ||
25 | new IntermediateFieldDefinition(nameof(ServiceInstallSymbolFields.Interactive), IntermediateFieldType.Bool), | ||
26 | new IntermediateFieldDefinition(nameof(ServiceInstallSymbolFields.Vital), IntermediateFieldType.Bool), | ||
27 | }, | ||
28 | typeof(ServiceInstallSymbol)); | ||
29 | } | ||
30 | } | ||
31 | |||
32 | namespace WixToolset.Data.Symbols | ||
33 | { | ||
34 | public enum ServiceInstallSymbolFields | ||
35 | { | ||
36 | Name, | ||
37 | DisplayName, | ||
38 | ServiceType, | ||
39 | StartType, | ||
40 | ErrorControl, | ||
41 | LoadOrderGroup, | ||
42 | Dependencies, | ||
43 | StartName, | ||
44 | Password, | ||
45 | Arguments, | ||
46 | ComponentRef, | ||
47 | Description, | ||
48 | Interactive, | ||
49 | Vital, | ||
50 | } | ||
51 | |||
52 | public enum ServiceType | ||
53 | { | ||
54 | KernelDriver, | ||
55 | SystemDriver, | ||
56 | OwnProcess = 0x10, | ||
57 | ShareProcess = 0x20, | ||
58 | InteractiveProcess = 0x100, | ||
59 | } | ||
60 | |||
61 | public enum ServiceStartType | ||
62 | { | ||
63 | Boot, | ||
64 | System, | ||
65 | Auto, | ||
66 | Demand, | ||
67 | Disabled, | ||
68 | } | ||
69 | |||
70 | public enum ServiceErrorControl | ||
71 | { | ||
72 | Ignore, | ||
73 | Normal, | ||
74 | Critical = 3, | ||
75 | } | ||
76 | |||
77 | public class ServiceInstallSymbol : IntermediateSymbol | ||
78 | { | ||
79 | public ServiceInstallSymbol() : base(SymbolDefinitions.ServiceInstall, null, null) | ||
80 | { | ||
81 | } | ||
82 | |||
83 | public ServiceInstallSymbol(SourceLineNumber sourceLineNumber, Identifier id = null) : base(SymbolDefinitions.ServiceInstall, sourceLineNumber, id) | ||
84 | { | ||
85 | } | ||
86 | |||
87 | public IntermediateField this[ServiceInstallSymbolFields index] => this.Fields[(int)index]; | ||
88 | |||
89 | public string Name | ||
90 | { | ||
91 | get => (string)this.Fields[(int)ServiceInstallSymbolFields.Name]; | ||
92 | set => this.Set((int)ServiceInstallSymbolFields.Name, value); | ||
93 | } | ||
94 | |||
95 | public string DisplayName | ||
96 | { | ||
97 | get => (string)this.Fields[(int)ServiceInstallSymbolFields.DisplayName]; | ||
98 | set => this.Set((int)ServiceInstallSymbolFields.DisplayName, value); | ||
99 | } | ||
100 | |||
101 | public ServiceType ServiceType | ||
102 | { | ||
103 | get => (ServiceType)this.Fields[(int)ServiceInstallSymbolFields.ServiceType].AsNumber(); | ||
104 | set => this.Set((int)ServiceInstallSymbolFields.ServiceType, (int)value); | ||
105 | } | ||
106 | |||
107 | public ServiceStartType StartType | ||
108 | { | ||
109 | get => (ServiceStartType)this.Fields[(int)ServiceInstallSymbolFields.StartType].AsNumber(); | ||
110 | set => this.Set((int)ServiceInstallSymbolFields.StartType, (int)value); | ||
111 | } | ||
112 | |||
113 | public ServiceErrorControl ErrorControl | ||
114 | { | ||
115 | get => (ServiceErrorControl)this.Fields[(int)ServiceInstallSymbolFields.ErrorControl].AsNumber(); | ||
116 | set => this.Set((int)ServiceInstallSymbolFields.ErrorControl, (int)value); | ||
117 | } | ||
118 | |||
119 | public string LoadOrderGroup | ||
120 | { | ||
121 | get => (string)this.Fields[(int)ServiceInstallSymbolFields.LoadOrderGroup]; | ||
122 | set => this.Set((int)ServiceInstallSymbolFields.LoadOrderGroup, value); | ||
123 | } | ||
124 | |||
125 | public string Dependencies | ||
126 | { | ||
127 | get => (string)this.Fields[(int)ServiceInstallSymbolFields.Dependencies]; | ||
128 | set => this.Set((int)ServiceInstallSymbolFields.Dependencies, value); | ||
129 | } | ||
130 | |||
131 | public string StartName | ||
132 | { | ||
133 | get => (string)this.Fields[(int)ServiceInstallSymbolFields.StartName]; | ||
134 | set => this.Set((int)ServiceInstallSymbolFields.StartName, value); | ||
135 | } | ||
136 | |||
137 | public string Password | ||
138 | { | ||
139 | get => (string)this.Fields[(int)ServiceInstallSymbolFields.Password]; | ||
140 | set => this.Set((int)ServiceInstallSymbolFields.Password, value); | ||
141 | } | ||
142 | |||
143 | public string Arguments | ||
144 | { | ||
145 | get => (string)this.Fields[(int)ServiceInstallSymbolFields.Arguments]; | ||
146 | set => this.Set((int)ServiceInstallSymbolFields.Arguments, value); | ||
147 | } | ||
148 | |||
149 | public string ComponentRef | ||
150 | { | ||
151 | get => (string)this.Fields[(int)ServiceInstallSymbolFields.ComponentRef]; | ||
152 | set => this.Set((int)ServiceInstallSymbolFields.ComponentRef, value); | ||
153 | } | ||
154 | |||
155 | public string Description | ||
156 | { | ||
157 | get => (string)this.Fields[(int)ServiceInstallSymbolFields.Description]; | ||
158 | set => this.Set((int)ServiceInstallSymbolFields.Description, value); | ||
159 | } | ||
160 | |||
161 | public bool Interactive | ||
162 | { | ||
163 | get => this.Fields[(int)ServiceInstallSymbolFields.Interactive].AsBool(); | ||
164 | set => this.Set((int)ServiceInstallSymbolFields.Interactive, value); | ||
165 | } | ||
166 | |||
167 | public bool Vital | ||
168 | { | ||
169 | get => this.Fields[(int)ServiceInstallSymbolFields.Vital].AsBool(); | ||
170 | set => this.Set((int)ServiceInstallSymbolFields.Vital, value); | ||
171 | } | ||
172 | } | ||
173 | } \ No newline at end of file | ||
diff --git a/src/api/wix/WixToolset.Data/Symbols/ShortcutSymbol.cs b/src/api/wix/WixToolset.Data/Symbols/ShortcutSymbol.cs new file mode 100644 index 00000000..f32fe4af --- /dev/null +++ b/src/api/wix/WixToolset.Data/Symbols/ShortcutSymbol.cs | |||
@@ -0,0 +1,171 @@ | |||
1 | // Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. | ||
2 | |||
3 | namespace WixToolset.Data | ||
4 | { | ||
5 | using WixToolset.Data.Symbols; | ||
6 | |||
7 | public static partial class SymbolDefinitions | ||
8 | { | ||
9 | public static readonly IntermediateSymbolDefinition Shortcut = new IntermediateSymbolDefinition( | ||
10 | SymbolDefinitionType.Shortcut, | ||
11 | new[] | ||
12 | { | ||
13 | new IntermediateFieldDefinition(nameof(ShortcutSymbolFields.DirectoryRef), IntermediateFieldType.String), | ||
14 | new IntermediateFieldDefinition(nameof(ShortcutSymbolFields.Name), IntermediateFieldType.String), | ||
15 | new IntermediateFieldDefinition(nameof(ShortcutSymbolFields.ShortName), IntermediateFieldType.String), | ||
16 | new IntermediateFieldDefinition(nameof(ShortcutSymbolFields.ComponentRef), IntermediateFieldType.String), | ||
17 | new IntermediateFieldDefinition(nameof(ShortcutSymbolFields.Target), IntermediateFieldType.String), | ||
18 | new IntermediateFieldDefinition(nameof(ShortcutSymbolFields.Arguments), IntermediateFieldType.String), | ||
19 | new IntermediateFieldDefinition(nameof(ShortcutSymbolFields.Description), IntermediateFieldType.String), | ||
20 | new IntermediateFieldDefinition(nameof(ShortcutSymbolFields.Hotkey), IntermediateFieldType.Number), | ||
21 | new IntermediateFieldDefinition(nameof(ShortcutSymbolFields.IconRef), IntermediateFieldType.String), | ||
22 | new IntermediateFieldDefinition(nameof(ShortcutSymbolFields.IconIndex), IntermediateFieldType.Number), | ||
23 | new IntermediateFieldDefinition(nameof(ShortcutSymbolFields.Show), IntermediateFieldType.Number), | ||
24 | new IntermediateFieldDefinition(nameof(ShortcutSymbolFields.WkDir), IntermediateFieldType.String), | ||
25 | new IntermediateFieldDefinition(nameof(ShortcutSymbolFields.DisplayResourceDLL), IntermediateFieldType.String), | ||
26 | new IntermediateFieldDefinition(nameof(ShortcutSymbolFields.DisplayResourceId), IntermediateFieldType.Number), | ||
27 | new IntermediateFieldDefinition(nameof(ShortcutSymbolFields.DescriptionResourceDLL), IntermediateFieldType.String), | ||
28 | new IntermediateFieldDefinition(nameof(ShortcutSymbolFields.DescriptionResourceId), IntermediateFieldType.Number), | ||
29 | }, | ||
30 | typeof(ShortcutSymbol)); | ||
31 | } | ||
32 | } | ||
33 | |||
34 | namespace WixToolset.Data.Symbols | ||
35 | { | ||
36 | public enum ShortcutSymbolFields | ||
37 | { | ||
38 | DirectoryRef, | ||
39 | Name, | ||
40 | ShortName, | ||
41 | ComponentRef, | ||
42 | Target, | ||
43 | Arguments, | ||
44 | Description, | ||
45 | Hotkey, | ||
46 | IconRef, | ||
47 | IconIndex, | ||
48 | Show, | ||
49 | WkDir, | ||
50 | DisplayResourceDLL, | ||
51 | DisplayResourceId, | ||
52 | DescriptionResourceDLL, | ||
53 | DescriptionResourceId, | ||
54 | } | ||
55 | |||
56 | public enum ShortcutShowType | ||
57 | { | ||
58 | Normal = 1, | ||
59 | Maximized = 3, | ||
60 | Minimized = 7 | ||
61 | } | ||
62 | |||
63 | public class ShortcutSymbol : IntermediateSymbol | ||
64 | { | ||
65 | public ShortcutSymbol() : base(SymbolDefinitions.Shortcut, null, null) | ||
66 | { | ||
67 | } | ||
68 | |||
69 | public ShortcutSymbol(SourceLineNumber sourceLineNumber, Identifier id = null) : base(SymbolDefinitions.Shortcut, sourceLineNumber, id) | ||
70 | { | ||
71 | } | ||
72 | |||
73 | public IntermediateField this[ShortcutSymbolFields index] => this.Fields[(int)index]; | ||
74 | |||
75 | public string DirectoryRef | ||
76 | { | ||
77 | get => (string)this.Fields[(int)ShortcutSymbolFields.DirectoryRef]; | ||
78 | set => this.Set((int)ShortcutSymbolFields.DirectoryRef, value); | ||
79 | } | ||
80 | |||
81 | public string Name | ||
82 | { | ||
83 | get => (string)this.Fields[(int)ShortcutSymbolFields.Name]; | ||
84 | set => this.Set((int)ShortcutSymbolFields.Name, value); | ||
85 | } | ||
86 | |||
87 | public string ShortName | ||
88 | { | ||
89 | get => (string)this.Fields[(int)ShortcutSymbolFields.ShortName]; | ||
90 | set => this.Set((int)ShortcutSymbolFields.ShortName, value); | ||
91 | } | ||
92 | |||
93 | public string ComponentRef | ||
94 | { | ||
95 | get => (string)this.Fields[(int)ShortcutSymbolFields.ComponentRef]; | ||
96 | set => this.Set((int)ShortcutSymbolFields.ComponentRef, value); | ||
97 | } | ||
98 | |||
99 | public string Target | ||
100 | { | ||
101 | get => (string)this.Fields[(int)ShortcutSymbolFields.Target]; | ||
102 | set => this.Set((int)ShortcutSymbolFields.Target, value); | ||
103 | } | ||
104 | |||
105 | public string Arguments | ||
106 | { | ||
107 | get => (string)this.Fields[(int)ShortcutSymbolFields.Arguments]; | ||
108 | set => this.Set((int)ShortcutSymbolFields.Arguments, value); | ||
109 | } | ||
110 | |||
111 | public string Description | ||
112 | { | ||
113 | get => (string)this.Fields[(int)ShortcutSymbolFields.Description]; | ||
114 | set => this.Set((int)ShortcutSymbolFields.Description, value); | ||
115 | } | ||
116 | |||
117 | public int? Hotkey | ||
118 | { | ||
119 | get => this.Fields[(int)ShortcutSymbolFields.Hotkey].AsNullableNumber(); | ||
120 | set => this.Set((int)ShortcutSymbolFields.Hotkey, value); | ||
121 | } | ||
122 | |||
123 | public string IconRef | ||
124 | { | ||
125 | get => (string)this.Fields[(int)ShortcutSymbolFields.IconRef]; | ||
126 | set => this.Set((int)ShortcutSymbolFields.IconRef, value); | ||
127 | } | ||
128 | |||
129 | public int? IconIndex | ||
130 | { | ||
131 | get => this.Fields[(int)ShortcutSymbolFields.IconIndex].AsNullableNumber(); | ||
132 | set => this.Set((int)ShortcutSymbolFields.IconIndex, value); | ||
133 | } | ||
134 | |||
135 | public ShortcutShowType? Show | ||
136 | { | ||
137 | get => (ShortcutShowType?)this.Fields[(int)ShortcutSymbolFields.Show].AsNullableNumber(); | ||
138 | set => this.Set((int)ShortcutSymbolFields.Show, (int?)value); | ||
139 | } | ||
140 | |||
141 | public string WorkingDirectory | ||
142 | { | ||
143 | get => (string)this.Fields[(int)ShortcutSymbolFields.WkDir]; | ||
144 | set => this.Set((int)ShortcutSymbolFields.WkDir, value); | ||
145 | } | ||
146 | |||
147 | public string DisplayResourceDll | ||
148 | { | ||
149 | get => (string)this.Fields[(int)ShortcutSymbolFields.DisplayResourceDLL]; | ||
150 | set => this.Set((int)ShortcutSymbolFields.DisplayResourceDLL, value); | ||
151 | } | ||
152 | |||
153 | public int? DisplayResourceId | ||
154 | { | ||
155 | get => this.Fields[(int)ShortcutSymbolFields.DisplayResourceId].AsNullableNumber(); | ||
156 | set => this.Set((int)ShortcutSymbolFields.DisplayResourceId, value); | ||
157 | } | ||
158 | |||
159 | public string DescriptionResourceDll | ||
160 | { | ||
161 | get => (string)this.Fields[(int)ShortcutSymbolFields.DescriptionResourceDLL]; | ||
162 | set => this.Set((int)ShortcutSymbolFields.DescriptionResourceDLL, value); | ||
163 | } | ||
164 | |||
165 | public int? DescriptionResourceId | ||
166 | { | ||
167 | get => this.Fields[(int)ShortcutSymbolFields.DescriptionResourceId].AsNullableNumber(); | ||
168 | set => this.Set((int)ShortcutSymbolFields.DescriptionResourceId, value); | ||
169 | } | ||
170 | } | ||
171 | } | ||
diff --git a/src/api/wix/WixToolset.Data/Symbols/SignatureSymbol.cs b/src/api/wix/WixToolset.Data/Symbols/SignatureSymbol.cs new file mode 100644 index 00000000..fc2ce088 --- /dev/null +++ b/src/api/wix/WixToolset.Data/Symbols/SignatureSymbol.cs | |||
@@ -0,0 +1,100 @@ | |||
1 | // Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. | ||
2 | |||
3 | namespace WixToolset.Data | ||
4 | { | ||
5 | using WixToolset.Data.Symbols; | ||
6 | |||
7 | public static partial class SymbolDefinitions | ||
8 | { | ||
9 | public static readonly IntermediateSymbolDefinition Signature = new IntermediateSymbolDefinition( | ||
10 | SymbolDefinitionType.Signature, | ||
11 | new[] | ||
12 | { | ||
13 | new IntermediateFieldDefinition(nameof(SignatureSymbolFields.FileName), IntermediateFieldType.String), | ||
14 | new IntermediateFieldDefinition(nameof(SignatureSymbolFields.MinVersion), IntermediateFieldType.String), | ||
15 | new IntermediateFieldDefinition(nameof(SignatureSymbolFields.MaxVersion), IntermediateFieldType.String), | ||
16 | new IntermediateFieldDefinition(nameof(SignatureSymbolFields.MinSize), IntermediateFieldType.Number), | ||
17 | new IntermediateFieldDefinition(nameof(SignatureSymbolFields.MaxSize), IntermediateFieldType.Number), | ||
18 | new IntermediateFieldDefinition(nameof(SignatureSymbolFields.MinDate), IntermediateFieldType.Number), | ||
19 | new IntermediateFieldDefinition(nameof(SignatureSymbolFields.MaxDate), IntermediateFieldType.Number), | ||
20 | new IntermediateFieldDefinition(nameof(SignatureSymbolFields.Languages), IntermediateFieldType.String), | ||
21 | }, | ||
22 | typeof(SignatureSymbol)); | ||
23 | } | ||
24 | } | ||
25 | |||
26 | namespace WixToolset.Data.Symbols | ||
27 | { | ||
28 | public enum SignatureSymbolFields | ||
29 | { | ||
30 | FileName, | ||
31 | MinVersion, | ||
32 | MaxVersion, | ||
33 | MinSize, | ||
34 | MaxSize, | ||
35 | MinDate, | ||
36 | MaxDate, | ||
37 | Languages, | ||
38 | } | ||
39 | |||
40 | public class SignatureSymbol : IntermediateSymbol | ||
41 | { | ||
42 | public SignatureSymbol() : base(SymbolDefinitions.Signature, null, null) | ||
43 | { | ||
44 | } | ||
45 | |||
46 | public SignatureSymbol(SourceLineNumber sourceLineNumber, Identifier id = null) : base(SymbolDefinitions.Signature, sourceLineNumber, id) | ||
47 | { | ||
48 | } | ||
49 | |||
50 | public IntermediateField this[SignatureSymbolFields index] => this.Fields[(int)index]; | ||
51 | |||
52 | public string FileName | ||
53 | { | ||
54 | get => (string)this.Fields[(int)SignatureSymbolFields.FileName]; | ||
55 | set => this.Set((int)SignatureSymbolFields.FileName, value); | ||
56 | } | ||
57 | |||
58 | public string MinVersion | ||
59 | { | ||
60 | get => (string)this.Fields[(int)SignatureSymbolFields.MinVersion]; | ||
61 | set => this.Set((int)SignatureSymbolFields.MinVersion, value); | ||
62 | } | ||
63 | |||
64 | public string MaxVersion | ||
65 | { | ||
66 | get => (string)this.Fields[(int)SignatureSymbolFields.MaxVersion]; | ||
67 | set => this.Set((int)SignatureSymbolFields.MaxVersion, value); | ||
68 | } | ||
69 | |||
70 | public int? MinSize | ||
71 | { | ||
72 | get => (int?)this.Fields[(int)SignatureSymbolFields.MinSize]; | ||
73 | set => this.Set((int)SignatureSymbolFields.MinSize, value); | ||
74 | } | ||
75 | |||
76 | public int? MaxSize | ||
77 | { | ||
78 | get => (int?)this.Fields[(int)SignatureSymbolFields.MaxSize]; | ||
79 | set => this.Set((int)SignatureSymbolFields.MaxSize, value); | ||
80 | } | ||
81 | |||
82 | public int? MinDate | ||
83 | { | ||
84 | get => (int?)this.Fields[(int)SignatureSymbolFields.MinDate]; | ||
85 | set => this.Set((int)SignatureSymbolFields.MinDate, value); | ||
86 | } | ||
87 | |||
88 | public int? MaxDate | ||
89 | { | ||
90 | get => (int?)this.Fields[(int)SignatureSymbolFields.MaxDate]; | ||
91 | set => this.Set((int)SignatureSymbolFields.MaxDate, value); | ||
92 | } | ||
93 | |||
94 | public string Languages | ||
95 | { | ||
96 | get => (string)this.Fields[(int)SignatureSymbolFields.Languages]; | ||
97 | set => this.Set((int)SignatureSymbolFields.Languages, value); | ||
98 | } | ||
99 | } | ||
100 | } \ No newline at end of file | ||
diff --git a/src/api/wix/WixToolset.Data/Symbols/SoftwareIdentificationTagSymbol.cs b/src/api/wix/WixToolset.Data/Symbols/SoftwareIdentificationTagSymbol.cs new file mode 100644 index 00000000..60bf22a2 --- /dev/null +++ b/src/api/wix/WixToolset.Data/Symbols/SoftwareIdentificationTagSymbol.cs | |||
@@ -0,0 +1,76 @@ | |||
1 | // Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. | ||
2 | |||
3 | namespace WixToolset.Data | ||
4 | { | ||
5 | using WixToolset.Data.Symbols; | ||
6 | |||
7 | public static partial class SymbolDefinitions | ||
8 | { | ||
9 | public static readonly IntermediateSymbolDefinition SoftwareIdentificationTag = new IntermediateSymbolDefinition( | ||
10 | SymbolDefinitionType.SoftwareIdentificationTag, | ||
11 | new[] | ||
12 | { | ||
13 | new IntermediateFieldDefinition(nameof(SoftwareIdentificationTagSymbolFields.FileRef), IntermediateFieldType.String), | ||
14 | new IntermediateFieldDefinition(nameof(SoftwareIdentificationTagSymbolFields.Regid), IntermediateFieldType.String), | ||
15 | new IntermediateFieldDefinition(nameof(SoftwareIdentificationTagSymbolFields.UniqueId), IntermediateFieldType.String), | ||
16 | new IntermediateFieldDefinition(nameof(SoftwareIdentificationTagSymbolFields.PersistentId), IntermediateFieldType.String), | ||
17 | new IntermediateFieldDefinition(nameof(SoftwareIdentificationTagSymbolFields.Alias), IntermediateFieldType.String), | ||
18 | }, | ||
19 | typeof(SoftwareIdentificationTagSymbol)); | ||
20 | } | ||
21 | } | ||
22 | |||
23 | namespace WixToolset.Data.Symbols | ||
24 | { | ||
25 | public enum SoftwareIdentificationTagSymbolFields | ||
26 | { | ||
27 | FileRef, | ||
28 | Regid, | ||
29 | UniqueId, | ||
30 | PersistentId, | ||
31 | Alias, | ||
32 | } | ||
33 | |||
34 | public class SoftwareIdentificationTagSymbol : IntermediateSymbol | ||
35 | { | ||
36 | public SoftwareIdentificationTagSymbol() : base(SymbolDefinitions.SoftwareIdentificationTag, null, null) | ||
37 | { | ||
38 | } | ||
39 | |||
40 | public SoftwareIdentificationTagSymbol(SourceLineNumber sourceLineNumber, Identifier id = null) : base(SymbolDefinitions.SoftwareIdentificationTag, sourceLineNumber, id) | ||
41 | { | ||
42 | } | ||
43 | |||
44 | public IntermediateField this[SoftwareIdentificationTagSymbolFields index] => this.Fields[(int)index]; | ||
45 | |||
46 | public string FileRef | ||
47 | { | ||
48 | get => this.Fields[(int)SoftwareIdentificationTagSymbolFields.FileRef].AsString(); | ||
49 | set => this.Set((int)SoftwareIdentificationTagSymbolFields.FileRef, value); | ||
50 | } | ||
51 | |||
52 | public string Regid | ||
53 | { | ||
54 | get => this.Fields[(int)SoftwareIdentificationTagSymbolFields.Regid].AsString(); | ||
55 | set => this.Set((int)SoftwareIdentificationTagSymbolFields.Regid, value); | ||
56 | } | ||
57 | |||
58 | public string TagId | ||
59 | { | ||
60 | get => this.Fields[(int)SoftwareIdentificationTagSymbolFields.UniqueId].AsString(); | ||
61 | set => this.Set((int)SoftwareIdentificationTagSymbolFields.UniqueId, value); | ||
62 | } | ||
63 | |||
64 | public string PersistentId | ||
65 | { | ||
66 | get => this.Fields[(int)SoftwareIdentificationTagSymbolFields.PersistentId].AsString(); | ||
67 | set => this.Set((int)SoftwareIdentificationTagSymbolFields.PersistentId, value); | ||
68 | } | ||
69 | |||
70 | public string Alias | ||
71 | { | ||
72 | get => this.Fields[(int)SoftwareIdentificationTagSymbolFields.Alias].AsString(); | ||
73 | set => this.Set((int)SoftwareIdentificationTagSymbolFields.Alias, value); | ||
74 | } | ||
75 | } | ||
76 | } | ||
diff --git a/src/api/wix/WixToolset.Data/Symbols/SummaryInformationSymbol.cs b/src/api/wix/WixToolset.Data/Symbols/SummaryInformationSymbol.cs new file mode 100644 index 00000000..b3b233fe --- /dev/null +++ b/src/api/wix/WixToolset.Data/Symbols/SummaryInformationSymbol.cs | |||
@@ -0,0 +1,102 @@ | |||
1 | // Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. | ||
2 | |||
3 | namespace WixToolset.Data | ||
4 | { | ||
5 | using WixToolset.Data.Symbols; | ||
6 | |||
7 | public static partial class SymbolDefinitions | ||
8 | { | ||
9 | public static readonly IntermediateSymbolDefinition SummaryInformation = new IntermediateSymbolDefinition( | ||
10 | SymbolDefinitionType.SummaryInformation, | ||
11 | new[] | ||
12 | { | ||
13 | new IntermediateFieldDefinition(nameof(SummaryInformationSymbolFields.PropertyId), IntermediateFieldType.Number), | ||
14 | new IntermediateFieldDefinition(nameof(SummaryInformationSymbolFields.Value), IntermediateFieldType.String), | ||
15 | }, | ||
16 | typeof(SummaryInformationSymbol)); | ||
17 | } | ||
18 | } | ||
19 | |||
20 | namespace WixToolset.Data.Symbols | ||
21 | { | ||
22 | public enum SummaryInformationSymbolFields | ||
23 | { | ||
24 | PropertyId, | ||
25 | Value, | ||
26 | } | ||
27 | |||
28 | public enum SummaryInformationType | ||
29 | { | ||
30 | Codepage = 1, | ||
31 | Title, | ||
32 | Subject, | ||
33 | PatchPackageName = 3, //used by patches | ||
34 | Author, | ||
35 | Keywords, | ||
36 | Comments, | ||
37 | PlatformAndLanguage, | ||
38 | PatchProductCodes = 7, // used by patches | ||
39 | TransformPlatformAndLanguageOrStorageNames, | ||
40 | TransformNames = 8, // used by patches | ||
41 | PackageCode, | ||
42 | PatchCode = 9, // used by patches | ||
43 | TransformProductCodes = 9, // used by transforms | ||
44 | Reserved11 = 11, // reserved by patches | ||
45 | Created, | ||
46 | LastSaved, | ||
47 | WindowsInstallerVersion, | ||
48 | Reserved14 = 14, // reserved by patches | ||
49 | WordCount, | ||
50 | PatchInstallerRequirement = 15, // used by patches | ||
51 | Reserved16, // reserved by patches | ||
52 | TransformValidationFlags = 16, // used by transforms | ||
53 | CreatingApplication = 18, | ||
54 | Security | ||
55 | } | ||
56 | |||
57 | /// <summary> | ||
58 | /// Summary information values for the PachInstallerRequirement property. | ||
59 | /// </summary> | ||
60 | public enum PatchInstallerRequirement | ||
61 | { | ||
62 | /// <summary>Any version of the installer will do</summary> | ||
63 | Version10 = 1, | ||
64 | |||
65 | /// <summary>At least 1.2</summary> | ||
66 | Version12 = 2, | ||
67 | |||
68 | /// <summary>At least 2.0</summary> | ||
69 | Version20 = 3, | ||
70 | |||
71 | /// <summary>At least 3.0</summary> | ||
72 | Version30 = 4, | ||
73 | |||
74 | /// <summary>At least 3.1</summary> | ||
75 | Version31 = 5, | ||
76 | } | ||
77 | |||
78 | public class SummaryInformationSymbol : IntermediateSymbol | ||
79 | { | ||
80 | public SummaryInformationSymbol() : base(SymbolDefinitions.SummaryInformation, null, null) | ||
81 | { | ||
82 | } | ||
83 | |||
84 | public SummaryInformationSymbol(SourceLineNumber sourceLineNumber, Identifier id = null) : base(SymbolDefinitions.SummaryInformation, sourceLineNumber, id) | ||
85 | { | ||
86 | } | ||
87 | |||
88 | public IntermediateField this[SummaryInformationSymbolFields index] => this.Fields[(int)index]; | ||
89 | |||
90 | public SummaryInformationType PropertyId | ||
91 | { | ||
92 | get => (SummaryInformationType)this.Fields[(int)SummaryInformationSymbolFields.PropertyId].AsNumber(); | ||
93 | set => this.Set((int)SummaryInformationSymbolFields.PropertyId, (int)value); | ||
94 | } | ||
95 | |||
96 | public string Value | ||
97 | { | ||
98 | get => (string)this.Fields[(int)SummaryInformationSymbolFields.Value]; | ||
99 | set => this.Set((int)SummaryInformationSymbolFields.Value, value); | ||
100 | } | ||
101 | } | ||
102 | } | ||
diff --git a/src/api/wix/WixToolset.Data/Symbols/SymbolDefinitions.cs b/src/api/wix/WixToolset.Data/Symbols/SymbolDefinitions.cs new file mode 100644 index 00000000..0ed0a4ec --- /dev/null +++ b/src/api/wix/WixToolset.Data/Symbols/SymbolDefinitions.cs | |||
@@ -0,0 +1,776 @@ | |||
1 | // Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. | ||
2 | |||
3 | namespace WixToolset.Data | ||
4 | { | ||
5 | using System; | ||
6 | |||
7 | public enum SymbolDefinitionType | ||
8 | { | ||
9 | SummaryInformation, | ||
10 | ActionText, | ||
11 | AppId, | ||
12 | AppSearch, | ||
13 | BBControl, | ||
14 | Billboard, | ||
15 | Binary, | ||
16 | CCPSearch, | ||
17 | CheckBox, | ||
18 | Class, | ||
19 | ComboBox, | ||
20 | CompLocator, | ||
21 | Complus, | ||
22 | Component, | ||
23 | Condition, | ||
24 | Control, | ||
25 | ControlCondition, | ||
26 | ControlEvent, | ||
27 | CreateFolder, | ||
28 | CustomAction, | ||
29 | Dialog, | ||
30 | Directory, | ||
31 | DrLocator, | ||
32 | DuplicateFile, | ||
33 | Environment, | ||
34 | Error, | ||
35 | EventMapping, | ||
36 | Extension, | ||
37 | ExternalFiles, | ||
38 | FamilyFileRanges, | ||
39 | Feature, | ||
40 | FeatureComponents, | ||
41 | File, | ||
42 | FileSFPCatalog, | ||
43 | Icon, | ||
44 | ImageFamilies, | ||
45 | IniFile, | ||
46 | IniLocator, | ||
47 | IsolatedComponent, | ||
48 | LaunchCondition, | ||
49 | ListBox, | ||
50 | ListView, | ||
51 | LockPermissions, | ||
52 | Media, | ||
53 | MIME, | ||
54 | ModuleComponents, | ||
55 | ModuleConfiguration, | ||
56 | ModuleDependency, | ||
57 | ModuleExclusion, | ||
58 | ModuleIgnoreTable, | ||
59 | WixModule, | ||
60 | ModuleSubstitution, | ||
61 | MoveFile, | ||
62 | Assembly, | ||
63 | MsiAssemblyName, | ||
64 | MsiDigitalCertificate, | ||
65 | MsiDigitalSignature, | ||
66 | MsiEmbeddedChainer, | ||
67 | MsiEmbeddedUI, | ||
68 | MsiFileHash, | ||
69 | MsiLockPermissionsEx, | ||
70 | MsiPackageCertificate, | ||
71 | MsiPatchCertificate, | ||
72 | MsiPatchHeaders, | ||
73 | MsiPatchMetadata, | ||
74 | MsiPatchOldAssemblyFile, | ||
75 | MsiPatchOldAssemblyName, | ||
76 | MsiPatchSequence, | ||
77 | MsiServiceConfig, | ||
78 | MsiServiceConfigFailureActions, | ||
79 | MsiShortcutProperty, | ||
80 | ODBCAttribute, | ||
81 | ODBCDataSource, | ||
82 | ODBCDriver, | ||
83 | ODBCSourceAttribute, | ||
84 | ODBCTranslator, | ||
85 | Patch, | ||
86 | PatchMetadata, | ||
87 | PatchPackage, | ||
88 | PatchSequence, | ||
89 | ProgId, | ||
90 | Properties, | ||
91 | Property, | ||
92 | ProvidesDependency, | ||
93 | PublishComponent, | ||
94 | RadioButton, | ||
95 | Registry, | ||
96 | RegLocator, | ||
97 | RemoveFile, | ||
98 | RemoveRegistry, | ||
99 | ReserveCost, | ||
100 | ServiceControl, | ||
101 | ServiceInstall, | ||
102 | SFPCatalog, | ||
103 | Shortcut, | ||
104 | Signature, | ||
105 | SoftwareIdentificationTag, | ||
106 | TargetFilesOptionalData, | ||
107 | TargetImages, | ||
108 | TextStyle, | ||
109 | TypeLib, | ||
110 | UIText, | ||
111 | Upgrade, | ||
112 | UpgradedFilesOptionalData, | ||
113 | UpgradedFilesToIgnore, | ||
114 | UpgradedImages, | ||
115 | Verb, | ||
116 | WixAction, | ||
117 | WixApprovedExeForElevation, | ||
118 | WixBindUpdatedFiles, | ||
119 | WixBootstrapperApplication, | ||
120 | WixBootstrapperApplicationDll, | ||
121 | WixBuildInfo, | ||
122 | WixBundle, | ||
123 | WixBundleContainer, | ||
124 | WixBundleCustomData, | ||
125 | WixBundleCustomDataAttribute, | ||
126 | WixBundleCustomDataCell, | ||
127 | WixBundleExePackage, | ||
128 | WixBundleExePackagePayload, | ||
129 | WixBundleExtension, | ||
130 | WixBundleMsiFeature, | ||
131 | WixBundleMsiPackage, | ||
132 | WixBundleMsiPackagePayload, | ||
133 | WixBundleMsiProperty, | ||
134 | WixBundleMspPackage, | ||
135 | WixBundleMspPackagePayload, | ||
136 | WixBundleMsuPackage, | ||
137 | WixBundleMsuPackagePayload, | ||
138 | WixBundlePackage, | ||
139 | WixBundlePackageCommandLine, | ||
140 | WixBundlePackageExitCode, | ||
141 | WixBundlePackageGroup, | ||
142 | WixBundlePatchTargetCode, | ||
143 | WixBundlePayload, | ||
144 | WixBundlePayloadGroup, | ||
145 | WixBundleRelatedPackage, | ||
146 | WixBundleRollbackBoundary, | ||
147 | WixBundleSlipstreamMsp, | ||
148 | WixBundleTag, | ||
149 | WixBundleUpdate, | ||
150 | WixBundleVariable, | ||
151 | WixChain, | ||
152 | WixChainItem, | ||
153 | WixComplexReference, | ||
154 | WixComponentGroup, | ||
155 | WixComponentSearch, | ||
156 | WixCustomTable, | ||
157 | WixCustomTableCell, | ||
158 | WixCustomTableColumn, | ||
159 | WixDeltaPatchFile, | ||
160 | WixDeltaPatchSymbolPaths, | ||
161 | WixDependency, | ||
162 | WixDependencyRef, | ||
163 | WixDependencyProvider, | ||
164 | WixEnsureTable, | ||
165 | WixFeatureGroup, | ||
166 | WixFeatureModules, | ||
167 | WixFileSearch, | ||
168 | WixFragment, | ||
169 | WixGroup, | ||
170 | WixInstanceComponent, | ||
171 | WixInstanceTransforms, | ||
172 | WixMediaTemplate, | ||
173 | WixMerge, | ||
174 | WixOrdering, | ||
175 | WixPackage, | ||
176 | WixPatchBaseline, | ||
177 | WixPatchFamilyGroup, | ||
178 | WixPatch, | ||
179 | WixPatchRef, | ||
180 | WixPatchTarget, | ||
181 | WixProductSearch, | ||
182 | WixProductTag, | ||
183 | WixProperty, | ||
184 | WixRegistrySearch, | ||
185 | WixRelatedBundle, | ||
186 | WixSearch, | ||
187 | WixSearchRelation, | ||
188 | WixSetVariable, | ||
189 | WixSimpleReference, | ||
190 | WixSuppressAction, | ||
191 | WixSuppressModularization, | ||
192 | WixUI, | ||
193 | WixUpdateRegistration, | ||
194 | WixVariable, | ||
195 | MustBeFromAnExtension, | ||
196 | } | ||
197 | |||
198 | public static partial class SymbolDefinitions | ||
199 | { | ||
200 | public static readonly Version Version = new Version("4.0.0"); | ||
201 | |||
202 | public static IntermediateSymbolDefinition ByName(string name) | ||
203 | { | ||
204 | if (!Enum.TryParse(name, out SymbolDefinitionType type) || type == SymbolDefinitionType.MustBeFromAnExtension) | ||
205 | { | ||
206 | return null; | ||
207 | } | ||
208 | |||
209 | return ByType(type); | ||
210 | } | ||
211 | |||
212 | public static IntermediateSymbolDefinition ByType(SymbolDefinitionType type) | ||
213 | { | ||
214 | switch (type) | ||
215 | { | ||
216 | case SymbolDefinitionType.SummaryInformation: | ||
217 | return SymbolDefinitions.SummaryInformation; | ||
218 | |||
219 | case SymbolDefinitionType.ActionText: | ||
220 | return SymbolDefinitions.ActionText; | ||
221 | |||
222 | case SymbolDefinitionType.AppId: | ||
223 | return SymbolDefinitions.AppId; | ||
224 | |||
225 | case SymbolDefinitionType.AppSearch: | ||
226 | return SymbolDefinitions.AppSearch; | ||
227 | |||
228 | case SymbolDefinitionType.BBControl: | ||
229 | return SymbolDefinitions.BBControl; | ||
230 | |||
231 | case SymbolDefinitionType.Billboard: | ||
232 | return SymbolDefinitions.Billboard; | ||
233 | |||
234 | case SymbolDefinitionType.Binary: | ||
235 | return SymbolDefinitions.Binary; | ||
236 | |||
237 | case SymbolDefinitionType.CCPSearch: | ||
238 | return SymbolDefinitions.CCPSearch; | ||
239 | |||
240 | case SymbolDefinitionType.CheckBox: | ||
241 | return SymbolDefinitions.CheckBox; | ||
242 | |||
243 | case SymbolDefinitionType.Class: | ||
244 | return SymbolDefinitions.Class; | ||
245 | |||
246 | case SymbolDefinitionType.ComboBox: | ||
247 | return SymbolDefinitions.ComboBox; | ||
248 | |||
249 | case SymbolDefinitionType.CompLocator: | ||
250 | return SymbolDefinitions.CompLocator; | ||
251 | |||
252 | case SymbolDefinitionType.Complus: | ||
253 | return SymbolDefinitions.Complus; | ||
254 | |||
255 | case SymbolDefinitionType.Component: | ||
256 | return SymbolDefinitions.Component; | ||
257 | |||
258 | case SymbolDefinitionType.Condition: | ||
259 | return SymbolDefinitions.Condition; | ||
260 | |||
261 | case SymbolDefinitionType.Control: | ||
262 | return SymbolDefinitions.Control; | ||
263 | |||
264 | case SymbolDefinitionType.ControlCondition: | ||
265 | return SymbolDefinitions.ControlCondition; | ||
266 | |||
267 | case SymbolDefinitionType.ControlEvent: | ||
268 | return SymbolDefinitions.ControlEvent; | ||
269 | |||
270 | case SymbolDefinitionType.CreateFolder: | ||
271 | return SymbolDefinitions.CreateFolder; | ||
272 | |||
273 | case SymbolDefinitionType.CustomAction: | ||
274 | return SymbolDefinitions.CustomAction; | ||
275 | |||
276 | case SymbolDefinitionType.Dialog: | ||
277 | return SymbolDefinitions.Dialog; | ||
278 | |||
279 | case SymbolDefinitionType.Directory: | ||
280 | return SymbolDefinitions.Directory; | ||
281 | |||
282 | case SymbolDefinitionType.DrLocator: | ||
283 | return SymbolDefinitions.DrLocator; | ||
284 | |||
285 | case SymbolDefinitionType.DuplicateFile: | ||
286 | return SymbolDefinitions.DuplicateFile; | ||
287 | |||
288 | case SymbolDefinitionType.Environment: | ||
289 | return SymbolDefinitions.Environment; | ||
290 | |||
291 | case SymbolDefinitionType.Error: | ||
292 | return SymbolDefinitions.Error; | ||
293 | |||
294 | case SymbolDefinitionType.EventMapping: | ||
295 | return SymbolDefinitions.EventMapping; | ||
296 | |||
297 | case SymbolDefinitionType.Extension: | ||
298 | return SymbolDefinitions.Extension; | ||
299 | |||
300 | case SymbolDefinitionType.ExternalFiles: | ||
301 | return SymbolDefinitions.ExternalFiles; | ||
302 | |||
303 | case SymbolDefinitionType.FamilyFileRanges: | ||
304 | return SymbolDefinitions.FamilyFileRanges; | ||
305 | |||
306 | case SymbolDefinitionType.Feature: | ||
307 | return SymbolDefinitions.Feature; | ||
308 | |||
309 | case SymbolDefinitionType.FeatureComponents: | ||
310 | return SymbolDefinitions.FeatureComponents; | ||
311 | |||
312 | case SymbolDefinitionType.File: | ||
313 | return SymbolDefinitions.File; | ||
314 | |||
315 | case SymbolDefinitionType.FileSFPCatalog: | ||
316 | return SymbolDefinitions.FileSFPCatalog; | ||
317 | |||
318 | case SymbolDefinitionType.Icon: | ||
319 | return SymbolDefinitions.Icon; | ||
320 | |||
321 | case SymbolDefinitionType.ImageFamilies: | ||
322 | return SymbolDefinitions.ImageFamilies; | ||
323 | |||
324 | case SymbolDefinitionType.IniFile: | ||
325 | return SymbolDefinitions.IniFile; | ||
326 | |||
327 | case SymbolDefinitionType.IniLocator: | ||
328 | return SymbolDefinitions.IniLocator; | ||
329 | |||
330 | case SymbolDefinitionType.IsolatedComponent: | ||
331 | return SymbolDefinitions.IsolatedComponent; | ||
332 | |||
333 | case SymbolDefinitionType.LaunchCondition: | ||
334 | return SymbolDefinitions.LaunchCondition; | ||
335 | |||
336 | case SymbolDefinitionType.ListBox: | ||
337 | return SymbolDefinitions.ListBox; | ||
338 | |||
339 | case SymbolDefinitionType.ListView: | ||
340 | return SymbolDefinitions.ListView; | ||
341 | |||
342 | case SymbolDefinitionType.LockPermissions: | ||
343 | return SymbolDefinitions.LockPermissions; | ||
344 | |||
345 | case SymbolDefinitionType.Media: | ||
346 | return SymbolDefinitions.Media; | ||
347 | |||
348 | case SymbolDefinitionType.MIME: | ||
349 | return SymbolDefinitions.MIME; | ||
350 | |||
351 | case SymbolDefinitionType.ModuleComponents: | ||
352 | return SymbolDefinitions.ModuleComponents; | ||
353 | |||
354 | case SymbolDefinitionType.ModuleConfiguration: | ||
355 | return SymbolDefinitions.ModuleConfiguration; | ||
356 | |||
357 | case SymbolDefinitionType.ModuleDependency: | ||
358 | return SymbolDefinitions.ModuleDependency; | ||
359 | |||
360 | case SymbolDefinitionType.ModuleExclusion: | ||
361 | return SymbolDefinitions.ModuleExclusion; | ||
362 | |||
363 | case SymbolDefinitionType.ModuleIgnoreTable: | ||
364 | return SymbolDefinitions.ModuleIgnoreTable; | ||
365 | |||
366 | case SymbolDefinitionType.WixModule: | ||
367 | return SymbolDefinitions.WixModule; | ||
368 | |||
369 | case SymbolDefinitionType.ModuleSubstitution: | ||
370 | return SymbolDefinitions.ModuleSubstitution; | ||
371 | |||
372 | case SymbolDefinitionType.MoveFile: | ||
373 | return SymbolDefinitions.MoveFile; | ||
374 | |||
375 | case SymbolDefinitionType.Assembly: | ||
376 | return SymbolDefinitions.Assembly; | ||
377 | |||
378 | case SymbolDefinitionType.MsiAssemblyName: | ||
379 | return SymbolDefinitions.MsiAssemblyName; | ||
380 | |||
381 | case SymbolDefinitionType.MsiDigitalCertificate: | ||
382 | return SymbolDefinitions.MsiDigitalCertificate; | ||
383 | |||
384 | case SymbolDefinitionType.MsiDigitalSignature: | ||
385 | return SymbolDefinitions.MsiDigitalSignature; | ||
386 | |||
387 | case SymbolDefinitionType.MsiEmbeddedChainer: | ||
388 | return SymbolDefinitions.MsiEmbeddedChainer; | ||
389 | |||
390 | case SymbolDefinitionType.MsiEmbeddedUI: | ||
391 | return SymbolDefinitions.MsiEmbeddedUI; | ||
392 | |||
393 | case SymbolDefinitionType.MsiFileHash: | ||
394 | return SymbolDefinitions.MsiFileHash; | ||
395 | |||
396 | case SymbolDefinitionType.MsiLockPermissionsEx: | ||
397 | return SymbolDefinitions.MsiLockPermissionsEx; | ||
398 | |||
399 | case SymbolDefinitionType.MsiPackageCertificate: | ||
400 | return SymbolDefinitions.MsiPackageCertificate; | ||
401 | |||
402 | case SymbolDefinitionType.MsiPatchCertificate: | ||
403 | return SymbolDefinitions.MsiPatchCertificate; | ||
404 | |||
405 | case SymbolDefinitionType.MsiPatchHeaders: | ||
406 | return SymbolDefinitions.MsiPatchHeaders; | ||
407 | |||
408 | case SymbolDefinitionType.MsiPatchMetadata: | ||
409 | return SymbolDefinitions.MsiPatchMetadata; | ||
410 | |||
411 | case SymbolDefinitionType.MsiPatchOldAssemblyFile: | ||
412 | return SymbolDefinitions.MsiPatchOldAssemblyFile; | ||
413 | |||
414 | case SymbolDefinitionType.MsiPatchOldAssemblyName: | ||
415 | return SymbolDefinitions.MsiPatchOldAssemblyName; | ||
416 | |||
417 | case SymbolDefinitionType.MsiPatchSequence: | ||
418 | return SymbolDefinitions.MsiPatchSequence; | ||
419 | |||
420 | case SymbolDefinitionType.MsiServiceConfig: | ||
421 | return SymbolDefinitions.MsiServiceConfig; | ||
422 | |||
423 | case SymbolDefinitionType.MsiServiceConfigFailureActions: | ||
424 | return SymbolDefinitions.MsiServiceConfigFailureActions; | ||
425 | |||
426 | case SymbolDefinitionType.MsiShortcutProperty: | ||
427 | return SymbolDefinitions.MsiShortcutProperty; | ||
428 | |||
429 | case SymbolDefinitionType.ODBCAttribute: | ||
430 | return SymbolDefinitions.ODBCAttribute; | ||
431 | |||
432 | case SymbolDefinitionType.ODBCDataSource: | ||
433 | return SymbolDefinitions.ODBCDataSource; | ||
434 | |||
435 | case SymbolDefinitionType.ODBCDriver: | ||
436 | return SymbolDefinitions.ODBCDriver; | ||
437 | |||
438 | case SymbolDefinitionType.ODBCSourceAttribute: | ||
439 | return SymbolDefinitions.ODBCSourceAttribute; | ||
440 | |||
441 | case SymbolDefinitionType.ODBCTranslator: | ||
442 | return SymbolDefinitions.ODBCTranslator; | ||
443 | |||
444 | case SymbolDefinitionType.Patch: | ||
445 | return SymbolDefinitions.Patch; | ||
446 | |||
447 | case SymbolDefinitionType.PatchMetadata: | ||
448 | return SymbolDefinitions.PatchMetadata; | ||
449 | |||
450 | case SymbolDefinitionType.PatchPackage: | ||
451 | return SymbolDefinitions.PatchPackage; | ||
452 | |||
453 | case SymbolDefinitionType.PatchSequence: | ||
454 | return SymbolDefinitions.PatchSequence; | ||
455 | |||
456 | case SymbolDefinitionType.ProgId: | ||
457 | return SymbolDefinitions.ProgId; | ||
458 | |||
459 | case SymbolDefinitionType.Properties: | ||
460 | return SymbolDefinitions.Properties; | ||
461 | |||
462 | case SymbolDefinitionType.Property: | ||
463 | return SymbolDefinitions.Property; | ||
464 | |||
465 | case SymbolDefinitionType.PublishComponent: | ||
466 | return SymbolDefinitions.PublishComponent; | ||
467 | |||
468 | case SymbolDefinitionType.RadioButton: | ||
469 | return SymbolDefinitions.RadioButton; | ||
470 | |||
471 | case SymbolDefinitionType.Registry: | ||
472 | return SymbolDefinitions.Registry; | ||
473 | |||
474 | case SymbolDefinitionType.RegLocator: | ||
475 | return SymbolDefinitions.RegLocator; | ||
476 | |||
477 | case SymbolDefinitionType.RemoveFile: | ||
478 | return SymbolDefinitions.RemoveFile; | ||
479 | |||
480 | case SymbolDefinitionType.RemoveRegistry: | ||
481 | return SymbolDefinitions.RemoveRegistry; | ||
482 | |||
483 | case SymbolDefinitionType.ReserveCost: | ||
484 | return SymbolDefinitions.ReserveCost; | ||
485 | |||
486 | case SymbolDefinitionType.ServiceControl: | ||
487 | return SymbolDefinitions.ServiceControl; | ||
488 | |||
489 | case SymbolDefinitionType.ServiceInstall: | ||
490 | return SymbolDefinitions.ServiceInstall; | ||
491 | |||
492 | case SymbolDefinitionType.SFPCatalog: | ||
493 | return SymbolDefinitions.SFPCatalog; | ||
494 | |||
495 | case SymbolDefinitionType.Shortcut: | ||
496 | return SymbolDefinitions.Shortcut; | ||
497 | |||
498 | case SymbolDefinitionType.Signature: | ||
499 | return SymbolDefinitions.Signature; | ||
500 | |||
501 | case SymbolDefinitionType.SoftwareIdentificationTag: | ||
502 | return SymbolDefinitions.SoftwareIdentificationTag; | ||
503 | |||
504 | case SymbolDefinitionType.TargetFilesOptionalData: | ||
505 | return SymbolDefinitions.TargetFilesOptionalData; | ||
506 | |||
507 | case SymbolDefinitionType.TargetImages: | ||
508 | return SymbolDefinitions.TargetImages; | ||
509 | |||
510 | case SymbolDefinitionType.TextStyle: | ||
511 | return SymbolDefinitions.TextStyle; | ||
512 | |||
513 | case SymbolDefinitionType.TypeLib: | ||
514 | return SymbolDefinitions.TypeLib; | ||
515 | |||
516 | case SymbolDefinitionType.UIText: | ||
517 | return SymbolDefinitions.UIText; | ||
518 | |||
519 | case SymbolDefinitionType.Upgrade: | ||
520 | return SymbolDefinitions.Upgrade; | ||
521 | |||
522 | case SymbolDefinitionType.UpgradedFilesOptionalData: | ||
523 | return SymbolDefinitions.UpgradedFilesOptionalData; | ||
524 | |||
525 | case SymbolDefinitionType.UpgradedFilesToIgnore: | ||
526 | return SymbolDefinitions.UpgradedFilesToIgnore; | ||
527 | |||
528 | case SymbolDefinitionType.UpgradedImages: | ||
529 | return SymbolDefinitions.UpgradedImages; | ||
530 | |||
531 | case SymbolDefinitionType.Verb: | ||
532 | return SymbolDefinitions.Verb; | ||
533 | |||
534 | case SymbolDefinitionType.WixAction: | ||
535 | return SymbolDefinitions.WixAction; | ||
536 | |||
537 | case SymbolDefinitionType.WixApprovedExeForElevation: | ||
538 | return SymbolDefinitions.WixApprovedExeForElevation; | ||
539 | |||
540 | case SymbolDefinitionType.WixBindUpdatedFiles: | ||
541 | return SymbolDefinitions.WixBindUpdatedFiles; | ||
542 | |||
543 | case SymbolDefinitionType.WixBootstrapperApplication: | ||
544 | return SymbolDefinitions.WixBootstrapperApplication; | ||
545 | |||
546 | case SymbolDefinitionType.WixBootstrapperApplicationDll: | ||
547 | return SymbolDefinitions.WixBootstrapperApplicationDll; | ||
548 | |||
549 | case SymbolDefinitionType.WixBuildInfo: | ||
550 | return SymbolDefinitions.WixBuildInfo; | ||
551 | |||
552 | case SymbolDefinitionType.WixBundle: | ||
553 | return SymbolDefinitions.WixBundle; | ||
554 | |||
555 | case SymbolDefinitionType.WixBundleContainer: | ||
556 | return SymbolDefinitions.WixBundleContainer; | ||
557 | |||
558 | case SymbolDefinitionType.WixBundleCustomData: | ||
559 | return SymbolDefinitions.WixBundleCustomData; | ||
560 | |||
561 | case SymbolDefinitionType.WixBundleCustomDataAttribute: | ||
562 | return SymbolDefinitions.WixBundleCustomDataAttribute; | ||
563 | |||
564 | case SymbolDefinitionType.WixBundleCustomDataCell: | ||
565 | return SymbolDefinitions.WixBundleCustomDataCell; | ||
566 | |||
567 | case SymbolDefinitionType.WixBundleExtension: | ||
568 | return SymbolDefinitions.WixBundleExtension; | ||
569 | |||
570 | case SymbolDefinitionType.WixBundleExePackage: | ||
571 | return SymbolDefinitions.WixBundleExePackage; | ||
572 | |||
573 | case SymbolDefinitionType.WixBundleExePackagePayload: | ||
574 | return SymbolDefinitions.WixBundleExePackagePayload; | ||
575 | |||
576 | case SymbolDefinitionType.WixBundleMsiFeature: | ||
577 | return SymbolDefinitions.WixBundleMsiFeature; | ||
578 | |||
579 | case SymbolDefinitionType.WixBundleMsiPackage: | ||
580 | return SymbolDefinitions.WixBundleMsiPackage; | ||
581 | |||
582 | case SymbolDefinitionType.WixBundleMsiPackagePayload: | ||
583 | return SymbolDefinitions.WixBundleMsiPackagePayload; | ||
584 | |||
585 | case SymbolDefinitionType.WixBundleMsiProperty: | ||
586 | return SymbolDefinitions.WixBundleMsiProperty; | ||
587 | |||
588 | case SymbolDefinitionType.WixBundleMspPackage: | ||
589 | return SymbolDefinitions.WixBundleMspPackage; | ||
590 | |||
591 | case SymbolDefinitionType.WixBundleMspPackagePayload: | ||
592 | return SymbolDefinitions.WixBundleMspPackagePayload; | ||
593 | |||
594 | case SymbolDefinitionType.WixBundleMsuPackage: | ||
595 | return SymbolDefinitions.WixBundleMsuPackage; | ||
596 | |||
597 | case SymbolDefinitionType.WixBundleMsuPackagePayload: | ||
598 | return SymbolDefinitions.WixBundleMsuPackagePayload; | ||
599 | |||
600 | case SymbolDefinitionType.WixBundlePackage: | ||
601 | return SymbolDefinitions.WixBundlePackage; | ||
602 | |||
603 | case SymbolDefinitionType.WixBundlePackageCommandLine: | ||
604 | return SymbolDefinitions.WixBundlePackageCommandLine; | ||
605 | |||
606 | case SymbolDefinitionType.WixBundlePackageExitCode: | ||
607 | return SymbolDefinitions.WixBundlePackageExitCode; | ||
608 | |||
609 | case SymbolDefinitionType.WixBundlePackageGroup: | ||
610 | return SymbolDefinitions.WixBundlePackageGroup; | ||
611 | |||
612 | case SymbolDefinitionType.WixBundlePatchTargetCode: | ||
613 | return SymbolDefinitions.WixBundlePatchTargetCode; | ||
614 | |||
615 | case SymbolDefinitionType.WixBundlePayload: | ||
616 | return SymbolDefinitions.WixBundlePayload; | ||
617 | |||
618 | case SymbolDefinitionType.WixBundlePayloadGroup: | ||
619 | return SymbolDefinitions.WixBundlePayloadGroup; | ||
620 | |||
621 | case SymbolDefinitionType.WixBundleRelatedPackage: | ||
622 | return SymbolDefinitions.WixBundleRelatedPackage; | ||
623 | |||
624 | case SymbolDefinitionType.WixBundleRollbackBoundary: | ||
625 | return SymbolDefinitions.WixBundleRollbackBoundary; | ||
626 | |||
627 | case SymbolDefinitionType.WixBundleSlipstreamMsp: | ||
628 | return SymbolDefinitions.WixBundleSlipstreamMsp; | ||
629 | |||
630 | case SymbolDefinitionType.WixBundleTag: | ||
631 | return SymbolDefinitions.WixBundleTag; | ||
632 | |||
633 | case SymbolDefinitionType.WixBundleUpdate: | ||
634 | return SymbolDefinitions.WixBundleUpdate; | ||
635 | |||
636 | case SymbolDefinitionType.WixBundleVariable: | ||
637 | return SymbolDefinitions.WixBundleVariable; | ||
638 | |||
639 | case SymbolDefinitionType.WixChain: | ||
640 | return SymbolDefinitions.WixChain; | ||
641 | |||
642 | case SymbolDefinitionType.WixChainItem: | ||
643 | return SymbolDefinitions.WixChainItem; | ||
644 | |||
645 | case SymbolDefinitionType.WixComplexReference: | ||
646 | return SymbolDefinitions.WixComplexReference; | ||
647 | |||
648 | case SymbolDefinitionType.WixComponentGroup: | ||
649 | return SymbolDefinitions.WixComponentGroup; | ||
650 | |||
651 | case SymbolDefinitionType.WixComponentSearch: | ||
652 | return SymbolDefinitions.WixComponentSearch; | ||
653 | |||
654 | case SymbolDefinitionType.WixCustomTable: | ||
655 | return SymbolDefinitions.WixCustomTable; | ||
656 | |||
657 | case SymbolDefinitionType.WixCustomTableCell: | ||
658 | return SymbolDefinitions.WixCustomTableCell; | ||
659 | |||
660 | case SymbolDefinitionType.WixCustomTableColumn: | ||
661 | return SymbolDefinitions.WixCustomTableColumn; | ||
662 | |||
663 | case SymbolDefinitionType.WixDeltaPatchFile: | ||
664 | return SymbolDefinitions.WixDeltaPatchFile; | ||
665 | |||
666 | case SymbolDefinitionType.WixDeltaPatchSymbolPaths: | ||
667 | return SymbolDefinitions.WixDeltaPatchSymbolPaths; | ||
668 | |||
669 | case SymbolDefinitionType.WixDependency: | ||
670 | return SymbolDefinitions.WixDependency; | ||
671 | |||
672 | case SymbolDefinitionType.WixDependencyRef: | ||
673 | return SymbolDefinitions.WixDependencyRef; | ||
674 | |||
675 | case SymbolDefinitionType.WixDependencyProvider: | ||
676 | return SymbolDefinitions.WixDependencyProvider; | ||
677 | |||
678 | case SymbolDefinitionType.WixEnsureTable: | ||
679 | return SymbolDefinitions.WixEnsureTable; | ||
680 | |||
681 | case SymbolDefinitionType.WixFeatureGroup: | ||
682 | return SymbolDefinitions.WixFeatureGroup; | ||
683 | |||
684 | case SymbolDefinitionType.WixFeatureModules: | ||
685 | return SymbolDefinitions.WixFeatureModules; | ||
686 | |||
687 | case SymbolDefinitionType.WixFileSearch: | ||
688 | return SymbolDefinitions.WixFileSearch; | ||
689 | |||
690 | case SymbolDefinitionType.WixFragment: | ||
691 | return SymbolDefinitions.WixFragment; | ||
692 | |||
693 | case SymbolDefinitionType.WixGroup: | ||
694 | return SymbolDefinitions.WixGroup; | ||
695 | |||
696 | case SymbolDefinitionType.WixInstanceComponent: | ||
697 | return SymbolDefinitions.WixInstanceComponent; | ||
698 | |||
699 | case SymbolDefinitionType.WixInstanceTransforms: | ||
700 | return SymbolDefinitions.WixInstanceTransforms; | ||
701 | |||
702 | case SymbolDefinitionType.WixMediaTemplate: | ||
703 | return SymbolDefinitions.WixMediaTemplate; | ||
704 | |||
705 | case SymbolDefinitionType.WixMerge: | ||
706 | return SymbolDefinitions.WixMerge; | ||
707 | |||
708 | case SymbolDefinitionType.WixOrdering: | ||
709 | return SymbolDefinitions.WixOrdering; | ||
710 | |||
711 | case SymbolDefinitionType.WixPackage: | ||
712 | return SymbolDefinitions.WixPackage; | ||
713 | |||
714 | case SymbolDefinitionType.WixPatchBaseline: | ||
715 | return SymbolDefinitions.WixPatchBaseline; | ||
716 | |||
717 | case SymbolDefinitionType.WixPatchFamilyGroup: | ||
718 | return SymbolDefinitions.WixPatchFamilyGroup; | ||
719 | |||
720 | case SymbolDefinitionType.WixPatch: | ||
721 | return SymbolDefinitions.WixPatchId; | ||
722 | |||
723 | case SymbolDefinitionType.WixPatchRef: | ||
724 | return SymbolDefinitions.WixPatchRef; | ||
725 | |||
726 | case SymbolDefinitionType.WixPatchTarget: | ||
727 | return SymbolDefinitions.WixPatchTarget; | ||
728 | |||
729 | case SymbolDefinitionType.WixProductSearch: | ||
730 | return SymbolDefinitions.WixProductSearch; | ||
731 | |||
732 | case SymbolDefinitionType.WixProductTag: | ||
733 | return SymbolDefinitions.WixProductTag; | ||
734 | |||
735 | case SymbolDefinitionType.WixProperty: | ||
736 | return SymbolDefinitions.WixProperty; | ||
737 | |||
738 | case SymbolDefinitionType.WixRegistrySearch: | ||
739 | return SymbolDefinitions.WixRegistrySearch; | ||
740 | |||
741 | case SymbolDefinitionType.WixRelatedBundle: | ||
742 | return SymbolDefinitions.WixRelatedBundle; | ||
743 | |||
744 | case SymbolDefinitionType.WixSearch: | ||
745 | return SymbolDefinitions.WixSearch; | ||
746 | |||
747 | case SymbolDefinitionType.WixSearchRelation: | ||
748 | return SymbolDefinitions.WixSearchRelation; | ||
749 | |||
750 | case SymbolDefinitionType.WixSetVariable: | ||
751 | return SymbolDefinitions.WixSetVariable; | ||
752 | |||
753 | case SymbolDefinitionType.WixSimpleReference: | ||
754 | return SymbolDefinitions.WixSimpleReference; | ||
755 | |||
756 | case SymbolDefinitionType.WixSuppressAction: | ||
757 | return SymbolDefinitions.WixSuppressAction; | ||
758 | |||
759 | case SymbolDefinitionType.WixSuppressModularization: | ||
760 | return SymbolDefinitions.WixSuppressModularization; | ||
761 | |||
762 | case SymbolDefinitionType.WixUI: | ||
763 | return SymbolDefinitions.WixUI; | ||
764 | |||
765 | case SymbolDefinitionType.WixUpdateRegistration: | ||
766 | return SymbolDefinitions.WixUpdateRegistration; | ||
767 | |||
768 | case SymbolDefinitionType.WixVariable: | ||
769 | return SymbolDefinitions.WixVariable; | ||
770 | |||
771 | default: | ||
772 | throw new ArgumentOutOfRangeException($"{nameof(type)} ({type})"); | ||
773 | } | ||
774 | } | ||
775 | } | ||
776 | } | ||
diff --git a/src/api/wix/WixToolset.Data/Symbols/TargetFilesOptionalDataSymbol.cs b/src/api/wix/WixToolset.Data/Symbols/TargetFilesOptionalDataSymbol.cs new file mode 100644 index 00000000..66fdc30c --- /dev/null +++ b/src/api/wix/WixToolset.Data/Symbols/TargetFilesOptionalDataSymbol.cs | |||
@@ -0,0 +1,84 @@ | |||
1 | // Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. | ||
2 | |||
3 | namespace WixToolset.Data | ||
4 | { | ||
5 | using WixToolset.Data.Symbols; | ||
6 | |||
7 | public static partial class SymbolDefinitions | ||
8 | { | ||
9 | public static readonly IntermediateSymbolDefinition TargetFilesOptionalData = new IntermediateSymbolDefinition( | ||
10 | SymbolDefinitionType.TargetFilesOptionalData, | ||
11 | new[] | ||
12 | { | ||
13 | new IntermediateFieldDefinition(nameof(TargetFilesOptionalDataSymbolFields.Target), IntermediateFieldType.String), | ||
14 | new IntermediateFieldDefinition(nameof(TargetFilesOptionalDataSymbolFields.FTK), IntermediateFieldType.String), | ||
15 | new IntermediateFieldDefinition(nameof(TargetFilesOptionalDataSymbolFields.SymbolPaths), IntermediateFieldType.String), | ||
16 | new IntermediateFieldDefinition(nameof(TargetFilesOptionalDataSymbolFields.IgnoreOffsets), IntermediateFieldType.String), | ||
17 | new IntermediateFieldDefinition(nameof(TargetFilesOptionalDataSymbolFields.IgnoreLengths), IntermediateFieldType.String), | ||
18 | new IntermediateFieldDefinition(nameof(TargetFilesOptionalDataSymbolFields.RetainOffsets), IntermediateFieldType.String), | ||
19 | }, | ||
20 | typeof(TargetFilesOptionalDataSymbol)); | ||
21 | } | ||
22 | } | ||
23 | |||
24 | namespace WixToolset.Data.Symbols | ||
25 | { | ||
26 | public enum TargetFilesOptionalDataSymbolFields | ||
27 | { | ||
28 | Target, | ||
29 | FTK, | ||
30 | SymbolPaths, | ||
31 | IgnoreOffsets, | ||
32 | IgnoreLengths, | ||
33 | RetainOffsets, | ||
34 | } | ||
35 | |||
36 | public class TargetFilesOptionalDataSymbol : IntermediateSymbol | ||
37 | { | ||
38 | public TargetFilesOptionalDataSymbol() : base(SymbolDefinitions.TargetFilesOptionalData, null, null) | ||
39 | { | ||
40 | } | ||
41 | |||
42 | public TargetFilesOptionalDataSymbol(SourceLineNumber sourceLineNumber, Identifier id = null) : base(SymbolDefinitions.TargetFilesOptionalData, sourceLineNumber, id) | ||
43 | { | ||
44 | } | ||
45 | |||
46 | public IntermediateField this[TargetFilesOptionalDataSymbolFields index] => this.Fields[(int)index]; | ||
47 | |||
48 | public string Target | ||
49 | { | ||
50 | get => (string)this.Fields[(int)TargetFilesOptionalDataSymbolFields.Target]; | ||
51 | set => this.Set((int)TargetFilesOptionalDataSymbolFields.Target, value); | ||
52 | } | ||
53 | |||
54 | public string FTK | ||
55 | { | ||
56 | get => (string)this.Fields[(int)TargetFilesOptionalDataSymbolFields.FTK]; | ||
57 | set => this.Set((int)TargetFilesOptionalDataSymbolFields.FTK, value); | ||
58 | } | ||
59 | |||
60 | public string SymbolPaths | ||
61 | { | ||
62 | get => (string)this.Fields[(int)TargetFilesOptionalDataSymbolFields.SymbolPaths]; | ||
63 | set => this.Set((int)TargetFilesOptionalDataSymbolFields.SymbolPaths, value); | ||
64 | } | ||
65 | |||
66 | public string IgnoreOffsets | ||
67 | { | ||
68 | get => (string)this.Fields[(int)TargetFilesOptionalDataSymbolFields.IgnoreOffsets]; | ||
69 | set => this.Set((int)TargetFilesOptionalDataSymbolFields.IgnoreOffsets, value); | ||
70 | } | ||
71 | |||
72 | public string IgnoreLengths | ||
73 | { | ||
74 | get => (string)this.Fields[(int)TargetFilesOptionalDataSymbolFields.IgnoreLengths]; | ||
75 | set => this.Set((int)TargetFilesOptionalDataSymbolFields.IgnoreLengths, value); | ||
76 | } | ||
77 | |||
78 | public string RetainOffsets | ||
79 | { | ||
80 | get => (string)this.Fields[(int)TargetFilesOptionalDataSymbolFields.RetainOffsets]; | ||
81 | set => this.Set((int)TargetFilesOptionalDataSymbolFields.RetainOffsets, value); | ||
82 | } | ||
83 | } | ||
84 | } \ No newline at end of file | ||
diff --git a/src/api/wix/WixToolset.Data/Symbols/TargetImagesSymbol.cs b/src/api/wix/WixToolset.Data/Symbols/TargetImagesSymbol.cs new file mode 100644 index 00000000..4748b1f3 --- /dev/null +++ b/src/api/wix/WixToolset.Data/Symbols/TargetImagesSymbol.cs | |||
@@ -0,0 +1,92 @@ | |||
1 | // Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. | ||
2 | |||
3 | namespace WixToolset.Data | ||
4 | { | ||
5 | using WixToolset.Data.Symbols; | ||
6 | |||
7 | public static partial class SymbolDefinitions | ||
8 | { | ||
9 | public static readonly IntermediateSymbolDefinition TargetImages = new IntermediateSymbolDefinition( | ||
10 | SymbolDefinitionType.TargetImages, | ||
11 | new[] | ||
12 | { | ||
13 | new IntermediateFieldDefinition(nameof(TargetImagesSymbolFields.Target), IntermediateFieldType.String), | ||
14 | new IntermediateFieldDefinition(nameof(TargetImagesSymbolFields.MsiPath), IntermediateFieldType.String), | ||
15 | new IntermediateFieldDefinition(nameof(TargetImagesSymbolFields.SymbolPaths), IntermediateFieldType.String), | ||
16 | new IntermediateFieldDefinition(nameof(TargetImagesSymbolFields.Upgraded), IntermediateFieldType.String), | ||
17 | new IntermediateFieldDefinition(nameof(TargetImagesSymbolFields.Order), IntermediateFieldType.Number), | ||
18 | new IntermediateFieldDefinition(nameof(TargetImagesSymbolFields.ProductValidateFlags), IntermediateFieldType.String), | ||
19 | new IntermediateFieldDefinition(nameof(TargetImagesSymbolFields.IgnoreMissingSrcFiles), IntermediateFieldType.Bool), | ||
20 | }, | ||
21 | typeof(TargetImagesSymbol)); | ||
22 | } | ||
23 | } | ||
24 | |||
25 | namespace WixToolset.Data.Symbols | ||
26 | { | ||
27 | public enum TargetImagesSymbolFields | ||
28 | { | ||
29 | Target, | ||
30 | MsiPath, | ||
31 | SymbolPaths, | ||
32 | Upgraded, | ||
33 | Order, | ||
34 | ProductValidateFlags, | ||
35 | IgnoreMissingSrcFiles, | ||
36 | } | ||
37 | |||
38 | public class TargetImagesSymbol : IntermediateSymbol | ||
39 | { | ||
40 | public TargetImagesSymbol() : base(SymbolDefinitions.TargetImages, null, null) | ||
41 | { | ||
42 | } | ||
43 | |||
44 | public TargetImagesSymbol(SourceLineNumber sourceLineNumber, Identifier id = null) : base(SymbolDefinitions.TargetImages, sourceLineNumber, id) | ||
45 | { | ||
46 | } | ||
47 | |||
48 | public IntermediateField this[TargetImagesSymbolFields index] => this.Fields[(int)index]; | ||
49 | |||
50 | public string Target | ||
51 | { | ||
52 | get => (string)this.Fields[(int)TargetImagesSymbolFields.Target]; | ||
53 | set => this.Set((int)TargetImagesSymbolFields.Target, value); | ||
54 | } | ||
55 | |||
56 | public string MsiPath | ||
57 | { | ||
58 | get => (string)this.Fields[(int)TargetImagesSymbolFields.MsiPath]; | ||
59 | set => this.Set((int)TargetImagesSymbolFields.MsiPath, value); | ||
60 | } | ||
61 | |||
62 | public string SymbolPaths | ||
63 | { | ||
64 | get => (string)this.Fields[(int)TargetImagesSymbolFields.SymbolPaths]; | ||
65 | set => this.Set((int)TargetImagesSymbolFields.SymbolPaths, value); | ||
66 | } | ||
67 | |||
68 | public string Upgraded | ||
69 | { | ||
70 | get => (string)this.Fields[(int)TargetImagesSymbolFields.Upgraded]; | ||
71 | set => this.Set((int)TargetImagesSymbolFields.Upgraded, value); | ||
72 | } | ||
73 | |||
74 | public int Order | ||
75 | { | ||
76 | get => (int)this.Fields[(int)TargetImagesSymbolFields.Order]; | ||
77 | set => this.Set((int)TargetImagesSymbolFields.Order, value); | ||
78 | } | ||
79 | |||
80 | public string ProductValidateFlags | ||
81 | { | ||
82 | get => (string)this.Fields[(int)TargetImagesSymbolFields.ProductValidateFlags]; | ||
83 | set => this.Set((int)TargetImagesSymbolFields.ProductValidateFlags, value); | ||
84 | } | ||
85 | |||
86 | public bool IgnoreMissingSrcFiles | ||
87 | { | ||
88 | get => (bool)this.Fields[(int)TargetImagesSymbolFields.IgnoreMissingSrcFiles]; | ||
89 | set => this.Set((int)TargetImagesSymbolFields.IgnoreMissingSrcFiles, value); | ||
90 | } | ||
91 | } | ||
92 | } \ No newline at end of file | ||
diff --git a/src/api/wix/WixToolset.Data/Symbols/TextStyleSymbol.cs b/src/api/wix/WixToolset.Data/Symbols/TextStyleSymbol.cs new file mode 100644 index 00000000..53415714 --- /dev/null +++ b/src/api/wix/WixToolset.Data/Symbols/TextStyleSymbol.cs | |||
@@ -0,0 +1,114 @@ | |||
1 | // Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. | ||
2 | |||
3 | namespace WixToolset.Data | ||
4 | { | ||
5 | using WixToolset.Data.Symbols; | ||
6 | |||
7 | public static partial class SymbolDefinitions | ||
8 | { | ||
9 | public static readonly IntermediateSymbolDefinition TextStyle = new IntermediateSymbolDefinition( | ||
10 | SymbolDefinitionType.TextStyle, | ||
11 | new[] | ||
12 | { | ||
13 | new IntermediateFieldDefinition(nameof(TextStyleSymbolFields.FaceName), IntermediateFieldType.String), | ||
14 | new IntermediateFieldDefinition(nameof(TextStyleSymbolFields.Size), IntermediateFieldType.String), | ||
15 | new IntermediateFieldDefinition(nameof(TextStyleSymbolFields.Red), IntermediateFieldType.Number), | ||
16 | new IntermediateFieldDefinition(nameof(TextStyleSymbolFields.Green), IntermediateFieldType.Number), | ||
17 | new IntermediateFieldDefinition(nameof(TextStyleSymbolFields.Blue), IntermediateFieldType.Number), | ||
18 | new IntermediateFieldDefinition(nameof(TextStyleSymbolFields.Bold), IntermediateFieldType.Bool), | ||
19 | new IntermediateFieldDefinition(nameof(TextStyleSymbolFields.Italic), IntermediateFieldType.Bool), | ||
20 | new IntermediateFieldDefinition(nameof(TextStyleSymbolFields.Strike), IntermediateFieldType.Bool), | ||
21 | new IntermediateFieldDefinition(nameof(TextStyleSymbolFields.Underline), IntermediateFieldType.Bool), | ||
22 | }, | ||
23 | typeof(TextStyleSymbol)); | ||
24 | } | ||
25 | } | ||
26 | |||
27 | namespace WixToolset.Data.Symbols | ||
28 | { | ||
29 | public enum TextStyleSymbolFields | ||
30 | { | ||
31 | FaceName, | ||
32 | Size, | ||
33 | Red, | ||
34 | Green, | ||
35 | Blue, | ||
36 | Bold, | ||
37 | Italic, | ||
38 | Strike, | ||
39 | Underline, | ||
40 | } | ||
41 | |||
42 | public class TextStyleSymbol : IntermediateSymbol | ||
43 | { | ||
44 | public TextStyleSymbol() : base(SymbolDefinitions.TextStyle, null, null) | ||
45 | { | ||
46 | } | ||
47 | |||
48 | public TextStyleSymbol(SourceLineNumber sourceLineNumber, Identifier id = null) : base(SymbolDefinitions.TextStyle, sourceLineNumber, id) | ||
49 | { | ||
50 | } | ||
51 | |||
52 | public IntermediateField this[TextStyleSymbolFields index] => this.Fields[(int)index]; | ||
53 | |||
54 | public string FaceName | ||
55 | { | ||
56 | get => (string)this.Fields[(int)TextStyleSymbolFields.FaceName]; | ||
57 | set => this.Set((int)TextStyleSymbolFields.FaceName, value); | ||
58 | } | ||
59 | |||
60 | public string LocalizedSize | ||
61 | { | ||
62 | get => (string)this.Fields[(int)TextStyleSymbolFields.Size]; | ||
63 | set => this.Set((int)TextStyleSymbolFields.Size, value); | ||
64 | } | ||
65 | |||
66 | public int Size | ||
67 | { | ||
68 | get => (int)this.Fields[(int)TextStyleSymbolFields.Size]; | ||
69 | set => this.Set((int)TextStyleSymbolFields.Size, value); | ||
70 | } | ||
71 | |||
72 | public int? Red | ||
73 | { | ||
74 | get => (int?)this.Fields[(int)TextStyleSymbolFields.Red]; | ||
75 | set => this.Set((int)TextStyleSymbolFields.Red, value); | ||
76 | } | ||
77 | |||
78 | public int? Green | ||
79 | { | ||
80 | get => (int?)this.Fields[(int)TextStyleSymbolFields.Green]; | ||
81 | set => this.Set((int)TextStyleSymbolFields.Green, value); | ||
82 | } | ||
83 | |||
84 | public int? Blue | ||
85 | { | ||
86 | get => (int?)this.Fields[(int)TextStyleSymbolFields.Blue]; | ||
87 | set => this.Set((int)TextStyleSymbolFields.Blue, value); | ||
88 | } | ||
89 | |||
90 | public bool Bold | ||
91 | { | ||
92 | get => (bool)this.Fields[(int)TextStyleSymbolFields.Bold]; | ||
93 | set => this.Set((int)TextStyleSymbolFields.Bold, value); | ||
94 | } | ||
95 | |||
96 | public bool Italic | ||
97 | { | ||
98 | get => (bool)this.Fields[(int)TextStyleSymbolFields.Italic]; | ||
99 | set => this.Set((int)TextStyleSymbolFields.Italic, value); | ||
100 | } | ||
101 | |||
102 | public bool Strike | ||
103 | { | ||
104 | get => (bool)this.Fields[(int)TextStyleSymbolFields.Strike]; | ||
105 | set => this.Set((int)TextStyleSymbolFields.Strike, value); | ||
106 | } | ||
107 | |||
108 | public bool Underline | ||
109 | { | ||
110 | get => (bool)this.Fields[(int)TextStyleSymbolFields.Underline]; | ||
111 | set => this.Set((int)TextStyleSymbolFields.Underline, value); | ||
112 | } | ||
113 | } | ||
114 | } \ No newline at end of file | ||
diff --git a/src/api/wix/WixToolset.Data/Symbols/TransformsFlags.cs b/src/api/wix/WixToolset.Data/Symbols/TransformsFlags.cs new file mode 100644 index 00000000..90f22cb4 --- /dev/null +++ b/src/api/wix/WixToolset.Data/Symbols/TransformsFlags.cs | |||
@@ -0,0 +1,79 @@ | |||
1 | // Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. | ||
2 | |||
3 | namespace WixToolset.Data.Symbols | ||
4 | { | ||
5 | using System; | ||
6 | |||
7 | /// <summary> | ||
8 | /// Summary information values for the CharCount property in transforms. | ||
9 | /// </summary> | ||
10 | [Flags] | ||
11 | public enum TransformFlags | ||
12 | { | ||
13 | /// <summary>Ignore error when adding a row that exists.</summary> | ||
14 | ErrorAddExistingRow = 0x1, | ||
15 | |||
16 | /// <summary>Ignore error when deleting a row that does not exist.</summary> | ||
17 | ErrorDeleteMissingRow = 0x2, | ||
18 | |||
19 | /// <summary>Ignore error when adding a table that exists. </summary> | ||
20 | ErrorAddExistingTable = 0x4, | ||
21 | |||
22 | /// <summary>Ignore error when deleting a table that does not exist. </summary> | ||
23 | ErrorDeleteMissingTable = 0x8, | ||
24 | |||
25 | /// <summary>Ignore error when updating a row that does not exist. </summary> | ||
26 | ErrorUpdateMissingRow = 0x10, | ||
27 | |||
28 | /// <summary>Ignore error when transform and database code pages do not match, and their code pages are neutral.</summary> | ||
29 | ErrorChangeCodePage = 0x20, | ||
30 | |||
31 | /// <summary>Default language must match base database. </summary> | ||
32 | ValidateLanguage = 0x10000, | ||
33 | |||
34 | /// <summary>Product must match base database.</summary> | ||
35 | ValidateProduct = 0x20000, | ||
36 | |||
37 | /// <summary>Check major version only. </summary> | ||
38 | ValidateMajorVersion = 0x80000, | ||
39 | |||
40 | /// <summary>Check major and minor versions only. </summary> | ||
41 | ValidateMinorVersion = 0x100000, | ||
42 | |||
43 | /// <summary>Check major, minor, and update versions.</summary> | ||
44 | ValidateUpdateVersion = 0x200000, | ||
45 | |||
46 | /// <summary>Installed version lt base version. </summary> | ||
47 | ValidateNewLessBaseVersion = 0x400000, | ||
48 | |||
49 | /// <summary>Installed version lte base version. </summary> | ||
50 | ValidateNewLessEqualBaseVersion = 0x800000, | ||
51 | |||
52 | /// <summary>Installed version eq base version. </summary> | ||
53 | ValidateNewEqualBaseVersion = 0x1000000, | ||
54 | |||
55 | /// <summary>Installed version gte base version.</summary> | ||
56 | ValidateNewGreaterEqualBaseVersion = 0x2000000, | ||
57 | |||
58 | /// <summary>Installed version gt base version.</summary> | ||
59 | ValidateNewGreaterBaseVersion = 0x4000000, | ||
60 | |||
61 | /// <summary>UpgradeCode must match base database.</summary> | ||
62 | ValidateUpgradeCode = 0x8000000, | ||
63 | |||
64 | /// <summary>Masks all version checks on ProductVersion.</summary> | ||
65 | ProductVersionMask = ValidateMajorVersion | ValidateMinorVersion | ValidateUpdateVersion, | ||
66 | |||
67 | /// <summary>Masks all operations on ProductVersion.</summary> | ||
68 | ProductVersionOperatorMask = ValidateNewLessBaseVersion | ValidateNewLessEqualBaseVersion | ValidateNewEqualBaseVersion | ValidateNewGreaterEqualBaseVersion | ValidateNewGreaterBaseVersion, | ||
69 | |||
70 | /// <summary>Default value for instance transforms.</summary> | ||
71 | InstanceTransformDefault = ErrorAddExistingRow | ErrorDeleteMissingRow | ErrorAddExistingTable | ErrorDeleteMissingTable | ErrorUpdateMissingRow | ErrorChangeCodePage | ValidateProduct | ValidateUpdateVersion | ValidateNewGreaterEqualBaseVersion, | ||
72 | |||
73 | /// <summary>Default value for language transforms.</summary> | ||
74 | LanguageTransformDefault = ErrorAddExistingRow | ErrorDeleteMissingRow | ErrorAddExistingTable | ErrorDeleteMissingTable | ErrorUpdateMissingRow | ErrorChangeCodePage | ValidateProduct, | ||
75 | |||
76 | /// <summary>Default value for patch transforms.</summary> | ||
77 | PatchTransformDefault = ErrorAddExistingRow | ErrorDeleteMissingRow | ErrorAddExistingTable | ErrorDeleteMissingTable | ErrorUpdateMissingRow | ValidateProduct | ValidateUpdateVersion | ValidateNewEqualBaseVersion | ValidateUpgradeCode, | ||
78 | } | ||
79 | } | ||
diff --git a/src/api/wix/WixToolset.Data/Symbols/TypeLibSymbol.cs b/src/api/wix/WixToolset.Data/Symbols/TypeLibSymbol.cs new file mode 100644 index 00000000..736ee292 --- /dev/null +++ b/src/api/wix/WixToolset.Data/Symbols/TypeLibSymbol.cs | |||
@@ -0,0 +1,100 @@ | |||
1 | // Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. | ||
2 | |||
3 | namespace WixToolset.Data | ||
4 | { | ||
5 | using WixToolset.Data.Symbols; | ||
6 | |||
7 | public static partial class SymbolDefinitions | ||
8 | { | ||
9 | public static readonly IntermediateSymbolDefinition TypeLib = new IntermediateSymbolDefinition( | ||
10 | SymbolDefinitionType.TypeLib, | ||
11 | new[] | ||
12 | { | ||
13 | new IntermediateFieldDefinition(nameof(TypeLibSymbolFields.LibId), IntermediateFieldType.String), | ||
14 | new IntermediateFieldDefinition(nameof(TypeLibSymbolFields.Language), IntermediateFieldType.Number), | ||
15 | new IntermediateFieldDefinition(nameof(TypeLibSymbolFields.ComponentRef), IntermediateFieldType.String), | ||
16 | new IntermediateFieldDefinition(nameof(TypeLibSymbolFields.Version), IntermediateFieldType.Number), | ||
17 | new IntermediateFieldDefinition(nameof(TypeLibSymbolFields.Description), IntermediateFieldType.String), | ||
18 | new IntermediateFieldDefinition(nameof(TypeLibSymbolFields.DirectoryRef), IntermediateFieldType.String), | ||
19 | new IntermediateFieldDefinition(nameof(TypeLibSymbolFields.FeatureRef), IntermediateFieldType.String), | ||
20 | new IntermediateFieldDefinition(nameof(TypeLibSymbolFields.Cost), IntermediateFieldType.Number), | ||
21 | }, | ||
22 | typeof(TypeLibSymbol)); | ||
23 | } | ||
24 | } | ||
25 | |||
26 | namespace WixToolset.Data.Symbols | ||
27 | { | ||
28 | public enum TypeLibSymbolFields | ||
29 | { | ||
30 | LibId, | ||
31 | Language, | ||
32 | ComponentRef, | ||
33 | Version, | ||
34 | Description, | ||
35 | DirectoryRef, | ||
36 | FeatureRef, | ||
37 | Cost, | ||
38 | } | ||
39 | |||
40 | public class TypeLibSymbol : IntermediateSymbol | ||
41 | { | ||
42 | public TypeLibSymbol() : base(SymbolDefinitions.TypeLib, null, null) | ||
43 | { | ||
44 | } | ||
45 | |||
46 | public TypeLibSymbol(SourceLineNumber sourceLineNumber, Identifier id = null) : base(SymbolDefinitions.TypeLib, sourceLineNumber, id) | ||
47 | { | ||
48 | } | ||
49 | |||
50 | public IntermediateField this[TypeLibSymbolFields index] => this.Fields[(int)index]; | ||
51 | |||
52 | public string LibId | ||
53 | { | ||
54 | get => (string)this.Fields[(int)TypeLibSymbolFields.LibId]; | ||
55 | set => this.Set((int)TypeLibSymbolFields.LibId, value); | ||
56 | } | ||
57 | |||
58 | public int Language | ||
59 | { | ||
60 | get => (int)this.Fields[(int)TypeLibSymbolFields.Language]; | ||
61 | set => this.Set((int)TypeLibSymbolFields.Language, value); | ||
62 | } | ||
63 | |||
64 | public string ComponentRef | ||
65 | { | ||
66 | get => (string)this.Fields[(int)TypeLibSymbolFields.ComponentRef]; | ||
67 | set => this.Set((int)TypeLibSymbolFields.ComponentRef, value); | ||
68 | } | ||
69 | |||
70 | public int? Version | ||
71 | { | ||
72 | get => (int?)this.Fields[(int)TypeLibSymbolFields.Version]; | ||
73 | set => this.Set((int)TypeLibSymbolFields.Version, value); | ||
74 | } | ||
75 | |||
76 | public string Description | ||
77 | { | ||
78 | get => (string)this.Fields[(int)TypeLibSymbolFields.Description]; | ||
79 | set => this.Set((int)TypeLibSymbolFields.Description, value); | ||
80 | } | ||
81 | |||
82 | public string DirectoryRef | ||
83 | { | ||
84 | get => (string)this.Fields[(int)TypeLibSymbolFields.DirectoryRef]; | ||
85 | set => this.Set((int)TypeLibSymbolFields.DirectoryRef, value); | ||
86 | } | ||
87 | |||
88 | public string FeatureRef | ||
89 | { | ||
90 | get => (string)this.Fields[(int)TypeLibSymbolFields.FeatureRef]; | ||
91 | set => this.Set((int)TypeLibSymbolFields.FeatureRef, value); | ||
92 | } | ||
93 | |||
94 | public int? Cost | ||
95 | { | ||
96 | get => (int?)this.Fields[(int)TypeLibSymbolFields.Cost]; | ||
97 | set => this.Set((int)TypeLibSymbolFields.Cost, value); | ||
98 | } | ||
99 | } | ||
100 | } | ||
diff --git a/src/api/wix/WixToolset.Data/Symbols/UITextSymbol.cs b/src/api/wix/WixToolset.Data/Symbols/UITextSymbol.cs new file mode 100644 index 00000000..39b99398 --- /dev/null +++ b/src/api/wix/WixToolset.Data/Symbols/UITextSymbol.cs | |||
@@ -0,0 +1,44 @@ | |||
1 | // Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. | ||
2 | |||
3 | namespace WixToolset.Data | ||
4 | { | ||
5 | using WixToolset.Data.Symbols; | ||
6 | |||
7 | public static partial class SymbolDefinitions | ||
8 | { | ||
9 | public static readonly IntermediateSymbolDefinition UIText = new IntermediateSymbolDefinition( | ||
10 | SymbolDefinitionType.UIText, | ||
11 | new[] | ||
12 | { | ||
13 | new IntermediateFieldDefinition(nameof(UITextSymbolFields.Text), IntermediateFieldType.String), | ||
14 | }, | ||
15 | typeof(UITextSymbol)); | ||
16 | } | ||
17 | } | ||
18 | |||
19 | namespace WixToolset.Data.Symbols | ||
20 | { | ||
21 | public enum UITextSymbolFields | ||
22 | { | ||
23 | Text, | ||
24 | } | ||
25 | |||
26 | public class UITextSymbol : IntermediateSymbol | ||
27 | { | ||
28 | public UITextSymbol() : base(SymbolDefinitions.UIText, null, null) | ||
29 | { | ||
30 | } | ||
31 | |||
32 | public UITextSymbol(SourceLineNumber sourceLineNumber, Identifier id = null) : base(SymbolDefinitions.UIText, sourceLineNumber, id) | ||
33 | { | ||
34 | } | ||
35 | |||
36 | public IntermediateField this[UITextSymbolFields index] => this.Fields[(int)index]; | ||
37 | |||
38 | public string Text | ||
39 | { | ||
40 | get => (string)this.Fields[(int)UITextSymbolFields.Text]; | ||
41 | set => this.Set((int)UITextSymbolFields.Text, value); | ||
42 | } | ||
43 | } | ||
44 | } | ||
diff --git a/src/api/wix/WixToolset.Data/Symbols/UpgradeSymbol.cs b/src/api/wix/WixToolset.Data/Symbols/UpgradeSymbol.cs new file mode 100644 index 00000000..51eb74ef --- /dev/null +++ b/src/api/wix/WixToolset.Data/Symbols/UpgradeSymbol.cs | |||
@@ -0,0 +1,155 @@ | |||
1 | // Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. | ||
2 | |||
3 | namespace WixToolset.Data | ||
4 | { | ||
5 | using WixToolset.Data.Symbols; | ||
6 | |||
7 | public static partial class SymbolDefinitions | ||
8 | { | ||
9 | public static readonly IntermediateSymbolDefinition Upgrade = new IntermediateSymbolDefinition( | ||
10 | SymbolDefinitionType.Upgrade, | ||
11 | new[] | ||
12 | { | ||
13 | new IntermediateFieldDefinition(nameof(UpgradeSymbolFields.UpgradeCode), IntermediateFieldType.String), | ||
14 | new IntermediateFieldDefinition(nameof(UpgradeSymbolFields.VersionMin), IntermediateFieldType.String), | ||
15 | new IntermediateFieldDefinition(nameof(UpgradeSymbolFields.VersionMax), IntermediateFieldType.String), | ||
16 | new IntermediateFieldDefinition(nameof(UpgradeSymbolFields.Language), IntermediateFieldType.String), | ||
17 | new IntermediateFieldDefinition(nameof(UpgradeSymbolFields.ExcludeLanguages), IntermediateFieldType.Bool), | ||
18 | new IntermediateFieldDefinition(nameof(UpgradeSymbolFields.IgnoreRemoveFailures), IntermediateFieldType.Bool), | ||
19 | new IntermediateFieldDefinition(nameof(UpgradeSymbolFields.MigrateFeatures), IntermediateFieldType.Bool), | ||
20 | new IntermediateFieldDefinition(nameof(UpgradeSymbolFields.OnlyDetect), IntermediateFieldType.Bool), | ||
21 | new IntermediateFieldDefinition(nameof(UpgradeSymbolFields.VersionMaxInclusive), IntermediateFieldType.Bool), | ||
22 | new IntermediateFieldDefinition(nameof(UpgradeSymbolFields.VersionMinInclusive), IntermediateFieldType.Bool), | ||
23 | new IntermediateFieldDefinition(nameof(UpgradeSymbolFields.Remove), IntermediateFieldType.String), | ||
24 | new IntermediateFieldDefinition(nameof(UpgradeSymbolFields.ActionProperty), IntermediateFieldType.String), | ||
25 | }, | ||
26 | typeof(UpgradeSymbol)); | ||
27 | } | ||
28 | } | ||
29 | |||
30 | namespace WixToolset.Data.Symbols | ||
31 | { | ||
32 | public enum UpgradeSymbolFields | ||
33 | { | ||
34 | UpgradeCode, | ||
35 | VersionMin, | ||
36 | VersionMax, | ||
37 | Language, | ||
38 | ExcludeLanguages, | ||
39 | IgnoreRemoveFailures, | ||
40 | MigrateFeatures, | ||
41 | OnlyDetect, | ||
42 | VersionMaxInclusive, | ||
43 | VersionMinInclusive, | ||
44 | Remove, | ||
45 | ActionProperty, | ||
46 | } | ||
47 | |||
48 | public static class WixUpgradeConstants | ||
49 | { | ||
50 | /// <summary> | ||
51 | /// Standard property for detecting upgrades. | ||
52 | /// </summary> | ||
53 | public const string UpgradeDetectedProperty = "WIX_UPGRADE_DETECTED"; | ||
54 | |||
55 | /// <summary> | ||
56 | /// Standard condition to prevent upgrades. | ||
57 | /// </summary> | ||
58 | public const string UpgradePreventedCondition = "NOT WIX_UPGRADE_DETECTED"; | ||
59 | |||
60 | /// <summary> | ||
61 | /// Standard property for downgrade detected. | ||
62 | /// </summary> | ||
63 | public const string DowngradeDetectedProperty = "WIX_DOWNGRADE_DETECTED"; | ||
64 | |||
65 | /// <summary> | ||
66 | /// Standard condition to prevent downgrades. | ||
67 | /// </summary> | ||
68 | public const string DowngradePreventedCondition = "NOT WIX_DOWNGRADE_DETECTED"; | ||
69 | } | ||
70 | |||
71 | public class UpgradeSymbol : IntermediateSymbol | ||
72 | { | ||
73 | public UpgradeSymbol() : base(SymbolDefinitions.Upgrade, null, null) | ||
74 | { | ||
75 | } | ||
76 | |||
77 | public UpgradeSymbol(SourceLineNumber sourceLineNumber, Identifier id = null) : base(SymbolDefinitions.Upgrade, sourceLineNumber, id) | ||
78 | { | ||
79 | } | ||
80 | |||
81 | public IntermediateField this[UpgradeSymbolFields index] => this.Fields[(int)index]; | ||
82 | |||
83 | public string UpgradeCode | ||
84 | { | ||
85 | get => (string)this.Fields[(int)UpgradeSymbolFields.UpgradeCode]; | ||
86 | set => this.Set((int)UpgradeSymbolFields.UpgradeCode, value); | ||
87 | } | ||
88 | |||
89 | public string VersionMin | ||
90 | { | ||
91 | get => (string)this.Fields[(int)UpgradeSymbolFields.VersionMin]; | ||
92 | set => this.Set((int)UpgradeSymbolFields.VersionMin, value); | ||
93 | } | ||
94 | |||
95 | public string VersionMax | ||
96 | { | ||
97 | get => (string)this.Fields[(int)UpgradeSymbolFields.VersionMax]; | ||
98 | set => this.Set((int)UpgradeSymbolFields.VersionMax, value); | ||
99 | } | ||
100 | |||
101 | public string Language | ||
102 | { | ||
103 | get => (string)this.Fields[(int)UpgradeSymbolFields.Language]; | ||
104 | set => this.Set((int)UpgradeSymbolFields.Language, value); | ||
105 | } | ||
106 | |||
107 | public bool ExcludeLanguages | ||
108 | { | ||
109 | get => this.Fields[(int)UpgradeSymbolFields.ExcludeLanguages].AsBool(); | ||
110 | set => this.Set((int)UpgradeSymbolFields.ExcludeLanguages, value); | ||
111 | } | ||
112 | |||
113 | public bool IgnoreRemoveFailures | ||
114 | { | ||
115 | get => this.Fields[(int)UpgradeSymbolFields.IgnoreRemoveFailures].AsBool(); | ||
116 | set => this.Set((int)UpgradeSymbolFields.IgnoreRemoveFailures, value); | ||
117 | } | ||
118 | |||
119 | public bool MigrateFeatures | ||
120 | { | ||
121 | get => this.Fields[(int)UpgradeSymbolFields.MigrateFeatures].AsBool(); | ||
122 | set => this.Set((int)UpgradeSymbolFields.MigrateFeatures, value); | ||
123 | } | ||
124 | |||
125 | public bool OnlyDetect | ||
126 | { | ||
127 | get => this.Fields[(int)UpgradeSymbolFields.OnlyDetect].AsBool(); | ||
128 | set => this.Set((int)UpgradeSymbolFields.OnlyDetect, value); | ||
129 | } | ||
130 | |||
131 | public bool VersionMaxInclusive | ||
132 | { | ||
133 | get => this.Fields[(int)UpgradeSymbolFields.VersionMaxInclusive].AsBool(); | ||
134 | set => this.Set((int)UpgradeSymbolFields.VersionMaxInclusive, value); | ||
135 | } | ||
136 | |||
137 | public bool VersionMinInclusive | ||
138 | { | ||
139 | get => this.Fields[(int)UpgradeSymbolFields.VersionMinInclusive].AsBool(); | ||
140 | set => this.Set((int)UpgradeSymbolFields.VersionMinInclusive, value); | ||
141 | } | ||
142 | |||
143 | public string Remove | ||
144 | { | ||
145 | get => (string)this.Fields[(int)UpgradeSymbolFields.Remove]; | ||
146 | set => this.Set((int)UpgradeSymbolFields.Remove, value); | ||
147 | } | ||
148 | |||
149 | public string ActionProperty | ||
150 | { | ||
151 | get => (string)this.Fields[(int)UpgradeSymbolFields.ActionProperty]; | ||
152 | set => this.Set((int)UpgradeSymbolFields.ActionProperty, value); | ||
153 | } | ||
154 | } | ||
155 | } \ No newline at end of file | ||
diff --git a/src/api/wix/WixToolset.Data/Symbols/UpgradedFilesOptionalDataSymbol.cs b/src/api/wix/WixToolset.Data/Symbols/UpgradedFilesOptionalDataSymbol.cs new file mode 100644 index 00000000..9e669ec3 --- /dev/null +++ b/src/api/wix/WixToolset.Data/Symbols/UpgradedFilesOptionalDataSymbol.cs | |||
@@ -0,0 +1,76 @@ | |||
1 | // Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. | ||
2 | |||
3 | namespace WixToolset.Data | ||
4 | { | ||
5 | using WixToolset.Data.Symbols; | ||
6 | |||
7 | public static partial class SymbolDefinitions | ||
8 | { | ||
9 | public static readonly IntermediateSymbolDefinition UpgradedFilesOptionalData = new IntermediateSymbolDefinition( | ||
10 | SymbolDefinitionType.UpgradedFilesOptionalData, | ||
11 | new[] | ||
12 | { | ||
13 | new IntermediateFieldDefinition(nameof(UpgradedFilesOptionalDataSymbolFields.Upgraded), IntermediateFieldType.String), | ||
14 | new IntermediateFieldDefinition(nameof(UpgradedFilesOptionalDataSymbolFields.FTK), IntermediateFieldType.String), | ||
15 | new IntermediateFieldDefinition(nameof(UpgradedFilesOptionalDataSymbolFields.SymbolPaths), IntermediateFieldType.String), | ||
16 | new IntermediateFieldDefinition(nameof(UpgradedFilesOptionalDataSymbolFields.AllowIgnoreOnPatchError), IntermediateFieldType.Bool), | ||
17 | new IntermediateFieldDefinition(nameof(UpgradedFilesOptionalDataSymbolFields.IncludeWholeFile), IntermediateFieldType.Bool), | ||
18 | }, | ||
19 | typeof(UpgradedFilesOptionalDataSymbol)); | ||
20 | } | ||
21 | } | ||
22 | |||
23 | namespace WixToolset.Data.Symbols | ||
24 | { | ||
25 | public enum UpgradedFilesOptionalDataSymbolFields | ||
26 | { | ||
27 | Upgraded, | ||
28 | FTK, | ||
29 | SymbolPaths, | ||
30 | AllowIgnoreOnPatchError, | ||
31 | IncludeWholeFile, | ||
32 | } | ||
33 | |||
34 | public class UpgradedFilesOptionalDataSymbol : IntermediateSymbol | ||
35 | { | ||
36 | public UpgradedFilesOptionalDataSymbol() : base(SymbolDefinitions.UpgradedFilesOptionalData, null, null) | ||
37 | { | ||
38 | } | ||
39 | |||
40 | public UpgradedFilesOptionalDataSymbol(SourceLineNumber sourceLineNumber, Identifier id = null) : base(SymbolDefinitions.UpgradedFilesOptionalData, sourceLineNumber, id) | ||
41 | { | ||
42 | } | ||
43 | |||
44 | public IntermediateField this[UpgradedFilesOptionalDataSymbolFields index] => this.Fields[(int)index]; | ||
45 | |||
46 | public string Upgraded | ||
47 | { | ||
48 | get => (string)this.Fields[(int)UpgradedFilesOptionalDataSymbolFields.Upgraded]; | ||
49 | set => this.Set((int)UpgradedFilesOptionalDataSymbolFields.Upgraded, value); | ||
50 | } | ||
51 | |||
52 | public string FTK | ||
53 | { | ||
54 | get => (string)this.Fields[(int)UpgradedFilesOptionalDataSymbolFields.FTK]; | ||
55 | set => this.Set((int)UpgradedFilesOptionalDataSymbolFields.FTK, value); | ||
56 | } | ||
57 | |||
58 | public string SymbolPaths | ||
59 | { | ||
60 | get => (string)this.Fields[(int)UpgradedFilesOptionalDataSymbolFields.SymbolPaths]; | ||
61 | set => this.Set((int)UpgradedFilesOptionalDataSymbolFields.SymbolPaths, value); | ||
62 | } | ||
63 | |||
64 | public bool? AllowIgnoreOnPatchError | ||
65 | { | ||
66 | get => (bool?)this.Fields[(int)UpgradedFilesOptionalDataSymbolFields.AllowIgnoreOnPatchError]; | ||
67 | set => this.Set((int)UpgradedFilesOptionalDataSymbolFields.AllowIgnoreOnPatchError, value); | ||
68 | } | ||
69 | |||
70 | public bool? IncludeWholeFile | ||
71 | { | ||
72 | get => (bool?)this.Fields[(int)UpgradedFilesOptionalDataSymbolFields.IncludeWholeFile]; | ||
73 | set => this.Set((int)UpgradedFilesOptionalDataSymbolFields.IncludeWholeFile, value); | ||
74 | } | ||
75 | } | ||
76 | } | ||
diff --git a/src/api/wix/WixToolset.Data/Symbols/UpgradedFilesToIgnoreSymbol.cs b/src/api/wix/WixToolset.Data/Symbols/UpgradedFilesToIgnoreSymbol.cs new file mode 100644 index 00000000..e21af6a2 --- /dev/null +++ b/src/api/wix/WixToolset.Data/Symbols/UpgradedFilesToIgnoreSymbol.cs | |||
@@ -0,0 +1,52 @@ | |||
1 | // Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. | ||
2 | |||
3 | namespace WixToolset.Data | ||
4 | { | ||
5 | using WixToolset.Data.Symbols; | ||
6 | |||
7 | public static partial class SymbolDefinitions | ||
8 | { | ||
9 | public static readonly IntermediateSymbolDefinition UpgradedFilesToIgnore = new IntermediateSymbolDefinition( | ||
10 | SymbolDefinitionType.UpgradedFilesToIgnore, | ||
11 | new[] | ||
12 | { | ||
13 | new IntermediateFieldDefinition(nameof(UpgradedFilesToIgnoreSymbolFields.Upgraded), IntermediateFieldType.String), | ||
14 | new IntermediateFieldDefinition(nameof(UpgradedFilesToIgnoreSymbolFields.FTK), IntermediateFieldType.String), | ||
15 | }, | ||
16 | typeof(UpgradedFilesToIgnoreSymbol)); | ||
17 | } | ||
18 | } | ||
19 | |||
20 | namespace WixToolset.Data.Symbols | ||
21 | { | ||
22 | public enum UpgradedFilesToIgnoreSymbolFields | ||
23 | { | ||
24 | Upgraded, | ||
25 | FTK, | ||
26 | } | ||
27 | |||
28 | public class UpgradedFilesToIgnoreSymbol : IntermediateSymbol | ||
29 | { | ||
30 | public UpgradedFilesToIgnoreSymbol() : base(SymbolDefinitions.UpgradedFilesToIgnore, null, null) | ||
31 | { | ||
32 | } | ||
33 | |||
34 | public UpgradedFilesToIgnoreSymbol(SourceLineNumber sourceLineNumber, Identifier id = null) : base(SymbolDefinitions.UpgradedFilesToIgnore, sourceLineNumber, id) | ||
35 | { | ||
36 | } | ||
37 | |||
38 | public IntermediateField this[UpgradedFilesToIgnoreSymbolFields index] => this.Fields[(int)index]; | ||
39 | |||
40 | public string Upgraded | ||
41 | { | ||
42 | get => (string)this.Fields[(int)UpgradedFilesToIgnoreSymbolFields.Upgraded]; | ||
43 | set => this.Set((int)UpgradedFilesToIgnoreSymbolFields.Upgraded, value); | ||
44 | } | ||
45 | |||
46 | public string FTK | ||
47 | { | ||
48 | get => (string)this.Fields[(int)UpgradedFilesToIgnoreSymbolFields.FTK]; | ||
49 | set => this.Set((int)UpgradedFilesToIgnoreSymbolFields.FTK, value); | ||
50 | } | ||
51 | } | ||
52 | } \ No newline at end of file | ||
diff --git a/src/api/wix/WixToolset.Data/Symbols/UpgradedImagesSymbol.cs b/src/api/wix/WixToolset.Data/Symbols/UpgradedImagesSymbol.cs new file mode 100644 index 00000000..28eae08a --- /dev/null +++ b/src/api/wix/WixToolset.Data/Symbols/UpgradedImagesSymbol.cs | |||
@@ -0,0 +1,76 @@ | |||
1 | // Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. | ||
2 | |||
3 | namespace WixToolset.Data | ||
4 | { | ||
5 | using WixToolset.Data.Symbols; | ||
6 | |||
7 | public static partial class SymbolDefinitions | ||
8 | { | ||
9 | public static readonly IntermediateSymbolDefinition UpgradedImages = new IntermediateSymbolDefinition( | ||
10 | SymbolDefinitionType.UpgradedImages, | ||
11 | new[] | ||
12 | { | ||
13 | new IntermediateFieldDefinition(nameof(UpgradedImagesSymbolFields.Upgraded), IntermediateFieldType.String), | ||
14 | new IntermediateFieldDefinition(nameof(UpgradedImagesSymbolFields.MsiPath), IntermediateFieldType.String), | ||
15 | new IntermediateFieldDefinition(nameof(UpgradedImagesSymbolFields.PatchMsiPath), IntermediateFieldType.String), | ||
16 | new IntermediateFieldDefinition(nameof(UpgradedImagesSymbolFields.SymbolPaths), IntermediateFieldType.String), | ||
17 | new IntermediateFieldDefinition(nameof(UpgradedImagesSymbolFields.Family), IntermediateFieldType.String), | ||
18 | }, | ||
19 | typeof(UpgradedImagesSymbol)); | ||
20 | } | ||
21 | } | ||
22 | |||
23 | namespace WixToolset.Data.Symbols | ||
24 | { | ||
25 | public enum UpgradedImagesSymbolFields | ||
26 | { | ||
27 | Upgraded, | ||
28 | MsiPath, | ||
29 | PatchMsiPath, | ||
30 | SymbolPaths, | ||
31 | Family, | ||
32 | } | ||
33 | |||
34 | public class UpgradedImagesSymbol : IntermediateSymbol | ||
35 | { | ||
36 | public UpgradedImagesSymbol() : base(SymbolDefinitions.UpgradedImages, null, null) | ||
37 | { | ||
38 | } | ||
39 | |||
40 | public UpgradedImagesSymbol(SourceLineNumber sourceLineNumber, Identifier id = null) : base(SymbolDefinitions.UpgradedImages, sourceLineNumber, id) | ||
41 | { | ||
42 | } | ||
43 | |||
44 | public IntermediateField this[UpgradedImagesSymbolFields index] => this.Fields[(int)index]; | ||
45 | |||
46 | public string Upgraded | ||
47 | { | ||
48 | get => (string)this.Fields[(int)UpgradedImagesSymbolFields.Upgraded]; | ||
49 | set => this.Set((int)UpgradedImagesSymbolFields.Upgraded, value); | ||
50 | } | ||
51 | |||
52 | public string MsiPath | ||
53 | { | ||
54 | get => (string)this.Fields[(int)UpgradedImagesSymbolFields.MsiPath]; | ||
55 | set => this.Set((int)UpgradedImagesSymbolFields.MsiPath, value); | ||
56 | } | ||
57 | |||
58 | public string PatchMsiPath | ||
59 | { | ||
60 | get => (string)this.Fields[(int)UpgradedImagesSymbolFields.PatchMsiPath]; | ||
61 | set => this.Set((int)UpgradedImagesSymbolFields.PatchMsiPath, value); | ||
62 | } | ||
63 | |||
64 | public string SymbolPaths | ||
65 | { | ||
66 | get => (string)this.Fields[(int)UpgradedImagesSymbolFields.SymbolPaths]; | ||
67 | set => this.Set((int)UpgradedImagesSymbolFields.SymbolPaths, value); | ||
68 | } | ||
69 | |||
70 | public string Family | ||
71 | { | ||
72 | get => (string)this.Fields[(int)UpgradedImagesSymbolFields.Family]; | ||
73 | set => this.Set((int)UpgradedImagesSymbolFields.Family, value); | ||
74 | } | ||
75 | } | ||
76 | } \ No newline at end of file | ||
diff --git a/src/api/wix/WixToolset.Data/Symbols/VerbSymbol.cs b/src/api/wix/WixToolset.Data/Symbols/VerbSymbol.cs new file mode 100644 index 00000000..95f045d6 --- /dev/null +++ b/src/api/wix/WixToolset.Data/Symbols/VerbSymbol.cs | |||
@@ -0,0 +1,76 @@ | |||
1 | // Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. | ||
2 | |||
3 | namespace WixToolset.Data | ||
4 | { | ||
5 | using WixToolset.Data.Symbols; | ||
6 | |||
7 | public static partial class SymbolDefinitions | ||
8 | { | ||
9 | public static readonly IntermediateSymbolDefinition Verb = new IntermediateSymbolDefinition( | ||
10 | SymbolDefinitionType.Verb, | ||
11 | new[] | ||
12 | { | ||
13 | new IntermediateFieldDefinition(nameof(VerbSymbolFields.ExtensionRef), IntermediateFieldType.String), | ||
14 | new IntermediateFieldDefinition(nameof(VerbSymbolFields.Verb), IntermediateFieldType.String), | ||
15 | new IntermediateFieldDefinition(nameof(VerbSymbolFields.Sequence), IntermediateFieldType.Number), | ||
16 | new IntermediateFieldDefinition(nameof(VerbSymbolFields.Command), IntermediateFieldType.String), | ||
17 | new IntermediateFieldDefinition(nameof(VerbSymbolFields.Argument), IntermediateFieldType.String), | ||
18 | }, | ||
19 | typeof(VerbSymbol)); | ||
20 | } | ||
21 | } | ||
22 | |||
23 | namespace WixToolset.Data.Symbols | ||
24 | { | ||
25 | public enum VerbSymbolFields | ||
26 | { | ||
27 | ExtensionRef, | ||
28 | Verb, | ||
29 | Sequence, | ||
30 | Command, | ||
31 | Argument, | ||
32 | } | ||
33 | |||
34 | public class VerbSymbol : IntermediateSymbol | ||
35 | { | ||
36 | public VerbSymbol() : base(SymbolDefinitions.Verb, null, null) | ||
37 | { | ||
38 | } | ||
39 | |||
40 | public VerbSymbol(SourceLineNumber sourceLineNumber, Identifier id = null) : base(SymbolDefinitions.Verb, sourceLineNumber, id) | ||
41 | { | ||
42 | } | ||
43 | |||
44 | public IntermediateField this[VerbSymbolFields index] => this.Fields[(int)index]; | ||
45 | |||
46 | public string ExtensionRef | ||
47 | { | ||
48 | get => (string)this.Fields[(int)VerbSymbolFields.ExtensionRef]; | ||
49 | set => this.Set((int)VerbSymbolFields.ExtensionRef, value); | ||
50 | } | ||
51 | |||
52 | public string Verb | ||
53 | { | ||
54 | get => (string)this.Fields[(int)VerbSymbolFields.Verb]; | ||
55 | set => this.Set((int)VerbSymbolFields.Verb, value); | ||
56 | } | ||
57 | |||
58 | public int? Sequence | ||
59 | { | ||
60 | get => (int?)this.Fields[(int)VerbSymbolFields.Sequence]; | ||
61 | set => this.Set((int)VerbSymbolFields.Sequence, value); | ||
62 | } | ||
63 | |||
64 | public string Command | ||
65 | { | ||
66 | get => (string)this.Fields[(int)VerbSymbolFields.Command]; | ||
67 | set => this.Set((int)VerbSymbolFields.Command, value); | ||
68 | } | ||
69 | |||
70 | public string Argument | ||
71 | { | ||
72 | get => (string)this.Fields[(int)VerbSymbolFields.Argument]; | ||
73 | set => this.Set((int)VerbSymbolFields.Argument, value); | ||
74 | } | ||
75 | } | ||
76 | } \ No newline at end of file | ||
diff --git a/src/api/wix/WixToolset.Data/Symbols/WixActionSymbol.cs b/src/api/wix/WixToolset.Data/Symbols/WixActionSymbol.cs new file mode 100644 index 00000000..a055d68f --- /dev/null +++ b/src/api/wix/WixToolset.Data/Symbols/WixActionSymbol.cs | |||
@@ -0,0 +1,101 @@ | |||
1 | // Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. | ||
2 | |||
3 | namespace WixToolset.Data | ||
4 | { | ||
5 | using WixToolset.Data.Symbols; | ||
6 | |||
7 | public static partial class SymbolDefinitions | ||
8 | { | ||
9 | public static readonly IntermediateSymbolDefinition WixAction = new IntermediateSymbolDefinition( | ||
10 | SymbolDefinitionType.WixAction, | ||
11 | new[] | ||
12 | { | ||
13 | new IntermediateFieldDefinition(nameof(WixActionSymbolFields.SequenceTable), IntermediateFieldType.Number), | ||
14 | new IntermediateFieldDefinition(nameof(WixActionSymbolFields.Action), IntermediateFieldType.String), | ||
15 | new IntermediateFieldDefinition(nameof(WixActionSymbolFields.Condition), IntermediateFieldType.String), | ||
16 | new IntermediateFieldDefinition(nameof(WixActionSymbolFields.Sequence), IntermediateFieldType.Number), | ||
17 | new IntermediateFieldDefinition(nameof(WixActionSymbolFields.Before), IntermediateFieldType.String), | ||
18 | new IntermediateFieldDefinition(nameof(WixActionSymbolFields.After), IntermediateFieldType.String), | ||
19 | new IntermediateFieldDefinition(nameof(WixActionSymbolFields.Overridable), IntermediateFieldType.Bool), | ||
20 | }, | ||
21 | typeof(WixActionSymbol)); | ||
22 | } | ||
23 | } | ||
24 | |||
25 | namespace WixToolset.Data.Symbols | ||
26 | { | ||
27 | public enum WixActionSymbolFields | ||
28 | { | ||
29 | SequenceTable, | ||
30 | Action, | ||
31 | Condition, | ||
32 | Sequence, | ||
33 | Before, | ||
34 | After, | ||
35 | Overridable, | ||
36 | } | ||
37 | |||
38 | public enum SequenceTable | ||
39 | { | ||
40 | AdminUISequence, | ||
41 | AdminExecuteSequence, | ||
42 | AdvertiseExecuteSequence, | ||
43 | InstallUISequence, | ||
44 | InstallExecuteSequence | ||
45 | } | ||
46 | |||
47 | public class WixActionSymbol : IntermediateSymbol | ||
48 | { | ||
49 | public WixActionSymbol() : base(SymbolDefinitions.WixAction, null, null) | ||
50 | { | ||
51 | } | ||
52 | |||
53 | public WixActionSymbol(SourceLineNumber sourceLineNumber, Identifier id = null) : base(SymbolDefinitions.WixAction, sourceLineNumber, id) | ||
54 | { | ||
55 | } | ||
56 | |||
57 | public IntermediateField this[WixActionSymbolFields index] => this.Fields[(int)index]; | ||
58 | |||
59 | public SequenceTable SequenceTable | ||
60 | { | ||
61 | get => (SequenceTable)this.Fields[(int)WixActionSymbolFields.SequenceTable].AsNumber(); | ||
62 | set => this.Set((int)WixActionSymbolFields.SequenceTable, (int)value); | ||
63 | } | ||
64 | |||
65 | public string Action | ||
66 | { | ||
67 | get => (string)this.Fields[(int)WixActionSymbolFields.Action]; | ||
68 | set => this.Set((int)WixActionSymbolFields.Action, value); | ||
69 | } | ||
70 | |||
71 | public string Condition | ||
72 | { | ||
73 | get => (string)this.Fields[(int)WixActionSymbolFields.Condition]; | ||
74 | set => this.Set((int)WixActionSymbolFields.Condition, value); | ||
75 | } | ||
76 | |||
77 | public int? Sequence | ||
78 | { | ||
79 | get => (int?)this.Fields[(int)WixActionSymbolFields.Sequence]; | ||
80 | set => this.Set((int)WixActionSymbolFields.Sequence, value); | ||
81 | } | ||
82 | |||
83 | public string Before | ||
84 | { | ||
85 | get => (string)this.Fields[(int)WixActionSymbolFields.Before]; | ||
86 | set => this.Set((int)WixActionSymbolFields.Before, value); | ||
87 | } | ||
88 | |||
89 | public string After | ||
90 | { | ||
91 | get => (string)this.Fields[(int)WixActionSymbolFields.After]; | ||
92 | set => this.Set((int)WixActionSymbolFields.After, value); | ||
93 | } | ||
94 | |||
95 | public bool Overridable | ||
96 | { | ||
97 | get => this.Fields[(int)WixActionSymbolFields.Overridable].AsBool(); | ||
98 | set => this.Set((int)WixActionSymbolFields.Overridable, value); | ||
99 | } | ||
100 | } | ||
101 | } | ||
diff --git a/src/api/wix/WixToolset.Data/Symbols/WixApprovedExeForElevationSymbol.cs b/src/api/wix/WixToolset.Data/Symbols/WixApprovedExeForElevationSymbol.cs new file mode 100644 index 00000000..04c6e712 --- /dev/null +++ b/src/api/wix/WixToolset.Data/Symbols/WixApprovedExeForElevationSymbol.cs | |||
@@ -0,0 +1,71 @@ | |||
1 | // Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. | ||
2 | |||
3 | namespace WixToolset.Data | ||
4 | { | ||
5 | using WixToolset.Data.Symbols; | ||
6 | |||
7 | public static partial class SymbolDefinitions | ||
8 | { | ||
9 | public static readonly IntermediateSymbolDefinition WixApprovedExeForElevation = new IntermediateSymbolDefinition( | ||
10 | SymbolDefinitionType.WixApprovedExeForElevation, | ||
11 | new[] | ||
12 | { | ||
13 | new IntermediateFieldDefinition(nameof(WixApprovedExeForElevationSymbolFields.Key), IntermediateFieldType.String), | ||
14 | new IntermediateFieldDefinition(nameof(WixApprovedExeForElevationSymbolFields.ValueName), IntermediateFieldType.String), | ||
15 | new IntermediateFieldDefinition(nameof(WixApprovedExeForElevationSymbolFields.Attributes), IntermediateFieldType.Number), | ||
16 | }, | ||
17 | typeof(WixApprovedExeForElevationSymbol)); | ||
18 | } | ||
19 | } | ||
20 | |||
21 | namespace WixToolset.Data.Symbols | ||
22 | { | ||
23 | using System; | ||
24 | |||
25 | public enum WixApprovedExeForElevationSymbolFields | ||
26 | { | ||
27 | Key, | ||
28 | ValueName, | ||
29 | Attributes, | ||
30 | } | ||
31 | |||
32 | [Flags] | ||
33 | public enum WixApprovedExeForElevationAttributes | ||
34 | { | ||
35 | None = 0x0, | ||
36 | Win64 = 0x1, | ||
37 | } | ||
38 | |||
39 | public class WixApprovedExeForElevationSymbol : IntermediateSymbol | ||
40 | { | ||
41 | public WixApprovedExeForElevationSymbol() : base(SymbolDefinitions.WixApprovedExeForElevation, null, null) | ||
42 | { | ||
43 | } | ||
44 | |||
45 | public WixApprovedExeForElevationSymbol(SourceLineNumber sourceLineNumber, Identifier id = null) : base(SymbolDefinitions.WixApprovedExeForElevation, sourceLineNumber, id) | ||
46 | { | ||
47 | } | ||
48 | |||
49 | public IntermediateField this[WixApprovedExeForElevationSymbolFields index] => this.Fields[(int)index]; | ||
50 | |||
51 | public string Key | ||
52 | { | ||
53 | get => (string)this.Fields[(int)WixApprovedExeForElevationSymbolFields.Key]; | ||
54 | set => this.Set((int)WixApprovedExeForElevationSymbolFields.Key, value); | ||
55 | } | ||
56 | |||
57 | public string ValueName | ||
58 | { | ||
59 | get => (string)this.Fields[(int)WixApprovedExeForElevationSymbolFields.ValueName]; | ||
60 | set => this.Set((int)WixApprovedExeForElevationSymbolFields.ValueName, value); | ||
61 | } | ||
62 | |||
63 | public WixApprovedExeForElevationAttributes Attributes | ||
64 | { | ||
65 | get => (WixApprovedExeForElevationAttributes)this.Fields[(int)WixApprovedExeForElevationSymbolFields.Attributes].AsNumber(); | ||
66 | set => this.Set((int)WixApprovedExeForElevationSymbolFields.Attributes, (int)value); | ||
67 | } | ||
68 | |||
69 | public bool Win64 => (this.Attributes & WixApprovedExeForElevationAttributes.Win64) == WixApprovedExeForElevationAttributes.Win64; | ||
70 | } | ||
71 | } | ||
diff --git a/src/api/wix/WixToolset.Data/Symbols/WixBindUpdatedFilesSymbol.cs b/src/api/wix/WixToolset.Data/Symbols/WixBindUpdatedFilesSymbol.cs new file mode 100644 index 00000000..03bdb69b --- /dev/null +++ b/src/api/wix/WixToolset.Data/Symbols/WixBindUpdatedFilesSymbol.cs | |||
@@ -0,0 +1,44 @@ | |||
1 | // Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. | ||
2 | |||
3 | namespace WixToolset.Data | ||
4 | { | ||
5 | using WixToolset.Data.Symbols; | ||
6 | |||
7 | public static partial class SymbolDefinitions | ||
8 | { | ||
9 | public static readonly IntermediateSymbolDefinition WixBindUpdatedFiles = new IntermediateSymbolDefinition( | ||
10 | SymbolDefinitionType.WixBindUpdatedFiles, | ||
11 | new[] | ||
12 | { | ||
13 | new IntermediateFieldDefinition(nameof(WixBindUpdatedFilesSymbolFields.FileRef), IntermediateFieldType.String), | ||
14 | }, | ||
15 | typeof(WixBindUpdatedFilesSymbol)); | ||
16 | } | ||
17 | } | ||
18 | |||
19 | namespace WixToolset.Data.Symbols | ||
20 | { | ||
21 | public enum WixBindUpdatedFilesSymbolFields | ||
22 | { | ||
23 | FileRef, | ||
24 | } | ||
25 | |||
26 | public class WixBindUpdatedFilesSymbol : IntermediateSymbol | ||
27 | { | ||
28 | public WixBindUpdatedFilesSymbol() : base(SymbolDefinitions.WixBindUpdatedFiles, null, null) | ||
29 | { | ||
30 | } | ||
31 | |||
32 | public WixBindUpdatedFilesSymbol(SourceLineNumber sourceLineNumber, Identifier id = null) : base(SymbolDefinitions.WixBindUpdatedFiles, sourceLineNumber, id) | ||
33 | { | ||
34 | } | ||
35 | |||
36 | public IntermediateField this[WixBindUpdatedFilesSymbolFields index] => this.Fields[(int)index]; | ||
37 | |||
38 | public string FileRef | ||
39 | { | ||
40 | get => (string)this.Fields[(int)WixBindUpdatedFilesSymbolFields.FileRef]; | ||
41 | set => this.Set((int)WixBindUpdatedFilesSymbolFields.FileRef, value); | ||
42 | } | ||
43 | } | ||
44 | } \ No newline at end of file | ||
diff --git a/src/api/wix/WixToolset.Data/Symbols/WixBootstrapperApplicationDllSymbol.cs b/src/api/wix/WixToolset.Data/Symbols/WixBootstrapperApplicationDllSymbol.cs new file mode 100644 index 00000000..d3a66754 --- /dev/null +++ b/src/api/wix/WixToolset.Data/Symbols/WixBootstrapperApplicationDllSymbol.cs | |||
@@ -0,0 +1,53 @@ | |||
1 | // Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. | ||
2 | |||
3 | namespace WixToolset.Data | ||
4 | { | ||
5 | using WixToolset.Data.Symbols; | ||
6 | |||
7 | public static partial class SymbolDefinitions | ||
8 | { | ||
9 | public static readonly IntermediateSymbolDefinition WixBootstrapperApplicationDll = new IntermediateSymbolDefinition( | ||
10 | SymbolDefinitionType.WixBootstrapperApplicationDll, | ||
11 | new IntermediateFieldDefinition[] | ||
12 | { | ||
13 | new IntermediateFieldDefinition(nameof(WixBootstrapperApplicationDllSymbolFields.DpiAwareness), IntermediateFieldType.Number), | ||
14 | }, | ||
15 | typeof(WixBootstrapperApplicationDllSymbol)); | ||
16 | } | ||
17 | } | ||
18 | |||
19 | namespace WixToolset.Data.Symbols | ||
20 | { | ||
21 | public enum WixBootstrapperApplicationDllSymbolFields | ||
22 | { | ||
23 | DpiAwareness, | ||
24 | } | ||
25 | |||
26 | public enum WixBootstrapperApplicationDpiAwarenessType | ||
27 | { | ||
28 | Unaware, | ||
29 | System, | ||
30 | PerMonitor, | ||
31 | PerMonitorV2, | ||
32 | GdiScaled, | ||
33 | } | ||
34 | |||
35 | public class WixBootstrapperApplicationDllSymbol : IntermediateSymbol | ||
36 | { | ||
37 | public WixBootstrapperApplicationDllSymbol() : base(SymbolDefinitions.WixBootstrapperApplicationDll, null, null) | ||
38 | { | ||
39 | } | ||
40 | |||
41 | public WixBootstrapperApplicationDllSymbol(SourceLineNumber sourceLineNumber, Identifier id = null) : base(SymbolDefinitions.WixBootstrapperApplicationDll, sourceLineNumber, id) | ||
42 | { | ||
43 | } | ||
44 | |||
45 | public IntermediateField this[WixBootstrapperApplicationDllSymbolFields index] => this.Fields[(int)index]; | ||
46 | |||
47 | public WixBootstrapperApplicationDpiAwarenessType DpiAwareness | ||
48 | { | ||
49 | get => (WixBootstrapperApplicationDpiAwarenessType)this.Fields[(int)WixBootstrapperApplicationDllSymbolFields.DpiAwareness].AsNumber(); | ||
50 | set => this.Set((int)WixBootstrapperApplicationDllSymbolFields.DpiAwareness, (int)value); | ||
51 | } | ||
52 | } | ||
53 | } | ||
diff --git a/src/api/wix/WixToolset.Data/Symbols/WixBootstrapperApplicationSymbol.cs b/src/api/wix/WixToolset.Data/Symbols/WixBootstrapperApplicationSymbol.cs new file mode 100644 index 00000000..3d7876fd --- /dev/null +++ b/src/api/wix/WixToolset.Data/Symbols/WixBootstrapperApplicationSymbol.cs | |||
@@ -0,0 +1,36 @@ | |||
1 | // Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. | ||
2 | |||
3 | namespace WixToolset.Data | ||
4 | { | ||
5 | using WixToolset.Data.Symbols; | ||
6 | |||
7 | public static partial class SymbolDefinitions | ||
8 | { | ||
9 | public static readonly IntermediateSymbolDefinition WixBootstrapperApplication = new IntermediateSymbolDefinition( | ||
10 | SymbolDefinitionType.WixBootstrapperApplication, | ||
11 | new IntermediateFieldDefinition[] | ||
12 | { | ||
13 | }, | ||
14 | typeof(WixBootstrapperApplicationSymbol)); | ||
15 | } | ||
16 | } | ||
17 | |||
18 | namespace WixToolset.Data.Symbols | ||
19 | { | ||
20 | public enum WixBootstrapperApplicationSymbolFields | ||
21 | { | ||
22 | } | ||
23 | |||
24 | public class WixBootstrapperApplicationSymbol : IntermediateSymbol | ||
25 | { | ||
26 | public WixBootstrapperApplicationSymbol() : base(SymbolDefinitions.WixBootstrapperApplication, null, null) | ||
27 | { | ||
28 | } | ||
29 | |||
30 | public WixBootstrapperApplicationSymbol(SourceLineNumber sourceLineNumber, Identifier id = null) : base(SymbolDefinitions.WixBootstrapperApplication, sourceLineNumber, id) | ||
31 | { | ||
32 | } | ||
33 | |||
34 | public IntermediateField this[WixBootstrapperApplicationSymbolFields index] => this.Fields[(int)index]; | ||
35 | } | ||
36 | } | ||
diff --git a/src/api/wix/WixToolset.Data/Symbols/WixBuildInfoSymbol.cs b/src/api/wix/WixToolset.Data/Symbols/WixBuildInfoSymbol.cs new file mode 100644 index 00000000..66e04d4b --- /dev/null +++ b/src/api/wix/WixToolset.Data/Symbols/WixBuildInfoSymbol.cs | |||
@@ -0,0 +1,68 @@ | |||
1 | // Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. | ||
2 | |||
3 | namespace WixToolset.Data | ||
4 | { | ||
5 | using WixToolset.Data.Symbols; | ||
6 | |||
7 | public static partial class SymbolDefinitions | ||
8 | { | ||
9 | public static readonly IntermediateSymbolDefinition WixBuildInfo = new IntermediateSymbolDefinition( | ||
10 | SymbolDefinitionType.WixBuildInfo, | ||
11 | new[] | ||
12 | { | ||
13 | new IntermediateFieldDefinition(nameof(WixBuildInfoSymbolFields.WixVersion), IntermediateFieldType.String), | ||
14 | new IntermediateFieldDefinition(nameof(WixBuildInfoSymbolFields.WixOutputFile), IntermediateFieldType.String), | ||
15 | new IntermediateFieldDefinition(nameof(WixBuildInfoSymbolFields.WixProjectFile), IntermediateFieldType.String), | ||
16 | new IntermediateFieldDefinition(nameof(WixBuildInfoSymbolFields.WixPdbFile), IntermediateFieldType.String), | ||
17 | }, | ||
18 | typeof(WixBuildInfoSymbol)); | ||
19 | } | ||
20 | } | ||
21 | |||
22 | namespace WixToolset.Data.Symbols | ||
23 | { | ||
24 | public enum WixBuildInfoSymbolFields | ||
25 | { | ||
26 | WixVersion, | ||
27 | WixOutputFile, | ||
28 | WixProjectFile, | ||
29 | WixPdbFile, | ||
30 | } | ||
31 | |||
32 | public class WixBuildInfoSymbol : IntermediateSymbol | ||
33 | { | ||
34 | public WixBuildInfoSymbol() : base(SymbolDefinitions.WixBuildInfo, null, null) | ||
35 | { | ||
36 | } | ||
37 | |||
38 | public WixBuildInfoSymbol(SourceLineNumber sourceLineNumber, Identifier id = null) : base(SymbolDefinitions.WixBuildInfo, sourceLineNumber, id) | ||
39 | { | ||
40 | } | ||
41 | |||
42 | public IntermediateField this[WixBuildInfoSymbolFields index] => this.Fields[(int)index]; | ||
43 | |||
44 | public string WixVersion | ||
45 | { | ||
46 | get => (string)this.Fields[(int)WixBuildInfoSymbolFields.WixVersion]; | ||
47 | set => this.Set((int)WixBuildInfoSymbolFields.WixVersion, value); | ||
48 | } | ||
49 | |||
50 | public string WixOutputFile | ||
51 | { | ||
52 | get => (string)this.Fields[(int)WixBuildInfoSymbolFields.WixOutputFile]; | ||
53 | set => this.Set((int)WixBuildInfoSymbolFields.WixOutputFile, value); | ||
54 | } | ||
55 | |||
56 | public string WixProjectFile | ||
57 | { | ||
58 | get => (string)this.Fields[(int)WixBuildInfoSymbolFields.WixProjectFile]; | ||
59 | set => this.Set((int)WixBuildInfoSymbolFields.WixProjectFile, value); | ||
60 | } | ||
61 | |||
62 | public string WixPdbFile | ||
63 | { | ||
64 | get => (string)this.Fields[(int)WixBuildInfoSymbolFields.WixPdbFile]; | ||
65 | set => this.Set((int)WixBuildInfoSymbolFields.WixPdbFile, value); | ||
66 | } | ||
67 | } | ||
68 | } \ No newline at end of file | ||
diff --git a/src/api/wix/WixToolset.Data/Symbols/WixBundleContainerSymbol.cs b/src/api/wix/WixToolset.Data/Symbols/WixBundleContainerSymbol.cs new file mode 100644 index 00000000..80beda0a --- /dev/null +++ b/src/api/wix/WixToolset.Data/Symbols/WixBundleContainerSymbol.cs | |||
@@ -0,0 +1,103 @@ | |||
1 | // Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. | ||
2 | |||
3 | namespace WixToolset.Data | ||
4 | { | ||
5 | using WixToolset.Data.Symbols; | ||
6 | |||
7 | public static partial class SymbolDefinitions | ||
8 | { | ||
9 | public static readonly IntermediateSymbolDefinition WixBundleContainer = new IntermediateSymbolDefinition( | ||
10 | SymbolDefinitionType.WixBundleContainer, | ||
11 | new[] | ||
12 | { | ||
13 | new IntermediateFieldDefinition(nameof(WixBundleContainerSymbolFields.Name), IntermediateFieldType.String), | ||
14 | new IntermediateFieldDefinition(nameof(WixBundleContainerSymbolFields.Type), IntermediateFieldType.Number), | ||
15 | new IntermediateFieldDefinition(nameof(WixBundleContainerSymbolFields.DownloadUrl), IntermediateFieldType.String), | ||
16 | new IntermediateFieldDefinition(nameof(WixBundleContainerSymbolFields.Size), IntermediateFieldType.LargeNumber), | ||
17 | new IntermediateFieldDefinition(nameof(WixBundleContainerSymbolFields.Hash), IntermediateFieldType.String), | ||
18 | new IntermediateFieldDefinition(nameof(WixBundleContainerSymbolFields.AttachedContainerIndex), IntermediateFieldType.Number), | ||
19 | new IntermediateFieldDefinition(nameof(WixBundleContainerSymbolFields.WorkingPath), IntermediateFieldType.String), | ||
20 | }, | ||
21 | typeof(WixBundleContainerSymbol)); | ||
22 | } | ||
23 | } | ||
24 | |||
25 | namespace WixToolset.Data.Symbols | ||
26 | { | ||
27 | using System; | ||
28 | |||
29 | public enum WixBundleContainerSymbolFields | ||
30 | { | ||
31 | Name, | ||
32 | Type, | ||
33 | DownloadUrl, | ||
34 | Size, | ||
35 | Hash, | ||
36 | AttachedContainerIndex, | ||
37 | WorkingPath, | ||
38 | } | ||
39 | |||
40 | /// <summary> | ||
41 | /// Types of bundle packages. | ||
42 | /// </summary> | ||
43 | public enum ContainerType | ||
44 | { | ||
45 | Attached, | ||
46 | Detached, | ||
47 | } | ||
48 | |||
49 | public class WixBundleContainerSymbol : IntermediateSymbol | ||
50 | { | ||
51 | public WixBundleContainerSymbol() : base(SymbolDefinitions.WixBundleContainer, null, null) | ||
52 | { | ||
53 | } | ||
54 | |||
55 | public WixBundleContainerSymbol(SourceLineNumber sourceLineNumber, Identifier id = null) : base(SymbolDefinitions.WixBundleContainer, sourceLineNumber, id) | ||
56 | { | ||
57 | } | ||
58 | |||
59 | public IntermediateField this[WixBundleContainerSymbolFields index] => this.Fields[(int)index]; | ||
60 | |||
61 | public string Name | ||
62 | { | ||
63 | get => (string)this.Fields[(int)WixBundleContainerSymbolFields.Name]; | ||
64 | set => this.Set((int)WixBundleContainerSymbolFields.Name, value); | ||
65 | } | ||
66 | |||
67 | public ContainerType Type | ||
68 | { | ||
69 | get => (ContainerType)this.Fields[(int)WixBundleContainerSymbolFields.Type].AsNumber(); | ||
70 | set => this.Set((int)WixBundleContainerSymbolFields.Type, (int)value); | ||
71 | } | ||
72 | |||
73 | public string DownloadUrl | ||
74 | { | ||
75 | get => (string)this.Fields[(int)WixBundleContainerSymbolFields.DownloadUrl]; | ||
76 | set => this.Set((int)WixBundleContainerSymbolFields.DownloadUrl, value); | ||
77 | } | ||
78 | |||
79 | public long? Size | ||
80 | { | ||
81 | get => (long?)this.Fields[(int)WixBundleContainerSymbolFields.Size]; | ||
82 | set => this.Set((int)WixBundleContainerSymbolFields.Size, value); | ||
83 | } | ||
84 | |||
85 | public string Hash | ||
86 | { | ||
87 | get => (string)this.Fields[(int)WixBundleContainerSymbolFields.Hash]; | ||
88 | set => this.Set((int)WixBundleContainerSymbolFields.Hash, value); | ||
89 | } | ||
90 | |||
91 | public int? AttachedContainerIndex | ||
92 | { | ||
93 | get => (int?)this.Fields[(int)WixBundleContainerSymbolFields.AttachedContainerIndex]; | ||
94 | set => this.Set((int)WixBundleContainerSymbolFields.AttachedContainerIndex, value); | ||
95 | } | ||
96 | |||
97 | public string WorkingPath | ||
98 | { | ||
99 | get => (string)this.Fields[(int)WixBundleContainerSymbolFields.WorkingPath]; | ||
100 | set => this.Set((int)WixBundleContainerSymbolFields.WorkingPath, value); | ||
101 | } | ||
102 | } | ||
103 | } | ||
diff --git a/src/api/wix/WixToolset.Data/Symbols/WixBundleCustomDataAttributeSymbol.cs b/src/api/wix/WixToolset.Data/Symbols/WixBundleCustomDataAttributeSymbol.cs new file mode 100644 index 00000000..c0a657ee --- /dev/null +++ b/src/api/wix/WixToolset.Data/Symbols/WixBundleCustomDataAttributeSymbol.cs | |||
@@ -0,0 +1,52 @@ | |||
1 | // Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. | ||
2 | |||
3 | namespace WixToolset.Data | ||
4 | { | ||
5 | using WixToolset.Data.Symbols; | ||
6 | |||
7 | public static partial class SymbolDefinitions | ||
8 | { | ||
9 | public static readonly IntermediateSymbolDefinition WixBundleCustomDataAttribute = new IntermediateSymbolDefinition( | ||
10 | SymbolDefinitionType.WixBundleCustomDataAttribute, | ||
11 | new[] | ||
12 | { | ||
13 | new IntermediateFieldDefinition(nameof(WixBundleCustomDataAttributeSymbolFields.CustomDataRef), IntermediateFieldType.String), | ||
14 | new IntermediateFieldDefinition(nameof(WixBundleCustomDataAttributeSymbolFields.Name), IntermediateFieldType.String), | ||
15 | }, | ||
16 | typeof(WixBundleCustomDataAttributeSymbol)); | ||
17 | } | ||
18 | } | ||
19 | |||
20 | namespace WixToolset.Data.Symbols | ||
21 | { | ||
22 | public enum WixBundleCustomDataAttributeSymbolFields | ||
23 | { | ||
24 | CustomDataRef, | ||
25 | Name, | ||
26 | } | ||
27 | |||
28 | public class WixBundleCustomDataAttributeSymbol : IntermediateSymbol | ||
29 | { | ||
30 | public WixBundleCustomDataAttributeSymbol() : base(SymbolDefinitions.WixBundleCustomDataAttribute, null, null) | ||
31 | { | ||
32 | } | ||
33 | |||
34 | public WixBundleCustomDataAttributeSymbol(SourceLineNumber sourceLineNumber, Identifier id = null) : base(SymbolDefinitions.WixBundleCustomDataAttribute, sourceLineNumber, id) | ||
35 | { | ||
36 | } | ||
37 | |||
38 | public IntermediateField this[WixBundleCustomDataAttributeSymbolFields index] => this.Fields[(int)index]; | ||
39 | |||
40 | public string CustomDataRef | ||
41 | { | ||
42 | get => (string)this.Fields[(int)WixBundleCustomDataAttributeSymbolFields.CustomDataRef]; | ||
43 | set => this.Set((int)WixBundleCustomDataAttributeSymbolFields.CustomDataRef, value); | ||
44 | } | ||
45 | |||
46 | public string Name | ||
47 | { | ||
48 | get => (string)this.Fields[(int)WixBundleCustomDataAttributeSymbolFields.Name]; | ||
49 | set => this.Set((int)WixBundleCustomDataAttributeSymbolFields.Name, value); | ||
50 | } | ||
51 | } | ||
52 | } | ||
diff --git a/src/api/wix/WixToolset.Data/Symbols/WixBundleCustomDataCellSymbol.cs b/src/api/wix/WixToolset.Data/Symbols/WixBundleCustomDataCellSymbol.cs new file mode 100644 index 00000000..0488969a --- /dev/null +++ b/src/api/wix/WixToolset.Data/Symbols/WixBundleCustomDataCellSymbol.cs | |||
@@ -0,0 +1,68 @@ | |||
1 | // Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. | ||
2 | |||
3 | namespace WixToolset.Data | ||
4 | { | ||
5 | using WixToolset.Data.Symbols; | ||
6 | |||
7 | public static partial class SymbolDefinitions | ||
8 | { | ||
9 | public static readonly IntermediateSymbolDefinition WixBundleCustomDataCell = new IntermediateSymbolDefinition( | ||
10 | SymbolDefinitionType.WixBundleCustomDataCell, | ||
11 | new[] | ||
12 | { | ||
13 | new IntermediateFieldDefinition(nameof(WixBundleCustomDataCellSymbolFields.CustomDataRef), IntermediateFieldType.String), | ||
14 | new IntermediateFieldDefinition(nameof(WixBundleCustomDataCellSymbolFields.AttributeRef), IntermediateFieldType.String), | ||
15 | new IntermediateFieldDefinition(nameof(WixBundleCustomDataCellSymbolFields.ElementId), IntermediateFieldType.String), | ||
16 | new IntermediateFieldDefinition(nameof(WixBundleCustomDataCellSymbolFields.Value), IntermediateFieldType.String), | ||
17 | }, | ||
18 | typeof(WixBundleCustomDataCellSymbol)); | ||
19 | } | ||
20 | } | ||
21 | |||
22 | namespace WixToolset.Data.Symbols | ||
23 | { | ||
24 | public enum WixBundleCustomDataCellSymbolFields | ||
25 | { | ||
26 | CustomDataRef, | ||
27 | AttributeRef, | ||
28 | ElementId, | ||
29 | Value, | ||
30 | } | ||
31 | |||
32 | public class WixBundleCustomDataCellSymbol : IntermediateSymbol | ||
33 | { | ||
34 | public WixBundleCustomDataCellSymbol() : base(SymbolDefinitions.WixBundleCustomDataCell, null, null) | ||
35 | { | ||
36 | } | ||
37 | |||
38 | public WixBundleCustomDataCellSymbol(SourceLineNumber sourceLineNumber, Identifier id = null) : base(SymbolDefinitions.WixBundleCustomDataCell, sourceLineNumber, id) | ||
39 | { | ||
40 | } | ||
41 | |||
42 | public IntermediateField this[WixBundleCustomDataCellSymbolFields index] => this.Fields[(int)index]; | ||
43 | |||
44 | public string CustomDataRef | ||
45 | { | ||
46 | get => (string)this.Fields[(int)WixBundleCustomDataCellSymbolFields.CustomDataRef]; | ||
47 | set => this.Set((int)WixBundleCustomDataCellSymbolFields.CustomDataRef, value); | ||
48 | } | ||
49 | |||
50 | public string AttributeRef | ||
51 | { | ||
52 | get => (string)this.Fields[(int)WixBundleCustomDataCellSymbolFields.AttributeRef]; | ||
53 | set => this.Set((int)WixBundleCustomDataCellSymbolFields.AttributeRef, value); | ||
54 | } | ||
55 | |||
56 | public string ElementId | ||
57 | { | ||
58 | get => (string)this.Fields[(int)WixBundleCustomDataCellSymbolFields.ElementId]; | ||
59 | set => this.Set((int)WixBundleCustomDataCellSymbolFields.ElementId, value); | ||
60 | } | ||
61 | |||
62 | public string Value | ||
63 | { | ||
64 | get => (string)this.Fields[(int)WixBundleCustomDataCellSymbolFields.Value]; | ||
65 | set => this.Set((int)WixBundleCustomDataCellSymbolFields.Value, value); | ||
66 | } | ||
67 | } | ||
68 | } | ||
diff --git a/src/api/wix/WixToolset.Data/Symbols/WixBundleCustomDataSymbol.cs b/src/api/wix/WixToolset.Data/Symbols/WixBundleCustomDataSymbol.cs new file mode 100644 index 00000000..0490f9f7 --- /dev/null +++ b/src/api/wix/WixToolset.Data/Symbols/WixBundleCustomDataSymbol.cs | |||
@@ -0,0 +1,71 @@ | |||
1 | // Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. | ||
2 | |||
3 | namespace WixToolset.Data | ||
4 | { | ||
5 | using WixToolset.Data.Symbols; | ||
6 | |||
7 | public static partial class SymbolDefinitions | ||
8 | { | ||
9 | public static readonly IntermediateSymbolDefinition WixBundleCustomData = new IntermediateSymbolDefinition( | ||
10 | SymbolDefinitionType.WixBundleCustomData, | ||
11 | new[] | ||
12 | { | ||
13 | new IntermediateFieldDefinition(nameof(WixBundleCustomDataSymbolFields.AttributeNames), IntermediateFieldType.String), | ||
14 | new IntermediateFieldDefinition(nameof(WixBundleCustomDataSymbolFields.Type), IntermediateFieldType.Number), | ||
15 | new IntermediateFieldDefinition(nameof(WixBundleCustomDataSymbolFields.BundleExtensionRef), IntermediateFieldType.String), | ||
16 | }, | ||
17 | typeof(WixBundleCustomDataSymbol)); | ||
18 | } | ||
19 | } | ||
20 | |||
21 | namespace WixToolset.Data.Symbols | ||
22 | { | ||
23 | public enum WixBundleCustomDataSymbolFields | ||
24 | { | ||
25 | AttributeNames, | ||
26 | Type, | ||
27 | BundleExtensionRef, | ||
28 | } | ||
29 | |||
30 | public enum WixBundleCustomDataType | ||
31 | { | ||
32 | Unknown, | ||
33 | BootstrapperApplication, | ||
34 | BundleExtension, | ||
35 | } | ||
36 | |||
37 | public class WixBundleCustomDataSymbol : IntermediateSymbol | ||
38 | { | ||
39 | public const char AttributeNamesSeparator = '\x85'; | ||
40 | |||
41 | public WixBundleCustomDataSymbol() : base(SymbolDefinitions.WixBundleCustomData, null, null) | ||
42 | { | ||
43 | } | ||
44 | |||
45 | public WixBundleCustomDataSymbol(SourceLineNumber sourceLineNumber, Identifier id = null) : base(SymbolDefinitions.WixBundleCustomData, sourceLineNumber, id) | ||
46 | { | ||
47 | } | ||
48 | |||
49 | public IntermediateField this[WixBundleCustomDataSymbolFields index] => this.Fields[(int)index]; | ||
50 | |||
51 | public string AttributeNames | ||
52 | { | ||
53 | get => (string)this.Fields[(int)WixBundleCustomDataSymbolFields.AttributeNames]; | ||
54 | set => this.Set((int)WixBundleCustomDataSymbolFields.AttributeNames, value); | ||
55 | } | ||
56 | |||
57 | public WixBundleCustomDataType Type | ||
58 | { | ||
59 | get => (WixBundleCustomDataType)this.Fields[(int)WixBundleCustomDataSymbolFields.Type].AsNumber(); | ||
60 | set => this.Set((int)WixBundleCustomDataSymbolFields.Type, (int)value); | ||
61 | } | ||
62 | |||
63 | public string BundleExtensionRef | ||
64 | { | ||
65 | get => (string)this.Fields[(int)WixBundleCustomDataSymbolFields.BundleExtensionRef]; | ||
66 | set => this.Set((int)WixBundleCustomDataSymbolFields.BundleExtensionRef, value); | ||
67 | } | ||
68 | |||
69 | public string[] AttributeNamesSeparated => this.AttributeNames.Split(AttributeNamesSeparator); | ||
70 | } | ||
71 | } | ||
diff --git a/src/api/wix/WixToolset.Data/Symbols/WixBundleExePackagePayloadSymbol.cs b/src/api/wix/WixToolset.Data/Symbols/WixBundleExePackagePayloadSymbol.cs new file mode 100644 index 00000000..c0bf603f --- /dev/null +++ b/src/api/wix/WixToolset.Data/Symbols/WixBundleExePackagePayloadSymbol.cs | |||
@@ -0,0 +1,36 @@ | |||
1 | // Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. | ||
2 | |||
3 | namespace WixToolset.Data | ||
4 | { | ||
5 | using WixToolset.Data.Symbols; | ||
6 | |||
7 | public static partial class SymbolDefinitions | ||
8 | { | ||
9 | public static readonly IntermediateSymbolDefinition WixBundleExePackagePayload = new IntermediateSymbolDefinition( | ||
10 | SymbolDefinitionType.WixBundleExePackagePayload, | ||
11 | new IntermediateFieldDefinition[] | ||
12 | { | ||
13 | }, | ||
14 | typeof(WixBundleExePackagePayloadSymbol)); | ||
15 | } | ||
16 | } | ||
17 | |||
18 | namespace WixToolset.Data.Symbols | ||
19 | { | ||
20 | public enum WixBundleExePackagePayloadSymbolFields | ||
21 | { | ||
22 | } | ||
23 | |||
24 | public class WixBundleExePackagePayloadSymbol : IntermediateSymbol | ||
25 | { | ||
26 | public WixBundleExePackagePayloadSymbol() : base(SymbolDefinitions.WixBundleExePackagePayload, null, null) | ||
27 | { | ||
28 | } | ||
29 | |||
30 | public WixBundleExePackagePayloadSymbol(SourceLineNumber sourceLineNumber, Identifier id = null) : base(SymbolDefinitions.WixBundleExePackagePayload, sourceLineNumber, id) | ||
31 | { | ||
32 | } | ||
33 | |||
34 | public IntermediateField this[WixBundleExePackagePayloadSymbolFields index] => this.Fields[(int)index]; | ||
35 | } | ||
36 | } | ||
diff --git a/src/api/wix/WixToolset.Data/Symbols/WixBundleExePackageSymbol.cs b/src/api/wix/WixToolset.Data/Symbols/WixBundleExePackageSymbol.cs new file mode 100644 index 00000000..8a8cff1b --- /dev/null +++ b/src/api/wix/WixToolset.Data/Symbols/WixBundleExePackageSymbol.cs | |||
@@ -0,0 +1,94 @@ | |||
1 | // Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. | ||
2 | |||
3 | namespace WixToolset.Data | ||
4 | { | ||
5 | using WixToolset.Data.Symbols; | ||
6 | |||
7 | public static partial class SymbolDefinitions | ||
8 | { | ||
9 | public static readonly IntermediateSymbolDefinition WixBundleExePackage = new IntermediateSymbolDefinition( | ||
10 | SymbolDefinitionType.WixBundleExePackage, | ||
11 | new[] | ||
12 | { | ||
13 | new IntermediateFieldDefinition(nameof(WixBundleExePackageSymbolFields.Attributes), IntermediateFieldType.Number), | ||
14 | new IntermediateFieldDefinition(nameof(WixBundleExePackageSymbolFields.DetectCondition), IntermediateFieldType.String), | ||
15 | new IntermediateFieldDefinition(nameof(WixBundleExePackageSymbolFields.InstallCommand), IntermediateFieldType.String), | ||
16 | new IntermediateFieldDefinition(nameof(WixBundleExePackageSymbolFields.RepairCommand), IntermediateFieldType.String), | ||
17 | new IntermediateFieldDefinition(nameof(WixBundleExePackageSymbolFields.UninstallCommand), IntermediateFieldType.String), | ||
18 | new IntermediateFieldDefinition(nameof(WixBundleExePackageSymbolFields.ExeProtocol), IntermediateFieldType.String), | ||
19 | }, | ||
20 | typeof(WixBundleExePackageSymbol)); | ||
21 | } | ||
22 | } | ||
23 | |||
24 | namespace WixToolset.Data.Symbols | ||
25 | { | ||
26 | using System; | ||
27 | |||
28 | public enum WixBundleExePackageSymbolFields | ||
29 | { | ||
30 | Attributes, | ||
31 | DetectCondition, | ||
32 | InstallCommand, | ||
33 | RepairCommand, | ||
34 | UninstallCommand, | ||
35 | ExeProtocol, | ||
36 | } | ||
37 | |||
38 | [Flags] | ||
39 | public enum WixBundleExePackageAttributes | ||
40 | { | ||
41 | None = 0, | ||
42 | } | ||
43 | |||
44 | public class WixBundleExePackageSymbol : IntermediateSymbol | ||
45 | { | ||
46 | public WixBundleExePackageSymbol() : base(SymbolDefinitions.WixBundleExePackage, null, null) | ||
47 | { | ||
48 | } | ||
49 | |||
50 | public WixBundleExePackageSymbol(SourceLineNumber sourceLineNumber, Identifier id = null) : base(SymbolDefinitions.WixBundleExePackage, sourceLineNumber, id) | ||
51 | { | ||
52 | } | ||
53 | |||
54 | public IntermediateField this[WixBundleExePackageSymbolFields index] => this.Fields[(int)index]; | ||
55 | |||
56 | public WixBundleExePackageAttributes Attributes | ||
57 | { | ||
58 | get => (WixBundleExePackageAttributes)(int)this.Fields[(int)WixBundleExePackageSymbolFields.Attributes]; | ||
59 | set => this.Set((int)WixBundleExePackageSymbolFields.Attributes, (int)value); | ||
60 | } | ||
61 | |||
62 | public string DetectCondition | ||
63 | { | ||
64 | get => (string)this.Fields[(int)WixBundleExePackageSymbolFields.DetectCondition]; | ||
65 | set => this.Set((int)WixBundleExePackageSymbolFields.DetectCondition, value); | ||
66 | } | ||
67 | |||
68 | public string InstallCommand | ||
69 | { | ||
70 | get => (string)this.Fields[(int)WixBundleExePackageSymbolFields.InstallCommand]; | ||
71 | set => this.Set((int)WixBundleExePackageSymbolFields.InstallCommand, value); | ||
72 | } | ||
73 | |||
74 | public string RepairCommand | ||
75 | { | ||
76 | get => (string)this.Fields[(int)WixBundleExePackageSymbolFields.RepairCommand]; | ||
77 | set => this.Set((int)WixBundleExePackageSymbolFields.RepairCommand, value); | ||
78 | } | ||
79 | |||
80 | public string UninstallCommand | ||
81 | { | ||
82 | get => (string)this.Fields[(int)WixBundleExePackageSymbolFields.UninstallCommand]; | ||
83 | set => this.Set((int)WixBundleExePackageSymbolFields.UninstallCommand, value); | ||
84 | } | ||
85 | |||
86 | public string ExeProtocol | ||
87 | { | ||
88 | get => (string)this.Fields[(int)WixBundleExePackageSymbolFields.ExeProtocol]; | ||
89 | set => this.Set((int)WixBundleExePackageSymbolFields.ExeProtocol, value); | ||
90 | } | ||
91 | |||
92 | public bool Repairable => !String.IsNullOrEmpty(this.RepairCommand); | ||
93 | } | ||
94 | } | ||
diff --git a/src/api/wix/WixToolset.Data/Symbols/WixBundleExtensionSymbol.cs b/src/api/wix/WixToolset.Data/Symbols/WixBundleExtensionSymbol.cs new file mode 100644 index 00000000..8e6bea58 --- /dev/null +++ b/src/api/wix/WixToolset.Data/Symbols/WixBundleExtensionSymbol.cs | |||
@@ -0,0 +1,44 @@ | |||
1 | // Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. | ||
2 | |||
3 | namespace WixToolset.Data | ||
4 | { | ||
5 | using WixToolset.Data.Symbols; | ||
6 | |||
7 | public static partial class SymbolDefinitions | ||
8 | { | ||
9 | public static readonly IntermediateSymbolDefinition WixBundleExtension = new IntermediateSymbolDefinition( | ||
10 | SymbolDefinitionType.WixBundleExtension, | ||
11 | new[] | ||
12 | { | ||
13 | new IntermediateFieldDefinition(nameof(WixBundleExtensionSymbolFields.PayloadRef), IntermediateFieldType.String), | ||
14 | }, | ||
15 | typeof(WixBundleExtensionSymbol)); | ||
16 | } | ||
17 | } | ||
18 | |||
19 | namespace WixToolset.Data.Symbols | ||
20 | { | ||
21 | public enum WixBundleExtensionSymbolFields | ||
22 | { | ||
23 | PayloadRef, | ||
24 | } | ||
25 | |||
26 | public class WixBundleExtensionSymbol : IntermediateSymbol | ||
27 | { | ||
28 | public WixBundleExtensionSymbol() : base(SymbolDefinitions.WixBundleExtension, null, null) | ||
29 | { | ||
30 | } | ||
31 | |||
32 | public WixBundleExtensionSymbol(SourceLineNumber sourceLineNumber, Identifier id = null) : base(SymbolDefinitions.WixBundleExtension, sourceLineNumber, id) | ||
33 | { | ||
34 | } | ||
35 | |||
36 | public IntermediateField this[WixBundleExtensionSymbolFields index] => this.Fields[(int)index]; | ||
37 | |||
38 | public string PayloadRef | ||
39 | { | ||
40 | get => (string)this.Fields[(int)WixBundleExtensionSymbolFields.PayloadRef]; | ||
41 | set => this.Set((int)WixBundleExtensionSymbolFields.PayloadRef, value); | ||
42 | } | ||
43 | } | ||
44 | } | ||
diff --git a/src/api/wix/WixToolset.Data/Symbols/WixBundleMsiFeatureSymbol.cs b/src/api/wix/WixToolset.Data/Symbols/WixBundleMsiFeatureSymbol.cs new file mode 100644 index 00000000..f81da5b8 --- /dev/null +++ b/src/api/wix/WixToolset.Data/Symbols/WixBundleMsiFeatureSymbol.cs | |||
@@ -0,0 +1,116 @@ | |||
1 | // Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. | ||
2 | |||
3 | namespace WixToolset.Data | ||
4 | { | ||
5 | using WixToolset.Data.Symbols; | ||
6 | |||
7 | public static partial class SymbolDefinitions | ||
8 | { | ||
9 | public static readonly IntermediateSymbolDefinition WixBundleMsiFeature = new IntermediateSymbolDefinition( | ||
10 | SymbolDefinitionType.WixBundleMsiFeature, | ||
11 | new[] | ||
12 | { | ||
13 | new IntermediateFieldDefinition(nameof(WixBundleMsiFeatureSymbolFields.PackageRef), IntermediateFieldType.String), | ||
14 | new IntermediateFieldDefinition(nameof(WixBundleMsiFeatureSymbolFields.Name), IntermediateFieldType.String), | ||
15 | new IntermediateFieldDefinition(nameof(WixBundleMsiFeatureSymbolFields.Size), IntermediateFieldType.LargeNumber), | ||
16 | new IntermediateFieldDefinition(nameof(WixBundleMsiFeatureSymbolFields.Parent), IntermediateFieldType.String), | ||
17 | new IntermediateFieldDefinition(nameof(WixBundleMsiFeatureSymbolFields.Title), IntermediateFieldType.String), | ||
18 | new IntermediateFieldDefinition(nameof(WixBundleMsiFeatureSymbolFields.Description), IntermediateFieldType.String), | ||
19 | new IntermediateFieldDefinition(nameof(WixBundleMsiFeatureSymbolFields.Display), IntermediateFieldType.Number), | ||
20 | new IntermediateFieldDefinition(nameof(WixBundleMsiFeatureSymbolFields.Level), IntermediateFieldType.Number), | ||
21 | new IntermediateFieldDefinition(nameof(WixBundleMsiFeatureSymbolFields.Directory), IntermediateFieldType.String), | ||
22 | new IntermediateFieldDefinition(nameof(WixBundleMsiFeatureSymbolFields.Attributes), IntermediateFieldType.Number), | ||
23 | }, | ||
24 | typeof(WixBundleMsiFeatureSymbol)); | ||
25 | } | ||
26 | } | ||
27 | |||
28 | namespace WixToolset.Data.Symbols | ||
29 | { | ||
30 | public enum WixBundleMsiFeatureSymbolFields | ||
31 | { | ||
32 | PackageRef, | ||
33 | Name, | ||
34 | Size, | ||
35 | Parent, | ||
36 | Title, | ||
37 | Description, | ||
38 | Display, | ||
39 | Level, | ||
40 | Directory, | ||
41 | Attributes, | ||
42 | } | ||
43 | |||
44 | public class WixBundleMsiFeatureSymbol : IntermediateSymbol | ||
45 | { | ||
46 | public WixBundleMsiFeatureSymbol() : base(SymbolDefinitions.WixBundleMsiFeature, null, null) | ||
47 | { | ||
48 | } | ||
49 | |||
50 | public WixBundleMsiFeatureSymbol(SourceLineNumber sourceLineNumber, Identifier id = null) : base(SymbolDefinitions.WixBundleMsiFeature, sourceLineNumber, id) | ||
51 | { | ||
52 | } | ||
53 | |||
54 | public IntermediateField this[WixBundleMsiFeatureSymbolFields index] => this.Fields[(int)index]; | ||
55 | |||
56 | public string PackageRef | ||
57 | { | ||
58 | get => (string)this.Fields[(int)WixBundleMsiFeatureSymbolFields.PackageRef]; | ||
59 | set => this.Set((int)WixBundleMsiFeatureSymbolFields.PackageRef, value); | ||
60 | } | ||
61 | |||
62 | public string Name | ||
63 | { | ||
64 | get => (string)this.Fields[(int)WixBundleMsiFeatureSymbolFields.Name]; | ||
65 | set => this.Set((int)WixBundleMsiFeatureSymbolFields.Name, value); | ||
66 | } | ||
67 | |||
68 | public long Size | ||
69 | { | ||
70 | get => (long)this.Fields[(int)WixBundleMsiFeatureSymbolFields.Size]; | ||
71 | set => this.Set((int)WixBundleMsiFeatureSymbolFields.Size, value); | ||
72 | } | ||
73 | |||
74 | public string Parent | ||
75 | { | ||
76 | get => (string)this.Fields[(int)WixBundleMsiFeatureSymbolFields.Parent]; | ||
77 | set => this.Set((int)WixBundleMsiFeatureSymbolFields.Parent, value); | ||
78 | } | ||
79 | |||
80 | public string Title | ||
81 | { | ||
82 | get => (string)this.Fields[(int)WixBundleMsiFeatureSymbolFields.Title]; | ||
83 | set => this.Set((int)WixBundleMsiFeatureSymbolFields.Title, value); | ||
84 | } | ||
85 | |||
86 | public string Description | ||
87 | { | ||
88 | get => (string)this.Fields[(int)WixBundleMsiFeatureSymbolFields.Description]; | ||
89 | set => this.Set((int)WixBundleMsiFeatureSymbolFields.Description, value); | ||
90 | } | ||
91 | |||
92 | public int Display | ||
93 | { | ||
94 | get => (int)this.Fields[(int)WixBundleMsiFeatureSymbolFields.Display]; | ||
95 | set => this.Set((int)WixBundleMsiFeatureSymbolFields.Display, value); | ||
96 | } | ||
97 | |||
98 | public int Level | ||
99 | { | ||
100 | get => (int)this.Fields[(int)WixBundleMsiFeatureSymbolFields.Level]; | ||
101 | set => this.Set((int)WixBundleMsiFeatureSymbolFields.Level, value); | ||
102 | } | ||
103 | |||
104 | public string Directory | ||
105 | { | ||
106 | get => (string)this.Fields[(int)WixBundleMsiFeatureSymbolFields.Directory]; | ||
107 | set => this.Set((int)WixBundleMsiFeatureSymbolFields.Directory, value); | ||
108 | } | ||
109 | |||
110 | public int Attributes | ||
111 | { | ||
112 | get => (int)this.Fields[(int)WixBundleMsiFeatureSymbolFields.Attributes]; | ||
113 | set => this.Set((int)WixBundleMsiFeatureSymbolFields.Attributes, value); | ||
114 | } | ||
115 | } | ||
116 | } | ||
diff --git a/src/api/wix/WixToolset.Data/Symbols/WixBundleMsiPackagePayloadSymbol.cs b/src/api/wix/WixToolset.Data/Symbols/WixBundleMsiPackagePayloadSymbol.cs new file mode 100644 index 00000000..e5af1044 --- /dev/null +++ b/src/api/wix/WixToolset.Data/Symbols/WixBundleMsiPackagePayloadSymbol.cs | |||
@@ -0,0 +1,36 @@ | |||
1 | // Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. | ||
2 | |||
3 | namespace WixToolset.Data | ||
4 | { | ||
5 | using WixToolset.Data.Symbols; | ||
6 | |||
7 | public static partial class SymbolDefinitions | ||
8 | { | ||
9 | public static readonly IntermediateSymbolDefinition WixBundleMsiPackagePayload = new IntermediateSymbolDefinition( | ||
10 | SymbolDefinitionType.WixBundleMsiPackagePayload, | ||
11 | new IntermediateFieldDefinition[] | ||
12 | { | ||
13 | }, | ||
14 | typeof(WixBundleMsiPackagePayloadSymbol)); | ||
15 | } | ||
16 | } | ||
17 | |||
18 | namespace WixToolset.Data.Symbols | ||
19 | { | ||
20 | public enum WixBundleMsiPackagePayloadSymbolFields | ||
21 | { | ||
22 | } | ||
23 | |||
24 | public class WixBundleMsiPackagePayloadSymbol : IntermediateSymbol | ||
25 | { | ||
26 | public WixBundleMsiPackagePayloadSymbol() : base(SymbolDefinitions.WixBundleMsiPackagePayload, null, null) | ||
27 | { | ||
28 | } | ||
29 | |||
30 | public WixBundleMsiPackagePayloadSymbol(SourceLineNumber sourceLineNumber, Identifier id = null) : base(SymbolDefinitions.WixBundleMsiPackagePayload, sourceLineNumber, id) | ||
31 | { | ||
32 | } | ||
33 | |||
34 | public IntermediateField this[WixBundleMsiPackagePayloadSymbolFields index] => this.Fields[(int)index]; | ||
35 | } | ||
36 | } | ||
diff --git a/src/api/wix/WixToolset.Data/Symbols/WixBundleMsiPackageSymbol.cs b/src/api/wix/WixToolset.Data/Symbols/WixBundleMsiPackageSymbol.cs new file mode 100644 index 00000000..21735f64 --- /dev/null +++ b/src/api/wix/WixToolset.Data/Symbols/WixBundleMsiPackageSymbol.cs | |||
@@ -0,0 +1,105 @@ | |||
1 | // Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. | ||
2 | |||
3 | namespace WixToolset.Data | ||
4 | { | ||
5 | using WixToolset.Data.Symbols; | ||
6 | |||
7 | public static partial class SymbolDefinitions | ||
8 | { | ||
9 | public static readonly IntermediateSymbolDefinition WixBundleMsiPackage = new IntermediateSymbolDefinition( | ||
10 | SymbolDefinitionType.WixBundleMsiPackage, | ||
11 | new[] | ||
12 | { | ||
13 | new IntermediateFieldDefinition(nameof(WixBundleMsiPackageSymbolFields.Attributes), IntermediateFieldType.Number), | ||
14 | new IntermediateFieldDefinition(nameof(WixBundleMsiPackageSymbolFields.ProductCode), IntermediateFieldType.String), | ||
15 | new IntermediateFieldDefinition(nameof(WixBundleMsiPackageSymbolFields.UpgradeCode), IntermediateFieldType.String), | ||
16 | new IntermediateFieldDefinition(nameof(WixBundleMsiPackageSymbolFields.ProductVersion), IntermediateFieldType.String), | ||
17 | new IntermediateFieldDefinition(nameof(WixBundleMsiPackageSymbolFields.ProductLanguage), IntermediateFieldType.Number), | ||
18 | new IntermediateFieldDefinition(nameof(WixBundleMsiPackageSymbolFields.ProductName), IntermediateFieldType.String), | ||
19 | new IntermediateFieldDefinition(nameof(WixBundleMsiPackageSymbolFields.Manufacturer), IntermediateFieldType.String), | ||
20 | }, | ||
21 | typeof(WixBundleMsiPackageSymbol)); | ||
22 | } | ||
23 | } | ||
24 | |||
25 | namespace WixToolset.Data.Symbols | ||
26 | { | ||
27 | using System; | ||
28 | |||
29 | public enum WixBundleMsiPackageSymbolFields | ||
30 | { | ||
31 | Attributes, | ||
32 | ProductCode, | ||
33 | UpgradeCode, | ||
34 | ProductVersion, | ||
35 | ProductLanguage, | ||
36 | ProductName, | ||
37 | Manufacturer, | ||
38 | } | ||
39 | |||
40 | [Flags] | ||
41 | public enum WixBundleMsiPackageAttributes | ||
42 | { | ||
43 | EnableFeatureSelection = 0x4, | ||
44 | ForcePerMachine = 0x2, | ||
45 | } | ||
46 | |||
47 | public class WixBundleMsiPackageSymbol : IntermediateSymbol | ||
48 | { | ||
49 | public WixBundleMsiPackageSymbol() : base(SymbolDefinitions.WixBundleMsiPackage, null, null) | ||
50 | { | ||
51 | } | ||
52 | |||
53 | public WixBundleMsiPackageSymbol(SourceLineNumber sourceLineNumber, Identifier id = null) : base(SymbolDefinitions.WixBundleMsiPackage, sourceLineNumber, id) | ||
54 | { | ||
55 | } | ||
56 | |||
57 | public IntermediateField this[WixBundleMsiPackageSymbolFields index] => this.Fields[(int)index]; | ||
58 | |||
59 | public WixBundleMsiPackageAttributes Attributes | ||
60 | { | ||
61 | get => (WixBundleMsiPackageAttributes)(int)this.Fields[(int)WixBundleMsiPackageSymbolFields.Attributes]; | ||
62 | set => this.Set((int)WixBundleMsiPackageSymbolFields.Attributes, (int)value); | ||
63 | } | ||
64 | |||
65 | public string ProductCode | ||
66 | { | ||
67 | get => (string)this.Fields[(int)WixBundleMsiPackageSymbolFields.ProductCode]; | ||
68 | set => this.Set((int)WixBundleMsiPackageSymbolFields.ProductCode, value); | ||
69 | } | ||
70 | |||
71 | public string UpgradeCode | ||
72 | { | ||
73 | get => (string)this.Fields[(int)WixBundleMsiPackageSymbolFields.UpgradeCode]; | ||
74 | set => this.Set((int)WixBundleMsiPackageSymbolFields.UpgradeCode, value); | ||
75 | } | ||
76 | |||
77 | public string ProductVersion | ||
78 | { | ||
79 | get => (string)this.Fields[(int)WixBundleMsiPackageSymbolFields.ProductVersion]; | ||
80 | set => this.Set((int)WixBundleMsiPackageSymbolFields.ProductVersion, value); | ||
81 | } | ||
82 | |||
83 | public int ProductLanguage | ||
84 | { | ||
85 | get => (int)this.Fields[(int)WixBundleMsiPackageSymbolFields.ProductLanguage]; | ||
86 | set => this.Set((int)WixBundleMsiPackageSymbolFields.ProductLanguage, value); | ||
87 | } | ||
88 | |||
89 | public string ProductName | ||
90 | { | ||
91 | get => (string)this.Fields[(int)WixBundleMsiPackageSymbolFields.ProductName]; | ||
92 | set => this.Set((int)WixBundleMsiPackageSymbolFields.ProductName, value); | ||
93 | } | ||
94 | |||
95 | public string Manufacturer | ||
96 | { | ||
97 | get => (string)this.Fields[(int)WixBundleMsiPackageSymbolFields.Manufacturer]; | ||
98 | set => this.Set((int)WixBundleMsiPackageSymbolFields.Manufacturer, value); | ||
99 | } | ||
100 | |||
101 | public bool EnableFeatureSelection => (this.Attributes & WixBundleMsiPackageAttributes.EnableFeatureSelection) == WixBundleMsiPackageAttributes.EnableFeatureSelection; | ||
102 | |||
103 | public bool ForcePerMachine => (this.Attributes & WixBundleMsiPackageAttributes.ForcePerMachine) == WixBundleMsiPackageAttributes.ForcePerMachine; | ||
104 | } | ||
105 | } \ No newline at end of file | ||
diff --git a/src/api/wix/WixToolset.Data/Symbols/WixBundleMsiPropertySymbol.cs b/src/api/wix/WixToolset.Data/Symbols/WixBundleMsiPropertySymbol.cs new file mode 100644 index 00000000..0d87f87d --- /dev/null +++ b/src/api/wix/WixToolset.Data/Symbols/WixBundleMsiPropertySymbol.cs | |||
@@ -0,0 +1,68 @@ | |||
1 | // Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. | ||
2 | |||
3 | namespace WixToolset.Data | ||
4 | { | ||
5 | using WixToolset.Data.Symbols; | ||
6 | |||
7 | public static partial class SymbolDefinitions | ||
8 | { | ||
9 | public static readonly IntermediateSymbolDefinition WixBundleMsiProperty = new IntermediateSymbolDefinition( | ||
10 | SymbolDefinitionType.WixBundleMsiProperty, | ||
11 | new[] | ||
12 | { | ||
13 | new IntermediateFieldDefinition(nameof(WixBundleMsiPropertySymbolFields.PackageRef), IntermediateFieldType.String), | ||
14 | new IntermediateFieldDefinition(nameof(WixBundleMsiPropertySymbolFields.Name), IntermediateFieldType.String), | ||
15 | new IntermediateFieldDefinition(nameof(WixBundleMsiPropertySymbolFields.Value), IntermediateFieldType.String), | ||
16 | new IntermediateFieldDefinition(nameof(WixBundleMsiPropertySymbolFields.Condition), IntermediateFieldType.String), | ||
17 | }, | ||
18 | typeof(WixBundleMsiPropertySymbol)); | ||
19 | } | ||
20 | } | ||
21 | |||
22 | namespace WixToolset.Data.Symbols | ||
23 | { | ||
24 | public enum WixBundleMsiPropertySymbolFields | ||
25 | { | ||
26 | PackageRef, | ||
27 | Name, | ||
28 | Value, | ||
29 | Condition, | ||
30 | } | ||
31 | |||
32 | public class WixBundleMsiPropertySymbol : IntermediateSymbol | ||
33 | { | ||
34 | public WixBundleMsiPropertySymbol() : base(SymbolDefinitions.WixBundleMsiProperty, null, null) | ||
35 | { | ||
36 | } | ||
37 | |||
38 | public WixBundleMsiPropertySymbol(SourceLineNumber sourceLineNumber, Identifier id = null) : base(SymbolDefinitions.WixBundleMsiProperty, sourceLineNumber, id) | ||
39 | { | ||
40 | } | ||
41 | |||
42 | public IntermediateField this[WixBundleMsiPropertySymbolFields index] => this.Fields[(int)index]; | ||
43 | |||
44 | public string PackageRef | ||
45 | { | ||
46 | get => (string)this.Fields[(int)WixBundleMsiPropertySymbolFields.PackageRef]; | ||
47 | set => this.Set((int)WixBundleMsiPropertySymbolFields.PackageRef, value); | ||
48 | } | ||
49 | |||
50 | public string Name | ||
51 | { | ||
52 | get => (string)this.Fields[(int)WixBundleMsiPropertySymbolFields.Name]; | ||
53 | set => this.Set((int)WixBundleMsiPropertySymbolFields.Name, value); | ||
54 | } | ||
55 | |||
56 | public string Value | ||
57 | { | ||
58 | get => (string)this.Fields[(int)WixBundleMsiPropertySymbolFields.Value]; | ||
59 | set => this.Set((int)WixBundleMsiPropertySymbolFields.Value, value); | ||
60 | } | ||
61 | |||
62 | public string Condition | ||
63 | { | ||
64 | get => (string)this.Fields[(int)WixBundleMsiPropertySymbolFields.Condition]; | ||
65 | set => this.Set((int)WixBundleMsiPropertySymbolFields.Condition, value); | ||
66 | } | ||
67 | } | ||
68 | } \ No newline at end of file | ||
diff --git a/src/api/wix/WixToolset.Data/Symbols/WixBundleMspPackagePayloadSymbol.cs b/src/api/wix/WixToolset.Data/Symbols/WixBundleMspPackagePayloadSymbol.cs new file mode 100644 index 00000000..d1a21243 --- /dev/null +++ b/src/api/wix/WixToolset.Data/Symbols/WixBundleMspPackagePayloadSymbol.cs | |||
@@ -0,0 +1,36 @@ | |||
1 | // Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. | ||
2 | |||
3 | namespace WixToolset.Data | ||
4 | { | ||
5 | using WixToolset.Data.Symbols; | ||
6 | |||
7 | public static partial class SymbolDefinitions | ||
8 | { | ||
9 | public static readonly IntermediateSymbolDefinition WixBundleMspPackagePayload = new IntermediateSymbolDefinition( | ||
10 | SymbolDefinitionType.WixBundleMspPackagePayload, | ||
11 | new IntermediateFieldDefinition[] | ||
12 | { | ||
13 | }, | ||
14 | typeof(WixBundleMspPackagePayloadSymbol)); | ||
15 | } | ||
16 | } | ||
17 | |||
18 | namespace WixToolset.Data.Symbols | ||
19 | { | ||
20 | public enum WixBundleMspPackagePayloadSymbolFields | ||
21 | { | ||
22 | } | ||
23 | |||
24 | public class WixBundleMspPackagePayloadSymbol : IntermediateSymbol | ||
25 | { | ||
26 | public WixBundleMspPackagePayloadSymbol() : base(SymbolDefinitions.WixBundleMspPackagePayload, null, null) | ||
27 | { | ||
28 | } | ||
29 | |||
30 | public WixBundleMspPackagePayloadSymbol(SourceLineNumber sourceLineNumber, Identifier id = null) : base(SymbolDefinitions.WixBundleMspPackagePayload, sourceLineNumber, id) | ||
31 | { | ||
32 | } | ||
33 | |||
34 | public IntermediateField this[WixBundleMspPackagePayloadSymbolFields index] => this.Fields[(int)index]; | ||
35 | } | ||
36 | } | ||
diff --git a/src/api/wix/WixToolset.Data/Symbols/WixBundleMspPackageSymbol.cs b/src/api/wix/WixToolset.Data/Symbols/WixBundleMspPackageSymbol.cs new file mode 100644 index 00000000..3784c2ff --- /dev/null +++ b/src/api/wix/WixToolset.Data/Symbols/WixBundleMspPackageSymbol.cs | |||
@@ -0,0 +1,81 @@ | |||
1 | // Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. | ||
2 | |||
3 | namespace WixToolset.Data | ||
4 | { | ||
5 | using WixToolset.Data.Symbols; | ||
6 | |||
7 | public static partial class SymbolDefinitions | ||
8 | { | ||
9 | public static readonly IntermediateSymbolDefinition WixBundleMspPackage = new IntermediateSymbolDefinition( | ||
10 | SymbolDefinitionType.WixBundleMspPackage, | ||
11 | new[] | ||
12 | { | ||
13 | new IntermediateFieldDefinition(nameof(WixBundleMspPackageSymbolFields.Attributes), IntermediateFieldType.Number), | ||
14 | new IntermediateFieldDefinition(nameof(WixBundleMspPackageSymbolFields.PatchCode), IntermediateFieldType.String), | ||
15 | new IntermediateFieldDefinition(nameof(WixBundleMspPackageSymbolFields.Manufacturer), IntermediateFieldType.String), | ||
16 | new IntermediateFieldDefinition(nameof(WixBundleMspPackageSymbolFields.PatchXml), IntermediateFieldType.String), | ||
17 | }, | ||
18 | typeof(WixBundleMspPackageSymbol)); | ||
19 | } | ||
20 | } | ||
21 | |||
22 | namespace WixToolset.Data.Symbols | ||
23 | { | ||
24 | using System; | ||
25 | |||
26 | public enum WixBundleMspPackageSymbolFields | ||
27 | { | ||
28 | Attributes, | ||
29 | PatchCode, | ||
30 | Manufacturer, | ||
31 | PatchXml, | ||
32 | } | ||
33 | |||
34 | [Flags] | ||
35 | public enum WixBundleMspPackageAttributes | ||
36 | { | ||
37 | Slipstream = 0x2, | ||
38 | TargetUnspecified = 0x4, | ||
39 | } | ||
40 | |||
41 | public class WixBundleMspPackageSymbol : IntermediateSymbol | ||
42 | { | ||
43 | public WixBundleMspPackageSymbol() : base(SymbolDefinitions.WixBundleMspPackage, null, null) | ||
44 | { | ||
45 | } | ||
46 | |||
47 | public WixBundleMspPackageSymbol(SourceLineNumber sourceLineNumber, Identifier id = null) : base(SymbolDefinitions.WixBundleMspPackage, sourceLineNumber, id) | ||
48 | { | ||
49 | } | ||
50 | |||
51 | public IntermediateField this[WixBundleMspPackageSymbolFields index] => this.Fields[(int)index]; | ||
52 | |||
53 | public WixBundleMspPackageAttributes Attributes | ||
54 | { | ||
55 | get => (WixBundleMspPackageAttributes)(int)this.Fields[(int)WixBundleMspPackageSymbolFields.Attributes]; | ||
56 | set => this.Set((int)WixBundleMspPackageSymbolFields.Attributes, (int)value); | ||
57 | } | ||
58 | |||
59 | public string PatchCode | ||
60 | { | ||
61 | get => (string)this.Fields[(int)WixBundleMspPackageSymbolFields.PatchCode]; | ||
62 | set => this.Set((int)WixBundleMspPackageSymbolFields.PatchCode, value); | ||
63 | } | ||
64 | |||
65 | public string Manufacturer | ||
66 | { | ||
67 | get => (string)this.Fields[(int)WixBundleMspPackageSymbolFields.Manufacturer]; | ||
68 | set => this.Set((int)WixBundleMspPackageSymbolFields.Manufacturer, value); | ||
69 | } | ||
70 | |||
71 | public string PatchXml | ||
72 | { | ||
73 | get => (string)this.Fields[(int)WixBundleMspPackageSymbolFields.PatchXml]; | ||
74 | set => this.Set((int)WixBundleMspPackageSymbolFields.PatchXml, value); | ||
75 | } | ||
76 | |||
77 | public bool Slipstream => (this.Attributes & WixBundleMspPackageAttributes.Slipstream) == WixBundleMspPackageAttributes.Slipstream; | ||
78 | |||
79 | public bool TargetUnspecified => (this.Attributes & WixBundleMspPackageAttributes.TargetUnspecified) == WixBundleMspPackageAttributes.TargetUnspecified; | ||
80 | } | ||
81 | } \ No newline at end of file | ||
diff --git a/src/api/wix/WixToolset.Data/Symbols/WixBundleMsuPackagePayloadSymbol.cs b/src/api/wix/WixToolset.Data/Symbols/WixBundleMsuPackagePayloadSymbol.cs new file mode 100644 index 00000000..88c7deb2 --- /dev/null +++ b/src/api/wix/WixToolset.Data/Symbols/WixBundleMsuPackagePayloadSymbol.cs | |||
@@ -0,0 +1,36 @@ | |||
1 | // Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. | ||
2 | |||
3 | namespace WixToolset.Data | ||
4 | { | ||
5 | using WixToolset.Data.Symbols; | ||
6 | |||
7 | public static partial class SymbolDefinitions | ||
8 | { | ||
9 | public static readonly IntermediateSymbolDefinition WixBundleMsuPackagePayload = new IntermediateSymbolDefinition( | ||
10 | SymbolDefinitionType.WixBundleMsuPackagePayload, | ||
11 | new IntermediateFieldDefinition[] | ||
12 | { | ||
13 | }, | ||
14 | typeof(WixBundleMsuPackagePayloadSymbol)); | ||
15 | } | ||
16 | } | ||
17 | |||
18 | namespace WixToolset.Data.Symbols | ||
19 | { | ||
20 | public enum WixBundleMsuPackagePayloadSymbolFields | ||
21 | { | ||
22 | } | ||
23 | |||
24 | public class WixBundleMsuPackagePayloadSymbol : IntermediateSymbol | ||
25 | { | ||
26 | public WixBundleMsuPackagePayloadSymbol() : base(SymbolDefinitions.WixBundleMsuPackagePayload, null, null) | ||
27 | { | ||
28 | } | ||
29 | |||
30 | public WixBundleMsuPackagePayloadSymbol(SourceLineNumber sourceLineNumber, Identifier id = null) : base(SymbolDefinitions.WixBundleMsuPackagePayload, sourceLineNumber, id) | ||
31 | { | ||
32 | } | ||
33 | |||
34 | public IntermediateField this[WixBundleMsuPackagePayloadSymbolFields index] => this.Fields[(int)index]; | ||
35 | } | ||
36 | } | ||
diff --git a/src/api/wix/WixToolset.Data/Symbols/WixBundleMsuPackageSymbol.cs b/src/api/wix/WixToolset.Data/Symbols/WixBundleMsuPackageSymbol.cs new file mode 100644 index 00000000..e52a9b2d --- /dev/null +++ b/src/api/wix/WixToolset.Data/Symbols/WixBundleMsuPackageSymbol.cs | |||
@@ -0,0 +1,52 @@ | |||
1 | // Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. | ||
2 | |||
3 | namespace WixToolset.Data | ||
4 | { | ||
5 | using WixToolset.Data.Symbols; | ||
6 | |||
7 | public static partial class SymbolDefinitions | ||
8 | { | ||
9 | public static readonly IntermediateSymbolDefinition WixBundleMsuPackage = new IntermediateSymbolDefinition( | ||
10 | SymbolDefinitionType.WixBundleMsuPackage, | ||
11 | new[] | ||
12 | { | ||
13 | new IntermediateFieldDefinition(nameof(WixBundleMsuPackageSymbolFields.DetectCondition), IntermediateFieldType.String), | ||
14 | new IntermediateFieldDefinition(nameof(WixBundleMsuPackageSymbolFields.MsuKB), IntermediateFieldType.String), | ||
15 | }, | ||
16 | typeof(WixBundleMsuPackageSymbol)); | ||
17 | } | ||
18 | } | ||
19 | |||
20 | namespace WixToolset.Data.Symbols | ||
21 | { | ||
22 | public enum WixBundleMsuPackageSymbolFields | ||
23 | { | ||
24 | DetectCondition, | ||
25 | MsuKB, | ||
26 | } | ||
27 | |||
28 | public class WixBundleMsuPackageSymbol : IntermediateSymbol | ||
29 | { | ||
30 | public WixBundleMsuPackageSymbol() : base(SymbolDefinitions.WixBundleMsuPackage, null, null) | ||
31 | { | ||
32 | } | ||
33 | |||
34 | public WixBundleMsuPackageSymbol(SourceLineNumber sourceLineNumber, Identifier id = null) : base(SymbolDefinitions.WixBundleMsuPackage, sourceLineNumber, id) | ||
35 | { | ||
36 | } | ||
37 | |||
38 | public IntermediateField this[WixBundleMsuPackageSymbolFields index] => this.Fields[(int)index]; | ||
39 | |||
40 | public string DetectCondition | ||
41 | { | ||
42 | get => (string)this.Fields[(int)WixBundleMsuPackageSymbolFields.DetectCondition]; | ||
43 | set => this.Set((int)WixBundleMsuPackageSymbolFields.DetectCondition, value); | ||
44 | } | ||
45 | |||
46 | public string MsuKB | ||
47 | { | ||
48 | get => (string)this.Fields[(int)WixBundleMsuPackageSymbolFields.MsuKB]; | ||
49 | set => this.Set((int)WixBundleMsuPackageSymbolFields.MsuKB, value); | ||
50 | } | ||
51 | } | ||
52 | } \ No newline at end of file | ||
diff --git a/src/api/wix/WixToolset.Data/Symbols/WixBundlePackageCommandLineSymbol.cs b/src/api/wix/WixToolset.Data/Symbols/WixBundlePackageCommandLineSymbol.cs new file mode 100644 index 00000000..7ef254a6 --- /dev/null +++ b/src/api/wix/WixToolset.Data/Symbols/WixBundlePackageCommandLineSymbol.cs | |||
@@ -0,0 +1,76 @@ | |||
1 | // Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. | ||
2 | |||
3 | namespace WixToolset.Data | ||
4 | { | ||
5 | using WixToolset.Data.Symbols; | ||
6 | |||
7 | public static partial class SymbolDefinitions | ||
8 | { | ||
9 | public static readonly IntermediateSymbolDefinition WixBundlePackageCommandLine = new IntermediateSymbolDefinition( | ||
10 | SymbolDefinitionType.WixBundlePackageCommandLine, | ||
11 | new[] | ||
12 | { | ||
13 | new IntermediateFieldDefinition(nameof(WixBundlePackageCommandLineSymbolFields.WixBundlePackageRef), IntermediateFieldType.String), | ||
14 | new IntermediateFieldDefinition(nameof(WixBundlePackageCommandLineSymbolFields.InstallArgument), IntermediateFieldType.String), | ||
15 | new IntermediateFieldDefinition(nameof(WixBundlePackageCommandLineSymbolFields.UninstallArgument), IntermediateFieldType.String), | ||
16 | new IntermediateFieldDefinition(nameof(WixBundlePackageCommandLineSymbolFields.RepairArgument), IntermediateFieldType.String), | ||
17 | new IntermediateFieldDefinition(nameof(WixBundlePackageCommandLineSymbolFields.Condition), IntermediateFieldType.String), | ||
18 | }, | ||
19 | typeof(WixBundlePackageCommandLineSymbol)); | ||
20 | } | ||
21 | } | ||
22 | |||
23 | namespace WixToolset.Data.Symbols | ||
24 | { | ||
25 | public enum WixBundlePackageCommandLineSymbolFields | ||
26 | { | ||
27 | WixBundlePackageRef, | ||
28 | InstallArgument, | ||
29 | UninstallArgument, | ||
30 | RepairArgument, | ||
31 | Condition, | ||
32 | } | ||
33 | |||
34 | public class WixBundlePackageCommandLineSymbol : IntermediateSymbol | ||
35 | { | ||
36 | public WixBundlePackageCommandLineSymbol() : base(SymbolDefinitions.WixBundlePackageCommandLine, null, null) | ||
37 | { | ||
38 | } | ||
39 | |||
40 | public WixBundlePackageCommandLineSymbol(SourceLineNumber sourceLineNumber, Identifier id = null) : base(SymbolDefinitions.WixBundlePackageCommandLine, sourceLineNumber, id) | ||
41 | { | ||
42 | } | ||
43 | |||
44 | public IntermediateField this[WixBundlePackageCommandLineSymbolFields index] => this.Fields[(int)index]; | ||
45 | |||
46 | public string WixBundlePackageRef | ||
47 | { | ||
48 | get => (string)this.Fields[(int)WixBundlePackageCommandLineSymbolFields.WixBundlePackageRef]; | ||
49 | set => this.Set((int)WixBundlePackageCommandLineSymbolFields.WixBundlePackageRef, value); | ||
50 | } | ||
51 | |||
52 | public string InstallArgument | ||
53 | { | ||
54 | get => (string)this.Fields[(int)WixBundlePackageCommandLineSymbolFields.InstallArgument]; | ||
55 | set => this.Set((int)WixBundlePackageCommandLineSymbolFields.InstallArgument, value); | ||
56 | } | ||
57 | |||
58 | public string UninstallArgument | ||
59 | { | ||
60 | get => (string)this.Fields[(int)WixBundlePackageCommandLineSymbolFields.UninstallArgument]; | ||
61 | set => this.Set((int)WixBundlePackageCommandLineSymbolFields.UninstallArgument, value); | ||
62 | } | ||
63 | |||
64 | public string RepairArgument | ||
65 | { | ||
66 | get => (string)this.Fields[(int)WixBundlePackageCommandLineSymbolFields.RepairArgument]; | ||
67 | set => this.Set((int)WixBundlePackageCommandLineSymbolFields.RepairArgument, value); | ||
68 | } | ||
69 | |||
70 | public string Condition | ||
71 | { | ||
72 | get => (string)this.Fields[(int)WixBundlePackageCommandLineSymbolFields.Condition]; | ||
73 | set => this.Set((int)WixBundlePackageCommandLineSymbolFields.Condition, value); | ||
74 | } | ||
75 | } | ||
76 | } \ No newline at end of file | ||
diff --git a/src/api/wix/WixToolset.Data/Symbols/WixBundlePackageExitCodeSymbol.cs b/src/api/wix/WixToolset.Data/Symbols/WixBundlePackageExitCodeSymbol.cs new file mode 100644 index 00000000..d77d9d58 --- /dev/null +++ b/src/api/wix/WixToolset.Data/Symbols/WixBundlePackageExitCodeSymbol.cs | |||
@@ -0,0 +1,71 @@ | |||
1 | // Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. | ||
2 | |||
3 | namespace WixToolset.Data | ||
4 | { | ||
5 | using WixToolset.Data.Symbols; | ||
6 | |||
7 | public static partial class SymbolDefinitions | ||
8 | { | ||
9 | public static readonly IntermediateSymbolDefinition WixBundlePackageExitCode = new IntermediateSymbolDefinition( | ||
10 | SymbolDefinitionType.WixBundlePackageExitCode, | ||
11 | new[] | ||
12 | { | ||
13 | new IntermediateFieldDefinition(nameof(WixBundlePackageExitCodeSymbolFields.ChainPackageId), IntermediateFieldType.String), | ||
14 | new IntermediateFieldDefinition(nameof(WixBundlePackageExitCodeSymbolFields.Code), IntermediateFieldType.Number), | ||
15 | new IntermediateFieldDefinition(nameof(WixBundlePackageExitCodeSymbolFields.Behavior), IntermediateFieldType.String), | ||
16 | }, | ||
17 | typeof(WixBundlePackageExitCodeSymbol)); | ||
18 | } | ||
19 | } | ||
20 | |||
21 | namespace WixToolset.Data.Symbols | ||
22 | { | ||
23 | using System; | ||
24 | |||
25 | public enum WixBundlePackageExitCodeSymbolFields | ||
26 | { | ||
27 | ChainPackageId, | ||
28 | Code, | ||
29 | Behavior, | ||
30 | } | ||
31 | |||
32 | public enum ExitCodeBehaviorType | ||
33 | { | ||
34 | NotSet = -1, | ||
35 | Success, | ||
36 | Error, | ||
37 | ScheduleReboot, | ||
38 | ForceReboot, | ||
39 | } | ||
40 | |||
41 | public class WixBundlePackageExitCodeSymbol : IntermediateSymbol | ||
42 | { | ||
43 | public WixBundlePackageExitCodeSymbol() : base(SymbolDefinitions.WixBundlePackageExitCode, null, null) | ||
44 | { | ||
45 | } | ||
46 | |||
47 | public WixBundlePackageExitCodeSymbol(SourceLineNumber sourceLineNumber, Identifier id = null) : base(SymbolDefinitions.WixBundlePackageExitCode, sourceLineNumber, id) | ||
48 | { | ||
49 | } | ||
50 | |||
51 | public IntermediateField this[WixBundlePackageExitCodeSymbolFields index] => this.Fields[(int)index]; | ||
52 | |||
53 | public string ChainPackageId | ||
54 | { | ||
55 | get => (string)this.Fields[(int)WixBundlePackageExitCodeSymbolFields.ChainPackageId]; | ||
56 | set => this.Set((int)WixBundlePackageExitCodeSymbolFields.ChainPackageId, value); | ||
57 | } | ||
58 | |||
59 | public int? Code | ||
60 | { | ||
61 | get => (int?)this.Fields[(int)WixBundlePackageExitCodeSymbolFields.Code]; | ||
62 | set => this.Set((int)WixBundlePackageExitCodeSymbolFields.Code, value); | ||
63 | } | ||
64 | |||
65 | public ExitCodeBehaviorType Behavior | ||
66 | { | ||
67 | get => Enum.TryParse((string)this.Fields[(int)WixBundlePackageExitCodeSymbolFields.Behavior], true, out ExitCodeBehaviorType value) ? value : ExitCodeBehaviorType.NotSet; | ||
68 | set => this.Set((int)WixBundlePackageExitCodeSymbolFields.Behavior, value.ToString()); | ||
69 | } | ||
70 | } | ||
71 | } | ||
diff --git a/src/api/wix/WixToolset.Data/Symbols/WixBundlePackageGroupSymbol.cs b/src/api/wix/WixToolset.Data/Symbols/WixBundlePackageGroupSymbol.cs new file mode 100644 index 00000000..a5e1943b --- /dev/null +++ b/src/api/wix/WixToolset.Data/Symbols/WixBundlePackageGroupSymbol.cs | |||
@@ -0,0 +1,36 @@ | |||
1 | // Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. | ||
2 | |||
3 | namespace WixToolset.Data | ||
4 | { | ||
5 | using WixToolset.Data.Symbols; | ||
6 | |||
7 | public static partial class SymbolDefinitions | ||
8 | { | ||
9 | public static readonly IntermediateSymbolDefinition WixBundlePackageGroup = new IntermediateSymbolDefinition( | ||
10 | SymbolDefinitionType.WixBundlePackageGroup, | ||
11 | new IntermediateFieldDefinition[] | ||
12 | { | ||
13 | }, | ||
14 | typeof(WixBundlePackageGroupSymbol)); | ||
15 | } | ||
16 | } | ||
17 | |||
18 | namespace WixToolset.Data.Symbols | ||
19 | { | ||
20 | public enum WixBundlePackageGroupSymbolFields | ||
21 | { | ||
22 | } | ||
23 | |||
24 | public class WixBundlePackageGroupSymbol : IntermediateSymbol | ||
25 | { | ||
26 | public WixBundlePackageGroupSymbol() : base(SymbolDefinitions.WixBundlePackageGroup, null, null) | ||
27 | { | ||
28 | } | ||
29 | |||
30 | public WixBundlePackageGroupSymbol(SourceLineNumber sourceLineNumber, Identifier id = null) : base(SymbolDefinitions.WixBundlePackageGroup, sourceLineNumber, id) | ||
31 | { | ||
32 | } | ||
33 | |||
34 | public IntermediateField this[WixBundlePackageGroupSymbolFields index] => this.Fields[(int)index]; | ||
35 | } | ||
36 | } \ No newline at end of file | ||
diff --git a/src/api/wix/WixToolset.Data/Symbols/WixBundlePackageSymbol.cs b/src/api/wix/WixToolset.Data/Symbols/WixBundlePackageSymbol.cs new file mode 100644 index 00000000..cbe7f761 --- /dev/null +++ b/src/api/wix/WixToolset.Data/Symbols/WixBundlePackageSymbol.cs | |||
@@ -0,0 +1,212 @@ | |||
1 | // Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. | ||
2 | |||
3 | namespace WixToolset.Data | ||
4 | { | ||
5 | using WixToolset.Data.Symbols; | ||
6 | |||
7 | public static partial class SymbolDefinitions | ||
8 | { | ||
9 | public static readonly IntermediateSymbolDefinition WixBundlePackage = new IntermediateSymbolDefinition( | ||
10 | SymbolDefinitionType.WixBundlePackage, | ||
11 | new[] | ||
12 | { | ||
13 | new IntermediateFieldDefinition(nameof(WixBundlePackageSymbolFields.Type), IntermediateFieldType.String), | ||
14 | new IntermediateFieldDefinition(nameof(WixBundlePackageSymbolFields.PayloadRef), IntermediateFieldType.String), | ||
15 | new IntermediateFieldDefinition(nameof(WixBundlePackageSymbolFields.Attributes), IntermediateFieldType.Number), | ||
16 | new IntermediateFieldDefinition(nameof(WixBundlePackageSymbolFields.InstallCondition), IntermediateFieldType.String), | ||
17 | new IntermediateFieldDefinition(nameof(WixBundlePackageSymbolFields.Cache), IntermediateFieldType.String), | ||
18 | new IntermediateFieldDefinition(nameof(WixBundlePackageSymbolFields.CacheId), IntermediateFieldType.String), | ||
19 | new IntermediateFieldDefinition(nameof(WixBundlePackageSymbolFields.Vital), IntermediateFieldType.Bool), | ||
20 | new IntermediateFieldDefinition(nameof(WixBundlePackageSymbolFields.PerMachine), IntermediateFieldType.String), | ||
21 | new IntermediateFieldDefinition(nameof(WixBundlePackageSymbolFields.LogPathVariable), IntermediateFieldType.String), | ||
22 | new IntermediateFieldDefinition(nameof(WixBundlePackageSymbolFields.RollbackLogPathVariable), IntermediateFieldType.String), | ||
23 | new IntermediateFieldDefinition(nameof(WixBundlePackageSymbolFields.Size), IntermediateFieldType.LargeNumber), | ||
24 | new IntermediateFieldDefinition(nameof(WixBundlePackageSymbolFields.InstallSize), IntermediateFieldType.LargeNumber), | ||
25 | new IntermediateFieldDefinition(nameof(WixBundlePackageSymbolFields.Version), IntermediateFieldType.String), | ||
26 | new IntermediateFieldDefinition(nameof(WixBundlePackageSymbolFields.Language), IntermediateFieldType.Number), | ||
27 | new IntermediateFieldDefinition(nameof(WixBundlePackageSymbolFields.DisplayName), IntermediateFieldType.String), | ||
28 | new IntermediateFieldDefinition(nameof(WixBundlePackageSymbolFields.Description), IntermediateFieldType.String), | ||
29 | new IntermediateFieldDefinition(nameof(WixBundlePackageSymbolFields.RollbackBoundaryRef), IntermediateFieldType.String), | ||
30 | new IntermediateFieldDefinition(nameof(WixBundlePackageSymbolFields.RollbackBoundaryBackwardRef), IntermediateFieldType.String), | ||
31 | new IntermediateFieldDefinition(nameof(WixBundlePackageSymbolFields.Win64), IntermediateFieldType.Bool), | ||
32 | }, | ||
33 | typeof(WixBundlePackageSymbol)); | ||
34 | } | ||
35 | } | ||
36 | |||
37 | namespace WixToolset.Data.Symbols | ||
38 | { | ||
39 | using System; | ||
40 | |||
41 | public enum WixBundlePackageSymbolFields | ||
42 | { | ||
43 | Type, | ||
44 | PayloadRef, | ||
45 | Attributes, | ||
46 | InstallCondition, | ||
47 | Cache, | ||
48 | CacheId, | ||
49 | Vital, | ||
50 | PerMachine, | ||
51 | LogPathVariable, | ||
52 | RollbackLogPathVariable, | ||
53 | Size, | ||
54 | InstallSize, | ||
55 | Version, | ||
56 | Language, | ||
57 | DisplayName, | ||
58 | Description, | ||
59 | RollbackBoundaryRef, | ||
60 | RollbackBoundaryBackwardRef, | ||
61 | Win64, | ||
62 | } | ||
63 | |||
64 | /// <summary> | ||
65 | /// Types of bundle packages. | ||
66 | /// </summary> | ||
67 | public enum WixBundlePackageType | ||
68 | { | ||
69 | Exe, | ||
70 | Msi, | ||
71 | Msp, | ||
72 | Msu, | ||
73 | } | ||
74 | |||
75 | [Flags] | ||
76 | public enum WixBundlePackageAttributes | ||
77 | { | ||
78 | Permanent = 0x1, | ||
79 | Visible = 0x2, | ||
80 | PerMachine = 0x4, | ||
81 | Win64 = 0x8, | ||
82 | } | ||
83 | |||
84 | public class WixBundlePackageSymbol : IntermediateSymbol | ||
85 | { | ||
86 | public WixBundlePackageSymbol() : base(SymbolDefinitions.WixBundlePackage, null, null) | ||
87 | { | ||
88 | } | ||
89 | |||
90 | public WixBundlePackageSymbol(SourceLineNumber sourceLineNumber, Identifier id = null) : base(SymbolDefinitions.WixBundlePackage, sourceLineNumber, id) | ||
91 | { | ||
92 | } | ||
93 | |||
94 | public IntermediateField this[WixBundlePackageSymbolFields index] => this.Fields[(int)index]; | ||
95 | |||
96 | public WixBundlePackageType Type | ||
97 | { | ||
98 | get => (WixBundlePackageType)Enum.Parse(typeof(WixBundlePackageType), (string)this.Fields[(int)WixBundlePackageSymbolFields.Type], true); | ||
99 | set => this.Set((int)WixBundlePackageSymbolFields.Type, value.ToString()); | ||
100 | } | ||
101 | |||
102 | public string PayloadRef | ||
103 | { | ||
104 | get => (string)this.Fields[(int)WixBundlePackageSymbolFields.PayloadRef]; | ||
105 | set => this.Set((int)WixBundlePackageSymbolFields.PayloadRef, value); | ||
106 | } | ||
107 | |||
108 | public WixBundlePackageAttributes Attributes | ||
109 | { | ||
110 | get => (WixBundlePackageAttributes)(int)this.Fields[(int)WixBundlePackageSymbolFields.Attributes]; | ||
111 | set => this.Set((int)WixBundlePackageSymbolFields.Attributes, (int)value); | ||
112 | } | ||
113 | |||
114 | public string InstallCondition | ||
115 | { | ||
116 | get => (string)this.Fields[(int)WixBundlePackageSymbolFields.InstallCondition]; | ||
117 | set => this.Set((int)WixBundlePackageSymbolFields.InstallCondition, value); | ||
118 | } | ||
119 | |||
120 | public YesNoAlwaysType Cache | ||
121 | { | ||
122 | get => Enum.TryParse((string)this.Fields[(int)WixBundlePackageSymbolFields.Cache], true, out YesNoAlwaysType value) ? value : YesNoAlwaysType.NotSet; | ||
123 | set => this.Set((int)WixBundlePackageSymbolFields.Cache, value.ToString().ToLowerInvariant()); | ||
124 | } | ||
125 | |||
126 | public string CacheId | ||
127 | { | ||
128 | get => (string)this.Fields[(int)WixBundlePackageSymbolFields.CacheId]; | ||
129 | set => this.Set((int)WixBundlePackageSymbolFields.CacheId, value); | ||
130 | } | ||
131 | |||
132 | public bool? Vital | ||
133 | { | ||
134 | get => (bool?)this.Fields[(int)WixBundlePackageSymbolFields.Vital]; | ||
135 | set => this.Set((int)WixBundlePackageSymbolFields.Vital, value); | ||
136 | } | ||
137 | |||
138 | public YesNoDefaultType PerMachine | ||
139 | { | ||
140 | get => Enum.TryParse((string)this.Fields[(int)WixBundlePackageSymbolFields.PerMachine], true, out YesNoDefaultType value) ? value : YesNoDefaultType.NotSet; | ||
141 | set => this.Set((int)WixBundlePackageSymbolFields.PerMachine, value.ToString().ToLowerInvariant()); | ||
142 | } | ||
143 | |||
144 | public string LogPathVariable | ||
145 | { | ||
146 | get => (string)this.Fields[(int)WixBundlePackageSymbolFields.LogPathVariable]; | ||
147 | set => this.Set((int)WixBundlePackageSymbolFields.LogPathVariable, value); | ||
148 | } | ||
149 | |||
150 | public string RollbackLogPathVariable | ||
151 | { | ||
152 | get => (string)this.Fields[(int)WixBundlePackageSymbolFields.RollbackLogPathVariable]; | ||
153 | set => this.Set((int)WixBundlePackageSymbolFields.RollbackLogPathVariable, value); | ||
154 | } | ||
155 | |||
156 | public long Size | ||
157 | { | ||
158 | get => (long)this.Fields[(int)WixBundlePackageSymbolFields.Size]; | ||
159 | set => this.Set((int)WixBundlePackageSymbolFields.Size, value); | ||
160 | } | ||
161 | |||
162 | public long? InstallSize | ||
163 | { | ||
164 | get => (long?)this.Fields[(int)WixBundlePackageSymbolFields.InstallSize]; | ||
165 | set => this.Set((int)WixBundlePackageSymbolFields.InstallSize, value); | ||
166 | } | ||
167 | |||
168 | public string Version | ||
169 | { | ||
170 | get => (string)this.Fields[(int)WixBundlePackageSymbolFields.Version]; | ||
171 | set => this.Set((int)WixBundlePackageSymbolFields.Version, value); | ||
172 | } | ||
173 | |||
174 | public int? Language | ||
175 | { | ||
176 | get => (int?)this.Fields[(int)WixBundlePackageSymbolFields.Language]; | ||
177 | set => this.Set((int)WixBundlePackageSymbolFields.Language, value); | ||
178 | } | ||
179 | |||
180 | public string DisplayName | ||
181 | { | ||
182 | get => (string)this.Fields[(int)WixBundlePackageSymbolFields.DisplayName]; | ||
183 | set => this.Set((int)WixBundlePackageSymbolFields.DisplayName, value); | ||
184 | } | ||
185 | |||
186 | public string Description | ||
187 | { | ||
188 | get => (string)this.Fields[(int)WixBundlePackageSymbolFields.Description]; | ||
189 | set => this.Set((int)WixBundlePackageSymbolFields.Description, value); | ||
190 | } | ||
191 | |||
192 | public string RollbackBoundaryRef | ||
193 | { | ||
194 | get => (string)this.Fields[(int)WixBundlePackageSymbolFields.RollbackBoundaryRef]; | ||
195 | set => this.Set((int)WixBundlePackageSymbolFields.RollbackBoundaryRef, value); | ||
196 | } | ||
197 | |||
198 | public string RollbackBoundaryBackwardRef | ||
199 | { | ||
200 | get => (string)this.Fields[(int)WixBundlePackageSymbolFields.RollbackBoundaryBackwardRef]; | ||
201 | set => this.Set((int)WixBundlePackageSymbolFields.RollbackBoundaryBackwardRef, value); | ||
202 | } | ||
203 | |||
204 | public bool Win64 | ||
205 | { | ||
206 | get => (bool)this.Fields[(int)WixBundlePackageSymbolFields.Win64]; | ||
207 | set => this.Set((int)WixBundlePackageSymbolFields.Win64, value); | ||
208 | } | ||
209 | |||
210 | public bool Permanent => (this.Attributes & WixBundlePackageAttributes.Permanent) == WixBundlePackageAttributes.Permanent; | ||
211 | } | ||
212 | } \ No newline at end of file | ||
diff --git a/src/api/wix/WixToolset.Data/Symbols/WixBundlePatchTargetCodeSymbol.cs b/src/api/wix/WixToolset.Data/Symbols/WixBundlePatchTargetCodeSymbol.cs new file mode 100644 index 00000000..b1aa9c77 --- /dev/null +++ b/src/api/wix/WixToolset.Data/Symbols/WixBundlePatchTargetCodeSymbol.cs | |||
@@ -0,0 +1,82 @@ | |||
1 | // Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. | ||
2 | |||
3 | namespace WixToolset.Data | ||
4 | { | ||
5 | using WixToolset.Data.Symbols; | ||
6 | |||
7 | public static partial class SymbolDefinitions | ||
8 | { | ||
9 | public static readonly IntermediateSymbolDefinition WixBundlePatchTargetCode = new IntermediateSymbolDefinition( | ||
10 | SymbolDefinitionType.WixBundlePatchTargetCode, | ||
11 | new[] | ||
12 | { | ||
13 | new IntermediateFieldDefinition(nameof(WixBundlePatchTargetCodeSymbolFields.PackageRef), IntermediateFieldType.String), | ||
14 | new IntermediateFieldDefinition(nameof(WixBundlePatchTargetCodeSymbolFields.TargetCode), IntermediateFieldType.String), | ||
15 | new IntermediateFieldDefinition(nameof(WixBundlePatchTargetCodeSymbolFields.Attributes), IntermediateFieldType.Number), | ||
16 | }, | ||
17 | typeof(WixBundlePatchTargetCodeSymbol)); | ||
18 | } | ||
19 | } | ||
20 | |||
21 | namespace WixToolset.Data.Symbols | ||
22 | { | ||
23 | using System; | ||
24 | |||
25 | public enum WixBundlePatchTargetCodeSymbolFields | ||
26 | { | ||
27 | PackageRef, | ||
28 | TargetCode, | ||
29 | Attributes, | ||
30 | } | ||
31 | |||
32 | [Flags] | ||
33 | public enum WixBundlePatchTargetCodeAttributes : int | ||
34 | { | ||
35 | None = 0, | ||
36 | |||
37 | /// <summary> | ||
38 | /// The transform targets a specific ProductCode. | ||
39 | /// </summary> | ||
40 | TargetsProductCode = 1, | ||
41 | |||
42 | /// <summary> | ||
43 | /// The transform targets a specific UpgradeCode. | ||
44 | /// </summary> | ||
45 | TargetsUpgradeCode = 2, | ||
46 | } | ||
47 | |||
48 | public class WixBundlePatchTargetCodeSymbol : IntermediateSymbol | ||
49 | { | ||
50 | public WixBundlePatchTargetCodeSymbol() : base(SymbolDefinitions.WixBundlePatchTargetCode, null, null) | ||
51 | { | ||
52 | } | ||
53 | |||
54 | public WixBundlePatchTargetCodeSymbol(SourceLineNumber sourceLineNumber, Identifier id = null) : base(SymbolDefinitions.WixBundlePatchTargetCode, sourceLineNumber, id) | ||
55 | { | ||
56 | } | ||
57 | |||
58 | public IntermediateField this[WixBundlePatchTargetCodeSymbolFields index] => this.Fields[(int)index]; | ||
59 | |||
60 | public string PackageRef | ||
61 | { | ||
62 | get => (string)this.Fields[(int)WixBundlePatchTargetCodeSymbolFields.PackageRef]; | ||
63 | set => this.Set((int)WixBundlePatchTargetCodeSymbolFields.PackageRef, value); | ||
64 | } | ||
65 | |||
66 | public string TargetCode | ||
67 | { | ||
68 | get => (string)this.Fields[(int)WixBundlePatchTargetCodeSymbolFields.TargetCode]; | ||
69 | set => this.Set((int)WixBundlePatchTargetCodeSymbolFields.TargetCode, value); | ||
70 | } | ||
71 | |||
72 | public WixBundlePatchTargetCodeAttributes Attributes | ||
73 | { | ||
74 | get => (WixBundlePatchTargetCodeAttributes)this.Fields[(int)WixBundlePatchTargetCodeSymbolFields.Attributes].AsNumber(); | ||
75 | set => this.Set((int)WixBundlePatchTargetCodeSymbolFields.Attributes, (int)value); | ||
76 | } | ||
77 | |||
78 | public bool TargetsProductCode => (this.Attributes & WixBundlePatchTargetCodeAttributes.TargetsProductCode) == WixBundlePatchTargetCodeAttributes.TargetsProductCode; | ||
79 | |||
80 | public bool TargetsUpgradeCode => (this.Attributes & WixBundlePatchTargetCodeAttributes.TargetsUpgradeCode) == WixBundlePatchTargetCodeAttributes.TargetsUpgradeCode; | ||
81 | } | ||
82 | } | ||
diff --git a/src/api/wix/WixToolset.Data/Symbols/WixBundlePayloadGroupSymbol.cs b/src/api/wix/WixToolset.Data/Symbols/WixBundlePayloadGroupSymbol.cs new file mode 100644 index 00000000..c53f6e73 --- /dev/null +++ b/src/api/wix/WixToolset.Data/Symbols/WixBundlePayloadGroupSymbol.cs | |||
@@ -0,0 +1,36 @@ | |||
1 | // Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. | ||
2 | |||
3 | namespace WixToolset.Data | ||
4 | { | ||
5 | using WixToolset.Data.Symbols; | ||
6 | |||
7 | public static partial class SymbolDefinitions | ||
8 | { | ||
9 | public static readonly IntermediateSymbolDefinition WixBundlePayloadGroup = new IntermediateSymbolDefinition( | ||
10 | SymbolDefinitionType.WixBundlePayloadGroup, | ||
11 | new IntermediateFieldDefinition[] | ||
12 | { | ||
13 | }, | ||
14 | typeof(WixBundlePayloadGroupSymbol)); | ||
15 | } | ||
16 | } | ||
17 | |||
18 | namespace WixToolset.Data.Symbols | ||
19 | { | ||
20 | public enum WixBundlePayloadGroupSymbolFields | ||
21 | { | ||
22 | } | ||
23 | |||
24 | public class WixBundlePayloadGroupSymbol : IntermediateSymbol | ||
25 | { | ||
26 | public WixBundlePayloadGroupSymbol() : base(SymbolDefinitions.WixBundlePayloadGroup, null, null) | ||
27 | { | ||
28 | } | ||
29 | |||
30 | public WixBundlePayloadGroupSymbol(SourceLineNumber sourceLineNumber, Identifier id = null) : base(SymbolDefinitions.WixBundlePayloadGroup, sourceLineNumber, id) | ||
31 | { | ||
32 | } | ||
33 | |||
34 | public IntermediateField this[WixBundlePayloadGroupSymbolFields index] => this.Fields[(int)index]; | ||
35 | } | ||
36 | } \ No newline at end of file | ||
diff --git a/src/api/wix/WixToolset.Data/Symbols/WixBundlePayloadSymbol.cs b/src/api/wix/WixToolset.Data/Symbols/WixBundlePayloadSymbol.cs new file mode 100644 index 00000000..82b75285 --- /dev/null +++ b/src/api/wix/WixToolset.Data/Symbols/WixBundlePayloadSymbol.cs | |||
@@ -0,0 +1,166 @@ | |||
1 | // Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. | ||
2 | |||
3 | namespace WixToolset.Data | ||
4 | { | ||
5 | using WixToolset.Data.Symbols; | ||
6 | |||
7 | public static partial class SymbolDefinitions | ||
8 | { | ||
9 | public static readonly IntermediateSymbolDefinition WixBundlePayload = new IntermediateSymbolDefinition( | ||
10 | SymbolDefinitionType.WixBundlePayload, | ||
11 | new[] | ||
12 | { | ||
13 | new IntermediateFieldDefinition(nameof(WixBundlePayloadSymbolFields.Name), IntermediateFieldType.String), | ||
14 | new IntermediateFieldDefinition(nameof(WixBundlePayloadSymbolFields.SourceFile), IntermediateFieldType.Path), | ||
15 | new IntermediateFieldDefinition(nameof(WixBundlePayloadSymbolFields.DownloadUrl), IntermediateFieldType.String), | ||
16 | new IntermediateFieldDefinition(nameof(WixBundlePayloadSymbolFields.Compressed), IntermediateFieldType.Bool), | ||
17 | new IntermediateFieldDefinition(nameof(WixBundlePayloadSymbolFields.UnresolvedSourceFile), IntermediateFieldType.String), | ||
18 | new IntermediateFieldDefinition(nameof(WixBundlePayloadSymbolFields.DisplayName), IntermediateFieldType.String), | ||
19 | new IntermediateFieldDefinition(nameof(WixBundlePayloadSymbolFields.Description), IntermediateFieldType.String), | ||
20 | new IntermediateFieldDefinition(nameof(WixBundlePayloadSymbolFields.FileSize), IntermediateFieldType.LargeNumber), | ||
21 | new IntermediateFieldDefinition(nameof(WixBundlePayloadSymbolFields.Version), IntermediateFieldType.String), | ||
22 | new IntermediateFieldDefinition(nameof(WixBundlePayloadSymbolFields.Hash), IntermediateFieldType.String), | ||
23 | new IntermediateFieldDefinition(nameof(WixBundlePayloadSymbolFields.ContainerRef), IntermediateFieldType.String), | ||
24 | new IntermediateFieldDefinition(nameof(WixBundlePayloadSymbolFields.ContentFile), IntermediateFieldType.Bool), | ||
25 | new IntermediateFieldDefinition(nameof(WixBundlePayloadSymbolFields.EmbeddedId), IntermediateFieldType.String), | ||
26 | new IntermediateFieldDefinition(nameof(WixBundlePayloadSymbolFields.LayoutOnly), IntermediateFieldType.Bool), | ||
27 | new IntermediateFieldDefinition(nameof(WixBundlePayloadSymbolFields.Packaging), IntermediateFieldType.Number), | ||
28 | new IntermediateFieldDefinition(nameof(WixBundlePayloadSymbolFields.ParentPackagePayloadRef), IntermediateFieldType.String), | ||
29 | }, | ||
30 | typeof(WixBundlePayloadSymbol)); | ||
31 | } | ||
32 | } | ||
33 | |||
34 | namespace WixToolset.Data.Symbols | ||
35 | { | ||
36 | using System; | ||
37 | |||
38 | public enum WixBundlePayloadSymbolFields | ||
39 | { | ||
40 | Name, | ||
41 | SourceFile, | ||
42 | DownloadUrl, | ||
43 | Compressed, | ||
44 | UnresolvedSourceFile, | ||
45 | DisplayName, | ||
46 | Description, | ||
47 | FileSize, | ||
48 | Version, | ||
49 | Hash, | ||
50 | ContainerRef, | ||
51 | ContentFile, | ||
52 | EmbeddedId, | ||
53 | LayoutOnly, | ||
54 | Packaging, | ||
55 | ParentPackagePayloadRef, | ||
56 | } | ||
57 | |||
58 | public class WixBundlePayloadSymbol : IntermediateSymbol | ||
59 | { | ||
60 | public WixBundlePayloadSymbol() : base(SymbolDefinitions.WixBundlePayload, null, null) | ||
61 | { | ||
62 | } | ||
63 | |||
64 | public WixBundlePayloadSymbol(SourceLineNumber sourceLineNumber, Identifier id = null) : base(SymbolDefinitions.WixBundlePayload, sourceLineNumber, id) | ||
65 | { | ||
66 | } | ||
67 | |||
68 | public IntermediateField this[WixBundlePayloadSymbolFields index] => this.Fields[(int)index]; | ||
69 | |||
70 | public string Name | ||
71 | { | ||
72 | get => (string)this.Fields[(int)WixBundlePayloadSymbolFields.Name]; | ||
73 | set => this.Set((int)WixBundlePayloadSymbolFields.Name, value); | ||
74 | } | ||
75 | |||
76 | public IntermediateFieldPathValue SourceFile | ||
77 | { | ||
78 | get => this.Fields[(int)WixBundlePayloadSymbolFields.SourceFile].AsPath(); | ||
79 | set => this.Set((int)WixBundlePayloadSymbolFields.SourceFile, value); | ||
80 | } | ||
81 | |||
82 | public string DownloadUrl | ||
83 | { | ||
84 | get => (string)this.Fields[(int)WixBundlePayloadSymbolFields.DownloadUrl]; | ||
85 | set => this.Set((int)WixBundlePayloadSymbolFields.DownloadUrl, value); | ||
86 | } | ||
87 | |||
88 | public bool? Compressed | ||
89 | { | ||
90 | get => (bool?)this.Fields[(int)WixBundlePayloadSymbolFields.Compressed]; | ||
91 | set => this.Set((int)WixBundlePayloadSymbolFields.Compressed, value); | ||
92 | } | ||
93 | |||
94 | public string UnresolvedSourceFile | ||
95 | { | ||
96 | get => (string)this.Fields[(int)WixBundlePayloadSymbolFields.UnresolvedSourceFile]; | ||
97 | set => this.Set((int)WixBundlePayloadSymbolFields.UnresolvedSourceFile, value); | ||
98 | } | ||
99 | |||
100 | public string DisplayName | ||
101 | { | ||
102 | get => (string)this.Fields[(int)WixBundlePayloadSymbolFields.DisplayName]; | ||
103 | set => this.Set((int)WixBundlePayloadSymbolFields.DisplayName, value); | ||
104 | } | ||
105 | |||
106 | public string Description | ||
107 | { | ||
108 | get => (string)this.Fields[(int)WixBundlePayloadSymbolFields.Description]; | ||
109 | set => this.Set((int)WixBundlePayloadSymbolFields.Description, value); | ||
110 | } | ||
111 | |||
112 | public long? FileSize | ||
113 | { | ||
114 | get => (long?)this.Fields[(int)WixBundlePayloadSymbolFields.FileSize]; | ||
115 | set => this.Set((int)WixBundlePayloadSymbolFields.FileSize, value); | ||
116 | } | ||
117 | |||
118 | public string Version | ||
119 | { | ||
120 | get => (string)this.Fields[(int)WixBundlePayloadSymbolFields.Version]; | ||
121 | set => this.Set((int)WixBundlePayloadSymbolFields.Version, value); | ||
122 | } | ||
123 | |||
124 | public string Hash | ||
125 | { | ||
126 | get => (string)this.Fields[(int)WixBundlePayloadSymbolFields.Hash]; | ||
127 | set => this.Set((int)WixBundlePayloadSymbolFields.Hash, value); | ||
128 | } | ||
129 | |||
130 | public string ContainerRef | ||
131 | { | ||
132 | get => (string)this.Fields[(int)WixBundlePayloadSymbolFields.ContainerRef]; | ||
133 | set => this.Set((int)WixBundlePayloadSymbolFields.ContainerRef, value); | ||
134 | } | ||
135 | |||
136 | public bool ContentFile | ||
137 | { | ||
138 | get => (bool)this.Fields[(int)WixBundlePayloadSymbolFields.ContentFile]; | ||
139 | set => this.Set((int)WixBundlePayloadSymbolFields.ContentFile, value); | ||
140 | } | ||
141 | |||
142 | public string EmbeddedId | ||
143 | { | ||
144 | get => (string)this.Fields[(int)WixBundlePayloadSymbolFields.EmbeddedId]; | ||
145 | set => this.Set((int)WixBundlePayloadSymbolFields.EmbeddedId, value); | ||
146 | } | ||
147 | |||
148 | public bool LayoutOnly | ||
149 | { | ||
150 | get => (bool)this.Fields[(int)WixBundlePayloadSymbolFields.LayoutOnly]; | ||
151 | set => this.Set((int)WixBundlePayloadSymbolFields.LayoutOnly, value); | ||
152 | } | ||
153 | |||
154 | public PackagingType? Packaging | ||
155 | { | ||
156 | get => (PackagingType?)this.Fields[(int)WixBundlePayloadSymbolFields.Packaging].AsNumber(); | ||
157 | set => this.Set((int)WixBundlePayloadSymbolFields.Packaging, (int?)value); | ||
158 | } | ||
159 | |||
160 | public string ParentPackagePayloadRef | ||
161 | { | ||
162 | get => (string)this.Fields[(int)WixBundlePayloadSymbolFields.ParentPackagePayloadRef]; | ||
163 | set => this.Set((int)WixBundlePayloadSymbolFields.ParentPackagePayloadRef, value); | ||
164 | } | ||
165 | } | ||
166 | } | ||
diff --git a/src/api/wix/WixToolset.Data/Symbols/WixBundleRelatedPackageSymbol.cs b/src/api/wix/WixToolset.Data/Symbols/WixBundleRelatedPackageSymbol.cs new file mode 100644 index 00000000..7bd67b7f --- /dev/null +++ b/src/api/wix/WixToolset.Data/Symbols/WixBundleRelatedPackageSymbol.cs | |||
@@ -0,0 +1,104 @@ | |||
1 | // Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. | ||
2 | |||
3 | namespace WixToolset.Data | ||
4 | { | ||
5 | using WixToolset.Data.Symbols; | ||
6 | |||
7 | public static partial class SymbolDefinitions | ||
8 | { | ||
9 | public static readonly IntermediateSymbolDefinition WixBundleRelatedPackage = new IntermediateSymbolDefinition( | ||
10 | SymbolDefinitionType.WixBundleRelatedPackage, | ||
11 | new[] | ||
12 | { | ||
13 | new IntermediateFieldDefinition(nameof(WixBundleRelatedPackageSymbolFields.PackageRef), IntermediateFieldType.String), | ||
14 | new IntermediateFieldDefinition(nameof(WixBundleRelatedPackageSymbolFields.RelatedId), IntermediateFieldType.String), | ||
15 | new IntermediateFieldDefinition(nameof(WixBundleRelatedPackageSymbolFields.MinVersion), IntermediateFieldType.String), | ||
16 | new IntermediateFieldDefinition(nameof(WixBundleRelatedPackageSymbolFields.MaxVersion), IntermediateFieldType.String), | ||
17 | new IntermediateFieldDefinition(nameof(WixBundleRelatedPackageSymbolFields.Languages), IntermediateFieldType.String), | ||
18 | new IntermediateFieldDefinition(nameof(WixBundleRelatedPackageSymbolFields.Attributes), IntermediateFieldType.Number), | ||
19 | }, | ||
20 | typeof(WixBundleRelatedPackageSymbol)); | ||
21 | } | ||
22 | } | ||
23 | |||
24 | namespace WixToolset.Data.Symbols | ||
25 | { | ||
26 | using System; | ||
27 | |||
28 | public enum WixBundleRelatedPackageSymbolFields | ||
29 | { | ||
30 | PackageRef, | ||
31 | RelatedId, | ||
32 | MinVersion, | ||
33 | MaxVersion, | ||
34 | Languages, | ||
35 | Attributes, | ||
36 | } | ||
37 | |||
38 | [Flags] | ||
39 | public enum WixBundleRelatedPackageAttributes | ||
40 | { | ||
41 | None = 0x0, | ||
42 | OnlyDetect = 0x1, | ||
43 | MinInclusive = 0x2, | ||
44 | MaxInclusive = 0x4, | ||
45 | LangInclusive = 0x8, | ||
46 | } | ||
47 | |||
48 | public class WixBundleRelatedPackageSymbol : IntermediateSymbol | ||
49 | { | ||
50 | public WixBundleRelatedPackageSymbol() : base(SymbolDefinitions.WixBundleRelatedPackage, null, null) | ||
51 | { | ||
52 | } | ||
53 | |||
54 | public WixBundleRelatedPackageSymbol(SourceLineNumber sourceLineNumber, Identifier id = null) : base(SymbolDefinitions.WixBundleRelatedPackage, sourceLineNumber, id) | ||
55 | { | ||
56 | } | ||
57 | |||
58 | public IntermediateField this[WixBundleRelatedPackageSymbolFields index] => this.Fields[(int)index]; | ||
59 | |||
60 | public string PackageRef | ||
61 | { | ||
62 | get => (string)this.Fields[(int)WixBundleRelatedPackageSymbolFields.PackageRef]; | ||
63 | set => this.Set((int)WixBundleRelatedPackageSymbolFields.PackageRef, value); | ||
64 | } | ||
65 | |||
66 | public string RelatedId | ||
67 | { | ||
68 | get => (string)this.Fields[(int)WixBundleRelatedPackageSymbolFields.RelatedId]; | ||
69 | set => this.Set((int)WixBundleRelatedPackageSymbolFields.RelatedId, value); | ||
70 | } | ||
71 | |||
72 | public string MinVersion | ||
73 | { | ||
74 | get => (string)this.Fields[(int)WixBundleRelatedPackageSymbolFields.MinVersion]; | ||
75 | set => this.Set((int)WixBundleRelatedPackageSymbolFields.MinVersion, value); | ||
76 | } | ||
77 | |||
78 | public string MaxVersion | ||
79 | { | ||
80 | get => (string)this.Fields[(int)WixBundleRelatedPackageSymbolFields.MaxVersion]; | ||
81 | set => this.Set((int)WixBundleRelatedPackageSymbolFields.MaxVersion, value); | ||
82 | } | ||
83 | |||
84 | public string Languages | ||
85 | { | ||
86 | get => (string)this.Fields[(int)WixBundleRelatedPackageSymbolFields.Languages]; | ||
87 | set => this.Set((int)WixBundleRelatedPackageSymbolFields.Languages, value); | ||
88 | } | ||
89 | |||
90 | public WixBundleRelatedPackageAttributes Attributes | ||
91 | { | ||
92 | get => (WixBundleRelatedPackageAttributes)this.Fields[(int)WixBundleRelatedPackageSymbolFields.Attributes].AsNumber(); | ||
93 | set => this.Set((int)WixBundleRelatedPackageSymbolFields.Attributes, (int)value); | ||
94 | } | ||
95 | |||
96 | public bool MinInclusive => (this.Attributes & WixBundleRelatedPackageAttributes.MinInclusive) == WixBundleRelatedPackageAttributes.MinInclusive; | ||
97 | |||
98 | public bool MaxInclusive => (this.Attributes & WixBundleRelatedPackageAttributes.MaxInclusive) == WixBundleRelatedPackageAttributes.MaxInclusive; | ||
99 | |||
100 | public bool OnlyDetect => (this.Attributes & WixBundleRelatedPackageAttributes.OnlyDetect) == WixBundleRelatedPackageAttributes.OnlyDetect; | ||
101 | |||
102 | public bool LangInclusive => (this.Attributes & WixBundleRelatedPackageAttributes.LangInclusive) == WixBundleRelatedPackageAttributes.LangInclusive; | ||
103 | } | ||
104 | } | ||
diff --git a/src/api/wix/WixToolset.Data/Symbols/WixBundleRollbackBoundarySymbol.cs b/src/api/wix/WixToolset.Data/Symbols/WixBundleRollbackBoundarySymbol.cs new file mode 100644 index 00000000..e54e898e --- /dev/null +++ b/src/api/wix/WixToolset.Data/Symbols/WixBundleRollbackBoundarySymbol.cs | |||
@@ -0,0 +1,52 @@ | |||
1 | // Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. | ||
2 | |||
3 | namespace WixToolset.Data | ||
4 | { | ||
5 | using WixToolset.Data.Symbols; | ||
6 | |||
7 | public static partial class SymbolDefinitions | ||
8 | { | ||
9 | public static readonly IntermediateSymbolDefinition WixBundleRollbackBoundary = new IntermediateSymbolDefinition( | ||
10 | SymbolDefinitionType.WixBundleRollbackBoundary, | ||
11 | new[] | ||
12 | { | ||
13 | new IntermediateFieldDefinition(nameof(WixBundleRollbackBoundarySymbolFields.Vital), IntermediateFieldType.Number), | ||
14 | new IntermediateFieldDefinition(nameof(WixBundleRollbackBoundarySymbolFields.Transaction), IntermediateFieldType.Number), | ||
15 | }, | ||
16 | typeof(WixBundleRollbackBoundarySymbol)); | ||
17 | } | ||
18 | } | ||
19 | |||
20 | namespace WixToolset.Data.Symbols | ||
21 | { | ||
22 | public enum WixBundleRollbackBoundarySymbolFields | ||
23 | { | ||
24 | Vital, | ||
25 | Transaction, | ||
26 | } | ||
27 | |||
28 | public class WixBundleRollbackBoundarySymbol : IntermediateSymbol | ||
29 | { | ||
30 | public WixBundleRollbackBoundarySymbol() : base(SymbolDefinitions.WixBundleRollbackBoundary, null, null) | ||
31 | { | ||
32 | } | ||
33 | |||
34 | public WixBundleRollbackBoundarySymbol(SourceLineNumber sourceLineNumber, Identifier id = null) : base(SymbolDefinitions.WixBundleRollbackBoundary, sourceLineNumber, id) | ||
35 | { | ||
36 | } | ||
37 | |||
38 | public IntermediateField this[WixBundleRollbackBoundarySymbolFields index] => this.Fields[(int)index]; | ||
39 | |||
40 | public bool? Vital | ||
41 | { | ||
42 | get => (bool?)this.Fields[(int)WixBundleRollbackBoundarySymbolFields.Vital]; | ||
43 | set => this.Set((int)WixBundleRollbackBoundarySymbolFields.Vital, value); | ||
44 | } | ||
45 | |||
46 | public bool? Transaction | ||
47 | { | ||
48 | get => (bool?)this.Fields[(int)WixBundleRollbackBoundarySymbolFields.Transaction]; | ||
49 | set => this.Set((int)WixBundleRollbackBoundarySymbolFields.Transaction, value); | ||
50 | } | ||
51 | } | ||
52 | } \ No newline at end of file | ||
diff --git a/src/api/wix/WixToolset.Data/Symbols/WixBundleSlipstreamMspSymbol.cs b/src/api/wix/WixToolset.Data/Symbols/WixBundleSlipstreamMspSymbol.cs new file mode 100644 index 00000000..d8e9db3f --- /dev/null +++ b/src/api/wix/WixToolset.Data/Symbols/WixBundleSlipstreamMspSymbol.cs | |||
@@ -0,0 +1,52 @@ | |||
1 | // Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. | ||
2 | |||
3 | namespace WixToolset.Data | ||
4 | { | ||
5 | using WixToolset.Data.Symbols; | ||
6 | |||
7 | public static partial class SymbolDefinitions | ||
8 | { | ||
9 | public static readonly IntermediateSymbolDefinition WixBundleSlipstreamMsp = new IntermediateSymbolDefinition( | ||
10 | SymbolDefinitionType.WixBundleSlipstreamMsp, | ||
11 | new[] | ||
12 | { | ||
13 | new IntermediateFieldDefinition(nameof(WixBundleSlipstreamMspSymbolFields.TargetPackageRef), IntermediateFieldType.String), | ||
14 | new IntermediateFieldDefinition(nameof(WixBundleSlipstreamMspSymbolFields.MspPackageRef), IntermediateFieldType.String), | ||
15 | }, | ||
16 | typeof(WixBundleSlipstreamMspSymbol)); | ||
17 | } | ||
18 | } | ||
19 | |||
20 | namespace WixToolset.Data.Symbols | ||
21 | { | ||
22 | public enum WixBundleSlipstreamMspSymbolFields | ||
23 | { | ||
24 | TargetPackageRef, | ||
25 | MspPackageRef, | ||
26 | } | ||
27 | |||
28 | public class WixBundleSlipstreamMspSymbol : IntermediateSymbol | ||
29 | { | ||
30 | public WixBundleSlipstreamMspSymbol() : base(SymbolDefinitions.WixBundleSlipstreamMsp, null, null) | ||
31 | { | ||
32 | } | ||
33 | |||
34 | public WixBundleSlipstreamMspSymbol(SourceLineNumber sourceLineNumber, Identifier id = null) : base(SymbolDefinitions.WixBundleSlipstreamMsp, sourceLineNumber, id) | ||
35 | { | ||
36 | } | ||
37 | |||
38 | public IntermediateField this[WixBundleSlipstreamMspSymbolFields index] => this.Fields[(int)index]; | ||
39 | |||
40 | public string TargetPackageRef | ||
41 | { | ||
42 | get => (string)this.Fields[(int)WixBundleSlipstreamMspSymbolFields.TargetPackageRef]; | ||
43 | set => this.Set((int)WixBundleSlipstreamMspSymbolFields.TargetPackageRef, value); | ||
44 | } | ||
45 | |||
46 | public string MspPackageRef | ||
47 | { | ||
48 | get => (string)this.Fields[(int)WixBundleSlipstreamMspSymbolFields.MspPackageRef]; | ||
49 | set => this.Set((int)WixBundleSlipstreamMspSymbolFields.MspPackageRef, value); | ||
50 | } | ||
51 | } | ||
52 | } | ||
diff --git a/src/api/wix/WixToolset.Data/Symbols/WixBundleSymbol.cs b/src/api/wix/WixToolset.Data/Symbols/WixBundleSymbol.cs new file mode 100644 index 00000000..8cad5c36 --- /dev/null +++ b/src/api/wix/WixToolset.Data/Symbols/WixBundleSymbol.cs | |||
@@ -0,0 +1,234 @@ | |||
1 | // Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. | ||
2 | |||
3 | namespace WixToolset.Data | ||
4 | { | ||
5 | using WixToolset.Data.Symbols; | ||
6 | |||
7 | public static partial class SymbolDefinitions | ||
8 | { | ||
9 | public static readonly IntermediateSymbolDefinition WixBundle = new IntermediateSymbolDefinition( | ||
10 | SymbolDefinitionType.WixBundle, | ||
11 | new[] | ||
12 | { | ||
13 | new IntermediateFieldDefinition(nameof(WixBundleSymbolFields.UpgradeCode), IntermediateFieldType.String), | ||
14 | new IntermediateFieldDefinition(nameof(WixBundleSymbolFields.Version), IntermediateFieldType.String), | ||
15 | new IntermediateFieldDefinition(nameof(WixBundleSymbolFields.Copyright), IntermediateFieldType.String), | ||
16 | new IntermediateFieldDefinition(nameof(WixBundleSymbolFields.Name), IntermediateFieldType.String), | ||
17 | new IntermediateFieldDefinition(nameof(WixBundleSymbolFields.Manufacturer), IntermediateFieldType.String), | ||
18 | new IntermediateFieldDefinition(nameof(WixBundleSymbolFields.Attributes), IntermediateFieldType.Number), | ||
19 | new IntermediateFieldDefinition(nameof(WixBundleSymbolFields.AboutUrl), IntermediateFieldType.String), | ||
20 | new IntermediateFieldDefinition(nameof(WixBundleSymbolFields.HelpUrl), IntermediateFieldType.String), | ||
21 | new IntermediateFieldDefinition(nameof(WixBundleSymbolFields.HelpTelephone), IntermediateFieldType.String), | ||
22 | new IntermediateFieldDefinition(nameof(WixBundleSymbolFields.UpdateUrl), IntermediateFieldType.String), | ||
23 | new IntermediateFieldDefinition(nameof(WixBundleSymbolFields.Compressed), IntermediateFieldType.Bool), | ||
24 | new IntermediateFieldDefinition(nameof(WixBundleSymbolFields.LogPathVariable), IntermediateFieldType.String), | ||
25 | new IntermediateFieldDefinition(nameof(WixBundleSymbolFields.LogPrefix), IntermediateFieldType.String), | ||
26 | new IntermediateFieldDefinition(nameof(WixBundleSymbolFields.LogExtension), IntermediateFieldType.String), | ||
27 | new IntermediateFieldDefinition(nameof(WixBundleSymbolFields.IconSourceFile), IntermediateFieldType.Path), | ||
28 | new IntermediateFieldDefinition(nameof(WixBundleSymbolFields.SplashScreenSourceFile), IntermediateFieldType.Path), | ||
29 | new IntermediateFieldDefinition(nameof(WixBundleSymbolFields.Condition), IntermediateFieldType.String), | ||
30 | new IntermediateFieldDefinition(nameof(WixBundleSymbolFields.Tag), IntermediateFieldType.String), | ||
31 | new IntermediateFieldDefinition(nameof(WixBundleSymbolFields.Platform), IntermediateFieldType.String), | ||
32 | new IntermediateFieldDefinition(nameof(WixBundleSymbolFields.ParentName), IntermediateFieldType.String), | ||
33 | new IntermediateFieldDefinition(nameof(WixBundleSymbolFields.BundleId), IntermediateFieldType.String), | ||
34 | new IntermediateFieldDefinition(nameof(WixBundleSymbolFields.ProviderKey), IntermediateFieldType.String), | ||
35 | }, | ||
36 | typeof(WixBundleSymbol)); | ||
37 | } | ||
38 | } | ||
39 | |||
40 | namespace WixToolset.Data.Symbols | ||
41 | { | ||
42 | using System; | ||
43 | |||
44 | public enum WixBundleSymbolFields | ||
45 | { | ||
46 | UpgradeCode, | ||
47 | Version, | ||
48 | Copyright, | ||
49 | Name, | ||
50 | Manufacturer, | ||
51 | Attributes, | ||
52 | AboutUrl, | ||
53 | HelpUrl, | ||
54 | HelpTelephone, | ||
55 | UpdateUrl, | ||
56 | Compressed, | ||
57 | LogPathVariable, | ||
58 | LogPrefix, | ||
59 | LogExtension, | ||
60 | IconSourceFile, | ||
61 | SplashScreenSourceFile, | ||
62 | Condition, | ||
63 | Tag, | ||
64 | Platform, | ||
65 | ParentName, | ||
66 | BundleId, | ||
67 | ProviderKey, | ||
68 | } | ||
69 | |||
70 | [Flags] | ||
71 | public enum WixBundleAttributes | ||
72 | { | ||
73 | None = 0x0, | ||
74 | DisableModify = 0x1, | ||
75 | DisableRemove = 0x2, | ||
76 | SingleChangeUninstallButton = 0x4, | ||
77 | PerMachine = 0x8, | ||
78 | } | ||
79 | |||
80 | public class WixBundleSymbol : IntermediateSymbol | ||
81 | { | ||
82 | public WixBundleSymbol() : base(SymbolDefinitions.WixBundle, null, null) | ||
83 | { | ||
84 | } | ||
85 | |||
86 | public WixBundleSymbol(SourceLineNumber sourceLineNumber, Identifier id = null) : base(SymbolDefinitions.WixBundle, sourceLineNumber, id) | ||
87 | { | ||
88 | } | ||
89 | |||
90 | public IntermediateField this[WixBundleSymbolFields index] => this.Fields[(int)index]; | ||
91 | |||
92 | public string UpgradeCode | ||
93 | { | ||
94 | get => (string)this.Fields[(int)WixBundleSymbolFields.UpgradeCode]; | ||
95 | set => this.Set((int)WixBundleSymbolFields.UpgradeCode, value); | ||
96 | } | ||
97 | |||
98 | public string Version | ||
99 | { | ||
100 | get => (string)this.Fields[(int)WixBundleSymbolFields.Version]; | ||
101 | set => this.Set((int)WixBundleSymbolFields.Version, value); | ||
102 | } | ||
103 | |||
104 | public string Copyright | ||
105 | { | ||
106 | get => (string)this.Fields[(int)WixBundleSymbolFields.Copyright]; | ||
107 | set => this.Set((int)WixBundleSymbolFields.Copyright, value); | ||
108 | } | ||
109 | |||
110 | public string Name | ||
111 | { | ||
112 | get => (string)this.Fields[(int)WixBundleSymbolFields.Name]; | ||
113 | set => this.Set((int)WixBundleSymbolFields.Name, value); | ||
114 | } | ||
115 | |||
116 | public string Manufacturer | ||
117 | { | ||
118 | get => (string)this.Fields[(int)WixBundleSymbolFields.Manufacturer]; | ||
119 | set => this.Set((int)WixBundleSymbolFields.Manufacturer, value); | ||
120 | } | ||
121 | |||
122 | public WixBundleAttributes Attributes | ||
123 | { | ||
124 | get => (WixBundleAttributes)this.Fields[(int)WixBundleSymbolFields.Attributes].AsNumber(); | ||
125 | set => this.Set((int)WixBundleSymbolFields.Attributes, (int)value); | ||
126 | } | ||
127 | |||
128 | public string AboutUrl | ||
129 | { | ||
130 | get => (string)this.Fields[(int)WixBundleSymbolFields.AboutUrl]; | ||
131 | set => this.Set((int)WixBundleSymbolFields.AboutUrl, value); | ||
132 | } | ||
133 | |||
134 | public string HelpTelephone | ||
135 | { | ||
136 | get => (string)this.Fields[(int)WixBundleSymbolFields.HelpTelephone]; | ||
137 | set => this.Set((int)WixBundleSymbolFields.HelpTelephone, value); | ||
138 | } | ||
139 | |||
140 | public string HelpUrl | ||
141 | { | ||
142 | get => (string)this.Fields[(int)WixBundleSymbolFields.HelpUrl]; | ||
143 | set => this.Set((int)WixBundleSymbolFields.HelpUrl, value); | ||
144 | } | ||
145 | |||
146 | public string UpdateUrl | ||
147 | { | ||
148 | get => (string)this.Fields[(int)WixBundleSymbolFields.UpdateUrl]; | ||
149 | set => this.Set((int)WixBundleSymbolFields.UpdateUrl, value); | ||
150 | } | ||
151 | |||
152 | public bool? Compressed | ||
153 | { | ||
154 | get => (bool?)this.Fields[(int)WixBundleSymbolFields.Compressed]; | ||
155 | set => this.Set((int)WixBundleSymbolFields.Compressed, value); | ||
156 | } | ||
157 | |||
158 | public string LogPathVariable | ||
159 | { | ||
160 | get => (string)this.Fields[(int)WixBundleSymbolFields.LogPathVariable]; | ||
161 | set => this.Set((int)WixBundleSymbolFields.LogPathVariable, value); | ||
162 | } | ||
163 | |||
164 | public string LogPrefix | ||
165 | { | ||
166 | get => (string)this.Fields[(int)WixBundleSymbolFields.LogPrefix]; | ||
167 | set => this.Set((int)WixBundleSymbolFields.LogPrefix, value); | ||
168 | } | ||
169 | |||
170 | public string LogExtension | ||
171 | { | ||
172 | get => (string)this.Fields[(int)WixBundleSymbolFields.LogExtension]; | ||
173 | set => this.Set((int)WixBundleSymbolFields.LogExtension, value); | ||
174 | } | ||
175 | |||
176 | public string IconSourceFile | ||
177 | { | ||
178 | get => (string)this.Fields[(int)WixBundleSymbolFields.IconSourceFile]; | ||
179 | set => this.Set((int)WixBundleSymbolFields.IconSourceFile, value); | ||
180 | } | ||
181 | |||
182 | public string SplashScreenSourceFile | ||
183 | { | ||
184 | get => (string)this.Fields[(int)WixBundleSymbolFields.SplashScreenSourceFile]; | ||
185 | set => this.Set((int)WixBundleSymbolFields.SplashScreenSourceFile, value); | ||
186 | } | ||
187 | |||
188 | public string Condition | ||
189 | { | ||
190 | get => (string)this.Fields[(int)WixBundleSymbolFields.Condition]; | ||
191 | set => this.Set((int)WixBundleSymbolFields.Condition, value); | ||
192 | } | ||
193 | |||
194 | public string Tag | ||
195 | { | ||
196 | get => (string)this.Fields[(int)WixBundleSymbolFields.Tag]; | ||
197 | set => this.Set((int)WixBundleSymbolFields.Tag, value); | ||
198 | } | ||
199 | |||
200 | public Platform Platform | ||
201 | { | ||
202 | get => (Platform)this.Fields[(int)WixBundleSymbolFields.Platform].AsNumber(); | ||
203 | set => this.Set((int)WixBundleSymbolFields.Platform, (int)value); | ||
204 | } | ||
205 | |||
206 | public string ParentName | ||
207 | { | ||
208 | get => (string)this.Fields[(int)WixBundleSymbolFields.ParentName]; | ||
209 | set => this.Set((int)WixBundleSymbolFields.ParentName, value); | ||
210 | } | ||
211 | |||
212 | public string BundleId | ||
213 | { | ||
214 | get => (string)this.Fields[(int)WixBundleSymbolFields.BundleId]; | ||
215 | set => this.Set((int)WixBundleSymbolFields.BundleId, value); | ||
216 | } | ||
217 | |||
218 | public string ProviderKey | ||
219 | { | ||
220 | get => (string)this.Fields[(int)WixBundleSymbolFields.ProviderKey]; | ||
221 | set => this.Set((int)WixBundleSymbolFields.ProviderKey, value); | ||
222 | } | ||
223 | |||
224 | public PackagingType DefaultPackagingType => (this.Compressed.HasValue && !this.Compressed.Value) ? PackagingType.External : PackagingType.Embedded; | ||
225 | |||
226 | public bool DisableModify => (this.Attributes & WixBundleAttributes.DisableModify) == WixBundleAttributes.DisableModify; | ||
227 | |||
228 | public bool DisableRemove => (this.Attributes & WixBundleAttributes.DisableRemove) == WixBundleAttributes.DisableRemove; | ||
229 | |||
230 | public bool PerMachine => (this.Attributes & WixBundleAttributes.PerMachine) == WixBundleAttributes.PerMachine; | ||
231 | |||
232 | public bool SingleChangeUninstallButton => (this.Attributes & WixBundleAttributes.SingleChangeUninstallButton) == WixBundleAttributes.SingleChangeUninstallButton; | ||
233 | } | ||
234 | } | ||
diff --git a/src/api/wix/WixToolset.Data/Symbols/WixBundleTagSymbol.cs b/src/api/wix/WixToolset.Data/Symbols/WixBundleTagSymbol.cs new file mode 100644 index 00000000..d550dae0 --- /dev/null +++ b/src/api/wix/WixToolset.Data/Symbols/WixBundleTagSymbol.cs | |||
@@ -0,0 +1,84 @@ | |||
1 | // Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. | ||
2 | |||
3 | namespace WixToolset.Data | ||
4 | { | ||
5 | using WixToolset.Data.Symbols; | ||
6 | |||
7 | public static partial class SymbolDefinitions | ||
8 | { | ||
9 | public static readonly IntermediateSymbolDefinition WixBundleTag = new IntermediateSymbolDefinition( | ||
10 | SymbolDefinitionType.WixBundleTag, | ||
11 | new[] | ||
12 | { | ||
13 | new IntermediateFieldDefinition(nameof(WixBundleTagSymbolFields.Filename), IntermediateFieldType.String), | ||
14 | new IntermediateFieldDefinition(nameof(WixBundleTagSymbolFields.Regid), IntermediateFieldType.String), | ||
15 | new IntermediateFieldDefinition(nameof(WixBundleTagSymbolFields.Name), IntermediateFieldType.String), | ||
16 | new IntermediateFieldDefinition(nameof(WixBundleTagSymbolFields.InstallPath), IntermediateFieldType.String), | ||
17 | new IntermediateFieldDefinition(nameof(WixBundleTagSymbolFields.Attributes), IntermediateFieldType.Number), | ||
18 | new IntermediateFieldDefinition(nameof(WixBundleTagSymbolFields.Xml), IntermediateFieldType.String), | ||
19 | }, | ||
20 | typeof(WixBundleTagSymbol)); | ||
21 | } | ||
22 | } | ||
23 | |||
24 | namespace WixToolset.Data.Symbols | ||
25 | { | ||
26 | public enum WixBundleTagSymbolFields | ||
27 | { | ||
28 | Filename, | ||
29 | Regid, | ||
30 | Name, | ||
31 | InstallPath, | ||
32 | Attributes, | ||
33 | Xml, | ||
34 | } | ||
35 | |||
36 | public class WixBundleTagSymbol : IntermediateSymbol | ||
37 | { | ||
38 | public WixBundleTagSymbol() : base(SymbolDefinitions.WixBundleTag, null, null) | ||
39 | { | ||
40 | } | ||
41 | |||
42 | public WixBundleTagSymbol(SourceLineNumber sourceLineNumber, Identifier id = null) : base(SymbolDefinitions.WixBundleTag, sourceLineNumber, id) | ||
43 | { | ||
44 | } | ||
45 | |||
46 | public IntermediateField this[WixBundleTagSymbolFields index] => this.Fields[(int)index]; | ||
47 | |||
48 | public string Filename | ||
49 | { | ||
50 | get => this.Fields[(int)WixBundleTagSymbolFields.Filename].AsString(); | ||
51 | set => this.Set((int)WixBundleTagSymbolFields.Filename, value); | ||
52 | } | ||
53 | |||
54 | public string Regid | ||
55 | { | ||
56 | get => this.Fields[(int)WixBundleTagSymbolFields.Regid].AsString(); | ||
57 | set => this.Set((int)WixBundleTagSymbolFields.Regid, value); | ||
58 | } | ||
59 | |||
60 | public string Name | ||
61 | { | ||
62 | get => this.Fields[(int)WixBundleTagSymbolFields.Name].AsString(); | ||
63 | set => this.Set((int)WixBundleTagSymbolFields.Name, value); | ||
64 | } | ||
65 | |||
66 | public string InstallPath | ||
67 | { | ||
68 | get => this.Fields[(int)WixBundleTagSymbolFields.InstallPath].AsString(); | ||
69 | set => this.Set((int)WixBundleTagSymbolFields.InstallPath, value); | ||
70 | } | ||
71 | |||
72 | public int Attributes | ||
73 | { | ||
74 | get => this.Fields[(int)WixBundleTagSymbolFields.Attributes].AsNumber(); | ||
75 | set => this.Set((int)WixBundleTagSymbolFields.Attributes, value); | ||
76 | } | ||
77 | |||
78 | public string Xml | ||
79 | { | ||
80 | get => this.Fields[(int)WixBundleTagSymbolFields.Xml].AsString(); | ||
81 | set => this.Set((int)WixBundleTagSymbolFields.Xml, value); | ||
82 | } | ||
83 | } | ||
84 | } | ||
diff --git a/src/api/wix/WixToolset.Data/Symbols/WixBundleUpdateSymbol.cs b/src/api/wix/WixToolset.Data/Symbols/WixBundleUpdateSymbol.cs new file mode 100644 index 00000000..d27bbc32 --- /dev/null +++ b/src/api/wix/WixToolset.Data/Symbols/WixBundleUpdateSymbol.cs | |||
@@ -0,0 +1,52 @@ | |||
1 | // Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. | ||
2 | |||
3 | namespace WixToolset.Data | ||
4 | { | ||
5 | using WixToolset.Data.Symbols; | ||
6 | |||
7 | public static partial class SymbolDefinitions | ||
8 | { | ||
9 | public static readonly IntermediateSymbolDefinition WixBundleUpdate = new IntermediateSymbolDefinition( | ||
10 | SymbolDefinitionType.WixBundleUpdate, | ||
11 | new[] | ||
12 | { | ||
13 | new IntermediateFieldDefinition(nameof(WixBundleUpdateSymbolFields.Location), IntermediateFieldType.String), | ||
14 | new IntermediateFieldDefinition(nameof(WixBundleUpdateSymbolFields.Attributes), IntermediateFieldType.Number), | ||
15 | }, | ||
16 | typeof(WixBundleUpdateSymbol)); | ||
17 | } | ||
18 | } | ||
19 | |||
20 | namespace WixToolset.Data.Symbols | ||
21 | { | ||
22 | public enum WixBundleUpdateSymbolFields | ||
23 | { | ||
24 | Location, | ||
25 | Attributes, | ||
26 | } | ||
27 | |||
28 | public class WixBundleUpdateSymbol : IntermediateSymbol | ||
29 | { | ||
30 | public WixBundleUpdateSymbol() : base(SymbolDefinitions.WixBundleUpdate, null, null) | ||
31 | { | ||
32 | } | ||
33 | |||
34 | public WixBundleUpdateSymbol(SourceLineNumber sourceLineNumber, Identifier id = null) : base(SymbolDefinitions.WixBundleUpdate, sourceLineNumber, id) | ||
35 | { | ||
36 | } | ||
37 | |||
38 | public IntermediateField this[WixBundleUpdateSymbolFields index] => this.Fields[(int)index]; | ||
39 | |||
40 | public string Location | ||
41 | { | ||
42 | get => (string)this.Fields[(int)WixBundleUpdateSymbolFields.Location]; | ||
43 | set => this.Set((int)WixBundleUpdateSymbolFields.Location, value); | ||
44 | } | ||
45 | |||
46 | public int Attributes | ||
47 | { | ||
48 | get => (int)this.Fields[(int)WixBundleUpdateSymbolFields.Attributes]; | ||
49 | set => this.Set((int)WixBundleUpdateSymbolFields.Attributes, value); | ||
50 | } | ||
51 | } | ||
52 | } \ No newline at end of file | ||
diff --git a/src/api/wix/WixToolset.Data/Symbols/WixBundleVariableSymbol.cs b/src/api/wix/WixToolset.Data/Symbols/WixBundleVariableSymbol.cs new file mode 100644 index 00000000..d68ac682 --- /dev/null +++ b/src/api/wix/WixToolset.Data/Symbols/WixBundleVariableSymbol.cs | |||
@@ -0,0 +1,79 @@ | |||
1 | // Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. | ||
2 | |||
3 | namespace WixToolset.Data | ||
4 | { | ||
5 | using WixToolset.Data.Symbols; | ||
6 | |||
7 | public static partial class SymbolDefinitions | ||
8 | { | ||
9 | public static readonly IntermediateSymbolDefinition WixBundleVariable = new IntermediateSymbolDefinition( | ||
10 | SymbolDefinitionType.WixBundleVariable, | ||
11 | new[] | ||
12 | { | ||
13 | new IntermediateFieldDefinition(nameof(WixBundleVariableSymbolFields.Value), IntermediateFieldType.String), | ||
14 | new IntermediateFieldDefinition(nameof(WixBundleVariableSymbolFields.Type), IntermediateFieldType.String), | ||
15 | new IntermediateFieldDefinition(nameof(WixBundleVariableSymbolFields.Hidden), IntermediateFieldType.Bool), | ||
16 | new IntermediateFieldDefinition(nameof(WixBundleVariableSymbolFields.Persisted), IntermediateFieldType.Bool), | ||
17 | }, | ||
18 | typeof(WixBundleVariableSymbol)); | ||
19 | } | ||
20 | } | ||
21 | |||
22 | namespace WixToolset.Data.Symbols | ||
23 | { | ||
24 | using System; | ||
25 | |||
26 | public enum WixBundleVariableSymbolFields | ||
27 | { | ||
28 | Value, | ||
29 | Type, | ||
30 | Hidden, | ||
31 | Persisted, | ||
32 | } | ||
33 | |||
34 | public enum WixBundleVariableType | ||
35 | { | ||
36 | Unknown, | ||
37 | Formatted, | ||
38 | Numeric, | ||
39 | String, | ||
40 | Version, | ||
41 | } | ||
42 | |||
43 | public class WixBundleVariableSymbol : IntermediateSymbol | ||
44 | { | ||
45 | public WixBundleVariableSymbol() : base(SymbolDefinitions.WixBundleVariable, null, null) | ||
46 | { | ||
47 | } | ||
48 | |||
49 | public WixBundleVariableSymbol(SourceLineNumber sourceLineNumber, Identifier id = null) : base(SymbolDefinitions.WixBundleVariable, sourceLineNumber, id) | ||
50 | { | ||
51 | } | ||
52 | |||
53 | public IntermediateField this[WixBundleVariableSymbolFields index] => this.Fields[(int)index]; | ||
54 | |||
55 | public string Value | ||
56 | { | ||
57 | get => (string)this.Fields[(int)WixBundleVariableSymbolFields.Value]; | ||
58 | set => this.Set((int)WixBundleVariableSymbolFields.Value, value); | ||
59 | } | ||
60 | |||
61 | public WixBundleVariableType Type | ||
62 | { | ||
63 | get => Enum.TryParse((string)this.Fields[(int)WixBundleVariableSymbolFields.Type], true, out WixBundleVariableType value) ? value : WixBundleVariableType.Unknown; | ||
64 | set => this.Set((int)WixBundleVariableSymbolFields.Type, value.ToString().ToLowerInvariant()); | ||
65 | } | ||
66 | |||
67 | public bool Hidden | ||
68 | { | ||
69 | get => (bool)this.Fields[(int)WixBundleVariableSymbolFields.Hidden]; | ||
70 | set => this.Set((int)WixBundleVariableSymbolFields.Hidden, value); | ||
71 | } | ||
72 | |||
73 | public bool Persisted | ||
74 | { | ||
75 | get => (bool)this.Fields[(int)WixBundleVariableSymbolFields.Persisted]; | ||
76 | set => this.Set((int)WixBundleVariableSymbolFields.Persisted, value); | ||
77 | } | ||
78 | } | ||
79 | } | ||
diff --git a/src/api/wix/WixToolset.Data/Symbols/WixChainItemSymbol.cs b/src/api/wix/WixToolset.Data/Symbols/WixChainItemSymbol.cs new file mode 100644 index 00000000..c657678c --- /dev/null +++ b/src/api/wix/WixToolset.Data/Symbols/WixChainItemSymbol.cs | |||
@@ -0,0 +1,36 @@ | |||
1 | // Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. | ||
2 | |||
3 | namespace WixToolset.Data | ||
4 | { | ||
5 | using WixToolset.Data.Symbols; | ||
6 | |||
7 | public static partial class SymbolDefinitions | ||
8 | { | ||
9 | public static readonly IntermediateSymbolDefinition WixChainItem = new IntermediateSymbolDefinition( | ||
10 | SymbolDefinitionType.WixChainItem, | ||
11 | new IntermediateFieldDefinition[] | ||
12 | { | ||
13 | }, | ||
14 | typeof(WixChainItemSymbol)); | ||
15 | } | ||
16 | } | ||
17 | |||
18 | namespace WixToolset.Data.Symbols | ||
19 | { | ||
20 | public enum WixChainItemSymbolFields | ||
21 | { | ||
22 | } | ||
23 | |||
24 | public class WixChainItemSymbol : IntermediateSymbol | ||
25 | { | ||
26 | public WixChainItemSymbol() : base(SymbolDefinitions.WixChainItem, null, null) | ||
27 | { | ||
28 | } | ||
29 | |||
30 | public WixChainItemSymbol(SourceLineNumber sourceLineNumber, Identifier id = null) : base(SymbolDefinitions.WixChainItem, sourceLineNumber, id) | ||
31 | { | ||
32 | } | ||
33 | |||
34 | public IntermediateField this[WixChainItemSymbolFields index] => this.Fields[(int)index]; | ||
35 | } | ||
36 | } \ No newline at end of file | ||
diff --git a/src/api/wix/WixToolset.Data/Symbols/WixChainSymbol.cs b/src/api/wix/WixToolset.Data/Symbols/WixChainSymbol.cs new file mode 100644 index 00000000..8ec5fc63 --- /dev/null +++ b/src/api/wix/WixToolset.Data/Symbols/WixChainSymbol.cs | |||
@@ -0,0 +1,61 @@ | |||
1 | // Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. | ||
2 | |||
3 | namespace WixToolset.Data | ||
4 | { | ||
5 | using WixToolset.Data.Symbols; | ||
6 | |||
7 | public static partial class SymbolDefinitions | ||
8 | { | ||
9 | public static readonly IntermediateSymbolDefinition WixChain = new IntermediateSymbolDefinition( | ||
10 | SymbolDefinitionType.WixChain, | ||
11 | new[] | ||
12 | { | ||
13 | new IntermediateFieldDefinition(nameof(WixChainSymbolFields.Attributes), IntermediateFieldType.Number), | ||
14 | }, | ||
15 | typeof(WixChainSymbol)); | ||
16 | } | ||
17 | } | ||
18 | |||
19 | namespace WixToolset.Data.Symbols | ||
20 | { | ||
21 | using System; | ||
22 | |||
23 | public enum WixChainSymbolFields | ||
24 | { | ||
25 | Attributes, | ||
26 | } | ||
27 | |||
28 | [Flags] | ||
29 | public enum WixChainAttributes | ||
30 | { | ||
31 | None = 0x0, | ||
32 | DisableRollback = 0x1, | ||
33 | DisableSystemRestore = 0x2, | ||
34 | ParallelCache = 0x4, | ||
35 | } | ||
36 | |||
37 | public class WixChainSymbol : IntermediateSymbol | ||
38 | { | ||
39 | public WixChainSymbol() : base(SymbolDefinitions.WixChain, null, null) | ||
40 | { | ||
41 | } | ||
42 | |||
43 | public WixChainSymbol(SourceLineNumber sourceLineNumber, Identifier id = null) : base(SymbolDefinitions.WixChain, sourceLineNumber, id) | ||
44 | { | ||
45 | } | ||
46 | |||
47 | public IntermediateField this[WixChainSymbolFields index] => this.Fields[(int)index]; | ||
48 | |||
49 | public WixChainAttributes Attributes | ||
50 | { | ||
51 | get => (WixChainAttributes)(int)this.Fields[(int)WixChainSymbolFields.Attributes]; | ||
52 | set => this.Set((int)WixChainSymbolFields.Attributes, (int)value); | ||
53 | } | ||
54 | |||
55 | public bool DisableRollback => (this.Attributes & WixChainAttributes.DisableRollback) == WixChainAttributes.DisableRollback; | ||
56 | |||
57 | public bool DisableSystemRestore => (this.Attributes & WixChainAttributes.DisableSystemRestore) == WixChainAttributes.DisableSystemRestore; | ||
58 | |||
59 | public bool ParallelCache => (this.Attributes & WixChainAttributes.ParallelCache) == WixChainAttributes.ParallelCache; | ||
60 | } | ||
61 | } | ||
diff --git a/src/api/wix/WixToolset.Data/Symbols/WixComplexReferenceSymbol.cs b/src/api/wix/WixToolset.Data/Symbols/WixComplexReferenceSymbol.cs new file mode 100644 index 00000000..3db9bcd5 --- /dev/null +++ b/src/api/wix/WixToolset.Data/Symbols/WixComplexReferenceSymbol.cs | |||
@@ -0,0 +1,86 @@ | |||
1 | // Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. | ||
2 | |||
3 | namespace WixToolset.Data | ||
4 | { | ||
5 | using WixToolset.Data.Symbols; | ||
6 | |||
7 | public static partial class SymbolDefinitions | ||
8 | { | ||
9 | public static readonly IntermediateSymbolDefinition WixComplexReference = new IntermediateSymbolDefinition( | ||
10 | SymbolDefinitionType.WixComplexReference, | ||
11 | new[] | ||
12 | { | ||
13 | new IntermediateFieldDefinition(nameof(WixComplexReferenceSymbolFields.Parent), IntermediateFieldType.String), | ||
14 | new IntermediateFieldDefinition(nameof(WixComplexReferenceSymbolFields.ParentAttributes), IntermediateFieldType.Number), | ||
15 | new IntermediateFieldDefinition(nameof(WixComplexReferenceSymbolFields.ParentLanguage), IntermediateFieldType.String), | ||
16 | new IntermediateFieldDefinition(nameof(WixComplexReferenceSymbolFields.Child), IntermediateFieldType.String), | ||
17 | new IntermediateFieldDefinition(nameof(WixComplexReferenceSymbolFields.ChildAttributes), IntermediateFieldType.Number), | ||
18 | new IntermediateFieldDefinition(nameof(WixComplexReferenceSymbolFields.Attributes), IntermediateFieldType.Bool), | ||
19 | }, | ||
20 | typeof(WixComplexReferenceSymbol)); | ||
21 | } | ||
22 | } | ||
23 | |||
24 | namespace WixToolset.Data.Symbols | ||
25 | { | ||
26 | using System; | ||
27 | |||
28 | public enum WixComplexReferenceSymbolFields | ||
29 | { | ||
30 | Parent, | ||
31 | ParentAttributes, | ||
32 | ParentLanguage, | ||
33 | Child, | ||
34 | ChildAttributes, | ||
35 | Attributes, | ||
36 | } | ||
37 | |||
38 | public class WixComplexReferenceSymbol : IntermediateSymbol | ||
39 | { | ||
40 | public WixComplexReferenceSymbol() : base(SymbolDefinitions.WixComplexReference, null, null) | ||
41 | { | ||
42 | } | ||
43 | |||
44 | public WixComplexReferenceSymbol(SourceLineNumber sourceLineNumber, Identifier id = null) : base(SymbolDefinitions.WixComplexReference, sourceLineNumber, id) | ||
45 | { | ||
46 | } | ||
47 | |||
48 | public IntermediateField this[WixComplexReferenceSymbolFields index] => this.Fields[(int)index]; | ||
49 | |||
50 | public string Parent | ||
51 | { | ||
52 | get => (string)this.Fields[(int)WixComplexReferenceSymbolFields.Parent]; | ||
53 | set => this.Set((int)WixComplexReferenceSymbolFields.Parent, value); | ||
54 | } | ||
55 | |||
56 | public ComplexReferenceParentType ParentType | ||
57 | { | ||
58 | get => (ComplexReferenceParentType)this.Fields[(int)WixComplexReferenceSymbolFields.ParentAttributes].AsNumber(); | ||
59 | set => this.Set((int)WixComplexReferenceSymbolFields.ParentAttributes, (int)value); | ||
60 | } | ||
61 | |||
62 | public string ParentLanguage | ||
63 | { | ||
64 | get => (string)this.Fields[(int)WixComplexReferenceSymbolFields.ParentLanguage]; | ||
65 | set => this.Set((int)WixComplexReferenceSymbolFields.ParentLanguage, value); | ||
66 | } | ||
67 | |||
68 | public string Child | ||
69 | { | ||
70 | get => (string)this.Fields[(int)WixComplexReferenceSymbolFields.Child]; | ||
71 | set => this.Set((int)WixComplexReferenceSymbolFields.Child, value); | ||
72 | } | ||
73 | |||
74 | public ComplexReferenceChildType ChildType | ||
75 | { | ||
76 | get => (ComplexReferenceChildType)this.Fields[(int)WixComplexReferenceSymbolFields.ChildAttributes].AsNumber(); | ||
77 | set => this.Set((int)WixComplexReferenceSymbolFields.ChildAttributes, (int)value); | ||
78 | } | ||
79 | |||
80 | public bool IsPrimary | ||
81 | { | ||
82 | get => (bool)this.Fields[(int)WixComplexReferenceSymbolFields.Attributes]; | ||
83 | set => this.Set((int)WixComplexReferenceSymbolFields.Attributes, value); | ||
84 | } | ||
85 | } | ||
86 | } \ No newline at end of file | ||
diff --git a/src/api/wix/WixToolset.Data/Symbols/WixComponentGroupSymbol.cs b/src/api/wix/WixToolset.Data/Symbols/WixComponentGroupSymbol.cs new file mode 100644 index 00000000..4dd5a3b5 --- /dev/null +++ b/src/api/wix/WixToolset.Data/Symbols/WixComponentGroupSymbol.cs | |||
@@ -0,0 +1,44 @@ | |||
1 | // Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. | ||
2 | |||
3 | namespace WixToolset.Data | ||
4 | { | ||
5 | using WixToolset.Data.Symbols; | ||
6 | |||
7 | public static partial class SymbolDefinitions | ||
8 | { | ||
9 | public static readonly IntermediateSymbolDefinition WixComponentGroup = new IntermediateSymbolDefinition( | ||
10 | SymbolDefinitionType.WixComponentGroup, | ||
11 | new[] | ||
12 | { | ||
13 | new IntermediateFieldDefinition(nameof(WixComponentGroupSymbolFields.WixComponentGroup), IntermediateFieldType.String), | ||
14 | }, | ||
15 | typeof(WixComponentGroupSymbol)); | ||
16 | } | ||
17 | } | ||
18 | |||
19 | namespace WixToolset.Data.Symbols | ||
20 | { | ||
21 | public enum WixComponentGroupSymbolFields | ||
22 | { | ||
23 | WixComponentGroup, | ||
24 | } | ||
25 | |||
26 | public class WixComponentGroupSymbol : IntermediateSymbol | ||
27 | { | ||
28 | public WixComponentGroupSymbol() : base(SymbolDefinitions.WixComponentGroup, null, null) | ||
29 | { | ||
30 | } | ||
31 | |||
32 | public WixComponentGroupSymbol(SourceLineNumber sourceLineNumber, Identifier id = null) : base(SymbolDefinitions.WixComponentGroup, sourceLineNumber, id) | ||
33 | { | ||
34 | } | ||
35 | |||
36 | public IntermediateField this[WixComponentGroupSymbolFields index] => this.Fields[(int)index]; | ||
37 | |||
38 | public string WixComponentGroup | ||
39 | { | ||
40 | get => (string)this.Fields[(int)WixComponentGroupSymbolFields.WixComponentGroup]; | ||
41 | set => this.Set((int)WixComponentGroupSymbolFields.WixComponentGroup, value); | ||
42 | } | ||
43 | } | ||
44 | } \ No newline at end of file | ||
diff --git a/src/api/wix/WixToolset.Data/Symbols/WixComponentSearchSymbol.cs b/src/api/wix/WixToolset.Data/Symbols/WixComponentSearchSymbol.cs new file mode 100644 index 00000000..63f7179f --- /dev/null +++ b/src/api/wix/WixToolset.Data/Symbols/WixComponentSearchSymbol.cs | |||
@@ -0,0 +1,70 @@ | |||
1 | // Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. | ||
2 | |||
3 | namespace WixToolset.Data | ||
4 | { | ||
5 | using WixToolset.Data.Symbols; | ||
6 | |||
7 | public static partial class SymbolDefinitions | ||
8 | { | ||
9 | public static readonly IntermediateSymbolDefinition WixComponentSearch = new IntermediateSymbolDefinition( | ||
10 | SymbolDefinitionType.WixComponentSearch, | ||
11 | new[] | ||
12 | { | ||
13 | new IntermediateFieldDefinition(nameof(WixComponentSearchSymbolFields.Guid), IntermediateFieldType.String), | ||
14 | new IntermediateFieldDefinition(nameof(WixComponentSearchSymbolFields.ProductCode), IntermediateFieldType.String), | ||
15 | new IntermediateFieldDefinition(nameof(WixComponentSearchSymbolFields.Attributes), IntermediateFieldType.Number), | ||
16 | }, | ||
17 | typeof(WixComponentSearchSymbol)); | ||
18 | } | ||
19 | } | ||
20 | |||
21 | namespace WixToolset.Data.Symbols | ||
22 | { | ||
23 | using System; | ||
24 | |||
25 | public enum WixComponentSearchSymbolFields | ||
26 | { | ||
27 | Guid, | ||
28 | ProductCode, | ||
29 | Attributes, | ||
30 | } | ||
31 | |||
32 | [Flags] | ||
33 | public enum WixComponentSearchAttributes | ||
34 | { | ||
35 | KeyPath = 0x1, | ||
36 | State = 0x2, | ||
37 | WantDirectory = 0x4, | ||
38 | } | ||
39 | |||
40 | public class WixComponentSearchSymbol : IntermediateSymbol | ||
41 | { | ||
42 | public WixComponentSearchSymbol() : base(SymbolDefinitions.WixComponentSearch, null, null) | ||
43 | { | ||
44 | } | ||
45 | |||
46 | public WixComponentSearchSymbol(SourceLineNumber sourceLineNumber, Identifier id = null) : base(SymbolDefinitions.WixComponentSearch, sourceLineNumber, id) | ||
47 | { | ||
48 | } | ||
49 | |||
50 | public IntermediateField this[WixComponentSearchSymbolFields index] => this.Fields[(int)index]; | ||
51 | |||
52 | public string Guid | ||
53 | { | ||
54 | get => (string)this.Fields[(int)WixComponentSearchSymbolFields.Guid]; | ||
55 | set => this.Set((int)WixComponentSearchSymbolFields.Guid, value); | ||
56 | } | ||
57 | |||
58 | public string ProductCode | ||
59 | { | ||
60 | get => (string)this.Fields[(int)WixComponentSearchSymbolFields.ProductCode]; | ||
61 | set => this.Set((int)WixComponentSearchSymbolFields.ProductCode, value); | ||
62 | } | ||
63 | |||
64 | public WixComponentSearchAttributes Attributes | ||
65 | { | ||
66 | get => (WixComponentSearchAttributes)this.Fields[(int)WixComponentSearchSymbolFields.Attributes].AsNumber(); | ||
67 | set => this.Set((int)WixComponentSearchSymbolFields.Attributes, (int)value); | ||
68 | } | ||
69 | } | ||
70 | } | ||
diff --git a/src/api/wix/WixToolset.Data/Symbols/WixCustomTableCellSymbol.cs b/src/api/wix/WixToolset.Data/Symbols/WixCustomTableCellSymbol.cs new file mode 100644 index 00000000..b45cda43 --- /dev/null +++ b/src/api/wix/WixToolset.Data/Symbols/WixCustomTableCellSymbol.cs | |||
@@ -0,0 +1,68 @@ | |||
1 | // Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. | ||
2 | |||
3 | namespace WixToolset.Data | ||
4 | { | ||
5 | using WixToolset.Data.Symbols; | ||
6 | |||
7 | public static partial class SymbolDefinitions | ||
8 | { | ||
9 | public static readonly IntermediateSymbolDefinition WixCustomTableCell = new IntermediateSymbolDefinition( | ||
10 | SymbolDefinitionType.WixCustomTableCell, | ||
11 | new[] | ||
12 | { | ||
13 | new IntermediateFieldDefinition(nameof(WixCustomTableCellSymbolFields.TableRef), IntermediateFieldType.String), | ||
14 | new IntermediateFieldDefinition(nameof(WixCustomTableCellSymbolFields.ColumnRef), IntermediateFieldType.String), | ||
15 | new IntermediateFieldDefinition(nameof(WixCustomTableCellSymbolFields.RowId), IntermediateFieldType.String), | ||
16 | new IntermediateFieldDefinition(nameof(WixCustomTableCellSymbolFields.Data), IntermediateFieldType.String), | ||
17 | }, | ||
18 | typeof(WixCustomTableCellSymbol)); | ||
19 | } | ||
20 | } | ||
21 | |||
22 | namespace WixToolset.Data.Symbols | ||
23 | { | ||
24 | public enum WixCustomTableCellSymbolFields | ||
25 | { | ||
26 | TableRef, | ||
27 | ColumnRef, | ||
28 | RowId, | ||
29 | Data, | ||
30 | } | ||
31 | |||
32 | public class WixCustomTableCellSymbol : IntermediateSymbol | ||
33 | { | ||
34 | public WixCustomTableCellSymbol() : base(SymbolDefinitions.WixCustomTableCell, null, null) | ||
35 | { | ||
36 | } | ||
37 | |||
38 | public WixCustomTableCellSymbol(SourceLineNumber sourceLineNumber, Identifier id = null) : base(SymbolDefinitions.WixCustomTableCell, sourceLineNumber, id) | ||
39 | { | ||
40 | } | ||
41 | |||
42 | public IntermediateField this[WixCustomTableCellSymbolFields index] => this.Fields[(int)index]; | ||
43 | |||
44 | public string TableRef | ||
45 | { | ||
46 | get => (string)this.Fields[(int)WixCustomTableCellSymbolFields.TableRef]; | ||
47 | set => this.Set((int)WixCustomTableCellSymbolFields.TableRef, value); | ||
48 | } | ||
49 | |||
50 | public string ColumnRef | ||
51 | { | ||
52 | get => (string)this.Fields[(int)WixCustomTableCellSymbolFields.ColumnRef]; | ||
53 | set => this.Set((int)WixCustomTableCellSymbolFields.ColumnRef, value); | ||
54 | } | ||
55 | |||
56 | public string RowId | ||
57 | { | ||
58 | get => (string)this.Fields[(int)WixCustomTableCellSymbolFields.RowId]; | ||
59 | set => this.Set((int)WixCustomTableCellSymbolFields.RowId, value); | ||
60 | } | ||
61 | |||
62 | public string Data | ||
63 | { | ||
64 | get => (string)this.Fields[(int)WixCustomTableCellSymbolFields.Data]; | ||
65 | set => this.Set((int)WixCustomTableCellSymbolFields.Data, value); | ||
66 | } | ||
67 | } | ||
68 | } | ||
diff --git a/src/api/wix/WixToolset.Data/Symbols/WixCustomTableColumnSymbol.cs b/src/api/wix/WixToolset.Data/Symbols/WixCustomTableColumnSymbol.cs new file mode 100644 index 00000000..9ae2a904 --- /dev/null +++ b/src/api/wix/WixToolset.Data/Symbols/WixCustomTableColumnSymbol.cs | |||
@@ -0,0 +1,203 @@ | |||
1 | // Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. | ||
2 | |||
3 | namespace WixToolset.Data | ||
4 | { | ||
5 | using WixToolset.Data.Symbols; | ||
6 | |||
7 | public static partial class SymbolDefinitions | ||
8 | { | ||
9 | public static readonly IntermediateSymbolDefinition WixCustomTableColumn = new IntermediateSymbolDefinition( | ||
10 | SymbolDefinitionType.WixCustomTableColumn, | ||
11 | new[] | ||
12 | { | ||
13 | new IntermediateFieldDefinition(nameof(WixCustomTableColumnSymbolFields.TableRef), IntermediateFieldType.String), | ||
14 | new IntermediateFieldDefinition(nameof(WixCustomTableColumnSymbolFields.Name), IntermediateFieldType.String), | ||
15 | new IntermediateFieldDefinition(nameof(WixCustomTableColumnSymbolFields.Type), IntermediateFieldType.String), | ||
16 | new IntermediateFieldDefinition(nameof(WixCustomTableColumnSymbolFields.Attributes), IntermediateFieldType.Number), | ||
17 | new IntermediateFieldDefinition(nameof(WixCustomTableColumnSymbolFields.Width), IntermediateFieldType.Number), | ||
18 | new IntermediateFieldDefinition(nameof(WixCustomTableColumnSymbolFields.MinValue), IntermediateFieldType.String), | ||
19 | new IntermediateFieldDefinition(nameof(WixCustomTableColumnSymbolFields.MaxValue), IntermediateFieldType.String), | ||
20 | new IntermediateFieldDefinition(nameof(WixCustomTableColumnSymbolFields.KeyTable), IntermediateFieldType.String), | ||
21 | new IntermediateFieldDefinition(nameof(WixCustomTableColumnSymbolFields.KeyColumn), IntermediateFieldType.String), | ||
22 | new IntermediateFieldDefinition(nameof(WixCustomTableColumnSymbolFields.Category), IntermediateFieldType.String), | ||
23 | new IntermediateFieldDefinition(nameof(WixCustomTableColumnSymbolFields.Set), IntermediateFieldType.String), | ||
24 | new IntermediateFieldDefinition(nameof(WixCustomTableColumnSymbolFields.Description), IntermediateFieldType.String), | ||
25 | new IntermediateFieldDefinition(nameof(WixCustomTableColumnSymbolFields.Modularize), IntermediateFieldType.Number) | ||
26 | }, | ||
27 | typeof(WixCustomTableColumnSymbol)); | ||
28 | } | ||
29 | } | ||
30 | |||
31 | namespace WixToolset.Data.Symbols | ||
32 | { | ||
33 | using System; | ||
34 | |||
35 | public enum WixCustomTableColumnSymbolFields | ||
36 | { | ||
37 | TableRef, | ||
38 | Name, | ||
39 | Type, | ||
40 | Attributes, | ||
41 | Width, | ||
42 | MinValue, | ||
43 | MaxValue, | ||
44 | KeyTable, | ||
45 | KeyColumn, | ||
46 | Category, | ||
47 | Set, | ||
48 | Description, | ||
49 | Modularize, | ||
50 | } | ||
51 | |||
52 | [Flags] | ||
53 | public enum WixCustomTableColumnSymbolAttributes | ||
54 | { | ||
55 | None = 0x0, | ||
56 | PrimaryKey = 0x1, | ||
57 | Localizable = 0x2, | ||
58 | Nullable = 0x4, | ||
59 | Unreal = 0x8, | ||
60 | } | ||
61 | |||
62 | public enum WixCustomTableColumnCategoryType | ||
63 | { | ||
64 | Text, | ||
65 | UpperCase, | ||
66 | LowerCase, | ||
67 | Integer, | ||
68 | DoubleInteger, | ||
69 | TimeDate, | ||
70 | Identifier, | ||
71 | Property, | ||
72 | Filename, | ||
73 | WildCardFilename, | ||
74 | Path, | ||
75 | Paths, | ||
76 | AnyPath, | ||
77 | DefaultDir, | ||
78 | RegPath, | ||
79 | Formatted, | ||
80 | FormattedSddl, | ||
81 | Template, | ||
82 | Condition, | ||
83 | Guid, | ||
84 | Version, | ||
85 | Language, | ||
86 | Binary, | ||
87 | CustomSource, | ||
88 | Cabinet, | ||
89 | Shortcut, | ||
90 | } | ||
91 | |||
92 | public enum WixCustomTableColumnModularizeType | ||
93 | { | ||
94 | None, | ||
95 | Column, | ||
96 | CompanionFile, | ||
97 | Condition, | ||
98 | ControlEventArgument, | ||
99 | ControlText, | ||
100 | Icon, | ||
101 | Property, | ||
102 | SemicolonDelimited, | ||
103 | } | ||
104 | |||
105 | public class WixCustomTableColumnSymbol : IntermediateSymbol | ||
106 | { | ||
107 | public WixCustomTableColumnSymbol() : base(SymbolDefinitions.WixCustomTableColumn, null, null) | ||
108 | { | ||
109 | } | ||
110 | |||
111 | public WixCustomTableColumnSymbol(SourceLineNumber sourceLineNumber, Identifier id = null) : base(SymbolDefinitions.WixCustomTableColumn, sourceLineNumber, id) | ||
112 | { | ||
113 | } | ||
114 | |||
115 | public IntermediateField this[WixCustomTableColumnSymbolFields index] => this.Fields[(int)index]; | ||
116 | |||
117 | public string TableRef | ||
118 | { | ||
119 | get => (string)this.Fields[(int)WixCustomTableColumnSymbolFields.TableRef]; | ||
120 | set => this.Set((int)WixCustomTableColumnSymbolFields.TableRef, value); | ||
121 | } | ||
122 | |||
123 | public string Name | ||
124 | { | ||
125 | get => (string)this.Fields[(int)WixCustomTableColumnSymbolFields.Name]; | ||
126 | set => this.Set((int)WixCustomTableColumnSymbolFields.Name, value); | ||
127 | } | ||
128 | |||
129 | public IntermediateFieldType Type | ||
130 | { | ||
131 | get => (IntermediateFieldType)this.Fields[(int)WixCustomTableColumnSymbolFields.Type].AsNumber(); | ||
132 | set => this.Set((int)WixCustomTableColumnSymbolFields.Type, (int)value); | ||
133 | } | ||
134 | |||
135 | public WixCustomTableColumnSymbolAttributes Attributes | ||
136 | { | ||
137 | get => (WixCustomTableColumnSymbolAttributes)this.Fields[(int)WixCustomTableColumnSymbolFields.Attributes].AsNumber(); | ||
138 | set => this.Set((int)WixCustomTableColumnSymbolFields.Attributes, (int)value); | ||
139 | } | ||
140 | |||
141 | public int Width | ||
142 | { | ||
143 | get => (int)this.Fields[(int)WixCustomTableColumnSymbolFields.Width]; | ||
144 | set => this.Set((int)WixCustomTableColumnSymbolFields.Width, value); | ||
145 | } | ||
146 | |||
147 | public long? MinValue | ||
148 | { | ||
149 | get => (long?)this.Fields[(int)WixCustomTableColumnSymbolFields.MinValue]; | ||
150 | set => this.Set((int)WixCustomTableColumnSymbolFields.MinValue, value); | ||
151 | } | ||
152 | |||
153 | public long? MaxValue | ||
154 | { | ||
155 | get => (long?)this.Fields[(int)WixCustomTableColumnSymbolFields.MaxValue]; | ||
156 | set => this.Set((int)WixCustomTableColumnSymbolFields.MaxValue, value); | ||
157 | } | ||
158 | |||
159 | public string KeyTable | ||
160 | { | ||
161 | get => (string)this.Fields[(int)WixCustomTableColumnSymbolFields.KeyTable]; | ||
162 | set => this.Set((int)WixCustomTableColumnSymbolFields.KeyTable, value); | ||
163 | } | ||
164 | |||
165 | public int? KeyColumn | ||
166 | { | ||
167 | get => (int?)this.Fields[(int)WixCustomTableColumnSymbolFields.KeyColumn]; | ||
168 | set => this.Set((int)WixCustomTableColumnSymbolFields.KeyColumn, value); | ||
169 | } | ||
170 | |||
171 | public WixCustomTableColumnCategoryType? Category | ||
172 | { | ||
173 | get => (WixCustomTableColumnCategoryType?)this.Fields[(int)WixCustomTableColumnSymbolFields.Category].AsNullableNumber(); | ||
174 | set => this.Set((int)WixCustomTableColumnSymbolFields.Category, (int?)value); | ||
175 | } | ||
176 | |||
177 | public string Set | ||
178 | { | ||
179 | get => (string)this.Fields[(int)WixCustomTableColumnSymbolFields.Set]; | ||
180 | set => this.Set((int)WixCustomTableColumnSymbolFields.Set, value); | ||
181 | } | ||
182 | |||
183 | public string Description | ||
184 | { | ||
185 | get => (string)this.Fields[(int)WixCustomTableColumnSymbolFields.Description]; | ||
186 | set => this.Set((int)WixCustomTableColumnSymbolFields.Description, value); | ||
187 | } | ||
188 | |||
189 | public WixCustomTableColumnModularizeType? Modularize | ||
190 | { | ||
191 | get => (WixCustomTableColumnModularizeType?)this.Fields[(int)WixCustomTableColumnSymbolFields.Modularize].AsNullableNumber(); | ||
192 | set => this.Set((int)WixCustomTableColumnSymbolFields.Modularize, (int?)value); | ||
193 | } | ||
194 | |||
195 | public bool PrimaryKey => (this.Attributes & WixCustomTableColumnSymbolAttributes.PrimaryKey) == WixCustomTableColumnSymbolAttributes.PrimaryKey; | ||
196 | |||
197 | public bool Localizable => (this.Attributes & WixCustomTableColumnSymbolAttributes.Localizable) == WixCustomTableColumnSymbolAttributes.Localizable; | ||
198 | |||
199 | public bool Nullable => (this.Attributes & WixCustomTableColumnSymbolAttributes.Nullable) == WixCustomTableColumnSymbolAttributes.Nullable; | ||
200 | |||
201 | public bool Unreal => (this.Attributes & WixCustomTableColumnSymbolAttributes.Unreal) == WixCustomTableColumnSymbolAttributes.Unreal; | ||
202 | } | ||
203 | } | ||
diff --git a/src/api/wix/WixToolset.Data/Symbols/WixCustomTableSymbol.cs b/src/api/wix/WixToolset.Data/Symbols/WixCustomTableSymbol.cs new file mode 100644 index 00000000..af731443 --- /dev/null +++ b/src/api/wix/WixToolset.Data/Symbols/WixCustomTableSymbol.cs | |||
@@ -0,0 +1,56 @@ | |||
1 | // Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. | ||
2 | |||
3 | namespace WixToolset.Data | ||
4 | { | ||
5 | using WixToolset.Data.Symbols; | ||
6 | |||
7 | public static partial class SymbolDefinitions | ||
8 | { | ||
9 | public static readonly IntermediateSymbolDefinition WixCustomTable = new IntermediateSymbolDefinition( | ||
10 | SymbolDefinitionType.WixCustomTable, | ||
11 | new[] | ||
12 | { | ||
13 | new IntermediateFieldDefinition(nameof(WixCustomTableSymbolFields.ColumnNames), IntermediateFieldType.String), | ||
14 | new IntermediateFieldDefinition(nameof(WixCustomTableSymbolFields.Unreal), IntermediateFieldType.Bool), | ||
15 | }, | ||
16 | typeof(WixCustomTableSymbol)); | ||
17 | } | ||
18 | } | ||
19 | |||
20 | namespace WixToolset.Data.Symbols | ||
21 | { | ||
22 | public enum WixCustomTableSymbolFields | ||
23 | { | ||
24 | ColumnNames, | ||
25 | Unreal, | ||
26 | } | ||
27 | |||
28 | public class WixCustomTableSymbol : IntermediateSymbol | ||
29 | { | ||
30 | public const char ColumnNamesSeparator = '\x85'; | ||
31 | |||
32 | public WixCustomTableSymbol() : base(SymbolDefinitions.WixCustomTable, null, null) | ||
33 | { | ||
34 | } | ||
35 | |||
36 | public WixCustomTableSymbol(SourceLineNumber sourceLineNumber, Identifier id = null) : base(SymbolDefinitions.WixCustomTable, sourceLineNumber, id) | ||
37 | { | ||
38 | } | ||
39 | |||
40 | public IntermediateField this[WixCustomTableSymbolFields index] => this.Fields[(int)index]; | ||
41 | |||
42 | public string ColumnNames | ||
43 | { | ||
44 | get => (string)this.Fields[(int)WixCustomTableSymbolFields.ColumnNames]; | ||
45 | set => this.Set((int)WixCustomTableSymbolFields.ColumnNames, value); | ||
46 | } | ||
47 | |||
48 | public bool Unreal | ||
49 | { | ||
50 | get => (bool)this.Fields[(int)WixCustomTableSymbolFields.Unreal]; | ||
51 | set => this.Set((int)WixCustomTableSymbolFields.Unreal, value); | ||
52 | } | ||
53 | |||
54 | public string[] ColumnNamesSeparated => this.ColumnNames.Split(ColumnNamesSeparator); | ||
55 | } | ||
56 | } | ||
diff --git a/src/api/wix/WixToolset.Data/Symbols/WixDeltaPatchFileSymbol.cs b/src/api/wix/WixToolset.Data/Symbols/WixDeltaPatchFileSymbol.cs new file mode 100644 index 00000000..77203b03 --- /dev/null +++ b/src/api/wix/WixToolset.Data/Symbols/WixDeltaPatchFileSymbol.cs | |||
@@ -0,0 +1,84 @@ | |||
1 | // Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. | ||
2 | |||
3 | namespace WixToolset.Data | ||
4 | { | ||
5 | using WixToolset.Data.Symbols; | ||
6 | |||
7 | public static partial class SymbolDefinitions | ||
8 | { | ||
9 | public static readonly IntermediateSymbolDefinition WixDeltaPatchFile = new IntermediateSymbolDefinition( | ||
10 | SymbolDefinitionType.WixDeltaPatchFile, | ||
11 | new[] | ||
12 | { | ||
13 | new IntermediateFieldDefinition(nameof(WixDeltaPatchFileSymbolFields.FileRef), IntermediateFieldType.String), | ||
14 | new IntermediateFieldDefinition(nameof(WixDeltaPatchFileSymbolFields.RetainLengths), IntermediateFieldType.String), | ||
15 | new IntermediateFieldDefinition(nameof(WixDeltaPatchFileSymbolFields.IgnoreOffsets), IntermediateFieldType.String), | ||
16 | new IntermediateFieldDefinition(nameof(WixDeltaPatchFileSymbolFields.IgnoreLengths), IntermediateFieldType.String), | ||
17 | new IntermediateFieldDefinition(nameof(WixDeltaPatchFileSymbolFields.RetainOffsets), IntermediateFieldType.String), | ||
18 | new IntermediateFieldDefinition(nameof(WixDeltaPatchFileSymbolFields.SymbolPaths), IntermediateFieldType.String), | ||
19 | }, | ||
20 | typeof(WixDeltaPatchFileSymbol)); | ||
21 | } | ||
22 | } | ||
23 | |||
24 | namespace WixToolset.Data.Symbols | ||
25 | { | ||
26 | public enum WixDeltaPatchFileSymbolFields | ||
27 | { | ||
28 | FileRef, | ||
29 | RetainLengths, | ||
30 | IgnoreOffsets, | ||
31 | IgnoreLengths, | ||
32 | RetainOffsets, | ||
33 | SymbolPaths, | ||
34 | } | ||
35 | |||
36 | public class WixDeltaPatchFileSymbol : IntermediateSymbol | ||
37 | { | ||
38 | public WixDeltaPatchFileSymbol() : base(SymbolDefinitions.WixDeltaPatchFile, null, null) | ||
39 | { | ||
40 | } | ||
41 | |||
42 | public WixDeltaPatchFileSymbol(SourceLineNumber sourceLineNumber, Identifier id = null) : base(SymbolDefinitions.WixDeltaPatchFile, sourceLineNumber, id) | ||
43 | { | ||
44 | } | ||
45 | |||
46 | public IntermediateField this[WixDeltaPatchFileSymbolFields index] => this.Fields[(int)index]; | ||
47 | |||
48 | public string FileRef | ||
49 | { | ||
50 | get => (string)this.Fields[(int)WixDeltaPatchFileSymbolFields.FileRef]; | ||
51 | set => this.Set((int)WixDeltaPatchFileSymbolFields.FileRef, value); | ||
52 | } | ||
53 | |||
54 | public string RetainLengths | ||
55 | { | ||
56 | get => (string)this.Fields[(int)WixDeltaPatchFileSymbolFields.RetainLengths]; | ||
57 | set => this.Set((int)WixDeltaPatchFileSymbolFields.RetainLengths, value); | ||
58 | } | ||
59 | |||
60 | public string IgnoreOffsets | ||
61 | { | ||
62 | get => (string)this.Fields[(int)WixDeltaPatchFileSymbolFields.IgnoreOffsets]; | ||
63 | set => this.Set((int)WixDeltaPatchFileSymbolFields.IgnoreOffsets, value); | ||
64 | } | ||
65 | |||
66 | public string IgnoreLengths | ||
67 | { | ||
68 | get => (string)this.Fields[(int)WixDeltaPatchFileSymbolFields.IgnoreLengths]; | ||
69 | set => this.Set((int)WixDeltaPatchFileSymbolFields.IgnoreLengths, value); | ||
70 | } | ||
71 | |||
72 | public string RetainOffsets | ||
73 | { | ||
74 | get => (string)this.Fields[(int)WixDeltaPatchFileSymbolFields.RetainOffsets]; | ||
75 | set => this.Set((int)WixDeltaPatchFileSymbolFields.RetainOffsets, value); | ||
76 | } | ||
77 | |||
78 | public string SymbolPaths | ||
79 | { | ||
80 | get => (string)this.Fields[(int)WixDeltaPatchFileSymbolFields.SymbolPaths]; | ||
81 | set => this.Set((int)WixDeltaPatchFileSymbolFields.SymbolPaths, value); | ||
82 | } | ||
83 | } | ||
84 | } \ No newline at end of file | ||
diff --git a/src/api/wix/WixToolset.Data/Symbols/WixDeltaPatchSymbolPathsSymbol.cs b/src/api/wix/WixToolset.Data/Symbols/WixDeltaPatchSymbolPathsSymbol.cs new file mode 100644 index 00000000..20f30da4 --- /dev/null +++ b/src/api/wix/WixToolset.Data/Symbols/WixDeltaPatchSymbolPathsSymbol.cs | |||
@@ -0,0 +1,73 @@ | |||
1 | // Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. | ||
2 | |||
3 | namespace WixToolset.Data | ||
4 | { | ||
5 | using WixToolset.Data.Symbols; | ||
6 | |||
7 | public static partial class SymbolDefinitions | ||
8 | { | ||
9 | public static readonly IntermediateSymbolDefinition WixDeltaPatchSymbolPaths = new IntermediateSymbolDefinition( | ||
10 | SymbolDefinitionType.WixDeltaPatchSymbolPaths, | ||
11 | new[] | ||
12 | { | ||
13 | new IntermediateFieldDefinition(nameof(WixDeltaPatchSymbolPathsSymbolFields.SymbolType), IntermediateFieldType.Number), | ||
14 | new IntermediateFieldDefinition(nameof(WixDeltaPatchSymbolPathsSymbolFields.SymbolId), IntermediateFieldType.String), | ||
15 | new IntermediateFieldDefinition(nameof(WixDeltaPatchSymbolPathsSymbolFields.SymbolPaths), IntermediateFieldType.String), | ||
16 | }, | ||
17 | typeof(WixDeltaPatchSymbolPathsSymbol)); | ||
18 | } | ||
19 | } | ||
20 | |||
21 | namespace WixToolset.Data.Symbols | ||
22 | { | ||
23 | public enum WixDeltaPatchSymbolPathsSymbolFields | ||
24 | { | ||
25 | SymbolType, | ||
26 | SymbolId, | ||
27 | SymbolPaths, | ||
28 | } | ||
29 | |||
30 | /// <summary> | ||
31 | /// The types that the WixDeltaPatchSymbolPaths table can hold. | ||
32 | /// </summary> | ||
33 | /// <remarks>The order of these values is important since WixDeltaPatchSymbolPaths are sorted by this type.</remarks> | ||
34 | public enum SymbolPathType | ||
35 | { | ||
36 | File, | ||
37 | Component, | ||
38 | Directory, | ||
39 | Media, | ||
40 | Product | ||
41 | }; | ||
42 | |||
43 | public class WixDeltaPatchSymbolPathsSymbol : IntermediateSymbol | ||
44 | { | ||
45 | public WixDeltaPatchSymbolPathsSymbol() : base(SymbolDefinitions.WixDeltaPatchSymbolPaths, null, null) | ||
46 | { | ||
47 | } | ||
48 | |||
49 | public WixDeltaPatchSymbolPathsSymbol(SourceLineNumber sourceLineNumber, Identifier id = null) : base(SymbolDefinitions.WixDeltaPatchSymbolPaths, sourceLineNumber, id) | ||
50 | { | ||
51 | } | ||
52 | |||
53 | public IntermediateField this[WixDeltaPatchSymbolPathsSymbolFields index] => this.Fields[(int)index]; | ||
54 | |||
55 | public SymbolPathType SymbolType | ||
56 | { | ||
57 | get => (SymbolPathType)this.Fields[(int)WixDeltaPatchSymbolPathsSymbolFields.SymbolType].AsNumber(); | ||
58 | set => this.Set((int)WixDeltaPatchSymbolPathsSymbolFields.SymbolType, (int)value); | ||
59 | } | ||
60 | |||
61 | public string SymbolId | ||
62 | { | ||
63 | get => (string)this.Fields[(int)WixDeltaPatchSymbolPathsSymbolFields.SymbolId]; | ||
64 | set => this.Set((int)WixDeltaPatchSymbolPathsSymbolFields.SymbolId, value); | ||
65 | } | ||
66 | |||
67 | public string SymbolPaths | ||
68 | { | ||
69 | get => (string)this.Fields[(int)WixDeltaPatchSymbolPathsSymbolFields.SymbolPaths]; | ||
70 | set => this.Set((int)WixDeltaPatchSymbolPathsSymbolFields.SymbolPaths, value); | ||
71 | } | ||
72 | } | ||
73 | } | ||
diff --git a/src/api/wix/WixToolset.Data/Symbols/WixDependencyProviderSymbol.cs b/src/api/wix/WixToolset.Data/Symbols/WixDependencyProviderSymbol.cs new file mode 100644 index 00000000..0212bfab --- /dev/null +++ b/src/api/wix/WixToolset.Data/Symbols/WixDependencyProviderSymbol.cs | |||
@@ -0,0 +1,90 @@ | |||
1 | // Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. | ||
2 | |||
3 | namespace WixToolset.Data | ||
4 | { | ||
5 | using WixToolset.Data.Symbols; | ||
6 | |||
7 | public static partial class SymbolDefinitions | ||
8 | { | ||
9 | public static readonly IntermediateSymbolDefinition WixDependencyProvider = new IntermediateSymbolDefinition( | ||
10 | SymbolDefinitionType.WixDependencyProvider, | ||
11 | new[] | ||
12 | { | ||
13 | new IntermediateFieldDefinition(nameof(WixDependencyProviderSymbolFields.ParentRef), IntermediateFieldType.String), | ||
14 | new IntermediateFieldDefinition(nameof(WixDependencyProviderSymbolFields.ProviderKey), IntermediateFieldType.String), | ||
15 | new IntermediateFieldDefinition(nameof(WixDependencyProviderSymbolFields.Version), IntermediateFieldType.String), | ||
16 | new IntermediateFieldDefinition(nameof(WixDependencyProviderSymbolFields.DisplayName), IntermediateFieldType.String), | ||
17 | new IntermediateFieldDefinition(nameof(WixDependencyProviderSymbolFields.Attributes), IntermediateFieldType.Number), | ||
18 | }, | ||
19 | typeof(WixDependencyProviderSymbol)); | ||
20 | } | ||
21 | } | ||
22 | |||
23 | namespace WixToolset.Data.Symbols | ||
24 | { | ||
25 | using System; | ||
26 | using WixToolset.Data; | ||
27 | |||
28 | public enum WixDependencyProviderSymbolFields | ||
29 | { | ||
30 | ParentRef, | ||
31 | ProviderKey, | ||
32 | Version, | ||
33 | DisplayName, | ||
34 | Attributes, | ||
35 | } | ||
36 | |||
37 | [Flags] | ||
38 | public enum WixDependencyProviderAttributes | ||
39 | { | ||
40 | ProvidesAttributesBundle = 0x10000, | ||
41 | ProvidesAttributesImported = 0x20000 | ||
42 | } | ||
43 | |||
44 | public class WixDependencyProviderSymbol : IntermediateSymbol | ||
45 | { | ||
46 | public WixDependencyProviderSymbol() : base(SymbolDefinitions.WixDependencyProvider, null, null) | ||
47 | { | ||
48 | } | ||
49 | |||
50 | public WixDependencyProviderSymbol(SourceLineNumber sourceLineNumber, Identifier id = null) : base(SymbolDefinitions.WixDependencyProvider, sourceLineNumber, id) | ||
51 | { | ||
52 | } | ||
53 | |||
54 | public IntermediateField this[WixDependencyProviderSymbolFields index] => this.Fields[(int)index]; | ||
55 | |||
56 | public string ParentRef | ||
57 | { | ||
58 | get => this.Fields[(int)WixDependencyProviderSymbolFields.ParentRef].AsString(); | ||
59 | set => this.Set((int)WixDependencyProviderSymbolFields.ParentRef, value); | ||
60 | } | ||
61 | |||
62 | public string ProviderKey | ||
63 | { | ||
64 | get => this.Fields[(int)WixDependencyProviderSymbolFields.ProviderKey].AsString(); | ||
65 | set => this.Set((int)WixDependencyProviderSymbolFields.ProviderKey, value); | ||
66 | } | ||
67 | |||
68 | public string Version | ||
69 | { | ||
70 | get => this.Fields[(int)WixDependencyProviderSymbolFields.Version].AsString(); | ||
71 | set => this.Set((int)WixDependencyProviderSymbolFields.Version, value); | ||
72 | } | ||
73 | |||
74 | public string DisplayName | ||
75 | { | ||
76 | get => this.Fields[(int)WixDependencyProviderSymbolFields.DisplayName].AsString(); | ||
77 | set => this.Set((int)WixDependencyProviderSymbolFields.DisplayName, value); | ||
78 | } | ||
79 | |||
80 | public WixDependencyProviderAttributes Attributes | ||
81 | { | ||
82 | get => (WixDependencyProviderAttributes)(int)this.Fields[(int)WixDependencyProviderSymbolFields.Attributes]; | ||
83 | set => this.Set((int)WixDependencyProviderSymbolFields.Attributes, (int)value); | ||
84 | } | ||
85 | |||
86 | public bool Bundle => (this.Attributes & WixDependencyProviderAttributes.ProvidesAttributesBundle) == WixDependencyProviderAttributes.ProvidesAttributesBundle; | ||
87 | |||
88 | public bool Imported => (this.Attributes & WixDependencyProviderAttributes.ProvidesAttributesImported) == WixDependencyProviderAttributes.ProvidesAttributesImported; | ||
89 | } | ||
90 | } | ||
diff --git a/src/api/wix/WixToolset.Data/Symbols/WixDependencyRefSymbol.cs b/src/api/wix/WixToolset.Data/Symbols/WixDependencyRefSymbol.cs new file mode 100644 index 00000000..d6076d57 --- /dev/null +++ b/src/api/wix/WixToolset.Data/Symbols/WixDependencyRefSymbol.cs | |||
@@ -0,0 +1,52 @@ | |||
1 | // Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. | ||
2 | |||
3 | namespace WixToolset.Data | ||
4 | { | ||
5 | using WixToolset.Data.Symbols; | ||
6 | |||
7 | public static partial class SymbolDefinitions | ||
8 | { | ||
9 | public static readonly IntermediateSymbolDefinition WixDependencyRef = new IntermediateSymbolDefinition( | ||
10 | SymbolDefinitionType.WixDependencyRef, | ||
11 | new[] | ||
12 | { | ||
13 | new IntermediateFieldDefinition(nameof(WixDependencyRefSymbolFields.WixDependencyProviderRef), IntermediateFieldType.String), | ||
14 | new IntermediateFieldDefinition(nameof(WixDependencyRefSymbolFields.WixDependencyRef), IntermediateFieldType.String), | ||
15 | }, | ||
16 | typeof(WixDependencyRefSymbol)); | ||
17 | } | ||
18 | } | ||
19 | |||
20 | namespace WixToolset.Data.Symbols | ||
21 | { | ||
22 | public enum WixDependencyRefSymbolFields | ||
23 | { | ||
24 | WixDependencyProviderRef, | ||
25 | WixDependencyRef, | ||
26 | } | ||
27 | |||
28 | public class WixDependencyRefSymbol : IntermediateSymbol | ||
29 | { | ||
30 | public WixDependencyRefSymbol() : base(SymbolDefinitions.WixDependencyRef, null, null) | ||
31 | { | ||
32 | } | ||
33 | |||
34 | public WixDependencyRefSymbol(SourceLineNumber sourceLineNumber, Identifier id = null) : base(SymbolDefinitions.WixDependencyRef, sourceLineNumber, id) | ||
35 | { | ||
36 | } | ||
37 | |||
38 | public IntermediateField this[WixDependencyRefSymbolFields index] => this.Fields[(int)index]; | ||
39 | |||
40 | public string WixDependencyProviderRef | ||
41 | { | ||
42 | get => this.Fields[(int)WixDependencyRefSymbolFields.WixDependencyProviderRef].AsString(); | ||
43 | set => this.Set((int)WixDependencyRefSymbolFields.WixDependencyProviderRef, value); | ||
44 | } | ||
45 | |||
46 | public string WixDependencyRef | ||
47 | { | ||
48 | get => this.Fields[(int)WixDependencyRefSymbolFields.WixDependencyRef].AsString(); | ||
49 | set => this.Set((int)WixDependencyRefSymbolFields.WixDependencyRef, value); | ||
50 | } | ||
51 | } | ||
52 | } | ||
diff --git a/src/api/wix/WixToolset.Data/Symbols/WixDependencySymbol.cs b/src/api/wix/WixToolset.Data/Symbols/WixDependencySymbol.cs new file mode 100644 index 00000000..840331bb --- /dev/null +++ b/src/api/wix/WixToolset.Data/Symbols/WixDependencySymbol.cs | |||
@@ -0,0 +1,82 @@ | |||
1 | // Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. | ||
2 | |||
3 | namespace WixToolset.Data | ||
4 | { | ||
5 | using WixToolset.Data.Symbols; | ||
6 | |||
7 | public static partial class SymbolDefinitions | ||
8 | { | ||
9 | public static readonly IntermediateSymbolDefinition WixDependency = new IntermediateSymbolDefinition( | ||
10 | SymbolDefinitionType.WixDependency, | ||
11 | new[] | ||
12 | { | ||
13 | new IntermediateFieldDefinition(nameof(WixDependencySymbolFields.ProviderKey), IntermediateFieldType.String), | ||
14 | new IntermediateFieldDefinition(nameof(WixDependencySymbolFields.MinVersion), IntermediateFieldType.String), | ||
15 | new IntermediateFieldDefinition(nameof(WixDependencySymbolFields.MaxVersion), IntermediateFieldType.String), | ||
16 | new IntermediateFieldDefinition(nameof(WixDependencySymbolFields.Attributes), IntermediateFieldType.Number), | ||
17 | }, | ||
18 | typeof(WixDependencySymbol)); | ||
19 | } | ||
20 | } | ||
21 | |||
22 | namespace WixToolset.Data.Symbols | ||
23 | { | ||
24 | using System; | ||
25 | |||
26 | public enum WixDependencySymbolFields | ||
27 | { | ||
28 | ProviderKey, | ||
29 | MinVersion, | ||
30 | MaxVersion, | ||
31 | Attributes, | ||
32 | } | ||
33 | |||
34 | [Flags] | ||
35 | public enum WixDependencySymbolAttributes : int | ||
36 | { | ||
37 | None = 0x0, | ||
38 | RequiresAttributesMinVersionInclusive = 0x100, | ||
39 | RequiresAttributesMaxVersionInclusive = 0x200, | ||
40 | } | ||
41 | |||
42 | public class WixDependencySymbol : IntermediateSymbol | ||
43 | { | ||
44 | public WixDependencySymbol() : base(SymbolDefinitions.WixDependency, null, null) | ||
45 | { | ||
46 | } | ||
47 | |||
48 | public WixDependencySymbol(SourceLineNumber sourceLineNumber, Identifier id = null) : base(SymbolDefinitions.WixDependency, sourceLineNumber, id) | ||
49 | { | ||
50 | } | ||
51 | |||
52 | public IntermediateField this[WixDependencySymbolFields index] => this.Fields[(int)index]; | ||
53 | |||
54 | public string ProviderKey | ||
55 | { | ||
56 | get => this.Fields[(int)WixDependencySymbolFields.ProviderKey].AsString(); | ||
57 | set => this.Set((int)WixDependencySymbolFields.ProviderKey, value); | ||
58 | } | ||
59 | |||
60 | public string MinVersion | ||
61 | { | ||
62 | get => this.Fields[(int)WixDependencySymbolFields.MinVersion].AsString(); | ||
63 | set => this.Set((int)WixDependencySymbolFields.MinVersion, value); | ||
64 | } | ||
65 | |||
66 | public string MaxVersion | ||
67 | { | ||
68 | get => this.Fields[(int)WixDependencySymbolFields.MaxVersion].AsString(); | ||
69 | set => this.Set((int)WixDependencySymbolFields.MaxVersion, value); | ||
70 | } | ||
71 | |||
72 | public WixDependencySymbolAttributes Attributes | ||
73 | { | ||
74 | get => (WixDependencySymbolAttributes)this.Fields[(int)WixDependencySymbolFields.Attributes].AsNumber(); | ||
75 | set => this.Set((int)WixDependencySymbolFields.Attributes, (int)value); | ||
76 | } | ||
77 | |||
78 | public bool RequiresAttributesMinVersionInclusive => (this.Attributes & WixDependencySymbolAttributes.RequiresAttributesMinVersionInclusive) == WixDependencySymbolAttributes.RequiresAttributesMinVersionInclusive; | ||
79 | |||
80 | public bool RequiresAttributesMaxVersionInclusive => (this.Attributes & WixDependencySymbolAttributes.RequiresAttributesMaxVersionInclusive) == WixDependencySymbolAttributes.RequiresAttributesMaxVersionInclusive; | ||
81 | } | ||
82 | } | ||
diff --git a/src/api/wix/WixToolset.Data/Symbols/WixEnsureTableSymbol.cs b/src/api/wix/WixToolset.Data/Symbols/WixEnsureTableSymbol.cs new file mode 100644 index 00000000..d13063b7 --- /dev/null +++ b/src/api/wix/WixToolset.Data/Symbols/WixEnsureTableSymbol.cs | |||
@@ -0,0 +1,44 @@ | |||
1 | // Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. | ||
2 | |||
3 | namespace WixToolset.Data | ||
4 | { | ||
5 | using WixToolset.Data.Symbols; | ||
6 | |||
7 | public static partial class SymbolDefinitions | ||
8 | { | ||
9 | public static readonly IntermediateSymbolDefinition WixEnsureTable = new IntermediateSymbolDefinition( | ||
10 | SymbolDefinitionType.WixEnsureTable, | ||
11 | new[] | ||
12 | { | ||
13 | new IntermediateFieldDefinition(nameof(WixEnsureTableSymbolFields.Table), IntermediateFieldType.String), | ||
14 | }, | ||
15 | typeof(WixEnsureTableSymbol)); | ||
16 | } | ||
17 | } | ||
18 | |||
19 | namespace WixToolset.Data.Symbols | ||
20 | { | ||
21 | public enum WixEnsureTableSymbolFields | ||
22 | { | ||
23 | Table, | ||
24 | } | ||
25 | |||
26 | public class WixEnsureTableSymbol : IntermediateSymbol | ||
27 | { | ||
28 | public WixEnsureTableSymbol() : base(SymbolDefinitions.WixEnsureTable, null, null) | ||
29 | { | ||
30 | } | ||
31 | |||
32 | public WixEnsureTableSymbol(SourceLineNumber sourceLineNumber, Identifier id = null) : base(SymbolDefinitions.WixEnsureTable, sourceLineNumber, id) | ||
33 | { | ||
34 | } | ||
35 | |||
36 | public IntermediateField this[WixEnsureTableSymbolFields index] => this.Fields[(int)index]; | ||
37 | |||
38 | public string Table | ||
39 | { | ||
40 | get => (string)this.Fields[(int)WixEnsureTableSymbolFields.Table]; | ||
41 | set => this.Set((int)WixEnsureTableSymbolFields.Table, value); | ||
42 | } | ||
43 | } | ||
44 | } \ No newline at end of file | ||
diff --git a/src/api/wix/WixToolset.Data/Symbols/WixFeatureGroupSymbol.cs b/src/api/wix/WixToolset.Data/Symbols/WixFeatureGroupSymbol.cs new file mode 100644 index 00000000..ac002bb6 --- /dev/null +++ b/src/api/wix/WixToolset.Data/Symbols/WixFeatureGroupSymbol.cs | |||
@@ -0,0 +1,36 @@ | |||
1 | // Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. | ||
2 | |||
3 | namespace WixToolset.Data | ||
4 | { | ||
5 | using WixToolset.Data.Symbols; | ||
6 | |||
7 | public static partial class SymbolDefinitions | ||
8 | { | ||
9 | public static readonly IntermediateSymbolDefinition WixFeatureGroup = new IntermediateSymbolDefinition( | ||
10 | SymbolDefinitionType.WixFeatureGroup, | ||
11 | new IntermediateFieldDefinition[] | ||
12 | { | ||
13 | }, | ||
14 | typeof(WixFeatureGroupSymbol)); | ||
15 | } | ||
16 | } | ||
17 | |||
18 | namespace WixToolset.Data.Symbols | ||
19 | { | ||
20 | public enum WixFeatureGroupSymbolFields | ||
21 | { | ||
22 | } | ||
23 | |||
24 | public class WixFeatureGroupSymbol : IntermediateSymbol | ||
25 | { | ||
26 | public WixFeatureGroupSymbol() : base(SymbolDefinitions.WixFeatureGroup, null, null) | ||
27 | { | ||
28 | } | ||
29 | |||
30 | public WixFeatureGroupSymbol(SourceLineNumber sourceLineNumber, Identifier id = null) : base(SymbolDefinitions.WixFeatureGroup, sourceLineNumber, id) | ||
31 | { | ||
32 | } | ||
33 | |||
34 | public IntermediateField this[WixFeatureGroupSymbolFields index] => this.Fields[(int)index]; | ||
35 | } | ||
36 | } \ No newline at end of file | ||
diff --git a/src/api/wix/WixToolset.Data/Symbols/WixFeatureModulesSymbol.cs b/src/api/wix/WixToolset.Data/Symbols/WixFeatureModulesSymbol.cs new file mode 100644 index 00000000..b8b3d4b9 --- /dev/null +++ b/src/api/wix/WixToolset.Data/Symbols/WixFeatureModulesSymbol.cs | |||
@@ -0,0 +1,52 @@ | |||
1 | // Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. | ||
2 | |||
3 | namespace WixToolset.Data | ||
4 | { | ||
5 | using WixToolset.Data.Symbols; | ||
6 | |||
7 | public static partial class SymbolDefinitions | ||
8 | { | ||
9 | public static readonly IntermediateSymbolDefinition WixFeatureModules = new IntermediateSymbolDefinition( | ||
10 | SymbolDefinitionType.WixFeatureModules, | ||
11 | new[] | ||
12 | { | ||
13 | new IntermediateFieldDefinition(nameof(WixFeatureModulesSymbolFields.FeatureRef), IntermediateFieldType.String), | ||
14 | new IntermediateFieldDefinition(nameof(WixFeatureModulesSymbolFields.WixMergeRef), IntermediateFieldType.String), | ||
15 | }, | ||
16 | typeof(WixFeatureModulesSymbol)); | ||
17 | } | ||
18 | } | ||
19 | |||
20 | namespace WixToolset.Data.Symbols | ||
21 | { | ||
22 | public enum WixFeatureModulesSymbolFields | ||
23 | { | ||
24 | FeatureRef, | ||
25 | WixMergeRef, | ||
26 | } | ||
27 | |||
28 | public class WixFeatureModulesSymbol : IntermediateSymbol | ||
29 | { | ||
30 | public WixFeatureModulesSymbol() : base(SymbolDefinitions.WixFeatureModules, null, null) | ||
31 | { | ||
32 | } | ||
33 | |||
34 | public WixFeatureModulesSymbol(SourceLineNumber sourceLineNumber, Identifier id = null) : base(SymbolDefinitions.WixFeatureModules, sourceLineNumber, id) | ||
35 | { | ||
36 | } | ||
37 | |||
38 | public IntermediateField this[WixFeatureModulesSymbolFields index] => this.Fields[(int)index]; | ||
39 | |||
40 | public string FeatureRef | ||
41 | { | ||
42 | get => (string)this.Fields[(int)WixFeatureModulesSymbolFields.FeatureRef]; | ||
43 | set => this.Set((int)WixFeatureModulesSymbolFields.FeatureRef, value); | ||
44 | } | ||
45 | |||
46 | public string WixMergeRef | ||
47 | { | ||
48 | get => (string)this.Fields[(int)WixFeatureModulesSymbolFields.WixMergeRef]; | ||
49 | set => this.Set((int)WixFeatureModulesSymbolFields.WixMergeRef, value); | ||
50 | } | ||
51 | } | ||
52 | } \ No newline at end of file | ||
diff --git a/src/api/wix/WixToolset.Data/Symbols/WixFileSearchSymbol.cs b/src/api/wix/WixToolset.Data/Symbols/WixFileSearchSymbol.cs new file mode 100644 index 00000000..027605c7 --- /dev/null +++ b/src/api/wix/WixToolset.Data/Symbols/WixFileSearchSymbol.cs | |||
@@ -0,0 +1,125 @@ | |||
1 | // Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. | ||
2 | |||
3 | namespace WixToolset.Data | ||
4 | { | ||
5 | using WixToolset.Data.Symbols; | ||
6 | |||
7 | public static partial class SymbolDefinitions | ||
8 | { | ||
9 | public static readonly IntermediateSymbolDefinition WixFileSearch = new IntermediateSymbolDefinition( | ||
10 | SymbolDefinitionType.WixFileSearch, | ||
11 | new[] | ||
12 | { | ||
13 | new IntermediateFieldDefinition(nameof(WixFileSearchSymbolFields.Path), IntermediateFieldType.String), | ||
14 | new IntermediateFieldDefinition(nameof(WixFileSearchSymbolFields.MinVersion), IntermediateFieldType.String), | ||
15 | new IntermediateFieldDefinition(nameof(WixFileSearchSymbolFields.MaxVersion), IntermediateFieldType.String), | ||
16 | new IntermediateFieldDefinition(nameof(WixFileSearchSymbolFields.MinSize), IntermediateFieldType.Number), | ||
17 | new IntermediateFieldDefinition(nameof(WixFileSearchSymbolFields.MaxSize), IntermediateFieldType.Number), | ||
18 | new IntermediateFieldDefinition(nameof(WixFileSearchSymbolFields.MinDate), IntermediateFieldType.Number), | ||
19 | new IntermediateFieldDefinition(nameof(WixFileSearchSymbolFields.MaxDate), IntermediateFieldType.Number), | ||
20 | new IntermediateFieldDefinition(nameof(WixFileSearchSymbolFields.Languages), IntermediateFieldType.String), | ||
21 | new IntermediateFieldDefinition(nameof(WixFileSearchSymbolFields.Attributes), IntermediateFieldType.Number), | ||
22 | }, | ||
23 | typeof(WixFileSearchSymbol)); | ||
24 | } | ||
25 | } | ||
26 | |||
27 | namespace WixToolset.Data.Symbols | ||
28 | { | ||
29 | using System; | ||
30 | |||
31 | public enum WixFileSearchSymbolFields | ||
32 | { | ||
33 | Path, | ||
34 | MinVersion, | ||
35 | MaxVersion, | ||
36 | MinSize, | ||
37 | MaxSize, | ||
38 | MinDate, | ||
39 | MaxDate, | ||
40 | Languages, | ||
41 | Attributes, | ||
42 | } | ||
43 | |||
44 | [Flags] | ||
45 | public enum WixFileSearchAttributes | ||
46 | { | ||
47 | Default = 0x001, | ||
48 | MinVersionInclusive = 0x002, | ||
49 | MaxVersionInclusive = 0x004, | ||
50 | MinSizeInclusive = 0x008, | ||
51 | MaxSizeInclusive = 0x010, | ||
52 | MinDateInclusive = 0x020, | ||
53 | MaxDateInclusive = 0x040, | ||
54 | WantVersion = 0x080, | ||
55 | WantExists = 0x100, | ||
56 | IsDirectory = 0x200, | ||
57 | } | ||
58 | |||
59 | public class WixFileSearchSymbol : IntermediateSymbol | ||
60 | { | ||
61 | public WixFileSearchSymbol() : base(SymbolDefinitions.WixFileSearch, null, null) | ||
62 | { | ||
63 | } | ||
64 | |||
65 | public WixFileSearchSymbol(SourceLineNumber sourceLineNumber, Identifier id = null) : base(SymbolDefinitions.WixFileSearch, sourceLineNumber, id) | ||
66 | { | ||
67 | } | ||
68 | |||
69 | public IntermediateField this[WixFileSearchSymbolFields index] => this.Fields[(int)index]; | ||
70 | |||
71 | public string Path | ||
72 | { | ||
73 | get => (string)this.Fields[(int)WixFileSearchSymbolFields.Path]; | ||
74 | set => this.Set((int)WixFileSearchSymbolFields.Path, value); | ||
75 | } | ||
76 | |||
77 | public string MinVersion | ||
78 | { | ||
79 | get => (string)this.Fields[(int)WixFileSearchSymbolFields.MinVersion]; | ||
80 | set => this.Set((int)WixFileSearchSymbolFields.MinVersion, value); | ||
81 | } | ||
82 | |||
83 | public string MaxVersion | ||
84 | { | ||
85 | get => (string)this.Fields[(int)WixFileSearchSymbolFields.MaxVersion]; | ||
86 | set => this.Set((int)WixFileSearchSymbolFields.MaxVersion, value); | ||
87 | } | ||
88 | |||
89 | public int? MinSize | ||
90 | { | ||
91 | get => (int?)this.Fields[(int)WixFileSearchSymbolFields.MinSize]; | ||
92 | set => this.Set((int)WixFileSearchSymbolFields.MinSize, value); | ||
93 | } | ||
94 | |||
95 | public int? MaxSize | ||
96 | { | ||
97 | get => (int?)this.Fields[(int)WixFileSearchSymbolFields.MaxSize]; | ||
98 | set => this.Set((int)WixFileSearchSymbolFields.MaxSize, value); | ||
99 | } | ||
100 | |||
101 | public int? MinDate | ||
102 | { | ||
103 | get => (int?)this.Fields[(int)WixFileSearchSymbolFields.MinDate]; | ||
104 | set => this.Set((int)WixFileSearchSymbolFields.MinDate, value); | ||
105 | } | ||
106 | |||
107 | public int? MaxDate | ||
108 | { | ||
109 | get => (int?)this.Fields[(int)WixFileSearchSymbolFields.MaxDate]; | ||
110 | set => this.Set((int)WixFileSearchSymbolFields.MaxDate, value); | ||
111 | } | ||
112 | |||
113 | public string Languages | ||
114 | { | ||
115 | get => (string)this.Fields[(int)WixFileSearchSymbolFields.Languages]; | ||
116 | set => this.Set((int)WixFileSearchSymbolFields.Languages, value); | ||
117 | } | ||
118 | |||
119 | public WixFileSearchAttributes Attributes | ||
120 | { | ||
121 | get => (WixFileSearchAttributes)this.Fields[(int)WixFileSearchSymbolFields.Attributes].AsNumber(); | ||
122 | set => this.Set((int)WixFileSearchSymbolFields.Attributes, (int)value); | ||
123 | } | ||
124 | } | ||
125 | } | ||
diff --git a/src/api/wix/WixToolset.Data/Symbols/WixFragmentSymbol.cs b/src/api/wix/WixToolset.Data/Symbols/WixFragmentSymbol.cs new file mode 100644 index 00000000..9c31b79c --- /dev/null +++ b/src/api/wix/WixToolset.Data/Symbols/WixFragmentSymbol.cs | |||
@@ -0,0 +1,36 @@ | |||
1 | // Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. | ||
2 | |||
3 | namespace WixToolset.Data | ||
4 | { | ||
5 | using WixToolset.Data.Symbols; | ||
6 | |||
7 | public static partial class SymbolDefinitions | ||
8 | { | ||
9 | public static readonly IntermediateSymbolDefinition WixFragment = new IntermediateSymbolDefinition( | ||
10 | SymbolDefinitionType.WixFragment, | ||
11 | new IntermediateFieldDefinition[] | ||
12 | { | ||
13 | }, | ||
14 | typeof(WixFragmentSymbol)); | ||
15 | } | ||
16 | } | ||
17 | |||
18 | namespace WixToolset.Data.Symbols | ||
19 | { | ||
20 | public enum WixFragmentSymbolFields | ||
21 | { | ||
22 | } | ||
23 | |||
24 | public class WixFragmentSymbol : IntermediateSymbol | ||
25 | { | ||
26 | public WixFragmentSymbol() : base(SymbolDefinitions.WixFragment, null, null) | ||
27 | { | ||
28 | } | ||
29 | |||
30 | public WixFragmentSymbol(SourceLineNumber sourceLineNumber, Identifier id = null) : base(SymbolDefinitions.WixFragment, sourceLineNumber, id) | ||
31 | { | ||
32 | } | ||
33 | |||
34 | public IntermediateField this[WixFragmentSymbolFields index] => this.Fields[(int)index]; | ||
35 | } | ||
36 | } \ No newline at end of file | ||
diff --git a/src/api/wix/WixToolset.Data/Symbols/WixGroupSymbol.cs b/src/api/wix/WixToolset.Data/Symbols/WixGroupSymbol.cs new file mode 100644 index 00000000..f8adf78d --- /dev/null +++ b/src/api/wix/WixToolset.Data/Symbols/WixGroupSymbol.cs | |||
@@ -0,0 +1,71 @@ | |||
1 | // Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. | ||
2 | |||
3 | namespace WixToolset.Data | ||
4 | { | ||
5 | using WixToolset.Data.Symbols; | ||
6 | |||
7 | public static partial class SymbolDefinitions | ||
8 | { | ||
9 | public static readonly IntermediateSymbolDefinition WixGroup = new IntermediateSymbolDefinition( | ||
10 | SymbolDefinitionType.WixGroup, | ||
11 | new[] | ||
12 | { | ||
13 | new IntermediateFieldDefinition(nameof(WixGroupSymbolFields.ParentId), IntermediateFieldType.String), | ||
14 | new IntermediateFieldDefinition(nameof(WixGroupSymbolFields.ParentType), IntermediateFieldType.Number), | ||
15 | new IntermediateFieldDefinition(nameof(WixGroupSymbolFields.ChildId), IntermediateFieldType.String), | ||
16 | new IntermediateFieldDefinition(nameof(WixGroupSymbolFields.ChildType), IntermediateFieldType.Number), | ||
17 | }, | ||
18 | typeof(WixGroupSymbol)); | ||
19 | } | ||
20 | } | ||
21 | |||
22 | namespace WixToolset.Data.Symbols | ||
23 | { | ||
24 | using System.Diagnostics; | ||
25 | |||
26 | public enum WixGroupSymbolFields | ||
27 | { | ||
28 | ParentId, | ||
29 | ParentType, | ||
30 | ChildId, | ||
31 | ChildType, | ||
32 | } | ||
33 | |||
34 | [DebuggerDisplay("WixGroupSymbol {ParentType} {ParentId,nq} -> {ChildType} {ChildId,nq}")] | ||
35 | public class WixGroupSymbol : IntermediateSymbol | ||
36 | { | ||
37 | public WixGroupSymbol() : base(SymbolDefinitions.WixGroup, null, null) | ||
38 | { | ||
39 | } | ||
40 | |||
41 | public WixGroupSymbol(SourceLineNumber sourceLineNumber, Identifier id = null) : base(SymbolDefinitions.WixGroup, sourceLineNumber, id) | ||
42 | { | ||
43 | } | ||
44 | |||
45 | public IntermediateField this[WixGroupSymbolFields index] => this.Fields[(int)index]; | ||
46 | |||
47 | public string ParentId | ||
48 | { | ||
49 | get => (string)this.Fields[(int)WixGroupSymbolFields.ParentId]; | ||
50 | set => this.Set((int)WixGroupSymbolFields.ParentId, value); | ||
51 | } | ||
52 | |||
53 | public ComplexReferenceParentType ParentType | ||
54 | { | ||
55 | get => (ComplexReferenceParentType)this.Fields[(int)WixGroupSymbolFields.ParentType].AsNumber(); | ||
56 | set => this.Set((int)WixGroupSymbolFields.ParentType, (int)value); | ||
57 | } | ||
58 | |||
59 | public string ChildId | ||
60 | { | ||
61 | get => (string)this.Fields[(int)WixGroupSymbolFields.ChildId]; | ||
62 | set => this.Set((int)WixGroupSymbolFields.ChildId, value); | ||
63 | } | ||
64 | |||
65 | public ComplexReferenceChildType ChildType | ||
66 | { | ||
67 | get => (ComplexReferenceChildType)this.Fields[(int)WixGroupSymbolFields.ChildType].AsNumber(); | ||
68 | set => this.Set((int)WixGroupSymbolFields.ChildType, (int)value); | ||
69 | } | ||
70 | } | ||
71 | } \ No newline at end of file | ||
diff --git a/src/api/wix/WixToolset.Data/Symbols/WixInstanceComponentSymbol.cs b/src/api/wix/WixToolset.Data/Symbols/WixInstanceComponentSymbol.cs new file mode 100644 index 00000000..c9e4470c --- /dev/null +++ b/src/api/wix/WixToolset.Data/Symbols/WixInstanceComponentSymbol.cs | |||
@@ -0,0 +1,44 @@ | |||
1 | // Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. | ||
2 | |||
3 | namespace WixToolset.Data | ||
4 | { | ||
5 | using WixToolset.Data.Symbols; | ||
6 | |||
7 | public static partial class SymbolDefinitions | ||
8 | { | ||
9 | public static readonly IntermediateSymbolDefinition WixInstanceComponent = new IntermediateSymbolDefinition( | ||
10 | SymbolDefinitionType.WixInstanceComponent, | ||
11 | new[] | ||
12 | { | ||
13 | new IntermediateFieldDefinition(nameof(WixInstanceComponentSymbolFields.ComponentRef), IntermediateFieldType.String), | ||
14 | }, | ||
15 | typeof(WixInstanceComponentSymbol)); | ||
16 | } | ||
17 | } | ||
18 | |||
19 | namespace WixToolset.Data.Symbols | ||
20 | { | ||
21 | public enum WixInstanceComponentSymbolFields | ||
22 | { | ||
23 | ComponentRef, | ||
24 | } | ||
25 | |||
26 | public class WixInstanceComponentSymbol : IntermediateSymbol | ||
27 | { | ||
28 | public WixInstanceComponentSymbol() : base(SymbolDefinitions.WixInstanceComponent, null, null) | ||
29 | { | ||
30 | } | ||
31 | |||
32 | public WixInstanceComponentSymbol(SourceLineNumber sourceLineNumber, Identifier id = null) : base(SymbolDefinitions.WixInstanceComponent, sourceLineNumber, id) | ||
33 | { | ||
34 | } | ||
35 | |||
36 | public IntermediateField this[WixInstanceComponentSymbolFields index] => this.Fields[(int)index]; | ||
37 | |||
38 | public string ComponentRef | ||
39 | { | ||
40 | get => (string)this.Fields[(int)WixInstanceComponentSymbolFields.ComponentRef]; | ||
41 | set => this.Set((int)WixInstanceComponentSymbolFields.ComponentRef, value); | ||
42 | } | ||
43 | } | ||
44 | } \ No newline at end of file | ||
diff --git a/src/api/wix/WixToolset.Data/Symbols/WixInstanceTransformsSymbol.cs b/src/api/wix/WixToolset.Data/Symbols/WixInstanceTransformsSymbol.cs new file mode 100644 index 00000000..3a58cb31 --- /dev/null +++ b/src/api/wix/WixToolset.Data/Symbols/WixInstanceTransformsSymbol.cs | |||
@@ -0,0 +1,68 @@ | |||
1 | // Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. | ||
2 | |||
3 | namespace WixToolset.Data | ||
4 | { | ||
5 | using WixToolset.Data.Symbols; | ||
6 | |||
7 | public static partial class SymbolDefinitions | ||
8 | { | ||
9 | public static readonly IntermediateSymbolDefinition WixInstanceTransforms = new IntermediateSymbolDefinition( | ||
10 | SymbolDefinitionType.WixInstanceTransforms, | ||
11 | new[] | ||
12 | { | ||
13 | new IntermediateFieldDefinition(nameof(WixInstanceTransformsSymbolFields.PropertyId), IntermediateFieldType.String), | ||
14 | new IntermediateFieldDefinition(nameof(WixInstanceTransformsSymbolFields.ProductCode), IntermediateFieldType.String), | ||
15 | new IntermediateFieldDefinition(nameof(WixInstanceTransformsSymbolFields.ProductName), IntermediateFieldType.String), | ||
16 | new IntermediateFieldDefinition(nameof(WixInstanceTransformsSymbolFields.UpgradeCode), IntermediateFieldType.String), | ||
17 | }, | ||
18 | typeof(WixInstanceTransformsSymbol)); | ||
19 | } | ||
20 | } | ||
21 | |||
22 | namespace WixToolset.Data.Symbols | ||
23 | { | ||
24 | public enum WixInstanceTransformsSymbolFields | ||
25 | { | ||
26 | PropertyId, | ||
27 | ProductCode, | ||
28 | ProductName, | ||
29 | UpgradeCode, | ||
30 | } | ||
31 | |||
32 | public class WixInstanceTransformsSymbol : IntermediateSymbol | ||
33 | { | ||
34 | public WixInstanceTransformsSymbol() : base(SymbolDefinitions.WixInstanceTransforms, null, null) | ||
35 | { | ||
36 | } | ||
37 | |||
38 | public WixInstanceTransformsSymbol(SourceLineNumber sourceLineNumber, Identifier id = null) : base(SymbolDefinitions.WixInstanceTransforms, sourceLineNumber, id) | ||
39 | { | ||
40 | } | ||
41 | |||
42 | public IntermediateField this[WixInstanceTransformsSymbolFields index] => this.Fields[(int)index]; | ||
43 | |||
44 | public string PropertyId | ||
45 | { | ||
46 | get => (string)this.Fields[(int)WixInstanceTransformsSymbolFields.PropertyId]; | ||
47 | set => this.Set((int)WixInstanceTransformsSymbolFields.PropertyId, value); | ||
48 | } | ||
49 | |||
50 | public string ProductCode | ||
51 | { | ||
52 | get => (string)this.Fields[(int)WixInstanceTransformsSymbolFields.ProductCode]; | ||
53 | set => this.Set((int)WixInstanceTransformsSymbolFields.ProductCode, value); | ||
54 | } | ||
55 | |||
56 | public string ProductName | ||
57 | { | ||
58 | get => (string)this.Fields[(int)WixInstanceTransformsSymbolFields.ProductName]; | ||
59 | set => this.Set((int)WixInstanceTransformsSymbolFields.ProductName, value); | ||
60 | } | ||
61 | |||
62 | public string UpgradeCode | ||
63 | { | ||
64 | get => (string)this.Fields[(int)WixInstanceTransformsSymbolFields.UpgradeCode]; | ||
65 | set => this.Set((int)WixInstanceTransformsSymbolFields.UpgradeCode, value); | ||
66 | } | ||
67 | } | ||
68 | } | ||
diff --git a/src/api/wix/WixToolset.Data/Symbols/WixMediaTemplateSymbol.cs b/src/api/wix/WixToolset.Data/Symbols/WixMediaTemplateSymbol.cs new file mode 100644 index 00000000..28695b3e --- /dev/null +++ b/src/api/wix/WixToolset.Data/Symbols/WixMediaTemplateSymbol.cs | |||
@@ -0,0 +1,86 @@ | |||
1 | // Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. | ||
2 | |||
3 | namespace WixToolset.Data | ||
4 | { | ||
5 | using WixToolset.Data.Symbols; | ||
6 | |||
7 | public static partial class SymbolDefinitions | ||
8 | { | ||
9 | public static readonly IntermediateSymbolDefinition WixMediaTemplate = new IntermediateSymbolDefinition( | ||
10 | SymbolDefinitionType.WixMediaTemplate, | ||
11 | new[] | ||
12 | { | ||
13 | new IntermediateFieldDefinition(nameof(WixMediaTemplateSymbolFields.CabinetTemplate), IntermediateFieldType.String), | ||
14 | new IntermediateFieldDefinition(nameof(WixMediaTemplateSymbolFields.CompressionLevel), IntermediateFieldType.Number), | ||
15 | new IntermediateFieldDefinition(nameof(WixMediaTemplateSymbolFields.DiskPrompt), IntermediateFieldType.String), | ||
16 | new IntermediateFieldDefinition(nameof(WixMediaTemplateSymbolFields.VolumeLabel), IntermediateFieldType.String), | ||
17 | new IntermediateFieldDefinition(nameof(WixMediaTemplateSymbolFields.MaximumUncompressedMediaSize), IntermediateFieldType.Number), | ||
18 | new IntermediateFieldDefinition(nameof(WixMediaTemplateSymbolFields.MaximumCabinetSizeForLargeFileSplitting), IntermediateFieldType.Number), | ||
19 | }, | ||
20 | typeof(WixMediaTemplateSymbol)); | ||
21 | } | ||
22 | } | ||
23 | |||
24 | namespace WixToolset.Data.Symbols | ||
25 | { | ||
26 | using System; | ||
27 | |||
28 | public enum WixMediaTemplateSymbolFields | ||
29 | { | ||
30 | CabinetTemplate, | ||
31 | CompressionLevel, | ||
32 | DiskPrompt, | ||
33 | VolumeLabel, | ||
34 | MaximumUncompressedMediaSize, | ||
35 | MaximumCabinetSizeForLargeFileSplitting, | ||
36 | } | ||
37 | |||
38 | public class WixMediaTemplateSymbol : IntermediateSymbol | ||
39 | { | ||
40 | public WixMediaTemplateSymbol() : base(SymbolDefinitions.WixMediaTemplate, null, null) | ||
41 | { | ||
42 | } | ||
43 | |||
44 | public WixMediaTemplateSymbol(SourceLineNumber sourceLineNumber, Identifier id = null) : base(SymbolDefinitions.WixMediaTemplate, sourceLineNumber, id) | ||
45 | { | ||
46 | } | ||
47 | |||
48 | public IntermediateField this[WixMediaTemplateSymbolFields index] => this.Fields[(int)index]; | ||
49 | |||
50 | public string CabinetTemplate | ||
51 | { | ||
52 | get => (string)this.Fields[(int)WixMediaTemplateSymbolFields.CabinetTemplate]; | ||
53 | set => this.Set((int)WixMediaTemplateSymbolFields.CabinetTemplate, value); | ||
54 | } | ||
55 | |||
56 | public CompressionLevel? CompressionLevel | ||
57 | { | ||
58 | get => (CompressionLevel?)this.Fields[(int)WixMediaTemplateSymbolFields.CompressionLevel].AsNullableNumber(); | ||
59 | set => this.Set((int)WixMediaTemplateSymbolFields.CompressionLevel, (int?)value); | ||
60 | } | ||
61 | |||
62 | public string DiskPrompt | ||
63 | { | ||
64 | get => (string)this.Fields[(int)WixMediaTemplateSymbolFields.DiskPrompt]; | ||
65 | set => this.Set((int)WixMediaTemplateSymbolFields.DiskPrompt, value); | ||
66 | } | ||
67 | |||
68 | public string VolumeLabel | ||
69 | { | ||
70 | get => (string)this.Fields[(int)WixMediaTemplateSymbolFields.VolumeLabel]; | ||
71 | set => this.Set((int)WixMediaTemplateSymbolFields.VolumeLabel, value); | ||
72 | } | ||
73 | |||
74 | public int? MaximumUncompressedMediaSize | ||
75 | { | ||
76 | get => (int?)this.Fields[(int)WixMediaTemplateSymbolFields.MaximumUncompressedMediaSize]; | ||
77 | set => this.Set((int)WixMediaTemplateSymbolFields.MaximumUncompressedMediaSize, value); | ||
78 | } | ||
79 | |||
80 | public int? MaximumCabinetSizeForLargeFileSplitting | ||
81 | { | ||
82 | get => (int?)this.Fields[(int)WixMediaTemplateSymbolFields.MaximumCabinetSizeForLargeFileSplitting]; | ||
83 | set => this.Set((int)WixMediaTemplateSymbolFields.MaximumCabinetSizeForLargeFileSplitting, value); | ||
84 | } | ||
85 | } | ||
86 | } \ No newline at end of file | ||
diff --git a/src/api/wix/WixToolset.Data/Symbols/WixMergeSymbol.cs b/src/api/wix/WixToolset.Data/Symbols/WixMergeSymbol.cs new file mode 100644 index 00000000..d066fa8e --- /dev/null +++ b/src/api/wix/WixToolset.Data/Symbols/WixMergeSymbol.cs | |||
@@ -0,0 +1,92 @@ | |||
1 | // Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. | ||
2 | |||
3 | namespace WixToolset.Data | ||
4 | { | ||
5 | using WixToolset.Data.Symbols; | ||
6 | |||
7 | public static partial class SymbolDefinitions | ||
8 | { | ||
9 | public static readonly IntermediateSymbolDefinition WixMerge = new IntermediateSymbolDefinition( | ||
10 | SymbolDefinitionType.WixMerge, | ||
11 | new[] | ||
12 | { | ||
13 | new IntermediateFieldDefinition(nameof(WixMergeSymbolFields.Language), IntermediateFieldType.Number), | ||
14 | new IntermediateFieldDefinition(nameof(WixMergeSymbolFields.DirectoryRef), IntermediateFieldType.String), | ||
15 | new IntermediateFieldDefinition(nameof(WixMergeSymbolFields.SourceFile), IntermediateFieldType.Path), | ||
16 | new IntermediateFieldDefinition(nameof(WixMergeSymbolFields.DiskId), IntermediateFieldType.Number), | ||
17 | new IntermediateFieldDefinition(nameof(WixMergeSymbolFields.FileAttributes), IntermediateFieldType.Number), | ||
18 | new IntermediateFieldDefinition(nameof(WixMergeSymbolFields.ConfigurationData), IntermediateFieldType.String), | ||
19 | new IntermediateFieldDefinition(nameof(WixMergeSymbolFields.FeatureRef), IntermediateFieldType.String), | ||
20 | }, | ||
21 | typeof(WixMergeSymbol)); | ||
22 | } | ||
23 | } | ||
24 | |||
25 | namespace WixToolset.Data.Symbols | ||
26 | { | ||
27 | public enum WixMergeSymbolFields | ||
28 | { | ||
29 | Language, | ||
30 | DirectoryRef, | ||
31 | SourceFile, | ||
32 | DiskId, | ||
33 | FileAttributes, | ||
34 | ConfigurationData, | ||
35 | FeatureRef, | ||
36 | } | ||
37 | |||
38 | public class WixMergeSymbol : IntermediateSymbol | ||
39 | { | ||
40 | public WixMergeSymbol() : base(SymbolDefinitions.WixMerge, null, null) | ||
41 | { | ||
42 | } | ||
43 | |||
44 | public WixMergeSymbol(SourceLineNumber sourceLineNumber, Identifier id = null) : base(SymbolDefinitions.WixMerge, sourceLineNumber, id) | ||
45 | { | ||
46 | } | ||
47 | |||
48 | public IntermediateField this[WixMergeSymbolFields index] => this.Fields[(int)index]; | ||
49 | |||
50 | public int Language | ||
51 | { | ||
52 | get => (int)this.Fields[(int)WixMergeSymbolFields.Language]; | ||
53 | set => this.Set((int)WixMergeSymbolFields.Language, value); | ||
54 | } | ||
55 | |||
56 | public string DirectoryRef | ||
57 | { | ||
58 | get => (string)this.Fields[(int)WixMergeSymbolFields.DirectoryRef]; | ||
59 | set => this.Set((int)WixMergeSymbolFields.DirectoryRef, value); | ||
60 | } | ||
61 | |||
62 | public string SourceFile | ||
63 | { | ||
64 | get => (string)this.Fields[(int)WixMergeSymbolFields.SourceFile]; | ||
65 | set => this.Set((int)WixMergeSymbolFields.SourceFile, value); | ||
66 | } | ||
67 | |||
68 | public int DiskId | ||
69 | { | ||
70 | get => (int)this.Fields[(int)WixMergeSymbolFields.DiskId]; | ||
71 | set => this.Set((int)WixMergeSymbolFields.DiskId, value); | ||
72 | } | ||
73 | |||
74 | public FileSymbolAttributes FileAttributes | ||
75 | { | ||
76 | get => (FileSymbolAttributes)this.Fields[(int)WixMergeSymbolFields.FileAttributes].AsNumber(); | ||
77 | set => this.Set((int)WixMergeSymbolFields.FileAttributes, (int)value); | ||
78 | } | ||
79 | |||
80 | public string ConfigurationData | ||
81 | { | ||
82 | get => (string)this.Fields[(int)WixMergeSymbolFields.ConfigurationData]; | ||
83 | set => this.Set((int)WixMergeSymbolFields.ConfigurationData, value); | ||
84 | } | ||
85 | |||
86 | public string FeatureRef | ||
87 | { | ||
88 | get => (string)this.Fields[(int)WixMergeSymbolFields.FeatureRef]; | ||
89 | set => this.Set((int)WixMergeSymbolFields.FeatureRef, value); | ||
90 | } | ||
91 | } | ||
92 | } | ||
diff --git a/src/api/wix/WixToolset.Data/Symbols/WixModuleSymbol.cs b/src/api/wix/WixToolset.Data/Symbols/WixModuleSymbol.cs new file mode 100644 index 00000000..fbb16764 --- /dev/null +++ b/src/api/wix/WixToolset.Data/Symbols/WixModuleSymbol.cs | |||
@@ -0,0 +1,68 @@ | |||
1 | // Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. | ||
2 | |||
3 | namespace WixToolset.Data | ||
4 | { | ||
5 | using WixToolset.Data.Symbols; | ||
6 | |||
7 | public static partial class SymbolDefinitions | ||
8 | { | ||
9 | public static readonly IntermediateSymbolDefinition WixModule = new IntermediateSymbolDefinition( | ||
10 | SymbolDefinitionType.WixModule, | ||
11 | new[] | ||
12 | { | ||
13 | new IntermediateFieldDefinition(nameof(WixModuleSymbolFields.ModuleId), IntermediateFieldType.String), | ||
14 | new IntermediateFieldDefinition(nameof(WixModuleSymbolFields.Language), IntermediateFieldType.String), | ||
15 | new IntermediateFieldDefinition(nameof(WixModuleSymbolFields.Version), IntermediateFieldType.String), | ||
16 | new IntermediateFieldDefinition(nameof(WixModuleSymbolFields.Codepage), IntermediateFieldType.String), | ||
17 | }, | ||
18 | typeof(WixModuleSymbol)); | ||
19 | } | ||
20 | } | ||
21 | |||
22 | namespace WixToolset.Data.Symbols | ||
23 | { | ||
24 | public enum WixModuleSymbolFields | ||
25 | { | ||
26 | ModuleId, | ||
27 | Language, | ||
28 | Version, | ||
29 | Codepage, | ||
30 | } | ||
31 | |||
32 | public class WixModuleSymbol : IntermediateSymbol | ||
33 | { | ||
34 | public WixModuleSymbol() : base(SymbolDefinitions.WixModule, null, null) | ||
35 | { | ||
36 | } | ||
37 | |||
38 | public WixModuleSymbol(SourceLineNumber sourceLineNumber, Identifier id = null) : base(SymbolDefinitions.WixModule, sourceLineNumber, id) | ||
39 | { | ||
40 | } | ||
41 | |||
42 | public IntermediateField this[WixModuleSymbolFields index] => this.Fields[(int)index]; | ||
43 | |||
44 | public string ModuleId | ||
45 | { | ||
46 | get => (string)this.Fields[(int)WixModuleSymbolFields.ModuleId]; | ||
47 | set => this.Set((int)WixModuleSymbolFields.ModuleId, value); | ||
48 | } | ||
49 | |||
50 | public string Language | ||
51 | { | ||
52 | get => (string)this.Fields[(int)WixModuleSymbolFields.Language]; | ||
53 | set => this.Set((int)WixModuleSymbolFields.Language, value); | ||
54 | } | ||
55 | |||
56 | public string Version | ||
57 | { | ||
58 | get => (string)this.Fields[(int)WixModuleSymbolFields.Version]; | ||
59 | set => this.Set((int)WixModuleSymbolFields.Version, value); | ||
60 | } | ||
61 | |||
62 | public string Codepage | ||
63 | { | ||
64 | get => (string)this.Fields[(int)WixModuleSymbolFields.Codepage]; | ||
65 | set => this.Set((int)WixModuleSymbolFields.Codepage, value); | ||
66 | } | ||
67 | } | ||
68 | } | ||
diff --git a/src/api/wix/WixToolset.Data/Symbols/WixOrderingSymbol.cs b/src/api/wix/WixToolset.Data/Symbols/WixOrderingSymbol.cs new file mode 100644 index 00000000..5e6dc980 --- /dev/null +++ b/src/api/wix/WixToolset.Data/Symbols/WixOrderingSymbol.cs | |||
@@ -0,0 +1,68 @@ | |||
1 | // Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. | ||
2 | |||
3 | namespace WixToolset.Data | ||
4 | { | ||
5 | using WixToolset.Data.Symbols; | ||
6 | |||
7 | public static partial class SymbolDefinitions | ||
8 | { | ||
9 | public static readonly IntermediateSymbolDefinition WixOrdering = new IntermediateSymbolDefinition( | ||
10 | SymbolDefinitionType.WixOrdering, | ||
11 | new[] | ||
12 | { | ||
13 | new IntermediateFieldDefinition(nameof(WixOrderingSymbolFields.ItemType), IntermediateFieldType.String), | ||
14 | new IntermediateFieldDefinition(nameof(WixOrderingSymbolFields.ItemIdRef), IntermediateFieldType.String), | ||
15 | new IntermediateFieldDefinition(nameof(WixOrderingSymbolFields.DependsOnType), IntermediateFieldType.String), | ||
16 | new IntermediateFieldDefinition(nameof(WixOrderingSymbolFields.DependsOnIdRef), IntermediateFieldType.String), | ||
17 | }, | ||
18 | typeof(WixOrderingSymbol)); | ||
19 | } | ||
20 | } | ||
21 | |||
22 | namespace WixToolset.Data.Symbols | ||
23 | { | ||
24 | public enum WixOrderingSymbolFields | ||
25 | { | ||
26 | ItemType, | ||
27 | ItemIdRef, | ||
28 | DependsOnType, | ||
29 | DependsOnIdRef, | ||
30 | } | ||
31 | |||
32 | public class WixOrderingSymbol : IntermediateSymbol | ||
33 | { | ||
34 | public WixOrderingSymbol() : base(SymbolDefinitions.WixOrdering, null, null) | ||
35 | { | ||
36 | } | ||
37 | |||
38 | public WixOrderingSymbol(SourceLineNumber sourceLineNumber, Identifier id = null) : base(SymbolDefinitions.WixOrdering, sourceLineNumber, id) | ||
39 | { | ||
40 | } | ||
41 | |||
42 | public IntermediateField this[WixOrderingSymbolFields index] => this.Fields[(int)index]; | ||
43 | |||
44 | public ComplexReferenceChildType ItemType | ||
45 | { | ||
46 | get => (ComplexReferenceChildType)this.Fields[(int)WixOrderingSymbolFields.ItemType].AsNumber(); | ||
47 | set => this.Set((int)WixOrderingSymbolFields.ItemType, (int)value); | ||
48 | } | ||
49 | |||
50 | public string ItemIdRef | ||
51 | { | ||
52 | get => (string)this.Fields[(int)WixOrderingSymbolFields.ItemIdRef]; | ||
53 | set => this.Set((int)WixOrderingSymbolFields.ItemIdRef, value); | ||
54 | } | ||
55 | |||
56 | public ComplexReferenceChildType DependsOnType | ||
57 | { | ||
58 | get => (ComplexReferenceChildType)this.Fields[(int)WixOrderingSymbolFields.DependsOnType].AsNumber(); | ||
59 | set => this.Set((int)WixOrderingSymbolFields.DependsOnType, (int)value); | ||
60 | } | ||
61 | |||
62 | public string DependsOnIdRef | ||
63 | { | ||
64 | get => (string)this.Fields[(int)WixOrderingSymbolFields.DependsOnIdRef]; | ||
65 | set => this.Set((int)WixOrderingSymbolFields.DependsOnIdRef, value); | ||
66 | } | ||
67 | } | ||
68 | } \ No newline at end of file | ||
diff --git a/src/api/wix/WixToolset.Data/Symbols/WixPackageSymbol.cs b/src/api/wix/WixToolset.Data/Symbols/WixPackageSymbol.cs new file mode 100644 index 00000000..e1720033 --- /dev/null +++ b/src/api/wix/WixToolset.Data/Symbols/WixPackageSymbol.cs | |||
@@ -0,0 +1,111 @@ | |||
1 | // Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. | ||
2 | |||
3 | namespace WixToolset.Data | ||
4 | { | ||
5 | using WixToolset.Data.Symbols; | ||
6 | |||
7 | public static partial class SymbolDefinitions | ||
8 | { | ||
9 | public static readonly IntermediateSymbolDefinition WixPackage = new IntermediateSymbolDefinition( | ||
10 | SymbolDefinitionType.WixPackage, | ||
11 | new[] | ||
12 | { | ||
13 | new IntermediateFieldDefinition(nameof(WixPackageSymbolFields.PackageId), IntermediateFieldType.String), | ||
14 | new IntermediateFieldDefinition(nameof(WixPackageSymbolFields.UpgradeCode), IntermediateFieldType.String), | ||
15 | new IntermediateFieldDefinition(nameof(WixPackageSymbolFields.Name), IntermediateFieldType.String), | ||
16 | new IntermediateFieldDefinition(nameof(WixPackageSymbolFields.Language), IntermediateFieldType.String), | ||
17 | new IntermediateFieldDefinition(nameof(WixPackageSymbolFields.Version), IntermediateFieldType.String), | ||
18 | new IntermediateFieldDefinition(nameof(WixPackageSymbolFields.Manufacturer), IntermediateFieldType.String), | ||
19 | new IntermediateFieldDefinition(nameof(WixPackageSymbolFields.Attributes), IntermediateFieldType.Number), | ||
20 | new IntermediateFieldDefinition(nameof(WixPackageSymbolFields.Codepage), IntermediateFieldType.String), | ||
21 | }, | ||
22 | typeof(WixPackageSymbol)); | ||
23 | } | ||
24 | } | ||
25 | |||
26 | namespace WixToolset.Data.Symbols | ||
27 | { | ||
28 | using System; | ||
29 | |||
30 | public enum WixPackageSymbolFields | ||
31 | { | ||
32 | PackageId, | ||
33 | UpgradeCode, | ||
34 | Name, | ||
35 | Language, | ||
36 | Version, | ||
37 | Manufacturer, | ||
38 | Attributes, | ||
39 | Codepage, | ||
40 | } | ||
41 | |||
42 | [Flags] | ||
43 | public enum WixPackageAttributes | ||
44 | { | ||
45 | None = 0x0, | ||
46 | PerMachine = 0x1, | ||
47 | } | ||
48 | |||
49 | public class WixPackageSymbol : IntermediateSymbol | ||
50 | { | ||
51 | public WixPackageSymbol() : base(SymbolDefinitions.WixPackage, null, null) | ||
52 | { | ||
53 | } | ||
54 | |||
55 | public WixPackageSymbol(SourceLineNumber sourceLineNumber, Identifier id = null) : base(SymbolDefinitions.WixPackage, sourceLineNumber, id) | ||
56 | { | ||
57 | } | ||
58 | |||
59 | public IntermediateField this[WixPackageSymbolFields index] => this.Fields[(int)index]; | ||
60 | |||
61 | public string PackageId | ||
62 | { | ||
63 | get => (string)this.Fields[(int)WixPackageSymbolFields.PackageId]; | ||
64 | set => this.Set((int)WixPackageSymbolFields.PackageId, value); | ||
65 | } | ||
66 | |||
67 | public string UpgradeCode | ||
68 | { | ||
69 | get => (string)this.Fields[(int)WixPackageSymbolFields.UpgradeCode]; | ||
70 | set => this.Set((int)WixPackageSymbolFields.UpgradeCode, value); | ||
71 | } | ||
72 | |||
73 | public string Name | ||
74 | { | ||
75 | get => (string)this.Fields[(int)WixPackageSymbolFields.Name]; | ||
76 | set => this.Set((int)WixPackageSymbolFields.Name, value); | ||
77 | } | ||
78 | |||
79 | public string Language | ||
80 | { | ||
81 | get => (string)this.Fields[(int)WixPackageSymbolFields.Language]; | ||
82 | set => this.Set((int)WixPackageSymbolFields.Language, value); | ||
83 | } | ||
84 | |||
85 | public string Version | ||
86 | { | ||
87 | get => (string)this.Fields[(int)WixPackageSymbolFields.Version]; | ||
88 | set => this.Set((int)WixPackageSymbolFields.Version, value); | ||
89 | } | ||
90 | |||
91 | public string Manufacturer | ||
92 | { | ||
93 | get => (string)this.Fields[(int)WixPackageSymbolFields.Manufacturer]; | ||
94 | set => this.Set((int)WixPackageSymbolFields.Manufacturer, value); | ||
95 | } | ||
96 | |||
97 | public WixPackageAttributes Attributes | ||
98 | { | ||
99 | get => (WixPackageAttributes)this.Fields[(int)WixPackageSymbolFields.Attributes].AsNumber(); | ||
100 | set => this.Set((int)WixPackageSymbolFields.Attributes, (int)value); | ||
101 | } | ||
102 | |||
103 | public string Codepage | ||
104 | { | ||
105 | get => (string)this.Fields[(int)WixPackageSymbolFields.Codepage]; | ||
106 | set => this.Set((int)WixPackageSymbolFields.Codepage, value); | ||
107 | } | ||
108 | |||
109 | public bool PerMachine => (this.Attributes & WixPackageAttributes.PerMachine) == WixPackageAttributes.PerMachine; | ||
110 | } | ||
111 | } | ||
diff --git a/src/api/wix/WixToolset.Data/Symbols/WixPatchBaselineSymbol.cs b/src/api/wix/WixToolset.Data/Symbols/WixPatchBaselineSymbol.cs new file mode 100644 index 00000000..d7295424 --- /dev/null +++ b/src/api/wix/WixToolset.Data/Symbols/WixPatchBaselineSymbol.cs | |||
@@ -0,0 +1,76 @@ | |||
1 | // Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. | ||
2 | |||
3 | namespace WixToolset.Data | ||
4 | { | ||
5 | using WixToolset.Data.Symbols; | ||
6 | |||
7 | public static partial class SymbolDefinitions | ||
8 | { | ||
9 | public static readonly IntermediateSymbolDefinition WixPatchBaseline = new IntermediateSymbolDefinition( | ||
10 | SymbolDefinitionType.WixPatchBaseline, | ||
11 | new[] | ||
12 | { | ||
13 | new IntermediateFieldDefinition(nameof(WixPatchBaselineSymbolFields.DiskId), IntermediateFieldType.Number), | ||
14 | new IntermediateFieldDefinition(nameof(WixPatchBaselineSymbolFields.ValidationFlags), IntermediateFieldType.Number), | ||
15 | new IntermediateFieldDefinition(nameof(WixPatchBaselineSymbolFields.BaselineFile), IntermediateFieldType.Path), | ||
16 | new IntermediateFieldDefinition(nameof(WixPatchBaselineSymbolFields.UpdateFile), IntermediateFieldType.Path), | ||
17 | new IntermediateFieldDefinition(nameof(WixPatchBaselineSymbolFields.TransformFile), IntermediateFieldType.Path), | ||
18 | }, | ||
19 | typeof(WixPatchBaselineSymbol)); | ||
20 | } | ||
21 | } | ||
22 | |||
23 | namespace WixToolset.Data.Symbols | ||
24 | { | ||
25 | public enum WixPatchBaselineSymbolFields | ||
26 | { | ||
27 | DiskId, | ||
28 | ValidationFlags, | ||
29 | BaselineFile, | ||
30 | UpdateFile, | ||
31 | TransformFile, | ||
32 | } | ||
33 | |||
34 | public class WixPatchBaselineSymbol : IntermediateSymbol | ||
35 | { | ||
36 | public WixPatchBaselineSymbol() : base(SymbolDefinitions.WixPatchBaseline, null, null) | ||
37 | { | ||
38 | } | ||
39 | |||
40 | public WixPatchBaselineSymbol(SourceLineNumber sourceLineNumber, Identifier id = null) : base(SymbolDefinitions.WixPatchBaseline, sourceLineNumber, id) | ||
41 | { | ||
42 | } | ||
43 | |||
44 | public IntermediateField this[WixPatchBaselineSymbolFields index] => this.Fields[(int)index]; | ||
45 | |||
46 | public int DiskId | ||
47 | { | ||
48 | get => (int)this.Fields[(int)WixPatchBaselineSymbolFields.DiskId]; | ||
49 | set => this.Set((int)WixPatchBaselineSymbolFields.DiskId, value); | ||
50 | } | ||
51 | |||
52 | public TransformFlags ValidationFlags | ||
53 | { | ||
54 | get => (TransformFlags)this.Fields[(int)WixPatchBaselineSymbolFields.ValidationFlags].AsNumber(); | ||
55 | set => this.Set((int)WixPatchBaselineSymbolFields.ValidationFlags, (int)value); | ||
56 | } | ||
57 | |||
58 | public IntermediateFieldPathValue BaselineFile | ||
59 | { | ||
60 | get => this.Fields[(int)WixPatchBaselineSymbolFields.BaselineFile].AsPath(); | ||
61 | set => this.Set((int)WixPatchBaselineSymbolFields.BaselineFile, value); | ||
62 | } | ||
63 | |||
64 | public IntermediateFieldPathValue UpdateFile | ||
65 | { | ||
66 | get => this.Fields[(int)WixPatchBaselineSymbolFields.UpdateFile].AsPath(); | ||
67 | set => this.Set((int)WixPatchBaselineSymbolFields.UpdateFile, value); | ||
68 | } | ||
69 | |||
70 | public IntermediateFieldPathValue TransformFile | ||
71 | { | ||
72 | get => this.Fields[(int)WixPatchBaselineSymbolFields.TransformFile].AsPath(); | ||
73 | set => this.Set((int)WixPatchBaselineSymbolFields.TransformFile, value); | ||
74 | } | ||
75 | } | ||
76 | } | ||
diff --git a/src/api/wix/WixToolset.Data/Symbols/WixPatchFamilyGroupSymbol.cs b/src/api/wix/WixToolset.Data/Symbols/WixPatchFamilyGroupSymbol.cs new file mode 100644 index 00000000..3ab34f1f --- /dev/null +++ b/src/api/wix/WixToolset.Data/Symbols/WixPatchFamilyGroupSymbol.cs | |||
@@ -0,0 +1,44 @@ | |||
1 | // Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. | ||
2 | |||
3 | namespace WixToolset.Data | ||
4 | { | ||
5 | using WixToolset.Data.Symbols; | ||
6 | |||
7 | public static partial class SymbolDefinitions | ||
8 | { | ||
9 | public static readonly IntermediateSymbolDefinition WixPatchFamilyGroup = new IntermediateSymbolDefinition( | ||
10 | SymbolDefinitionType.WixPatchFamilyGroup, | ||
11 | new[] | ||
12 | { | ||
13 | new IntermediateFieldDefinition(nameof(WixPatchFamilyGroupSymbolFields.WixPatchFamilyGroup), IntermediateFieldType.String), | ||
14 | }, | ||
15 | typeof(WixPatchFamilyGroupSymbol)); | ||
16 | } | ||
17 | } | ||
18 | |||
19 | namespace WixToolset.Data.Symbols | ||
20 | { | ||
21 | public enum WixPatchFamilyGroupSymbolFields | ||
22 | { | ||
23 | WixPatchFamilyGroup, | ||
24 | } | ||
25 | |||
26 | public class WixPatchFamilyGroupSymbol : IntermediateSymbol | ||
27 | { | ||
28 | public WixPatchFamilyGroupSymbol() : base(SymbolDefinitions.WixPatchFamilyGroup, null, null) | ||
29 | { | ||
30 | } | ||
31 | |||
32 | public WixPatchFamilyGroupSymbol(SourceLineNumber sourceLineNumber, Identifier id = null) : base(SymbolDefinitions.WixPatchFamilyGroup, sourceLineNumber, id) | ||
33 | { | ||
34 | } | ||
35 | |||
36 | public IntermediateField this[WixPatchFamilyGroupSymbolFields index] => this.Fields[(int)index]; | ||
37 | |||
38 | public string WixPatchFamilyGroup | ||
39 | { | ||
40 | get => (string)this.Fields[(int)WixPatchFamilyGroupSymbolFields.WixPatchFamilyGroup]; | ||
41 | set => this.Set((int)WixPatchFamilyGroupSymbolFields.WixPatchFamilyGroup, value); | ||
42 | } | ||
43 | } | ||
44 | } \ No newline at end of file | ||
diff --git a/src/api/wix/WixToolset.Data/Symbols/WixPatchRefSymbol.cs b/src/api/wix/WixToolset.Data/Symbols/WixPatchRefSymbol.cs new file mode 100644 index 00000000..66257d84 --- /dev/null +++ b/src/api/wix/WixToolset.Data/Symbols/WixPatchRefSymbol.cs | |||
@@ -0,0 +1,52 @@ | |||
1 | // Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. | ||
2 | |||
3 | namespace WixToolset.Data | ||
4 | { | ||
5 | using WixToolset.Data.Symbols; | ||
6 | |||
7 | public static partial class SymbolDefinitions | ||
8 | { | ||
9 | public static readonly IntermediateSymbolDefinition WixPatchRef = new IntermediateSymbolDefinition( | ||
10 | SymbolDefinitionType.WixPatchRef, | ||
11 | new[] | ||
12 | { | ||
13 | new IntermediateFieldDefinition(nameof(WixPatchRefSymbolFields.Table), IntermediateFieldType.String), | ||
14 | new IntermediateFieldDefinition(nameof(WixPatchRefSymbolFields.PrimaryKeys), IntermediateFieldType.String), | ||
15 | }, | ||
16 | typeof(WixPatchRefSymbol)); | ||
17 | } | ||
18 | } | ||
19 | |||
20 | namespace WixToolset.Data.Symbols | ||
21 | { | ||
22 | public enum WixPatchRefSymbolFields | ||
23 | { | ||
24 | Table, | ||
25 | PrimaryKeys, | ||
26 | } | ||
27 | |||
28 | public class WixPatchRefSymbol : IntermediateSymbol | ||
29 | { | ||
30 | public WixPatchRefSymbol() : base(SymbolDefinitions.WixPatchRef, null, null) | ||
31 | { | ||
32 | } | ||
33 | |||
34 | public WixPatchRefSymbol(SourceLineNumber sourceLineNumber, Identifier id = null) : base(SymbolDefinitions.WixPatchRef, sourceLineNumber, id) | ||
35 | { | ||
36 | } | ||
37 | |||
38 | public IntermediateField this[WixPatchRefSymbolFields index] => this.Fields[(int)index]; | ||
39 | |||
40 | public string Table | ||
41 | { | ||
42 | get => (string)this.Fields[(int)WixPatchRefSymbolFields.Table]; | ||
43 | set => this.Set((int)WixPatchRefSymbolFields.Table, value); | ||
44 | } | ||
45 | |||
46 | public string PrimaryKeys | ||
47 | { | ||
48 | get => (string)this.Fields[(int)WixPatchRefSymbolFields.PrimaryKeys]; | ||
49 | set => this.Set((int)WixPatchRefSymbolFields.PrimaryKeys, value); | ||
50 | } | ||
51 | } | ||
52 | } \ No newline at end of file | ||
diff --git a/src/api/wix/WixToolset.Data/Symbols/WixPatchSymbol.cs b/src/api/wix/WixToolset.Data/Symbols/WixPatchSymbol.cs new file mode 100644 index 00000000..3f1f20bb --- /dev/null +++ b/src/api/wix/WixToolset.Data/Symbols/WixPatchSymbol.cs | |||
@@ -0,0 +1,98 @@ | |||
1 | // Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. | ||
2 | |||
3 | namespace WixToolset.Data | ||
4 | { | ||
5 | using WixToolset.Data.Symbols; | ||
6 | |||
7 | public static partial class SymbolDefinitions | ||
8 | { | ||
9 | public static readonly IntermediateSymbolDefinition WixPatchId = new IntermediateSymbolDefinition( | ||
10 | SymbolDefinitionType.WixPatch, | ||
11 | new[] | ||
12 | { | ||
13 | new IntermediateFieldDefinition(nameof(WixPatchSymbolFields.ClientPatchId), IntermediateFieldType.String), | ||
14 | new IntermediateFieldDefinition(nameof(WixPatchSymbolFields.OptimizePatchSizeForLargeFiles), IntermediateFieldType.Bool), | ||
15 | new IntermediateFieldDefinition(nameof(WixPatchSymbolFields.ApiPatchingSymbolFlags), IntermediateFieldType.Number), | ||
16 | new IntermediateFieldDefinition(nameof(WixPatchSymbolFields.Codepage), IntermediateFieldType.String), | ||
17 | }, | ||
18 | typeof(WixPatchSymbol)); | ||
19 | } | ||
20 | } | ||
21 | |||
22 | namespace WixToolset.Data.Symbols | ||
23 | { | ||
24 | using System; | ||
25 | |||
26 | public enum WixPatchSymbolFields | ||
27 | { | ||
28 | ClientPatchId, | ||
29 | OptimizePatchSizeForLargeFiles, | ||
30 | ApiPatchingSymbolFlags, | ||
31 | Codepage, | ||
32 | } | ||
33 | |||
34 | /// <summary> | ||
35 | /// The following flags are used with PATCH_OPTION_DATA SymbolOptionFlags: | ||
36 | /// </summary> | ||
37 | [Flags] | ||
38 | [CLSCompliant(false)] | ||
39 | public enum PatchSymbolFlags : uint | ||
40 | { | ||
41 | /// <summary> | ||
42 | /// Don't use imagehlp.dll | ||
43 | /// </summary> | ||
44 | PatchSymbolNoImagehlp = 0x00000001, | ||
45 | |||
46 | /// <summary> | ||
47 | /// Don't fail patch due to imagehlp failures. | ||
48 | /// </summary> | ||
49 | PatchSymbolNoFailures = 0x00000002, | ||
50 | |||
51 | /// <summary> | ||
52 | /// After matching decorated symbols, try to match remaining by undecorated names. | ||
53 | /// </summary> | ||
54 | PatchSymbolUndecoratedToo = 0x00000004, | ||
55 | |||
56 | /// <summary> | ||
57 | /// (used internally) | ||
58 | /// </summary> | ||
59 | PatchSymbolReserved = 0x80000000, | ||
60 | } | ||
61 | |||
62 | public class WixPatchSymbol : IntermediateSymbol | ||
63 | { | ||
64 | public WixPatchSymbol() : base(SymbolDefinitions.WixPatchId, null, null) | ||
65 | { | ||
66 | } | ||
67 | |||
68 | public WixPatchSymbol(SourceLineNumber sourceLineNumber, Identifier id = null) : base(SymbolDefinitions.WixPatchId, sourceLineNumber, id) | ||
69 | { | ||
70 | } | ||
71 | |||
72 | public IntermediateField this[WixPatchSymbolFields index] => this.Fields[(int)index]; | ||
73 | |||
74 | public string ClientPatchId | ||
75 | { | ||
76 | get => (string)this.Fields[(int)WixPatchSymbolFields.ClientPatchId]; | ||
77 | set => this.Set((int)WixPatchSymbolFields.ClientPatchId, value); | ||
78 | } | ||
79 | |||
80 | public bool? OptimizePatchSizeForLargeFiles | ||
81 | { | ||
82 | get => (bool?)this.Fields[(int)WixPatchSymbolFields.OptimizePatchSizeForLargeFiles]; | ||
83 | set => this.Set((int)WixPatchSymbolFields.OptimizePatchSizeForLargeFiles, value); | ||
84 | } | ||
85 | |||
86 | public int? ApiPatchingSymbolFlags | ||
87 | { | ||
88 | get => (int?)this.Fields[(int)WixPatchSymbolFields.ApiPatchingSymbolFlags]; | ||
89 | set => this.Set((int)WixPatchSymbolFields.ApiPatchingSymbolFlags, value); | ||
90 | } | ||
91 | |||
92 | public string Codepage | ||
93 | { | ||
94 | get => (string)this.Fields[(int)WixPatchSymbolFields.Codepage]; | ||
95 | set => this.Set((int)WixPatchSymbolFields.Codepage, value); | ||
96 | } | ||
97 | } | ||
98 | } \ No newline at end of file | ||
diff --git a/src/api/wix/WixToolset.Data/Symbols/WixPatchTargetSymbol.cs b/src/api/wix/WixToolset.Data/Symbols/WixPatchTargetSymbol.cs new file mode 100644 index 00000000..e8c01c26 --- /dev/null +++ b/src/api/wix/WixToolset.Data/Symbols/WixPatchTargetSymbol.cs | |||
@@ -0,0 +1,44 @@ | |||
1 | // Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. | ||
2 | |||
3 | namespace WixToolset.Data | ||
4 | { | ||
5 | using WixToolset.Data.Symbols; | ||
6 | |||
7 | public static partial class SymbolDefinitions | ||
8 | { | ||
9 | public static readonly IntermediateSymbolDefinition WixPatchTarget = new IntermediateSymbolDefinition( | ||
10 | SymbolDefinitionType.WixPatchTarget, | ||
11 | new[] | ||
12 | { | ||
13 | new IntermediateFieldDefinition(nameof(WixPatchTargetSymbolFields.ProductCode), IntermediateFieldType.String), | ||
14 | }, | ||
15 | typeof(WixPatchTargetSymbol)); | ||
16 | } | ||
17 | } | ||
18 | |||
19 | namespace WixToolset.Data.Symbols | ||
20 | { | ||
21 | public enum WixPatchTargetSymbolFields | ||
22 | { | ||
23 | ProductCode, | ||
24 | } | ||
25 | |||
26 | public class WixPatchTargetSymbol : IntermediateSymbol | ||
27 | { | ||
28 | public WixPatchTargetSymbol() : base(SymbolDefinitions.WixPatchTarget, null, null) | ||
29 | { | ||
30 | } | ||
31 | |||
32 | public WixPatchTargetSymbol(SourceLineNumber sourceLineNumber, Identifier id = null) : base(SymbolDefinitions.WixPatchTarget, sourceLineNumber, id) | ||
33 | { | ||
34 | } | ||
35 | |||
36 | public IntermediateField this[WixPatchTargetSymbolFields index] => this.Fields[(int)index]; | ||
37 | |||
38 | public string ProductCode | ||
39 | { | ||
40 | get => (string)this.Fields[(int)WixPatchTargetSymbolFields.ProductCode]; | ||
41 | set => this.Set((int)WixPatchTargetSymbolFields.ProductCode, value); | ||
42 | } | ||
43 | } | ||
44 | } \ No newline at end of file | ||
diff --git a/src/api/wix/WixToolset.Data/Symbols/WixProductSearchSymbol.cs b/src/api/wix/WixToolset.Data/Symbols/WixProductSearchSymbol.cs new file mode 100644 index 00000000..f8a17b64 --- /dev/null +++ b/src/api/wix/WixToolset.Data/Symbols/WixProductSearchSymbol.cs | |||
@@ -0,0 +1,64 @@ | |||
1 | // Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. | ||
2 | |||
3 | namespace WixToolset.Data | ||
4 | { | ||
5 | using WixToolset.Data.Symbols; | ||
6 | |||
7 | public static partial class SymbolDefinitions | ||
8 | { | ||
9 | public static readonly IntermediateSymbolDefinition WixProductSearch = new IntermediateSymbolDefinition( | ||
10 | SymbolDefinitionType.WixProductSearch, | ||
11 | new[] | ||
12 | { | ||
13 | new IntermediateFieldDefinition(nameof(WixProductSearchSymbolFields.Guid), IntermediateFieldType.String), | ||
14 | new IntermediateFieldDefinition(nameof(WixProductSearchSymbolFields.Attributes), IntermediateFieldType.Number), | ||
15 | }, | ||
16 | typeof(WixProductSearchSymbol)); | ||
17 | } | ||
18 | } | ||
19 | |||
20 | namespace WixToolset.Data.Symbols | ||
21 | { | ||
22 | using System; | ||
23 | |||
24 | public enum WixProductSearchSymbolFields | ||
25 | { | ||
26 | Guid, | ||
27 | Attributes, | ||
28 | } | ||
29 | |||
30 | [Flags] | ||
31 | public enum WixProductSearchAttributes | ||
32 | { | ||
33 | Version = 0x1, | ||
34 | Language = 0x2, | ||
35 | State = 0x4, | ||
36 | Assignment = 0x8, | ||
37 | UpgradeCode = 0x10, | ||
38 | } | ||
39 | |||
40 | public class WixProductSearchSymbol : IntermediateSymbol | ||
41 | { | ||
42 | public WixProductSearchSymbol() : base(SymbolDefinitions.WixProductSearch, null, null) | ||
43 | { | ||
44 | } | ||
45 | |||
46 | public WixProductSearchSymbol(SourceLineNumber sourceLineNumber, Identifier id = null) : base(SymbolDefinitions.WixProductSearch, sourceLineNumber, id) | ||
47 | { | ||
48 | } | ||
49 | |||
50 | public IntermediateField this[WixProductSearchSymbolFields index] => this.Fields[(int)index]; | ||
51 | |||
52 | public string Guid | ||
53 | { | ||
54 | get => (string)this.Fields[(int)WixProductSearchSymbolFields.Guid]; | ||
55 | set => this.Set((int)WixProductSearchSymbolFields.Guid, value); | ||
56 | } | ||
57 | |||
58 | public WixProductSearchAttributes Attributes | ||
59 | { | ||
60 | get => (WixProductSearchAttributes)this.Fields[(int)WixProductSearchSymbolFields.Attributes].AsNumber(); | ||
61 | set => this.Set((int)WixProductSearchSymbolFields.Attributes, (int)value); | ||
62 | } | ||
63 | } | ||
64 | } | ||
diff --git a/src/api/wix/WixToolset.Data/Symbols/WixProductTagSymbol.cs b/src/api/wix/WixToolset.Data/Symbols/WixProductTagSymbol.cs new file mode 100644 index 00000000..a2f1ed11 --- /dev/null +++ b/src/api/wix/WixToolset.Data/Symbols/WixProductTagSymbol.cs | |||
@@ -0,0 +1,68 @@ | |||
1 | // Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. | ||
2 | |||
3 | namespace WixToolset.Data | ||
4 | { | ||
5 | using WixToolset.Data.Symbols; | ||
6 | |||
7 | public static partial class SymbolDefinitions | ||
8 | { | ||
9 | public static readonly IntermediateSymbolDefinition WixProductTag = new IntermediateSymbolDefinition( | ||
10 | SymbolDefinitionType.WixProductTag, | ||
11 | new[] | ||
12 | { | ||
13 | new IntermediateFieldDefinition(nameof(WixProductTagSymbolFields.FileRef), IntermediateFieldType.String), | ||
14 | new IntermediateFieldDefinition(nameof(WixProductTagSymbolFields.Regid), IntermediateFieldType.String), | ||
15 | new IntermediateFieldDefinition(nameof(WixProductTagSymbolFields.Name), IntermediateFieldType.String), | ||
16 | new IntermediateFieldDefinition(nameof(WixProductTagSymbolFields.Attributes), IntermediateFieldType.Number) | ||
17 | }, | ||
18 | typeof(WixProductTagSymbol)); | ||
19 | } | ||
20 | } | ||
21 | |||
22 | namespace WixToolset.Data.Symbols | ||
23 | { | ||
24 | public enum WixProductTagSymbolFields | ||
25 | { | ||
26 | FileRef, | ||
27 | Regid, | ||
28 | Name, | ||
29 | Attributes | ||
30 | } | ||
31 | |||
32 | public class WixProductTagSymbol : IntermediateSymbol | ||
33 | { | ||
34 | public WixProductTagSymbol() : base(SymbolDefinitions.WixProductTag, null, null) | ||
35 | { | ||
36 | } | ||
37 | |||
38 | public WixProductTagSymbol(SourceLineNumber sourceLineNumber, Identifier id = null) : base(SymbolDefinitions.WixProductTag, sourceLineNumber, id) | ||
39 | { | ||
40 | } | ||
41 | |||
42 | public IntermediateField this[WixProductTagSymbolFields index] => this.Fields[(int)index]; | ||
43 | |||
44 | public string FileRef | ||
45 | { | ||
46 | get => this.Fields[(int)WixProductTagSymbolFields.FileRef].AsString(); | ||
47 | set => this.Set((int)WixProductTagSymbolFields.FileRef, value); | ||
48 | } | ||
49 | |||
50 | public string Regid | ||
51 | { | ||
52 | get => this.Fields[(int)WixProductTagSymbolFields.Regid].AsString(); | ||
53 | set => this.Set((int)WixProductTagSymbolFields.Regid, value); | ||
54 | } | ||
55 | |||
56 | public string Name | ||
57 | { | ||
58 | get => this.Fields[(int)WixProductTagSymbolFields.Name].AsString(); | ||
59 | set => this.Set((int)WixProductTagSymbolFields.Name, value); | ||
60 | } | ||
61 | |||
62 | public int Attributes | ||
63 | { | ||
64 | get => this.Fields[(int)WixProductTagSymbolFields.Attributes].AsNumber(); | ||
65 | set => this.Set((int)WixProductTagSymbolFields.Attributes, value); | ||
66 | } | ||
67 | } | ||
68 | } | ||
diff --git a/src/api/wix/WixToolset.Data/Symbols/WixPropertySymbol.cs b/src/api/wix/WixToolset.Data/Symbols/WixPropertySymbol.cs new file mode 100644 index 00000000..17cf59ce --- /dev/null +++ b/src/api/wix/WixToolset.Data/Symbols/WixPropertySymbol.cs | |||
@@ -0,0 +1,68 @@ | |||
1 | // Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. | ||
2 | |||
3 | namespace WixToolset.Data | ||
4 | { | ||
5 | using WixToolset.Data.Symbols; | ||
6 | |||
7 | public static partial class SymbolDefinitions | ||
8 | { | ||
9 | public static readonly IntermediateSymbolDefinition WixProperty = new IntermediateSymbolDefinition( | ||
10 | SymbolDefinitionType.WixProperty, | ||
11 | new[] | ||
12 | { | ||
13 | new IntermediateFieldDefinition(nameof(WixPropertySymbolFields.PropertyRef), IntermediateFieldType.String), | ||
14 | new IntermediateFieldDefinition(nameof(WixPropertySymbolFields.Admin), IntermediateFieldType.Bool), | ||
15 | new IntermediateFieldDefinition(nameof(WixPropertySymbolFields.Hidden), IntermediateFieldType.Bool), | ||
16 | new IntermediateFieldDefinition(nameof(WixPropertySymbolFields.Secure), IntermediateFieldType.Bool), | ||
17 | }, | ||
18 | typeof(WixPropertySymbol)); | ||
19 | } | ||
20 | } | ||
21 | |||
22 | namespace WixToolset.Data.Symbols | ||
23 | { | ||
24 | public enum WixPropertySymbolFields | ||
25 | { | ||
26 | PropertyRef, | ||
27 | Admin, | ||
28 | Hidden, | ||
29 | Secure, | ||
30 | } | ||
31 | |||
32 | public class WixPropertySymbol : IntermediateSymbol | ||
33 | { | ||
34 | public WixPropertySymbol() : base(SymbolDefinitions.WixProperty, null, null) | ||
35 | { | ||
36 | } | ||
37 | |||
38 | public WixPropertySymbol(SourceLineNumber sourceLineNumber, Identifier id = null) : base(SymbolDefinitions.WixProperty, sourceLineNumber, id) | ||
39 | { | ||
40 | } | ||
41 | |||
42 | public IntermediateField this[WixPropertySymbolFields index] => this.Fields[(int)index]; | ||
43 | |||
44 | public string PropertyRef | ||
45 | { | ||
46 | get => (string)this.Fields[(int)WixPropertySymbolFields.PropertyRef]; | ||
47 | set => this.Set((int)WixPropertySymbolFields.PropertyRef, value); | ||
48 | } | ||
49 | |||
50 | public bool Admin | ||
51 | { | ||
52 | get => (bool)this.Fields[(int)WixPropertySymbolFields.Admin]; | ||
53 | set => this.Set((int)WixPropertySymbolFields.Admin, value); | ||
54 | } | ||
55 | |||
56 | public bool Hidden | ||
57 | { | ||
58 | get => (bool)this.Fields[(int)WixPropertySymbolFields.Hidden]; | ||
59 | set => this.Set((int)WixPropertySymbolFields.Hidden, value); | ||
60 | } | ||
61 | |||
62 | public bool Secure | ||
63 | { | ||
64 | get => (bool)this.Fields[(int)WixPropertySymbolFields.Secure]; | ||
65 | set => this.Set((int)WixPropertySymbolFields.Secure, value); | ||
66 | } | ||
67 | } | ||
68 | } \ No newline at end of file | ||
diff --git a/src/api/wix/WixToolset.Data/Symbols/WixRegistrySearchSymbol.cs b/src/api/wix/WixToolset.Data/Symbols/WixRegistrySearchSymbol.cs new file mode 100644 index 00000000..dffa8410 --- /dev/null +++ b/src/api/wix/WixToolset.Data/Symbols/WixRegistrySearchSymbol.cs | |||
@@ -0,0 +1,81 @@ | |||
1 | // Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. | ||
2 | |||
3 | namespace WixToolset.Data | ||
4 | { | ||
5 | using WixToolset.Data.Symbols; | ||
6 | |||
7 | public static partial class SymbolDefinitions | ||
8 | { | ||
9 | public static readonly IntermediateSymbolDefinition WixRegistrySearch = new IntermediateSymbolDefinition( | ||
10 | SymbolDefinitionType.WixRegistrySearch, | ||
11 | new[] | ||
12 | { | ||
13 | new IntermediateFieldDefinition(nameof(WixRegistrySearchSymbolFields.Root), IntermediateFieldType.Number), | ||
14 | new IntermediateFieldDefinition(nameof(WixRegistrySearchSymbolFields.Key), IntermediateFieldType.String), | ||
15 | new IntermediateFieldDefinition(nameof(WixRegistrySearchSymbolFields.Value), IntermediateFieldType.String), | ||
16 | new IntermediateFieldDefinition(nameof(WixRegistrySearchSymbolFields.Attributes), IntermediateFieldType.Number), | ||
17 | }, | ||
18 | typeof(WixRegistrySearchSymbol)); | ||
19 | } | ||
20 | } | ||
21 | |||
22 | namespace WixToolset.Data.Symbols | ||
23 | { | ||
24 | using System; | ||
25 | |||
26 | public enum WixRegistrySearchSymbolFields | ||
27 | { | ||
28 | Root, | ||
29 | Key, | ||
30 | Value, | ||
31 | Attributes, | ||
32 | } | ||
33 | |||
34 | [Flags] | ||
35 | public enum WixRegistrySearchAttributes | ||
36 | { | ||
37 | Raw = 0x01, | ||
38 | Compatible = 0x02, | ||
39 | ExpandEnvironmentVariables = 0x04, | ||
40 | WantValue = 0x08, | ||
41 | WantExists = 0x10, | ||
42 | Win64 = 0x20, | ||
43 | } | ||
44 | |||
45 | public class WixRegistrySearchSymbol : IntermediateSymbol | ||
46 | { | ||
47 | public WixRegistrySearchSymbol() : base(SymbolDefinitions.WixRegistrySearch, null, null) | ||
48 | { | ||
49 | } | ||
50 | |||
51 | public WixRegistrySearchSymbol(SourceLineNumber sourceLineNumber , Identifier id = null) : base(SymbolDefinitions.WixRegistrySearch, sourceLineNumber, id) | ||
52 | { | ||
53 | } | ||
54 | |||
55 | public IntermediateField this[WixRegistrySearchSymbolFields index] => this.Fields[(int)index]; | ||
56 | |||
57 | public RegistryRootType Root | ||
58 | { | ||
59 | get => (RegistryRootType)this.Fields[(int)WixRegistrySearchSymbolFields.Root].AsNumber(); | ||
60 | set => this.Set((int)WixRegistrySearchSymbolFields.Root, (int)value); | ||
61 | } | ||
62 | |||
63 | public string Key | ||
64 | { | ||
65 | get => (string)this.Fields[(int)WixRegistrySearchSymbolFields.Key]; | ||
66 | set => this.Set((int)WixRegistrySearchSymbolFields.Key, value); | ||
67 | } | ||
68 | |||
69 | public string Value | ||
70 | { | ||
71 | get => (string)this.Fields[(int)WixRegistrySearchSymbolFields.Value]; | ||
72 | set => this.Set((int)WixRegistrySearchSymbolFields.Value, value); | ||
73 | } | ||
74 | |||
75 | public WixRegistrySearchAttributes Attributes | ||
76 | { | ||
77 | get => (WixRegistrySearchAttributes)this.Fields[(int)WixRegistrySearchSymbolFields.Attributes].AsNumber(); | ||
78 | set => this.Set((int)WixRegistrySearchSymbolFields.Attributes, (int)value); | ||
79 | } | ||
80 | } | ||
81 | } | ||
diff --git a/src/api/wix/WixToolset.Data/Symbols/WixRelatedBundleSymbol.cs b/src/api/wix/WixToolset.Data/Symbols/WixRelatedBundleSymbol.cs new file mode 100644 index 00000000..dc544e29 --- /dev/null +++ b/src/api/wix/WixToolset.Data/Symbols/WixRelatedBundleSymbol.cs | |||
@@ -0,0 +1,60 @@ | |||
1 | // Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. | ||
2 | |||
3 | namespace WixToolset.Data | ||
4 | { | ||
5 | using WixToolset.Data.Symbols; | ||
6 | |||
7 | public static partial class SymbolDefinitions | ||
8 | { | ||
9 | public static readonly IntermediateSymbolDefinition WixRelatedBundle = new IntermediateSymbolDefinition( | ||
10 | SymbolDefinitionType.WixRelatedBundle, | ||
11 | new[] | ||
12 | { | ||
13 | new IntermediateFieldDefinition(nameof(WixRelatedBundleSymbolFields.BundleId), IntermediateFieldType.String), | ||
14 | new IntermediateFieldDefinition(nameof(WixRelatedBundleSymbolFields.Action), IntermediateFieldType.Number), | ||
15 | }, | ||
16 | typeof(WixRelatedBundleSymbol)); | ||
17 | } | ||
18 | } | ||
19 | |||
20 | namespace WixToolset.Data.Symbols | ||
21 | { | ||
22 | public enum WixRelatedBundleSymbolFields | ||
23 | { | ||
24 | BundleId, | ||
25 | Action, | ||
26 | } | ||
27 | |||
28 | public enum RelatedBundleActionType | ||
29 | { | ||
30 | Detect, | ||
31 | Upgrade, | ||
32 | Addon, | ||
33 | Patch | ||
34 | } | ||
35 | |||
36 | public class WixRelatedBundleSymbol : IntermediateSymbol | ||
37 | { | ||
38 | public WixRelatedBundleSymbol() : base(SymbolDefinitions.WixRelatedBundle, null, null) | ||
39 | { | ||
40 | } | ||
41 | |||
42 | public WixRelatedBundleSymbol(SourceLineNumber sourceLineNumber, Identifier id = null) : base(SymbolDefinitions.WixRelatedBundle, sourceLineNumber, id) | ||
43 | { | ||
44 | } | ||
45 | |||
46 | public IntermediateField this[WixRelatedBundleSymbolFields index] => this.Fields[(int)index]; | ||
47 | |||
48 | public string BundleId | ||
49 | { | ||
50 | get => (string)this.Fields[(int)WixRelatedBundleSymbolFields.BundleId]; | ||
51 | set => this.Set((int)WixRelatedBundleSymbolFields.BundleId, value); | ||
52 | } | ||
53 | |||
54 | public RelatedBundleActionType Action | ||
55 | { | ||
56 | get => (RelatedBundleActionType)this.Fields[(int)WixRelatedBundleSymbolFields.Action].AsNumber(); | ||
57 | set => this.Set((int)WixRelatedBundleSymbolFields.Action, (int)value); | ||
58 | } | ||
59 | } | ||
60 | } \ No newline at end of file | ||
diff --git a/src/api/wix/WixToolset.Data/Symbols/WixSearchRelationSymbol.cs b/src/api/wix/WixToolset.Data/Symbols/WixSearchRelationSymbol.cs new file mode 100644 index 00000000..6b47833a --- /dev/null +++ b/src/api/wix/WixToolset.Data/Symbols/WixSearchRelationSymbol.cs | |||
@@ -0,0 +1,52 @@ | |||
1 | // Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. | ||
2 | |||
3 | namespace WixToolset.Data | ||
4 | { | ||
5 | using WixToolset.Data.Symbols; | ||
6 | |||
7 | public static partial class SymbolDefinitions | ||
8 | { | ||
9 | public static readonly IntermediateSymbolDefinition WixSearchRelation = new IntermediateSymbolDefinition( | ||
10 | SymbolDefinitionType.WixSearchRelation, | ||
11 | new[] | ||
12 | { | ||
13 | new IntermediateFieldDefinition(nameof(WixSearchRelationSymbolFields.ParentSearchRef), IntermediateFieldType.String), | ||
14 | new IntermediateFieldDefinition(nameof(WixSearchRelationSymbolFields.Attributes), IntermediateFieldType.Number), | ||
15 | }, | ||
16 | typeof(WixSearchRelationSymbol)); | ||
17 | } | ||
18 | } | ||
19 | |||
20 | namespace WixToolset.Data.Symbols | ||
21 | { | ||
22 | public enum WixSearchRelationSymbolFields | ||
23 | { | ||
24 | ParentSearchRef, | ||
25 | Attributes, | ||
26 | } | ||
27 | |||
28 | public class WixSearchRelationSymbol : IntermediateSymbol | ||
29 | { | ||
30 | public WixSearchRelationSymbol() : base(SymbolDefinitions.WixSearchRelation, null, null) | ||
31 | { | ||
32 | } | ||
33 | |||
34 | public WixSearchRelationSymbol(SourceLineNumber sourceLineNumber, Identifier id = null) : base(SymbolDefinitions.WixSearchRelation, sourceLineNumber, id) | ||
35 | { | ||
36 | } | ||
37 | |||
38 | public IntermediateField this[WixSearchRelationSymbolFields index] => this.Fields[(int)index]; | ||
39 | |||
40 | public string ParentSearchRef | ||
41 | { | ||
42 | get => (string)this.Fields[(int)WixSearchRelationSymbolFields.ParentSearchRef]; | ||
43 | set => this.Set((int)WixSearchRelationSymbolFields.ParentSearchRef, value); | ||
44 | } | ||
45 | |||
46 | public int Attributes | ||
47 | { | ||
48 | get => (int)this.Fields[(int)WixSearchRelationSymbolFields.Attributes]; | ||
49 | set => this.Set((int)WixSearchRelationSymbolFields.Attributes, value); | ||
50 | } | ||
51 | } | ||
52 | } \ No newline at end of file | ||
diff --git a/src/api/wix/WixToolset.Data/Symbols/WixSearchSymbol.cs b/src/api/wix/WixToolset.Data/Symbols/WixSearchSymbol.cs new file mode 100644 index 00000000..2d6a927c --- /dev/null +++ b/src/api/wix/WixToolset.Data/Symbols/WixSearchSymbol.cs | |||
@@ -0,0 +1,60 @@ | |||
1 | // Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. | ||
2 | |||
3 | namespace WixToolset.Data | ||
4 | { | ||
5 | using WixToolset.Data.Symbols; | ||
6 | |||
7 | public static partial class SymbolDefinitions | ||
8 | { | ||
9 | public static readonly IntermediateSymbolDefinition WixSearch = new IntermediateSymbolDefinition( | ||
10 | SymbolDefinitionType.WixSearch, | ||
11 | new[] | ||
12 | { | ||
13 | new IntermediateFieldDefinition(nameof(WixSearchSymbolFields.Variable), IntermediateFieldType.String), | ||
14 | new IntermediateFieldDefinition(nameof(WixSearchSymbolFields.Condition), IntermediateFieldType.String), | ||
15 | new IntermediateFieldDefinition(nameof(WixSearchSymbolFields.BundleExtensionRef), IntermediateFieldType.String), | ||
16 | }, | ||
17 | typeof(WixSearchSymbol)); | ||
18 | } | ||
19 | } | ||
20 | |||
21 | namespace WixToolset.Data.Symbols | ||
22 | { | ||
23 | public enum WixSearchSymbolFields | ||
24 | { | ||
25 | Variable, | ||
26 | Condition, | ||
27 | BundleExtensionRef, | ||
28 | } | ||
29 | |||
30 | public class WixSearchSymbol : IntermediateSymbol | ||
31 | { | ||
32 | public WixSearchSymbol() : base(SymbolDefinitions.WixSearch, null, null) | ||
33 | { | ||
34 | } | ||
35 | |||
36 | public WixSearchSymbol(SourceLineNumber sourceLineNumber, Identifier id = null) : base(SymbolDefinitions.WixSearch, sourceLineNumber, id) | ||
37 | { | ||
38 | } | ||
39 | |||
40 | public IntermediateField this[WixSearchSymbolFields index] => this.Fields[(int)index]; | ||
41 | |||
42 | public string Variable | ||
43 | { | ||
44 | get => (string)this.Fields[(int)WixSearchSymbolFields.Variable]; | ||
45 | set => this.Set((int)WixSearchSymbolFields.Variable, value); | ||
46 | } | ||
47 | |||
48 | public string Condition | ||
49 | { | ||
50 | get => (string)this.Fields[(int)WixSearchSymbolFields.Condition]; | ||
51 | set => this.Set((int)WixSearchSymbolFields.Condition, value); | ||
52 | } | ||
53 | |||
54 | public string BundleExtensionRef | ||
55 | { | ||
56 | get => (string)this.Fields[(int)WixSearchSymbolFields.BundleExtensionRef]; | ||
57 | set => this.Set((int)WixSearchSymbolFields.BundleExtensionRef, value); | ||
58 | } | ||
59 | } | ||
60 | } \ No newline at end of file | ||
diff --git a/src/api/wix/WixToolset.Data/Symbols/WixSetVariableSymbol.cs b/src/api/wix/WixToolset.Data/Symbols/WixSetVariableSymbol.cs new file mode 100644 index 00000000..05fdf561 --- /dev/null +++ b/src/api/wix/WixToolset.Data/Symbols/WixSetVariableSymbol.cs | |||
@@ -0,0 +1,54 @@ | |||
1 | // Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. | ||
2 | |||
3 | namespace WixToolset.Data | ||
4 | { | ||
5 | using WixToolset.Data.Symbols; | ||
6 | |||
7 | public static partial class SymbolDefinitions | ||
8 | { | ||
9 | public static readonly IntermediateSymbolDefinition WixSetVariable = new IntermediateSymbolDefinition( | ||
10 | SymbolDefinitionType.WixSetVariable, | ||
11 | new[] | ||
12 | { | ||
13 | new IntermediateFieldDefinition(nameof(WixSetVariableSymbolFields.Value), IntermediateFieldType.String), | ||
14 | new IntermediateFieldDefinition(nameof(WixSetVariableSymbolFields.Type), IntermediateFieldType.String), | ||
15 | }, | ||
16 | typeof(WixSetVariableSymbol)); | ||
17 | } | ||
18 | } | ||
19 | |||
20 | namespace WixToolset.Data.Symbols | ||
21 | { | ||
22 | using System; | ||
23 | |||
24 | public enum WixSetVariableSymbolFields | ||
25 | { | ||
26 | Value, | ||
27 | Type, | ||
28 | } | ||
29 | |||
30 | public class WixSetVariableSymbol : IntermediateSymbol | ||
31 | { | ||
32 | public WixSetVariableSymbol() : base(SymbolDefinitions.WixSetVariable, null, null) | ||
33 | { | ||
34 | } | ||
35 | |||
36 | public WixSetVariableSymbol(SourceLineNumber sourceLineNumber, Identifier id = null) : base(SymbolDefinitions.WixSetVariable, sourceLineNumber, id) | ||
37 | { | ||
38 | } | ||
39 | |||
40 | public IntermediateField this[WixSetVariableSymbolFields index] => this.Fields[(int)index]; | ||
41 | |||
42 | public string Value | ||
43 | { | ||
44 | get => (string)this.Fields[(int)WixSetVariableSymbolFields.Value]; | ||
45 | set => this.Set((int)WixSetVariableSymbolFields.Value, value); | ||
46 | } | ||
47 | |||
48 | public WixBundleVariableType Type | ||
49 | { | ||
50 | get => Enum.TryParse((string)this.Fields[(int)WixSetVariableSymbolFields.Type], true, out WixBundleVariableType value) ? value : WixBundleVariableType.Unknown; | ||
51 | set => this.Set((int)WixSetVariableSymbolFields.Type, value.ToString().ToLowerInvariant()); | ||
52 | } | ||
53 | } | ||
54 | } | ||
diff --git a/src/api/wix/WixToolset.Data/Symbols/WixSimpleReferenceSymbol.cs b/src/api/wix/WixToolset.Data/Symbols/WixSimpleReferenceSymbol.cs new file mode 100644 index 00000000..86e410ff --- /dev/null +++ b/src/api/wix/WixToolset.Data/Symbols/WixSimpleReferenceSymbol.cs | |||
@@ -0,0 +1,62 @@ | |||
1 | // Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. | ||
2 | |||
3 | namespace WixToolset.Data | ||
4 | { | ||
5 | using WixToolset.Data.Symbols; | ||
6 | |||
7 | public static partial class SymbolDefinitions | ||
8 | { | ||
9 | public static readonly IntermediateSymbolDefinition WixSimpleReference = new IntermediateSymbolDefinition( | ||
10 | SymbolDefinitionType.WixSimpleReference, | ||
11 | new[] | ||
12 | { | ||
13 | new IntermediateFieldDefinition(nameof(WixSimpleReferenceSymbolFields.Table), IntermediateFieldType.String), | ||
14 | new IntermediateFieldDefinition(nameof(WixSimpleReferenceSymbolFields.PrimaryKeys), IntermediateFieldType.String), | ||
15 | }, | ||
16 | typeof(WixSimpleReferenceSymbol)); | ||
17 | } | ||
18 | } | ||
19 | |||
20 | namespace WixToolset.Data.Symbols | ||
21 | { | ||
22 | using System; | ||
23 | using System.Diagnostics; | ||
24 | |||
25 | public enum WixSimpleReferenceSymbolFields | ||
26 | { | ||
27 | Table, | ||
28 | PrimaryKeys, | ||
29 | } | ||
30 | |||
31 | [DebuggerDisplay("Ref {SymbolicName,nq}")] | ||
32 | public class WixSimpleReferenceSymbol : IntermediateSymbol | ||
33 | { | ||
34 | public WixSimpleReferenceSymbol() : base(SymbolDefinitions.WixSimpleReference, null, null) | ||
35 | { | ||
36 | } | ||
37 | |||
38 | public WixSimpleReferenceSymbol(SourceLineNumber sourceLineNumber, Identifier id = null) : base(SymbolDefinitions.WixSimpleReference, sourceLineNumber, id) | ||
39 | { | ||
40 | } | ||
41 | |||
42 | public IntermediateField this[WixSimpleReferenceSymbolFields index] => this.Fields[(int)index]; | ||
43 | |||
44 | public string Table | ||
45 | { | ||
46 | get => (string)this.Fields[(int)WixSimpleReferenceSymbolFields.Table]; | ||
47 | set => this.Set((int)WixSimpleReferenceSymbolFields.Table, value); | ||
48 | } | ||
49 | |||
50 | public string PrimaryKeys | ||
51 | { | ||
52 | get => (string)this.Fields[(int)WixSimpleReferenceSymbolFields.PrimaryKeys]; | ||
53 | set => this.Set((int)WixSimpleReferenceSymbolFields.PrimaryKeys, value); | ||
54 | } | ||
55 | |||
56 | /// <summary> | ||
57 | /// Gets the symbolic name. | ||
58 | /// </summary> | ||
59 | /// <value>Symbolic name.</value> | ||
60 | public string SymbolicName => String.Concat(this.Table, ":", this.PrimaryKeys); | ||
61 | } | ||
62 | } \ No newline at end of file | ||
diff --git a/src/api/wix/WixToolset.Data/Symbols/WixSuppressActionSymbol.cs b/src/api/wix/WixToolset.Data/Symbols/WixSuppressActionSymbol.cs new file mode 100644 index 00000000..f99246f0 --- /dev/null +++ b/src/api/wix/WixToolset.Data/Symbols/WixSuppressActionSymbol.cs | |||
@@ -0,0 +1,54 @@ | |||
1 | // Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. | ||
2 | |||
3 | namespace WixToolset.Data | ||
4 | { | ||
5 | using WixToolset.Data.Symbols; | ||
6 | |||
7 | public static partial class SymbolDefinitions | ||
8 | { | ||
9 | public static readonly IntermediateSymbolDefinition WixSuppressAction = new IntermediateSymbolDefinition( | ||
10 | SymbolDefinitionType.WixSuppressAction, | ||
11 | new[] | ||
12 | { | ||
13 | new IntermediateFieldDefinition(nameof(WixSuppressActionSymbolFields.SequenceTable), IntermediateFieldType.String), | ||
14 | new IntermediateFieldDefinition(nameof(WixSuppressActionSymbolFields.Action), IntermediateFieldType.String), | ||
15 | }, | ||
16 | typeof(WixSuppressActionSymbol)); | ||
17 | } | ||
18 | } | ||
19 | |||
20 | namespace WixToolset.Data.Symbols | ||
21 | { | ||
22 | using System; | ||
23 | |||
24 | public enum WixSuppressActionSymbolFields | ||
25 | { | ||
26 | SequenceTable, | ||
27 | Action, | ||
28 | } | ||
29 | |||
30 | public class WixSuppressActionSymbol : IntermediateSymbol | ||
31 | { | ||
32 | public WixSuppressActionSymbol() : base(SymbolDefinitions.WixSuppressAction, null, null) | ||
33 | { | ||
34 | } | ||
35 | |||
36 | public WixSuppressActionSymbol(SourceLineNumber sourceLineNumber, Identifier id = null) : base(SymbolDefinitions.WixSuppressAction, sourceLineNumber, id) | ||
37 | { | ||
38 | } | ||
39 | |||
40 | public IntermediateField this[WixSuppressActionSymbolFields index] => this.Fields[(int)index]; | ||
41 | |||
42 | public SequenceTable SequenceTable | ||
43 | { | ||
44 | get => (SequenceTable)Enum.Parse(typeof(SequenceTable), (string)this.Fields[(int)WixSuppressActionSymbolFields.SequenceTable]); | ||
45 | set => this.Set((int)WixSuppressActionSymbolFields.SequenceTable, value.ToString()); | ||
46 | } | ||
47 | |||
48 | public string Action | ||
49 | { | ||
50 | get => (string)this.Fields[(int)WixSuppressActionSymbolFields.Action]; | ||
51 | set => this.Set((int)WixSuppressActionSymbolFields.Action, value); | ||
52 | } | ||
53 | } | ||
54 | } \ No newline at end of file | ||
diff --git a/src/api/wix/WixToolset.Data/Symbols/WixSuppressModularizationSymbol.cs b/src/api/wix/WixToolset.Data/Symbols/WixSuppressModularizationSymbol.cs new file mode 100644 index 00000000..dca86820 --- /dev/null +++ b/src/api/wix/WixToolset.Data/Symbols/WixSuppressModularizationSymbol.cs | |||
@@ -0,0 +1,44 @@ | |||
1 | // Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. | ||
2 | |||
3 | namespace WixToolset.Data | ||
4 | { | ||
5 | using WixToolset.Data.Symbols; | ||
6 | |||
7 | public static partial class SymbolDefinitions | ||
8 | { | ||
9 | public static readonly IntermediateSymbolDefinition WixSuppressModularization = new IntermediateSymbolDefinition( | ||
10 | SymbolDefinitionType.WixSuppressModularization, | ||
11 | new IntermediateFieldDefinition[] | ||
12 | { | ||
13 | new IntermediateFieldDefinition(nameof(WixSuppressModularizationSymbolFields.SuppressIdentifier), IntermediateFieldType.String), | ||
14 | }, | ||
15 | typeof(WixSuppressModularizationSymbol)); | ||
16 | } | ||
17 | } | ||
18 | |||
19 | namespace WixToolset.Data.Symbols | ||
20 | { | ||
21 | public enum WixSuppressModularizationSymbolFields | ||
22 | { | ||
23 | SuppressIdentifier, | ||
24 | } | ||
25 | |||
26 | public class WixSuppressModularizationSymbol : IntermediateSymbol | ||
27 | { | ||
28 | public WixSuppressModularizationSymbol() : base(SymbolDefinitions.WixSuppressModularization, null, null) | ||
29 | { | ||
30 | } | ||
31 | |||
32 | public WixSuppressModularizationSymbol(SourceLineNumber sourceLineNumber, Identifier id = null) : base(SymbolDefinitions.WixSuppressModularization, sourceLineNumber, id) | ||
33 | { | ||
34 | } | ||
35 | |||
36 | public string SuppressIdentifier | ||
37 | { | ||
38 | get => (string)this.Fields[(int)WixSuppressModularizationSymbolFields.SuppressIdentifier]; | ||
39 | set => this.Set((int)WixSuppressModularizationSymbolFields.SuppressIdentifier, value); | ||
40 | } | ||
41 | |||
42 | public IntermediateField this[WixSuppressModularizationSymbolFields index] => this.Fields[(int)index]; | ||
43 | } | ||
44 | } | ||
diff --git a/src/api/wix/WixToolset.Data/Symbols/WixUISymbol.cs b/src/api/wix/WixToolset.Data/Symbols/WixUISymbol.cs new file mode 100644 index 00000000..f1254952 --- /dev/null +++ b/src/api/wix/WixToolset.Data/Symbols/WixUISymbol.cs | |||
@@ -0,0 +1,36 @@ | |||
1 | // Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. | ||
2 | |||
3 | namespace WixToolset.Data | ||
4 | { | ||
5 | using WixToolset.Data.Symbols; | ||
6 | |||
7 | public static partial class SymbolDefinitions | ||
8 | { | ||
9 | public static readonly IntermediateSymbolDefinition WixUI = new IntermediateSymbolDefinition( | ||
10 | SymbolDefinitionType.WixUI, | ||
11 | new IntermediateFieldDefinition[] | ||
12 | { | ||
13 | }, | ||
14 | typeof(WixUISymbol)); | ||
15 | } | ||
16 | } | ||
17 | |||
18 | namespace WixToolset.Data.Symbols | ||
19 | { | ||
20 | public enum WixUISymbolFields | ||
21 | { | ||
22 | } | ||
23 | |||
24 | public class WixUISymbol : IntermediateSymbol | ||
25 | { | ||
26 | public WixUISymbol() : base(SymbolDefinitions.WixUI, null, null) | ||
27 | { | ||
28 | } | ||
29 | |||
30 | public WixUISymbol(SourceLineNumber sourceLineNumber, Identifier id = null) : base(SymbolDefinitions.WixUI, sourceLineNumber, id) | ||
31 | { | ||
32 | } | ||
33 | |||
34 | public IntermediateField this[WixUISymbolFields index] => this.Fields[(int)index]; | ||
35 | } | ||
36 | } | ||
diff --git a/src/api/wix/WixToolset.Data/Symbols/WixUpdateRegistrationSymbol.cs b/src/api/wix/WixToolset.Data/Symbols/WixUpdateRegistrationSymbol.cs new file mode 100644 index 00000000..1320dfd5 --- /dev/null +++ b/src/api/wix/WixToolset.Data/Symbols/WixUpdateRegistrationSymbol.cs | |||
@@ -0,0 +1,76 @@ | |||
1 | // Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. | ||
2 | |||
3 | namespace WixToolset.Data | ||
4 | { | ||
5 | using WixToolset.Data.Symbols; | ||
6 | |||
7 | public static partial class SymbolDefinitions | ||
8 | { | ||
9 | public static readonly IntermediateSymbolDefinition WixUpdateRegistration = new IntermediateSymbolDefinition( | ||
10 | SymbolDefinitionType.WixUpdateRegistration, | ||
11 | new[] | ||
12 | { | ||
13 | new IntermediateFieldDefinition(nameof(WixUpdateRegistrationSymbolFields.Manufacturer), IntermediateFieldType.String), | ||
14 | new IntermediateFieldDefinition(nameof(WixUpdateRegistrationSymbolFields.Department), IntermediateFieldType.String), | ||
15 | new IntermediateFieldDefinition(nameof(WixUpdateRegistrationSymbolFields.ProductFamily), IntermediateFieldType.String), | ||
16 | new IntermediateFieldDefinition(nameof(WixUpdateRegistrationSymbolFields.Name), IntermediateFieldType.String), | ||
17 | new IntermediateFieldDefinition(nameof(WixUpdateRegistrationSymbolFields.Classification), IntermediateFieldType.String), | ||
18 | }, | ||
19 | typeof(WixUpdateRegistrationSymbol)); | ||
20 | } | ||
21 | } | ||
22 | |||
23 | namespace WixToolset.Data.Symbols | ||
24 | { | ||
25 | public enum WixUpdateRegistrationSymbolFields | ||
26 | { | ||
27 | Manufacturer, | ||
28 | Department, | ||
29 | ProductFamily, | ||
30 | Name, | ||
31 | Classification, | ||
32 | } | ||
33 | |||
34 | public class WixUpdateRegistrationSymbol : IntermediateSymbol | ||
35 | { | ||
36 | public WixUpdateRegistrationSymbol() : base(SymbolDefinitions.WixUpdateRegistration, null, null) | ||
37 | { | ||
38 | } | ||
39 | |||
40 | public WixUpdateRegistrationSymbol(SourceLineNumber sourceLineNumber, Identifier id = null) : base(SymbolDefinitions.WixUpdateRegistration, sourceLineNumber, id) | ||
41 | { | ||
42 | } | ||
43 | |||
44 | public IntermediateField this[WixUpdateRegistrationSymbolFields index] => this.Fields[(int)index]; | ||
45 | |||
46 | public string Manufacturer | ||
47 | { | ||
48 | get => (string)this.Fields[(int)WixUpdateRegistrationSymbolFields.Manufacturer]; | ||
49 | set => this.Set((int)WixUpdateRegistrationSymbolFields.Manufacturer, value); | ||
50 | } | ||
51 | |||
52 | public string Department | ||
53 | { | ||
54 | get => (string)this.Fields[(int)WixUpdateRegistrationSymbolFields.Department]; | ||
55 | set => this.Set((int)WixUpdateRegistrationSymbolFields.Department, value); | ||
56 | } | ||
57 | |||
58 | public string ProductFamily | ||
59 | { | ||
60 | get => (string)this.Fields[(int)WixUpdateRegistrationSymbolFields.ProductFamily]; | ||
61 | set => this.Set((int)WixUpdateRegistrationSymbolFields.ProductFamily, value); | ||
62 | } | ||
63 | |||
64 | public string Name | ||
65 | { | ||
66 | get => (string)this.Fields[(int)WixUpdateRegistrationSymbolFields.Name]; | ||
67 | set => this.Set((int)WixUpdateRegistrationSymbolFields.Name, value); | ||
68 | } | ||
69 | |||
70 | public string Classification | ||
71 | { | ||
72 | get => (string)this.Fields[(int)WixUpdateRegistrationSymbolFields.Classification]; | ||
73 | set => this.Set((int)WixUpdateRegistrationSymbolFields.Classification, value); | ||
74 | } | ||
75 | } | ||
76 | } \ No newline at end of file | ||
diff --git a/src/api/wix/WixToolset.Data/Symbols/WixVariableSymbol.cs b/src/api/wix/WixToolset.Data/Symbols/WixVariableSymbol.cs new file mode 100644 index 00000000..0a56dcbf --- /dev/null +++ b/src/api/wix/WixToolset.Data/Symbols/WixVariableSymbol.cs | |||
@@ -0,0 +1,52 @@ | |||
1 | // Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. | ||
2 | |||
3 | namespace WixToolset.Data | ||
4 | { | ||
5 | using WixToolset.Data.Symbols; | ||
6 | |||
7 | public static partial class SymbolDefinitions | ||
8 | { | ||
9 | public static readonly IntermediateSymbolDefinition WixVariable = new IntermediateSymbolDefinition( | ||
10 | SymbolDefinitionType.WixVariable, | ||
11 | new[] | ||
12 | { | ||
13 | new IntermediateFieldDefinition(nameof(WixVariableSymbolFields.Value), IntermediateFieldType.String), | ||
14 | new IntermediateFieldDefinition(nameof(WixVariableSymbolFields.Overridable), IntermediateFieldType.Bool), | ||
15 | }, | ||
16 | typeof(WixVariableSymbol)); | ||
17 | } | ||
18 | } | ||
19 | |||
20 | namespace WixToolset.Data.Symbols | ||
21 | { | ||
22 | public enum WixVariableSymbolFields | ||
23 | { | ||
24 | Value, | ||
25 | Overridable, | ||
26 | } | ||
27 | |||
28 | public class WixVariableSymbol : IntermediateSymbol | ||
29 | { | ||
30 | public WixVariableSymbol() : base(SymbolDefinitions.WixVariable, null, null) | ||
31 | { | ||
32 | } | ||
33 | |||
34 | public WixVariableSymbol(SourceLineNumber sourceLineNumber, Identifier id = null) : base(SymbolDefinitions.WixVariable, sourceLineNumber, id) | ||
35 | { | ||
36 | } | ||
37 | |||
38 | public IntermediateField this[WixVariableSymbolFields index] => this.Fields[(int)index]; | ||
39 | |||
40 | public string Value | ||
41 | { | ||
42 | get => (string)this.Fields[(int)WixVariableSymbolFields.Value]; | ||
43 | set => this.Set((int)WixVariableSymbolFields.Value, value); | ||
44 | } | ||
45 | |||
46 | public bool Overridable | ||
47 | { | ||
48 | get => (bool)this.Fields[(int)WixVariableSymbolFields.Overridable]; | ||
49 | set => this.Set((int)WixVariableSymbolFields.Overridable, value); | ||
50 | } | ||
51 | } | ||
52 | } | ||
diff --git a/src/api/wix/WixToolset.Data/VerboseMessages.cs b/src/api/wix/WixToolset.Data/VerboseMessages.cs new file mode 100644 index 00000000..8342aa5e --- /dev/null +++ b/src/api/wix/WixToolset.Data/VerboseMessages.cs | |||
@@ -0,0 +1,234 @@ | |||
1 | // Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. | ||
2 | |||
3 | namespace WixToolset.Data | ||
4 | { | ||
5 | using System; | ||
6 | using System.Resources; | ||
7 | |||
8 | public static class VerboseMessages | ||
9 | { | ||
10 | public static Message BinderTempDirLocatedAt(string directory) | ||
11 | { | ||
12 | return Message(null, Ids.BinderTempDirLocatedAt, "Binder temporary directory located at '{0}'.", directory); | ||
13 | } | ||
14 | |||
15 | public static Message BundleGuid(string bundleGuid) | ||
16 | { | ||
17 | return Message(null, Ids.BundleGuid, "Assigning bundle GUID '{0}'.", bundleGuid); | ||
18 | } | ||
19 | |||
20 | public static Message CabFile(string fileId, string filePath) | ||
21 | { | ||
22 | return Message(null, Ids.CabFile, "Cabbing file {0} from '{1}'.", fileId, filePath); | ||
23 | } | ||
24 | |||
25 | public static Message CabinetsSplitInParallel() | ||
26 | { | ||
27 | return Message(null, Ids.CabinetsSplitInParallel, "Multiple Cabinets with Large Files are splitting simultaneously. This current cabinet is waiting on a shared resource and splitting will resume when the other splitting has completed."); | ||
28 | } | ||
29 | |||
30 | public static Message ConnectingMergeModule(string modulePath, string feature) | ||
31 | { | ||
32 | return Message(null, Ids.ConnectingMergeModule, "Connecting merge module '{0}' to feature '{1}'.", modulePath, feature); | ||
33 | } | ||
34 | |||
35 | public static Message CopyFile(string sourceFile, string destinationFile) | ||
36 | { | ||
37 | return Message(null, Ids.CopyFile, "Copying file '{0}' to '{1}'.", sourceFile, destinationFile); | ||
38 | } | ||
39 | |||
40 | public static Message CopyingExternalPayload(string payload, string outputDirectory) | ||
41 | { | ||
42 | return Message(null, Ids.CopyingExternalPayload, "Copying external payload from '{0}' to '{1}'.", payload, outputDirectory); | ||
43 | } | ||
44 | |||
45 | public static Message CreateCabinet(string cabinet) | ||
46 | { | ||
47 | return Message(null, Ids.CreateCabinet, "Creating cabinet '{0}'.", cabinet); | ||
48 | } | ||
49 | |||
50 | public static Message CreateDirectory(string directory) | ||
51 | { | ||
52 | return Message(null, Ids.CreateDirectory, "The directory '{0}' does not exist, creating it now.", directory); | ||
53 | } | ||
54 | |||
55 | public static Message CreatingCabinetFiles() | ||
56 | { | ||
57 | return Message(null, Ids.CreatingCabinetFiles, "Creating cabinet files."); | ||
58 | } | ||
59 | |||
60 | public static Message DecompilingTable(string tableName) | ||
61 | { | ||
62 | return Message(null, Ids.DecompilingTable, "Decompiling the {0} table.", tableName); | ||
63 | } | ||
64 | |||
65 | public static Message EmbeddingContainer(string container, long size, string compression) | ||
66 | { | ||
67 | return Message(null, Ids.EmbeddingContainer, "Embedding container '{0}' ({1} bytes) with '{2}' compression.", container, size, compression); | ||
68 | } | ||
69 | |||
70 | public static Message GeneratingBundle(string bundleFile, string stubFile) | ||
71 | { | ||
72 | return Message(null, Ids.GeneratingBundle, "Generating Burn bundle '{0}' from stub '{1}'.", bundleFile, stubFile); | ||
73 | } | ||
74 | |||
75 | public static Message GeneratingDatabase() | ||
76 | { | ||
77 | return Message(null, Ids.GeneratingDatabase, "Generating database."); | ||
78 | } | ||
79 | |||
80 | public static Message ImportBinaryStream(string streamSource) | ||
81 | { | ||
82 | return Message(null, Ids.ImportBinaryStream, "Importing binary stream from '{0}'.", streamSource); | ||
83 | } | ||
84 | |||
85 | public static Message ImportIconStream(string streamSource) | ||
86 | { | ||
87 | return Message(null, Ids.ImportIconStream, "Importing icon stream from '{0}'.", streamSource); | ||
88 | } | ||
89 | |||
90 | public static Message ImportingStreams() | ||
91 | { | ||
92 | return Message(null, Ids.ImportingStreams, "Importing streams."); | ||
93 | } | ||
94 | |||
95 | public static Message LayingOutMedia() | ||
96 | { | ||
97 | return Message(null, Ids.LayingOutMedia, "Laying out media."); | ||
98 | } | ||
99 | |||
100 | public static Message LoadingPayload(string payload) | ||
101 | { | ||
102 | return Message(null, Ids.LoadingPayload, "Loading payload '{0}' into container.", payload); | ||
103 | } | ||
104 | |||
105 | public static Message MergingMergeModule(string modulePath) | ||
106 | { | ||
107 | return Message(null, Ids.MergingMergeModule, "Merging merge module '{0}'.", modulePath); | ||
108 | } | ||
109 | |||
110 | public static Message MergingModules() | ||
111 | { | ||
112 | return Message(null, Ids.MergingModules, "Merging modules."); | ||
113 | } | ||
114 | |||
115 | public static Message MoveFile(string sourceFile, string destinationFile) | ||
116 | { | ||
117 | return Message(null, Ids.MoveFile, "Moving file '{0}' to '{1}'.", sourceFile, destinationFile); | ||
118 | } | ||
119 | |||
120 | public static Message OpeningMergeModule(string modulePath, Int16 language) | ||
121 | { | ||
122 | return Message(null, Ids.OpeningMergeModule, "Opening merge module '{0}' with language '{1}'.", modulePath, language); | ||
123 | } | ||
124 | |||
125 | public static Message RemoveDestinationFile(string destinationFile) | ||
126 | { | ||
127 | return Message(null, Ids.RemoveDestinationFile, "The destination file '{0}' already exists, attempting to remove it.", destinationFile); | ||
128 | } | ||
129 | |||
130 | public static Message ResequencingMergeModuleFiles() | ||
131 | { | ||
132 | return Message(null, Ids.ResequencingMergeModuleFiles, "Resequencing files from all merge modules."); | ||
133 | } | ||
134 | |||
135 | public static Message ResolvingManifest(string manifestFile) | ||
136 | { | ||
137 | return Message(null, Ids.ResolvingManifest, "Generating resolved manifest '{0}'.", manifestFile); | ||
138 | } | ||
139 | |||
140 | public static Message ReusingCabCache(SourceLineNumber sourceLineNumbers, string cabinetName, string source) | ||
141 | { | ||
142 | return Message(sourceLineNumbers, Ids.ReusingCabCache, "Reusing cabinet '{0}' from cabinet cache path: '{1}'.", cabinetName, source); | ||
143 | } | ||
144 | |||
145 | public static Message SetCabbingThreadCount(string threads) | ||
146 | { | ||
147 | return Message(null, Ids.SetCabbingThreadCount, "There will be '{0}' threads used to produce CAB files.", threads); | ||
148 | } | ||
149 | |||
150 | public static Message SwitchingToPerUserPackage(SourceLineNumber sourceLineNumbers, string path) | ||
151 | { | ||
152 | return Message(sourceLineNumbers, Ids.SwitchingToPerUserPackage, "Bundle switching from per-machine to per-user due to addition of per-user package '{0}'.", path); | ||
153 | } | ||
154 | |||
155 | public static Message UpdatingFileInformation() | ||
156 | { | ||
157 | return Message(null, Ids.UpdatingFileInformation, "Updating file information."); | ||
158 | } | ||
159 | |||
160 | public static Message ValidatedDatabase(long size) | ||
161 | { | ||
162 | return Message(null, Ids.ValidatedDatabase, "Validation complete: {0:N0}ms elapsed.", size); | ||
163 | } | ||
164 | |||
165 | public static Message ValidatingDatabase() | ||
166 | { | ||
167 | return Message(null, Ids.ValidatingDatabase, "Validating database."); | ||
168 | } | ||
169 | |||
170 | public static Message ValidationInfo(string ice, string message) | ||
171 | { | ||
172 | return Message(null, Ids.ValidationInfo, "{0}: {1}", ice, message); | ||
173 | } | ||
174 | |||
175 | public static Message ValidationSerialized() | ||
176 | { | ||
177 | return Message(null, Ids.ValidationSerialized, "Multiple packages cannot reliably be validated simultaneously. This validation will resume when the other package being validated has completed."); | ||
178 | } | ||
179 | |||
180 | public static Message ValidatorTempDirLocatedAt(string directory) | ||
181 | { | ||
182 | return Message(null, Ids.ValidatorTempDirLocatedAt, "Validator temporary directory located at '{0}'.", directory); | ||
183 | } | ||
184 | |||
185 | private static Message Message(SourceLineNumber sourceLineNumber, Ids id, string format, params object[] args) | ||
186 | { | ||
187 | return new Message(sourceLineNumber, MessageLevel.Verbose, (int)id, format, args); | ||
188 | } | ||
189 | |||
190 | private static Message Message(SourceLineNumber sourceLineNumber, Ids id, ResourceManager resourceManager, string resourceName, params object[] args) | ||
191 | { | ||
192 | return new Message(sourceLineNumber, MessageLevel.Verbose, (int)id, resourceManager, resourceName, args); | ||
193 | } | ||
194 | |||
195 | public enum Ids | ||
196 | { | ||
197 | ImportBinaryStream = 9000, | ||
198 | ImportIconStream = 9001, | ||
199 | CopyFile = 9002, | ||
200 | MoveFile = 9003, | ||
201 | CreateDirectory = 9004, | ||
202 | RemoveDestinationFile = 9005, | ||
203 | CabFile = 9006, | ||
204 | UpdatingFileInformation = 9007, | ||
205 | GeneratingDatabase = 9008, | ||
206 | MergingModules = 9009, | ||
207 | CreatingCabinetFiles = 9010, | ||
208 | ImportingStreams = 9011, | ||
209 | LayingOutMedia = 9012, | ||
210 | DecompilingTable = 9013, | ||
211 | ValidationInfo = 9014, | ||
212 | CreateCabinet = 9015, | ||
213 | ValidatingDatabase = 9016, | ||
214 | OpeningMergeModule = 9017, | ||
215 | MergingMergeModule = 9018, | ||
216 | ConnectingMergeModule = 9019, | ||
217 | ResequencingMergeModuleFiles = 9020, | ||
218 | BinderTempDirLocatedAt = 9021, | ||
219 | ValidatorTempDirLocatedAt = 9022, | ||
220 | GeneratingBundle = 9023, | ||
221 | ResolvingManifest = 9024, | ||
222 | LoadingPayload = 9025, | ||
223 | BundleGuid = 9026, | ||
224 | CopyingExternalPayload = 9027, | ||
225 | EmbeddingContainer = 9028, | ||
226 | SwitchingToPerUserPackage = 9029, | ||
227 | SetCabbingThreadCount = 9030, | ||
228 | ValidationSerialized = 9031, | ||
229 | ReusingCabCache = 9032, | ||
230 | CabinetsSplitInParallel = 9033, | ||
231 | ValidatedDatabase = 9034, | ||
232 | } | ||
233 | } | ||
234 | } | ||
diff --git a/src/api/wix/WixToolset.Data/WarningMessages.cs b/src/api/wix/WixToolset.Data/WarningMessages.cs new file mode 100644 index 00000000..78ed87af --- /dev/null +++ b/src/api/wix/WixToolset.Data/WarningMessages.cs | |||
@@ -0,0 +1,816 @@ | |||
1 | // Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. | ||
2 | |||
3 | namespace WixToolset.Data | ||
4 | { | ||
5 | using System; | ||
6 | using System.Resources; | ||
7 | |||
8 | public static class WarningMessages | ||
9 | { | ||
10 | public static Message AccessDeniedForDeletion(SourceLineNumber sourceLineNumbers, string tempFilesBasePath) | ||
11 | { | ||
12 | return Message(sourceLineNumbers, Ids.AccessDeniedForDeletion, "Access denied; cannot delete '{0}'.", tempFilesBasePath); | ||
13 | } | ||
14 | |||
15 | public static Message AccessDeniedForSettingAttributes(SourceLineNumber sourceLineNumbers, string filePath) | ||
16 | { | ||
17 | return Message(sourceLineNumbers, Ids.AccessDeniedForSettingAttributes, "Access denied; cannot set attributes on '{0}'.", filePath); | ||
18 | } | ||
19 | |||
20 | public static Message ActionSequenceCollision(SourceLineNumber sourceLineNumbers, string sequenceTableName, string actionName1, string actionName2, int sequenceNumber) | ||
21 | { | ||
22 | return Message(sourceLineNumbers, Ids.ActionSequenceCollision, "The {0} table contains actions '{1}' and '{2}' which both have the same sequence number {3}. Please change the sequence number for one of these actions to avoid an ICE warning.", sequenceTableName, actionName1, actionName2, sequenceNumber); | ||
23 | } | ||
24 | |||
25 | public static Message ActionSequenceCollision2(SourceLineNumber sourceLineNumbers) | ||
26 | { | ||
27 | return Message(sourceLineNumbers, Ids.ActionSequenceCollision2, "The location of the action related to previous warning."); | ||
28 | } | ||
29 | |||
30 | public static Message AllChangesIncludedInPatch(SourceLineNumber sourceLineNumbers) | ||
31 | { | ||
32 | return Message(sourceLineNumbers, Ids.AllChangesIncludedInPatch, "All changes between the baseline and upgraded packages will be included in the patch except for any change to the ProductCode. The 'All' element is supported primarily for testing purposes and negates the benefits of patch families."); | ||
33 | } | ||
34 | |||
35 | public static Message AmbiguousFileOrDirectoryName(SourceLineNumber sourceLineNumbers, string elementName, string attributeName, string value) | ||
36 | { | ||
37 | return Message(sourceLineNumbers, Ids.AmbiguousFileOrDirectoryName, "The {0}/@{1} attribute's value '{2}' is an ambiguous short name because it ends with a '~' character followed by a number. Under some circumstances, this name could resolve to more than one file or directory name and lead to unpredictable results (for example 'MICROS~1' may correspond to 'Microsoft Shared' or 'Microsoft Foo' or literally 'Micros~1').", elementName, attributeName, value); | ||
38 | } | ||
39 | |||
40 | public static Message AttributeShouldContain(SourceLineNumber sourceLineNumbers, string elementName, string attributeName, string attributeValue, string expectedContains, string otherAttributeName, string otherAttributeValue) | ||
41 | { | ||
42 | return Message(sourceLineNumbers, Ids.AttributeShouldContain, "The {0}/@{1} attribute value '{2}' should contain '{3}' when the {0}/@{4} attribute is set to '{5}'.", elementName, attributeName, attributeValue, expectedContains, otherAttributeName, otherAttributeValue); | ||
43 | } | ||
44 | |||
45 | public static Message BackslashTerminateInlineDirectorySyntax(SourceLineNumber sourceLineNumbers, string elementName, string attributeName, string value) | ||
46 | { | ||
47 | return Message(sourceLineNumbers, Ids.BackslashTerminateInlineDirectorySyntax, "Backslash terminate the {0}/@{1} attribute's inline directory value '{2}'. A backslash ensures a directory name will not be mistaken for a directory reference.", elementName, attributeName, value); | ||
48 | } | ||
49 | |||
50 | public static Message BadColumnDataIgnored(SourceLineNumber sourceLineNumbers, string value, string tableName, string columnName) | ||
51 | { | ||
52 | return Message(sourceLineNumbers, Ids.BadColumnDataIgnored, "The value '{0}' in table '{1}', column '{2}' is invalid according to the column's validation information. The decompiled output includes a best-effort representation of this value.", value, tableName, columnName); | ||
53 | } | ||
54 | |||
55 | public static Message CannotUpdateCabCache(SourceLineNumber sourceLineNumbers, string cabinetPath, string detail) | ||
56 | { | ||
57 | return Message(sourceLineNumbers, Ids.CannotUpdateCabCache, "Cannot update the timestamp of cached cabinet: '{0}'. If the timestamp is not updated, the build may rebuild more than is necessary. To fix the issue, ensure that the cabinet file is writable, error: {1}", cabinetPath, detail); | ||
58 | } | ||
59 | |||
60 | public static Message ColumnsIncompatibleWithInstallerVersion(SourceLineNumber sourceLineNumbers, string tableName, int productInstallerVersion) | ||
61 | { | ||
62 | return Message(sourceLineNumbers, Ids.ColumnsIncompatibleWithInstallerVersion, "Table '{0}' uses columns that require a version of Windows Installer greater than specified in your package ('{1}').", tableName, productInstallerVersion); | ||
63 | } | ||
64 | |||
65 | public static Message CopyFileFileIdUseless(SourceLineNumber sourceLineNumbers) | ||
66 | { | ||
67 | return Message(sourceLineNumbers, Ids.CopyFileFileIdUseless, "Since the CopyFile/@FileId attribute was specified but none of the following attributes (DestinationName, DestinationDirectory, DestinationProperty) were specified, this authoring will not do anything."); | ||
68 | } | ||
69 | |||
70 | public static Message DangerousTableInMergeModule(SourceLineNumber sourceLineNumbers, string tableName) | ||
71 | { | ||
72 | return Message(sourceLineNumbers, Ids.DangerousTableInMergeModule, "Merge modules should not contain the '{0}' table because all merge conflicts cannot avoided. However, this warning can be suppressed if all of the consumers of the Merge Module agree to not duplicate identifiers in the '{0}' table.", tableName); | ||
73 | } | ||
74 | |||
75 | public static Message DecompiledStandardActionRelativelyScheduledInModule(SourceLineNumber sourceLineNumbers, string sequenceTableName, string actionName) | ||
76 | { | ||
77 | return Message(sourceLineNumbers, Ids.DecompiledStandardActionRelativelyScheduledInModule, "The {0} table contains a standard action '{1}' that does not have a sequence number specified. A value in the Sequence column is required for standard actions in a merge module. Remove the action from the decompiled authoring to have WiX automatically sequence it.", sequenceTableName, actionName); | ||
78 | } | ||
79 | |||
80 | public static Message DecompilingAsCustomTable(SourceLineNumber sourceLineNumbers, string tableName) | ||
81 | { | ||
82 | return Message(sourceLineNumbers, Ids.DecompilingAsCustomTable, "The {0} table is being decompiled as a custom table.", tableName); | ||
83 | } | ||
84 | |||
85 | public static Message DefaultLanguageUsedForUnversionedFile(SourceLineNumber sourceLineNumbers, string language, string fileId) | ||
86 | { | ||
87 | return Message(sourceLineNumbers, Ids.DefaultLanguageUsedForUnversionedFile, "The DefaultLanguage '{0}' was used for file '{1}' which has no language or version. For unversioned files, specifying a value for DefaultLanguage is not neccessary and it will not be used when determining file versions. Remove the DefaultLanguage attribute to eliminate this warning.", language, fileId); | ||
88 | } | ||
89 | |||
90 | public static Message DefaultLanguageUsedForVersionedFile(SourceLineNumber sourceLineNumbers, string language, string fileId) | ||
91 | { | ||
92 | return Message(sourceLineNumbers, Ids.DefaultLanguageUsedForVersionedFile, "The DefaultLanguage '{0}' was used for file '{1}' which has no language. Specifying a language that is different from the actual file may result in unexpected versioning behavior during a repair or while patching. Either specify a value for DefaultLanguage or put the language in the version information resource to eliminate this warning.", language, fileId); | ||
93 | } | ||
94 | |||
95 | public static Message DefaultVersionUsedForUnversionedFile(SourceLineNumber sourceLineNumbers, string version, string fileId) | ||
96 | { | ||
97 | return Message(sourceLineNumbers, Ids.DefaultVersionUsedForUnversionedFile, "The DefaultVersion '{0}' was used for file '{1}' which has no version. No entry for this file will be placed in the MsiFileHash table. For unversioned files, specifying a version that is different from the actual file may result in unexpected versioning behavior during a repair or while patching. Version the resource to eliminate this warning.", version, fileId); | ||
98 | } | ||
99 | |||
100 | public static Message DeprecatedAttribute(SourceLineNumber sourceLineNumbers, string elementName, string attributeName) | ||
101 | { | ||
102 | return Message(sourceLineNumbers, Ids.DeprecatedAttribute, "The {0}/@{1} attribute has been deprecated.", elementName, attributeName); | ||
103 | } | ||
104 | |||
105 | public static Message DeprecatedAttribute(SourceLineNumber sourceLineNumbers, string elementName, string attributeName, string newAttributeName) | ||
106 | { | ||
107 | return Message(sourceLineNumbers, Ids.DeprecatedAttribute, "The {0}/@{1} attribute has been deprecated. Please use the {2} attribute instead.", elementName, attributeName, newAttributeName); | ||
108 | } | ||
109 | |||
110 | public static Message DeprecatedAttribute(SourceLineNumber sourceLineNumbers, string elementName, string attributeName, string newAttributeName1, string newAttributeName2) | ||
111 | { | ||
112 | return Message(sourceLineNumbers, Ids.DeprecatedAttribute, "The {0}/@{1} attribute has been deprecated. Please use the {2} or {3} attribute instead.", elementName, attributeName, newAttributeName1, newAttributeName2); | ||
113 | } | ||
114 | |||
115 | public static Message DeprecatedAttributeValue(SourceLineNumber sourceLineNumbers, string attributeValue, string elementName, string attributeName) | ||
116 | { | ||
117 | return Message(sourceLineNumbers, Ids.DeprecatedAttributeValue, "The value \"{0}\" for the {1}/@{2} attribute has been deprecated. Remove the attribute.", attributeValue, elementName, attributeName); | ||
118 | } | ||
119 | |||
120 | public static Message DeprecatedAttributeValue(SourceLineNumber sourceLineNumbers, string attributeValue, string elementName, string attributeName, string newAttributeValue) | ||
121 | { | ||
122 | return Message(sourceLineNumbers, Ids.DeprecatedAttributeValue, "The value \"{0}\" for the {1}/@{2} attribute has been deprecated. Please use \"{3}\" instead.", attributeValue, elementName, attributeName, newAttributeValue); | ||
123 | } | ||
124 | |||
125 | public static Message DeprecatedCommandLineSwitch(string oldSwitch) | ||
126 | { | ||
127 | return Message(null, Ids.DeprecatedCommandLineSwitch, "The command line switch '{0}' is deprecated.", oldSwitch); | ||
128 | } | ||
129 | |||
130 | public static Message DeprecatedCommandLineSwitch(string oldSwitch, string newSwitch) | ||
131 | { | ||
132 | return Message(null, Ids.DeprecatedCommandLineSwitch, "The command line switch '{0}' is deprecated. Please use '{1}' instead.", oldSwitch, newSwitch); | ||
133 | } | ||
134 | |||
135 | public static Message DeprecatedComponentGroupId(SourceLineNumber sourceLineNumbers, string elementName) | ||
136 | { | ||
137 | return Message(sourceLineNumbers, Ids.DeprecatedComponentGroupId, "The {0}/@Id attribute contains invalid characters for an identifier. Being able to use invalid identifier characters for a {0} identifier has been deprecated.", elementName); | ||
138 | } | ||
139 | |||
140 | public static Message DeprecatedElement(SourceLineNumber sourceLineNumbers, string elementName) | ||
141 | { | ||
142 | return Message(sourceLineNumbers, Ids.DeprecatedElement, "The {0} element has been deprecated.", elementName); | ||
143 | } | ||
144 | |||
145 | public static Message DeprecatedElement(SourceLineNumber sourceLineNumbers, string elementName, string newElementName) | ||
146 | { | ||
147 | return Message(sourceLineNumbers, Ids.DeprecatedElement, "The {0} element has been deprecated. Please use the {1} element instead.", elementName, newElementName); | ||
148 | } | ||
149 | |||
150 | public static Message DeprecatedElement(SourceLineNumber sourceLineNumbers, string elementName, string newElementName1, string newElementName2) | ||
151 | { | ||
152 | return Message(sourceLineNumbers, Ids.DeprecatedElement, "The {0} element has been deprecated. Please use the {1} or {2} element instead.", elementName, newElementName1, newElementName2); | ||
153 | } | ||
154 | |||
155 | public static Message DeprecatedIgnoreModularizationElement(SourceLineNumber sourceLineNumbers) | ||
156 | { | ||
157 | return Message(sourceLineNumbers, Ids.DeprecatedIgnoreModularizationElement, "The IgnoreModularization element has been deprecated. Use the Binary/@SuppressModularization, CustomAction/@SuppressModularization, or Property/@SuppressModularization attribute instead."); | ||
158 | } | ||
159 | |||
160 | public static Message DeprecatedLocalizationVariablePrefix(SourceLineNumber sourceLineNumbers, string variableId) | ||
161 | { | ||
162 | return Message(sourceLineNumbers, Ids.DeprecatedLocalizationVariablePrefix, "The localization variable $(loc.{0}) uses a deprecated prefix '$'. Please use the '!' prefix instead. Since the prefix '$' is also used by the preprocessor, it has been deprecated to avoid namespace collisions.", variableId); | ||
163 | } | ||
164 | |||
165 | public static Message DeprecatedLongNameAttribute(SourceLineNumber sourceLineNumbers, string elementName, string longNameAttributeName, string nameAttributeName, string shortNameAttributeName) | ||
166 | { | ||
167 | return Message(sourceLineNumbers, Ids.DeprecatedLongNameAttribute, "The {0}/@{1} attribute has been deprecated. Since WiX now has the ability to generate short file/directory names, the desired name should be specified in the {2} attribute instead. If the name specified in the {2} attribute is a short name, then WiX will not generate a short name. If the name specified in the {2} attribute is a long name and you want to manually specify the short name, please set the short name value in the {3} attribute.", elementName, longNameAttributeName, nameAttributeName, shortNameAttributeName); | ||
168 | } | ||
169 | |||
170 | public static Message DeprecatedPatchSequenceTargetAttribute(SourceLineNumber sourceLineNumbers, string elementName, string attributeName) | ||
171 | { | ||
172 | return Message(sourceLineNumbers, Ids.DeprecatedPatchSequenceTargetAttribute, "The {0}/@{1} attribute has been deprecated in favor of the more strongly-typed ProductCode or TargetImage attributes. Please use the ProductCode attribute for indicating the ProductCode of a patch family directly, or the TargetImage attribute to specify the TargetImage which in turn will retrieve the ProductCode of the patch family.", elementName, attributeName); | ||
173 | } | ||
174 | |||
175 | public static Message DeprecatedPreProcVariable(SourceLineNumber sourceLineNumbers, string oldName, string newName) | ||
176 | { | ||
177 | return Message(sourceLineNumbers, Ids.DeprecatedPreProcVariable, "The built-in preprocessor variable '{0}' is deprecated. Please correct your authoring to use the new '{1}' preprocessor variable instead.", oldName, newName); | ||
178 | } | ||
179 | |||
180 | public static Message DeprecatedQuestionMarksGuid(SourceLineNumber sourceLineNumbers, string elementName, string attributeName) | ||
181 | { | ||
182 | return Message(sourceLineNumbers, Ids.DeprecatedQuestionMarksGuid, "The {0}/@{1} attribute's value '????????-????-????-????-????????????' has been deprecated. Use '*' instead.", elementName, attributeName); | ||
183 | } | ||
184 | |||
185 | public static Message DeprecatedRegistryElement(SourceLineNumber sourceLineNumbers) | ||
186 | { | ||
187 | return Message(sourceLineNumbers, Ids.DeprecatedRegistryElement, "The Registry element has been deprecated. Please use one of the new elements which replaces its functionality: RegistryKey for creating registry keys, RegistryValue for writing registry values, RemoveRegistryKey for removing registry keys, and RemoveRegistryValue for removing registry values."); | ||
188 | } | ||
189 | |||
190 | public static Message DeprecatedRegistryKeyActionAttribute(SourceLineNumber sourceLineNumbers) | ||
191 | { | ||
192 | return Message(sourceLineNumbers, Ids.DeprecatedRegistryKeyActionAttribute, "The RegistryKey/@Action attribute has been deprecated. In most cases, you can simply omit @Action. If you need to force Windows Installer to create an empty key or recursively delete the key, use the ForceCreateOnInstall or ForceDeleteOnUninstall attributes instead."); | ||
193 | } | ||
194 | |||
195 | public static Message DeprecatedTable(string tableName) | ||
196 | { | ||
197 | return Message(null, Ids.DeprecatedTable, "The {0} table is not supported by the WiX toolset because it has been deprecated by the Windows Installer team. Any information in this table will be left out of the decompiled output.", tableName); | ||
198 | } | ||
199 | |||
200 | public static Message DeprecatedUpgradeProperty(SourceLineNumber sourceLineNumbers) | ||
201 | { | ||
202 | return Message(sourceLineNumbers, Ids.DeprecatedUpgradeProperty, "Specifying a Property element as a child of an Upgrade element has been deprecated. Please specify this Property element as a child of a different element such as Product or Fragment."); | ||
203 | } | ||
204 | |||
205 | public static Message DirectoryInUse(SourceLineNumber sourceLineNumbers, string filePath) | ||
206 | { | ||
207 | return Message(sourceLineNumbers, Ids.DirectoryInUse, "The directory '{0}' is in use and cannot be deleted.", filePath); | ||
208 | } | ||
209 | |||
210 | public static Message DirectoryRedundantNames(SourceLineNumber sourceLineNumbers, string elementName, string shortNameAttributeName, string longNameAttributeName, string attributeValue) | ||
211 | { | ||
212 | return Message(sourceLineNumbers, Ids.DirectoryRedundantNames, "The {0} element's {1} and {2} values are both '{3}'. This is redundant; the {2} attribute should be removed.", elementName, shortNameAttributeName, longNameAttributeName, attributeValue); | ||
213 | } | ||
214 | |||
215 | public static Message DirectoryRedundantNames(SourceLineNumber sourceLineNumbers, string elementName, string sourceNameAttributeName, string longSourceAttributeName) | ||
216 | { | ||
217 | return Message(sourceLineNumbers, Ids.DirectoryRedundantNames, "The {0} element's source and destination names are identical. This is redundant; the {1} and {2} attributes should be removed if present.", elementName, sourceNameAttributeName, longSourceAttributeName); | ||
218 | } | ||
219 | |||
220 | public static Message DiscardedRollbackBoundary(SourceLineNumber sourceLineNumbers, string rollbackBoundaryId) | ||
221 | { | ||
222 | return Message(sourceLineNumbers, Ids.DiscardedRollbackBoundary, "The RollbackBoundary '{0}' was discarded because it was not followed by a package. Without a package the rollback boundary doesn't do anything. Verify that the RollbackBoundary element is not followed by another RollbackBoundary and that the element is not at the end of the chain.", rollbackBoundaryId); | ||
223 | } | ||
224 | |||
225 | public static Message DiscouragedAllUsersValue(SourceLineNumber sourceLineNumbers, string path, string machineOrUser) | ||
226 | { | ||
227 | return Message(sourceLineNumbers, Ids.DiscouragedAllUsersValue, "Bundles require a package to be either per-machine or per-user. The MSI '{0}' ALLUSERS Property is set to '2' which may change from per-user to per-machine at install time. The Bundle will assume the package is per-{1} and will not work correctly if that changes. If possible, remove the Property with Id='ALLUSERS' and use Package/@InstallScope attribute instead.", path, machineOrUser); | ||
228 | } | ||
229 | |||
230 | public static Message DetectConditionRecommended(SourceLineNumber sourceLineNumbers, string elementName) | ||
231 | { | ||
232 | return Message(sourceLineNumbers, Ids.DetectConditionRecommended, "The {0}/@DetectCondition attribute is recommended so the package is only installed when absent.", elementName); | ||
233 | } | ||
234 | |||
235 | public static Message DownloadUrlNotSupportedForAttachedContainers(SourceLineNumber sourceLineNumbers, string containerId) | ||
236 | { | ||
237 | return Message(sourceLineNumbers, Ids.DownloadUrlNotSupportedForAttachedContainers, "The Container '{0}' is attached but included a @DownloadUrl attribute. Attached Containers cannot be downloaded so the download URL is being ignored.", containerId); | ||
238 | } | ||
239 | |||
240 | public static Message DownloadUrlNotSupportedForBAPayloads(SourceLineNumber sourceLineNumbers, string payloadId) | ||
241 | { | ||
242 | return Message(sourceLineNumbers, Ids.DownloadUrlNotSupportedForBAPayloads, "The BootstrapperApplication Payload '{0}' included a @DownloadUrl attribute. BootstrapperApplication Payloads cannot be downloaded so the download URL is being ignored.", payloadId); | ||
243 | } | ||
244 | |||
245 | public static Message DuplicateComponentGuidsMustHaveMutuallyExclusiveConditions(SourceLineNumber sourceLineNumbers, string componentId, string guid, string type, string keyPath) | ||
246 | { | ||
247 | return Message(sourceLineNumbers, Ids.DuplicateComponentGuidsMustHaveMutuallyExclusiveConditions, "Component/@Id='{0}' with {2} '{3}' has a @Guid value '{1}' that duplicates another component in this package. This is not officially supported by Windows Installer and cannot be used when creating patches. It otherwise works as long as all components with the same GUID have mutually-exclusive conditions. It is recommended to give each component its own unique GUID.", componentId, guid, type, keyPath); | ||
248 | } | ||
249 | |||
250 | public static Message DuplicatePrimaryKey(SourceLineNumber sourceLineNumbers, string primaryKey, string tableName) | ||
251 | { | ||
252 | return Message(sourceLineNumbers, Ids.DuplicatePrimaryKey, "The primary key '{0}' is duplicated in table '{1}' and will be ignored. Please remove one of the entries or rename a part of the primary key to avoid the collision.", primaryKey, tableName); | ||
253 | } | ||
254 | |||
255 | public static Message EmptyAttributeValue(SourceLineNumber sourceLineNumbers, string elementName, string attributeName) | ||
256 | { | ||
257 | return Message(sourceLineNumbers, Ids.EmptyAttributeValue, "The {0}/@{1} attribute's value cannot be an empty string. If you want the value to be null or empty, simply remove the entire attribute.", elementName, attributeName); | ||
258 | } | ||
259 | |||
260 | public static Message EmptyCabinet(SourceLineNumber sourceLineNumbers, string cabinetName) | ||
261 | { | ||
262 | return Message(sourceLineNumbers, Ids.EmptyCabinet, "The cabinet '{0}' does not contain any files. If this installation contains no files, this warning can likely be safely ignored. Otherwise, please add files to the cabinet or remove it.", cabinetName); | ||
263 | } | ||
264 | |||
265 | public static Message EmptyCabinet(SourceLineNumber sourceLineNumbers, string cabinetName, Boolean isPatch) | ||
266 | { | ||
267 | return Message(sourceLineNumbers, Ids.EmptyCabinet, "The cabinet '{0}' does not contain any files. If this patch contains no files, this warning can likely be safely ignored. Otherwise, try passing -p to torch.exe when first building the transforms, or add a ComponentRef to your PatchFamily authoring to pull changed files into the cabinet.", cabinetName, isPatch); | ||
268 | } | ||
269 | |||
270 | public static Message ExpectedForeignRow(SourceLineNumber sourceLineNumbers, string tableName, string primaryKey, string columnName, string columnValue, string foreignTableName) | ||
271 | { | ||
272 | return Message(sourceLineNumbers, Ids.ExpectedForeignRow, "The {0} table contains a row with primary key(s) '{1}' whose {2} column contains a value, '{3}', which specifies a foreign key relationship with the {4} table. However, since the expected foreign row specified by this value does not exist, this will result in some information being left out of the decompiled output.", tableName, primaryKey, columnName, columnValue, foreignTableName); | ||
273 | } | ||
274 | |||
275 | public static Message ExpectedForeignRow(SourceLineNumber sourceLineNumbers, string tableName, string primaryKey, string columnName1, string columnValue1, string columnName2, string columnValue2, string foreignTableName) | ||
276 | { | ||
277 | return Message(sourceLineNumbers, Ids.ExpectedForeignRow, "The {0} table contains a row with primary key(s) '{1}' whose {2} and {4} columns contain the values, '{3}' and '{5}', which specify a foreign key relationship with the {6} table. However, since the expected foreign row specified by this value does not exist, this will result in some information being left out of the decompiled output.", tableName, primaryKey, columnName1, columnValue1, columnName2, columnValue2, foreignTableName); | ||
278 | } | ||
279 | |||
280 | public static Message ExperimentalBundlePlatform(string platform) | ||
281 | { | ||
282 | return Message(null, Ids.ExperimentalBundlePlatform, "The platform {0} is experimental for bundles. Use the x86 platform instead.", platform); | ||
283 | } | ||
284 | |||
285 | public static Message ExternalCabsAreNotSigned(string databaseFile) | ||
286 | { | ||
287 | return Message(null, Ids.ExternalCabsAreNotSigned, "The installer database '{0}' has external cabs, but at least one of them is not signed. Please ensure that all external cabs are signed, if you mean to sign them. If you don't mean to sign them, there is no need to run the insignia tool as part of your build.", databaseFile); | ||
288 | } | ||
289 | |||
290 | public static Message FailedToDeleteTempDir(string directory) | ||
291 | { | ||
292 | return Message(null, Ids.FailedToDeleteTempDir, "Failed to delete temporary directory: {0}", directory); | ||
293 | } | ||
294 | |||
295 | public static Message FileSearchFileNameIssue(SourceLineNumber sourceLineNumbers, string elementName, string attributeName1, string attributeName2) | ||
296 | { | ||
297 | return Message(sourceLineNumbers, Ids.FileSearchFileNameIssue, "The {0} element's {1} and {2} attributes were found. Due to a bug with the Windows Installer, only the Name or LongName attribute should be used. Use the Name attribute for 8.3 compliant file names and the LongName attribute for longer ones. When using only the LongName attribute, ICE03 should be ignored for the Signature table's FileName column.", elementName, attributeName1, attributeName2); | ||
298 | } | ||
299 | |||
300 | public static Message GeneratedShortFileNameConflict(SourceLineNumber sourceLineNumbers, string shortFileName) | ||
301 | { | ||
302 | return Message(sourceLineNumbers, Ids.GeneratedShortFileNameConflict, "The short file name '{0}' was generated for multiple files that may be installed to the same directory. This could be due to conflicting long file names specified by the File/@Name attribute. If that is the case, please resolve the conflict in those attributes. Otherwise, please manually set the File/@ShortName attribute on the conflicting row to fix the collision. If one of the colliding files was added via a patch, that short file name should be specified manually to avoid disturbing the original short file name.", shortFileName); | ||
303 | } | ||
304 | |||
305 | public static Message GeneratedShortFileNameConflict2(SourceLineNumber sourceLineNumbers) | ||
306 | { | ||
307 | return Message(sourceLineNumbers, Ids.GeneratedShortFileNameConflict2, "The location of a conflicting generated short file name related to the previous warning."); | ||
308 | } | ||
309 | |||
310 | public static Message IdentifierCannotBeModularized(SourceLineNumber sourceLineNumbers, string elementName, string attributeName, string identifier, int length, int maximumLength) | ||
311 | { | ||
312 | return Message(sourceLineNumbers, Ids.IdentifierCannotBeModularized, "The {0}/@{1} attribute's value, '{2}', is {3} characters long. It will be too long if modularized. The identifier shouldn't be longer than {4} characters long to allow for modularization (appending a guid for merge modules).", elementName, attributeName, identifier, length, maximumLength); | ||
313 | } | ||
314 | |||
315 | public static Message IdentifierTooLong(SourceLineNumber sourceLineNumbers, string elementName, string attributeName, string value) | ||
316 | { | ||
317 | return Message(sourceLineNumbers, Ids.IdentifierTooLong, "The {0}/@{1} attribute's value, '{2}', is too long for an identifier. Standard identifiers are 72 characters long or less.", elementName, attributeName, value); | ||
318 | } | ||
319 | |||
320 | public static Message IllegalActionInSequence(SourceLineNumber sourceLineNumbers, string sequenceTableName, string actionName) | ||
321 | { | ||
322 | return Message(sourceLineNumbers, Ids.IllegalActionInSequence, "The {0} table contains an action '{1}' which is not allowed in this table. If this is a standard action then it is not valid for this table, if it is a custom action or dialog then this table does not accept actions of that type. This action will be left out of the decompiled output.", sequenceTableName, actionName); | ||
323 | } | ||
324 | |||
325 | public static Message IllegalColumnValue(SourceLineNumber sourceLineNumbers, string tableName, string columnName, Object value) | ||
326 | { | ||
327 | return Message(sourceLineNumbers, Ids.IllegalColumnValue, "The {0}.{1} column's value, '{2}', is not a recognized legal value. This information will be left out of the decompiled output.", tableName, columnName, value); | ||
328 | } | ||
329 | |||
330 | public static Message IllegalPatchCreationTable(SourceLineNumber sourceLineNumbers, string tableName) | ||
331 | { | ||
332 | return Message(sourceLineNumbers, Ids.IllegalPatchCreationTable, "The {0} table is not legal in a patch creation file. The information in this table will be left out of the decompiled output.", tableName); | ||
333 | } | ||
334 | |||
335 | public static Message IllegalRegistryKeyPath(SourceLineNumber sourceLineNumbers, string componentName, string registryId) | ||
336 | { | ||
337 | return Message(sourceLineNumbers, Ids.IllegalRegistryKeyPath, "Component '{0}' specifies an illegal registry keypath of '{1}'. Since this entry actually represents a registry key, not a registry value, it cannot be the keypath.", componentName, registryId); | ||
338 | } | ||
339 | |||
340 | public static Message ImplicitComponentPrimaryFeature(string componentId) | ||
341 | { | ||
342 | return Message(null, Ids.ImplicitComponentPrimaryFeature, "The component '{0}' does not have an explicit primary feature parent specified. If the source files are linked in a different order, the primary parent feature may change. To prevent accidental changes, the primary feature parent should be set to 'yes' in one of the ComponentRef/@Primary, ComponentGroupRef/@Primary, or FeatureGroupRef/@Primary locations for this component.", componentId); | ||
343 | } | ||
344 | |||
345 | public static Message ImplicitlyPerUser(SourceLineNumber sourceLineNumbers, string path) | ||
346 | { | ||
347 | return Message(sourceLineNumbers, Ids.ImplicitlyPerUser, "The MSI '{0}' does not explicitly indicate that it is a per-user package even though the ALLUSERS Property is blank. This suggests a per-user package so the Bundle will assume the package is per-user. If possible, use the Package/@InstallScope attribute to be explicit instead.", path); | ||
348 | } | ||
349 | |||
350 | public static Message ImplicitMergeModulePrimaryFeature(string componentId) | ||
351 | { | ||
352 | return Message(null, Ids.ImplicitMergeModulePrimaryFeature, "The merge module '{0}' does not have an explicit primary feature parent specified. If the source files are linked in a different order, the primary parent feature may change. To prevent accidental changes, the primary feature parent should be set to 'yes' in one of the MergeRef/@Primary or FeatureGroupRef/@Primary locations for this component.", componentId); | ||
353 | } | ||
354 | |||
355 | public static Message InsufficientPermissionHarvestTypeLib() | ||
356 | { | ||
357 | return Message(null, Ids.InsufficientPermissionHarvestTypeLib, "Not enough permissions to harvest type library. On Windows Vista, you must either run Heat elevated, or install Windows Vista SP1 (or higher)."); | ||
358 | } | ||
359 | |||
360 | public static Message InvalidAttributeCombination(SourceLineNumber sourceLineNumbers, string attrib1, string attrib2, string name, string value) | ||
361 | { | ||
362 | return Message(sourceLineNumbers, Ids.InvalidAttributeCombination, "It is invalid to combine attributes {0} and {1}. The decompiled output will set attribute {2} to {3}.", attrib1, attrib2, name, value); | ||
363 | } | ||
364 | |||
365 | public static Message InvalidHigherInstallerVersionInModule(SourceLineNumber sourceLineNumbers, string moduleId, int moduleInstallerVersion, int productInstallerVersion) | ||
366 | { | ||
367 | return Message(sourceLineNumbers, Ids.InvalidHigherInstallerVersionInModule, "Merge module '{0}' has an installer version of {1} which is greater than the product's installer version of {2}. Merging a module with a higher installer version than the product it is being merged into can result in invalid values in the resulting msi. You must set the Package/@InstallerVersion attribute to {1} or greater to merge this merge module into your product.", moduleId, moduleInstallerVersion, productInstallerVersion); | ||
368 | } | ||
369 | |||
370 | public static Message InvalidModuleOrBundleVersion(SourceLineNumber sourceLineNumbers, string moduleOrBundle, string version) | ||
371 | { | ||
372 | return Message(sourceLineNumbers, Ids.InvalidModuleOrBundleVersion, "Invalid {0}/@Version '{1}'. {0} version has a max value of \"65535.65535.65535.65535\" and must be all numeric.", moduleOrBundle, version); | ||
373 | } | ||
374 | |||
375 | public static Message InvalidRemoveFile(SourceLineNumber sourceLineNumbers, string file, string component) | ||
376 | { | ||
377 | return Message(sourceLineNumbers, Ids.InvalidRemoveFile, "File '{0}' was removed from component '{1}'. Removing a file from a component will not result in the file being removed by a patch. You should author a RemoveFile element in your component to remove the file from the installation if you want the file to be removed.", file, component); | ||
378 | } | ||
379 | |||
380 | public static Message MajorUpgradePatchNotRecommended() | ||
381 | { | ||
382 | return Message(null, Ids.MajorUpgradePatchNotRecommended, "Changing the ProductCode in a patch is not recommended because the patch cannot be uninstalled nor can it be sequenced along with other patches for the target product. See http://msdn2.microsoft.com/library/aa367571.aspx for more information."); | ||
383 | } | ||
384 | |||
385 | public static Message MediaExternalCabinetFilenameIllegal(SourceLineNumber sourceLineNumbers, string elementName, string attributeName, string value) | ||
386 | { | ||
387 | return Message(sourceLineNumbers, Ids.MediaExternalCabinetFilenameIllegal, "The {0}/@{1} attribute's value, '{2}', is not a valid external cabinet name. Legal cabinet names should follow 8.3 format: they should contain no more than 8 characters followed by an optional extension of no more than 3 characters. Any character except for the following may be used: \\ ? | > < : / * \" + , ; = [ ] (space). The Windows Installer team has recommended following the 8.3 format for external cabinet files and any other naming scheme is officially unsupported (which means it is not guaranteed to work on all platforms).", elementName, attributeName, value); | ||
388 | } | ||
389 | |||
390 | public static Message MergeRescheduledAction(SourceLineNumber sourceLineNumbers, string tableName, string actionName, string mergeModuleFile) | ||
391 | { | ||
392 | return Message(sourceLineNumbers, Ids.MergeRescheduledAction, "The {0} table contains an action '{1}' which cannot be merged from the merge module '{2}'. This action is likely colliding with an action in the database that is being created. The colliding action may have been authored in the database or merged in from another merge module. If this is a standard action, it is likely colliding due to a difference in the condition for the action in the database and merge module. If this is a custom action, it should only be declared in the database or one merge module.", tableName, actionName, mergeModuleFile); | ||
393 | } | ||
394 | |||
395 | public static Message MergeTableFailed(SourceLineNumber sourceLineNumbers, string tableName, string primaryKeys, string mergeModuleFile) | ||
396 | { | ||
397 | return Message(sourceLineNumbers, Ids.MergeTableFailed, "The {0} table contains a row with primary key(s) '{1}' which cannot be merged from the merge module '{2}'. This is likely due to collision of rows with the same primary key(s) (but other different values in other columns) between the database and the merge module.", tableName, primaryKeys, mergeModuleFile); | ||
398 | } | ||
399 | |||
400 | public static Message MissingUpgradeCode(SourceLineNumber sourceLineNumbers) | ||
401 | { | ||
402 | return Message(sourceLineNumbers, Ids.MissingUpgradeCode, "The Product/@UpgradeCode attribute was not found; it is strongly recommended to ensure that this product can be upgraded."); | ||
403 | } | ||
404 | |||
405 | public static Message MsiTransactionLimitations(SourceLineNumber sourceLineNumbers) | ||
406 | { | ||
407 | return Message(sourceLineNumbers, Ids.MsiTransactionLimitations, "MSI transactions have limitations that make it hard to use them successfully in a bundle. Test the bundle thoroughly, especially in upgrade scenarios and the scenario that required them in the first place."); | ||
408 | } | ||
409 | |||
410 | public static Message NestedInstall(SourceLineNumber sourceLineNumbers, string tableName, string columnName, Object value) | ||
411 | { | ||
412 | return Message(sourceLineNumbers, Ids.NestedInstall, "The {0}.{1} column's value, '{2}', indicates a nested install. Nested installations are not supported by the WiX team. This action will be left out of the decompiled output.", tableName, columnName, value); | ||
413 | } | ||
414 | |||
415 | public static Message NewComponentAddedToExistingFeature(SourceLineNumber sourceLineNumbers, string component, string feature, string transformPath) | ||
416 | { | ||
417 | return Message(sourceLineNumbers, Ids.NewComponentAddedToExistingFeature, "Component '{0}' was added to feature '{1}' in the transform '{2}'. If you cannot guarantee that this feature will always be installed, you should consider adding new components to new top-level features to prevent prompts for source when installing this patch.", component, feature, transformPath); | ||
418 | } | ||
419 | |||
420 | public static Message NoPerMachineDependencies(SourceLineNumber sourceLineNumbers, string packageId) | ||
421 | { | ||
422 | return Message(sourceLineNumbers, Ids.NoPerMachineDependencies, "Bundle dependencies will not be registered on per-machine package '{0}' for a per-user bundle. Either make sure that all packages are installed per-machine, or author any per-machine dependencies as permanent packages.", packageId); | ||
423 | } | ||
424 | |||
425 | public static Message NotABinaryWixlib(string wixlib) | ||
426 | { | ||
427 | return Message(null, Ids.NotABinaryWixlib, "'{0}' is not a binary Wixlib and has no embedded files.", wixlib); | ||
428 | } | ||
429 | |||
430 | public static Message NullMsiAssemblyNameValue(SourceLineNumber sourceLineNumbers, string componentName, string name) | ||
431 | { | ||
432 | return Message(sourceLineNumbers, Ids.NullMsiAssemblyNameValue, "The assembly in component '{0}' has a null or empty {1} assembly name value.", componentName, name); | ||
433 | } | ||
434 | |||
435 | public static Message OrphanedProgId(SourceLineNumber sourceLineNumbers, string progId) | ||
436 | { | ||
437 | return Message(sourceLineNumbers, Ids.OrphanedProgId, "ProgId '{0}' is orphaned. It has no associated component, so it will never install. Every ProgId should have either a parent Class element or child Extension element (at any distance).", progId); | ||
438 | } | ||
439 | |||
440 | public static Message PackageCodeSet(SourceLineNumber sourceLineNumbers) | ||
441 | { | ||
442 | return Message(sourceLineNumbers, Ids.PackageCodeSet, "The Package/@Id attribute has been set. Setting this attribute will allow nonidentical .msi files to have the same package code. This may be a problem because the package code is the primary identifier used by the installer to search for and validate the correct package for a given installation. If a package is changed without changing the package code, the installer may not use the newer package if both are still accessible to the installer. Please remove the Id attribute in order to automatically generate a new package code for each new .msi file."); | ||
443 | } | ||
444 | |||
445 | public static Message PatchTable(SourceLineNumber sourceLineNumbers, string tableName) | ||
446 | { | ||
447 | return Message(sourceLineNumbers, Ids.PatchTable, "The {0} table is added to the install package by a transform from a patch package (.msp) and not authored directly into an install package (.msi). The information in this table will be left out of the decompiled output.", tableName); | ||
448 | } | ||
449 | |||
450 | public static Message PathCanonicalized(SourceLineNumber sourceLineNumbers, string elementName, string attributeName, string originalValue, string canonicalValue) | ||
451 | { | ||
452 | return Message(sourceLineNumbers, Ids.PathCanonicalized, "The {0}/@{1} attribute's value, '{2}', has been canonicalized to '{3}'.", elementName, attributeName, originalValue, canonicalValue); | ||
453 | } | ||
454 | |||
455 | public static Message PerUserButForcingPerMachine(SourceLineNumber sourceLineNumbers, string path) | ||
456 | { | ||
457 | return Message(sourceLineNumbers, Ids.PerUserButForcingPerMachine, "The MSI '{0}' is a per-user package being forced to per-machine. Verify that the MsiPackage/@ForcePerMachine attribute is expected and that the per-user package works correctly when forced to install per-machine.", path); | ||
458 | } | ||
459 | |||
460 | public static Message PlaceholderValue(SourceLineNumber sourceLineNumbers, string elementName, string attributeName, string value) | ||
461 | { | ||
462 | return Message(sourceLineNumbers, Ids.PlaceholderValue, "The {0}/@{1} attribute's value, '{2}', is a placeholder value used in example files. Please replace this placeholder with the appropriate value.", elementName, attributeName, value); | ||
463 | } | ||
464 | |||
465 | public static Message PossiblyIncorrectTypelibVersion(SourceLineNumber sourceLineNumbers, string id) | ||
466 | { | ||
467 | return Message(sourceLineNumbers, Ids.PossiblyIncorrectTypelibVersion, "The Typelib table entry with Id '{0}' could have an incorrect version of '256.0'. InstallShield has a bug relating to the Typelib Version column: it will incorrectly set the value '65536' in to represent version '1.0'. However, this number actually corresponds to version '256.0'. This bug will not affect the typelib version that is registered during installation, however, it will prevent the Windows Installer from correctly identifying whether a typelib is already installed and lead to unnecessary reinstallations of the typelib.", id); | ||
468 | } | ||
469 | |||
470 | public static Message PreprocessorUnknownPragma(SourceLineNumber sourceLineNumbers, string pragmaName) | ||
471 | { | ||
472 | return Message(sourceLineNumbers, Ids.PreprocessorUnknownPragma, "The pragma '{0}' is unknown. Please ensure you have referenced the extension that defines this pragma.", pragmaName); | ||
473 | } | ||
474 | |||
475 | public static Message PreprocessorWarning(SourceLineNumber sourceLineNumbers, string message) | ||
476 | { | ||
477 | return Message(sourceLineNumbers, Ids.PreprocessorWarning, "{0}", message); | ||
478 | } | ||
479 | |||
480 | public static Message ProductIdAuthored(SourceLineNumber sourceLineNumbers) | ||
481 | { | ||
482 | return Message(sourceLineNumbers, Ids.ProductIdAuthored, "The 'ProductID' property should not be directly authored because it will prevent the ValidateProductID standard action from performing any validation during the installation. This property will be set by the ValidateProductID standard action or control event."); | ||
483 | } | ||
484 | |||
485 | public static Message PropertyModularizationSuppressed(SourceLineNumber sourceLineNumbers) | ||
486 | { | ||
487 | return Message(sourceLineNumbers, Ids.PropertyModularizationSuppressed, "The Property/@SuppressModularization attribute has been set to 'yes'. Using this functionality is strongly discouraged; it should only be necessary as a workaround of last resort in rare scenarios."); | ||
488 | } | ||
489 | |||
490 | public static Message PropertyUseless(SourceLineNumber sourceLineNumbers, string id) | ||
491 | { | ||
492 | return Message(sourceLineNumbers, Ids.PropertyUseless, "Property '{0}' does not contain a Value attribute and is not marked as Admin, Secure, or Hidden. The Property element is being ignored.", id); | ||
493 | } | ||
494 | |||
495 | public static Message PropertyValueContainsPropertyReference(SourceLineNumber sourceLineNumbers, string propertyId, string otherProperty) | ||
496 | { | ||
497 | return Message(sourceLineNumbers, Ids.PropertyValueContainsPropertyReference, "The '{0}' Property contains '[{1}]' in its value which is an illegal reference to another property. If this value is a string literal, not a property reference, please ignore this warning. To set a property with the value of another property, use a CustomAction with Property and Value attributes.", propertyId, otherProperty); | ||
498 | } | ||
499 | |||
500 | public static Message RelatedAttributeConditionallyIgnored(SourceLineNumber sourceLineNumbers, string recessiveAttribute, string dominantAttribute, string dominantValue) | ||
501 | { | ||
502 | return Message(sourceLineNumbers, Ids.RelatedAttributeConditionallyIgnored, "Ignoring attribute {0} because attribute {1} is set to {2}.", recessiveAttribute, dominantAttribute, dominantValue); | ||
503 | } | ||
504 | |||
505 | public static Message RemotePayloadsMustNotAlsoBeCompressed(SourceLineNumber sourceLineNumbers, string elementName) | ||
506 | { | ||
507 | return Message(sourceLineNumbers, Ids.RemotePayloadsMustNotAlsoBeCompressed, "The {0}/@Compressed attribute must have value 'no' when a RemotePayload child element is present. RemotePayload indicates that a package will always be downloaded and cannot be compressed into a bundle. To eliminate this warning, explicitly set the {0}/@Compressed attribute to 'no'.", elementName); | ||
508 | } | ||
509 | |||
510 | public static Message RemoveFileNameRequired(SourceLineNumber sourceLineNumbers) | ||
511 | { | ||
512 | return Message(sourceLineNumbers, Ids.RemoveFileNameRequired, "The RemoveFile/@Name attribute will soon become required. In order to match the old functionality of not specifying this attribute, please use the new RemoveFolder element instead."); | ||
513 | } | ||
514 | |||
515 | public static Message RequiresMsi200for64bitPackage(SourceLineNumber sourceLineNumbers) | ||
516 | { | ||
517 | return Message(sourceLineNumbers, Ids.RequiresMsi200for64bitPackage, "Package/@InstallerVersion must be 200 or greater for a 64-bit package. The value will be changed to 200. Please specify a value of 200 or greater in order to eliminate this warning."); | ||
518 | } | ||
519 | |||
520 | public static Message RequiresMsi500forArmPackage(SourceLineNumber sourceLineNumbers) | ||
521 | { | ||
522 | return Message(sourceLineNumbers, Ids.RequiresMsi500forArmPackage, "Package/@InstallerVersion must be 500 or greater for an ARM64 package. The value will be changed to 500. Please specify a value of 500 or greater in order to eliminate this warning."); | ||
523 | } | ||
524 | |||
525 | public static Message ReservedAttribute(SourceLineNumber sourceLineNumbers, string elementName, string attributeName) | ||
526 | { | ||
527 | return Message(sourceLineNumbers, Ids.ReservedAttribute, "The {0}/@{1} attribute is reserved for future use and has no effect in this version of the WiX toolset.", elementName, attributeName); | ||
528 | } | ||
529 | |||
530 | public static Message RetainRangeMismatch(SourceLineNumber sourceLineNumbers, string fileId) | ||
531 | { | ||
532 | return Message(sourceLineNumbers, Ids.RetainRangeMismatch, "Mismatch in RetainRangeCounts for the file '{0}' - ignoring the retain ranges.", fileId); | ||
533 | } | ||
534 | |||
535 | public static Message ServiceConfigFamilyNotSupported(SourceLineNumber sourceLineNumbers, string elementName) | ||
536 | { | ||
537 | return Message(sourceLineNumbers, Ids.ServiceConfigFamilyNotSupported, "{0} functionality is documented in the Windows Installer SDK to \"not [work] as expected.\" Consider replacing {0} with the WixUtilExtension ServiceConfig element.", elementName); | ||
538 | } | ||
539 | |||
540 | public static Message SkippingMergeModuleTable(SourceLineNumber sourceLineNumbers, string tableName) | ||
541 | { | ||
542 | return Message(sourceLineNumbers, Ids.SkippingMergeModuleTable, "The {0} table can only be represented in WiX for merge modules. The information in this table will be left out of the decompiled output.", tableName); | ||
543 | } | ||
544 | |||
545 | public static Message SkippingPatchCreationTable(SourceLineNumber sourceLineNumbers, string tableName) | ||
546 | { | ||
547 | return Message(sourceLineNumbers, Ids.SkippingPatchCreationTable, "The {0} table can only be represented in WiX for patch creation files. The information in this table will be left out of the decompiled output.", tableName); | ||
548 | } | ||
549 | |||
550 | public static Message StandardDirectoryConflictInMergeModule(SourceLineNumber sourceLineNumbers, string directory, string standardDirectory) | ||
551 | { | ||
552 | return Message(sourceLineNumbers, Ids.StandardDirectoryConflictInMergeModule, "The Directory '{0}' starts with the same Id as the standard folder in Windows Installer '{1}'. A directory Id that begins with the same Id as a standard folder that is in an MSM may encounter a conflict when merging the MSM into an MSI. This may result in the contents of this merge module being installed to an unexpected location. To eliminate this warning, change your directory Id to not start with the same Id as any standard folders.", directory, standardDirectory); | ||
553 | } | ||
554 | |||
555 | public static Message SuppressAction(SourceLineNumber sourceLineNumbers, string action, string sequenceName) | ||
556 | { | ||
557 | return Message(sourceLineNumbers, Ids.SuppressAction, "The action '{0}' in the {1} table is being suppressed.", action, sequenceName); | ||
558 | } | ||
559 | |||
560 | public static Message SuppressAction2(SourceLineNumber sourceLineNumbers) | ||
561 | { | ||
562 | return Message(sourceLineNumbers, Ids.SuppressAction2, "The location of the suppressed action related to previous warning."); | ||
563 | } | ||
564 | |||
565 | public static Message SuppressMergedAction(string action, string sequenceName) | ||
566 | { | ||
567 | return Message(null, Ids.SuppressMergedAction, "The merged action '{0}' in the {1} table is being suppressed.", action, sequenceName); | ||
568 | } | ||
569 | |||
570 | public static Message TableIncompatibleWithInstallerVersion(SourceLineNumber sourceLineNumbers, string tableName, int productInstallerVersion) | ||
571 | { | ||
572 | return Message(sourceLineNumbers, Ids.TableIncompatibleWithInstallerVersion, "Using table '{0}' requires a version of Windows Installer greater than specified in your package ('{1}').", tableName, productInstallerVersion); | ||
573 | } | ||
574 | |||
575 | public static Message TargetDirCorrectedDefaultDir() | ||
576 | { | ||
577 | return Message(null, Ids.TargetDirCorrectedDefaultDir, "The Directory with Id 'TARGETDIR' must have the value 'SourceDir' in its 'DefaultDir' column. This has been automatically corrected for you in the decompiled output."); | ||
578 | } | ||
579 | |||
580 | public static Message TooManyProgIds(SourceLineNumber sourceLineNumbers, string clsId, string progId, string otherClsId) | ||
581 | { | ||
582 | return Message(sourceLineNumbers, Ids.TooManyProgIds, "Class '{0}' tried to use ProgId '{1}' which has already been associated with class '{2}'. This information will be left out of the decompiled output.", clsId, progId, otherClsId); | ||
583 | } | ||
584 | |||
585 | public static Message SymbolNotTranslatedToOutput(IntermediateSymbol symbol) | ||
586 | { | ||
587 | var symbolString = $"SymbolName: '{symbol.Definition.Name}', Id: '{symbol.Id?.Id}'"; | ||
588 | return Message(symbol.SourceLineNumbers, Ids.SymbolNotTranslatedToOutput, "The binder doesn't know how to place the following symbol into the output: {0}", symbolString); | ||
589 | } | ||
590 | |||
591 | public static Message UnableToFindFileFromCabOrImage(SourceLineNumber sourceLineNumbers, string existingFileSpec, string srcFileSpec) | ||
592 | { | ||
593 | return Message(sourceLineNumbers, Ids.UnableToFindFileFromCabOrImage, "Unable to find existing file {0} to place in src location {1}. Will likely cause a linker break.", existingFileSpec, srcFileSpec); | ||
594 | } | ||
595 | |||
596 | public static Message UnableToResetAcls(string error) | ||
597 | { | ||
598 | return Message(null, Ids.UnableToResetAcls, "Unable to reset acls on destination files. Exception detail: {0}", error); | ||
599 | } | ||
600 | |||
601 | public static Message UnclearShortcut(SourceLineNumber sourceLineNumbers, string shortcutId, string fileId, string componentId) | ||
602 | { | ||
603 | return Message(sourceLineNumbers, Ids.UnclearShortcut, "Because it is an advertised shortcut, the target of shortcut '{0}' will be the keypath of component '{2}' rather than parent file '{1}'. To eliminate this warning, you can (1) make the Shortcut element a child of the File element that is the keypath of component '{2}', (2) make file '{1}' the keypath of component '{2}', or (3) remove the @Advertise attribute so the shortcut is a non-advertised shortcut.", shortcutId, fileId, componentId); | ||
604 | } | ||
605 | |||
606 | public static Message UnexpectedEntrySection(SourceLineNumber sourceLineNumbers, string sectionType, string expectedType, string outputExtension) | ||
607 | { | ||
608 | return Message(sourceLineNumbers, Ids.UnexpectedEntrySection, "Found mismatched entry point <{0}>. Expected <{1}> for specified output package type {2}.", sectionType, expectedType, outputExtension); | ||
609 | } | ||
610 | |||
611 | public static Message UnexpectedTableInProduct(SourceLineNumber sourceLineNumbers, string tableName) | ||
612 | { | ||
613 | return Message(sourceLineNumbers, Ids.UnexpectedTableInProduct, "An unexpected row in the '{0}' table was found in this product. Products should not contain the '{0}' table.", tableName); | ||
614 | } | ||
615 | |||
616 | public static Message UnknownAction(SourceLineNumber sourceLineNumbers, string sequenceTableName, string actionName) | ||
617 | { | ||
618 | return Message(sourceLineNumbers, Ids.UnknownAction, "The {0} table contains an action '{1}' which is not a known custom action, dialog, or standard action. This action will be left out of the decompiled output.", sequenceTableName, actionName); | ||
619 | } | ||
620 | |||
621 | public static Message UnknownPermission(SourceLineNumber sourceLineNumbers, string tableName, string primaryKey, int bitPosition) | ||
622 | { | ||
623 | return Message(sourceLineNumbers, Ids.UnknownPermission, "The {0} table contains a row with primary key '{1}' which has an unknown permission at bit {2}.", tableName, primaryKey, bitPosition); | ||
624 | } | ||
625 | |||
626 | public static Message UnrepresentableColumnValue(SourceLineNumber sourceLineNumbers, string tableName, string columnName, Object value) | ||
627 | { | ||
628 | return Message(sourceLineNumbers, Ids.UnrepresentableColumnValue, "The {0}.{1} column's value, '{2}', cannot currently be represented in the WiX schema.", tableName, columnName, value); | ||
629 | } | ||
630 | |||
631 | public static Message UnsupportedCommandLineArgument(string arg) | ||
632 | { | ||
633 | return Message(null, Ids.UnsupportedCommandLineArgument, "'{0}' is not a valid command line argument.", arg); | ||
634 | } | ||
635 | |||
636 | public static Message UpdateOfNonKeyPathFile(string nonKeyPathFileId, string componentId, string keyPathFileId) | ||
637 | { | ||
638 | return Message(null, Ids.UpdateOfNonKeyPathFile, "File '{0}' in Component '{1}' was changed, but the KeyPath file '{2}' was not. This file will not be patched on the target system if the REINSTALLMODE does not contain 'A'. The KeyPath file should also be changed and included in your patch.", nonKeyPathFileId, componentId, keyPathFileId); | ||
639 | } | ||
640 | |||
641 | public static Message UxPayloadsOnlySupportEmbedding(SourceLineNumber sourceLineNumbers, string sourceFile) | ||
642 | { | ||
643 | return Message(sourceLineNumbers, Ids.UxPayloadsOnlySupportEmbedding, "A bootstrapper application payload ('{0}') was marked for something other than embedded packaging, possibly because it included a @DownloadUrl attribute. At present, bootstrapper application payloads must be embedded in the bundle, so the requested packaging is being ignored.", sourceFile); | ||
644 | } | ||
645 | |||
646 | public static Message ValidationFailedDueToSystemPolicy() | ||
647 | { | ||
648 | return Message(null, Ids.ValidationFailedDueToSystemPolicy, "Validation could not run due to system policy. To eliminate this warning, run the process as admin or suppress ICE validation."); | ||
649 | } | ||
650 | |||
651 | public static Message ValidationWarning(SourceLineNumber sourceLineNumbers, string ice, string message) | ||
652 | { | ||
653 | return Message(sourceLineNumbers, Ids.ValidationWarning, "{0}: {1}", ice, message); | ||
654 | } | ||
655 | |||
656 | public static Message VariableDeclarationCollision(SourceLineNumber sourceLineNumbers, string variableName, string variableValue, string variableCollidingValue) | ||
657 | { | ||
658 | return Message(sourceLineNumbers, Ids.VariableDeclarationCollision, "The variable '{0}' with value '{1}' was previously declared with value '{2}'.", variableName, variableValue, variableCollidingValue); | ||
659 | } | ||
660 | |||
661 | public static Message VersionTruncated(SourceLineNumber sourceLineNumbers, string originalVersion, string package, string truncatedVersion) | ||
662 | { | ||
663 | return Message(sourceLineNumbers, Ids.VersionTruncated, "Product version {0} in package '{1}' is not valid per the MSI SDK and cannot be represented in a bundle. It has been truncated to {2}.", originalVersion, package, truncatedVersion); | ||
664 | } | ||
665 | |||
666 | public static Message CollidingModularizationTypes(string tableName, string columnName, string foreignTableName, int foreignColumnNumber, string modularizationType, string foreignModularizationType) | ||
667 | { | ||
668 | return Message(null, Ids.CollidingModularizationTypes, "The definition for the '{0}' table's '{1}' column is a foreign key relationship to the '{2}' table's column number {3}. The modularization types of the two column definitions differ: table '{0}' uses type {4} and table '{2}' uses type {5}. Change one of the modularization types so that they match.", tableName, columnName, foreignTableName, foreignColumnNumber, modularizationType, foreignModularizationType); | ||
669 | } | ||
670 | |||
671 | public static Message InvalidEnvironmentVariable(string environmentVariable, string value, string defaultValue) | ||
672 | { | ||
673 | return Message(null, Ids.InvalidEnvironmentVariable, "The {0} environment variable is set to an invalid value of '{1}'. The default value '{2}' will be used instead.", environmentVariable, value, defaultValue); | ||
674 | } | ||
675 | |||
676 | private static Message Message(SourceLineNumber sourceLineNumber, Ids id, string format, params object[] args) | ||
677 | { | ||
678 | return new Message(sourceLineNumber, MessageLevel.Warning, (int)id, format, args); | ||
679 | } | ||
680 | |||
681 | private static Message Message(SourceLineNumber sourceLineNumber, Ids id, ResourceManager resourceManager, string resourceName, params object[] args) | ||
682 | { | ||
683 | return new Message(sourceLineNumber, MessageLevel.Warning, (int)id, resourceManager, resourceName, args); | ||
684 | } | ||
685 | |||
686 | public enum Ids | ||
687 | { | ||
688 | IdentifierCannotBeModularized = 1000, | ||
689 | EmptyAttributeValue = 1001, | ||
690 | UnableToFindFileFromCabOrImage = 1002, | ||
691 | CopyFileFileIdUseless = 1003, | ||
692 | NestedInstall = 1004, | ||
693 | OrphanedProgId = 1005, | ||
694 | PropertyUseless = 1006, | ||
695 | RemoveFileNameRequired = 1007, | ||
696 | SuppressAction = 1008, | ||
697 | SuppressMergedAction = 1009, | ||
698 | TargetDirCorrectedDefaultDir = 1010, | ||
699 | AccessDeniedForDeletion = 1011, | ||
700 | DirectoryInUse = 1012, | ||
701 | AccessDeniedForSettingAttributes = 1013, | ||
702 | UnknownAction = 1024, | ||
703 | IdentifierTooLong = 1026, | ||
704 | UnknownPermission = 1030, | ||
705 | DirectoryRedundantNames = 1031, | ||
706 | UnableToResetAcls = 1032, | ||
707 | MediaExternalCabinetFilenameIllegal = 1033, | ||
708 | DeprecatedPreProcVariable = 1034, | ||
709 | FileSearchFileNameIssue = 1043, | ||
710 | AmbiguousFileOrDirectoryName = 1044, | ||
711 | PossiblyIncorrectTypelibVersion = 1048, | ||
712 | ImplicitComponentPrimaryFeature = 1049, | ||
713 | ActionSequenceCollision = 1050, | ||
714 | ActionSequenceCollision2 = 1051, | ||
715 | SuppressAction2 = 1052, | ||
716 | UnexpectedTableInProduct = 1053, | ||
717 | DeprecatedAttribute = 1054, | ||
718 | MergeRescheduledAction = 1055, | ||
719 | MergeTableFailed = 1056, | ||
720 | DecompiledStandardActionRelativelyScheduledInModule = 1057, | ||
721 | IllegalActionInSequence = 1058, | ||
722 | ExpectedForeignRow = 1059, | ||
723 | DecompilingAsCustomTable = 1060, | ||
724 | IllegalPatchCreationTable = 1061, | ||
725 | SkippingMergeModuleTable = 1062, | ||
726 | SkippingPatchCreationTable = 1063, | ||
727 | UnrepresentableColumnValue = 1064, | ||
728 | DeprecatedTable = 1065, | ||
729 | PatchTable = 1066, | ||
730 | IllegalColumnValue = 1067, | ||
731 | DeprecatedLongNameAttribute = 1069, | ||
732 | GeneratedShortFileNameConflict = 1070, | ||
733 | GeneratedShortFileNameConflict2 = 1071, | ||
734 | DangerousTableInMergeModule = 1072, | ||
735 | DeprecatedLocalizationVariablePrefix = 1073, | ||
736 | PlaceholderValue = 1074, | ||
737 | MissingUpgradeCode = 1075, | ||
738 | ValidationWarning = 1076, | ||
739 | PropertyValueContainsPropertyReference = 1077, | ||
740 | DeprecatedUpgradeProperty = 1078, | ||
741 | EmptyCabinet = 1079, | ||
742 | DeprecatedRegistryElement = 1080, | ||
743 | IllegalRegistryKeyPath = 1081, | ||
744 | DeprecatedPatchSequenceTargetAttribute = 1082, | ||
745 | ProductIdAuthored = 1083, | ||
746 | ImplicitMergeModulePrimaryFeature = 1084, | ||
747 | DeprecatedIgnoreModularizationElement = 1085, | ||
748 | PropertyModularizationSuppressed = 1086, | ||
749 | DeprecatedPackageCompressedAttribute = 1087, | ||
750 | DeprecatedQuestionMarksGuid = 1090, | ||
751 | PackageCodeSet = 1091, | ||
752 | InvalidModuleOrBundleVersion = 1093, | ||
753 | InvalidRemoveFile = 1095, | ||
754 | PreprocessorWarning = 1096, | ||
755 | UpdateOfNonKeyPathFile = 1097, | ||
756 | UnsupportedCommandLineArgument = 1098, | ||
757 | MajorUpgradePatchNotRecommended = 1099, | ||
758 | RetainRangeMismatch = 1100, | ||
759 | DefaultLanguageUsedForVersionedFile = 1101, | ||
760 | DefaultLanguageUsedForUnversionedFile = 1102, | ||
761 | DefaultVersionUsedForUnversionedFile = 1103, | ||
762 | InvalidHigherInstallerVersionInModule = 1104, | ||
763 | ValidationFailedDueToSystemPolicy = 1105, | ||
764 | ColumnsIncompatibleWithInstallerVersion = 1106, | ||
765 | TableIncompatibleWithInstallerVersion = 1107, | ||
766 | DeprecatedCommandLineSwitch = 1108, | ||
767 | UnexpectedEntrySection = 1109, | ||
768 | NewComponentAddedToExistingFeature = 1110, | ||
769 | DeprecatedAttributeValue = 1111, | ||
770 | InsufficientPermissionHarvestTypeLib = 1112, | ||
771 | UnclearShortcut = 1113, | ||
772 | TooManyProgIds = 1114, | ||
773 | BadColumnDataIgnored = 1115, | ||
774 | NullMsiAssemblyNameValue = 1116, | ||
775 | InvalidAttributeCombination = 1117, | ||
776 | VariableDeclarationCollision = 1118, | ||
777 | DuplicatePrimaryKey = 1119, | ||
778 | RequiresMsi200for64bitPackage = 1121, | ||
779 | ExternalCabsAreNotSigned = 1122, | ||
780 | FailedToDeleteTempDir = 1123, | ||
781 | StandardDirectoryConflictInMergeModule = 1124, | ||
782 | PreprocessorUnknownPragma = 1125, | ||
783 | DeprecatedComponentGroupId = 1126, | ||
784 | UxPayloadsOnlySupportEmbedding = 1127, | ||
785 | DiscardedRollbackBoundary = 1129, | ||
786 | DeprecatedElement = 1130, | ||
787 | CannotUpdateCabCache = 1131, | ||
788 | DownloadUrlNotSupportedForBAPayloads = 1132, | ||
789 | DiscouragedAllUsersValue = 1133, | ||
790 | ImplicitlyPerUser = 1134, | ||
791 | PerUserButForcingPerMachine = 1135, | ||
792 | AttributeShouldContain = 1136, | ||
793 | DuplicateComponentGuidsMustHaveMutuallyExclusiveConditions = 1137, | ||
794 | DeprecatedRegistryKeyActionAttribute = 1138, | ||
795 | NotABinaryWixlib = 1139, | ||
796 | NoPerMachineDependencies = 1140, | ||
797 | DownloadUrlNotSupportedForAttachedContainers = 1141, | ||
798 | ReservedAttribute = 1142, | ||
799 | RequiresMsi500forArmPackage = 1143, | ||
800 | RemotePayloadsMustNotAlsoBeCompressed = 1144, | ||
801 | AllChangesIncludedInPatch = 1145, | ||
802 | RelatedAttributeConditionallyIgnored = 1146, | ||
803 | BackslashTerminateInlineDirectorySyntax = 1147, | ||
804 | VersionTruncated = 1148, | ||
805 | ServiceConfigFamilyNotSupported = 1149, | ||
806 | SymbolNotTranslatedToOutput = 1150, | ||
807 | MsiTransactionLimitations = 1151, | ||
808 | PathCanonicalized = 1152, | ||
809 | DetectConditionRecommended = 1153, | ||
810 | ExperimentalBundlePlatform = 1154, | ||
811 | |||
812 | CollidingModularizationTypes = 1156, | ||
813 | InvalidEnvironmentVariable = 1157, | ||
814 | } | ||
815 | } | ||
816 | } | ||
diff --git a/src/api/wix/WixToolset.Data/WindowsInstaller/ColumnCategory.cs b/src/api/wix/WixToolset.Data/WindowsInstaller/ColumnCategory.cs new file mode 100644 index 00000000..0d50b7fd --- /dev/null +++ b/src/api/wix/WixToolset.Data/WindowsInstaller/ColumnCategory.cs | |||
@@ -0,0 +1,91 @@ | |||
1 | // Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. | ||
2 | |||
3 | namespace WixToolset.Data.WindowsInstaller | ||
4 | { | ||
5 | /// <summary> | ||
6 | /// Column validation category type | ||
7 | /// </summary> | ||
8 | public enum ColumnCategory | ||
9 | { | ||
10 | /// <summary>Unknown category, default and invalid.</summary> | ||
11 | Unknown, | ||
12 | |||
13 | /// <summary>Text category.</summary> | ||
14 | Text, | ||
15 | |||
16 | /// <summary>UpperCase category.</summary> | ||
17 | UpperCase, | ||
18 | |||
19 | /// <summary>LowerCase category.</summary> | ||
20 | LowerCase, | ||
21 | |||
22 | /// <summary>Integer category.</summary> | ||
23 | Integer, | ||
24 | |||
25 | /// <summary>DoubleInteger category.</summary> | ||
26 | DoubleInteger, | ||
27 | |||
28 | /// <summary>TimeDate category.</summary> | ||
29 | TimeDate, | ||
30 | |||
31 | /// <summary>Identifier category.</summary> | ||
32 | Identifier, | ||
33 | |||
34 | /// <summary>Property category.</summary> | ||
35 | Property, | ||
36 | |||
37 | /// <summary>Filename category.</summary> | ||
38 | Filename, | ||
39 | |||
40 | /// <summary>WildCardFilename category.</summary> | ||
41 | WildCardFilename, | ||
42 | |||
43 | /// <summary>Path category.</summary> | ||
44 | Path, | ||
45 | |||
46 | /// <summary>Paths category.</summary> | ||
47 | Paths, | ||
48 | |||
49 | /// <summary>AnyPath category.</summary> | ||
50 | AnyPath, | ||
51 | |||
52 | /// <summary>DefaultDir category.</summary> | ||
53 | DefaultDir, | ||
54 | |||
55 | /// <summary>RegPath category.</summary> | ||
56 | RegPath, | ||
57 | |||
58 | /// <summary>Formatted category.</summary> | ||
59 | Formatted, | ||
60 | |||
61 | /// <summary>Template category.</summary> | ||
62 | Template, | ||
63 | |||
64 | /// <summary>Condition category.</summary> | ||
65 | Condition, | ||
66 | |||
67 | /// <summary>Guid category.</summary> | ||
68 | Guid, | ||
69 | |||
70 | /// <summary>Version category.</summary> | ||
71 | Version, | ||
72 | |||
73 | /// <summary>Language category.</summary> | ||
74 | Language, | ||
75 | |||
76 | /// <summary>Binary category.</summary> | ||
77 | Binary, | ||
78 | |||
79 | /// <summary>CustomSource category.</summary> | ||
80 | CustomSource, | ||
81 | |||
82 | /// <summary>Cabinet category.</summary> | ||
83 | Cabinet, | ||
84 | |||
85 | /// <summary>Shortcut category.</summary> | ||
86 | Shortcut, | ||
87 | |||
88 | /// <summary>Formatted SDDL category.</summary> | ||
89 | FormattedSDDLText, | ||
90 | } | ||
91 | } | ||
diff --git a/src/api/wix/WixToolset.Data/WindowsInstaller/ColumnDefinition.cs b/src/api/wix/WixToolset.Data/WindowsInstaller/ColumnDefinition.cs new file mode 100644 index 00000000..f4dbab34 --- /dev/null +++ b/src/api/wix/WixToolset.Data/WindowsInstaller/ColumnDefinition.cs | |||
@@ -0,0 +1,702 @@ | |||
1 | // Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. | ||
2 | |||
3 | namespace WixToolset.Data.WindowsInstaller | ||
4 | { | ||
5 | using System; | ||
6 | using System.Globalization; | ||
7 | using System.Xml; | ||
8 | |||
9 | /// <summary> | ||
10 | /// Definition of a table's column. | ||
11 | /// </summary> | ||
12 | public sealed class ColumnDefinition : IComparable<ColumnDefinition> | ||
13 | { | ||
14 | /// <summary> | ||
15 | /// Creates a new column definition. | ||
16 | /// </summary> | ||
17 | /// <param name="name">Name of column.</param> | ||
18 | /// <param name="type">Type of column</param> | ||
19 | /// <param name="length">Length of column.</param> | ||
20 | /// <param name="primaryKey">If column is primary key.</param> | ||
21 | /// <param name="nullable">If column is nullable.</param> | ||
22 | /// <param name="category">Validation category for column.</param> | ||
23 | /// <param name="minValue">Optional minimum value for the column.</param> | ||
24 | /// <param name="maxValue">Optional maximum value for the colum.</param> | ||
25 | /// <param name="keyTable">Optional name of table for foreign key.</param> | ||
26 | /// <param name="keyColumn">Optional name of column for foreign key.</param> | ||
27 | /// <param name="possibilities">Set of possible values for column.</param> | ||
28 | /// <param name="description">Description of column in vaidation table.</param> | ||
29 | /// <param name="modularizeType">Type of modularization for column</param> | ||
30 | /// <param name="forceLocalizable">If the column is localizable.</param> | ||
31 | /// <param name="useCData">If whitespace should be preserved in a CDATA node.</param> | ||
32 | /// <param name="unreal">If not saved to MSI.</param> | ||
33 | public ColumnDefinition(string name, ColumnType type, int length, bool primaryKey, bool nullable, ColumnCategory category, long? minValue = null, long? maxValue = null, string keyTable = null, int? keyColumn = null, string possibilities = null, string description = null, ColumnModularizeType? modularizeType = null, bool forceLocalizable = false, bool useCData = false, bool unreal = false) | ||
34 | { | ||
35 | this.Name = name; | ||
36 | this.Type = type; | ||
37 | this.Length = length; | ||
38 | this.PrimaryKey = primaryKey; | ||
39 | this.Nullable = nullable; | ||
40 | this.ModularizeType = CalculateModularizationType(modularizeType, category); | ||
41 | this.IsLocalizable = forceLocalizable || ColumnType.Localized == type; | ||
42 | this.MinValue = minValue; | ||
43 | this.MaxValue = maxValue; | ||
44 | this.KeyTable = keyTable; | ||
45 | this.KeyColumn = keyColumn; | ||
46 | this.Category = category; | ||
47 | this.Possibilities = possibilities; | ||
48 | this.Description = description; | ||
49 | this.UseCData = useCData; | ||
50 | this.Unreal = unreal; | ||
51 | } | ||
52 | |||
53 | /// <summary> | ||
54 | /// Gets whether this column was added via a transform. | ||
55 | /// </summary> | ||
56 | /// <value>Whether this column was added via a transform.</value> | ||
57 | public bool Added { get; set; } | ||
58 | |||
59 | /// <summary> | ||
60 | /// Gets the name of the column. | ||
61 | /// </summary> | ||
62 | /// <value>Name of column.</value> | ||
63 | public string Name { get; } | ||
64 | |||
65 | /// <summary> | ||
66 | /// Gets the type of the column. | ||
67 | /// </summary> | ||
68 | /// <value>Type of column.</value> | ||
69 | public ColumnType Type { get; } | ||
70 | |||
71 | /// <summary> | ||
72 | /// Gets the length of the column. | ||
73 | /// </summary> | ||
74 | /// <value>Length of column.</value> | ||
75 | public int Length { get; } | ||
76 | |||
77 | /// <summary> | ||
78 | /// Gets if the column is a primary key. | ||
79 | /// </summary> | ||
80 | /// <value>true if column is primary key.</value> | ||
81 | public bool PrimaryKey { get; } | ||
82 | |||
83 | /// <summary> | ||
84 | /// Gets if the column is nullable. | ||
85 | /// </summary> | ||
86 | /// <value>true if column is nullable.</value> | ||
87 | public bool Nullable { get; } | ||
88 | |||
89 | /// <summary> | ||
90 | /// Gets the type of modularization for this column. | ||
91 | /// </summary> | ||
92 | /// <value>Column's modularization type.</value> | ||
93 | public ColumnModularizeType ModularizeType { get; } | ||
94 | |||
95 | /// <summary> | ||
96 | /// Gets if the column is localizable. Can be because the type is localizable, or because the column | ||
97 | /// was explicitly set to be so. | ||
98 | /// </summary> | ||
99 | /// <value>true if column is localizable.</value> | ||
100 | public bool IsLocalizable { get; } | ||
101 | |||
102 | /// <summary> | ||
103 | /// Gets the minimum value for the column. | ||
104 | /// </summary> | ||
105 | /// <value>Minimum value for the column.</value> | ||
106 | public long? MinValue { get; } | ||
107 | |||
108 | /// <summary> | ||
109 | /// Gets the maximum value for the column. | ||
110 | /// </summary> | ||
111 | /// <value>Maximum value for the column.</value> | ||
112 | public long? MaxValue { get; } | ||
113 | |||
114 | /// <summary> | ||
115 | /// Gets the table that has the foreign key for this column | ||
116 | /// </summary> | ||
117 | /// <value>Foreign key table name.</value> | ||
118 | public string KeyTable { get; } | ||
119 | |||
120 | /// <summary> | ||
121 | /// Gets the foreign key column that this column refers to. | ||
122 | /// </summary> | ||
123 | /// <value>Foreign key column.</value> | ||
124 | public int? KeyColumn { get; } | ||
125 | |||
126 | /// <summary> | ||
127 | /// Gets the validation category for this column. | ||
128 | /// </summary> | ||
129 | /// <value>Validation category.</value> | ||
130 | public ColumnCategory Category { get; } | ||
131 | |||
132 | /// <summary> | ||
133 | /// Gets the set of possibilities for this column. | ||
134 | /// </summary> | ||
135 | /// <value>Set of possibilities for this column.</value> | ||
136 | public string Possibilities { get; } | ||
137 | |||
138 | /// <summary> | ||
139 | /// Gets the description for this column. | ||
140 | /// </summary> | ||
141 | /// <value>Description of column.</value> | ||
142 | public string Description { get; } | ||
143 | |||
144 | /// <summary> | ||
145 | /// Gets if whitespace should be preserved in a CDATA node. | ||
146 | /// </summary> | ||
147 | /// <value>true if whitespace should be preserved in a CDATA node.</value> | ||
148 | public bool UseCData { get; } | ||
149 | |||
150 | /// <summary> | ||
151 | /// Gets if column is Unreal. | ||
152 | /// </summary> | ||
153 | /// <value>true if column should not be included in idts.</value> | ||
154 | public bool Unreal { get; } | ||
155 | |||
156 | /// <summary> | ||
157 | /// Parses a column definition in a table definition. | ||
158 | /// </summary> | ||
159 | /// <param name="reader">Reader to get data from.</param> | ||
160 | /// <returns>The ColumnDefintion represented by the Xml.</returns> | ||
161 | internal static ColumnDefinition Read(XmlReader reader) | ||
162 | { | ||
163 | if (!reader.LocalName.Equals("columnDefinition")) | ||
164 | { | ||
165 | throw new XmlException(); | ||
166 | } | ||
167 | |||
168 | bool added = false; | ||
169 | ColumnCategory category = ColumnCategory.Unknown; | ||
170 | string description = null; | ||
171 | bool empty = reader.IsEmptyElement; | ||
172 | int? keyColumn = null; | ||
173 | string keyTable = null; | ||
174 | int length = -1; | ||
175 | bool localizable = false; | ||
176 | long? maxValue = null; | ||
177 | long? minValue = null; | ||
178 | var modularize = ColumnModularizeType.None; | ||
179 | string name = null; | ||
180 | bool nullable = false; | ||
181 | string possibilities = null; | ||
182 | bool primaryKey = false; | ||
183 | var type = ColumnType.Unknown; | ||
184 | bool useCData = false; | ||
185 | bool unreal = false; | ||
186 | |||
187 | // parse the attributes | ||
188 | while (reader.MoveToNextAttribute()) | ||
189 | { | ||
190 | switch (reader.LocalName) | ||
191 | { | ||
192 | case "added": | ||
193 | added = reader.Value.Equals("yes"); | ||
194 | break; | ||
195 | case "category": | ||
196 | switch (reader.Value) | ||
197 | { | ||
198 | case "anyPath": | ||
199 | category = ColumnCategory.AnyPath; | ||
200 | break; | ||
201 | case "binary": | ||
202 | category = ColumnCategory.Binary; | ||
203 | break; | ||
204 | case "cabinet": | ||
205 | category = ColumnCategory.Cabinet; | ||
206 | break; | ||
207 | case "condition": | ||
208 | category = ColumnCategory.Condition; | ||
209 | break; | ||
210 | case "customSource": | ||
211 | category = ColumnCategory.CustomSource; | ||
212 | break; | ||
213 | case "defaultDir": | ||
214 | category = ColumnCategory.DefaultDir; | ||
215 | break; | ||
216 | case "doubleInteger": | ||
217 | category = ColumnCategory.DoubleInteger; | ||
218 | break; | ||
219 | case "filename": | ||
220 | category = ColumnCategory.Filename; | ||
221 | break; | ||
222 | case "formatted": | ||
223 | category = ColumnCategory.Formatted; | ||
224 | break; | ||
225 | case "formattedSddl": | ||
226 | category = ColumnCategory.FormattedSDDLText; | ||
227 | break; | ||
228 | case "guid": | ||
229 | category = ColumnCategory.Guid; | ||
230 | break; | ||
231 | case "identifier": | ||
232 | category = ColumnCategory.Identifier; | ||
233 | break; | ||
234 | case "integer": | ||
235 | category = ColumnCategory.Integer; | ||
236 | break; | ||
237 | case "language": | ||
238 | category = ColumnCategory.Language; | ||
239 | break; | ||
240 | case "lowerCase": | ||
241 | category = ColumnCategory.LowerCase; | ||
242 | break; | ||
243 | case "path": | ||
244 | category = ColumnCategory.Path; | ||
245 | break; | ||
246 | case "paths": | ||
247 | category = ColumnCategory.Paths; | ||
248 | break; | ||
249 | case "property": | ||
250 | category = ColumnCategory.Property; | ||
251 | break; | ||
252 | case "regPath": | ||
253 | category = ColumnCategory.RegPath; | ||
254 | break; | ||
255 | case "shortcut": | ||
256 | category = ColumnCategory.Shortcut; | ||
257 | break; | ||
258 | case "template": | ||
259 | category = ColumnCategory.Template; | ||
260 | break; | ||
261 | case "text": | ||
262 | category = ColumnCategory.Text; | ||
263 | break; | ||
264 | case "timeDate": | ||
265 | category = ColumnCategory.TimeDate; | ||
266 | break; | ||
267 | case "upperCase": | ||
268 | category = ColumnCategory.UpperCase; | ||
269 | break; | ||
270 | case "version": | ||
271 | category = ColumnCategory.Version; | ||
272 | break; | ||
273 | case "wildCardFilename": | ||
274 | category = ColumnCategory.WildCardFilename; | ||
275 | break; | ||
276 | default: | ||
277 | throw new InvalidOperationException(); | ||
278 | } | ||
279 | break; | ||
280 | case "description": | ||
281 | description = reader.Value; | ||
282 | break; | ||
283 | case "keyColumn": | ||
284 | keyColumn = Convert.ToInt32(reader.Value, 10); | ||
285 | break; | ||
286 | case "keyTable": | ||
287 | keyTable = reader.Value; | ||
288 | break; | ||
289 | case "length": | ||
290 | length = Convert.ToInt32(reader.Value, 10); | ||
291 | break; | ||
292 | case "localizable": | ||
293 | localizable = reader.Value.Equals("yes"); | ||
294 | break; | ||
295 | case "maxValue": | ||
296 | maxValue = Convert.ToInt32(reader.Value, 10); | ||
297 | break; | ||
298 | case "minValue": | ||
299 | minValue = Convert.ToInt32(reader.Value, 10); | ||
300 | break; | ||
301 | case "modularize": | ||
302 | switch (reader.Value) | ||
303 | { | ||
304 | case "column": | ||
305 | modularize = ColumnModularizeType.Column; | ||
306 | break; | ||
307 | case "companionFile": | ||
308 | modularize = ColumnModularizeType.CompanionFile; | ||
309 | break; | ||
310 | case "condition": | ||
311 | modularize = ColumnModularizeType.Condition; | ||
312 | break; | ||
313 | case "controlEventArgument": | ||
314 | modularize = ColumnModularizeType.ControlEventArgument; | ||
315 | break; | ||
316 | case "controlText": | ||
317 | modularize = ColumnModularizeType.ControlText; | ||
318 | break; | ||
319 | case "icon": | ||
320 | modularize = ColumnModularizeType.Icon; | ||
321 | break; | ||
322 | case "none": | ||
323 | modularize = ColumnModularizeType.None; | ||
324 | break; | ||
325 | case "property": | ||
326 | modularize = ColumnModularizeType.Property; | ||
327 | break; | ||
328 | case "semicolonDelimited": | ||
329 | modularize = ColumnModularizeType.SemicolonDelimited; | ||
330 | break; | ||
331 | default: | ||
332 | throw new XmlException(); | ||
333 | } | ||
334 | break; | ||
335 | case "name": | ||
336 | switch (reader.Value) | ||
337 | { | ||
338 | case "CREATE": | ||
339 | case "DELETE": | ||
340 | case "DROP": | ||
341 | case "INSERT": | ||
342 | throw new XmlException(); | ||
343 | default: | ||
344 | name = reader.Value; | ||
345 | break; | ||
346 | } | ||
347 | break; | ||
348 | case "nullable": | ||
349 | nullable = reader.Value.Equals("yes"); | ||
350 | break; | ||
351 | case "primaryKey": | ||
352 | primaryKey = reader.Value.Equals("yes"); | ||
353 | break; | ||
354 | case "set": | ||
355 | possibilities = reader.Value; | ||
356 | break; | ||
357 | case "type": | ||
358 | switch (reader.Value) | ||
359 | { | ||
360 | case "localized": | ||
361 | type = ColumnType.Localized; | ||
362 | break; | ||
363 | case "number": | ||
364 | type = ColumnType.Number; | ||
365 | break; | ||
366 | case "object": | ||
367 | type = ColumnType.Object; | ||
368 | break; | ||
369 | case "string": | ||
370 | type = ColumnType.String; | ||
371 | break; | ||
372 | case "preserved": | ||
373 | type = ColumnType.Preserved; | ||
374 | break; | ||
375 | default: | ||
376 | throw new XmlException(); | ||
377 | } | ||
378 | break; | ||
379 | case "useCData": | ||
380 | useCData = reader.Value.Equals("yes"); | ||
381 | break; | ||
382 | case "unreal": | ||
383 | unreal = reader.Value.Equals("yes"); | ||
384 | break; | ||
385 | } | ||
386 | } | ||
387 | |||
388 | // parse the child elements (there should be none) | ||
389 | if (!empty) | ||
390 | { | ||
391 | bool done = false; | ||
392 | |||
393 | while (!done && reader.Read()) | ||
394 | { | ||
395 | switch (reader.NodeType) | ||
396 | { | ||
397 | case XmlNodeType.Element: | ||
398 | throw new XmlException(); | ||
399 | case XmlNodeType.EndElement: | ||
400 | done = true; | ||
401 | break; | ||
402 | } | ||
403 | } | ||
404 | |||
405 | if (!done) | ||
406 | { | ||
407 | throw new XmlException(); | ||
408 | } | ||
409 | } | ||
410 | |||
411 | ColumnDefinition columnDefinition = new ColumnDefinition(name, type, length, primaryKey, nullable, category, minValue, maxValue, keyTable, keyColumn, possibilities, description, modularize, localizable, useCData, unreal); | ||
412 | columnDefinition.Added = added; | ||
413 | |||
414 | return columnDefinition; | ||
415 | } | ||
416 | |||
417 | /// <summary> | ||
418 | /// Persists a ColumnDefinition in an XML format. | ||
419 | /// </summary> | ||
420 | /// <param name="writer">XmlWriter where the Output should persist itself as XML.</param> | ||
421 | internal void Write(XmlWriter writer) | ||
422 | { | ||
423 | writer.WriteStartElement("columnDefinition", TableDefinitionCollection.XmlNamespaceUri); | ||
424 | |||
425 | writer.WriteAttributeString("name", this.Name); | ||
426 | |||
427 | switch (this.Type) | ||
428 | { | ||
429 | case ColumnType.Localized: | ||
430 | writer.WriteAttributeString("type", "localized"); | ||
431 | break; | ||
432 | case ColumnType.Number: | ||
433 | writer.WriteAttributeString("type", "number"); | ||
434 | break; | ||
435 | case ColumnType.Object: | ||
436 | writer.WriteAttributeString("type", "object"); | ||
437 | break; | ||
438 | case ColumnType.String: | ||
439 | writer.WriteAttributeString("type", "string"); | ||
440 | break; | ||
441 | case ColumnType.Preserved: | ||
442 | writer.WriteAttributeString("type", "preserved"); | ||
443 | break; | ||
444 | } | ||
445 | |||
446 | writer.WriteAttributeString("length", this.Length.ToString(CultureInfo.InvariantCulture.NumberFormat)); | ||
447 | |||
448 | if (this.PrimaryKey) | ||
449 | { | ||
450 | writer.WriteAttributeString("primaryKey", "yes"); | ||
451 | } | ||
452 | |||
453 | if (this.Nullable) | ||
454 | { | ||
455 | writer.WriteAttributeString("nullable", "yes"); | ||
456 | } | ||
457 | |||
458 | if (this.IsLocalizable) | ||
459 | { | ||
460 | writer.WriteAttributeString("localizable", "yes"); | ||
461 | } | ||
462 | |||
463 | if (this.Added) | ||
464 | { | ||
465 | writer.WriteAttributeString("added", "yes"); | ||
466 | } | ||
467 | |||
468 | switch (this.ModularizeType) | ||
469 | { | ||
470 | case ColumnModularizeType.Column: | ||
471 | writer.WriteAttributeString("modularize", "column"); | ||
472 | break; | ||
473 | case ColumnModularizeType.CompanionFile: | ||
474 | writer.WriteAttributeString("modularize", "companionFile"); | ||
475 | break; | ||
476 | case ColumnModularizeType.Condition: | ||
477 | writer.WriteAttributeString("modularize", "condition"); | ||
478 | break; | ||
479 | case ColumnModularizeType.ControlEventArgument: | ||
480 | writer.WriteAttributeString("modularize", "controlEventArgument"); | ||
481 | break; | ||
482 | case ColumnModularizeType.ControlText: | ||
483 | writer.WriteAttributeString("modularize", "controlText"); | ||
484 | break; | ||
485 | case ColumnModularizeType.Icon: | ||
486 | writer.WriteAttributeString("modularize", "icon"); | ||
487 | break; | ||
488 | case ColumnModularizeType.None: | ||
489 | // this is the default value | ||
490 | break; | ||
491 | case ColumnModularizeType.Property: | ||
492 | writer.WriteAttributeString("modularize", "property"); | ||
493 | break; | ||
494 | case ColumnModularizeType.SemicolonDelimited: | ||
495 | writer.WriteAttributeString("modularize", "semicolonDelimited"); | ||
496 | break; | ||
497 | } | ||
498 | |||
499 | if (this.MinValue.HasValue) | ||
500 | { | ||
501 | writer.WriteAttributeString("minValue", this.MinValue.Value.ToString(CultureInfo.InvariantCulture.NumberFormat)); | ||
502 | } | ||
503 | |||
504 | if (this.MaxValue.HasValue) | ||
505 | { | ||
506 | writer.WriteAttributeString("maxValue", this.MaxValue.Value.ToString(CultureInfo.InvariantCulture.NumberFormat)); | ||
507 | } | ||
508 | |||
509 | if (!String.IsNullOrEmpty(this.KeyTable)) | ||
510 | { | ||
511 | writer.WriteAttributeString("keyTable", this.KeyTable); | ||
512 | } | ||
513 | |||
514 | if (this.KeyColumn.HasValue) | ||
515 | { | ||
516 | writer.WriteAttributeString("keyColumn", this.KeyColumn.Value.ToString(CultureInfo.InvariantCulture.NumberFormat)); | ||
517 | } | ||
518 | |||
519 | switch (this.Category) | ||
520 | { | ||
521 | case ColumnCategory.AnyPath: | ||
522 | writer.WriteAttributeString("category", "anyPath"); | ||
523 | break; | ||
524 | case ColumnCategory.Binary: | ||
525 | writer.WriteAttributeString("category", "binary"); | ||
526 | break; | ||
527 | case ColumnCategory.Cabinet: | ||
528 | writer.WriteAttributeString("category", "cabinet"); | ||
529 | break; | ||
530 | case ColumnCategory.Condition: | ||
531 | writer.WriteAttributeString("category", "condition"); | ||
532 | break; | ||
533 | case ColumnCategory.CustomSource: | ||
534 | writer.WriteAttributeString("category", "customSource"); | ||
535 | break; | ||
536 | case ColumnCategory.DefaultDir: | ||
537 | writer.WriteAttributeString("category", "defaultDir"); | ||
538 | break; | ||
539 | case ColumnCategory.DoubleInteger: | ||
540 | writer.WriteAttributeString("category", "doubleInteger"); | ||
541 | break; | ||
542 | case ColumnCategory.Filename: | ||
543 | writer.WriteAttributeString("category", "filename"); | ||
544 | break; | ||
545 | case ColumnCategory.Formatted: | ||
546 | writer.WriteAttributeString("category", "formatted"); | ||
547 | break; | ||
548 | case ColumnCategory.FormattedSDDLText: | ||
549 | writer.WriteAttributeString("category", "formattedSddl"); | ||
550 | break; | ||
551 | case ColumnCategory.Guid: | ||
552 | writer.WriteAttributeString("category", "guid"); | ||
553 | break; | ||
554 | case ColumnCategory.Identifier: | ||
555 | writer.WriteAttributeString("category", "identifier"); | ||
556 | break; | ||
557 | case ColumnCategory.Integer: | ||
558 | writer.WriteAttributeString("category", "integer"); | ||
559 | break; | ||
560 | case ColumnCategory.Language: | ||
561 | writer.WriteAttributeString("category", "language"); | ||
562 | break; | ||
563 | case ColumnCategory.LowerCase: | ||
564 | writer.WriteAttributeString("category", "lowerCase"); | ||
565 | break; | ||
566 | case ColumnCategory.Path: | ||
567 | writer.WriteAttributeString("category", "path"); | ||
568 | break; | ||
569 | case ColumnCategory.Paths: | ||
570 | writer.WriteAttributeString("category", "paths"); | ||
571 | break; | ||
572 | case ColumnCategory.Property: | ||
573 | writer.WriteAttributeString("category", "property"); | ||
574 | break; | ||
575 | case ColumnCategory.RegPath: | ||
576 | writer.WriteAttributeString("category", "regPath"); | ||
577 | break; | ||
578 | case ColumnCategory.Shortcut: | ||
579 | writer.WriteAttributeString("category", "shortcut"); | ||
580 | break; | ||
581 | case ColumnCategory.Template: | ||
582 | writer.WriteAttributeString("category", "template"); | ||
583 | break; | ||
584 | case ColumnCategory.Text: | ||
585 | writer.WriteAttributeString("category", "text"); | ||
586 | break; | ||
587 | case ColumnCategory.TimeDate: | ||
588 | writer.WriteAttributeString("category", "timeDate"); | ||
589 | break; | ||
590 | case ColumnCategory.UpperCase: | ||
591 | writer.WriteAttributeString("category", "upperCase"); | ||
592 | break; | ||
593 | case ColumnCategory.Version: | ||
594 | writer.WriteAttributeString("category", "version"); | ||
595 | break; | ||
596 | case ColumnCategory.WildCardFilename: | ||
597 | writer.WriteAttributeString("category", "wildCardFilename"); | ||
598 | break; | ||
599 | } | ||
600 | |||
601 | if (!String.IsNullOrEmpty(this.Possibilities)) | ||
602 | { | ||
603 | writer.WriteAttributeString("set", this.Possibilities); | ||
604 | } | ||
605 | |||
606 | if (!String.IsNullOrEmpty(this.Description)) | ||
607 | { | ||
608 | writer.WriteAttributeString("description", this.Description); | ||
609 | } | ||
610 | |||
611 | if (this.UseCData) | ||
612 | { | ||
613 | writer.WriteAttributeString("useCData", "yes"); | ||
614 | } | ||
615 | |||
616 | if (this.Unreal) | ||
617 | { | ||
618 | writer.WriteAttributeString("unreal", "yes"); | ||
619 | } | ||
620 | |||
621 | writer.WriteEndElement(); | ||
622 | } | ||
623 | |||
624 | /// <summary> | ||
625 | /// Compare this column definition to another column definition. | ||
626 | /// </summary> | ||
627 | /// <remarks> | ||
628 | /// Only Windows Installer traits are compared, allowing for updates to WiX-specific table definitions. | ||
629 | /// </remarks> | ||
630 | /// <param name="other">The <see cref="ColumnDefinition"/> to compare with this one.</param> | ||
631 | /// <returns>0 if the columns' core propeties are the same; otherwise, non-0.</returns> | ||
632 | public int CompareTo(ColumnDefinition other) | ||
633 | { | ||
634 | // by definition, this object is greater than null | ||
635 | if (null == other) | ||
636 | { | ||
637 | return 1; | ||
638 | } | ||
639 | |||
640 | // compare column names | ||
641 | int ret = String.Compare(this.Name, other.Name, StringComparison.Ordinal); | ||
642 | |||
643 | // compare column types | ||
644 | if (0 == ret) | ||
645 | { | ||
646 | ret = this.Type == other.Type ? 0 : -1; | ||
647 | |||
648 | // compare column lengths | ||
649 | if (0 == ret) | ||
650 | { | ||
651 | ret = this.Length == other.Length ? 0 : -1; | ||
652 | |||
653 | // compare whether both are primary keys | ||
654 | if (0 == ret) | ||
655 | { | ||
656 | ret = this.PrimaryKey == other.PrimaryKey ? 0 : -1; | ||
657 | |||
658 | // compare nullability | ||
659 | if (0 == ret) | ||
660 | { | ||
661 | ret = this.Nullable == other.Nullable ? 0 : -1; | ||
662 | } | ||
663 | } | ||
664 | } | ||
665 | } | ||
666 | |||
667 | return ret; | ||
668 | } | ||
669 | |||
670 | private static ColumnModularizeType CalculateModularizationType(ColumnModularizeType? modularizeType, ColumnCategory category) | ||
671 | { | ||
672 | if (modularizeType.HasValue) | ||
673 | { | ||
674 | return modularizeType.Value; | ||
675 | } | ||
676 | |||
677 | switch (category) | ||
678 | { | ||
679 | case ColumnCategory.Identifier: | ||
680 | case ColumnCategory.CustomSource: | ||
681 | return ColumnModularizeType.Column; | ||
682 | |||
683 | case ColumnCategory.Condition: | ||
684 | return ColumnModularizeType.Condition; | ||
685 | |||
686 | case ColumnCategory.AnyPath: | ||
687 | case ColumnCategory.Formatted: | ||
688 | case ColumnCategory.FormattedSDDLText: | ||
689 | case ColumnCategory.Path: | ||
690 | case ColumnCategory.Paths: | ||
691 | case ColumnCategory.RegPath: | ||
692 | case ColumnCategory.Template: | ||
693 | return ColumnModularizeType.Property; | ||
694 | |||
695 | case ColumnCategory.Shortcut: | ||
696 | return ColumnModularizeType.Property; | ||
697 | } | ||
698 | |||
699 | return ColumnModularizeType.None; | ||
700 | } | ||
701 | } | ||
702 | } | ||
diff --git a/src/api/wix/WixToolset.Data/WindowsInstaller/ColumnModularizeType.cs b/src/api/wix/WixToolset.Data/WindowsInstaller/ColumnModularizeType.cs new file mode 100644 index 00000000..d44f55a7 --- /dev/null +++ b/src/api/wix/WixToolset.Data/WindowsInstaller/ColumnModularizeType.cs | |||
@@ -0,0 +1,37 @@ | |||
1 | // Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. | ||
2 | |||
3 | namespace WixToolset.Data.WindowsInstaller | ||
4 | { | ||
5 | /// <summary> | ||
6 | /// Specifies if the column should be modularized. | ||
7 | /// </summary> | ||
8 | public enum ColumnModularizeType | ||
9 | { | ||
10 | /// <summary>Column should not be modularized.</summary> | ||
11 | None, | ||
12 | |||
13 | /// <summary>Column should be modularized.</summary> | ||
14 | Column, | ||
15 | |||
16 | /// <summary>When the column is an primary or foreign key to the Icon table it should be modularized special.</summary> | ||
17 | Icon, | ||
18 | |||
19 | /// <summary>When the column is a companion file it should be modularized.</summary> | ||
20 | CompanionFile, | ||
21 | |||
22 | /// <summary>Column is a condition and should be modularized.</summary> | ||
23 | Condition, | ||
24 | |||
25 | /// <summary>Special modularization type for the ControlEvent table's Argument column.</summary> | ||
26 | ControlEventArgument, | ||
27 | |||
28 | /// <summary>Special modularization type for the Control table's Text column.</summary> | ||
29 | ControlText, | ||
30 | |||
31 | /// <summary>Any Properties in the column should be modularized.</summary> | ||
32 | Property, | ||
33 | |||
34 | /// <summary>Semi-colon list of keys, all of which need to be modularized.</summary> | ||
35 | SemicolonDelimited, | ||
36 | } | ||
37 | } | ||
diff --git a/src/api/wix/WixToolset.Data/WindowsInstaller/ColumnType.cs b/src/api/wix/WixToolset.Data/WindowsInstaller/ColumnType.cs new file mode 100644 index 00000000..423125db --- /dev/null +++ b/src/api/wix/WixToolset.Data/WindowsInstaller/ColumnType.cs | |||
@@ -0,0 +1,28 @@ | |||
1 | // Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. | ||
2 | |||
3 | namespace WixToolset.Data.WindowsInstaller | ||
4 | { | ||
5 | /// <summary> | ||
6 | /// Defines MSI column types. | ||
7 | /// </summary> | ||
8 | public enum ColumnType | ||
9 | { | ||
10 | /// <summary>Unknown column type, default and invalid.</summary> | ||
11 | Unknown, | ||
12 | |||
13 | /// <summary>Column is a string.</summary> | ||
14 | String, | ||
15 | |||
16 | /// <summary>Column is a localizable string.</summary> | ||
17 | Localized, | ||
18 | |||
19 | /// <summary>Column is a number.</summary> | ||
20 | Number, | ||
21 | |||
22 | /// <summary>Column is a binary stream.</summary> | ||
23 | Object, | ||
24 | |||
25 | /// <summary>Column is a string that is preserved in transforms (like Object).</summary> | ||
26 | Preserved, | ||
27 | } | ||
28 | } | ||
diff --git a/src/api/wix/WixToolset.Data/WindowsInstaller/Field.cs b/src/api/wix/WixToolset.Data/WindowsInstaller/Field.cs new file mode 100644 index 00000000..e5edd552 --- /dev/null +++ b/src/api/wix/WixToolset.Data/WindowsInstaller/Field.cs | |||
@@ -0,0 +1,304 @@ | |||
1 | // Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. | ||
2 | |||
3 | namespace WixToolset.Data.WindowsInstaller | ||
4 | { | ||
5 | using System; | ||
6 | using System.Diagnostics; | ||
7 | using System.Globalization; | ||
8 | using System.Xml; | ||
9 | |||
10 | /// <summary> | ||
11 | /// Field containing data for a column in a row. | ||
12 | /// </summary> | ||
13 | public class Field | ||
14 | { | ||
15 | private object data; | ||
16 | |||
17 | /// <summary> | ||
18 | /// Instantiates a new Field. | ||
19 | /// </summary> | ||
20 | /// <param name="columnDefinition">Column definition for this field.</param> | ||
21 | protected Field(ColumnDefinition columnDefinition) | ||
22 | { | ||
23 | this.Column = columnDefinition; | ||
24 | } | ||
25 | |||
26 | /// <summary> | ||
27 | /// Gets or sets the column definition for this field. | ||
28 | /// </summary> | ||
29 | /// <value>Column definition.</value> | ||
30 | public ColumnDefinition Column { get; private set; } | ||
31 | |||
32 | /// <summary> | ||
33 | /// Gets or sets the data for this field. | ||
34 | /// </summary> | ||
35 | /// <value>Data in the field.</value> | ||
36 | public object Data | ||
37 | { | ||
38 | get => this.data; | ||
39 | set => this.data = this.ValidateValue(this.Column, value); | ||
40 | } | ||
41 | |||
42 | /// <summary> | ||
43 | /// Gets or sets whether this field is modified. | ||
44 | /// </summary> | ||
45 | /// <value>Whether this field is modified.</value> | ||
46 | public bool Modified { get; set; } | ||
47 | |||
48 | /// <summary> | ||
49 | /// Gets or sets the previous data. | ||
50 | /// </summary> | ||
51 | /// <value>The previous data.</value> | ||
52 | public string PreviousData { get; set; } | ||
53 | |||
54 | /// <summary> | ||
55 | /// Instantiate a new Field object of the correct type. | ||
56 | /// </summary> | ||
57 | /// <param name="columnDefinition">The column definition for the field.</param> | ||
58 | /// <returns>The new Field object.</returns> | ||
59 | public static Field Create(ColumnDefinition columnDefinition) | ||
60 | { | ||
61 | return (ColumnType.Object == columnDefinition.Type) ? new ObjectField(columnDefinition) : new Field(columnDefinition); | ||
62 | } | ||
63 | |||
64 | /// <summary> | ||
65 | /// Sets the value of a particular field in the row without validating. | ||
66 | /// </summary> | ||
67 | /// <param name="value">Value of a field in the row.</param> | ||
68 | /// <returns>True if successful, false if validation failed.</returns> | ||
69 | public bool BestEffortSet(object value) | ||
70 | { | ||
71 | bool success = true; | ||
72 | object bestEffortValue = value; | ||
73 | |||
74 | try | ||
75 | { | ||
76 | bestEffortValue = this.ValidateValue(this.Column, value); | ||
77 | } | ||
78 | catch (InvalidOperationException) | ||
79 | { | ||
80 | success = false; | ||
81 | } | ||
82 | |||
83 | this.data = bestEffortValue; | ||
84 | return success; | ||
85 | } | ||
86 | |||
87 | /// <summary> | ||
88 | /// Determine if this field is identical to another field. | ||
89 | /// </summary> | ||
90 | /// <param name="field">The other field to compare to.</param> | ||
91 | /// <returns>true if they are equal; false otherwise.</returns> | ||
92 | public bool IsIdentical(Field field) | ||
93 | { | ||
94 | return (this.Column.Name == field.Column.Name && | ||
95 | ((null != this.data && this.data.Equals(field.data)) || (null == this.data && null == field.data))); | ||
96 | } | ||
97 | |||
98 | /// <summary> | ||
99 | /// Overrides the built in object implementation to return the field's data as a string. | ||
100 | /// </summary> | ||
101 | /// <returns>Field's data as a string.</returns> | ||
102 | public override string ToString() | ||
103 | { | ||
104 | return this.AsString(); | ||
105 | } | ||
106 | |||
107 | /// <summary> | ||
108 | /// Gets the field as an integer. | ||
109 | /// </summary> | ||
110 | /// <returns>Field's data as an integer.</returns> | ||
111 | public int AsInteger() | ||
112 | { | ||
113 | return (this.data is int) ? (int)this.data : Convert.ToInt32(this.data, CultureInfo.InvariantCulture); | ||
114 | } | ||
115 | |||
116 | /// <summary> | ||
117 | /// Gets the field as an integer that could be null. | ||
118 | /// </summary> | ||
119 | /// <returns>Field's data as an integer that could be null.</returns> | ||
120 | public int? AsNullableInteger() | ||
121 | { | ||
122 | return (null == this.data) ? (int?)null : (this.data is int) ? (int)this.data : Convert.ToInt32(this.data, CultureInfo.InvariantCulture); | ||
123 | } | ||
124 | |||
125 | /// <summary> | ||
126 | /// Gets the field as a string. | ||
127 | /// </summary> | ||
128 | /// <returns>Field's data as a string.</returns> | ||
129 | public string AsString() | ||
130 | { | ||
131 | return (null == this.data) ? null : Convert.ToString(this.data, CultureInfo.InvariantCulture); | ||
132 | } | ||
133 | |||
134 | /// <summary> | ||
135 | /// Validate a value for a column. | ||
136 | /// </summary> | ||
137 | /// <param name="column">The column.</param> | ||
138 | /// <param name="value">The value to validate.</param> | ||
139 | /// <returns>Validated value.</returns> | ||
140 | internal object ValidateValue(ColumnDefinition column, object value) | ||
141 | { | ||
142 | if (null == value) | ||
143 | { | ||
144 | if (!column.Nullable) | ||
145 | { | ||
146 | throw new InvalidOperationException(String.Format(CultureInfo.InvariantCulture, "Cannot set column '{0}' with a null value because this is a required field.", column.Name)); | ||
147 | } | ||
148 | } | ||
149 | else // check numerical values against their specified minimum and maximum values. | ||
150 | { | ||
151 | if (ColumnType.Number == column.Type && !column.IsLocalizable) | ||
152 | { | ||
153 | // For now all enums in the tables can be represented by integers. This if statement would need to | ||
154 | // be enhanced if that ever changes. | ||
155 | if (value is int || value.GetType().IsEnum) | ||
156 | { | ||
157 | var intValue = (int)value; | ||
158 | |||
159 | // validate the value against the minimum allowed value | ||
160 | if (column.MinValue.HasValue && column.MinValue > intValue) | ||
161 | { | ||
162 | throw new InvalidOperationException(String.Format(CultureInfo.InvariantCulture, "Cannot set column '{0}' with value {1} because it is less than the minimum allowed value for this column, {2}.", column.Name, intValue, column.MinValue)); | ||
163 | } | ||
164 | |||
165 | // validate the value against the maximum allowed value | ||
166 | if (column.MaxValue.HasValue && column.MaxValue < intValue) | ||
167 | { | ||
168 | throw new InvalidOperationException(String.Format(CultureInfo.InvariantCulture, "Cannot set column '{0}' with value {1} because it is greater than the maximum allowed value for this column, {2}.", column.Name, intValue, column.MaxValue)); | ||
169 | } | ||
170 | |||
171 | return intValue; | ||
172 | } | ||
173 | else if (value is long longValue) | ||
174 | { | ||
175 | // validate the value against the minimum allowed value | ||
176 | if (column.MinValue.HasValue && column.MinValue > longValue) | ||
177 | { | ||
178 | throw new InvalidOperationException(String.Format(CultureInfo.InvariantCulture, "Cannot set column '{0}' with value {1} because it is less than the minimum allowed value for this column, {2}.", column.Name, longValue, column.MinValue)); | ||
179 | } | ||
180 | |||
181 | // validate the value against the maximum allowed value | ||
182 | if (column.MaxValue.HasValue && column.MaxValue < longValue) | ||
183 | { | ||
184 | throw new InvalidOperationException(String.Format(CultureInfo.InvariantCulture, "Cannot set column '{0}' with value {1} because it is greater than the maximum allowed value for this column, {2}.", column.Name, longValue, column.MaxValue)); | ||
185 | } | ||
186 | |||
187 | return longValue; | ||
188 | } | ||
189 | else | ||
190 | { | ||
191 | throw new InvalidOperationException(String.Format(CultureInfo.InvariantCulture, "Cannot set number column '{0}' with a value of type '{1}'.", column.Name, value.GetType().ToString())); | ||
192 | } | ||
193 | } | ||
194 | else | ||
195 | { | ||
196 | if (!(value is string)) | ||
197 | { | ||
198 | //throw new InvalidOperationException(String.Format(CultureInfo.InvariantCulture, "Cannot set string column '{0}' with a value of type '{1}'.", this.name, value.GetType().ToString())); | ||
199 | return value.ToString(); | ||
200 | } | ||
201 | } | ||
202 | } | ||
203 | |||
204 | return value; | ||
205 | } | ||
206 | |||
207 | /// <summary> | ||
208 | /// Parse a field from the xml. | ||
209 | /// </summary> | ||
210 | /// <param name="reader">XmlReader where the intermediate is persisted.</param> | ||
211 | internal virtual void Read(XmlReader reader) | ||
212 | { | ||
213 | Debug.Assert("field" == reader.LocalName); | ||
214 | |||
215 | bool empty = reader.IsEmptyElement; | ||
216 | |||
217 | while (reader.MoveToNextAttribute()) | ||
218 | { | ||
219 | switch (reader.LocalName) | ||
220 | { | ||
221 | case "modified": | ||
222 | this.Modified = reader.Value.Equals("yes"); | ||
223 | break; | ||
224 | case "previousData": | ||
225 | this.PreviousData = reader.Value; | ||
226 | break; | ||
227 | } | ||
228 | } | ||
229 | |||
230 | if (!empty) | ||
231 | { | ||
232 | bool done = false; | ||
233 | |||
234 | while (!done && reader.Read()) | ||
235 | { | ||
236 | switch (reader.NodeType) | ||
237 | { | ||
238 | case XmlNodeType.Element: | ||
239 | throw new XmlException(); | ||
240 | case XmlNodeType.CDATA: | ||
241 | case XmlNodeType.Text: | ||
242 | case XmlNodeType.SignificantWhitespace: | ||
243 | if (0 < reader.Value.Length) | ||
244 | { | ||
245 | if (ColumnType.Number == this.Column.Type && !this.Column.IsLocalizable) | ||
246 | { | ||
247 | // older wix files could persist data as a long value (which would overflow an int) | ||
248 | // since the Convert class always throws exceptions for overflows, read in integral | ||
249 | // values as a long to avoid the overflow, then cast it to an int (this operation can | ||
250 | // overflow without throwing an exception inside an unchecked block) | ||
251 | this.data = unchecked((int)Convert.ToInt64(reader.Value, CultureInfo.InvariantCulture)); | ||
252 | } | ||
253 | else | ||
254 | { | ||
255 | this.data = reader.Value; | ||
256 | } | ||
257 | } | ||
258 | break; | ||
259 | case XmlNodeType.EndElement: | ||
260 | done = true; | ||
261 | break; | ||
262 | } | ||
263 | } | ||
264 | |||
265 | if (!done) | ||
266 | { | ||
267 | throw new XmlException(); | ||
268 | } | ||
269 | } | ||
270 | } | ||
271 | |||
272 | /// <summary> | ||
273 | /// Persists a field in an XML format. | ||
274 | /// </summary> | ||
275 | /// <param name="writer">XmlWriter where the Field should persist itself as XML.</param> | ||
276 | internal virtual void Write(XmlWriter writer) | ||
277 | { | ||
278 | writer.WriteStartElement("field", WindowsInstallerData.XmlNamespaceUri); | ||
279 | |||
280 | if (this.Modified) | ||
281 | { | ||
282 | writer.WriteAttributeString("modified", "yes"); | ||
283 | } | ||
284 | |||
285 | if (null != this.PreviousData) | ||
286 | { | ||
287 | writer.WriteAttributeString("previousData", this.PreviousData); | ||
288 | } | ||
289 | |||
290 | // Convert the data to a string that will persist nicely (nulls as String.Empty). | ||
291 | string text = Convert.ToString(this.data, CultureInfo.InvariantCulture); | ||
292 | if (this.Column.UseCData) | ||
293 | { | ||
294 | writer.WriteCData(text); | ||
295 | } | ||
296 | else | ||
297 | { | ||
298 | writer.WriteString(text); | ||
299 | } | ||
300 | |||
301 | writer.WriteEndElement(); | ||
302 | } | ||
303 | } | ||
304 | } | ||
diff --git a/src/api/wix/WixToolset.Data/WindowsInstaller/IntermediateLevels.cs b/src/api/wix/WixToolset.Data/WindowsInstaller/IntermediateLevels.cs new file mode 100644 index 00000000..6ffdf041 --- /dev/null +++ b/src/api/wix/WixToolset.Data/WindowsInstaller/IntermediateLevels.cs | |||
@@ -0,0 +1,8 @@ | |||
1 | namespace WixToolset.Data.WindowsInstaller | ||
2 | { | ||
3 | public static class IntermediateLevels | ||
4 | { | ||
5 | // TODO: These are placeholder names until we (hopefully) come up with better ones. | ||
6 | public const string FullyBound = "msiFullyBound"; | ||
7 | } | ||
8 | } | ||
diff --git a/src/api/wix/WixToolset.Data/WindowsInstaller/ObjectField.cs b/src/api/wix/WixToolset.Data/WindowsInstaller/ObjectField.cs new file mode 100644 index 00000000..f10837c1 --- /dev/null +++ b/src/api/wix/WixToolset.Data/WindowsInstaller/ObjectField.cs | |||
@@ -0,0 +1,183 @@ | |||
1 | // Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. | ||
2 | |||
3 | namespace WixToolset.Data.WindowsInstaller | ||
4 | { | ||
5 | using System; | ||
6 | using System.Diagnostics; | ||
7 | using System.Globalization; | ||
8 | using System.Xml; | ||
9 | |||
10 | /// <summary> | ||
11 | /// Field containing data for an object column in a row. | ||
12 | /// </summary> | ||
13 | public sealed class ObjectField : Field | ||
14 | { | ||
15 | /// <summary> | ||
16 | /// Instantiates a new Field. | ||
17 | /// </summary> | ||
18 | /// <param name="columnDefinition">Column definition for this field.</param> | ||
19 | internal ObjectField(ColumnDefinition columnDefinition) : | ||
20 | base(columnDefinition) | ||
21 | { | ||
22 | } | ||
23 | |||
24 | /// <summary> | ||
25 | /// Gets or sets the index of the embedded file in a library. | ||
26 | /// </summary> | ||
27 | /// <value>The index of the embedded file.</value> | ||
28 | public int? EmbeddedFileIndex { get; set; } | ||
29 | |||
30 | /// <summary> | ||
31 | /// Gets or sets the previous index of the embedded file in the library. | ||
32 | /// </summary> | ||
33 | /// <value>The previous index of the embedded file.</value> | ||
34 | public int? PreviousEmbeddedFileIndex { get; set; } | ||
35 | |||
36 | /// <summary> | ||
37 | /// Gets or sets the path to the embedded cabinet of the previous file. | ||
38 | /// </summary> | ||
39 | /// <value>The path of the cabinet containing the previous file.</value> | ||
40 | public Uri PreviousBaseUri { get; set; } | ||
41 | |||
42 | /// <summary> | ||
43 | /// Gets the base URI of the object field. | ||
44 | /// </summary> | ||
45 | /// <value>The base URI of the object field.</value> | ||
46 | public Uri BaseUri { get; private set; } | ||
47 | |||
48 | /// <summary> | ||
49 | /// Gets or sets the unresolved data for this field. | ||
50 | /// </summary> | ||
51 | /// <value>Unresolved Data in the field.</value> | ||
52 | public string UnresolvedData { get; set; } | ||
53 | |||
54 | /// <summary> | ||
55 | /// Gets or sets the unresolved previous data. | ||
56 | /// </summary> | ||
57 | /// <value>The unresolved previous data.</value> | ||
58 | public string UnresolvedPreviousData { get; set; } | ||
59 | |||
60 | /// <summary> | ||
61 | /// Parse a field from the xml. | ||
62 | /// </summary> | ||
63 | /// <param name="reader">XmlReader where the intermediate is persisted.</param> | ||
64 | internal override void Read(XmlReader reader) | ||
65 | { | ||
66 | Debug.Assert("field" == reader.LocalName); | ||
67 | |||
68 | bool empty = reader.IsEmptyElement; | ||
69 | |||
70 | this.BaseUri = new Uri(reader.BaseURI); | ||
71 | |||
72 | while (reader.MoveToNextAttribute()) | ||
73 | { | ||
74 | switch (reader.LocalName) | ||
75 | { | ||
76 | case "cabinetFileId": | ||
77 | this.EmbeddedFileIndex = Convert.ToInt32(reader.Value); | ||
78 | break; | ||
79 | case "modified": | ||
80 | this.Modified = reader.Value.Equals("yes"); | ||
81 | break; | ||
82 | case "previousData": | ||
83 | this.PreviousData = reader.Value; | ||
84 | break; | ||
85 | case "unresolvedPreviousData": | ||
86 | this.UnresolvedPreviousData = reader.Value; | ||
87 | break; | ||
88 | case "unresolvedData": | ||
89 | this.UnresolvedData = reader.Value; | ||
90 | break; | ||
91 | case "previousCabinetFileId": | ||
92 | this.PreviousEmbeddedFileIndex = Convert.ToInt32(reader.Value); | ||
93 | break; | ||
94 | } | ||
95 | } | ||
96 | |||
97 | if (!empty) | ||
98 | { | ||
99 | bool done = false; | ||
100 | |||
101 | while (!done && reader.Read()) | ||
102 | { | ||
103 | switch (reader.NodeType) | ||
104 | { | ||
105 | case XmlNodeType.Element: | ||
106 | throw new XmlException(); | ||
107 | case XmlNodeType.CDATA: | ||
108 | case XmlNodeType.Text: | ||
109 | if (0 < reader.Value.Length) | ||
110 | { | ||
111 | this.Data = reader.Value; | ||
112 | } | ||
113 | break; | ||
114 | case XmlNodeType.EndElement: | ||
115 | done = true; | ||
116 | break; | ||
117 | } | ||
118 | } | ||
119 | |||
120 | if (!done) | ||
121 | { | ||
122 | throw new XmlException(); | ||
123 | } | ||
124 | } | ||
125 | } | ||
126 | |||
127 | /// <summary> | ||
128 | /// Persists a field in an XML format. | ||
129 | /// </summary> | ||
130 | /// <param name="writer">XmlWriter where the Field should persist itself as XML.</param> | ||
131 | internal override void Write(XmlWriter writer) | ||
132 | { | ||
133 | writer.WriteStartElement("field", WindowsInstallerData.XmlNamespaceUri); | ||
134 | |||
135 | if (this.EmbeddedFileIndex.HasValue) | ||
136 | { | ||
137 | writer.WriteStartAttribute("cabinetFileId"); | ||
138 | writer.WriteValue(this.EmbeddedFileIndex); | ||
139 | writer.WriteEndAttribute(); | ||
140 | } | ||
141 | |||
142 | if (this.Modified) | ||
143 | { | ||
144 | writer.WriteAttributeString("modified", "yes"); | ||
145 | } | ||
146 | |||
147 | if (null != this.UnresolvedPreviousData) | ||
148 | { | ||
149 | writer.WriteAttributeString("unresolvedPreviousData", this.UnresolvedPreviousData); | ||
150 | } | ||
151 | |||
152 | if (null != this.PreviousData) | ||
153 | { | ||
154 | writer.WriteAttributeString("previousData", this.PreviousData); | ||
155 | } | ||
156 | |||
157 | if (null != this.UnresolvedData) | ||
158 | { | ||
159 | writer.WriteAttributeString("unresolvedData", this.UnresolvedData); | ||
160 | } | ||
161 | |||
162 | if (this.PreviousEmbeddedFileIndex.HasValue) | ||
163 | { | ||
164 | writer.WriteStartAttribute("previousCabinetFileId"); | ||
165 | writer.WriteValue(this.PreviousEmbeddedFileIndex); | ||
166 | writer.WriteEndAttribute(); | ||
167 | } | ||
168 | |||
169 | // Convert the data to a string that will persist nicely (nulls as String.Empty). | ||
170 | string text = Convert.ToString(this.Data, CultureInfo.InvariantCulture); | ||
171 | if (this.Column.UseCData) | ||
172 | { | ||
173 | writer.WriteCData(text); | ||
174 | } | ||
175 | else | ||
176 | { | ||
177 | writer.WriteString(text); | ||
178 | } | ||
179 | |||
180 | writer.WriteEndElement(); | ||
181 | } | ||
182 | } | ||
183 | } | ||
diff --git a/src/api/wix/WixToolset.Data/WindowsInstaller/Row.cs b/src/api/wix/WixToolset.Data/WindowsInstaller/Row.cs new file mode 100644 index 00000000..f44082d3 --- /dev/null +++ b/src/api/wix/WixToolset.Data/WindowsInstaller/Row.cs | |||
@@ -0,0 +1,390 @@ | |||
1 | // Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. | ||
2 | |||
3 | namespace WixToolset.Data.WindowsInstaller | ||
4 | { | ||
5 | using System; | ||
6 | using System.Diagnostics; | ||
7 | using System.Globalization; | ||
8 | using System.Text; | ||
9 | using System.Xml; | ||
10 | |||
11 | /// <summary> | ||
12 | /// Row containing data for a table. | ||
13 | /// </summary> | ||
14 | public class Row | ||
15 | { | ||
16 | private static long rowCount; | ||
17 | |||
18 | /// <summary> | ||
19 | /// Creates a row that belongs to a table. | ||
20 | /// </summary> | ||
21 | /// <param name="sourceLineNumbers">Original source lines for this row.</param> | ||
22 | /// <param name="table">Table this row belongs to and should get its column definitions from.</param> | ||
23 | /// <remarks>The compiler should use this constructor exclusively.</remarks> | ||
24 | public Row(SourceLineNumber sourceLineNumbers, Table table) | ||
25 | : this(sourceLineNumbers, table.Definition) | ||
26 | { | ||
27 | this.Table = table; | ||
28 | } | ||
29 | |||
30 | /// <summary> | ||
31 | /// Creates a row that does not belong to a table. | ||
32 | /// </summary> | ||
33 | /// <param name="sourceLineNumbers">Original source lines for this row.</param> | ||
34 | /// <param name="tableDefinition">TableDefinition this row should get its column definitions from.</param> | ||
35 | /// <remarks>This constructor is used in cases where there isn't a clear owner of the row. The linker uses this constructor for the rows it generates.</remarks> | ||
36 | public Row(SourceLineNumber sourceLineNumbers, TableDefinition tableDefinition) | ||
37 | { | ||
38 | this.Number = rowCount++; | ||
39 | this.SourceLineNumbers = sourceLineNumbers; | ||
40 | this.Fields = new Field[tableDefinition.Columns.Length]; | ||
41 | this.TableDefinition = tableDefinition; | ||
42 | |||
43 | for (var i = 0; i < this.Fields.Length; ++i) | ||
44 | { | ||
45 | this.Fields[i] = Field.Create(this.TableDefinition.Columns[i]); | ||
46 | } | ||
47 | } | ||
48 | |||
49 | /// <summary> | ||
50 | /// Gets or sets the row transform operation. | ||
51 | /// </summary> | ||
52 | /// <value>The row transform operation.</value> | ||
53 | public RowOperation Operation { get; set; } | ||
54 | |||
55 | /// <summary> | ||
56 | /// Gets or sets wether the row is a duplicate of another row thus redundant. | ||
57 | /// </summary> | ||
58 | public bool Redundant { get; set; } | ||
59 | |||
60 | /// <summary> | ||
61 | /// Gets or sets the SectionId property on the row. | ||
62 | /// </summary> | ||
63 | /// <value>The SectionId property on the row.</value> | ||
64 | public string SectionId { get; set; } | ||
65 | |||
66 | /// <summary> | ||
67 | /// Gets the source file and line number for the row. | ||
68 | /// </summary> | ||
69 | /// <value>Source file and line number.</value> | ||
70 | public SourceLineNumber SourceLineNumbers { get; } | ||
71 | |||
72 | /// <summary> | ||
73 | /// Gets the table this row belongs to. | ||
74 | /// </summary> | ||
75 | /// <value>null if Row does not belong to a Table, or owner Table otherwise.</value> | ||
76 | public Table Table { get; } | ||
77 | |||
78 | /// <summary> | ||
79 | /// Gets the table definition for this row. | ||
80 | /// </summary> | ||
81 | /// <remarks>A Row always has a TableDefinition, even if the Row does not belong to a Table.</remarks> | ||
82 | /// <value>TableDefinition for Row.</value> | ||
83 | public TableDefinition TableDefinition { get; } | ||
84 | |||
85 | /// <summary> | ||
86 | /// Gets the fields contained by this row. | ||
87 | /// </summary> | ||
88 | /// <value>Array of field objects</value> | ||
89 | public Field[] Fields { get; } | ||
90 | |||
91 | /// <summary> | ||
92 | /// Gets the unique number for the row. | ||
93 | /// </summary> | ||
94 | /// <value>Number for row.</value> | ||
95 | public long Number { get; } | ||
96 | |||
97 | /// <summary> | ||
98 | /// Gets or sets the value of a particular field in the row. | ||
99 | /// </summary> | ||
100 | /// <param name="field">field index.</param> | ||
101 | /// <value>Value of a field in the row.</value> | ||
102 | public object this[int field] | ||
103 | { | ||
104 | get { return this.Fields[field].Data; } | ||
105 | set { this.Fields[field].Data = value; } | ||
106 | } | ||
107 | |||
108 | /// <summary> | ||
109 | /// Gets the field as an integer. | ||
110 | /// </summary> | ||
111 | /// <returns>Field's data as an integer.</returns> | ||
112 | public int FieldAsInteger(int field) | ||
113 | { | ||
114 | return this.Fields[field].AsInteger(); | ||
115 | } | ||
116 | |||
117 | /// <summary> | ||
118 | /// Gets the field as an integer that could be null. | ||
119 | /// </summary> | ||
120 | /// <returns>Field's data as an integer that could be null.</returns> | ||
121 | public int? FieldAsNullableInteger(int field) | ||
122 | { | ||
123 | return this.Fields[field].AsNullableInteger(); | ||
124 | } | ||
125 | |||
126 | /// <summary> | ||
127 | /// Gets the field as a string. | ||
128 | /// </summary> | ||
129 | /// <returns>Field's data as a string.</returns> | ||
130 | public string FieldAsString(int field) | ||
131 | { | ||
132 | return this.Fields[field].AsString(); | ||
133 | } | ||
134 | |||
135 | /// <summary> | ||
136 | /// Sets the value of a particular field in the row without validating. | ||
137 | /// </summary> | ||
138 | /// <param name="field">field index.</param> | ||
139 | /// <param name="value">Value of a field in the row.</param> | ||
140 | /// <returns>True if successful, false if validation failed.</returns> | ||
141 | public bool BestEffortSetField(int field, object value) | ||
142 | { | ||
143 | return this.Fields[field].BestEffortSet(value); | ||
144 | } | ||
145 | |||
146 | /// <summary> | ||
147 | /// Get the value used to represent the row in a keyed row collection. | ||
148 | /// </summary> | ||
149 | /// <returns>Primary key or row number if no primary key is available.</returns> | ||
150 | public string GetKey() | ||
151 | { | ||
152 | return this.GetPrimaryKey() ?? Convert.ToString(this.Number, CultureInfo.InvariantCulture); | ||
153 | } | ||
154 | |||
155 | /// <summary> | ||
156 | /// Get the primary key of this row. | ||
157 | /// </summary> | ||
158 | /// <param name="delimiter">Delimiter character for multiple column primary keys.</param> | ||
159 | /// <returns>The primary key or null if the row's table has no primary key columns.</returns> | ||
160 | public string GetPrimaryKey(char delimiter = '/') | ||
161 | { | ||
162 | return this.GetPrimaryKey(delimiter, String.Empty); | ||
163 | } | ||
164 | |||
165 | /// <summary> | ||
166 | /// Get the primary key of this row. | ||
167 | /// </summary> | ||
168 | /// <param name="delimiter">Delimiter character for multiple column primary keys.</param> | ||
169 | /// <param name="nullReplacement">String to represent null values in the primary key.</param> | ||
170 | /// <returns>The primary key or null if the row's table has no primary key columns.</returns> | ||
171 | public string GetPrimaryKey(char delimiter, string nullReplacement) | ||
172 | { | ||
173 | var foundPrimaryKey = false; | ||
174 | var primaryKey = new StringBuilder(); | ||
175 | |||
176 | foreach (var field in this.Fields) | ||
177 | { | ||
178 | if (field.Column.PrimaryKey) | ||
179 | { | ||
180 | if (foundPrimaryKey) | ||
181 | { | ||
182 | primaryKey.Append(delimiter); | ||
183 | } | ||
184 | |||
185 | primaryKey.Append((null == field.Data) ? nullReplacement : Convert.ToString(field.Data, CultureInfo.InvariantCulture)); | ||
186 | |||
187 | foundPrimaryKey = true; | ||
188 | } | ||
189 | else // primary keys must be the first columns of a row so the first non-primary key means we can stop looking. | ||
190 | { | ||
191 | break; | ||
192 | } | ||
193 | } | ||
194 | |||
195 | return foundPrimaryKey ? primaryKey.ToString() : null; | ||
196 | } | ||
197 | |||
198 | /// <summary> | ||
199 | /// Returns true if the specified field is null. | ||
200 | /// </summary> | ||
201 | /// <param name="field">Index of the field to check.</param> | ||
202 | /// <returns>true if the specified field is null, false otherwise.</returns> | ||
203 | public bool IsColumnNull(int field) => this.Fields[field].Data == null; | ||
204 | |||
205 | /// <summary> | ||
206 | /// Returns true if the specified field is null or an empty string. | ||
207 | /// </summary> | ||
208 | /// <param name="field">Index of the field to check.</param> | ||
209 | /// <returns>true if the specified field is null or an empty string, false otherwise.</returns> | ||
210 | public bool IsColumnEmpty(int field) | ||
211 | { | ||
212 | if (this.IsColumnNull(field)) | ||
213 | { | ||
214 | return true; | ||
215 | } | ||
216 | |||
217 | string dataString = this.Fields[field].Data as string; | ||
218 | if (null != dataString && 0 == dataString.Length) | ||
219 | { | ||
220 | return true; | ||
221 | } | ||
222 | |||
223 | return false; | ||
224 | } | ||
225 | |||
226 | /// <summary> | ||
227 | /// Tests if the passed in row is identical. | ||
228 | /// </summary> | ||
229 | /// <param name="row">Row to compare against.</param> | ||
230 | /// <returns>True if two rows are identical.</returns> | ||
231 | public bool IsIdentical(Row row) | ||
232 | { | ||
233 | bool identical = (this.TableDefinition.Name == row.TableDefinition.Name && this.Fields.Length == row.Fields.Length); | ||
234 | |||
235 | for (var i = 0; identical && i < this.Fields.Length; ++i) | ||
236 | { | ||
237 | if (!(this.Fields[i].IsIdentical(row.Fields[i]))) | ||
238 | { | ||
239 | identical = false; | ||
240 | } | ||
241 | } | ||
242 | |||
243 | return identical; | ||
244 | } | ||
245 | |||
246 | /// <summary> | ||
247 | /// Copies this row to the target row. | ||
248 | /// </summary> | ||
249 | /// <param name="target">Row to copy data to.</param> | ||
250 | public void CopyTo(Row target) | ||
251 | { | ||
252 | for (var i = 0; i < this.Fields.Length; i++) | ||
253 | { | ||
254 | target[i] = this[i]; | ||
255 | } | ||
256 | } | ||
257 | |||
258 | /// <summary> | ||
259 | /// Returns a string representation of the Row. | ||
260 | /// </summary> | ||
261 | /// <returns>A string representation of the Row.</returns> | ||
262 | public override string ToString() | ||
263 | { | ||
264 | return String.Join("/", (object[])this.Fields); | ||
265 | } | ||
266 | |||
267 | /// <summary> | ||
268 | /// Creates a Row from the XmlReader. | ||
269 | /// </summary> | ||
270 | /// <param name="reader">Reader to get data from.</param> | ||
271 | /// <param name="table">Table for this row.</param> | ||
272 | /// <returns>New row object.</returns> | ||
273 | internal static Row Read(XmlReader reader, Table table) | ||
274 | { | ||
275 | Debug.Assert("row" == reader.LocalName); | ||
276 | |||
277 | bool empty = reader.IsEmptyElement; | ||
278 | RowOperation operation = RowOperation.None; | ||
279 | bool redundant = false; | ||
280 | string sectionId = null; | ||
281 | SourceLineNumber sourceLineNumbers = null; | ||
282 | |||
283 | while (reader.MoveToNextAttribute()) | ||
284 | { | ||
285 | switch (reader.LocalName) | ||
286 | { | ||
287 | case "op": | ||
288 | operation = (RowOperation)Enum.Parse(typeof(RowOperation), reader.Value, true); | ||
289 | break; | ||
290 | case "redundant": | ||
291 | redundant = reader.Value.Equals("yes"); | ||
292 | break; | ||
293 | case "sectionId": | ||
294 | sectionId = reader.Value; | ||
295 | break; | ||
296 | case "sourceLineNumber": | ||
297 | sourceLineNumbers = SourceLineNumber.CreateFromEncoded(reader.Value); | ||
298 | break; | ||
299 | } | ||
300 | } | ||
301 | |||
302 | var row = table.CreateRow(sourceLineNumbers); | ||
303 | row.Operation = operation; | ||
304 | row.Redundant = redundant; | ||
305 | row.SectionId = sectionId; | ||
306 | |||
307 | // loop through all the fields in a row | ||
308 | if (!empty) | ||
309 | { | ||
310 | var done = false; | ||
311 | var field = 0; | ||
312 | |||
313 | // loop through all the fields in a row | ||
314 | while (!done && reader.Read()) | ||
315 | { | ||
316 | switch (reader.NodeType) | ||
317 | { | ||
318 | case XmlNodeType.Element: | ||
319 | switch (reader.LocalName) | ||
320 | { | ||
321 | case "field": | ||
322 | if (row.Fields.Length <= field) | ||
323 | { | ||
324 | if (!reader.IsEmptyElement) | ||
325 | { | ||
326 | throw new XmlException(); | ||
327 | } | ||
328 | } | ||
329 | else | ||
330 | { | ||
331 | row.Fields[field].Read(reader); | ||
332 | } | ||
333 | ++field; | ||
334 | break; | ||
335 | default: | ||
336 | throw new XmlException(); | ||
337 | } | ||
338 | break; | ||
339 | case XmlNodeType.EndElement: | ||
340 | done = true; | ||
341 | break; | ||
342 | } | ||
343 | } | ||
344 | |||
345 | if (!done) | ||
346 | { | ||
347 | throw new XmlException(); | ||
348 | } | ||
349 | } | ||
350 | |||
351 | return row; | ||
352 | } | ||
353 | |||
354 | /// <summary> | ||
355 | /// Persists a row in an XML format. | ||
356 | /// </summary> | ||
357 | /// <param name="writer">XmlWriter where the Row should persist itself as XML.</param> | ||
358 | internal void Write(XmlWriter writer) | ||
359 | { | ||
360 | writer.WriteStartElement("row", WindowsInstallerData.XmlNamespaceUri); | ||
361 | |||
362 | if (RowOperation.None != this.Operation) | ||
363 | { | ||
364 | writer.WriteAttributeString("op", this.Operation.ToString().ToLowerInvariant()); | ||
365 | } | ||
366 | |||
367 | if (this.Redundant) | ||
368 | { | ||
369 | writer.WriteAttributeString("redundant", "yes"); | ||
370 | } | ||
371 | |||
372 | if (null != this.SectionId) | ||
373 | { | ||
374 | writer.WriteAttributeString("sectionId", this.SectionId); | ||
375 | } | ||
376 | |||
377 | if (null != this.SourceLineNumbers) | ||
378 | { | ||
379 | writer.WriteAttributeString("sourceLineNumber", this.SourceLineNumbers.GetEncoded()); | ||
380 | } | ||
381 | |||
382 | for (int i = 0; i < this.Fields.Length; ++i) | ||
383 | { | ||
384 | this.Fields[i].Write(writer); | ||
385 | } | ||
386 | |||
387 | writer.WriteEndElement(); | ||
388 | } | ||
389 | } | ||
390 | } | ||
diff --git a/src/api/wix/WixToolset.Data/WindowsInstaller/RowOperation.cs b/src/api/wix/WixToolset.Data/WindowsInstaller/RowOperation.cs new file mode 100644 index 00000000..22908d2b --- /dev/null +++ b/src/api/wix/WixToolset.Data/WindowsInstaller/RowOperation.cs | |||
@@ -0,0 +1,30 @@ | |||
1 | // Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. | ||
2 | |||
3 | namespace WixToolset.Data.WindowsInstaller | ||
4 | { | ||
5 | /// <summary> | ||
6 | /// The row transform operations. | ||
7 | /// </summary> | ||
8 | public enum RowOperation | ||
9 | { | ||
10 | /// <summary> | ||
11 | /// No operation. | ||
12 | /// </summary> | ||
13 | None, | ||
14 | |||
15 | /// <summary> | ||
16 | /// Added row. | ||
17 | /// </summary> | ||
18 | Add, | ||
19 | |||
20 | /// <summary> | ||
21 | /// Deleted row. | ||
22 | /// </summary> | ||
23 | Delete, | ||
24 | |||
25 | /// <summary> | ||
26 | /// Modified row. | ||
27 | /// </summary> | ||
28 | Modify | ||
29 | } | ||
30 | } | ||
diff --git a/src/api/wix/WixToolset.Data/WindowsInstaller/Rows/BBControlRow.cs b/src/api/wix/WixToolset.Data/WindowsInstaller/Rows/BBControlRow.cs new file mode 100644 index 00000000..20482560 --- /dev/null +++ b/src/api/wix/WixToolset.Data/WindowsInstaller/Rows/BBControlRow.cs | |||
@@ -0,0 +1,118 @@ | |||
1 | // Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. | ||
2 | |||
3 | namespace WixToolset.Data.WindowsInstaller.Rows | ||
4 | { | ||
5 | using System.Diagnostics.CodeAnalysis; | ||
6 | |||
7 | /// <summary> | ||
8 | /// Specialization of a row for the Control table. | ||
9 | /// </summary> | ||
10 | public sealed class BBControlRow : Row | ||
11 | { | ||
12 | /// <summary> | ||
13 | /// Creates a Control row that belongs to a table. | ||
14 | /// </summary> | ||
15 | /// <param name="sourceLineNumbers">Original source lines for this row.</param> | ||
16 | /// <param name="table">Table this Control row belongs to and should get its column definitions from.</param> | ||
17 | public BBControlRow(SourceLineNumber sourceLineNumbers, Table table) : | ||
18 | base(sourceLineNumbers, table) | ||
19 | { | ||
20 | } | ||
21 | |||
22 | public BBControlRow(SourceLineNumber sourceLineNumbers, TableDefinition tableDefinition) : | ||
23 | base(sourceLineNumbers, tableDefinition) | ||
24 | { | ||
25 | } | ||
26 | |||
27 | /// <summary> | ||
28 | /// Gets or sets the dialog of the Control row. | ||
29 | /// </summary> | ||
30 | /// <value>Primary key of the Control row.</value> | ||
31 | public string Billboard | ||
32 | { | ||
33 | get { return (string)this.Fields[0].Data; } | ||
34 | set { this.Fields[0].Data = value; } | ||
35 | } | ||
36 | |||
37 | /// <summary> | ||
38 | /// Gets or sets the identifier for this Control row. | ||
39 | /// </summary> | ||
40 | /// <value>Identifier for this Control row.</value> | ||
41 | public string BBControl | ||
42 | { | ||
43 | get { return (string)this.Fields[1].Data; } | ||
44 | set { this.Fields[1].Data = value; } | ||
45 | } | ||
46 | |||
47 | /// <summary> | ||
48 | /// Gets or sets the type of the BBControl. | ||
49 | /// </summary> | ||
50 | /// <value>Name of the BBControl.</value> | ||
51 | [SuppressMessage("Microsoft.Naming", "CA1721:PropertyNamesShouldNotMatchGetMethods")] | ||
52 | public string Type | ||
53 | { | ||
54 | get { return this.Fields[2].AsString(); } | ||
55 | set { this.Fields[2].Data = value; } | ||
56 | } | ||
57 | |||
58 | /// <summary> | ||
59 | /// Gets or sets the X location of the BBControl. | ||
60 | /// </summary> | ||
61 | /// <value>X location of the BBControl.</value> | ||
62 | public string X | ||
63 | { | ||
64 | get { return this.Fields[3].AsString(); } | ||
65 | set { this.Fields[3].Data = value; } | ||
66 | } | ||
67 | |||
68 | /// <summary> | ||
69 | /// Gets or sets the Y location of the BBControl. | ||
70 | /// </summary> | ||
71 | /// <value>Y location of the BBControl.</value> | ||
72 | public string Y | ||
73 | { | ||
74 | get { return this.Fields[4].AsString(); } | ||
75 | set { this.Fields[4].Data = value; } | ||
76 | } | ||
77 | |||
78 | /// <summary> | ||
79 | /// Gets or sets the width of the BBControl. | ||
80 | /// </summary> | ||
81 | /// <value>Width of the BBControl.</value> | ||
82 | public string Width | ||
83 | { | ||
84 | get { return this.Fields[5].AsString(); } | ||
85 | set { this.Fields[5].Data = value; } | ||
86 | } | ||
87 | |||
88 | /// <summary> | ||
89 | /// Gets or sets the height of the BBControl. | ||
90 | /// </summary> | ||
91 | /// <value>Height of the BBControl.</value> | ||
92 | public string Height | ||
93 | { | ||
94 | get { return this.Fields[6].AsString(); } | ||
95 | set { this.Fields[6].Data = value; } | ||
96 | } | ||
97 | |||
98 | /// <summary> | ||
99 | /// Gets or sets the attributes for the BBControl. | ||
100 | /// </summary> | ||
101 | /// <value>Attributes for the BBControl.</value> | ||
102 | public int Attributes | ||
103 | { | ||
104 | get { return (int)this.Fields[7].Data; } | ||
105 | set { this.Fields[7].Data = value; } | ||
106 | } | ||
107 | |||
108 | /// <summary> | ||
109 | /// Gets or sets the text of the BBControl. | ||
110 | /// </summary> | ||
111 | /// <value>Text of the BBControl.</value> | ||
112 | public string Text | ||
113 | { | ||
114 | get { return (string)this.Fields[8].Data; } | ||
115 | set { this.Fields[8].Data = value; } | ||
116 | } | ||
117 | } | ||
118 | } | ||
diff --git a/src/api/wix/WixToolset.Data/WindowsInstaller/Rows/ComponentRow.cs b/src/api/wix/WixToolset.Data/WindowsInstaller/Rows/ComponentRow.cs new file mode 100644 index 00000000..b7836241 --- /dev/null +++ b/src/api/wix/WixToolset.Data/WindowsInstaller/Rows/ComponentRow.cs | |||
@@ -0,0 +1,247 @@ | |||
1 | // Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. | ||
2 | |||
3 | namespace WixToolset.Data.WindowsInstaller.Rows | ||
4 | { | ||
5 | /// <summary> | ||
6 | /// Specialization of a row for the Component table. | ||
7 | /// </summary> | ||
8 | public sealed class ComponentRow : Row | ||
9 | { | ||
10 | private string sourceFile; | ||
11 | |||
12 | /// <summary> | ||
13 | /// Creates a Control row that belongs to a table. | ||
14 | /// </summary> | ||
15 | /// <param name="sourceLineNumbers">Original source lines for this row.</param> | ||
16 | /// <param name="table">Table this Component row belongs to and should get its column definitions from.</param> | ||
17 | public ComponentRow(SourceLineNumber sourceLineNumbers, Table table) : | ||
18 | base(sourceLineNumbers, table) | ||
19 | { | ||
20 | } | ||
21 | |||
22 | public ComponentRow(SourceLineNumber sourceLineNumbers, TableDefinition tableDefinition) : | ||
23 | base(sourceLineNumbers, tableDefinition) | ||
24 | { | ||
25 | } | ||
26 | |||
27 | /// <summary> | ||
28 | /// Gets or sets the identifier for this Component row. | ||
29 | /// </summary> | ||
30 | /// <value>Identifier for this Component row.</value> | ||
31 | public string Component | ||
32 | { | ||
33 | get { return (string)this.Fields[0].Data; } | ||
34 | set { this.Fields[0].Data = value; } | ||
35 | } | ||
36 | |||
37 | /// <summary> | ||
38 | /// Gets or sets the ComponentId for this Component row. | ||
39 | /// </summary> | ||
40 | /// <value>guid for this Component row.</value> | ||
41 | public string Guid | ||
42 | { | ||
43 | get { return (string)this.Fields[1].Data; } | ||
44 | set { this.Fields[1].Data = value; } | ||
45 | } | ||
46 | |||
47 | /// <summary> | ||
48 | /// Gets or sets the Directory_ of the Component. | ||
49 | /// </summary> | ||
50 | /// <value>Directory of the Component.</value> | ||
51 | public string Directory | ||
52 | { | ||
53 | get { return (string)this.Fields[2].Data; } | ||
54 | set { this.Fields[2].Data = value; } | ||
55 | } | ||
56 | |||
57 | /// <summary> | ||
58 | /// Gets or sets the local only attribute of the Component. | ||
59 | /// </summary> | ||
60 | /// <value>Local only attribute of the component.</value> | ||
61 | public bool IsLocalOnly | ||
62 | { | ||
63 | get { return WindowsInstallerConstants.MsidbComponentAttributesLocalOnly == ((int)this.Fields[3].Data & WindowsInstallerConstants.MsidbComponentAttributesLocalOnly); } | ||
64 | set | ||
65 | { | ||
66 | if (value) | ||
67 | { | ||
68 | this.Fields[3].Data = (int)this.Fields[3].Data | WindowsInstallerConstants.MsidbComponentAttributesLocalOnly; | ||
69 | } | ||
70 | else | ||
71 | { | ||
72 | this.Fields[3].Data = (int)this.Fields[3].Data & ~WindowsInstallerConstants.MsidbComponentAttributesLocalOnly; | ||
73 | } | ||
74 | } | ||
75 | } | ||
76 | |||
77 | /// <summary> | ||
78 | /// Gets or sets the source only attribute of the Component. | ||
79 | /// </summary> | ||
80 | /// <value>Source only attribute of the component.</value> | ||
81 | public bool IsSourceOnly | ||
82 | { | ||
83 | get { return WindowsInstallerConstants.MsidbComponentAttributesSourceOnly == ((int)this.Fields[3].Data & WindowsInstallerConstants.MsidbComponentAttributesSourceOnly); } | ||
84 | set | ||
85 | { | ||
86 | if (value) | ||
87 | { | ||
88 | this.Fields[3].Data = (int)this.Fields[3].Data | WindowsInstallerConstants.MsidbComponentAttributesSourceOnly; | ||
89 | } | ||
90 | else | ||
91 | { | ||
92 | this.Fields[3].Data = (int)this.Fields[3].Data & ~WindowsInstallerConstants.MsidbComponentAttributesSourceOnly; | ||
93 | } | ||
94 | } | ||
95 | } | ||
96 | |||
97 | /// <summary> | ||
98 | /// Gets or sets the optional attribute of the Component. | ||
99 | /// </summary> | ||
100 | /// <value>Optional attribute of the component.</value> | ||
101 | public bool IsOptional | ||
102 | { | ||
103 | get { return WindowsInstallerConstants.MsidbComponentAttributesOptional == ((int)this.Fields[3].Data & WindowsInstallerConstants.MsidbComponentAttributesOptional); } | ||
104 | set | ||
105 | { | ||
106 | if (value) | ||
107 | { | ||
108 | this.Fields[3].Data = (int)this.Fields[3].Data | WindowsInstallerConstants.MsidbComponentAttributesOptional; | ||
109 | } | ||
110 | else | ||
111 | { | ||
112 | this.Fields[3].Data = (int)this.Fields[3].Data & ~WindowsInstallerConstants.MsidbComponentAttributesOptional; | ||
113 | } | ||
114 | } | ||
115 | } | ||
116 | |||
117 | /// <summary> | ||
118 | /// Gets or sets the registry key path attribute of the Component. | ||
119 | /// </summary> | ||
120 | /// <value>Registry key path attribute of the component.</value> | ||
121 | public bool IsRegistryKeyPath | ||
122 | { | ||
123 | get { return WindowsInstallerConstants.MsidbComponentAttributesRegistryKeyPath == ((int)this.Fields[3].Data & WindowsInstallerConstants.MsidbComponentAttributesRegistryKeyPath); } | ||
124 | set | ||
125 | { | ||
126 | if (value) | ||
127 | { | ||
128 | this.Fields[3].Data = (int)this.Fields[3].Data | WindowsInstallerConstants.MsidbComponentAttributesRegistryKeyPath; | ||
129 | } | ||
130 | else | ||
131 | { | ||
132 | this.Fields[3].Data = (int)this.Fields[3].Data & ~WindowsInstallerConstants.MsidbComponentAttributesRegistryKeyPath; | ||
133 | } | ||
134 | } | ||
135 | } | ||
136 | |||
137 | /// <summary> | ||
138 | /// Gets or sets the shared dll ref count attribute of the Component. | ||
139 | /// </summary> | ||
140 | /// <value>Shared dll ref countattribute of the component.</value> | ||
141 | public bool IsSharedDll | ||
142 | { | ||
143 | get { return WindowsInstallerConstants.MsidbComponentAttributesSharedDllRefCount == ((int)this.Fields[3].Data & WindowsInstallerConstants.MsidbComponentAttributesSharedDllRefCount); } | ||
144 | set | ||
145 | { | ||
146 | if (value) | ||
147 | { | ||
148 | this.Fields[3].Data = (int)this.Fields[3].Data | WindowsInstallerConstants.MsidbComponentAttributesSharedDllRefCount; | ||
149 | } | ||
150 | else | ||
151 | { | ||
152 | this.Fields[3].Data = (int)this.Fields[3].Data & ~WindowsInstallerConstants.MsidbComponentAttributesSharedDllRefCount; | ||
153 | } | ||
154 | } | ||
155 | } | ||
156 | |||
157 | /// <summary> | ||
158 | /// Gets or sets the permanent attribute of the Component. | ||
159 | /// </summary> | ||
160 | /// <value>Permanent attribute of the component.</value> | ||
161 | public bool IsPermanent | ||
162 | { | ||
163 | get { return WindowsInstallerConstants.MsidbComponentAttributesPermanent == ((int)this.Fields[3].Data & WindowsInstallerConstants.MsidbComponentAttributesPermanent); } | ||
164 | set | ||
165 | { | ||
166 | if (value) | ||
167 | { | ||
168 | this.Fields[3].Data = (int)this.Fields[3].Data | WindowsInstallerConstants.MsidbComponentAttributesPermanent; | ||
169 | } | ||
170 | else | ||
171 | { | ||
172 | this.Fields[3].Data = (int)this.Fields[3].Data & ~WindowsInstallerConstants.MsidbComponentAttributesPermanent; | ||
173 | } | ||
174 | } | ||
175 | } | ||
176 | |||
177 | /// <summary> | ||
178 | /// Gets or sets the ODBC data source key path attribute of the Component. | ||
179 | /// </summary> | ||
180 | /// <value>ODBC data source key path attribute of the component.</value> | ||
181 | public bool IsOdbcDataSourceKeyPath | ||
182 | { | ||
183 | get { return WindowsInstallerConstants.MsidbComponentAttributesODBCDataSource == ((int)this.Fields[3].Data & WindowsInstallerConstants.MsidbComponentAttributesODBCDataSource); } | ||
184 | set | ||
185 | { | ||
186 | if (value) | ||
187 | { | ||
188 | this.Fields[3].Data = (int)this.Fields[3].Data | WindowsInstallerConstants.MsidbComponentAttributesODBCDataSource; | ||
189 | } | ||
190 | else | ||
191 | { | ||
192 | this.Fields[3].Data = (int)this.Fields[3].Data & ~WindowsInstallerConstants.MsidbComponentAttributesODBCDataSource; | ||
193 | } | ||
194 | } | ||
195 | } | ||
196 | |||
197 | /// <summary> | ||
198 | /// Gets or sets the 64 bit attribute of the Component. | ||
199 | /// </summary> | ||
200 | /// <value>64-bitness of the component.</value> | ||
201 | public bool Is64Bit | ||
202 | { | ||
203 | get { return WindowsInstallerConstants.MsidbComponentAttributes64bit == ((int)this.Fields[3].Data & WindowsInstallerConstants.MsidbComponentAttributes64bit); } | ||
204 | set | ||
205 | { | ||
206 | if (value) | ||
207 | { | ||
208 | this.Fields[3].Data = (int)this.Fields[3].Data | WindowsInstallerConstants.MsidbComponentAttributes64bit; | ||
209 | } | ||
210 | else | ||
211 | { | ||
212 | this.Fields[3].Data = (int)this.Fields[3].Data & ~WindowsInstallerConstants.MsidbComponentAttributes64bit; | ||
213 | } | ||
214 | } | ||
215 | } | ||
216 | |||
217 | /// <summary> | ||
218 | /// Gets or sets the condition of the Component. | ||
219 | /// </summary> | ||
220 | /// <value>Condition of the Component.</value> | ||
221 | public string Condition | ||
222 | { | ||
223 | get { return (string)this.Fields[4].Data; } | ||
224 | set { this.Fields[4].Data = value; } | ||
225 | } | ||
226 | |||
227 | /// <summary> | ||
228 | /// Gets or sets the key path of the Component. | ||
229 | /// </summary> | ||
230 | /// <value>Key path of the Component.</value> | ||
231 | public string KeyPath | ||
232 | { | ||
233 | get { return (string)this.Fields[5].Data; } | ||
234 | set { this.Fields[5].Data = value; } | ||
235 | } | ||
236 | |||
237 | /// <summary> | ||
238 | /// Gets or sets the source location to the file to fill in the Text of the control. | ||
239 | /// </summary> | ||
240 | /// <value>Source location to the file to fill in the Text of the control.</value> | ||
241 | public string SourceFile | ||
242 | { | ||
243 | get { return this.sourceFile; } | ||
244 | set { this.sourceFile = value; } | ||
245 | } | ||
246 | } | ||
247 | } | ||
diff --git a/src/api/wix/WixToolset.Data/WindowsInstaller/Rows/ControlRow.cs b/src/api/wix/WixToolset.Data/WindowsInstaller/Rows/ControlRow.cs new file mode 100644 index 00000000..e0ae2de0 --- /dev/null +++ b/src/api/wix/WixToolset.Data/WindowsInstaller/Rows/ControlRow.cs | |||
@@ -0,0 +1,148 @@ | |||
1 | // Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. | ||
2 | |||
3 | namespace WixToolset.Data.WindowsInstaller.Rows | ||
4 | { | ||
5 | using System.Diagnostics.CodeAnalysis; | ||
6 | |||
7 | /// <summary> | ||
8 | /// Specialization of a row for the Control table. | ||
9 | /// </summary> | ||
10 | public sealed class ControlRow : Row | ||
11 | { | ||
12 | /// <summary> | ||
13 | /// Creates a Control row that belongs to a table. | ||
14 | /// </summary> | ||
15 | /// <param name="sourceLineNumbers">Original source lines for this row.</param> | ||
16 | /// <param name="table">Table this Control row belongs to and should get its column definitions from.</param> | ||
17 | public ControlRow(SourceLineNumber sourceLineNumbers, Table table) : | ||
18 | base(sourceLineNumbers, table) | ||
19 | { | ||
20 | } | ||
21 | |||
22 | public ControlRow(SourceLineNumber sourceLineNumbers, TableDefinition tableDefinition) : | ||
23 | base(sourceLineNumbers, tableDefinition) | ||
24 | { | ||
25 | } | ||
26 | |||
27 | /// <summary> | ||
28 | /// Gets or sets the dialog of the Control row. | ||
29 | /// </summary> | ||
30 | /// <value>Primary key of the Control row.</value> | ||
31 | public string Dialog | ||
32 | { | ||
33 | get { return (string)this.Fields[0].Data; } | ||
34 | set { this.Fields[0].Data = value; } | ||
35 | } | ||
36 | |||
37 | /// <summary> | ||
38 | /// Gets or sets the identifier for this Control row. | ||
39 | /// </summary> | ||
40 | /// <value>Identifier for this Control row.</value> | ||
41 | public string Control | ||
42 | { | ||
43 | get { return (string)this.Fields[1].Data; } | ||
44 | set { this.Fields[1].Data = value; } | ||
45 | } | ||
46 | |||
47 | /// <summary> | ||
48 | /// Gets or sets the type of the control. | ||
49 | /// </summary> | ||
50 | /// <value>Name of the control.</value> | ||
51 | [SuppressMessage("Microsoft.Naming", "CA1721:PropertyNamesShouldNotMatchGetMethods")] | ||
52 | public string Type | ||
53 | { | ||
54 | get { return (string)this.Fields[2].Data; } | ||
55 | set { this.Fields[2].Data = value; } | ||
56 | } | ||
57 | |||
58 | /// <summary> | ||
59 | /// Gets or sets the X location of the control. | ||
60 | /// </summary> | ||
61 | /// <value>X location of the control.</value> | ||
62 | public string X | ||
63 | { | ||
64 | get { return this.Fields[3].AsString(); } | ||
65 | set { this.Fields[3].Data = value; } | ||
66 | } | ||
67 | |||
68 | /// <summary> | ||
69 | /// Gets or sets the Y location of the control. | ||
70 | /// </summary> | ||
71 | /// <value>Y location of the control.</value> | ||
72 | public string Y | ||
73 | { | ||
74 | get { return this.Fields[4].AsString(); } | ||
75 | set { this.Fields[4].Data = value; } | ||
76 | } | ||
77 | |||
78 | /// <summary> | ||
79 | /// Gets or sets the width of the control. | ||
80 | /// </summary> | ||
81 | /// <value>Width of the control.</value> | ||
82 | public string Width | ||
83 | { | ||
84 | get { return this.Fields[5].AsString(); } | ||
85 | set { this.Fields[5].Data = value; } | ||
86 | } | ||
87 | |||
88 | /// <summary> | ||
89 | /// Gets or sets the height of the control. | ||
90 | /// </summary> | ||
91 | /// <value>Height of the control.</value> | ||
92 | public string Height | ||
93 | { | ||
94 | get { return this.Fields[6].AsString(); } | ||
95 | set { this.Fields[6].Data = value; } | ||
96 | } | ||
97 | |||
98 | /// <summary> | ||
99 | /// Gets or sets the attributes for the control. | ||
100 | /// </summary> | ||
101 | /// <value>Attributes for the control.</value> | ||
102 | public int Attributes | ||
103 | { | ||
104 | get { return (int)this.Fields[7].Data; } | ||
105 | set { this.Fields[7].Data = value; } | ||
106 | } | ||
107 | |||
108 | /// <summary> | ||
109 | /// Gets or sets the Property associated with the control. | ||
110 | /// </summary> | ||
111 | /// <value>Property associated with the control.</value> | ||
112 | public string Property | ||
113 | { | ||
114 | get { return (string)this.Fields[8].Data; } | ||
115 | set { this.Fields[8].Data = value; } | ||
116 | } | ||
117 | |||
118 | /// <summary> | ||
119 | /// Gets or sets the text of the control. | ||
120 | /// </summary> | ||
121 | /// <value>Text of the control.</value> | ||
122 | public string Text | ||
123 | { | ||
124 | get { return (string)this.Fields[9].Data; } | ||
125 | set { this.Fields[9].Data = value; } | ||
126 | } | ||
127 | |||
128 | /// <summary> | ||
129 | /// Gets or sets the next control. | ||
130 | /// </summary> | ||
131 | /// <value>Next control.</value> | ||
132 | public string Next | ||
133 | { | ||
134 | get { return (string)this.Fields[10].Data; } | ||
135 | set { this.Fields[10].Data = value; } | ||
136 | } | ||
137 | |||
138 | /// <summary> | ||
139 | /// Gets or sets the help for the control. | ||
140 | /// </summary> | ||
141 | /// <value>Help for the control.</value> | ||
142 | public string Help | ||
143 | { | ||
144 | get { return (string)this.Fields[11].Data; } | ||
145 | set { this.Fields[11].Data = value; } | ||
146 | } | ||
147 | } | ||
148 | } | ||
diff --git a/src/api/wix/WixToolset.Data/WindowsInstaller/Rows/FileRow.cs b/src/api/wix/WixToolset.Data/WindowsInstaller/Rows/FileRow.cs new file mode 100644 index 00000000..1cf8cf12 --- /dev/null +++ b/src/api/wix/WixToolset.Data/WindowsInstaller/Rows/FileRow.cs | |||
@@ -0,0 +1,214 @@ | |||
1 | // Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. | ||
2 | |||
3 | namespace WixToolset.Data.WindowsInstaller.Rows | ||
4 | { | ||
5 | using System.Diagnostics; | ||
6 | |||
7 | /// <summary> | ||
8 | /// Specialization of a row for the file table. | ||
9 | /// </summary> | ||
10 | public sealed class FileRow : Row | ||
11 | { | ||
12 | /// <summary> | ||
13 | /// Creates a File row that belongs to a table. | ||
14 | /// </summary> | ||
15 | /// <param name="sourceLineNumbers">Original source lines for this row.</param> | ||
16 | /// <param name="table">Table this File row belongs to and should get its column definitions from.</param> | ||
17 | public FileRow(SourceLineNumber sourceLineNumbers, Table table) | ||
18 | : base(sourceLineNumbers, table) | ||
19 | { | ||
20 | } | ||
21 | |||
22 | /// <summary> | ||
23 | /// Creates a File row that does not belong to a table. | ||
24 | /// </summary> | ||
25 | /// <param name="sourceLineNumbers">Original source lines for this row.</param> | ||
26 | /// <param name="tableDefinition">TableDefinition this Media row belongs to and should get its column definitions from.</param> | ||
27 | public FileRow(SourceLineNumber sourceLineNumbers, TableDefinition tableDefinition) | ||
28 | : base(sourceLineNumbers, tableDefinition) | ||
29 | { | ||
30 | } | ||
31 | |||
32 | /// <summary> | ||
33 | /// Gets or sets the primary key of the file row. | ||
34 | /// </summary> | ||
35 | /// <value>Primary key of the file row.</value> | ||
36 | public string File | ||
37 | { | ||
38 | get => this.FieldAsString(0); | ||
39 | set => this.Fields[0].Data = value; | ||
40 | } | ||
41 | |||
42 | /// <summary> | ||
43 | /// Gets or sets the component this file row belongs to. | ||
44 | /// </summary> | ||
45 | /// <value>Component this file row belongs to.</value> | ||
46 | public string Component | ||
47 | { | ||
48 | get => this.FieldAsString(1); | ||
49 | set => this.Fields[1].Data = value; | ||
50 | } | ||
51 | |||
52 | /// <summary> | ||
53 | /// Gets or sets the name of the file. | ||
54 | /// </summary> | ||
55 | /// <value>Name of the file.</value> | ||
56 | public string FileName | ||
57 | { | ||
58 | get => this.FieldAsString(2); | ||
59 | set => this.Fields[2].Data = value; | ||
60 | } | ||
61 | |||
62 | /// <summary> | ||
63 | /// Gets or sets the real filesystem name of the file (without a pipe). This is typically the long name of the file. | ||
64 | /// However, if no long name is available, falls back to the short name. | ||
65 | /// </summary> | ||
66 | /// <value>Long Name of the file - or if no long name is available, falls back to the short name.</value> | ||
67 | public string LongFileName | ||
68 | { | ||
69 | get | ||
70 | { | ||
71 | var fileName = this.FileName; | ||
72 | var index = fileName.IndexOf('|'); | ||
73 | |||
74 | // If it doesn't contain a pipe, just return the whole string | ||
75 | // otherwise, extract the part of the string after the pipe. | ||
76 | return (-1 == index) ? fileName : fileName.Substring(index + 1); | ||
77 | } | ||
78 | } | ||
79 | |||
80 | /// <summary> | ||
81 | /// Gets or sets the size of the file. | ||
82 | /// </summary> | ||
83 | /// <value>Size of the file.</value> | ||
84 | public int FileSize | ||
85 | { | ||
86 | get => this.FieldAsInteger(3); | ||
87 | set => this.Fields[3].Data = value; | ||
88 | } | ||
89 | |||
90 | /// <summary> | ||
91 | /// Gets or sets the version of the file. | ||
92 | /// </summary> | ||
93 | /// <value>Version of the file.</value> | ||
94 | public string Version | ||
95 | { | ||
96 | get => this.FieldAsString(4); | ||
97 | set => this.Fields[4].Data = value; | ||
98 | } | ||
99 | |||
100 | /// <summary> | ||
101 | /// Gets or sets the LCID of the file. | ||
102 | /// </summary> | ||
103 | /// <value>LCID of the file.</value> | ||
104 | public string Language | ||
105 | { | ||
106 | get => this.FieldAsString(5); | ||
107 | set => this.Fields[5].Data = value; | ||
108 | } | ||
109 | |||
110 | /// <summary> | ||
111 | /// Gets or sets the attributes on a file. | ||
112 | /// </summary> | ||
113 | /// <value>Attributes on a file.</value> | ||
114 | public int Attributes | ||
115 | { | ||
116 | get => this.FieldAsInteger(6); | ||
117 | set => this.Fields[6].Data = value; | ||
118 | } | ||
119 | |||
120 | /// <summary> | ||
121 | /// Gets or sets whether this file should be compressed. | ||
122 | /// </summary> | ||
123 | /// <value>Whether this file should be compressed.</value> | ||
124 | public YesNoType Compressed | ||
125 | { | ||
126 | get | ||
127 | { | ||
128 | var compressedFlag = (0 < (this.Attributes & WindowsInstallerConstants.MsidbFileAttributesCompressed)); | ||
129 | var noncompressedFlag = (0 < (this.Attributes & WindowsInstallerConstants.MsidbFileAttributesNoncompressed)); | ||
130 | |||
131 | if (compressedFlag && noncompressedFlag) | ||
132 | { | ||
133 | throw new WixException(ErrorMessages.IllegalFileCompressionAttributes(this.SourceLineNumbers)); | ||
134 | } | ||
135 | else if (compressedFlag) | ||
136 | { | ||
137 | return YesNoType.Yes; | ||
138 | } | ||
139 | else if (noncompressedFlag) | ||
140 | { | ||
141 | return YesNoType.No; | ||
142 | } | ||
143 | else | ||
144 | { | ||
145 | return YesNoType.NotSet; | ||
146 | } | ||
147 | } | ||
148 | |||
149 | set | ||
150 | { | ||
151 | if (YesNoType.Yes == value) | ||
152 | { | ||
153 | // these are mutually exclusive | ||
154 | this.Attributes |= WindowsInstallerConstants.MsidbFileAttributesCompressed; | ||
155 | this.Attributes &= ~WindowsInstallerConstants.MsidbFileAttributesNoncompressed; | ||
156 | } | ||
157 | else if (YesNoType.No == value) | ||
158 | { | ||
159 | // these are mutually exclusive | ||
160 | this.Attributes |= WindowsInstallerConstants.MsidbFileAttributesNoncompressed; | ||
161 | this.Attributes &= ~WindowsInstallerConstants.MsidbFileAttributesCompressed; | ||
162 | } | ||
163 | else // not specified | ||
164 | { | ||
165 | Debug.Assert(YesNoType.NotSet == value); | ||
166 | |||
167 | // clear any compression bits | ||
168 | this.Attributes &= ~WindowsInstallerConstants.MsidbFileAttributesCompressed; | ||
169 | this.Attributes &= ~WindowsInstallerConstants.MsidbFileAttributesNoncompressed; | ||
170 | } | ||
171 | } | ||
172 | } | ||
173 | |||
174 | /// <summary> | ||
175 | /// Gets or sets the sequence of the file row. | ||
176 | /// </summary> | ||
177 | /// <value>Sequence of the file row.</value> | ||
178 | public int Sequence | ||
179 | { | ||
180 | get => this.FieldAsInteger(7); | ||
181 | set => this.Fields[7].Data = value; | ||
182 | } | ||
183 | |||
184 | /// <summary> | ||
185 | /// Gets or sets the disk id for this file. | ||
186 | /// </summary> | ||
187 | /// <value>Disk id for the file.</value> | ||
188 | public int DiskId | ||
189 | { | ||
190 | get => this.FieldAsInteger(8); | ||
191 | set => this.Fields[8].Data = value; | ||
192 | } | ||
193 | |||
194 | /// <summary> | ||
195 | /// Gets or sets the source location to the file. | ||
196 | /// </summary> | ||
197 | /// <value>Source location to the file.</value> | ||
198 | public string Source | ||
199 | { | ||
200 | get => this.FieldAsString(9); | ||
201 | set => this.Fields[9].Data = value; | ||
202 | } | ||
203 | |||
204 | /// <summary> | ||
205 | /// Gets or sets the source location to the previous file. | ||
206 | /// </summary> | ||
207 | /// <value>Source location to the previous file.</value> | ||
208 | public string PreviousSource | ||
209 | { | ||
210 | get => this.Fields[9].PreviousData; | ||
211 | set => this.Fields[9].PreviousData = value; | ||
212 | } | ||
213 | } | ||
214 | } | ||
diff --git a/src/api/wix/WixToolset.Data/WindowsInstaller/Rows/MediaRow.cs b/src/api/wix/WixToolset.Data/WindowsInstaller/Rows/MediaRow.cs new file mode 100644 index 00000000..b8fa5e83 --- /dev/null +++ b/src/api/wix/WixToolset.Data/WindowsInstaller/Rows/MediaRow.cs | |||
@@ -0,0 +1,85 @@ | |||
1 | // Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. | ||
2 | |||
3 | namespace WixToolset.Data.WindowsInstaller.Rows | ||
4 | { | ||
5 | /// <summary> | ||
6 | /// Specialization of a row for the Media table. | ||
7 | /// </summary> | ||
8 | public sealed class MediaRow : Row | ||
9 | { | ||
10 | /// <summary> | ||
11 | /// Creates a Media row that belongs to a table. | ||
12 | /// </summary> | ||
13 | /// <param name="sourceLineNumbers">Original source lines for this row.</param> | ||
14 | /// <param name="table">Table this Media row belongs to and should get its column definitions from.</param> | ||
15 | public MediaRow(SourceLineNumber sourceLineNumbers, Table table) | ||
16 | : base(sourceLineNumbers, table) | ||
17 | { | ||
18 | } | ||
19 | |||
20 | public MediaRow(SourceLineNumber sourceLineNumbers, TableDefinition tableDefinition) : | ||
21 | base(sourceLineNumbers, tableDefinition) | ||
22 | { | ||
23 | } | ||
24 | |||
25 | /// <summary> | ||
26 | /// Gets or sets the disk id for this media row. | ||
27 | /// </summary> | ||
28 | /// <value>Disk id.</value> | ||
29 | public int DiskId | ||
30 | { | ||
31 | get { return (int)this.Fields[0].Data; } | ||
32 | set { this.Fields[0].Data = value; } | ||
33 | } | ||
34 | |||
35 | /// <summary> | ||
36 | /// Gets or sets the last sequence number for this media row. | ||
37 | /// </summary> | ||
38 | /// <value>Last sequence number.</value> | ||
39 | public int LastSequence | ||
40 | { | ||
41 | get { return (int)this.Fields[1].Data; } | ||
42 | set { this.Fields[1].Data = value; } | ||
43 | } | ||
44 | |||
45 | /// <summary> | ||
46 | /// Gets or sets the disk prompt for this media row. | ||
47 | /// </summary> | ||
48 | /// <value>Disk prompt.</value> | ||
49 | public string DiskPrompt | ||
50 | { | ||
51 | get { return (string)this.Fields[2].Data; } | ||
52 | set { this.Fields[2].Data = value; } | ||
53 | } | ||
54 | |||
55 | /// <summary> | ||
56 | /// Gets or sets the cabinet name for this media row. | ||
57 | /// </summary> | ||
58 | /// <value>Cabinet name.</value> | ||
59 | public string Cabinet | ||
60 | { | ||
61 | get { return (string)this.Fields[3].Data; } | ||
62 | set { this.Fields[3].Data = value; } | ||
63 | } | ||
64 | |||
65 | /// <summary> | ||
66 | /// Gets or sets the volume label for this media row. | ||
67 | /// </summary> | ||
68 | /// <value>Volume label.</value> | ||
69 | public string VolumeLabel | ||
70 | { | ||
71 | get { return (string)this.Fields[4].Data; } | ||
72 | set { this.Fields[4].Data = value; } | ||
73 | } | ||
74 | |||
75 | /// <summary> | ||
76 | /// Gets or sets the source for this media row. | ||
77 | /// </summary> | ||
78 | /// <value>Source.</value> | ||
79 | public string Source | ||
80 | { | ||
81 | get { return (string)this.Fields[5].Data; } | ||
82 | set { this.Fields[5].Data = value; } | ||
83 | } | ||
84 | } | ||
85 | } | ||
diff --git a/src/api/wix/WixToolset.Data/WindowsInstaller/Rows/PropertyRow.cs b/src/api/wix/WixToolset.Data/WindowsInstaller/Rows/PropertyRow.cs new file mode 100644 index 00000000..b4212430 --- /dev/null +++ b/src/api/wix/WixToolset.Data/WindowsInstaller/Rows/PropertyRow.cs | |||
@@ -0,0 +1,45 @@ | |||
1 | // Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. | ||
2 | |||
3 | namespace WixToolset.Data.WindowsInstaller.Rows | ||
4 | { | ||
5 | /// <summary> | ||
6 | /// Specialization of a row for the Property table. | ||
7 | /// </summary> | ||
8 | public sealed class PropertyRow : Row | ||
9 | { | ||
10 | /// <summary> | ||
11 | /// Creates an Property row that belongs to a table. | ||
12 | /// </summary> | ||
13 | /// <param name="sourceLineNumbers">Original source lines for this row.</param> | ||
14 | /// <param name="table">Table this Upgrade row belongs to and should get its column definitions from.</param> | ||
15 | public PropertyRow(SourceLineNumber sourceLineNumbers, Table table) : | ||
16 | base(sourceLineNumbers, table) | ||
17 | { | ||
18 | } | ||
19 | |||
20 | public PropertyRow(SourceLineNumber sourceLineNumbers, TableDefinition tableDefinition) : | ||
21 | base(sourceLineNumbers, tableDefinition) | ||
22 | { | ||
23 | } | ||
24 | |||
25 | /// <summary> | ||
26 | /// Gets and sets the property name for the row. | ||
27 | /// </summary> | ||
28 | /// <value>Property identifier for the row.</value> | ||
29 | public string Property | ||
30 | { | ||
31 | get { return (string)this.Fields[0].Data; } | ||
32 | set { this.Fields[0].Data = value; } | ||
33 | } | ||
34 | |||
35 | /// <summary> | ||
36 | /// Gets and sets the property value for the row. | ||
37 | /// </summary> | ||
38 | /// <value>Property value for the row.</value> | ||
39 | public string Value | ||
40 | { | ||
41 | get { return (string)this.Fields[1].Data; } | ||
42 | set { this.Fields[1].Data = value; } | ||
43 | } | ||
44 | } | ||
45 | } | ||
diff --git a/src/api/wix/WixToolset.Data/WindowsInstaller/Rows/SummaryInfoRowCollection.cs b/src/api/wix/WixToolset.Data/WindowsInstaller/Rows/SummaryInfoRowCollection.cs new file mode 100644 index 00000000..4b2ce129 --- /dev/null +++ b/src/api/wix/WixToolset.Data/WindowsInstaller/Rows/SummaryInfoRowCollection.cs | |||
@@ -0,0 +1,41 @@ | |||
1 | // Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. | ||
2 | |||
3 | namespace WixToolset.Data.WindowsInstaller.Rows | ||
4 | { | ||
5 | using System; | ||
6 | using System.Collections.ObjectModel; | ||
7 | |||
8 | /// <summary> | ||
9 | /// Indexed container class for summary information rows. | ||
10 | /// </summary> | ||
11 | public sealed class SummaryInfoRowCollection : KeyedCollection<int, Row> | ||
12 | { | ||
13 | /// <summary> | ||
14 | /// Creates the keyed collection from existing rows in a table. | ||
15 | /// </summary> | ||
16 | /// <param name="table">The summary information table to index.</param> | ||
17 | public SummaryInfoRowCollection(Table table) | ||
18 | { | ||
19 | if (0 != String.CompareOrdinal("_SummaryInformation", table.Name)) | ||
20 | { | ||
21 | string message = string.Format(WixDataStrings.EXP_UnsupportedTable, table.Name); | ||
22 | throw new ArgumentException(message, "table"); | ||
23 | } | ||
24 | |||
25 | foreach (Row row in table.Rows) | ||
26 | { | ||
27 | this.Add(row); | ||
28 | } | ||
29 | } | ||
30 | |||
31 | /// <summary> | ||
32 | /// Gets the summary property ID for the <paramref name="row"/>. | ||
33 | /// </summary> | ||
34 | /// <param name="row">The row to index.</param> | ||
35 | /// <returns>The summary property ID for the <paramref name="row"/>.</returns> | ||
36 | protected override int GetKeyForItem(Row row) | ||
37 | { | ||
38 | return (int)row[0]; | ||
39 | } | ||
40 | } | ||
41 | } | ||
diff --git a/src/api/wix/WixToolset.Data/WindowsInstaller/Rows/UpgradeRow.cs b/src/api/wix/WixToolset.Data/WindowsInstaller/Rows/UpgradeRow.cs new file mode 100644 index 00000000..dbbfa0f9 --- /dev/null +++ b/src/api/wix/WixToolset.Data/WindowsInstaller/Rows/UpgradeRow.cs | |||
@@ -0,0 +1,95 @@ | |||
1 | // Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. | ||
2 | |||
3 | namespace WixToolset.Data.WindowsInstaller.Rows | ||
4 | { | ||
5 | /// <summary> | ||
6 | /// Specialization of a row for the upgrade table. | ||
7 | /// </summary> | ||
8 | public sealed class UpgradeRow : Row | ||
9 | { | ||
10 | /// <summary> | ||
11 | /// Creates an Upgrade row that belongs to a table. | ||
12 | /// </summary> | ||
13 | /// <param name="sourceLineNumbers">Original source lines for this row.</param> | ||
14 | /// <param name="table">Table this Upgrade row belongs to and should get its column definitions from.</param> | ||
15 | public UpgradeRow(SourceLineNumber sourceLineNumbers, Table table) : | ||
16 | base(sourceLineNumbers, table) | ||
17 | { | ||
18 | } | ||
19 | |||
20 | public UpgradeRow(SourceLineNumber sourceLineNumbers, TableDefinition tableDefinition) : | ||
21 | base(sourceLineNumbers, tableDefinition) | ||
22 | { | ||
23 | } | ||
24 | |||
25 | /// <summary> | ||
26 | /// Gets and sets the upgrade code for the row. | ||
27 | /// </summary> | ||
28 | /// <value>Upgrade code for the row.</value> | ||
29 | public string UpgradeCode | ||
30 | { | ||
31 | get { return (string)this.Fields[0].Data; } | ||
32 | set { this.Fields[0].Data = value; } | ||
33 | } | ||
34 | |||
35 | /// <summary> | ||
36 | /// Gets and sets the version minimum for the row. | ||
37 | /// </summary> | ||
38 | /// <value>Version minimum for the row.</value> | ||
39 | public string VersionMin | ||
40 | { | ||
41 | get { return (string)this.Fields[1].Data; } | ||
42 | set { this.Fields[1].Data = value; } | ||
43 | } | ||
44 | |||
45 | /// <summary> | ||
46 | /// Gets and sets the version maximum for the row. | ||
47 | /// </summary> | ||
48 | /// <value>Version maximum for the row.</value> | ||
49 | public string VersionMax | ||
50 | { | ||
51 | get { return (string)this.Fields[2].Data; } | ||
52 | set { this.Fields[2].Data = value; } | ||
53 | } | ||
54 | |||
55 | /// <summary> | ||
56 | /// Gets and sets the language for the row. | ||
57 | /// </summary> | ||
58 | /// <value>Language for the row.</value> | ||
59 | public string Language | ||
60 | { | ||
61 | get { return (string)this.Fields[3].Data; } | ||
62 | set { this.Fields[3].Data = value; } | ||
63 | } | ||
64 | |||
65 | /// <summary> | ||
66 | /// Gets and sets the attributes for the row. | ||
67 | /// </summary> | ||
68 | /// <value>Attributes for the row.</value> | ||
69 | public int Attributes | ||
70 | { | ||
71 | get { return (int)this.Fields[4].Data; } | ||
72 | set { this.Fields[4].Data = value; } | ||
73 | } | ||
74 | |||
75 | /// <summary> | ||
76 | /// Gets and sets the remove code for the row. | ||
77 | /// </summary> | ||
78 | /// <value>Remove code for the row.</value> | ||
79 | public string Remove | ||
80 | { | ||
81 | get { return (string)this.Fields[5].Data; } | ||
82 | set { this.Fields[5].Data = value; } | ||
83 | } | ||
84 | |||
85 | /// <summary> | ||
86 | /// Gets and sets the action property for the row. | ||
87 | /// </summary> | ||
88 | /// <value>Action property for the row.</value> | ||
89 | public string ActionProperty | ||
90 | { | ||
91 | get { return (string)this.Fields[6].Data; } | ||
92 | set { this.Fields[6].Data = value; } | ||
93 | } | ||
94 | } | ||
95 | } | ||
diff --git a/src/api/wix/WixToolset.Data/WindowsInstaller/SequenceTableExtensions.cs b/src/api/wix/WixToolset.Data/WindowsInstaller/SequenceTableExtensions.cs new file mode 100644 index 00000000..9131a374 --- /dev/null +++ b/src/api/wix/WixToolset.Data/WindowsInstaller/SequenceTableExtensions.cs | |||
@@ -0,0 +1,17 @@ | |||
1 | // Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. | ||
2 | |||
3 | namespace WixToolset.Data.WindowsInstaller | ||
4 | { | ||
5 | using WixToolset.Data.Symbols; | ||
6 | |||
7 | /// <summary> | ||
8 | /// Enhancements to the SequenceTable enum. | ||
9 | /// </summary> | ||
10 | public static class SequenceTableExtensions | ||
11 | { | ||
12 | /// <summary> | ||
13 | /// Gets the SequenceTable enum as the Windows Installer table name. | ||
14 | /// </summary> | ||
15 | public static string WindowsInstallerTableName(this SequenceTable sequence) => (sequence == SequenceTable.AdvertiseExecuteSequence) ? "AdvtExecuteSequence" : sequence.ToString(); | ||
16 | } | ||
17 | } | ||
diff --git a/src/api/wix/WixToolset.Data/WindowsInstaller/SubStorage.cs b/src/api/wix/WixToolset.Data/WindowsInstaller/SubStorage.cs new file mode 100644 index 00000000..76b1b795 --- /dev/null +++ b/src/api/wix/WixToolset.Data/WindowsInstaller/SubStorage.cs | |||
@@ -0,0 +1,112 @@ | |||
1 | // Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. | ||
2 | |||
3 | namespace WixToolset.Data.WindowsInstaller | ||
4 | { | ||
5 | using System.Xml; | ||
6 | |||
7 | /// <summary> | ||
8 | /// Substorage inside an output. | ||
9 | /// </summary> | ||
10 | public sealed class SubStorage | ||
11 | { | ||
12 | /// <summary> | ||
13 | /// Instantiate a new substorage. | ||
14 | /// </summary> | ||
15 | /// <param name="name">The substorage name.</param> | ||
16 | /// <param name="data">The substorage data.</param> | ||
17 | public SubStorage(string name, WindowsInstallerData data) | ||
18 | { | ||
19 | this.Name = name; | ||
20 | this.Data = data; | ||
21 | } | ||
22 | |||
23 | /// <summary> | ||
24 | /// Gets the substorage name. | ||
25 | /// </summary> | ||
26 | /// <value>The substorage name.</value> | ||
27 | public string Name { get; } | ||
28 | |||
29 | /// <summary> | ||
30 | /// Gets the substorage data. | ||
31 | /// </summary> | ||
32 | /// <value>The substorage data.</value> | ||
33 | public WindowsInstallerData Data { get; } | ||
34 | |||
35 | /// <summary> | ||
36 | /// Creates a SubStorage from the XmlReader. | ||
37 | /// </summary> | ||
38 | /// <param name="reader">Reader to get data from.</param> | ||
39 | /// <param name="tableDefinitions">Table definitions to use for strongly-typed rows.</param> | ||
40 | /// <returns>New SubStorage object.</returns> | ||
41 | internal static SubStorage Read(XmlReader reader, TableDefinitionCollection tableDefinitions) | ||
42 | { | ||
43 | if (reader.LocalName != "subStorage") | ||
44 | { | ||
45 | throw new XmlException(); | ||
46 | } | ||
47 | |||
48 | WindowsInstallerData data = null; | ||
49 | string name = null; | ||
50 | |||
51 | var empty = reader.IsEmptyElement; | ||
52 | |||
53 | while (reader.MoveToNextAttribute()) | ||
54 | { | ||
55 | switch (reader.LocalName) | ||
56 | { | ||
57 | case "name": | ||
58 | name = reader.Value; | ||
59 | break; | ||
60 | } | ||
61 | } | ||
62 | |||
63 | if (!empty) | ||
64 | { | ||
65 | var done = false; | ||
66 | |||
67 | while (!done && reader.Read()) | ||
68 | { | ||
69 | switch (reader.NodeType) | ||
70 | { | ||
71 | case XmlNodeType.Element: | ||
72 | switch (reader.LocalName) | ||
73 | { | ||
74 | case WindowsInstallerData.XmlElementName: | ||
75 | data = WindowsInstallerData.Read(reader, tableDefinitions, true); | ||
76 | break; | ||
77 | default: | ||
78 | throw new XmlException(); | ||
79 | } | ||
80 | break; | ||
81 | |||
82 | case XmlNodeType.EndElement: | ||
83 | done = true; | ||
84 | break; | ||
85 | } | ||
86 | } | ||
87 | |||
88 | if (!done) | ||
89 | { | ||
90 | throw new XmlException(); | ||
91 | } | ||
92 | } | ||
93 | |||
94 | return new SubStorage(name, data); | ||
95 | } | ||
96 | |||
97 | /// <summary> | ||
98 | /// Persists a SubStorage in an XML format. | ||
99 | /// </summary> | ||
100 | /// <param name="writer">XmlWriter where the SubStorage should persist itself as XML.</param> | ||
101 | internal void Write(XmlWriter writer) | ||
102 | { | ||
103 | writer.WriteStartElement("subStorage", WindowsInstallerData.XmlNamespaceUri); | ||
104 | |||
105 | writer.WriteAttributeString("name", this.Name); | ||
106 | |||
107 | this.Data.Write(writer); | ||
108 | |||
109 | writer.WriteEndElement(); | ||
110 | } | ||
111 | } | ||
112 | } | ||
diff --git a/src/api/wix/WixToolset.Data/WindowsInstaller/Table.cs b/src/api/wix/WixToolset.Data/WindowsInstaller/Table.cs new file mode 100644 index 00000000..714be20f --- /dev/null +++ b/src/api/wix/WixToolset.Data/WindowsInstaller/Table.cs | |||
@@ -0,0 +1,190 @@ | |||
1 | // Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. | ||
2 | |||
3 | namespace WixToolset.Data.WindowsInstaller | ||
4 | { | ||
5 | using System; | ||
6 | using System.Collections.Generic; | ||
7 | using System.Diagnostics; | ||
8 | using System.Xml; | ||
9 | |||
10 | /// <summary> | ||
11 | /// Object that represents a table in a database. | ||
12 | /// </summary> | ||
13 | [DebuggerDisplay("{Name}")] | ||
14 | public class Table | ||
15 | { | ||
16 | /// <summary> | ||
17 | /// Creates a table. | ||
18 | /// </summary> | ||
19 | /// <param name="tableDefinition">Definition of the table.</param> | ||
20 | public Table(TableDefinition tableDefinition) | ||
21 | { | ||
22 | this.Definition = tableDefinition; | ||
23 | this.Rows = new List<Row>(); | ||
24 | } | ||
25 | |||
26 | /// <summary> | ||
27 | /// Gets the table definition. | ||
28 | /// </summary> | ||
29 | /// <value>Definition of the table.</value> | ||
30 | public TableDefinition Definition { get; } | ||
31 | |||
32 | /// <summary> | ||
33 | /// Gets the name of the table. | ||
34 | /// </summary> | ||
35 | /// <value>Name of the table.</value> | ||
36 | public string Name => this.Definition.Name; | ||
37 | |||
38 | /// <summary> | ||
39 | /// Gets or sets the table transform operation. | ||
40 | /// </summary> | ||
41 | /// <value>The table transform operation.</value> | ||
42 | public TableOperation Operation { get; set; } | ||
43 | |||
44 | /// <summary> | ||
45 | /// Gets the rows contained in the table. | ||
46 | /// </summary> | ||
47 | /// <value>Rows contained in the table.</value> | ||
48 | public IList<Row> Rows { get; } | ||
49 | |||
50 | /// <summary> | ||
51 | /// Creates a new row and adds it to the table. | ||
52 | /// </summary> | ||
53 | /// <param name="sourceLineNumbers">Original source lines for this row.</param> | ||
54 | /// <returns>Row created in table.</returns> | ||
55 | public Row CreateRow(SourceLineNumber sourceLineNumbers) | ||
56 | { | ||
57 | var row = this.Definition.CreateRow(sourceLineNumbers, this); | ||
58 | this.Rows.Add(row); | ||
59 | return row; | ||
60 | } | ||
61 | |||
62 | /// <summary> | ||
63 | /// Validates the rows of this OutputTable and throws if it collides on | ||
64 | /// primary keys. | ||
65 | /// </summary> | ||
66 | public void ValidateRows() | ||
67 | { | ||
68 | var primaryKeys = new Dictionary<string, SourceLineNumber>(); | ||
69 | |||
70 | foreach (var row in this.Rows) | ||
71 | { | ||
72 | var primaryKey = row.GetPrimaryKey(); | ||
73 | |||
74 | if (primaryKeys.TryGetValue(primaryKey, out var collisionSourceLineNumber)) | ||
75 | { | ||
76 | throw new WixException(ErrorMessages.DuplicatePrimaryKey(collisionSourceLineNumber, primaryKey, this.Definition.Name)); | ||
77 | } | ||
78 | |||
79 | primaryKeys.Add(primaryKey, row.SourceLineNumbers); | ||
80 | } | ||
81 | } | ||
82 | |||
83 | /// <summary> | ||
84 | /// Parse a table from the xml. | ||
85 | /// </summary> | ||
86 | /// <param name="reader">XmlReader where the intermediate is persisted.</param> | ||
87 | /// <param name="tableDefinitions">TableDefinitions to use in the intermediate.</param> | ||
88 | /// <returns>The parsed table.</returns> | ||
89 | internal static Table Read(XmlReader reader, TableDefinitionCollection tableDefinitions) | ||
90 | { | ||
91 | Debug.Assert("table" == reader.LocalName); | ||
92 | |||
93 | bool empty = reader.IsEmptyElement; | ||
94 | TableOperation operation = TableOperation.None; | ||
95 | string name = null; | ||
96 | |||
97 | while (reader.MoveToNextAttribute()) | ||
98 | { | ||
99 | switch (reader.LocalName) | ||
100 | { | ||
101 | case "name": | ||
102 | name = reader.Value; | ||
103 | break; | ||
104 | case "op": | ||
105 | switch (reader.Value) | ||
106 | { | ||
107 | case "add": | ||
108 | operation = TableOperation.Add; | ||
109 | break; | ||
110 | case "drop": | ||
111 | operation = TableOperation.Drop; | ||
112 | break; | ||
113 | default: | ||
114 | throw new XmlException(); | ||
115 | } | ||
116 | break; | ||
117 | } | ||
118 | } | ||
119 | |||
120 | if (null == name) | ||
121 | { | ||
122 | throw new XmlException(); | ||
123 | } | ||
124 | |||
125 | TableDefinition tableDefinition = tableDefinitions[name]; | ||
126 | Table table = new Table(tableDefinition); | ||
127 | table.Operation = operation; | ||
128 | |||
129 | if (!empty) | ||
130 | { | ||
131 | bool done = false; | ||
132 | |||
133 | // loop through all the rows in a table | ||
134 | while (!done && reader.Read()) | ||
135 | { | ||
136 | switch (reader.NodeType) | ||
137 | { | ||
138 | case XmlNodeType.Element: | ||
139 | switch (reader.LocalName) | ||
140 | { | ||
141 | case "row": | ||
142 | Row.Read(reader, table); | ||
143 | break; | ||
144 | default: | ||
145 | throw new XmlException(); | ||
146 | } | ||
147 | break; | ||
148 | case XmlNodeType.EndElement: | ||
149 | done = true; | ||
150 | break; | ||
151 | } | ||
152 | } | ||
153 | |||
154 | if (!done) | ||
155 | { | ||
156 | throw new XmlException(); | ||
157 | } | ||
158 | } | ||
159 | |||
160 | return table; | ||
161 | } | ||
162 | |||
163 | /// <summary> | ||
164 | /// Persists a row in an XML format. | ||
165 | /// </summary> | ||
166 | /// <param name="writer">XmlWriter where the Row should persist itself as XML.</param> | ||
167 | internal void Write(XmlWriter writer) | ||
168 | { | ||
169 | if (null == writer) | ||
170 | { | ||
171 | throw new ArgumentNullException("writer"); | ||
172 | } | ||
173 | |||
174 | writer.WriteStartElement("table", WindowsInstallerData.XmlNamespaceUri); | ||
175 | writer.WriteAttributeString("name", this.Name); | ||
176 | |||
177 | if (TableOperation.None != this.Operation) | ||
178 | { | ||
179 | writer.WriteAttributeString("op", this.Operation.ToString().ToLowerInvariant()); | ||
180 | } | ||
181 | |||
182 | foreach (var row in this.Rows) | ||
183 | { | ||
184 | row.Write(writer); | ||
185 | } | ||
186 | |||
187 | writer.WriteEndElement(); | ||
188 | } | ||
189 | } | ||
190 | } | ||
diff --git a/src/api/wix/WixToolset.Data/WindowsInstaller/TableDefinition.cs b/src/api/wix/WixToolset.Data/WindowsInstaller/TableDefinition.cs new file mode 100644 index 00000000..a7602d05 --- /dev/null +++ b/src/api/wix/WixToolset.Data/WindowsInstaller/TableDefinition.cs | |||
@@ -0,0 +1,267 @@ | |||
1 | // Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. | ||
2 | |||
3 | namespace WixToolset.Data.WindowsInstaller | ||
4 | { | ||
5 | using System; | ||
6 | using System.Collections.Generic; | ||
7 | using System.Linq; | ||
8 | using System.Xml; | ||
9 | |||
10 | /// <summary> | ||
11 | /// Definition of a table in a database. | ||
12 | /// </summary> | ||
13 | public sealed class TableDefinition : IComparable<TableDefinition> | ||
14 | { | ||
15 | /// <summary> | ||
16 | /// Tracks the maximum number of columns supported in a real table. | ||
17 | /// This is a Windows Installer limitation. | ||
18 | /// </summary> | ||
19 | public const int MaxColumnsInRealTable = 32; | ||
20 | |||
21 | /// <summary> | ||
22 | /// Creates a table definition. | ||
23 | /// </summary> | ||
24 | /// <param name="name">Name of table to create.</param> | ||
25 | /// <param name="symbolDefinition">Optional symbol definition for this table.</param> | ||
26 | /// <param name="columns">Column definitions for the table.</param> | ||
27 | /// <param name="unreal">Flag if table is unreal.</param> | ||
28 | /// <param name="symbolIdIsPrimaryKey">Whether the primary key is the id of the symbol definition associated with this table.</param> | ||
29 | /// <param name="strongRowType">The specialized type for the rows.</param> | ||
30 | public TableDefinition(string name, IntermediateSymbolDefinition symbolDefinition, IEnumerable<ColumnDefinition> columns, bool unreal = false, bool symbolIdIsPrimaryKey = false, Type strongRowType = null) | ||
31 | { | ||
32 | this.Name = name; | ||
33 | this.SymbolDefinition = symbolDefinition; | ||
34 | this.SymbolIdIsPrimaryKey = symbolIdIsPrimaryKey; | ||
35 | this.Unreal = unreal; | ||
36 | this.Columns = columns?.ToArray(); | ||
37 | this.StrongRowType = strongRowType ?? typeof(Row); | ||
38 | |||
39 | if (this.Columns == null || this.Columns.Length == 0) | ||
40 | { | ||
41 | throw new ArgumentOutOfRangeException(nameof(columns)); | ||
42 | } | ||
43 | #if DEBUG | ||
44 | if (this.StrongRowType != typeof(Row) && !this.StrongRowType.IsSubclassOf(typeof(Row))) { throw new ArgumentException(nameof(strongRowType)); } | ||
45 | #endif | ||
46 | } | ||
47 | |||
48 | /// <summary> | ||
49 | /// Gets the name of the table. | ||
50 | /// </summary> | ||
51 | /// <value>Name of the table.</value> | ||
52 | public string Name { get; } | ||
53 | |||
54 | /// <summary> | ||
55 | /// Gets the symbol definition associated with this table. | ||
56 | /// </summary> | ||
57 | /// <value>The symbol definition.</value> | ||
58 | public IntermediateSymbolDefinition SymbolDefinition { get; } | ||
59 | |||
60 | /// <summary> | ||
61 | /// Gets if the table is unreal. | ||
62 | /// </summary> | ||
63 | /// <value>Flag if table is unreal.</value> | ||
64 | public bool Unreal { get; } | ||
65 | |||
66 | /// <summary> | ||
67 | /// Gets the collection of column definitions for this table. | ||
68 | /// </summary> | ||
69 | /// <value>Collection of column definitions for this table.</value> | ||
70 | public ColumnDefinition[] Columns { get; } | ||
71 | |||
72 | /// <summary> | ||
73 | /// Gets if the primary key is the id of the symbol definition associated with this table. | ||
74 | /// </summary> | ||
75 | /// <value>Flag if table is unreal.</value> | ||
76 | public bool SymbolIdIsPrimaryKey { get; } | ||
77 | |||
78 | private Type StrongRowType { get; } | ||
79 | |||
80 | /// <summary> | ||
81 | /// Gets the column definition in the table by index. | ||
82 | /// </summary> | ||
83 | /// <param name="columnIndex">Index of column to locate.</param> | ||
84 | /// <value>Column definition in the table by index.</value> | ||
85 | public ColumnDefinition this[int columnIndex] => this.Columns[columnIndex]; | ||
86 | |||
87 | /// <summary> | ||
88 | /// In general this method shouldn't be used - create rows from a Table instead. | ||
89 | /// Creates a new row object of the type specified in this definition. | ||
90 | /// </summary> | ||
91 | /// <param name="sourceLineNumbers">Original source lines for this row.</param> | ||
92 | /// <returns>Created row.</returns> | ||
93 | public Row CreateRow(SourceLineNumber sourceLineNumbers) | ||
94 | { | ||
95 | var result = (Row)Activator.CreateInstance(this.StrongRowType, sourceLineNumbers, this); | ||
96 | return result; | ||
97 | } | ||
98 | |||
99 | /// <summary> | ||
100 | /// Creates a new row object of the type specified in this definition for the given table. | ||
101 | /// External callers should create the row from the table. | ||
102 | /// </summary> | ||
103 | /// <param name="sourceLineNumbers">Original source lines for this row.</param> | ||
104 | /// <param name="table">The owning table for this row.</param> | ||
105 | /// <returns>Created row.</returns> | ||
106 | internal Row CreateRow(SourceLineNumber sourceLineNumbers, Table table) | ||
107 | { | ||
108 | var result = (Row)Activator.CreateInstance(this.StrongRowType, sourceLineNumbers, table); | ||
109 | return result; | ||
110 | } | ||
111 | |||
112 | /// <summary> | ||
113 | /// Compares this table definition to another table definition. | ||
114 | /// </summary> | ||
115 | /// <remarks> | ||
116 | /// Only Windows Installer traits are compared, allowing for updates to WiX-specific table definitions. | ||
117 | /// </remarks> | ||
118 | /// <param name="updated">The updated <see cref="TableDefinition"/> to compare with this target definition.</param> | ||
119 | /// <returns>0 if the tables' core properties are the same; otherwise, non-0.</returns> | ||
120 | public int CompareTo(TableDefinition updated) | ||
121 | { | ||
122 | // by definition, this object is greater than null | ||
123 | if (null == updated) | ||
124 | { | ||
125 | return 1; | ||
126 | } | ||
127 | |||
128 | // compare the table names | ||
129 | var ret = String.Compare(this.Name, updated.Name, StringComparison.Ordinal); | ||
130 | |||
131 | // compare the column count | ||
132 | if (0 == ret) | ||
133 | { | ||
134 | // transforms can only add columns | ||
135 | ret = Math.Min(0, updated.Columns.Length - this.Columns.Length); | ||
136 | |||
137 | // compare name, type, and length of each column | ||
138 | for (var i = 0; 0 == ret && this.Columns.Length > i; i++) | ||
139 | { | ||
140 | var thisColumnDef = this.Columns[i]; | ||
141 | var updatedColumnDef = updated.Columns[i]; | ||
142 | |||
143 | // Igmore unreal columns when comparing table definitions. | ||
144 | if (thisColumnDef.Unreal || updatedColumnDef.Unreal) | ||
145 | { | ||
146 | continue; | ||
147 | } | ||
148 | |||
149 | ret = thisColumnDef.CompareTo(updatedColumnDef); | ||
150 | } | ||
151 | } | ||
152 | |||
153 | return ret; | ||
154 | } | ||
155 | |||
156 | /// <summary> | ||
157 | /// Parses table definition from xml reader. | ||
158 | /// </summary> | ||
159 | /// <param name="reader">Reader to get data from.</param> | ||
160 | /// <param name="tableDefinitions">Table definitions to use for strongly-typed rows.</param> | ||
161 | /// <returns>The TableDefintion represented by the Xml.</returns> | ||
162 | internal static TableDefinition Read(XmlReader reader, TableDefinitionCollection tableDefinitions) | ||
163 | { | ||
164 | var empty = reader.IsEmptyElement; | ||
165 | string name = null; | ||
166 | IntermediateSymbolDefinition symbolDefinition = null; | ||
167 | var unreal = false; | ||
168 | var symbolIdIsPrimaryKey = false; | ||
169 | Type strongRowType = null; | ||
170 | |||
171 | while (reader.MoveToNextAttribute()) | ||
172 | { | ||
173 | switch (reader.LocalName) | ||
174 | { | ||
175 | case "name": | ||
176 | name = reader.Value; | ||
177 | break; | ||
178 | case "unreal": | ||
179 | unreal = reader.Value.Equals("yes"); | ||
180 | break; | ||
181 | } | ||
182 | } | ||
183 | |||
184 | if (null == name) | ||
185 | { | ||
186 | throw new XmlException(); | ||
187 | } | ||
188 | |||
189 | if (tableDefinitions.TryGet(name, out var tableDefinition)) | ||
190 | { | ||
191 | symbolDefinition = tableDefinition.SymbolDefinition; | ||
192 | symbolIdIsPrimaryKey = tableDefinition.SymbolIdIsPrimaryKey; | ||
193 | strongRowType = tableDefinition.StrongRowType; | ||
194 | } | ||
195 | |||
196 | var columns = new List<ColumnDefinition>(); | ||
197 | var hasPrimaryKeyColumn = false; | ||
198 | |||
199 | // parse the child elements | ||
200 | if (!empty) | ||
201 | { | ||
202 | var done = false; | ||
203 | |||
204 | while (!done && reader.Read()) | ||
205 | { | ||
206 | switch (reader.NodeType) | ||
207 | { | ||
208 | case XmlNodeType.Element: | ||
209 | switch (reader.LocalName) | ||
210 | { | ||
211 | case "columnDefinition": | ||
212 | var columnDefinition = ColumnDefinition.Read(reader); | ||
213 | columns.Add(columnDefinition); | ||
214 | |||
215 | if (columnDefinition.PrimaryKey) | ||
216 | { | ||
217 | hasPrimaryKeyColumn = true; | ||
218 | } | ||
219 | break; | ||
220 | default: | ||
221 | throw new XmlException(); | ||
222 | } | ||
223 | break; | ||
224 | case XmlNodeType.EndElement: | ||
225 | done = true; | ||
226 | break; | ||
227 | } | ||
228 | } | ||
229 | |||
230 | if (!unreal && !hasPrimaryKeyColumn) | ||
231 | { | ||
232 | throw new WixException(ErrorMessages.RealTableMissingPrimaryKeyColumn(SourceLineNumber.CreateFromUri(reader.BaseURI), name)); | ||
233 | } | ||
234 | |||
235 | if (!done) | ||
236 | { | ||
237 | throw new XmlException(); | ||
238 | } | ||
239 | } | ||
240 | |||
241 | return new TableDefinition(name, symbolDefinition, columns.ToArray(), unreal, symbolIdIsPrimaryKey, strongRowType); | ||
242 | } | ||
243 | |||
244 | /// <summary> | ||
245 | /// Persists an output in an XML format. | ||
246 | /// </summary> | ||
247 | /// <param name="writer">XmlWriter where the Output should persist itself as XML.</param> | ||
248 | internal void Write(XmlWriter writer) | ||
249 | { | ||
250 | writer.WriteStartElement("tableDefinition", TableDefinitionCollection.XmlNamespaceUri); | ||
251 | |||
252 | writer.WriteAttributeString("name", this.Name); | ||
253 | |||
254 | if (this.Unreal) | ||
255 | { | ||
256 | writer.WriteAttributeString("unreal", "yes"); | ||
257 | } | ||
258 | |||
259 | foreach (var columnDefinition in this.Columns) | ||
260 | { | ||
261 | columnDefinition.Write(writer); | ||
262 | } | ||
263 | |||
264 | writer.WriteEndElement(); | ||
265 | } | ||
266 | } | ||
267 | } | ||
diff --git a/src/api/wix/WixToolset.Data/WindowsInstaller/TableDefinitionCollection.cs b/src/api/wix/WixToolset.Data/WindowsInstaller/TableDefinitionCollection.cs new file mode 100644 index 00000000..fcc2b1f6 --- /dev/null +++ b/src/api/wix/WixToolset.Data/WindowsInstaller/TableDefinitionCollection.cs | |||
@@ -0,0 +1,201 @@ | |||
1 | // Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. | ||
2 | |||
3 | namespace WixToolset.Data.WindowsInstaller | ||
4 | { | ||
5 | using System.Collections; | ||
6 | using System.Collections.Generic; | ||
7 | using System.Linq; | ||
8 | using System.Xml; | ||
9 | |||
10 | /// <summary> | ||
11 | /// Collection for table definitions indexed by table name. | ||
12 | /// </summary> | ||
13 | public sealed class TableDefinitionCollection : ICollection<TableDefinition> | ||
14 | { | ||
15 | public const string XmlNamespaceUri = "http://wixtoolset.org/schemas/v4/wi/tables"; | ||
16 | |||
17 | private Dictionary<string, TableDefinition> collection; | ||
18 | |||
19 | /// <summary> | ||
20 | /// Instantiate a new TableDefinitionCollection class. | ||
21 | /// </summary> | ||
22 | public TableDefinitionCollection() | ||
23 | { | ||
24 | this.collection = new Dictionary<string, TableDefinition>(); | ||
25 | } | ||
26 | |||
27 | /// <summary> | ||
28 | /// Creates a shallow copy of the provided table definition collection. | ||
29 | /// </summary> | ||
30 | public TableDefinitionCollection(TableDefinitionCollection tableDefinitions) | ||
31 | { | ||
32 | this.collection = new Dictionary<string, TableDefinition>(tableDefinitions.collection); | ||
33 | } | ||
34 | |||
35 | /// <summary> | ||
36 | /// Creates a table definition collection with the given table definitions. | ||
37 | /// </summary> | ||
38 | public TableDefinitionCollection(IEnumerable<TableDefinition> tableDefinitions) | ||
39 | { | ||
40 | this.collection = tableDefinitions.ToDictionary(t => t.Name); | ||
41 | } | ||
42 | |||
43 | /// <summary> | ||
44 | /// Gets the number of items in the collection. | ||
45 | /// </summary> | ||
46 | /// <value>Number of items in collection.</value> | ||
47 | public int Count => this.collection.Count; | ||
48 | |||
49 | /// <summary> | ||
50 | /// Table definition collections are never read-only. | ||
51 | /// </summary> | ||
52 | public bool IsReadOnly => false; | ||
53 | |||
54 | /// <summary> | ||
55 | /// Gets a table definition by name. | ||
56 | /// </summary> | ||
57 | /// <param name="tableName">Name of table to locate.</param> | ||
58 | public TableDefinition this[string tableName] | ||
59 | { | ||
60 | get | ||
61 | { | ||
62 | if (!this.collection.TryGetValue(tableName, out var table)) | ||
63 | { | ||
64 | throw new WixMissingTableDefinitionException(ErrorMessages.MissingTableDefinition(tableName)); | ||
65 | } | ||
66 | |||
67 | return table; | ||
68 | } | ||
69 | } | ||
70 | |||
71 | /// <summary> | ||
72 | /// Tries to get a table definition by name. | ||
73 | /// </summary> | ||
74 | /// <param name="tableName">Name of table to locate.</param> | ||
75 | /// <param name="table">Table definition if found.</param> | ||
76 | /// <returns>True if table definition was found otherwise false.</returns> | ||
77 | public bool TryGet(string tableName, out TableDefinition table) => this.collection.TryGetValue(tableName, out table); | ||
78 | |||
79 | /// <summary> | ||
80 | /// Adds a table definition to the collection. | ||
81 | /// </summary> | ||
82 | /// <param name="tableDefinition">Table definition to add to the collection.</param> | ||
83 | /// <value>Indexes by table definition name.</value> | ||
84 | public void Add(TableDefinition tableDefinition) => this.collection.Add(tableDefinition.Name, tableDefinition); | ||
85 | |||
86 | /// <summary> | ||
87 | /// Removes all table definitions from the collection. | ||
88 | /// </summary> | ||
89 | public void Clear() => this.collection.Clear(); | ||
90 | |||
91 | /// <summary> | ||
92 | /// Checks if the collection contains a table name. | ||
93 | /// </summary> | ||
94 | /// <param name="tableName">The table to check in the collection.</param> | ||
95 | /// <returns>True if collection contains the table.</returns> | ||
96 | public bool Contains(string tableName) => this.collection.ContainsKey(tableName); | ||
97 | |||
98 | /// <summary> | ||
99 | /// Checks if the collection contains a table. | ||
100 | /// </summary> | ||
101 | /// <param name="table">The table to check in the collection.</param> | ||
102 | /// <returns>True if collection contains the table.</returns> | ||
103 | public bool Contains(TableDefinition table) => this.collection.ContainsKey(table.Name); | ||
104 | |||
105 | /// <summary> | ||
106 | /// Copies table definitions to an arry. | ||
107 | /// </summary> | ||
108 | /// <param name="array">Array to copy the table definitions to.</param> | ||
109 | /// <param name="index">Index in the array to start copying at.</param> | ||
110 | public void CopyTo(TableDefinition[] array, int index) => this.collection.Values.CopyTo(array, index); | ||
111 | |||
112 | /// <summary> | ||
113 | /// Removes a table definition from the collection. | ||
114 | /// </summary> | ||
115 | /// <param name="table">Table to remove from the collection.</param> | ||
116 | /// <returns>True if the table definition existed in the collection and was removed.</returns> | ||
117 | public bool Remove(TableDefinition table) => this.collection.Remove(table.Name); | ||
118 | |||
119 | /// <summary> | ||
120 | /// Gets enumerator for the collection. | ||
121 | /// </summary> | ||
122 | /// <returns>Enumerator for the collection.</returns> | ||
123 | public IEnumerator<TableDefinition> GetEnumerator() => this.collection.Values.GetEnumerator(); | ||
124 | |||
125 | /// <summary> | ||
126 | /// Gets the untyped enumerator for the collection. | ||
127 | /// </summary> | ||
128 | /// <returns>Untyped enumerator for the collection.</returns> | ||
129 | IEnumerator IEnumerable.GetEnumerator() => this.collection.Values.GetEnumerator(); | ||
130 | |||
131 | /// <summary> | ||
132 | /// Loads a collection of table definitions from a XmlReader in memory. | ||
133 | /// </summary> | ||
134 | /// <param name="reader">Reader to get data from.</param> | ||
135 | /// <param name="tableDefinitions">Table definitions to use for strongly-typed rows.</param> | ||
136 | /// <returns>The TableDefinitionCollection represented by the xml.</returns> | ||
137 | internal static TableDefinitionCollection Read(XmlReader reader, TableDefinitionCollection tableDefinitions) | ||
138 | { | ||
139 | if ("tableDefinitions" != reader.LocalName) | ||
140 | { | ||
141 | throw new XmlException(); | ||
142 | } | ||
143 | |||
144 | var empty = reader.IsEmptyElement; | ||
145 | var tableDefinitionCollection = new TableDefinitionCollection(); | ||
146 | |||
147 | while (reader.MoveToNextAttribute()) | ||
148 | { | ||
149 | } | ||
150 | |||
151 | // parse the child elements | ||
152 | if (!empty) | ||
153 | { | ||
154 | var done = false; | ||
155 | |||
156 | while (!done && reader.Read()) | ||
157 | { | ||
158 | switch (reader.NodeType) | ||
159 | { | ||
160 | case XmlNodeType.Element: | ||
161 | switch (reader.LocalName) | ||
162 | { | ||
163 | case "tableDefinition": | ||
164 | tableDefinitionCollection.Add(TableDefinition.Read(reader, tableDefinitions)); | ||
165 | break; | ||
166 | default: | ||
167 | throw new XmlException(); | ||
168 | } | ||
169 | break; | ||
170 | case XmlNodeType.EndElement: | ||
171 | done = true; | ||
172 | break; | ||
173 | } | ||
174 | } | ||
175 | |||
176 | if (!done) | ||
177 | { | ||
178 | throw new XmlException(); | ||
179 | } | ||
180 | } | ||
181 | |||
182 | return tableDefinitionCollection; | ||
183 | } | ||
184 | |||
185 | /// <summary> | ||
186 | /// Persists a TableDefinitionCollection in an XML format. | ||
187 | /// </summary> | ||
188 | /// <param name="writer">XmlWriter where the TableDefinitionCollection should persist itself as XML.</param> | ||
189 | internal void Write(XmlWriter writer) | ||
190 | { | ||
191 | writer.WriteStartElement("tableDefinitions", XmlNamespaceUri); | ||
192 | |||
193 | foreach (var tableDefinition in this.collection.Values.OrderBy(t => t.Name)) | ||
194 | { | ||
195 | tableDefinition.Write(writer); | ||
196 | } | ||
197 | |||
198 | writer.WriteEndElement(); | ||
199 | } | ||
200 | } | ||
201 | } | ||
diff --git a/src/api/wix/WixToolset.Data/WindowsInstaller/TableIndexedCollection.cs b/src/api/wix/WixToolset.Data/WindowsInstaller/TableIndexedCollection.cs new file mode 100644 index 00000000..a399c6fa --- /dev/null +++ b/src/api/wix/WixToolset.Data/WindowsInstaller/TableIndexedCollection.cs | |||
@@ -0,0 +1,105 @@ | |||
1 | // Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. | ||
2 | |||
3 | namespace WixToolset.Data.WindowsInstaller | ||
4 | { | ||
5 | using System.Collections.Generic; | ||
6 | using System.Linq; | ||
7 | |||
8 | /// <summary> | ||
9 | /// Collection for tables. | ||
10 | /// </summary> | ||
11 | public sealed class TableIndexedCollection : ICollection<Table> | ||
12 | { | ||
13 | private Dictionary<string, Table> collection; | ||
14 | |||
15 | /// <summary> | ||
16 | /// Instantiate a new empty collection. | ||
17 | /// </summary> | ||
18 | public TableIndexedCollection() => this.collection = new Dictionary<string, Table>(); | ||
19 | |||
20 | /// <summary> | ||
21 | /// Instantiate a new collection populated with a set of tables. | ||
22 | /// </summary> | ||
23 | /// <param name="tables">Set of tables.</param> | ||
24 | public TableIndexedCollection(IEnumerable<Table> tables) => this.collection = tables.ToDictionary(t => t.Name); | ||
25 | |||
26 | /// <summary> | ||
27 | /// Gets the number of items in the collection. | ||
28 | /// </summary> | ||
29 | /// <value>Number of items in collection.</value> | ||
30 | public int Count => this.collection.Count; | ||
31 | |||
32 | /// <summary> | ||
33 | /// Table indexed collection is never read only. | ||
34 | /// </summary> | ||
35 | public bool IsReadOnly => false; | ||
36 | |||
37 | /// <summary> | ||
38 | /// Adds a table to the collection. | ||
39 | /// </summary> | ||
40 | /// <param name="table">Table to add to the collection.</param> | ||
41 | /// <remarks>Indexes the table by name.</remarks> | ||
42 | public void Add(Table table) => this.collection.Add(table.Name, table); | ||
43 | |||
44 | /// <summary> | ||
45 | /// Clear the tables from the collection. | ||
46 | /// </summary> | ||
47 | public void Clear() => this.collection.Clear(); | ||
48 | |||
49 | /// <summary> | ||
50 | /// Determines if a table is in the collection. | ||
51 | /// </summary> | ||
52 | /// <param name="table">Table to check if it is in the collection.</param> | ||
53 | /// <returns>True if the table name is in the collection, otherwise false.</returns> | ||
54 | public bool Contains(Table table) => this.collection.ContainsKey(table.Name); | ||
55 | |||
56 | /// <summary> | ||
57 | /// Copies the collection into an array. | ||
58 | /// </summary> | ||
59 | /// <param name="array">Array to copy the collection into.</param> | ||
60 | /// <param name="arrayIndex">Index to start copying from.</param> | ||
61 | public void CopyTo(Table[] array, int arrayIndex) => this.collection.Values.CopyTo(array, arrayIndex); | ||
62 | |||
63 | /// <summary> | ||
64 | /// Remove a table from the collection by name. | ||
65 | /// </summary> | ||
66 | /// <param name="tableName">Table name to remove from the collection.</param> | ||
67 | public void Remove(string tableName) => _ = this.collection.Remove(tableName); | ||
68 | |||
69 | /// <summary> | ||
70 | /// Remove a table from the collection. | ||
71 | /// </summary> | ||
72 | /// <param name="table">Table with matching name to remove from the collection.</param> | ||
73 | public bool Remove(Table table) => this.collection.Remove(table.Name); | ||
74 | |||
75 | /// <summary> | ||
76 | /// Gets an enumerator over the whole collection. | ||
77 | /// </summary> | ||
78 | /// <returns>Collection enumerator.</returns> | ||
79 | public IEnumerator<Table> GetEnumerator() => this.collection.Values.GetEnumerator(); | ||
80 | |||
81 | /// <summary> | ||
82 | /// Gets an untyped enumerator over the whole collection. | ||
83 | /// </summary> | ||
84 | /// <returns>Untyped collection enumerator.</returns> | ||
85 | System.Collections.IEnumerator System.Collections.IEnumerable.GetEnumerator() => this.collection.Values.GetEnumerator(); | ||
86 | |||
87 | /// <summary> | ||
88 | /// Gets a table by name. | ||
89 | /// </summary> | ||
90 | /// <param name="tableName">Name of table to locate.</param> | ||
91 | public Table this[string tableName] | ||
92 | { | ||
93 | get => this.collection.TryGetValue(tableName, out var table) ? table : null; | ||
94 | set => this.collection[tableName] = value; | ||
95 | } | ||
96 | |||
97 | /// <summary> | ||
98 | /// Tries to find a table by name. | ||
99 | /// </summary> | ||
100 | /// <param name="tableName">Table name to locate.</param> | ||
101 | /// <param name="table">Found table.</param> | ||
102 | /// <returns>True if table with table name was found, otherwise false.</returns> | ||
103 | public bool TryGetTable(string tableName, out Table table) => this.collection.TryGetValue(tableName, out table); | ||
104 | } | ||
105 | } | ||
diff --git a/src/api/wix/WixToolset.Data/WindowsInstaller/TableOperation.cs b/src/api/wix/WixToolset.Data/WindowsInstaller/TableOperation.cs new file mode 100644 index 00000000..ccd0ebca --- /dev/null +++ b/src/api/wix/WixToolset.Data/WindowsInstaller/TableOperation.cs | |||
@@ -0,0 +1,25 @@ | |||
1 | // Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. | ||
2 | |||
3 | namespace WixToolset.Data.WindowsInstaller | ||
4 | { | ||
5 | /// <summary> | ||
6 | /// The table transform operations. | ||
7 | /// </summary> | ||
8 | public enum TableOperation | ||
9 | { | ||
10 | /// <summary> | ||
11 | /// No operation. | ||
12 | /// </summary> | ||
13 | None, | ||
14 | |||
15 | /// <summary> | ||
16 | /// Added table. | ||
17 | /// </summary> | ||
18 | Add, | ||
19 | |||
20 | /// <summary> | ||
21 | /// Dropped table. | ||
22 | /// </summary> | ||
23 | Drop, | ||
24 | } | ||
25 | } | ||
diff --git a/src/api/wix/WixToolset.Data/WindowsInstaller/WindowsInstallerConstants.cs b/src/api/wix/WixToolset.Data/WindowsInstaller/WindowsInstallerConstants.cs new file mode 100644 index 00000000..c60f2c0d --- /dev/null +++ b/src/api/wix/WixToolset.Data/WindowsInstaller/WindowsInstallerConstants.cs | |||
@@ -0,0 +1,259 @@ | |||
1 | // Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. | ||
2 | |||
3 | namespace WixToolset.Data.WindowsInstaller | ||
4 | { | ||
5 | public static class WindowsInstallerConstants | ||
6 | { | ||
7 | // Component.Attributes | ||
8 | public const int MsidbComponentAttributesLocalOnly = 0; | ||
9 | public const int MsidbComponentAttributesSourceOnly = 1; | ||
10 | public const int MsidbComponentAttributesOptional = 2; | ||
11 | public const int MsidbComponentAttributesRegistryKeyPath = 4; | ||
12 | public const int MsidbComponentAttributesSharedDllRefCount = 8; | ||
13 | public const int MsidbComponentAttributesPermanent = 16; | ||
14 | public const int MsidbComponentAttributesODBCDataSource = 32; | ||
15 | public const int MsidbComponentAttributesTransitive = 64; | ||
16 | public const int MsidbComponentAttributesNeverOverwrite = 128; | ||
17 | public const int MsidbComponentAttributes64bit = 256; | ||
18 | public const int MsidbComponentAttributesDisableRegistryReflection = 512; | ||
19 | public const int MsidbComponentAttributesUninstallOnSupersedence = 1024; | ||
20 | public const int MsidbComponentAttributesShared = 2048; | ||
21 | |||
22 | // BBControl.Attributes & Control.Attributes | ||
23 | public const int MsidbControlAttributesVisible = 0x00000001; | ||
24 | public const int MsidbControlAttributesEnabled = 0x00000002; | ||
25 | public const int MsidbControlAttributesSunken = 0x00000004; | ||
26 | public const int MsidbControlAttributesIndirect = 0x00000008; | ||
27 | public const int MsidbControlAttributesInteger = 0x00000010; | ||
28 | public const int MsidbControlAttributesRTLRO = 0x00000020; | ||
29 | public const int MsidbControlAttributesRightAligned = 0x00000040; | ||
30 | public const int MsidbControlAttributesLeftScroll = 0x00000080; | ||
31 | public const int MsidbControlAttributesBiDi = MsidbControlAttributesRTLRO | MsidbControlAttributesRightAligned | MsidbControlAttributesLeftScroll; | ||
32 | |||
33 | // Text controls | ||
34 | public const int MsidbControlAttributesTransparent = 0x00010000; | ||
35 | public const int MsidbControlAttributesNoPrefix = 0x00020000; | ||
36 | public const int MsidbControlAttributesNoWrap = 0x00040000; | ||
37 | public const int MsidbControlAttributesFormatSize = 0x00080000; | ||
38 | public const int MsidbControlAttributesUsersLanguage = 0x00100000; | ||
39 | |||
40 | // Edit controls | ||
41 | public const int MsidbControlAttributesMultiline = 0x00010000; | ||
42 | public const int MsidbControlAttributesPasswordInput = 0x00200000; | ||
43 | |||
44 | // ProgressBar controls | ||
45 | public const int MsidbControlAttributesProgress95 = 0x00010000; | ||
46 | |||
47 | // VolumeSelectCombo and DirectoryCombo controls | ||
48 | public const int MsidbControlAttributesRemovableVolume = 0x00010000; | ||
49 | public const int MsidbControlAttributesFixedVolume = 0x00020000; | ||
50 | public const int MsidbControlAttributesRemoteVolume = 0x00040000; | ||
51 | public const int MsidbControlAttributesCDROMVolume = 0x00080000; | ||
52 | public const int MsidbControlAttributesRAMDiskVolume = 0x00100000; | ||
53 | public const int MsidbControlAttributesFloppyVolume = 0x00200000; | ||
54 | |||
55 | // VolumeCostList controls | ||
56 | public const int MsidbControlShowRollbackCost = 0x00400000; | ||
57 | |||
58 | // ListBox and ComboBox controls | ||
59 | public const int MsidbControlAttributesSorted = 0x00010000; | ||
60 | public const int MsidbControlAttributesComboList = 0x00020000; | ||
61 | |||
62 | // picture button controls | ||
63 | public const int MsidbControlAttributesImageHandle = 0x00010000; | ||
64 | public const int MsidbControlAttributesPushLike = 0x00020000; | ||
65 | public const int MsidbControlAttributesBitmap = 0x00040000; | ||
66 | public const int MsidbControlAttributesIcon = 0x00080000; | ||
67 | public const int MsidbControlAttributesFixedSize = 0x00100000; | ||
68 | public const int MsidbControlAttributesIconSize16 = 0x00200000; | ||
69 | public const int MsidbControlAttributesIconSize32 = 0x00400000; | ||
70 | public const int MsidbControlAttributesIconSize48 = 0x00600000; | ||
71 | public const int MsidbControlAttributesElevationShield = 0x00800000; | ||
72 | |||
73 | // RadioButton controls | ||
74 | public const int MsidbControlAttributesHasBorder = 0x01000000; | ||
75 | |||
76 | // CustomAction.Type | ||
77 | // executable types | ||
78 | public const int MsidbCustomActionTypeDll = 0x00000001; // Target = entry point name | ||
79 | public const int MsidbCustomActionTypeExe = 0x00000002; // Target = command line args | ||
80 | public const int MsidbCustomActionTypeTextData = 0x00000003; // Target = text string to be formatted and set into property | ||
81 | public const int MsidbCustomActionTypeJScript = 0x00000005; // Target = entry point name; null if none to call | ||
82 | public const int MsidbCustomActionTypeVBScript = 0x00000006; // Target = entry point name; null if none to call | ||
83 | public const int MsidbCustomActionTypeInstall = 0x00000007; // Target = property list for nested engine initialization | ||
84 | public const int MsidbCustomActionTypeSourceBits = 0x00000030; | ||
85 | public const int MsidbCustomActionTypeTargetBits = 0x00000007; | ||
86 | public const int MsidbCustomActionTypeReturnBits = 0x000000C0; | ||
87 | public const int MsidbCustomActionTypeExecuteBits = 0x00000700; | ||
88 | |||
89 | // source of code | ||
90 | public const int MsidbCustomActionTypeBinaryData = 0x00000000; // Source = Binary.Name; data stored in stream | ||
91 | public const int MsidbCustomActionTypeSourceFile = 0x00000010; // Source = File.File; file part of installation | ||
92 | public const int MsidbCustomActionTypeDirectory = 0x00000020; // Source = Directory.Directory; folder containing existing file | ||
93 | public const int MsidbCustomActionTypeProperty = 0x00000030; // Source = Property.Property; full path to executable | ||
94 | |||
95 | // return processing; default is syncronous execution; process return code | ||
96 | public const int MsidbCustomActionTypeContinue = 0x00000040; // ignore action return status; continue running | ||
97 | public const int MsidbCustomActionTypeAsync = 0x00000080; // run asynchronously | ||
98 | |||
99 | // execution scheduling flags; default is execute whenever sequenced | ||
100 | public const int MsidbCustomActionTypeFirstSequence = 0x00000100; // skip if UI sequence already run | ||
101 | public const int MsidbCustomActionTypeOncePerProcess = 0x00000200; // skip if UI sequence already run in same process | ||
102 | public const int MsidbCustomActionTypeClientRepeat = 0x00000300; // run on client only if UI already run on client | ||
103 | public const int MsidbCustomActionTypeInScript = 0x00000400; // queue for execution within script | ||
104 | public const int MsidbCustomActionTypeRollback = 0x00000100; // in conjunction with InScript: queue in Rollback script | ||
105 | public const int MsidbCustomActionTypeCommit = 0x00000200; // in conjunction with InScript: run Commit ops from script on success | ||
106 | |||
107 | // security context flag; default to impersonate as user; valid only if InScript | ||
108 | public const int MsidbCustomActionTypeNoImpersonate = 0x00000800; // no impersonation; run in system context | ||
109 | public const int MsidbCustomActionTypeTSAware = 0x00004000; // impersonate for per-machine installs on TS machines | ||
110 | public const int MsidbCustomActionType64BitScript = 0x00001000; // script should run in 64bit process | ||
111 | public const int MsidbCustomActionTypeHideTarget = 0x00002000; // don't record the contents of the Target field in the log file. | ||
112 | |||
113 | public const int MsidbCustomActionTypePatchUninstall = 0x00008000; // run on patch uninstall | ||
114 | |||
115 | // Dialog.Attributes | ||
116 | public const int MsidbDialogAttributesVisible = 0x00000001; | ||
117 | public const int MsidbDialogAttributesModal = 0x00000002; | ||
118 | public const int MsidbDialogAttributesMinimize = 0x00000004; | ||
119 | public const int MsidbDialogAttributesSysModal = 0x00000008; | ||
120 | public const int MsidbDialogAttributesKeepModeless = 0x00000010; | ||
121 | public const int MsidbDialogAttributesTrackDiskSpace = 0x00000020; | ||
122 | public const int MsidbDialogAttributesUseCustomPalette = 0x00000040; | ||
123 | public const int MsidbDialogAttributesRTLRO = 0x00000080; | ||
124 | public const int MsidbDialogAttributesRightAligned = 0x00000100; | ||
125 | public const int MsidbDialogAttributesLeftScroll = 0x00000200; | ||
126 | public const int MsidbDialogAttributesBiDi = MsidbDialogAttributesRTLRO | MsidbDialogAttributesRightAligned | MsidbDialogAttributesLeftScroll; | ||
127 | public const int MsidbDialogAttributesError = 0x00010000; | ||
128 | public const int CommonControlAttributesInvert = MsidbControlAttributesVisible + MsidbControlAttributesEnabled; | ||
129 | public const int DialogAttributesInvert = MsidbDialogAttributesVisible + MsidbDialogAttributesModal + MsidbDialogAttributesMinimize; | ||
130 | |||
131 | // Feature.Attributes | ||
132 | public const int MsidbFeatureAttributesFavorLocal = 0; | ||
133 | public const int MsidbFeatureAttributesFavorSource = 1; | ||
134 | public const int MsidbFeatureAttributesFollowParent = 2; | ||
135 | public const int MsidbFeatureAttributesFavorAdvertise = 4; | ||
136 | public const int MsidbFeatureAttributesDisallowAdvertise = 8; | ||
137 | public const int MsidbFeatureAttributesUIDisallowAbsent = 16; | ||
138 | public const int MsidbFeatureAttributesNoUnsupportedAdvertise = 32; | ||
139 | |||
140 | // File.Attributes | ||
141 | public const int MsidbFileAttributesReadOnly = 1; | ||
142 | public const int MsidbFileAttributesHidden = 2; | ||
143 | public const int MsidbFileAttributesSystem = 4; | ||
144 | public const int MsidbFileAttributesVital = 512; | ||
145 | public const int MsidbFileAttributesChecksum = 1024; | ||
146 | public const int MsidbFileAttributesPatchAdded = 4096; | ||
147 | public const int MsidbFileAttributesNoncompressed = 8192; | ||
148 | public const int MsidbFileAttributesCompressed = 16384; | ||
149 | |||
150 | // IniFile.Action & RemoveIniFile.Action | ||
151 | public const int MsidbIniFileActionAddLine = 0; | ||
152 | public const int MsidbIniFileActionCreateLine = 1; | ||
153 | public const int MsidbIniFileActionRemoveLine = 2; | ||
154 | public const int MsidbIniFileActionAddTag = 3; | ||
155 | public const int MsidbIniFileActionRemoveTag = 4; | ||
156 | |||
157 | // MoveFile.Options | ||
158 | public const int MsidbMoveFileOptionsMove = 1; | ||
159 | |||
160 | // ServiceInstall.Attributes | ||
161 | public const int MsidbServiceInstallOwnProcess = 0x00000010; | ||
162 | public const int MsidbServiceInstallShareProcess = 0x00000020; | ||
163 | public const int MsidbServiceInstallInteractive = 0x00000100; | ||
164 | public const int MsidbServiceInstallAutoStart = 0x00000002; | ||
165 | public const int MsidbServiceInstallDemandStart = 0x00000003; | ||
166 | public const int MsidbServiceInstallDisabled = 0x00000004; | ||
167 | public const int MsidbServiceInstallErrorIgnore = 0x00000000; | ||
168 | public const int MsidbServiceInstallErrorNormal = 0x00000001; | ||
169 | public const int MsidbServiceInstallErrorCritical = 0x00000003; | ||
170 | public const int MsidbServiceInstallErrorControlVital = 0x00008000; | ||
171 | |||
172 | // ServiceConfig.Event | ||
173 | public const int MsidbServiceConfigEventInstall = 0x00000001; | ||
174 | public const int MsidbServiceConfigEventUninstall = 0x00000002; | ||
175 | public const int MsidbServiceConfigEventReinstall = 0x00000004; | ||
176 | |||
177 | // ServiceControl.Attributes | ||
178 | public const int MsidbServiceControlEventStart = 0x00000001; | ||
179 | public const int MsidbServiceControlEventStop = 0x00000002; | ||
180 | public const int MsidbServiceControlEventDelete = 0x00000008; | ||
181 | public const int MsidbServiceControlEventUninstallStart = 0x00000010; | ||
182 | public const int MsidbServiceControlEventUninstallStop = 0x00000020; | ||
183 | public const int MsidbServiceControlEventUninstallDelete = 0x00000080; | ||
184 | |||
185 | // TextStyle.StyleBits | ||
186 | public const int MsidbTextStyleStyleBitsBold = 1; | ||
187 | public const int MsidbTextStyleStyleBitsItalic = 2; | ||
188 | public const int MsidbTextStyleStyleBitsUnderline = 4; | ||
189 | public const int MsidbTextStyleStyleBitsStrike = 8; | ||
190 | |||
191 | // Upgrade.Attributes | ||
192 | public const int MsidbUpgradeAttributesMigrateFeatures = 0x00000001; | ||
193 | public const int MsidbUpgradeAttributesOnlyDetect = 0x00000002; | ||
194 | public const int MsidbUpgradeAttributesIgnoreRemoveFailure = 0x00000004; | ||
195 | public const int MsidbUpgradeAttributesVersionMinInclusive = 0x00000100; | ||
196 | public const int MsidbUpgradeAttributesVersionMaxInclusive = 0x00000200; | ||
197 | public const int MsidbUpgradeAttributesLanguagesExclusive = 0x00000400; | ||
198 | |||
199 | // Registry Hive Roots | ||
200 | public const int MsidbRegistryRootClassesRoot = 0; | ||
201 | public const int MsidbRegistryRootCurrentUser = 1; | ||
202 | public const int MsidbRegistryRootLocalMachine = 2; | ||
203 | public const int MsidbRegistryRootUsers = 3; | ||
204 | |||
205 | // Locator Types | ||
206 | public const int MsidbLocatorTypeDirectory = 0; | ||
207 | public const int MsidbLocatorTypeFileName = 1; | ||
208 | public const int MsidbLocatorTypeRawValue = 2; | ||
209 | public const int MsidbLocatorType64bit = 16; | ||
210 | |||
211 | public const int MsidbClassAttributesRelativePath = 1; | ||
212 | |||
213 | // RemoveFile.InstallMode | ||
214 | public const int MsidbRemoveFileInstallModeOnInstall = 0x00000001; | ||
215 | public const int MsidbRemoveFileInstallModeOnRemove = 0x00000002; | ||
216 | public const int MsidbRemoveFileInstallModeOnBoth = 0x00000003; | ||
217 | |||
218 | // ODBCDataSource.Registration | ||
219 | public const int MsidbODBCDataSourceRegistrationPerMachine = 0; | ||
220 | public const int MsidbODBCDataSourceRegistrationPerUser = 1; | ||
221 | |||
222 | // ModuleConfiguration.Format | ||
223 | public const int MsidbModuleConfigurationFormatText = 0; | ||
224 | public const int MsidbModuleConfigurationFormatKey = 1; | ||
225 | public const int MsidbModuleConfigurationFormatInteger = 2; | ||
226 | public const int MsidbModuleConfigurationFormatBitfield = 3; | ||
227 | |||
228 | // ModuleConfiguration.Attributes | ||
229 | public const int MsidbMsmConfigurableOptionKeyNoOrphan = 1; | ||
230 | public const int MsidbMsmConfigurableOptionNonNullable = 2; | ||
231 | |||
232 | // ' Windows API function ShowWindow constants - used in Shortcut table | ||
233 | public const int SWSHOWNORMAL = 0x00000001; | ||
234 | public const int SWSHOWMAXIMIZED = 0x00000003; | ||
235 | public const int SWSHOWMINNOACTIVE = 0x00000007; | ||
236 | |||
237 | public const int MsidbEmbeddedUI = 0x01; | ||
238 | public const int MsidbEmbeddedHandlesBasic = 0x02; | ||
239 | |||
240 | public const int INSTALLLOGMODE_FATALEXIT = 0x00001; | ||
241 | public const int INSTALLLOGMODE_ERROR = 0x00002; | ||
242 | public const int INSTALLLOGMODE_WARNING = 0x00004; | ||
243 | public const int INSTALLLOGMODE_USER = 0x00008; | ||
244 | public const int INSTALLLOGMODE_INFO = 0x00010; | ||
245 | public const int INSTALLLOGMODE_FILESINUSE = 0x00020; | ||
246 | public const int INSTALLLOGMODE_RESOLVESOURCE = 0x00040; | ||
247 | public const int INSTALLLOGMODE_OUTOFDISKSPACE = 0x00080; | ||
248 | public const int INSTALLLOGMODE_ACTIONSTART = 0x00100; | ||
249 | public const int INSTALLLOGMODE_ACTIONDATA = 0x00200; | ||
250 | public const int INSTALLLOGMODE_PROGRESS = 0x00400; | ||
251 | public const int INSTALLLOGMODE_COMMONDATA = 0x00800; | ||
252 | public const int INSTALLLOGMODE_INITIALIZE = 0x01000; | ||
253 | public const int INSTALLLOGMODE_TERMINATE = 0x02000; | ||
254 | public const int INSTALLLOGMODE_SHOWDIALOG = 0x04000; | ||
255 | public const int INSTALLLOGMODE_RMFILESINUSE = 0x02000000; | ||
256 | public const int INSTALLLOGMODE_INSTALLSTART = 0x04000000; | ||
257 | public const int INSTALLLOGMODE_INSTALLEND = 0x08000000; | ||
258 | } | ||
259 | } | ||
diff --git a/src/api/wix/WixToolset.Data/WindowsInstaller/WindowsInstallerData.cs b/src/api/wix/WixToolset.Data/WindowsInstaller/WindowsInstallerData.cs new file mode 100644 index 00000000..8d69cd08 --- /dev/null +++ b/src/api/wix/WixToolset.Data/WindowsInstaller/WindowsInstallerData.cs | |||
@@ -0,0 +1,323 @@ | |||
1 | // Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. | ||
2 | |||
3 | namespace WixToolset.Data.WindowsInstaller | ||
4 | { | ||
5 | using System; | ||
6 | using System.Collections.Generic; | ||
7 | using System.Globalization; | ||
8 | using System.Linq; | ||
9 | using System.Xml; | ||
10 | |||
11 | /// <summary> | ||
12 | /// Output is generated by the linker. | ||
13 | /// </summary> | ||
14 | public sealed class WindowsInstallerData | ||
15 | { | ||
16 | internal const string XmlNamespaceUri = "http://wixtoolset.org/schemas/v4/windowsinstallerdata"; | ||
17 | internal const string XmlElementName = "windowsInstallerData"; | ||
18 | |||
19 | private static readonly Version CurrentVersion = new Version("4.0.0.0"); | ||
20 | private const string WixOutputStreamName = "wix-wid.xml"; | ||
21 | private static readonly XmlWriterSettings WriterSettings = new XmlWriterSettings | ||
22 | { | ||
23 | CheckCharacters = false, | ||
24 | CloseOutput = false, | ||
25 | OmitXmlDeclaration = true, | ||
26 | }; | ||
27 | |||
28 | /// <summary> | ||
29 | /// Creates a new empty output object. | ||
30 | /// </summary> | ||
31 | /// <param name="sourceLineNumbers">The source line information for the output.</param> | ||
32 | public WindowsInstallerData(SourceLineNumber sourceLineNumbers) | ||
33 | { | ||
34 | this.SourceLineNumbers = sourceLineNumbers; | ||
35 | this.SubStorages = new List<SubStorage>(); | ||
36 | this.Tables = new TableIndexedCollection(); | ||
37 | } | ||
38 | |||
39 | /// <summary> | ||
40 | /// Gets the type of the output. | ||
41 | /// </summary> | ||
42 | /// <value>Type of the output.</value> | ||
43 | public OutputType Type { get; set; } | ||
44 | |||
45 | /// <summary> | ||
46 | /// Gets or sets the codepage for this output. | ||
47 | /// </summary> | ||
48 | /// <value>Codepage of the output.</value> | ||
49 | public int Codepage { get; set; } | ||
50 | |||
51 | /// <summary> | ||
52 | /// Gets the source line information for this output. | ||
53 | /// </summary> | ||
54 | /// <value>The source line information for this output.</value> | ||
55 | public SourceLineNumber SourceLineNumbers { get; private set; } | ||
56 | |||
57 | /// <summary> | ||
58 | /// Gets the substorages in this output. | ||
59 | /// </summary> | ||
60 | /// <value>The substorages in this output.</value> | ||
61 | public ICollection<SubStorage> SubStorages { get; private set; } | ||
62 | |||
63 | /// <summary> | ||
64 | /// Gets the tables contained in this output. | ||
65 | /// </summary> | ||
66 | /// <value>Collection of tables.</value> | ||
67 | public TableIndexedCollection Tables { get; private set; } | ||
68 | |||
69 | /// <summary> | ||
70 | /// Ensure this output contains a particular table. | ||
71 | /// </summary> | ||
72 | /// <param name="tableDefinition">Definition of the table that should exist.</param> | ||
73 | /// <returns>The table in this output.</returns> | ||
74 | public Table EnsureTable(TableDefinition tableDefinition) | ||
75 | { | ||
76 | if (!this.Tables.TryGetTable(tableDefinition.Name, out var table)) | ||
77 | { | ||
78 | table = new Table(tableDefinition); | ||
79 | this.Tables.Add(table); | ||
80 | } | ||
81 | |||
82 | return table; | ||
83 | } | ||
84 | |||
85 | /// <summary> | ||
86 | /// Saves an output to a <c>WixOutput</c> container. | ||
87 | /// </summary> | ||
88 | /// <param name="wixout">Container to save to.</param> | ||
89 | public void Save(WixOutput wixout) | ||
90 | { | ||
91 | using (var writer = XmlWriter.Create(wixout.CreateDataStream(WixOutputStreamName), WriterSettings)) | ||
92 | { | ||
93 | this.Save(writer); | ||
94 | } | ||
95 | } | ||
96 | |||
97 | /// <summary> | ||
98 | /// Saves an output to an <c>XmlWriter</c>. | ||
99 | /// </summary> | ||
100 | /// <param name="writer">XmlWriter to save to.</param> | ||
101 | public void Save(XmlWriter writer) | ||
102 | { | ||
103 | writer.WriteStartDocument(); | ||
104 | this.Write(writer); | ||
105 | writer.WriteEndDocument(); | ||
106 | } | ||
107 | |||
108 | /// <summary> | ||
109 | /// Gets table by name. | ||
110 | /// </summary> | ||
111 | public bool TryGetTable(string tableName, out Table table) => this.Tables.TryGetTable(tableName, out table); | ||
112 | |||
113 | /// <summary> | ||
114 | /// Loads an output from a path on disk. | ||
115 | /// </summary> | ||
116 | /// <param name="path">Path to output file saved on disk.</param> | ||
117 | /// <param name="suppressVersionCheck">Suppresses wix.dll version mismatch check.</param> | ||
118 | /// <returns>Output object.</returns> | ||
119 | public static WindowsInstallerData Load(string path, bool suppressVersionCheck = false) | ||
120 | { | ||
121 | var tableDefinitions = new TableDefinitionCollection(WindowsInstallerTableDefinitions.All); | ||
122 | return WindowsInstallerData.Load(path, tableDefinitions, suppressVersionCheck); | ||
123 | } | ||
124 | |||
125 | /// <summary> | ||
126 | /// Loads an output from a path on disk. | ||
127 | /// </summary> | ||
128 | /// <param name="path">Path to output file saved on disk.</param> | ||
129 | /// <param name="tableDefinitions">Table definitions to use for creating strongly-typed rows.</param> | ||
130 | /// <param name="suppressVersionCheck">Suppresses wix.dll version mismatch check.</param> | ||
131 | /// <returns>Output object.</returns> | ||
132 | public static WindowsInstallerData Load(string path, TableDefinitionCollection tableDefinitions, bool suppressVersionCheck = false) | ||
133 | { | ||
134 | using (var wixOutput = WixOutput.Read(path)) | ||
135 | { | ||
136 | return WindowsInstallerData.Load(wixOutput, tableDefinitions, suppressVersionCheck); | ||
137 | } | ||
138 | } | ||
139 | |||
140 | /// <summary> | ||
141 | /// Loads an output from a WixOutput object. | ||
142 | /// </summary> | ||
143 | /// <param name="wixOutput">WixOutput object.</param> | ||
144 | /// <param name="suppressVersionCheck">Suppresses wix.dll version mismatch check.</param> | ||
145 | /// <returns>Output object.</returns> | ||
146 | public static WindowsInstallerData Load(WixOutput wixOutput, bool suppressVersionCheck = false) | ||
147 | { | ||
148 | var tableDefinitions = new TableDefinitionCollection(WindowsInstallerTableDefinitions.All); | ||
149 | return WindowsInstallerData.Load(wixOutput, tableDefinitions, suppressVersionCheck); | ||
150 | } | ||
151 | |||
152 | /// <summary> | ||
153 | /// Loads an output from a WixOutput object. | ||
154 | /// </summary> | ||
155 | /// <param name="wixOutput">WixOutput object.</param> | ||
156 | /// <param name="tableDefinitions">Table definitions to use for creating strongly-typed rows.</param> | ||
157 | /// <param name="suppressVersionCheck">Suppresses wix.dll version mismatch check.</param> | ||
158 | /// <returns>Output object.</returns> | ||
159 | public static WindowsInstallerData Load(WixOutput wixOutput, TableDefinitionCollection tableDefinitions, bool suppressVersionCheck = false) | ||
160 | { | ||
161 | using (var stream = wixOutput.GetDataStream(WixOutputStreamName)) | ||
162 | using (var reader = XmlReader.Create(stream, null, wixOutput.Uri.AbsoluteUri)) | ||
163 | { | ||
164 | try | ||
165 | { | ||
166 | reader.MoveToContent(); | ||
167 | return WindowsInstallerData.Read(reader, tableDefinitions, suppressVersionCheck); | ||
168 | } | ||
169 | catch (XmlException xe) | ||
170 | { | ||
171 | throw new WixCorruptFileException(wixOutput.Uri.AbsoluteUri, "wixout", xe); | ||
172 | } | ||
173 | } | ||
174 | } | ||
175 | |||
176 | /// <summary> | ||
177 | /// Processes an XmlReader and builds up the output object. | ||
178 | /// </summary> | ||
179 | /// <param name="reader">Reader to get data from.</param> | ||
180 | /// <param name="tableDefinitions">Table definitions to use for creating strongly-typed rows.</param> | ||
181 | /// <param name="suppressVersionCheck">Suppresses wix.dll version mismatch check.</param> | ||
182 | /// <returns>The Output represented by the Xml.</returns> | ||
183 | internal static WindowsInstallerData Read(XmlReader reader, TableDefinitionCollection tableDefinitions, bool suppressVersionCheck) | ||
184 | { | ||
185 | if (!reader.LocalName.Equals(WindowsInstallerData.XmlElementName)) | ||
186 | { | ||
187 | throw new XmlException(); | ||
188 | } | ||
189 | |||
190 | var empty = reader.IsEmptyElement; | ||
191 | var output = new WindowsInstallerData(SourceLineNumber.CreateFromUri(reader.BaseURI)); | ||
192 | Version version = null; | ||
193 | |||
194 | while (reader.MoveToNextAttribute()) | ||
195 | { | ||
196 | switch (reader.LocalName) | ||
197 | { | ||
198 | case "codepage": | ||
199 | output.Codepage = Convert.ToInt32(reader.Value, CultureInfo.InvariantCulture.NumberFormat); | ||
200 | break; | ||
201 | case "type": | ||
202 | switch (reader.Value) | ||
203 | { | ||
204 | case "Bundle": | ||
205 | output.Type = OutputType.Bundle; | ||
206 | break; | ||
207 | case "Module": | ||
208 | output.Type = OutputType.Module; | ||
209 | break; | ||
210 | case "Patch": | ||
211 | output.Type = OutputType.Patch; | ||
212 | break; | ||
213 | case "PatchCreation": | ||
214 | output.Type = OutputType.PatchCreation; | ||
215 | break; | ||
216 | case "Product": | ||
217 | output.Type = OutputType.Product; | ||
218 | break; | ||
219 | case "Transform": | ||
220 | output.Type = OutputType.Transform; | ||
221 | break; | ||
222 | default: | ||
223 | throw new XmlException(); | ||
224 | } | ||
225 | break; | ||
226 | case "version": | ||
227 | version = new Version(reader.Value); | ||
228 | break; | ||
229 | } | ||
230 | } | ||
231 | |||
232 | if (!suppressVersionCheck && null != version && !WindowsInstallerData.CurrentVersion.Equals(version)) | ||
233 | { | ||
234 | throw new WixException(ErrorMessages.VersionMismatch(SourceLineNumber.CreateFromUri(reader.BaseURI), WindowsInstallerData.XmlElementName, version.ToString(), WindowsInstallerData.CurrentVersion.ToString())); | ||
235 | } | ||
236 | |||
237 | // loop through the rest of the xml building up the Output object | ||
238 | TableDefinitionCollection xmlTableDefinitions = null; | ||
239 | var tables = new List<Table>(); | ||
240 | if (!empty) | ||
241 | { | ||
242 | var done = false; | ||
243 | |||
244 | // loop through all the fields in a row | ||
245 | while (!done && reader.Read()) | ||
246 | { | ||
247 | switch (reader.NodeType) | ||
248 | { | ||
249 | case XmlNodeType.Element: | ||
250 | switch (reader.LocalName) | ||
251 | { | ||
252 | case "subStorage": | ||
253 | output.SubStorages.Add(SubStorage.Read(reader, tableDefinitions)); | ||
254 | break; | ||
255 | case "table": | ||
256 | if (null == xmlTableDefinitions) | ||
257 | { | ||
258 | throw new XmlException(); | ||
259 | } | ||
260 | tables.Add(Table.Read(reader, xmlTableDefinitions)); | ||
261 | break; | ||
262 | case "tableDefinitions": | ||
263 | xmlTableDefinitions = TableDefinitionCollection.Read(reader, tableDefinitions); | ||
264 | break; | ||
265 | default: | ||
266 | throw new XmlException(); | ||
267 | } | ||
268 | break; | ||
269 | case XmlNodeType.EndElement: | ||
270 | done = true; | ||
271 | break; | ||
272 | } | ||
273 | } | ||
274 | |||
275 | if (!done) | ||
276 | { | ||
277 | throw new XmlException(); | ||
278 | } | ||
279 | } | ||
280 | |||
281 | output.Tables = new TableIndexedCollection(tables); | ||
282 | return output; | ||
283 | } | ||
284 | |||
285 | /// <summary> | ||
286 | /// Persists an output in an XML format. | ||
287 | /// </summary> | ||
288 | /// <param name="writer">XmlWriter where the Output should persist itself as XML.</param> | ||
289 | internal void Write(XmlWriter writer) | ||
290 | { | ||
291 | writer.WriteStartElement(WindowsInstallerData.XmlElementName, XmlNamespaceUri); | ||
292 | |||
293 | writer.WriteAttributeString("type", this.Type.ToString()); | ||
294 | |||
295 | if (0 != this.Codepage) | ||
296 | { | ||
297 | writer.WriteAttributeString("codepage", this.Codepage.ToString(CultureInfo.InvariantCulture)); | ||
298 | } | ||
299 | |||
300 | writer.WriteAttributeString("version", WindowsInstallerData.CurrentVersion.ToString()); | ||
301 | |||
302 | // Collect all the table definitions and write them. | ||
303 | var tableDefinitions = new TableDefinitionCollection(); | ||
304 | foreach (var table in this.Tables) | ||
305 | { | ||
306 | tableDefinitions.Add(table.Definition); | ||
307 | } | ||
308 | tableDefinitions.Write(writer); | ||
309 | |||
310 | foreach (var table in this.Tables.OrderBy(t => t.Name)) | ||
311 | { | ||
312 | table.Write(writer); | ||
313 | } | ||
314 | |||
315 | foreach (var subStorage in this.SubStorages) | ||
316 | { | ||
317 | subStorage.Write(writer); | ||
318 | } | ||
319 | |||
320 | writer.WriteEndElement(); | ||
321 | } | ||
322 | } | ||
323 | } | ||
diff --git a/src/api/wix/WixToolset.Data/WindowsInstaller/WindowsInstallerStandard.cs b/src/api/wix/WixToolset.Data/WindowsInstaller/WindowsInstallerStandard.cs new file mode 100644 index 00000000..b6930b79 --- /dev/null +++ b/src/api/wix/WixToolset.Data/WindowsInstaller/WindowsInstallerStandard.cs | |||
@@ -0,0 +1,478 @@ | |||
1 | // Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. | ||
2 | |||
3 | namespace WixToolset.Data.WindowsInstaller | ||
4 | { | ||
5 | using System; | ||
6 | using System.Collections.Generic; | ||
7 | using System.Linq; | ||
8 | using WixToolset.Data.Symbols; | ||
9 | |||
10 | public static class WindowsInstallerStandard | ||
11 | { | ||
12 | private static readonly Dictionary<string, WixActionSymbol> standardActionsById; | ||
13 | private static readonly HashSet<string> standardActionNames; | ||
14 | private static readonly Dictionary<string, DirectorySymbol> standardDirectoriesById; | ||
15 | |||
16 | /// <summary> | ||
17 | /// References: | ||
18 | /// Title: Property Reference [Windows Installer]: | ||
19 | /// URL: http://msdn.microsoft.com/library/en-us/msi/setup/property_reference.asp | ||
20 | /// </summary> | ||
21 | private static readonly HashSet<string> standardProperties = new HashSet<string> | ||
22 | { | ||
23 | "~", // REG_MULTI_SZ/NULL marker | ||
24 | "ACTION", | ||
25 | "ADDDEFAULT", | ||
26 | "ADDLOCAL", | ||
27 | "ADDDSOURCE", | ||
28 | "AdminProperties", | ||
29 | "AdminUser", | ||
30 | "ADVERTISE", | ||
31 | "AFTERREBOOT", | ||
32 | "AllowProductCodeMismatches", | ||
33 | "AllowProductVersionMajorMismatches", | ||
34 | "ALLUSERS", | ||
35 | "Alpha", | ||
36 | "ApiPatchingSymbolFlags", | ||
37 | "ARPAUTHORIZEDCDFPREFIX", | ||
38 | "ARPCOMMENTS", | ||
39 | "ARPCONTACT", | ||
40 | "ARPHELPLINK", | ||
41 | "ARPHELPTELEPHONE", | ||
42 | "ARPINSTALLLOCATION", | ||
43 | "ARPNOMODIFY", | ||
44 | "ARPNOREMOVE", | ||
45 | "ARPNOREPAIR", | ||
46 | "ARPPRODUCTIONICON", | ||
47 | "ARPREADME", | ||
48 | "ARPSIZE", | ||
49 | "ARPSYSTEMCOMPONENT", | ||
50 | "ARPULRINFOABOUT", | ||
51 | "ARPURLUPDATEINFO", | ||
52 | "AVAILABLEFREEREG", | ||
53 | "BorderSize", | ||
54 | "BorderTop", | ||
55 | "CaptionHeight", | ||
56 | "CCP_DRIVE", | ||
57 | "ColorBits", | ||
58 | "COMPADDLOCAL", | ||
59 | "COMPADDSOURCE", | ||
60 | "COMPANYNAME", | ||
61 | "ComputerName", | ||
62 | "CostingComplete", | ||
63 | "Date", | ||
64 | "DefaultUIFont", | ||
65 | "DISABLEADVTSHORTCUTS", | ||
66 | "DISABLEMEDIA", | ||
67 | "DISABLEROLLBACK", | ||
68 | "DiskPrompt", | ||
69 | "DontRemoveTempFolderWhenFinished", | ||
70 | "EnableUserControl", | ||
71 | "EXECUTEACTION", | ||
72 | "EXECUTEMODE", | ||
73 | "FASTOEM", | ||
74 | "FILEADDDEFAULT", | ||
75 | "FILEADDLOCAL", | ||
76 | "FILEADDSOURCE", | ||
77 | "IncludeWholeFilesOnly", | ||
78 | "Installed", | ||
79 | "INSTALLLEVEL", | ||
80 | "Intel", | ||
81 | "Intel64", | ||
82 | "IsAdminPackage", | ||
83 | "LeftUnit", | ||
84 | "LIMITUI", | ||
85 | "ListOfPatchGUIDsToReplace", | ||
86 | "ListOfTargetProductCode", | ||
87 | "LOGACTION", | ||
88 | "LogonUser", | ||
89 | "Manufacturer", | ||
90 | "MEDIAPACKAGEPATH", | ||
91 | "MediaSourceDir", | ||
92 | "MinimumRequiredMsiVersion", | ||
93 | "MsiAMD64", | ||
94 | "MSIAPRSETTINGSIDENTIFIER", | ||
95 | "MSICHECKCRCS", | ||
96 | "MSIDISABLERMRESTART", | ||
97 | "MSIENFORCEUPGRADECOMPONENTRULES", | ||
98 | "MSIFASTINSTALL", | ||
99 | "MsiFileToUseToCreatePatchTables", | ||
100 | "MsiHiddenProperties", | ||
101 | "MSIINSTALLPERUSER", | ||
102 | "MSIINSTANCEGUID", | ||
103 | "MsiLogFileLocation", | ||
104 | "MsiLogging", | ||
105 | "MsiNetAssemblySupport", | ||
106 | "MSINEWINSTANCE", | ||
107 | "MSINODISABLEMEDIA", | ||
108 | "MsiNTProductType", | ||
109 | "MsiNTSuiteBackOffice", | ||
110 | "MsiNTSuiteDataCenter", | ||
111 | "MsiNTSuiteEnterprise", | ||
112 | "MsiNTSuiteSmallBusiness", | ||
113 | "MsiNTSuiteSmallBusinessRestricted", | ||
114 | "MsiNTSuiteWebServer", | ||
115 | "MsiNTSuitePersonal", | ||
116 | "MsiPatchRemovalList", | ||
117 | "MSIPATCHREMOVE", | ||
118 | "MSIRESTARTMANAGERCONTROL", | ||
119 | "MsiRestartManagerSessionKey", | ||
120 | "MSIRMSHUTDOWN", | ||
121 | "MsiRunningElevated", | ||
122 | "MsiUIHideCancel", | ||
123 | "MsiUIProgressOnly", | ||
124 | "MsiUISourceResOnly", | ||
125 | "MsiSystemRebootPending", | ||
126 | "MsiWin32AssemblySupport", | ||
127 | "NOCOMPANYNAME", | ||
128 | "NOUSERNAME", | ||
129 | "OLEAdvtSupport", | ||
130 | "OptimizePatchSizeForLargeFiles", | ||
131 | "OriginalDatabase", | ||
132 | "OutOfDiskSpace", | ||
133 | "OutOfNoRbDiskSpace", | ||
134 | "ParentOriginalDatabase", | ||
135 | "ParentProductCode", | ||
136 | "PATCH", | ||
137 | "PATCH_CACHE_DIR", | ||
138 | "PATCH_CACHE_ENABLED", | ||
139 | "PatchGUID", | ||
140 | "PATCHNEWPACKAGECODE", | ||
141 | "PATCHNEWSUMMARYCOMMENTS", | ||
142 | "PATCHNEWSUMMARYSUBJECT", | ||
143 | "PatchOutputPath", | ||
144 | "PatchSourceList", | ||
145 | "PhysicalMemory", | ||
146 | "PIDKEY", | ||
147 | "PIDTemplate", | ||
148 | "Preselected", | ||
149 | "PRIMARYFOLDER", | ||
150 | "PrimaryVolumePath", | ||
151 | "PrimaryVolumeSpaceAvailable", | ||
152 | "PrimaryVolumeSpaceRemaining", | ||
153 | "PrimaryVolumeSpaceRequired", | ||
154 | "Privileged", | ||
155 | "ProductCode", | ||
156 | "ProductID", | ||
157 | "ProductLanguage", | ||
158 | "ProductName", | ||
159 | "ProductState", | ||
160 | "ProductVersion", | ||
161 | "PROMPTROLLBACKCOST", | ||
162 | "REBOOT", | ||
163 | "REBOOTPROMPT", | ||
164 | "RedirectedDllSupport", | ||
165 | "REINSTALL", | ||
166 | "REINSTALLMODE", | ||
167 | "RemoveAdminTS", | ||
168 | "REMOVE", | ||
169 | "ReplacedInUseFiles", | ||
170 | "RestrictedUserControl", | ||
171 | "RESUME", | ||
172 | "RollbackDisabled", | ||
173 | "ROOTDRIVE", | ||
174 | "ScreenX", | ||
175 | "ScreenY", | ||
176 | "SecureCustomProperties", | ||
177 | "ServicePackLevel", | ||
178 | "ServicePackLevelMinor", | ||
179 | "SEQUENCE", | ||
180 | "SharedWindows", | ||
181 | "ShellAdvtSupport", | ||
182 | "SHORTFILENAMES", | ||
183 | "SourceDir", | ||
184 | "SOURCELIST", | ||
185 | "SystemLanguageID", | ||
186 | "TARGETDIR", | ||
187 | "TerminalServer", | ||
188 | "TextHeight", | ||
189 | "Time", | ||
190 | "TRANSFORMS", | ||
191 | "TRANSFORMSATSOURCE", | ||
192 | "TRANSFORMSSECURE", | ||
193 | "TTCSupport", | ||
194 | "UILevel", | ||
195 | "UpdateStarted", | ||
196 | "UpgradeCode", | ||
197 | "UPGRADINGPRODUCTCODE", | ||
198 | "UserLanguageID", | ||
199 | "USERNAME", | ||
200 | "UserSID", | ||
201 | "Version9X", | ||
202 | "VersionDatabase", | ||
203 | "VersionMsi", | ||
204 | "VersionNT", | ||
205 | "VersionNT64", | ||
206 | "VirtualMemory", | ||
207 | "WindowsBuild", | ||
208 | "WindowsVolume", | ||
209 | }; | ||
210 | |||
211 | static WindowsInstallerStandard() | ||
212 | { | ||
213 | var standardActions = new[] | ||
214 | { | ||
215 | new WixActionSymbol(null, new Identifier(AccessModifier.Global, "AdminExecuteSequence/InstallInitialize")) { Action="InstallInitialize", Sequence=1500, SequenceTable=SequenceTable.AdminExecuteSequence, Overridable = true }, | ||
216 | new WixActionSymbol(null, new Identifier(AccessModifier.Global, "AdvertiseExecuteSequence/InstallInitialize")) { Action="InstallInitialize", Sequence=1500, SequenceTable=SequenceTable.AdvertiseExecuteSequence, Overridable = true }, | ||
217 | new WixActionSymbol(null, new Identifier(AccessModifier.Global, "InstallExecuteSequence/InstallInitialize")) { Action="InstallInitialize", Sequence=1500, SequenceTable=SequenceTable.InstallExecuteSequence, Overridable = true }, | ||
218 | |||
219 | new WixActionSymbol(null, new Identifier(AccessModifier.Global, "InstallExecuteSequence/InstallExecute")) { Action="InstallExecute", Sequence=6500, SequenceTable=SequenceTable.InstallExecuteSequence, Overridable = true, Condition="NOT Installed" }, | ||
220 | |||
221 | new WixActionSymbol(null, new Identifier(AccessModifier.Global, "InstallExecuteSequence/InstallExecuteAgain")) { Action="InstallExecuteAgain", Sequence=6550, SequenceTable=SequenceTable.InstallExecuteSequence, Overridable = true, Condition="NOT Installed" }, | ||
222 | |||
223 | new WixActionSymbol(null, new Identifier(AccessModifier.Global, "AdminExecuteSequence/InstallFinalize")) { Action="InstallFinalize", Sequence=6600, SequenceTable=SequenceTable.AdminExecuteSequence, Overridable = true }, | ||
224 | new WixActionSymbol(null, new Identifier(AccessModifier.Global, "AdvertiseExecuteSequence/InstallFinalize")) { Action="InstallFinalize", Sequence=6600, SequenceTable=SequenceTable.AdvertiseExecuteSequence, Overridable = true }, | ||
225 | new WixActionSymbol(null, new Identifier(AccessModifier.Global, "InstallExecuteSequence/InstallFinalize")) { Action="InstallFinalize", Sequence=6600, SequenceTable=SequenceTable.InstallExecuteSequence, Overridable = true }, | ||
226 | |||
227 | new WixActionSymbol(null, new Identifier(AccessModifier.Global, "AdminExecuteSequence/InstallFiles")) { Action="InstallFiles", Sequence=4000, SequenceTable=SequenceTable.AdminExecuteSequence, Overridable = true }, | ||
228 | new WixActionSymbol(null, new Identifier(AccessModifier.Global, "InstallExecuteSequence/InstallFiles")) { Action="InstallFiles", Sequence=4000, SequenceTable=SequenceTable.InstallExecuteSequence, Overridable = true }, | ||
229 | |||
230 | new WixActionSymbol(null, new Identifier(AccessModifier.Global, "AdminExecuteSequence/InstallAdminPackage")) { Action="InstallAdminPackage", Sequence=3900, SequenceTable=SequenceTable.AdminExecuteSequence, Overridable = true }, | ||
231 | |||
232 | new WixActionSymbol(null, new Identifier(AccessModifier.Global, "AdminExecuteSequence/FileCost")) { Action="FileCost", Sequence=900, SequenceTable=SequenceTable.AdminExecuteSequence, Overridable = true }, | ||
233 | new WixActionSymbol(null, new Identifier(AccessModifier.Global, "AdminUISequence/FileCost")) { Action="FileCost", Sequence=900, SequenceTable=SequenceTable.AdminUISequence, Overridable = true }, | ||
234 | new WixActionSymbol(null, new Identifier(AccessModifier.Global, "InstallExecuteSequence/FileCost")) { Action="FileCost", Sequence=900, SequenceTable=SequenceTable.InstallExecuteSequence, Overridable = true }, | ||
235 | new WixActionSymbol(null, new Identifier(AccessModifier.Global, "InstallUISequence/FileCost")) { Action="FileCost", Sequence=900, SequenceTable=SequenceTable.InstallUISequence, Overridable = true }, | ||
236 | |||
237 | new WixActionSymbol(null, new Identifier(AccessModifier.Global, "AdminExecuteSequence/CostInitialize")) { Action="CostInitialize", Sequence=800, SequenceTable=SequenceTable.AdminExecuteSequence, Overridable = true }, | ||
238 | new WixActionSymbol(null, new Identifier(AccessModifier.Global, "AdminUISequence/CostInitialize")) { Action="CostInitialize", Sequence=800, SequenceTable=SequenceTable.AdminUISequence, Overridable = true }, | ||
239 | new WixActionSymbol(null, new Identifier(AccessModifier.Global, "AdvertiseExecuteSequence/CostInitialize")) { Action="CostInitialize", Sequence=800, SequenceTable=SequenceTable.AdvertiseExecuteSequence, Overridable = true }, | ||
240 | new WixActionSymbol(null, new Identifier(AccessModifier.Global, "InstallExecuteSequence/CostInitialize")) { Action="CostInitialize", Sequence=800, SequenceTable=SequenceTable.InstallExecuteSequence, Overridable = true }, | ||
241 | new WixActionSymbol(null, new Identifier(AccessModifier.Global, "InstallUISequence/CostInitialize")) { Action="CostInitialize", Sequence=800, SequenceTable=SequenceTable.InstallUISequence, Overridable = true }, | ||
242 | |||
243 | new WixActionSymbol(null, new Identifier(AccessModifier.Global, "AdminExecuteSequence/CostFinalize")) { Action="CostFinalize", Sequence=1000, SequenceTable=SequenceTable.AdminExecuteSequence, Overridable = true }, | ||
244 | new WixActionSymbol(null, new Identifier(AccessModifier.Global, "AdminUISequence/CostFinalize")) { Action="CostFinalize", Sequence=1000, SequenceTable=SequenceTable.AdminUISequence, Overridable = true }, | ||
245 | new WixActionSymbol(null, new Identifier(AccessModifier.Global, "AdvertiseExecuteSequence/CostFinalize")) { Action="CostFinalize", Sequence=1000, SequenceTable=SequenceTable.AdvertiseExecuteSequence, Overridable = true }, | ||
246 | new WixActionSymbol(null, new Identifier(AccessModifier.Global, "InstallExecuteSequence/CostFinalize")) { Action="CostFinalize", Sequence=1000, SequenceTable=SequenceTable.InstallExecuteSequence, Overridable = true }, | ||
247 | new WixActionSymbol(null, new Identifier(AccessModifier.Global, "InstallUISequence/CostFinalize")) { Action="CostFinalize", Sequence=1000, SequenceTable=SequenceTable.InstallUISequence, Overridable = true }, | ||
248 | |||
249 | new WixActionSymbol(null, new Identifier(AccessModifier.Global, "AdminExecuteSequence/InstallValidate")) { Action="InstallValidate", Sequence=1400, SequenceTable=SequenceTable.AdminExecuteSequence, Overridable = true }, | ||
250 | new WixActionSymbol(null, new Identifier(AccessModifier.Global, "AdvertiseExecuteSequence/InstallValidate")) { Action="InstallValidate", Sequence=1400, SequenceTable=SequenceTable.AdvertiseExecuteSequence, Overridable = true }, | ||
251 | new WixActionSymbol(null, new Identifier(AccessModifier.Global, "InstallExecuteSequence/InstallValidate")) { Action="InstallValidate", Sequence=1400, SequenceTable=SequenceTable.InstallExecuteSequence, Overridable = true }, | ||
252 | |||
253 | new WixActionSymbol(null, new Identifier(AccessModifier.Global, "AdminUISequence/ExecuteAction")) { Action="ExecuteAction", Sequence=1300, SequenceTable=SequenceTable.AdminUISequence, Overridable = true }, | ||
254 | new WixActionSymbol(null, new Identifier(AccessModifier.Global, "InstallUISequence/ExecuteAction")) { Action="ExecuteAction", Sequence=1300, SequenceTable=SequenceTable.InstallUISequence, Overridable = true }, | ||
255 | |||
256 | new WixActionSymbol(null, new Identifier(AccessModifier.Global, "AdvertiseExecuteSequence/CreateShortcuts")) { Action="CreateShortcuts", Sequence=4500, SequenceTable=SequenceTable.AdvertiseExecuteSequence, Overridable = true }, | ||
257 | new WixActionSymbol(null, new Identifier(AccessModifier.Global, "InstallExecuteSequence/CreateShortcuts")) { Action="CreateShortcuts", Sequence=4500, SequenceTable=SequenceTable.InstallExecuteSequence, Overridable = true }, | ||
258 | |||
259 | new WixActionSymbol(null, new Identifier(AccessModifier.Global, "AdvertiseExecuteSequence/MsiPublishAssemblies")) { Action="MsiPublishAssemblies", Sequence=6250, SequenceTable=SequenceTable.AdvertiseExecuteSequence, Overridable = true }, | ||
260 | new WixActionSymbol(null, new Identifier(AccessModifier.Global, "InstallExecuteSequence/MsiPublishAssemblies")) { Action="MsiPublishAssemblies", Sequence=6250, SequenceTable=SequenceTable.InstallExecuteSequence, Overridable = true }, | ||
261 | |||
262 | new WixActionSymbol(null, new Identifier(AccessModifier.Global, "AdvertiseExecuteSequence/PublishComponents")) { Action="PublishComponents", Sequence=6200, SequenceTable=SequenceTable.AdvertiseExecuteSequence, Overridable = true }, | ||
263 | new WixActionSymbol(null, new Identifier(AccessModifier.Global, "InstallExecuteSequence/PublishComponents")) { Action="PublishComponents", Sequence=6200, SequenceTable=SequenceTable.InstallExecuteSequence, Overridable = true }, | ||
264 | |||
265 | new WixActionSymbol(null, new Identifier(AccessModifier.Global, "AdvertiseExecuteSequence/PublishFeatures")) { Action="PublishFeatures", Sequence=6300, SequenceTable=SequenceTable.AdvertiseExecuteSequence, Overridable = true }, | ||
266 | new WixActionSymbol(null, new Identifier(AccessModifier.Global, "InstallExecuteSequence/PublishFeatures")) { Action="PublishFeatures", Sequence=6300, SequenceTable=SequenceTable.InstallExecuteSequence, Overridable = true }, | ||
267 | |||
268 | new WixActionSymbol(null, new Identifier(AccessModifier.Global, "AdvertiseExecuteSequence/PublishProduct")) { Action="PublishProduct", Sequence=6400, SequenceTable=SequenceTable.AdvertiseExecuteSequence, Overridable = true }, | ||
269 | new WixActionSymbol(null, new Identifier(AccessModifier.Global, "InstallExecuteSequence/PublishProduct")) { Action="PublishProduct", Sequence=6400, SequenceTable=SequenceTable.InstallExecuteSequence, Overridable = true }, | ||
270 | |||
271 | new WixActionSymbol(null, new Identifier(AccessModifier.Global, "AdvertiseExecuteSequence/RegisterClassInfo")) { Action="RegisterClassInfo", Sequence=4600, SequenceTable=SequenceTable.AdvertiseExecuteSequence, Overridable = true }, | ||
272 | new WixActionSymbol(null, new Identifier(AccessModifier.Global, "InstallExecuteSequence/RegisterClassInfo")) { Action="RegisterClassInfo", Sequence=4600, SequenceTable=SequenceTable.InstallExecuteSequence, Overridable = true }, | ||
273 | |||
274 | new WixActionSymbol(null, new Identifier(AccessModifier.Global, "AdvertiseExecuteSequence/RegisterExtensionInfo")) { Action="RegisterExtensionInfo", Sequence=4700, SequenceTable=SequenceTable.AdvertiseExecuteSequence, Overridable = true }, | ||
275 | new WixActionSymbol(null, new Identifier(AccessModifier.Global, "InstallExecuteSequence/RegisterExtensionInfo")) { Action="RegisterExtensionInfo", Sequence=4700, SequenceTable=SequenceTable.InstallExecuteSequence, Overridable = true }, | ||
276 | |||
277 | new WixActionSymbol(null, new Identifier(AccessModifier.Global, "AdvertiseExecuteSequence/RegisterMIMEInfo")) { Action="RegisterMIMEInfo", Sequence=4900, SequenceTable=SequenceTable.AdvertiseExecuteSequence, Overridable = true }, | ||
278 | new WixActionSymbol(null, new Identifier(AccessModifier.Global, "InstallExecuteSequence/RegisterMIMEInfo")) { Action="RegisterMIMEInfo", Sequence=4900, SequenceTable=SequenceTable.InstallExecuteSequence, Overridable = true }, | ||
279 | |||
280 | new WixActionSymbol(null, new Identifier(AccessModifier.Global, "AdvertiseExecuteSequence/RegisterProgIdInfo")) { Action="RegisterProgIdInfo", Sequence=4800, SequenceTable=SequenceTable.AdvertiseExecuteSequence, Overridable = true }, | ||
281 | new WixActionSymbol(null, new Identifier(AccessModifier.Global, "InstallExecuteSequence/RegisterProgIdInfo")) { Action="RegisterProgIdInfo", Sequence=4800, SequenceTable=SequenceTable.InstallExecuteSequence, Overridable = true }, | ||
282 | |||
283 | new WixActionSymbol(null, new Identifier(AccessModifier.Global, "InstallExecuteSequence/AllocateRegistrySpace")) { Action="AllocateRegistrySpace", Sequence=1550, SequenceTable=SequenceTable.InstallExecuteSequence, Overridable = true }, | ||
284 | |||
285 | new WixActionSymbol(null, new Identifier(AccessModifier.Global, "InstallUISequence/AppSearch")) { Action="AppSearch", Sequence=50, SequenceTable=SequenceTable.InstallUISequence, Overridable = true }, | ||
286 | new WixActionSymbol(null, new Identifier(AccessModifier.Global, "InstallExecuteSequence/AppSearch")) { Action="AppSearch", Sequence=50, SequenceTable=SequenceTable.InstallExecuteSequence, Overridable = true }, | ||
287 | |||
288 | new WixActionSymbol(null, new Identifier(AccessModifier.Global, "InstallExecuteSequence/BindImage")) { Action="BindImage", Sequence=4300, SequenceTable=SequenceTable.InstallExecuteSequence, Overridable = true }, | ||
289 | new WixActionSymbol(null, new Identifier(AccessModifier.Global, "InstallExecuteSequence/CreateFolders")) { Action="CreateFolders", Sequence=3700, SequenceTable=SequenceTable.InstallExecuteSequence, Overridable = true }, | ||
290 | new WixActionSymbol(null, new Identifier(AccessModifier.Global, "InstallExecuteSequence/DuplicateFiles")) { Action="DuplicateFiles", Sequence=4210, SequenceTable=SequenceTable.InstallExecuteSequence, Overridable = true }, | ||
291 | |||
292 | new WixActionSymbol(null, new Identifier(AccessModifier.Global, "InstallUISequence/FindRelatedProducts")) { Action="FindRelatedProducts", Sequence=25, SequenceTable=SequenceTable.InstallUISequence, Overridable = true }, | ||
293 | new WixActionSymbol(null, new Identifier(AccessModifier.Global, "InstallExecuteSequence/FindRelatedProducts")) { Action="FindRelatedProducts", Sequence=25, SequenceTable=SequenceTable.InstallExecuteSequence, Overridable = true }, | ||
294 | |||
295 | new WixActionSymbol(null, new Identifier(AccessModifier.Global, "InstallExecuteSequence/InstallODBC")) { Action="InstallODBC", Sequence=5400, SequenceTable=SequenceTable.InstallExecuteSequence, Overridable = true }, | ||
296 | |||
297 | new WixActionSymbol(null, new Identifier(AccessModifier.Global, "InstallExecuteSequence/InstallServices")) { Action="InstallServices", Sequence=5800, SequenceTable=SequenceTable.InstallExecuteSequence, Overridable = true, Condition="VersionNT" }, | ||
298 | new WixActionSymbol(null, new Identifier(AccessModifier.Global, "InstallExecuteSequence/MsiConfigureServices")) { Action="MsiConfigureServices", Sequence=5850, SequenceTable=SequenceTable.InstallExecuteSequence, Overridable = true, Condition="VersionNT>=600" }, | ||
299 | |||
300 | new WixActionSymbol(null, new Identifier(AccessModifier.Global, "InstallUISequence/IsolateComponents")) { Action="IsolateComponents", Sequence=950, SequenceTable=SequenceTable.InstallUISequence, Overridable = true }, | ||
301 | new WixActionSymbol(null, new Identifier(AccessModifier.Global, "InstallExecuteSequence/IsolateComponents")) { Action="IsolateComponents", Sequence=950, SequenceTable=SequenceTable.InstallExecuteSequence, Overridable = true }, | ||
302 | |||
303 | new WixActionSymbol(null, new Identifier(AccessModifier.Global, "AdminUISequence/LaunchConditions")) { Action="LaunchConditions", Sequence=100, SequenceTable=SequenceTable.AdminUISequence, Overridable = true }, | ||
304 | new WixActionSymbol(null, new Identifier(AccessModifier.Global, "AdminExecuteSequence/LaunchConditions")) { Action="LaunchConditions", Sequence=100, SequenceTable=SequenceTable.AdminExecuteSequence, Overridable = true }, | ||
305 | new WixActionSymbol(null, new Identifier(AccessModifier.Global, "InstallUISequence/LaunchConditions")) { Action="LaunchConditions", Sequence=100, SequenceTable=SequenceTable.InstallUISequence, Overridable = true }, | ||
306 | new WixActionSymbol(null, new Identifier(AccessModifier.Global, "InstallExecuteSequence/LaunchConditions")) { Action="LaunchConditions", Sequence=100, SequenceTable=SequenceTable.InstallExecuteSequence, Overridable = true }, | ||
307 | |||
308 | new WixActionSymbol(null, new Identifier(AccessModifier.Global, "InstallUISequence/MigrateFeatureStates")) { Action="MigrateFeatureStates", Sequence=1200, SequenceTable=SequenceTable.InstallUISequence, Overridable = true }, | ||
309 | new WixActionSymbol(null, new Identifier(AccessModifier.Global, "InstallExecuteSequence/MigrateFeatureStates")) { Action="MigrateFeatureStates", Sequence=1200, SequenceTable=SequenceTable.InstallExecuteSequence, Overridable = true }, | ||
310 | |||
311 | new WixActionSymbol(null, new Identifier(AccessModifier.Global, "InstallExecuteSequence/MoveFiles")) { Action="MoveFiles", Sequence=3800, SequenceTable=SequenceTable.InstallExecuteSequence, Overridable = true }, | ||
312 | |||
313 | new WixActionSymbol(null, new Identifier(AccessModifier.Global, "AdminExecuteSequence/PatchFiles")) { Action="PatchFiles", Sequence=4090, SequenceTable=SequenceTable.AdminExecuteSequence, Overridable = true }, | ||
314 | new WixActionSymbol(null, new Identifier(AccessModifier.Global, "InstallExecuteSequence/PatchFiles")) { Action="PatchFiles", Sequence=4090, SequenceTable=SequenceTable.InstallExecuteSequence, Overridable = true }, | ||
315 | |||
316 | new WixActionSymbol(null, new Identifier(AccessModifier.Global, "InstallExecuteSequence/ProcessComponents")) { Action="ProcessComponents", Sequence=1600, SequenceTable=SequenceTable.InstallExecuteSequence, Overridable = true }, | ||
317 | |||
318 | new WixActionSymbol(null, new Identifier(AccessModifier.Global, "InstallExecuteSequence/RegisterComPlus")) { Action="RegisterComPlus", Sequence=5700, SequenceTable=SequenceTable.InstallExecuteSequence, Overridable = true }, | ||
319 | new WixActionSymbol(null, new Identifier(AccessModifier.Global, "InstallExecuteSequence/RegisterFonts")) { Action="RegisterFonts", Sequence=5300, SequenceTable=SequenceTable.InstallExecuteSequence, Overridable = true }, | ||
320 | new WixActionSymbol(null, new Identifier(AccessModifier.Global, "InstallExecuteSequence/RegisterProduct")) { Action="RegisterProduct", Sequence=6100, SequenceTable=SequenceTable.InstallExecuteSequence, Overridable = true }, | ||
321 | new WixActionSymbol(null, new Identifier(AccessModifier.Global, "InstallExecuteSequence/RegisterTypeLibraries")) { Action="RegisterTypeLibraries", Sequence=5500, SequenceTable=SequenceTable.InstallExecuteSequence, Overridable = true }, | ||
322 | new WixActionSymbol(null, new Identifier(AccessModifier.Global, "InstallExecuteSequence/RegisterUser")) { Action="RegisterUser", Sequence=6000, SequenceTable=SequenceTable.InstallExecuteSequence, Overridable = true }, | ||
323 | |||
324 | new WixActionSymbol(null, new Identifier(AccessModifier.Global, "InstallExecuteSequence/RemoveDuplicateFiles")) { Action="RemoveDuplicateFiles", Sequence=3400, SequenceTable=SequenceTable.InstallExecuteSequence, Overridable = true }, | ||
325 | new WixActionSymbol(null, new Identifier(AccessModifier.Global, "InstallExecuteSequence/RemoveEnvironmentStrings")) { Action="RemoveEnvironmentStrings", Sequence=3300, SequenceTable=SequenceTable.InstallExecuteSequence, Overridable = true }, | ||
326 | new WixActionSymbol(null, new Identifier(AccessModifier.Global, "InstallExecuteSequence/RemoveFiles")) { Action="RemoveFiles", Sequence=3500, SequenceTable=SequenceTable.InstallExecuteSequence, Overridable = true }, | ||
327 | new WixActionSymbol(null, new Identifier(AccessModifier.Global, "InstallExecuteSequence/RemoveFolders")) { Action="RemoveFolders", Sequence=3600, SequenceTable=SequenceTable.InstallExecuteSequence, Overridable = true }, | ||
328 | new WixActionSymbol(null, new Identifier(AccessModifier.Global, "InstallExecuteSequence/RemoveIniValues")) { Action="RemoveIniValues", Sequence=3100, SequenceTable=SequenceTable.InstallExecuteSequence, Overridable = true }, | ||
329 | new WixActionSymbol(null, new Identifier(AccessModifier.Global, "InstallExecuteSequence/RemoveODBC")) { Action="RemoveODBC", Sequence=2400, SequenceTable=SequenceTable.InstallExecuteSequence, Overridable = true }, | ||
330 | new WixActionSymbol(null, new Identifier(AccessModifier.Global, "InstallExecuteSequence/RemoveRegistryValues")) { Action="RemoveRegistryValues", Sequence=2600, SequenceTable=SequenceTable.InstallExecuteSequence, Overridable = true }, | ||
331 | new WixActionSymbol(null, new Identifier(AccessModifier.Global, "InstallExecuteSequence/RemoveShortcuts")) { Action="RemoveShortcuts", Sequence=3200, SequenceTable=SequenceTable.InstallExecuteSequence, Overridable = true }, | ||
332 | |||
333 | new WixActionSymbol(null, new Identifier(AccessModifier.Global, "InstallExecuteSequence/SelfRegModules")) { Action="SelfRegModules", Sequence=5600, SequenceTable=SequenceTable.InstallExecuteSequence, Overridable = true }, | ||
334 | new WixActionSymbol(null, new Identifier(AccessModifier.Global, "InstallExecuteSequence/SelfUnregModules")) { Action="SelfUnregModules", Sequence=2200, SequenceTable=SequenceTable.InstallExecuteSequence, Overridable = true }, | ||
335 | new WixActionSymbol(null, new Identifier(AccessModifier.Global, "InstallExecuteSequence/SetODBCFolders")) { Action="SetODBCFolders", Sequence=1100, SequenceTable=SequenceTable.InstallExecuteSequence, Overridable = true }, | ||
336 | |||
337 | new WixActionSymbol(null, new Identifier(AccessModifier.Global, "InstallExecuteSequence/CCPSearch")) { Action="CCPSearch", Sequence=500, SequenceTable=SequenceTable.InstallExecuteSequence, Overridable = true, Condition="NOT Installed" }, | ||
338 | new WixActionSymbol(null, new Identifier(AccessModifier.Global, "InstallUISequence/CCPSearch")) { Action="CCPSearch", Sequence=500, SequenceTable=SequenceTable.InstallUISequence, Overridable = true, Condition="NOT Installed" }, | ||
339 | |||
340 | new WixActionSymbol(null, new Identifier(AccessModifier.Global, "InstallExecuteSequence/DeleteServices")) { Action="DeleteServices", Sequence=2000, SequenceTable=SequenceTable.InstallExecuteSequence, Overridable = true, Condition="VersionNT" }, | ||
341 | |||
342 | new WixActionSymbol(null, new Identifier(AccessModifier.Global, "InstallExecuteSequence/RMCCPSearch")) { Action="RMCCPSearch", Sequence=600, SequenceTable=SequenceTable.InstallExecuteSequence, Overridable = true, Condition="NOT Installed" }, | ||
343 | new WixActionSymbol(null, new Identifier(AccessModifier.Global, "InstallUISequence/RMCCPSearch")) { Action="RMCCPSearch", Sequence=600, SequenceTable=SequenceTable.InstallUISequence, Overridable = true, Condition="NOT Installed" }, | ||
344 | |||
345 | new WixActionSymbol(null, new Identifier(AccessModifier.Global, "InstallExecuteSequence/StartServices")) { Action="StartServices", Sequence=5900, SequenceTable=SequenceTable.InstallExecuteSequence, Overridable = true, Condition="VersionNT" }, | ||
346 | new WixActionSymbol(null, new Identifier(AccessModifier.Global, "InstallExecuteSequence/StopServices")) { Action="StopServices", Sequence=1900, SequenceTable=SequenceTable.InstallExecuteSequence, Overridable = true, Condition="VersionNT" }, | ||
347 | |||
348 | new WixActionSymbol(null, new Identifier(AccessModifier.Global, "InstallExecuteSequence/MsiUnpublishAssemblies")) { Action="MsiUnpublishAssemblies", Sequence=1750, SequenceTable=SequenceTable.InstallExecuteSequence, Overridable = true }, | ||
349 | new WixActionSymbol(null, new Identifier(AccessModifier.Global, "InstallExecuteSequence/UnpublishComponents")) { Action="UnpublishComponents", Sequence=1700, SequenceTable=SequenceTable.InstallExecuteSequence, Overridable = true }, | ||
350 | new WixActionSymbol(null, new Identifier(AccessModifier.Global, "InstallExecuteSequence/UnpublishFeatures")) { Action="UnpublishFeatures", Sequence=1800, SequenceTable=SequenceTable.InstallExecuteSequence, Overridable = true }, | ||
351 | new WixActionSymbol(null, new Identifier(AccessModifier.Global, "InstallExecuteSequence/UnregisterClassInfo")) { Action="UnregisterClassInfo", Sequence=2700, SequenceTable=SequenceTable.InstallExecuteSequence, Overridable = true }, | ||
352 | new WixActionSymbol(null, new Identifier(AccessModifier.Global, "InstallExecuteSequence/UnregisterComPlus")) { Action="UnregisterComPlus", Sequence=2100, SequenceTable=SequenceTable.InstallExecuteSequence, Overridable = true }, | ||
353 | new WixActionSymbol(null, new Identifier(AccessModifier.Global, "InstallExecuteSequence/UnregisterExtensionInfo")) { Action="UnregisterExtensionInfo", Sequence=2800, SequenceTable=SequenceTable.InstallExecuteSequence, Overridable = true }, | ||
354 | new WixActionSymbol(null, new Identifier(AccessModifier.Global, "InstallExecuteSequence/UnregisterFonts")) { Action="UnregisterFonts", Sequence=2500, SequenceTable=SequenceTable.InstallExecuteSequence, Overridable = true }, | ||
355 | new WixActionSymbol(null, new Identifier(AccessModifier.Global, "InstallExecuteSequence/UnregisterMIMEInfo")) { Action="UnregisterMIMEInfo", Sequence=3000, SequenceTable=SequenceTable.InstallExecuteSequence, Overridable = true }, | ||
356 | new WixActionSymbol(null, new Identifier(AccessModifier.Global, "InstallExecuteSequence/UnregisterProgIdInfo")) { Action="UnregisterProgIdInfo", Sequence=2900, SequenceTable=SequenceTable.InstallExecuteSequence, Overridable = true }, | ||
357 | new WixActionSymbol(null, new Identifier(AccessModifier.Global, "InstallExecuteSequence/UnregisterTypeLibraries")) { Action="UnregisterTypeLibraries", Sequence=2300, SequenceTable=SequenceTable.InstallExecuteSequence, Overridable = true }, | ||
358 | |||
359 | new WixActionSymbol(null, new Identifier(AccessModifier.Global, "InstallUISequence/ValidateProductID")) { Action="ValidateProductID", Sequence=700, SequenceTable=SequenceTable.InstallUISequence, Overridable = true }, | ||
360 | new WixActionSymbol(null, new Identifier(AccessModifier.Global, "InstallExecuteSequence/ValidateProductID")) { Action="ValidateProductID", Sequence=700, SequenceTable=SequenceTable.InstallExecuteSequence, Overridable = true }, | ||
361 | |||
362 | new WixActionSymbol(null, new Identifier(AccessModifier.Global, "InstallExecuteSequence/WriteEnvironmentStrings")) { Action="WriteEnvironmentStrings", Sequence=5200, SequenceTable=SequenceTable.InstallExecuteSequence, Overridable = true }, | ||
363 | new WixActionSymbol(null, new Identifier(AccessModifier.Global, "InstallExecuteSequence/WriteIniValues")) { Action="WriteIniValues", Sequence=5100, SequenceTable=SequenceTable.InstallExecuteSequence, Overridable = true }, | ||
364 | new WixActionSymbol(null, new Identifier(AccessModifier.Global, "InstallExecuteSequence/WriteRegistryValues")) { Action="WriteRegistryValues", Sequence=5000, SequenceTable=SequenceTable.InstallExecuteSequence, Overridable = true }, | ||
365 | }; | ||
366 | |||
367 | var standardDirectories = new[] | ||
368 | { | ||
369 | new DirectorySymbol(null, new Identifier(AccessModifier.Global, "TARGETDIR")) { Name = "SourceDir" }, | ||
370 | new DirectorySymbol(null, new Identifier(AccessModifier.Global, "AdminToolsFolder")) { Name = "Admin" }, | ||
371 | new DirectorySymbol(null, new Identifier(AccessModifier.Global, "AppDataFolder")) { Name = "AppData" }, | ||
372 | new DirectorySymbol(null, new Identifier(AccessModifier.Global, "CommonAppDataFolder")) { Name = "CommApp" }, | ||
373 | new DirectorySymbol(null, new Identifier(AccessModifier.Global, "CommonFilesFolder")) { Name = "CFiles" }, | ||
374 | new DirectorySymbol(null, new Identifier(AccessModifier.Global, "CommonFiles64Folder")) { Name = "CFiles64" }, | ||
375 | new DirectorySymbol(null, new Identifier(AccessModifier.Global, "CommonFiles6432Folder")) { Name = "." }, | ||
376 | new DirectorySymbol(null, new Identifier(AccessModifier.Global, "DesktopFolder")) { Name = "Desktop" }, | ||
377 | new DirectorySymbol(null, new Identifier(AccessModifier.Global, "FavoritesFolder")) { Name = "Favs" }, | ||
378 | new DirectorySymbol(null, new Identifier(AccessModifier.Global, "FontsFolder")) { Name = "Fonts" }, | ||
379 | new DirectorySymbol(null, new Identifier(AccessModifier.Global, "LocalAppDataFolder")) { Name = "LocalApp" }, | ||
380 | new DirectorySymbol(null, new Identifier(AccessModifier.Global, "MyPicturesFolder")) { Name = "Pictures" }, | ||
381 | new DirectorySymbol(null, new Identifier(AccessModifier.Global, "NetHoodFolder")) { Name = "NetHood" }, | ||
382 | new DirectorySymbol(null, new Identifier(AccessModifier.Global, "PersonalFolder")) { Name = "Personal" }, | ||
383 | new DirectorySymbol(null, new Identifier(AccessModifier.Global, "PrintHoodFolder")) { Name = "Printers" }, | ||
384 | new DirectorySymbol(null, new Identifier(AccessModifier.Global, "ProgramFilesFolder")) { Name = "PFiles" }, | ||
385 | new DirectorySymbol(null, new Identifier(AccessModifier.Global, "ProgramFiles64Folder")) { Name = "PFiles64" }, | ||
386 | new DirectorySymbol(null, new Identifier(AccessModifier.Global, "ProgramFiles6432Folder")) { Name = "." }, | ||
387 | new DirectorySymbol(null, new Identifier(AccessModifier.Global, "ProgramMenuFolder")) { Name = "PMenu" }, | ||
388 | new DirectorySymbol(null, new Identifier(AccessModifier.Global, "RecentFolder")) { Name = "Recent" }, | ||
389 | new DirectorySymbol(null, new Identifier(AccessModifier.Global, "SendToFolder")) { Name = "SendTo" }, | ||
390 | new DirectorySymbol(null, new Identifier(AccessModifier.Global, "StartMenuFolder")) { Name = "StrtMenu" }, | ||
391 | new DirectorySymbol(null, new Identifier(AccessModifier.Global, "StartupFolder")) { Name = "StartUp" }, | ||
392 | new DirectorySymbol(null, new Identifier(AccessModifier.Global, "SystemFolder")) { Name = "System" }, | ||
393 | new DirectorySymbol(null, new Identifier(AccessModifier.Global, "System16Folder")) { Name = "System16" }, | ||
394 | new DirectorySymbol(null, new Identifier(AccessModifier.Global, "System64Folder")) { Name = "System64" }, | ||
395 | new DirectorySymbol(null, new Identifier(AccessModifier.Global, "System6432Folder")) { Name = "." }, | ||
396 | new DirectorySymbol(null, new Identifier(AccessModifier.Global, "TempFolder")) { Name = "Temp" }, | ||
397 | new DirectorySymbol(null, new Identifier(AccessModifier.Global, "TemplateFolder")) { Name = "Template" }, | ||
398 | new DirectorySymbol(null, new Identifier(AccessModifier.Global, "WindowsFolder")) { Name = "Windows" }, | ||
399 | new DirectorySymbol(null, new Identifier(AccessModifier.Global, "WindowsVolume")) { Name = "WinVol" }, | ||
400 | }; | ||
401 | |||
402 | standardActionNames = new HashSet<string>(standardActions.Select(a => a.Action)); | ||
403 | standardActionsById = standardActions.ToDictionary(a => a.Id.Id); | ||
404 | standardDirectoriesById = standardDirectories.ToDictionary(d => d.Id.Id); | ||
405 | } | ||
406 | |||
407 | /// <summary> | ||
408 | /// Find out if an action is a standard action. | ||
409 | /// </summary> | ||
410 | /// <param name="actionName">Name of the action.</param> | ||
411 | /// <returns>true if the action is standard, false otherwise.</returns> | ||
412 | public static bool IsStandardAction(string actionName) => standardActionNames.Contains(actionName); | ||
413 | |||
414 | /// <summary> | ||
415 | /// Standard actions. | ||
416 | /// </summary> | ||
417 | public static IReadOnlyCollection<WixActionSymbol> StandardActions() => standardActionsById.Values; | ||
418 | |||
419 | /// <summary> | ||
420 | /// Standard directories. | ||
421 | /// </summary> | ||
422 | public static IReadOnlyCollection<DirectorySymbol> StandardDirectories() => standardDirectoriesById.Values; | ||
423 | |||
424 | /// <summary> | ||
425 | /// Gets the platform specific directory id for a directory. Most directories are not platform | ||
426 | /// specific and return themselves. | ||
427 | /// </summary> | ||
428 | /// <param name="directoryId">Directory id to get platform specific.</param> | ||
429 | /// <param name="platform">Platform to use.</param> | ||
430 | /// <returns>Platform specific directory id.</returns> | ||
431 | public static string GetPlatformSpecificDirectoryId(string directoryId, Platform platform) | ||
432 | { | ||
433 | switch (directoryId) | ||
434 | { | ||
435 | case "CommonFiles6432Folder": | ||
436 | return platform == Platform.X86 ? "CommonFilesFolder" : "CommonFiles64Folder"; | ||
437 | |||
438 | case "ProgramFiles6432Folder": | ||
439 | return platform == Platform.X86 ? "ProgramFilesFolder" : "ProgramFiles64Folder"; | ||
440 | |||
441 | case "System6432Folder": | ||
442 | return platform == Platform.X86 ? "SystemFolder" : "System64Folder"; | ||
443 | |||
444 | default: | ||
445 | return directoryId; | ||
446 | } | ||
447 | } | ||
448 | |||
449 | /// <summary> | ||
450 | /// Find out if a directory is a standard directory. | ||
451 | /// </summary> | ||
452 | /// <param name="directoryId">Name of the directory.</param> | ||
453 | /// <returns>true if the directory is standard, false otherwise.</returns> | ||
454 | public static bool IsStandardDirectory(string directoryId) => standardDirectoriesById.ContainsKey(directoryId); | ||
455 | |||
456 | /// <summary> | ||
457 | /// Find out if a property is a standard property. | ||
458 | /// </summary> | ||
459 | /// <param name="propertyName">Name of the property.</param> | ||
460 | /// <returns>true if a property is standard, false otherwise.</returns> | ||
461 | public static bool IsStandardProperty(string propertyName) => standardProperties.Contains(propertyName); | ||
462 | |||
463 | /// <summary> | ||
464 | /// Try to get standard action by id. | ||
465 | /// </summary> | ||
466 | public static bool TryGetStandardAction(string id, out WixActionSymbol standardAction) => standardActionsById.TryGetValue(id, out standardAction); | ||
467 | |||
468 | /// <summary> | ||
469 | /// Try to get standard action by sequence and action name. | ||
470 | /// </summary> | ||
471 | public static bool TryGetStandardAction(string sequenceName, string actioname, out WixActionSymbol standardAction) => standardActionsById.TryGetValue(String.Concat(sequenceName, "/", actioname), out standardAction); | ||
472 | |||
473 | /// <summary> | ||
474 | /// Try to get standard directory symbol by id. | ||
475 | /// </summary> | ||
476 | public static bool TryGetStandardDirectory(string directoryId, out DirectorySymbol symbol) => standardDirectoriesById.TryGetValue(directoryId, out symbol); | ||
477 | } | ||
478 | } | ||
diff --git a/src/api/wix/WixToolset.Data/WindowsInstaller/WindowsInstallerTableDefinitions.cs b/src/api/wix/WixToolset.Data/WindowsInstaller/WindowsInstallerTableDefinitions.cs new file mode 100644 index 00000000..a64593ec --- /dev/null +++ b/src/api/wix/WixToolset.Data/WindowsInstaller/WindowsInstallerTableDefinitions.cs | |||
@@ -0,0 +1,1907 @@ | |||
1 | // Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. | ||
2 | |||
3 | namespace WixToolset.Data.WindowsInstaller | ||
4 | { | ||
5 | using WixToolset.Data.WindowsInstaller.Rows; | ||
6 | |||
7 | public static class WindowsInstallerTableDefinitions | ||
8 | { | ||
9 | public static readonly TableDefinition ActionText = new TableDefinition( | ||
10 | "ActionText", | ||
11 | SymbolDefinitions.ActionText, | ||
12 | new[] | ||
13 | { | ||
14 | new ColumnDefinition("Action", ColumnType.String, 72, primaryKey: true, nullable: false, ColumnCategory.Identifier, description: "Name of action to be described.", modularizeType: ColumnModularizeType.Column), | ||
15 | new ColumnDefinition("Description", ColumnType.Localized, 0, primaryKey: false, nullable: true, ColumnCategory.Text, description: "Localized description displayed in progress dialog and log when action is executing."), | ||
16 | new ColumnDefinition("Template", ColumnType.Localized, 0, primaryKey: false, nullable: true, ColumnCategory.Template, description: "Optional localized format template used to format action data records for display during action execution.", modularizeType: ColumnModularizeType.Property), | ||
17 | }, | ||
18 | symbolIdIsPrimaryKey: false | ||
19 | ); | ||
20 | |||
21 | public static readonly TableDefinition AdminExecuteSequence = new TableDefinition( | ||
22 | "AdminExecuteSequence", | ||
23 | null, | ||
24 | new[] | ||
25 | { | ||
26 | new ColumnDefinition("Action", ColumnType.String, 72, primaryKey: true, nullable: false, ColumnCategory.Identifier, description: "Name of action to invoke, either in the engine or the handler DLL."), | ||
27 | new ColumnDefinition("Condition", ColumnType.String, 255, primaryKey: false, nullable: true, ColumnCategory.Condition, description: "Optional expression which skips the action if evaluates to expFalse.If the expression syntax is invalid, the engine will terminate, returning iesBadActionData.", forceLocalizable: true), | ||
28 | new ColumnDefinition("Sequence", ColumnType.Number, 2, primaryKey: false, nullable: true, ColumnCategory.Unknown, minValue: -4, maxValue: 32767, description: "Number that determines the sort order in which the actions are to be executed. Leave blank to suppress action."), | ||
29 | }, | ||
30 | symbolIdIsPrimaryKey: true | ||
31 | ); | ||
32 | |||
33 | public static readonly TableDefinition Condition = new TableDefinition( | ||
34 | "Condition", | ||
35 | SymbolDefinitions.Condition, | ||
36 | new[] | ||
37 | { | ||
38 | new ColumnDefinition("Feature_", ColumnType.String, 38, primaryKey: true, nullable: false, ColumnCategory.Identifier, keyTable: "Feature", keyColumn: 1, description: "Reference to a Feature entry in Feature table."), | ||
39 | new ColumnDefinition("Level", ColumnType.Number, 2, primaryKey: true, nullable: false, ColumnCategory.Unknown, minValue: 0, maxValue: 32767, description: "New selection Level to set in Feature table if Condition evaluates to TRUE."), | ||
40 | new ColumnDefinition("Condition", ColumnType.String, 255, primaryKey: false, nullable: true, ColumnCategory.Condition, description: "Expression evaluated to determine if Level in the Feature table is to change.", forceLocalizable: true), | ||
41 | }, | ||
42 | symbolIdIsPrimaryKey: false | ||
43 | ); | ||
44 | |||
45 | public static readonly TableDefinition AdminUISequence = new TableDefinition( | ||
46 | "AdminUISequence", | ||
47 | null, | ||
48 | new[] | ||
49 | { | ||
50 | new ColumnDefinition("Action", ColumnType.String, 72, primaryKey: true, nullable: false, ColumnCategory.Identifier, description: "Name of action to invoke, either in the engine or the handler DLL."), | ||
51 | new ColumnDefinition("Condition", ColumnType.String, 255, primaryKey: false, nullable: true, ColumnCategory.Condition, description: "Optional expression which skips the action if evaluates to expFalse.If the expression syntax is invalid, the engine will terminate, returning iesBadActionData.", forceLocalizable: true), | ||
52 | new ColumnDefinition("Sequence", ColumnType.Number, 2, primaryKey: false, nullable: true, ColumnCategory.Unknown, minValue: -4, maxValue: 32767, description: "Number that determines the sort order in which the actions are to be executed. Leave blank to suppress action."), | ||
53 | }, | ||
54 | symbolIdIsPrimaryKey: true | ||
55 | ); | ||
56 | |||
57 | public static readonly TableDefinition AdvtExecuteSequence = new TableDefinition( | ||
58 | "AdvtExecuteSequence", | ||
59 | null, | ||
60 | new[] | ||
61 | { | ||
62 | new ColumnDefinition("Action", ColumnType.String, 72, primaryKey: true, nullable: false, ColumnCategory.Identifier, description: "Name of action to invoke, either in the engine or the handler DLL."), | ||
63 | new ColumnDefinition("Condition", ColumnType.String, 255, primaryKey: false, nullable: true, ColumnCategory.Condition, description: "Optional expression which skips the action if evaluates to expFalse.If the expression syntax is invalid, the engine will terminate, returning iesBadActionData.", forceLocalizable: true), | ||
64 | new ColumnDefinition("Sequence", ColumnType.Number, 2, primaryKey: false, nullable: true, ColumnCategory.Unknown, minValue: -4, maxValue: 32767, description: "Number that determines the sort order in which the actions are to be executed. Leave blank to suppress action."), | ||
65 | }, | ||
66 | symbolIdIsPrimaryKey: true | ||
67 | ); | ||
68 | |||
69 | public static readonly TableDefinition AdvtUISequence = new TableDefinition( | ||
70 | "AdvtUISequence", | ||
71 | null, | ||
72 | new[] | ||
73 | { | ||
74 | new ColumnDefinition("Action", ColumnType.String, 72, primaryKey: true, nullable: false, ColumnCategory.Identifier, description: "Name of action to invoke, either in the engine or the handler DLL."), | ||
75 | new ColumnDefinition("Condition", ColumnType.String, 255, primaryKey: false, nullable: true, ColumnCategory.Condition, description: "Optional expression which skips the action if evaluates to expFalse.If the expression syntax is invalid, the engine will terminate, returning iesBadActionData.", forceLocalizable: true), | ||
76 | new ColumnDefinition("Sequence", ColumnType.Number, 2, primaryKey: false, nullable: true, ColumnCategory.Unknown, minValue: -4, maxValue: 32767, description: "Number that determines the sort order in which the actions are to be executed. Leave blank to suppress action."), | ||
77 | }, | ||
78 | symbolIdIsPrimaryKey: true | ||
79 | ); | ||
80 | |||
81 | public static readonly TableDefinition AppId = new TableDefinition( | ||
82 | "AppId", | ||
83 | SymbolDefinitions.AppId, | ||
84 | new[] | ||
85 | { | ||
86 | new ColumnDefinition("AppId", ColumnType.String, 38, primaryKey: true, nullable: false, ColumnCategory.Guid), | ||
87 | new ColumnDefinition("RemoteServerName", ColumnType.String, 255, primaryKey: false, nullable: true, ColumnCategory.Formatted, modularizeType: ColumnModularizeType.Property), | ||
88 | new ColumnDefinition("LocalService", ColumnType.String, 255, primaryKey: false, nullable: true, ColumnCategory.Text), | ||
89 | new ColumnDefinition("ServiceParameters", ColumnType.String, 255, primaryKey: false, nullable: true, ColumnCategory.Text), | ||
90 | new ColumnDefinition("DllSurrogate", ColumnType.String, 255, primaryKey: false, nullable: true, ColumnCategory.Text), | ||
91 | new ColumnDefinition("ActivateAtStorage", ColumnType.Number, 2, primaryKey: false, nullable: true, ColumnCategory.Unknown, minValue: 0, maxValue: 1), | ||
92 | new ColumnDefinition("RunAsInteractiveUser", ColumnType.Number, 2, primaryKey: false, nullable: true, ColumnCategory.Unknown, minValue: 0, maxValue: 1), | ||
93 | }, | ||
94 | symbolIdIsPrimaryKey: false | ||
95 | ); | ||
96 | |||
97 | public static readonly TableDefinition AppSearch = new TableDefinition( | ||
98 | "AppSearch", | ||
99 | SymbolDefinitions.AppSearch, | ||
100 | new[] | ||
101 | { | ||
102 | new ColumnDefinition("Property", ColumnType.String, 72, primaryKey: true, nullable: false, ColumnCategory.Identifier, description: "The property associated with a Signature", modularizeType: ColumnModularizeType.Column), | ||
103 | new ColumnDefinition("Signature_", ColumnType.String, 72, primaryKey: true, nullable: false, ColumnCategory.Identifier, keyTable: "Signature;RegLocator;IniLocator;DrLocator;CompLocator", keyColumn: 1, description: "The Signature_ represents a unique file signature and is also the foreign key in the Signature, RegLocator, IniLocator, CompLocator and the DrLocator tables.", modularizeType: ColumnModularizeType.Column), | ||
104 | }, | ||
105 | symbolIdIsPrimaryKey: false | ||
106 | ); | ||
107 | |||
108 | public static readonly TableDefinition Property = new TableDefinition( | ||
109 | "Property", | ||
110 | SymbolDefinitions.Property, | ||
111 | new[] | ||
112 | { | ||
113 | new ColumnDefinition("Property", ColumnType.String, 72, primaryKey: true, nullable: false, ColumnCategory.Identifier, description: "Name of property, uppercase if settable by launcher or loader.", modularizeType: ColumnModularizeType.Column), | ||
114 | new ColumnDefinition("Value", ColumnType.Localized, 0, primaryKey: false, nullable: false, ColumnCategory.Text, description: "String value for property. Never null or empty."), | ||
115 | }, | ||
116 | strongRowType: typeof(PropertyRow), | ||
117 | symbolIdIsPrimaryKey: true | ||
118 | ); | ||
119 | |||
120 | public static readonly TableDefinition BBControl = new TableDefinition( | ||
121 | "BBControl", | ||
122 | SymbolDefinitions.BBControl, | ||
123 | new[] | ||
124 | { | ||
125 | new ColumnDefinition("Billboard_", ColumnType.String, 50, primaryKey: true, nullable: false, ColumnCategory.Identifier, keyTable: "Billboard", keyColumn: 1, description: "External key to the Billboard table, name of the billboard.", modularizeType: ColumnModularizeType.Column), | ||
126 | new ColumnDefinition("BBControl", ColumnType.String, 50, primaryKey: true, nullable: false, ColumnCategory.Identifier, description: "Name of the control. This name must be unique within a billboard, but can repeat on different billboard."), | ||
127 | new ColumnDefinition("Type", ColumnType.String, 50, primaryKey: false, nullable: false, ColumnCategory.Identifier, description: "The type of the control."), | ||
128 | new ColumnDefinition("X", ColumnType.Number, 2, primaryKey: false, nullable: false, ColumnCategory.Unknown, minValue: 0, maxValue: 32767, description: "Horizontal coordinate of the upper left corner of the bounding rectangle of the control.", forceLocalizable: true), | ||
129 | new ColumnDefinition("Y", ColumnType.Number, 2, primaryKey: false, nullable: false, ColumnCategory.Unknown, minValue: 0, maxValue: 32767, description: "Vertical coordinate of the upper left corner of the bounding rectangle of the control.", forceLocalizable: true), | ||
130 | new ColumnDefinition("Width", ColumnType.Number, 2, primaryKey: false, nullable: false, ColumnCategory.Unknown, minValue: 0, maxValue: 32767, description: "Width of the bounding rectangle of the control.", forceLocalizable: true), | ||
131 | new ColumnDefinition("Height", ColumnType.Number, 2, primaryKey: false, nullable: false, ColumnCategory.Unknown, minValue: 0, maxValue: 32767, description: "Height of the bounding rectangle of the control.", forceLocalizable: true), | ||
132 | new ColumnDefinition("Attributes", ColumnType.Number, 4, primaryKey: false, nullable: true, ColumnCategory.Unknown, minValue: 0, maxValue: 2147483647, description: "A 32-bit word that specifies the attribute flags to be applied to this control."), | ||
133 | new ColumnDefinition("Text", ColumnType.Localized, 50, primaryKey: false, nullable: true, ColumnCategory.Text, description: "A string used to set the initial text contained within a control (if appropriate)."), | ||
134 | }, | ||
135 | strongRowType: typeof(BBControlRow), | ||
136 | symbolIdIsPrimaryKey: false | ||
137 | ); | ||
138 | |||
139 | public static readonly TableDefinition Billboard = new TableDefinition( | ||
140 | "Billboard", | ||
141 | SymbolDefinitions.Billboard, | ||
142 | new[] | ||
143 | { | ||
144 | new ColumnDefinition("Billboard", ColumnType.String, 50, primaryKey: true, nullable: false, ColumnCategory.Identifier, description: "Name of the billboard.", modularizeType: ColumnModularizeType.Column), | ||
145 | new ColumnDefinition("Feature_", ColumnType.String, 38, primaryKey: false, nullable: false, ColumnCategory.Identifier, keyTable: "Feature", keyColumn: 1, description: "An external key to the Feature Table. The billboard is shown only if this feature is being installed."), | ||
146 | new ColumnDefinition("Action", ColumnType.String, 50, primaryKey: false, nullable: true, ColumnCategory.Identifier, description: "The name of an action. The billboard is displayed during the progress messages received from this action."), | ||
147 | new ColumnDefinition("Ordering", ColumnType.Number, 2, primaryKey: false, nullable: true, ColumnCategory.Unknown, minValue: 0, maxValue: 32767, description: "A positive integer. If there is more than one billboard corresponding to an action they will be shown in the order defined by this column."), | ||
148 | }, | ||
149 | symbolIdIsPrimaryKey: true | ||
150 | ); | ||
151 | |||
152 | public static readonly TableDefinition Feature = new TableDefinition( | ||
153 | "Feature", | ||
154 | SymbolDefinitions.Feature, | ||
155 | new[] | ||
156 | { | ||
157 | new ColumnDefinition("Feature", ColumnType.String, 38, primaryKey: true, nullable: false, ColumnCategory.Identifier, description: "Primary key used to identify a particular feature record."), | ||
158 | new ColumnDefinition("Feature_Parent", ColumnType.String, 38, primaryKey: false, nullable: true, ColumnCategory.Identifier, keyTable: "Feature", keyColumn: 1, description: "Optional key of a parent record in the same table. If the parent is not selected, then the record will not be installed. Null indicates a root item."), | ||
159 | new ColumnDefinition("Title", ColumnType.Localized, 64, primaryKey: false, nullable: true, ColumnCategory.Text, description: "Short text identifying a visible feature item."), | ||
160 | new ColumnDefinition("Description", ColumnType.Localized, 255, primaryKey: false, nullable: true, ColumnCategory.Text, description: "Longer descriptive text describing a visible feature item."), | ||
161 | new ColumnDefinition("Display", ColumnType.Number, 2, primaryKey: false, nullable: true, ColumnCategory.Unknown, minValue: 0, maxValue: 32767, description: "Numeric sort order, used to force a specific display ordering."), | ||
162 | new ColumnDefinition("Level", ColumnType.Number, 2, primaryKey: false, nullable: false, ColumnCategory.Unknown, minValue: 0, maxValue: 32767, description: "The install level at which record will be initially selected. An install level of 0 will disable an item and prevent its display."), | ||
163 | new ColumnDefinition("Directory_", ColumnType.String, 72, primaryKey: false, nullable: true, ColumnCategory.UpperCase, keyTable: "Directory", keyColumn: 1, description: "The name of the Directory that can be configured by the UI. A non-null value will enable the browse button.", modularizeType: ColumnModularizeType.Column), | ||
164 | new ColumnDefinition("Attributes", ColumnType.Number, 2, primaryKey: false, nullable: false, ColumnCategory.Unknown, possibilities: "0;1;2;4;5;6;8;9;10;16;17;18;20;21;22;24;25;26;32;33;34;36;37;38;48;49;50;52;53;54", description: "Feature attributes"), | ||
165 | }, | ||
166 | symbolIdIsPrimaryKey: true | ||
167 | ); | ||
168 | |||
169 | public static readonly TableDefinition Binary = new TableDefinition( | ||
170 | "Binary", | ||
171 | SymbolDefinitions.Binary, | ||
172 | new[] | ||
173 | { | ||
174 | new ColumnDefinition("Name", ColumnType.String, 72, primaryKey: true, nullable: false, ColumnCategory.Identifier, description: "Unique key identifying the binary data.", modularizeType: ColumnModularizeType.Column), | ||
175 | new ColumnDefinition("Data", ColumnType.Object, 0, primaryKey: false, nullable: false, ColumnCategory.Binary, description: "The unformatted binary data."), | ||
176 | }, | ||
177 | symbolIdIsPrimaryKey: true | ||
178 | ); | ||
179 | |||
180 | public static readonly TableDefinition BindImage = new TableDefinition( | ||
181 | "BindImage", | ||
182 | null, | ||
183 | new[] | ||
184 | { | ||
185 | new ColumnDefinition("File_", ColumnType.String, 72, primaryKey: true, nullable: false, ColumnCategory.Identifier, keyTable: "File", keyColumn: 1, description: "The index into the File table. This must be an executable file.", modularizeType: ColumnModularizeType.Column), | ||
186 | new ColumnDefinition("Path", ColumnType.String, 255, primaryKey: false, nullable: true, ColumnCategory.Paths, description: "A list of ; delimited paths that represent the paths to be searched for the import DLLS. The list is usually a list of properties each enclosed within square brackets [] .", modularizeType: ColumnModularizeType.Property), | ||
187 | }, | ||
188 | symbolIdIsPrimaryKey: false | ||
189 | ); | ||
190 | |||
191 | public static readonly TableDefinition File = new TableDefinition( | ||
192 | "File", | ||
193 | SymbolDefinitions.File, | ||
194 | new[] | ||
195 | { | ||
196 | new ColumnDefinition("File", ColumnType.String, 72, primaryKey: true, nullable: false, ColumnCategory.Identifier, description: "Primary key, non-localized token, must match identifier in cabinet. For uncompressed files, this field is ignored.", modularizeType: ColumnModularizeType.Column), | ||
197 | new ColumnDefinition("Component_", ColumnType.String, 72, primaryKey: false, nullable: false, ColumnCategory.Identifier, keyTable: "Component", keyColumn: 1, description: "Foreign key referencing Component that controls the file.", modularizeType: ColumnModularizeType.Column), | ||
198 | new ColumnDefinition("FileName", ColumnType.Localized, 255, primaryKey: false, nullable: false, ColumnCategory.Filename, description: "File name used for installation, may be localized. This may contain a \"short name|long name\" pair."), | ||
199 | new ColumnDefinition("FileSize", ColumnType.Number, 4, primaryKey: false, nullable: false, ColumnCategory.Unknown, minValue: 0, maxValue: 2147483647, description: "Size of file in bytes (long integer)."), | ||
200 | new ColumnDefinition("Version", ColumnType.String, 72, primaryKey: false, nullable: true, ColumnCategory.Version, keyTable: "File", keyColumn: 1, description: "Version string for versioned files; Blank for unversioned files.", modularizeType: ColumnModularizeType.CompanionFile), | ||
201 | new ColumnDefinition("Language", ColumnType.String, 20, primaryKey: false, nullable: true, ColumnCategory.Language, description: "List of decimal language Ids, comma-separated if more than one."), | ||
202 | new ColumnDefinition("Attributes", ColumnType.Number, 2, primaryKey: false, nullable: true, ColumnCategory.Unknown, minValue: 0, maxValue: 32767, description: "Integer containing bit flags representing file attributes (with the decimal value of each bit position in parentheses)"), | ||
203 | new ColumnDefinition("Sequence", ColumnType.Number, 4, primaryKey: false, nullable: false, ColumnCategory.Unknown, minValue: 1, maxValue: 2147483647, description: "Sequence with respect to the media images; order must track cabinet order."), | ||
204 | new ColumnDefinition("DiskId", ColumnType.Number, 4, primaryKey: false, nullable: false, ColumnCategory.Unknown, minValue: 1, maxValue: 32767, description: "Disk identifier for the file.", unreal: true), | ||
205 | new ColumnDefinition("Source", ColumnType.Object, 0, primaryKey: false, nullable: false, ColumnCategory.Binary, description: "Path to source of file.", unreal: true), | ||
206 | }, | ||
207 | strongRowType: typeof(FileRow), | ||
208 | symbolIdIsPrimaryKey: true | ||
209 | ); | ||
210 | |||
211 | public static readonly TableDefinition CCPSearch = new TableDefinition( | ||
212 | "CCPSearch", | ||
213 | SymbolDefinitions.CCPSearch, | ||
214 | new[] | ||
215 | { | ||
216 | new ColumnDefinition("Signature_", ColumnType.String, 72, primaryKey: true, nullable: false, ColumnCategory.Identifier, keyTable: "Signature;RegLocator;IniLocator;DrLocator;CompLocator", keyColumn: 1, description: "The Signature_ represents a unique file signature and is also the foreign key in the Signature, RegLocator, IniLocator, CompLocator and the DrLocator tables."), | ||
217 | }, | ||
218 | symbolIdIsPrimaryKey: true | ||
219 | ); | ||
220 | |||
221 | public static readonly TableDefinition CheckBox = new TableDefinition( | ||
222 | "CheckBox", | ||
223 | SymbolDefinitions.CheckBox, | ||
224 | new[] | ||
225 | { | ||
226 | new ColumnDefinition("Property", ColumnType.String, 72, primaryKey: true, nullable: false, ColumnCategory.Identifier, description: "A named property to be tied to the item.", modularizeType: ColumnModularizeType.Column), | ||
227 | new ColumnDefinition("Value", ColumnType.String, 64, primaryKey: false, nullable: true, ColumnCategory.Formatted, description: "The value string associated with the item.", modularizeType: ColumnModularizeType.Property), | ||
228 | }, | ||
229 | symbolIdIsPrimaryKey: false | ||
230 | ); | ||
231 | |||
232 | public static readonly TableDefinition Class = new TableDefinition( | ||
233 | "Class", | ||
234 | SymbolDefinitions.Class, | ||
235 | new[] | ||
236 | { | ||
237 | new ColumnDefinition("CLSID", ColumnType.String, 38, primaryKey: true, nullable: false, ColumnCategory.Guid, description: "The CLSID of an OLE factory."), | ||
238 | new ColumnDefinition("Context", ColumnType.String, 32, primaryKey: true, nullable: false, ColumnCategory.Identifier, description: "The numeric server context for this server. CLSCTX_xxxx"), | ||
239 | new ColumnDefinition("Component_", ColumnType.String, 72, primaryKey: true, nullable: false, ColumnCategory.Identifier, keyTable: "Component", keyColumn: 1, description: "Required foreign key into the Component Table, specifying the component for which to return a path when called through LocateComponent.", modularizeType: ColumnModularizeType.Column), | ||
240 | new ColumnDefinition("ProgId_Default", ColumnType.String, 255, primaryKey: false, nullable: true, ColumnCategory.Text, keyTable: "ProgId", keyColumn: 1, description: "Optional ProgId associated with this CLSID."), | ||
241 | new ColumnDefinition("Description", ColumnType.Localized, 255, primaryKey: false, nullable: true, ColumnCategory.Text, description: "Localized description for the Class."), | ||
242 | new ColumnDefinition("AppId_", ColumnType.String, 38, primaryKey: false, nullable: true, ColumnCategory.Guid, keyTable: "AppId", keyColumn: 1, description: "Optional AppID containing DCOM information for associated application (string GUID)."), | ||
243 | new ColumnDefinition("FileTypeMask", ColumnType.String, 255, primaryKey: false, nullable: true, ColumnCategory.Text, description: "Optional string containing information for the HKCRthis CLSID) key. If multiple patterns exist, they must be delimited by a semicolon, and numeric subkeys will be generated: 0,1,2..."), | ||
244 | new ColumnDefinition("Icon_", ColumnType.String, 72, primaryKey: false, nullable: true, ColumnCategory.Identifier, keyTable: "Icon", keyColumn: 1, description: "Optional foreign key into the Icon Table, specifying the icon file associated with this CLSID. Will be written under the DefaultIcon key.", modularizeType: ColumnModularizeType.Icon), | ||
245 | new ColumnDefinition("IconIndex", ColumnType.Number, 2, primaryKey: false, nullable: true, ColumnCategory.Unknown, minValue: -32767, maxValue: 32767, description: "Optional icon index."), | ||
246 | new ColumnDefinition("DefInprocHandler", ColumnType.String, 32, primaryKey: false, nullable: true, ColumnCategory.Filename, possibilities: "1;2;3", description: "Optional default inproc handler. Only optionally provided if Context=CLSCTX_LOCAL_SERVER. Typically \"ole32.dll\" or \"mapi32.dll\""), | ||
247 | new ColumnDefinition("Argument", ColumnType.String, 255, primaryKey: false, nullable: true, ColumnCategory.Formatted, description: "optional argument for LocalServers."), | ||
248 | new ColumnDefinition("Feature_", ColumnType.String, 38, primaryKey: false, nullable: false, ColumnCategory.Identifier, keyTable: "Feature", keyColumn: 1, description: "Required foreign key into the Feature Table, specifying the feature to validate or install in order for the CLSID factory to be operational."), | ||
249 | new ColumnDefinition("Attributes", ColumnType.Number, 2, primaryKey: false, nullable: true, ColumnCategory.Unknown, maxValue: 32767, description: "Class registration attributes."), | ||
250 | }, | ||
251 | symbolIdIsPrimaryKey: false | ||
252 | ); | ||
253 | |||
254 | public static readonly TableDefinition Component = new TableDefinition( | ||
255 | "Component", | ||
256 | SymbolDefinitions.Component, | ||
257 | new[] | ||
258 | { | ||
259 | new ColumnDefinition("Component", ColumnType.String, 72, primaryKey: true, nullable: false, ColumnCategory.Identifier, description: "Primary key used to identify a particular component record.", modularizeType: ColumnModularizeType.Column), | ||
260 | new ColumnDefinition("ComponentId", ColumnType.String, 38, primaryKey: false, nullable: true, ColumnCategory.Guid, description: "A string GUID unique to this component, version, and language."), | ||
261 | new ColumnDefinition("Directory_", ColumnType.String, 72, primaryKey: false, nullable: false, ColumnCategory.Identifier, keyTable: "Directory", keyColumn: 1, description: "Required key of a Directory table record. This is actually a property name whose value contains the actual path, set either by the AppSearch action or with the default setting obtained from the Directory table.", modularizeType: ColumnModularizeType.Column), | ||
262 | new ColumnDefinition("Attributes", ColumnType.Number, 2, primaryKey: false, nullable: false, ColumnCategory.Unknown, description: "Remote execution option, one of irsEnum"), | ||
263 | new ColumnDefinition("Condition", ColumnType.String, 255, primaryKey: false, nullable: true, ColumnCategory.Condition, description: "A conditional statement that will disable this component if the specified condition evaluates to the 'True' state. If a component is disabled, it will not be installed, regardless of the 'Action' state associated with the component.", modularizeType: ColumnModularizeType.Condition, forceLocalizable: true), | ||
264 | new ColumnDefinition("KeyPath", ColumnType.String, 72, primaryKey: false, nullable: true, ColumnCategory.Identifier, keyTable: "File;Registry;ODBCDataSource", keyColumn: 1, description: "Either the primary key into the File table, Registry table, or ODBCDataSource table. This extract path is stored when the component is installed, and is used to detect the presence of the component and to return the path to it.", modularizeType: ColumnModularizeType.Column), | ||
265 | }, | ||
266 | strongRowType: typeof(ComponentRow), | ||
267 | symbolIdIsPrimaryKey: true | ||
268 | ); | ||
269 | |||
270 | public static readonly TableDefinition Icon = new TableDefinition( | ||
271 | "Icon", | ||
272 | SymbolDefinitions.Icon, | ||
273 | new[] | ||
274 | { | ||
275 | new ColumnDefinition("Name", ColumnType.String, 72, primaryKey: true, nullable: false, ColumnCategory.Identifier, description: "Primary key. Name of the icon file.", modularizeType: ColumnModularizeType.Icon), | ||
276 | new ColumnDefinition("Data", ColumnType.Object, 0, primaryKey: false, nullable: false, ColumnCategory.Binary, description: "Binary stream. The binary icon data in PE (.DLL or .EXE) or icon (.ICO) format."), | ||
277 | }, | ||
278 | symbolIdIsPrimaryKey: true | ||
279 | ); | ||
280 | |||
281 | public static readonly TableDefinition ProgId = new TableDefinition( | ||
282 | "ProgId", | ||
283 | SymbolDefinitions.ProgId, | ||
284 | new[] | ||
285 | { | ||
286 | new ColumnDefinition("ProgId", ColumnType.String, 255, primaryKey: true, nullable: false, ColumnCategory.Text, description: "The Program Identifier. Primary key."), | ||
287 | new ColumnDefinition("ProgId_Parent", ColumnType.String, 255, primaryKey: false, nullable: true, ColumnCategory.Text, keyTable: "ProgId", keyColumn: 1, description: "The Parent Program Identifier. If specified, the ProgId column becomes a version independent prog id."), | ||
288 | new ColumnDefinition("Class_", ColumnType.String, 38, primaryKey: false, nullable: true, ColumnCategory.Guid, keyTable: "Class", keyColumn: 1, description: "The CLSID of an OLE factory corresponding to the ProgId."), | ||
289 | new ColumnDefinition("Description", ColumnType.Localized, 255, primaryKey: false, nullable: true, ColumnCategory.Text, description: "Localized description for the Program identifier."), | ||
290 | new ColumnDefinition("Icon_", ColumnType.String, 72, primaryKey: false, nullable: true, ColumnCategory.Identifier, keyTable: "Icon", keyColumn: 1, description: "Optional foreign key into the Icon Table, specifying the icon file associated with this ProgId. Will be written under the DefaultIcon key.", modularizeType: ColumnModularizeType.Icon), | ||
291 | new ColumnDefinition("IconIndex", ColumnType.Number, 2, primaryKey: false, nullable: true, ColumnCategory.Unknown, minValue: -32767, maxValue: 32767, description: "Optional icon index."), | ||
292 | }, | ||
293 | symbolIdIsPrimaryKey: false | ||
294 | ); | ||
295 | |||
296 | public static readonly TableDefinition ComboBox = new TableDefinition( | ||
297 | "ComboBox", | ||
298 | SymbolDefinitions.ComboBox, | ||
299 | new[] | ||
300 | { | ||
301 | new ColumnDefinition("Property", ColumnType.String, 72, primaryKey: true, nullable: false, ColumnCategory.Identifier, description: "A named property to be tied to this item. All the items tied to the same property become part of the same combobox.", modularizeType: ColumnModularizeType.Column), | ||
302 | new ColumnDefinition("Order", ColumnType.Number, 2, primaryKey: true, nullable: false, ColumnCategory.Unknown, minValue: 1, maxValue: 32767, description: "A positive integer used to determine the ordering of the items within one list. The integers do not have to be consecutive."), | ||
303 | new ColumnDefinition("Value", ColumnType.String, 64, primaryKey: false, nullable: false, ColumnCategory.Formatted, description: "The value string associated with this item. Selecting the line will set the associated property to this value.", modularizeType: ColumnModularizeType.Property, forceLocalizable: true), | ||
304 | new ColumnDefinition("Text", ColumnType.Localized, 64, primaryKey: false, nullable: true, ColumnCategory.Formatted, description: "The visible text to be assigned to the item. Optional. If this entry or the entire column is missing, the text is the same as the value.", modularizeType: ColumnModularizeType.Property), | ||
305 | }, | ||
306 | symbolIdIsPrimaryKey: false | ||
307 | ); | ||
308 | |||
309 | public static readonly TableDefinition CompLocator = new TableDefinition( | ||
310 | "CompLocator", | ||
311 | SymbolDefinitions.CompLocator, | ||
312 | new[] | ||
313 | { | ||
314 | new ColumnDefinition("Signature_", ColumnType.String, 72, primaryKey: true, nullable: false, ColumnCategory.Identifier, description: "The table key. The Signature_ represents a unique file signature and is also the foreign key in the Signature table.", modularizeType: ColumnModularizeType.Column), | ||
315 | new ColumnDefinition("ComponentId", ColumnType.String, 38, primaryKey: false, nullable: false, ColumnCategory.Guid, description: "A string GUID unique to this component, version, and language."), | ||
316 | new ColumnDefinition("Type", ColumnType.Number, 2, primaryKey: false, nullable: true, ColumnCategory.Unknown, minValue: 0, maxValue: 1, description: "A boolean value that determines if the registry value is a filename or a directory location."), | ||
317 | }, | ||
318 | symbolIdIsPrimaryKey: false | ||
319 | ); | ||
320 | |||
321 | public static readonly TableDefinition Complus = new TableDefinition( | ||
322 | "Complus", | ||
323 | SymbolDefinitions.Complus, | ||
324 | new[] | ||
325 | { | ||
326 | new ColumnDefinition("Component_", ColumnType.String, 72, primaryKey: true, nullable: false, ColumnCategory.Identifier, keyTable: "Component", keyColumn: 1, description: "Foreign key referencing Component that controls the ComPlus component.", modularizeType: ColumnModularizeType.Column), | ||
327 | new ColumnDefinition("ExpType", ColumnType.Number, 2, primaryKey: false, nullable: true, ColumnCategory.Unknown, minValue: 0, maxValue: 32767, description: "ComPlus component attributes."), | ||
328 | }, | ||
329 | symbolIdIsPrimaryKey: false | ||
330 | ); | ||
331 | |||
332 | public static readonly TableDefinition Directory = new TableDefinition( | ||
333 | "Directory", | ||
334 | SymbolDefinitions.Directory, | ||
335 | new[] | ||
336 | { | ||
337 | new ColumnDefinition("Directory", ColumnType.String, 72, primaryKey: true, nullable: false, ColumnCategory.Identifier, description: "Unique identifier for directory entry, primary key. If a property by this name is defined, it contains the full path to the directory.", modularizeType: ColumnModularizeType.Column), | ||
338 | new ColumnDefinition("Directory_Parent", ColumnType.String, 72, primaryKey: false, nullable: true, ColumnCategory.Identifier, keyTable: "Directory", keyColumn: 1, description: "Reference to the entry in this table specifying the default parent directory. A record parented to itself or with a Null parent represents a root of the install tree.", modularizeType: ColumnModularizeType.Column), | ||
339 | new ColumnDefinition("DefaultDir", ColumnType.Localized, 255, primaryKey: false, nullable: false, ColumnCategory.DefaultDir, description: "The default sub-path under parent's path."), | ||
340 | }, | ||
341 | symbolIdIsPrimaryKey: true | ||
342 | ); | ||
343 | |||
344 | public static readonly TableDefinition Control = new TableDefinition( | ||
345 | "Control", | ||
346 | SymbolDefinitions.Control, | ||
347 | new[] | ||
348 | { | ||
349 | new ColumnDefinition("Dialog_", ColumnType.String, 72, primaryKey: true, nullable: false, ColumnCategory.Identifier, keyTable: "Dialog", keyColumn: 1, description: "External key to the Dialog table, name of the dialog.", modularizeType: ColumnModularizeType.Column), | ||
350 | new ColumnDefinition("Control", ColumnType.String, 50, primaryKey: true, nullable: false, ColumnCategory.Identifier, description: "Name of the control. This name must be unique within a dialog, but can repeat on different dialogs. "), | ||
351 | new ColumnDefinition("Type", ColumnType.String, 20, primaryKey: false, nullable: false, ColumnCategory.Identifier, description: "The type of the control."), | ||
352 | new ColumnDefinition("X", ColumnType.Number, 2, primaryKey: false, nullable: false, ColumnCategory.Unknown, minValue: 0, maxValue: 32767, description: "Horizontal coordinate of the upper left corner of the bounding rectangle of the control.", forceLocalizable: true), | ||
353 | new ColumnDefinition("Y", ColumnType.Number, 2, primaryKey: false, nullable: false, ColumnCategory.Unknown, minValue: 0, maxValue: 32767, description: "Vertical coordinate of the upper left corner of the bounding rectangle of the control.", forceLocalizable: true), | ||
354 | new ColumnDefinition("Width", ColumnType.Number, 2, primaryKey: false, nullable: false, ColumnCategory.Unknown, minValue: 0, maxValue: 32767, description: "Width of the bounding rectangle of the control.", forceLocalizable: true), | ||
355 | new ColumnDefinition("Height", ColumnType.Number, 2, primaryKey: false, nullable: false, ColumnCategory.Unknown, minValue: 0, maxValue: 32767, description: "Height of the bounding rectangle of the control.", forceLocalizable: true), | ||
356 | new ColumnDefinition("Attributes", ColumnType.Number, 4, primaryKey: false, nullable: true, ColumnCategory.Unknown, minValue: 0, maxValue: 2147483647, description: "A 32-bit word that specifies the attribute flags to be applied to this control."), | ||
357 | new ColumnDefinition("Property", ColumnType.String, 72, primaryKey: false, nullable: true, ColumnCategory.Identifier, description: "The name of a defined property to be linked to this control. ", modularizeType: ColumnModularizeType.Column), | ||
358 | new ColumnDefinition("Text", ColumnType.Localized, 0, primaryKey: false, nullable: true, ColumnCategory.Formatted, description: "A string used to set the initial text contained within a control (if appropriate).", modularizeType: ColumnModularizeType.ControlText), | ||
359 | new ColumnDefinition("Control_Next", ColumnType.String, 50, primaryKey: false, nullable: true, ColumnCategory.Identifier, keyTable: "Control", keyColumn: 2, description: "The name of an other control on the same dialog. This link defines the tab order of the controls. The links have to form one or more cycles!"), | ||
360 | new ColumnDefinition("Help", ColumnType.Localized, 50, primaryKey: false, nullable: true, ColumnCategory.Text, description: "The help strings used with the button. The text is optional. "), | ||
361 | }, | ||
362 | strongRowType: typeof(ControlRow), | ||
363 | symbolIdIsPrimaryKey: false | ||
364 | ); | ||
365 | |||
366 | public static readonly TableDefinition Dialog = new TableDefinition( | ||
367 | "Dialog", | ||
368 | SymbolDefinitions.Dialog, | ||
369 | new[] | ||
370 | { | ||
371 | new ColumnDefinition("Dialog", ColumnType.String, 72, primaryKey: true, nullable: false, ColumnCategory.Identifier, description: "Name of the dialog.", modularizeType: ColumnModularizeType.Column), | ||
372 | new ColumnDefinition("HCentering", ColumnType.Number, 2, primaryKey: false, nullable: false, ColumnCategory.Unknown, minValue: 0, maxValue: 100, description: "Horizontal position of the dialog on a 0-100 scale. 0 means left end, 100 means right end of the screen, 50 center."), | ||
373 | new ColumnDefinition("VCentering", ColumnType.Number, 2, primaryKey: false, nullable: false, ColumnCategory.Unknown, minValue: 0, maxValue: 100, description: "Vertical position of the dialog on a 0-100 scale. 0 means top end, 100 means bottom end of the screen, 50 center."), | ||
374 | new ColumnDefinition("Width", ColumnType.Number, 2, primaryKey: false, nullable: false, ColumnCategory.Unknown, minValue: 0, maxValue: 32767, description: "Width of the bounding rectangle of the dialog."), | ||
375 | new ColumnDefinition("Height", ColumnType.Number, 2, primaryKey: false, nullable: false, ColumnCategory.Unknown, minValue: 0, maxValue: 32767, description: "Height of the bounding rectangle of the dialog."), | ||
376 | new ColumnDefinition("Attributes", ColumnType.Number, 4, primaryKey: false, nullable: true, ColumnCategory.Unknown, minValue: 0, maxValue: 2147483647, description: "A 32-bit word that specifies the attribute flags to be applied to this dialog."), | ||
377 | new ColumnDefinition("Title", ColumnType.Localized, 128, primaryKey: false, nullable: true, ColumnCategory.Formatted, description: "A text string specifying the title to be displayed in the title bar of the dialog's window.", modularizeType: ColumnModularizeType.Property), | ||
378 | new ColumnDefinition("Control_First", ColumnType.String, 50, primaryKey: false, nullable: false, ColumnCategory.Identifier, keyTable: "Control", keyColumn: 2, description: "Defines the control that has the focus when the dialog is created."), | ||
379 | new ColumnDefinition("Control_Default", ColumnType.String, 50, primaryKey: false, nullable: true, ColumnCategory.Identifier, keyTable: "Control", keyColumn: 2, description: "Defines the default control. Hitting return is equivalent to pushing this button."), | ||
380 | new ColumnDefinition("Control_Cancel", ColumnType.String, 50, primaryKey: false, nullable: true, ColumnCategory.Identifier, keyTable: "Control", keyColumn: 2, description: "Defines the cancel control. Hitting escape or clicking on the close icon on the dialog is equivalent to pushing this button."), | ||
381 | }, | ||
382 | symbolIdIsPrimaryKey: true | ||
383 | ); | ||
384 | |||
385 | public static readonly TableDefinition ControlCondition = new TableDefinition( | ||
386 | "ControlCondition", | ||
387 | SymbolDefinitions.ControlCondition, | ||
388 | new[] | ||
389 | { | ||
390 | new ColumnDefinition("Dialog_", ColumnType.String, 72, primaryKey: true, nullable: false, ColumnCategory.Identifier, keyTable: "Dialog", keyColumn: 1, description: "A foreign key to the Dialog table, name of the dialog.", modularizeType: ColumnModularizeType.Column), | ||
391 | new ColumnDefinition("Control_", ColumnType.String, 50, primaryKey: true, nullable: false, ColumnCategory.Identifier, keyTable: "Control", keyColumn: 2, description: "A foreign key to the Control table, name of the control."), | ||
392 | new ColumnDefinition("Action", ColumnType.String, 50, primaryKey: true, nullable: false, ColumnCategory.Unknown, possibilities: "Default;Disable;Enable;Hide;Show", description: "The desired action to be taken on the specified control."), | ||
393 | new ColumnDefinition("Condition", ColumnType.String, 255, primaryKey: true, nullable: false, ColumnCategory.Condition, description: "A standard conditional statement that specifies under which conditions the action should be triggered.", modularizeType: ColumnModularizeType.Condition, forceLocalizable: true), | ||
394 | }, | ||
395 | symbolIdIsPrimaryKey: false | ||
396 | ); | ||
397 | |||
398 | public static readonly TableDefinition ControlEvent = new TableDefinition( | ||
399 | "ControlEvent", | ||
400 | SymbolDefinitions.ControlEvent, | ||
401 | new[] | ||
402 | { | ||
403 | new ColumnDefinition("Dialog_", ColumnType.String, 72, primaryKey: true, nullable: false, ColumnCategory.Identifier, keyTable: "Dialog", keyColumn: 1, description: "A foreign key to the Dialog table, name of the dialog.", modularizeType: ColumnModularizeType.Column), | ||
404 | new ColumnDefinition("Control_", ColumnType.String, 50, primaryKey: true, nullable: false, ColumnCategory.Identifier, keyTable: "Control", keyColumn: 2, description: "A foreign key to the Control table, name of the control"), | ||
405 | new ColumnDefinition("Event", ColumnType.String, 50, primaryKey: true, nullable: false, ColumnCategory.Formatted, description: "An identifier that specifies the type of the event that should take place when the user interacts with control specified by the first two entries.", modularizeType: ColumnModularizeType.Property), | ||
406 | new ColumnDefinition("Argument", ColumnType.String, 255, primaryKey: true, nullable: false, ColumnCategory.Formatted, description: "A value to be used as a modifier when triggering a particular event.", modularizeType: ColumnModularizeType.ControlEventArgument, forceLocalizable: true), | ||
407 | new ColumnDefinition("Condition", ColumnType.String, 255, primaryKey: true, nullable: true, ColumnCategory.Condition, description: "A standard conditional statement that specifies under which conditions an event should be triggered.", modularizeType: ColumnModularizeType.Condition, forceLocalizable: true), | ||
408 | new ColumnDefinition("Ordering", ColumnType.Number, 2, primaryKey: false, nullable: true, ColumnCategory.Unknown, minValue: 0, maxValue: 2147483647, description: "An integer used to order several events tied to the same control. Can be left blank."), | ||
409 | }, | ||
410 | symbolIdIsPrimaryKey: false | ||
411 | ); | ||
412 | |||
413 | public static readonly TableDefinition CreateFolder = new TableDefinition( | ||
414 | "CreateFolder", | ||
415 | SymbolDefinitions.CreateFolder, | ||
416 | new[] | ||
417 | { | ||
418 | new ColumnDefinition("Directory_", ColumnType.String, 72, primaryKey: true, nullable: false, ColumnCategory.Identifier, keyTable: "Directory", keyColumn: 1, description: "Primary key, could be foreign key into the Directory table.", modularizeType: ColumnModularizeType.Column), | ||
419 | new ColumnDefinition("Component_", ColumnType.String, 72, primaryKey: true, nullable: false, ColumnCategory.Identifier, keyTable: "Component", keyColumn: 1, description: "Foreign key into the Component table.", modularizeType: ColumnModularizeType.Column), | ||
420 | }, | ||
421 | symbolIdIsPrimaryKey: false | ||
422 | ); | ||
423 | |||
424 | public static readonly TableDefinition CustomAction = new TableDefinition( | ||
425 | "CustomAction", | ||
426 | SymbolDefinitions.CustomAction, | ||
427 | new[] | ||
428 | { | ||
429 | new ColumnDefinition("Action", ColumnType.String, 72, primaryKey: true, nullable: false, ColumnCategory.Identifier, description: "Primary key, name of action, normally appears in sequence table unless private use.", modularizeType: ColumnModularizeType.Column), | ||
430 | new ColumnDefinition("Type", ColumnType.Number, 2, primaryKey: false, nullable: false, ColumnCategory.Unknown, minValue: 1, maxValue: 32767, description: "The numeric custom action type, consisting of source location, code type, entry, option flags."), | ||
431 | new ColumnDefinition("Source", ColumnType.String, 72, primaryKey: false, nullable: true, ColumnCategory.CustomSource, description: "The table reference of the source of the code.", modularizeType: ColumnModularizeType.Column), | ||
432 | new ColumnDefinition("Target", ColumnType.String, 255, primaryKey: false, nullable: true, ColumnCategory.Formatted, description: "Excecution parameter, depends on the type of custom action", modularizeType: ColumnModularizeType.Property, forceLocalizable: true), | ||
433 | new ColumnDefinition("ExtendedType", ColumnType.Number, 4, primaryKey: false, nullable: true, ColumnCategory.Unknown, minValue: 0, maxValue: 2147483647, description: "A numeric custom action type that extends code type or option flags of the Type column."), | ||
434 | }, | ||
435 | symbolIdIsPrimaryKey: true | ||
436 | ); | ||
437 | |||
438 | public static readonly TableDefinition DrLocator = new TableDefinition( | ||
439 | "DrLocator", | ||
440 | SymbolDefinitions.DrLocator, | ||
441 | new[] | ||
442 | { | ||
443 | new ColumnDefinition("Signature_", ColumnType.String, 72, primaryKey: true, nullable: false, ColumnCategory.Identifier, description: "The Signature_ represents a unique file signature and is also the foreign key in the Signature table.", modularizeType: ColumnModularizeType.Column), | ||
444 | new ColumnDefinition("Parent", ColumnType.String, 72, primaryKey: true, nullable: true, ColumnCategory.Identifier, description: "The parent file signature. It is also a foreign key in the Signature table. If null and the Path column does not expand to a full path, then all the fixed drives of the user system are searched using the Path.", modularizeType: ColumnModularizeType.Column), | ||
445 | new ColumnDefinition("Path", ColumnType.String, 255, primaryKey: true, nullable: true, ColumnCategory.AnyPath, description: "The path on the user system. This is a either a subpath below the value of the Parent or a full path. The path may contain properties enclosed within [ ] that will be expanded.", modularizeType: ColumnModularizeType.Property), | ||
446 | new ColumnDefinition("Depth", ColumnType.Number, 2, primaryKey: false, nullable: true, ColumnCategory.Unknown, minValue: 0, maxValue: 32767, description: "The depth below the path to which the Signature_ is recursively searched. If absent, the depth is assumed to be 0."), | ||
447 | }, | ||
448 | symbolIdIsPrimaryKey: false | ||
449 | ); | ||
450 | |||
451 | public static readonly TableDefinition DuplicateFile = new TableDefinition( | ||
452 | "DuplicateFile", | ||
453 | SymbolDefinitions.DuplicateFile, | ||
454 | new[] | ||
455 | { | ||
456 | new ColumnDefinition("FileKey", ColumnType.String, 72, primaryKey: true, nullable: false, ColumnCategory.Identifier, description: "Primary key used to identify a particular file entry", modularizeType: ColumnModularizeType.Column), | ||
457 | new ColumnDefinition("Component_", ColumnType.String, 72, primaryKey: false, nullable: false, ColumnCategory.Identifier, keyTable: "Component", keyColumn: 1, description: "Foreign key referencing Component that controls the duplicate file.", modularizeType: ColumnModularizeType.Column), | ||
458 | new ColumnDefinition("File_", ColumnType.String, 72, primaryKey: false, nullable: false, ColumnCategory.Identifier, keyTable: "File", keyColumn: 1, description: "Foreign key referencing the source file to be duplicated.", modularizeType: ColumnModularizeType.Column), | ||
459 | new ColumnDefinition("DestName", ColumnType.Localized, 255, primaryKey: false, nullable: true, ColumnCategory.Filename, description: "Filename to be given to the duplicate file."), | ||
460 | new ColumnDefinition("DestFolder", ColumnType.String, 72, primaryKey: false, nullable: true, ColumnCategory.Identifier, description: "Name of a property whose value is assumed to resolve to the full pathname to a destination folder.", modularizeType: ColumnModularizeType.Column), | ||
461 | }, | ||
462 | symbolIdIsPrimaryKey: true | ||
463 | ); | ||
464 | |||
465 | public static readonly TableDefinition Environment = new TableDefinition( | ||
466 | "Environment", | ||
467 | SymbolDefinitions.Environment, | ||
468 | new[] | ||
469 | { | ||
470 | new ColumnDefinition("Environment", ColumnType.String, 72, primaryKey: true, nullable: false, ColumnCategory.Identifier, description: "Unique identifier for the environmental variable setting", modularizeType: ColumnModularizeType.Column), | ||
471 | new ColumnDefinition("Name", ColumnType.Localized, 255, primaryKey: false, nullable: false, ColumnCategory.Text, description: "The name of the environmental value."), | ||
472 | new ColumnDefinition("Value", ColumnType.Localized, 255, primaryKey: false, nullable: true, ColumnCategory.Formatted, description: "The value to set in the environmental settings.", modularizeType: ColumnModularizeType.Property), | ||
473 | new ColumnDefinition("Component_", ColumnType.String, 72, primaryKey: false, nullable: false, ColumnCategory.Identifier, keyTable: "Component", keyColumn: 1, description: "Foreign key into the Component table referencing component that controls the installing of the environmental value.", modularizeType: ColumnModularizeType.Column), | ||
474 | }, | ||
475 | symbolIdIsPrimaryKey: true | ||
476 | ); | ||
477 | |||
478 | public static readonly TableDefinition Error = new TableDefinition( | ||
479 | "Error", | ||
480 | SymbolDefinitions.Error, | ||
481 | new[] | ||
482 | { | ||
483 | new ColumnDefinition("Error", ColumnType.Number, 2, primaryKey: true, nullable: false, ColumnCategory.Unknown, minValue: 0, maxValue: 32767, description: "Integer error number, obtained from header file IError(...) macros."), | ||
484 | new ColumnDefinition("Message", ColumnType.Localized, 0, primaryKey: false, nullable: true, ColumnCategory.Template, description: "Error formatting template, obtained from user ed. or localizers.", modularizeType: ColumnModularizeType.Property, useCData: true), | ||
485 | }, | ||
486 | symbolIdIsPrimaryKey: true | ||
487 | ); | ||
488 | |||
489 | public static readonly TableDefinition EventMapping = new TableDefinition( | ||
490 | "EventMapping", | ||
491 | SymbolDefinitions.EventMapping, | ||
492 | new[] | ||
493 | { | ||
494 | new ColumnDefinition("Dialog_", ColumnType.String, 72, primaryKey: true, nullable: false, ColumnCategory.Identifier, keyTable: "Dialog", keyColumn: 1, description: "A foreign key to the Dialog table, name of the Dialog.", modularizeType: ColumnModularizeType.Column), | ||
495 | new ColumnDefinition("Control_", ColumnType.String, 50, primaryKey: true, nullable: false, ColumnCategory.Identifier, keyTable: "Control", keyColumn: 2, description: "A foreign key to the Control table, name of the control."), | ||
496 | new ColumnDefinition("Event", ColumnType.String, 50, primaryKey: true, nullable: false, ColumnCategory.Identifier, description: "An identifier that specifies the type of the event that the control subscribes to."), | ||
497 | new ColumnDefinition("Attribute", ColumnType.String, 50, primaryKey: false, nullable: false, ColumnCategory.Identifier, description: "The name of the control attribute, that is set when this event is received."), | ||
498 | }, | ||
499 | symbolIdIsPrimaryKey: false | ||
500 | ); | ||
501 | |||
502 | public static readonly TableDefinition Extension = new TableDefinition( | ||
503 | "Extension", | ||
504 | SymbolDefinitions.Extension, | ||
505 | new[] | ||
506 | { | ||
507 | new ColumnDefinition("Extension", ColumnType.String, 255, primaryKey: true, nullable: false, ColumnCategory.Text, description: "The extension associated with the table row."), | ||
508 | new ColumnDefinition("Component_", ColumnType.String, 72, primaryKey: true, nullable: false, ColumnCategory.Identifier, keyTable: "Component", keyColumn: 1, description: "Required foreign key into the Component Table, specifying the component for which to return a path when called through LocateComponent.", modularizeType: ColumnModularizeType.Column), | ||
509 | new ColumnDefinition("ProgId_", ColumnType.String, 255, primaryKey: false, nullable: true, ColumnCategory.Text, keyTable: "ProgId", keyColumn: 1, description: "Optional ProgId associated with this extension."), | ||
510 | new ColumnDefinition("MIME_", ColumnType.String, 64, primaryKey: false, nullable: true, ColumnCategory.Text, keyTable: "MIME", keyColumn: 1, description: "Optional Context identifier, typically \"type/format\" associated with the extension"), | ||
511 | new ColumnDefinition("Feature_", ColumnType.String, 38, primaryKey: false, nullable: false, ColumnCategory.Identifier, keyTable: "Feature", keyColumn: 1, description: "Required foreign key into the Feature Table, specifying the feature to validate or install in order for the CLSID factory to be operational."), | ||
512 | }, | ||
513 | symbolIdIsPrimaryKey: false | ||
514 | ); | ||
515 | |||
516 | public static readonly TableDefinition MIME = new TableDefinition( | ||
517 | "MIME", | ||
518 | SymbolDefinitions.MIME, | ||
519 | new[] | ||
520 | { | ||
521 | new ColumnDefinition("ContentType", ColumnType.String, 64, primaryKey: true, nullable: false, ColumnCategory.Text, description: "Primary key. Context identifier, typically \"type/format\"."), | ||
522 | new ColumnDefinition("Extension_", ColumnType.String, 255, primaryKey: false, nullable: false, ColumnCategory.Text, keyTable: "Extension", keyColumn: 1, description: "Optional associated extension (without dot)"), | ||
523 | new ColumnDefinition("CLSID", ColumnType.String, 38, primaryKey: false, nullable: true, ColumnCategory.Guid, description: "Optional associated CLSID."), | ||
524 | }, | ||
525 | symbolIdIsPrimaryKey: false | ||
526 | ); | ||
527 | |||
528 | public static readonly TableDefinition FeatureComponents = new TableDefinition( | ||
529 | "FeatureComponents", | ||
530 | SymbolDefinitions.FeatureComponents, | ||
531 | new[] | ||
532 | { | ||
533 | new ColumnDefinition("Feature_", ColumnType.String, 38, primaryKey: true, nullable: false, ColumnCategory.Identifier, keyTable: "Feature", keyColumn: 1, description: "Foreign key into Feature table."), | ||
534 | new ColumnDefinition("Component_", ColumnType.String, 72, primaryKey: true, nullable: false, ColumnCategory.Identifier, keyTable: "Component", keyColumn: 1, description: "Foreign key into Component table.", modularizeType: ColumnModularizeType.Column), | ||
535 | }, | ||
536 | symbolIdIsPrimaryKey: false | ||
537 | ); | ||
538 | |||
539 | public static readonly TableDefinition FileSFPCatalog = new TableDefinition( | ||
540 | "FileSFPCatalog", | ||
541 | SymbolDefinitions.FileSFPCatalog, | ||
542 | new[] | ||
543 | { | ||
544 | new ColumnDefinition("File_", ColumnType.String, 72, primaryKey: true, nullable: false, ColumnCategory.Identifier, keyTable: "File", keyColumn: 1, description: "File associated with the catalog", modularizeType: ColumnModularizeType.Column), | ||
545 | new ColumnDefinition("SFPCatalog_", ColumnType.String, 255, primaryKey: true, nullable: false, ColumnCategory.Filename, keyTable: "SFPCatalog", keyColumn: 1, description: "Catalog associated with the file"), | ||
546 | }, | ||
547 | symbolIdIsPrimaryKey: false | ||
548 | ); | ||
549 | |||
550 | public static readonly TableDefinition SFPCatalog = new TableDefinition( | ||
551 | "SFPCatalog", | ||
552 | SymbolDefinitions.SFPCatalog, | ||
553 | new[] | ||
554 | { | ||
555 | new ColumnDefinition("SFPCatalog", ColumnType.String, 255, primaryKey: true, nullable: false, ColumnCategory.Filename, description: "File name for the catalog."), | ||
556 | new ColumnDefinition("Catalog", ColumnType.Object, 0, primaryKey: false, nullable: false, ColumnCategory.Binary, description: "SFP Catalog"), | ||
557 | new ColumnDefinition("Dependency", ColumnType.String, 0, primaryKey: false, nullable: true, ColumnCategory.Formatted, description: "Parent catalog - only used by SFP", modularizeType: ColumnModularizeType.Property), | ||
558 | }, | ||
559 | symbolIdIsPrimaryKey: false | ||
560 | ); | ||
561 | |||
562 | public static readonly TableDefinition Font = new TableDefinition( | ||
563 | "Font", | ||
564 | null, | ||
565 | new[] | ||
566 | { | ||
567 | new ColumnDefinition("File_", ColumnType.String, 72, primaryKey: true, nullable: false, ColumnCategory.Identifier, keyTable: "File", keyColumn: 1, description: "Primary key, foreign key into File table referencing font file.", modularizeType: ColumnModularizeType.Column), | ||
568 | new ColumnDefinition("FontTitle", ColumnType.String, 128, primaryKey: false, nullable: true, ColumnCategory.Text, description: "Font name."), | ||
569 | }, | ||
570 | symbolIdIsPrimaryKey: false | ||
571 | ); | ||
572 | |||
573 | public static readonly TableDefinition IniFile = new TableDefinition( | ||
574 | "IniFile", | ||
575 | SymbolDefinitions.IniFile, | ||
576 | new[] | ||
577 | { | ||
578 | new ColumnDefinition("IniFile", ColumnType.String, 72, primaryKey: true, nullable: false, ColumnCategory.Identifier, description: "Primary key, non-localized token.", modularizeType: ColumnModularizeType.Column), | ||
579 | new ColumnDefinition("FileName", ColumnType.Localized, 255, primaryKey: false, nullable: false, ColumnCategory.Filename, description: "The .INI file name in which to write the information"), | ||
580 | new ColumnDefinition("DirProperty", ColumnType.String, 72, primaryKey: false, nullable: true, ColumnCategory.Identifier, description: "Foreign key into the Directory table denoting the directory where the .INI file is.", modularizeType: ColumnModularizeType.Column), | ||
581 | new ColumnDefinition("Section", ColumnType.Localized, 96, primaryKey: false, nullable: false, ColumnCategory.Formatted, description: "The .INI file Section.", modularizeType: ColumnModularizeType.Property), | ||
582 | new ColumnDefinition("Key", ColumnType.Localized, 128, primaryKey: false, nullable: false, ColumnCategory.Formatted, description: "The .INI file key below Section.", modularizeType: ColumnModularizeType.Property), | ||
583 | new ColumnDefinition("Value", ColumnType.Localized, 255, primaryKey: false, nullable: false, ColumnCategory.Formatted, description: "The value to be written.", modularizeType: ColumnModularizeType.Property), | ||
584 | new ColumnDefinition("Action", ColumnType.Number, 2, primaryKey: false, nullable: false, ColumnCategory.Unknown, possibilities: "0;1;3", description: "The type of modification to be made, one of iifEnum"), | ||
585 | new ColumnDefinition("Component_", ColumnType.String, 72, primaryKey: false, nullable: false, ColumnCategory.Identifier, keyTable: "Component", keyColumn: 1, description: "Foreign key into the Component table referencing component that controls the installing of the .INI value.", modularizeType: ColumnModularizeType.Column), | ||
586 | }, | ||
587 | symbolIdIsPrimaryKey: true | ||
588 | ); | ||
589 | |||
590 | public static readonly TableDefinition IniLocator = new TableDefinition( | ||
591 | "IniLocator", | ||
592 | SymbolDefinitions.IniLocator, | ||
593 | new[] | ||
594 | { | ||
595 | new ColumnDefinition("Signature_", ColumnType.String, 72, primaryKey: true, nullable: false, ColumnCategory.Identifier, description: "The table key. The Signature_ represents a unique file signature and is also the foreign key in the Signature table.", modularizeType: ColumnModularizeType.Column), | ||
596 | new ColumnDefinition("FileName", ColumnType.String, 255, primaryKey: false, nullable: false, ColumnCategory.Filename, description: "The .INI file name."), | ||
597 | new ColumnDefinition("Section", ColumnType.String, 96, primaryKey: false, nullable: false, ColumnCategory.Text, description: "Section name within in file (within square brackets in INI file)."), | ||
598 | new ColumnDefinition("Key", ColumnType.String, 128, primaryKey: false, nullable: false, ColumnCategory.Text, description: "Key value (followed by an equals sign in INI file)."), | ||
599 | new ColumnDefinition("Field", ColumnType.Number, 2, primaryKey: false, nullable: true, ColumnCategory.Unknown, minValue: 0, maxValue: 32767, description: "The field in the .INI line. If Field is null or 0 the entire line is read."), | ||
600 | new ColumnDefinition("Type", ColumnType.Number, 2, primaryKey: false, nullable: true, ColumnCategory.Unknown, minValue: 0, maxValue: 2, description: "An integer value that determines if the .INI value read is a filename or a directory location or to be used as is w/o interpretation."), | ||
601 | }, | ||
602 | symbolIdIsPrimaryKey: false | ||
603 | ); | ||
604 | |||
605 | public static readonly TableDefinition InstallExecuteSequence = new TableDefinition( | ||
606 | "InstallExecuteSequence", | ||
607 | null, | ||
608 | new[] | ||
609 | { | ||
610 | new ColumnDefinition("Action", ColumnType.String, 72, primaryKey: true, nullable: false, ColumnCategory.Identifier, description: "Name of action to invoke, either in the engine or the handler DLL."), | ||
611 | new ColumnDefinition("Condition", ColumnType.String, 255, primaryKey: false, nullable: true, ColumnCategory.Condition, description: "Optional expression which skips the action if evaluates to expFalse.If the expression syntax is invalid, the engine will terminate, returning iesBadActionData.", forceLocalizable: true), | ||
612 | new ColumnDefinition("Sequence", ColumnType.Number, 2, primaryKey: false, nullable: true, ColumnCategory.Unknown, minValue: -4, maxValue: 32767, description: "Number that determines the sort order in which the actions are to be executed. Leave blank to suppress action."), | ||
613 | }, | ||
614 | symbolIdIsPrimaryKey: true | ||
615 | ); | ||
616 | |||
617 | public static readonly TableDefinition InstallUISequence = new TableDefinition( | ||
618 | "InstallUISequence", | ||
619 | null, | ||
620 | new[] | ||
621 | { | ||
622 | new ColumnDefinition("Action", ColumnType.String, 72, primaryKey: true, nullable: false, ColumnCategory.Identifier, description: "Name of action to invoke, either in the engine or the handler DLL."), | ||
623 | new ColumnDefinition("Condition", ColumnType.String, 255, primaryKey: false, nullable: true, ColumnCategory.Condition, description: "Optional expression which skips the action if evaluates to expFalse.If the expression syntax is invalid, the engine will terminate, returning iesBadActionData.", forceLocalizable: true), | ||
624 | new ColumnDefinition("Sequence", ColumnType.Number, 2, primaryKey: false, nullable: true, ColumnCategory.Unknown, minValue: -4, maxValue: 32767, description: "Number that determines the sort order in which the actions are to be executed. Leave blank to suppress action."), | ||
625 | }, | ||
626 | symbolIdIsPrimaryKey: true | ||
627 | ); | ||
628 | |||
629 | public static readonly TableDefinition IsolatedComponent = new TableDefinition( | ||
630 | "IsolatedComponent", | ||
631 | SymbolDefinitions.IsolatedComponent, | ||
632 | new[] | ||
633 | { | ||
634 | new ColumnDefinition("Component_Shared", ColumnType.String, 72, primaryKey: true, nullable: false, ColumnCategory.Identifier, keyTable: "Component", keyColumn: 1, description: "Key to Component table item to be isolated", modularizeType: ColumnModularizeType.Column), | ||
635 | new ColumnDefinition("Component_Application", ColumnType.String, 72, primaryKey: true, nullable: false, ColumnCategory.Identifier, keyTable: "Component", keyColumn: 1, description: "Key to Component table item for application", modularizeType: ColumnModularizeType.Column), | ||
636 | }, | ||
637 | symbolIdIsPrimaryKey: false | ||
638 | ); | ||
639 | |||
640 | public static readonly TableDefinition LaunchCondition = new TableDefinition( | ||
641 | "LaunchCondition", | ||
642 | SymbolDefinitions.LaunchCondition, | ||
643 | new[] | ||
644 | { | ||
645 | new ColumnDefinition("Condition", ColumnType.String, 255, primaryKey: true, nullable: false, ColumnCategory.Condition, description: "Expression which must evaluate to TRUE in order for install to commence.", forceLocalizable: true), | ||
646 | new ColumnDefinition("Description", ColumnType.Localized, 255, primaryKey: false, nullable: false, ColumnCategory.Formatted, description: "Localizable text to display when condition fails and install must abort."), | ||
647 | }, | ||
648 | symbolIdIsPrimaryKey: false | ||
649 | ); | ||
650 | |||
651 | public static readonly TableDefinition ListBox = new TableDefinition( | ||
652 | "ListBox", | ||
653 | SymbolDefinitions.ListBox, | ||
654 | new[] | ||
655 | { | ||
656 | new ColumnDefinition("Property", ColumnType.String, 72, primaryKey: true, nullable: false, ColumnCategory.Identifier, description: "A named property to be tied to this item. All the items tied to the same property become part of the same listbox.", modularizeType: ColumnModularizeType.Column), | ||
657 | new ColumnDefinition("Order", ColumnType.Number, 2, primaryKey: true, nullable: false, ColumnCategory.Unknown, minValue: 1, maxValue: 32767, description: "A positive integer used to determine the ordering of the items within one list..The integers do not have to be consecutive."), | ||
658 | new ColumnDefinition("Value", ColumnType.String, 64, primaryKey: false, nullable: false, ColumnCategory.Formatted, description: "The value string associated with this item. Selecting the line will set the associated property to this value.", modularizeType: ColumnModularizeType.Property), | ||
659 | new ColumnDefinition("Text", ColumnType.Localized, 64, primaryKey: false, nullable: true, ColumnCategory.Text, description: "The visible text to be assigned to the item. Optional. If this entry or the entire column is missing, the text is the same as the value."), | ||
660 | }, | ||
661 | symbolIdIsPrimaryKey: false | ||
662 | ); | ||
663 | |||
664 | public static readonly TableDefinition ListView = new TableDefinition( | ||
665 | "ListView", | ||
666 | SymbolDefinitions.ListView, | ||
667 | new[] | ||
668 | { | ||
669 | new ColumnDefinition("Property", ColumnType.String, 72, primaryKey: true, nullable: false, ColumnCategory.Identifier, description: "A named property to be tied to this item. All the items tied to the same property become part of the same listview.", modularizeType: ColumnModularizeType.Column), | ||
670 | new ColumnDefinition("Order", ColumnType.Number, 2, primaryKey: true, nullable: false, ColumnCategory.Unknown, minValue: 1, maxValue: 32767, description: "A positive integer used to determine the ordering of the items within one list..The integers do not have to be consecutive."), | ||
671 | new ColumnDefinition("Value", ColumnType.String, 64, primaryKey: false, nullable: false, ColumnCategory.Formatted, description: "The value string associated with this item. Selecting the line will set the associated property to this value.", modularizeType: ColumnModularizeType.Property), | ||
672 | new ColumnDefinition("Text", ColumnType.Localized, 64, primaryKey: false, nullable: true, ColumnCategory.Formatted, description: "The visible text to be assigned to the item. Optional. If this entry or the entire column is missing, the text is the same as the value.", modularizeType: ColumnModularizeType.Property), | ||
673 | new ColumnDefinition("Binary_", ColumnType.String, 72, primaryKey: false, nullable: true, ColumnCategory.Identifier, keyTable: "Binary", keyColumn: 1, description: "The name of the icon to be displayed with the icon. The binary information is looked up from the Binary Table.", modularizeType: ColumnModularizeType.Column), | ||
674 | }, | ||
675 | symbolIdIsPrimaryKey: false | ||
676 | ); | ||
677 | |||
678 | public static readonly TableDefinition LockPermissions = new TableDefinition( | ||
679 | "LockPermissions", | ||
680 | SymbolDefinitions.LockPermissions, | ||
681 | new[] | ||
682 | { | ||
683 | new ColumnDefinition("LockObject", ColumnType.String, 72, primaryKey: true, nullable: false, ColumnCategory.Identifier, description: "Foreign key into Registry or File table", modularizeType: ColumnModularizeType.Column), | ||
684 | new ColumnDefinition("Table", ColumnType.String, 32, primaryKey: true, nullable: false, ColumnCategory.Identifier, possibilities: "Directory;File;Registry", description: "Reference to another table name"), | ||
685 | new ColumnDefinition("Domain", ColumnType.String, 255, primaryKey: true, nullable: true, ColumnCategory.Formatted, description: "Domain name for user whose permissions are being set. (usually a property)", modularizeType: ColumnModularizeType.Property), | ||
686 | new ColumnDefinition("User", ColumnType.String, 255, primaryKey: true, nullable: false, ColumnCategory.Formatted, description: "User for permissions to be set. (usually a property)", modularizeType: ColumnModularizeType.Property), | ||
687 | new ColumnDefinition("Permission", ColumnType.Number, 4, primaryKey: false, nullable: true, ColumnCategory.Unknown, minValue: -2147483647, maxValue: 2147483647, description: "Permission Access mask. Full Control = 268435456 (GENERIC_ALL = 0x10000000)"), | ||
688 | }, | ||
689 | symbolIdIsPrimaryKey: false | ||
690 | ); | ||
691 | |||
692 | public static readonly TableDefinition MsiLockPermissionsEx = new TableDefinition( | ||
693 | "MsiLockPermissionsEx", | ||
694 | SymbolDefinitions.MsiLockPermissionsEx, | ||
695 | new[] | ||
696 | { | ||
697 | new ColumnDefinition("MsiLockPermissionsEx", ColumnType.String, 72, primaryKey: true, nullable: false, ColumnCategory.Identifier, description: "Primary key, non-localized token", modularizeType: ColumnModularizeType.Column), | ||
698 | new ColumnDefinition("LockObject", ColumnType.String, 72, primaryKey: false, nullable: false, ColumnCategory.Identifier, description: "Foreign key into Registry, File, CreateFolder, or ServiceInstall table", modularizeType: ColumnModularizeType.Column), | ||
699 | new ColumnDefinition("Table", ColumnType.String, 32, primaryKey: false, nullable: false, ColumnCategory.Identifier, possibilities: "CreateFolder;File;Registry;ServiceInstall", description: "Reference to another table name"), | ||
700 | new ColumnDefinition("SDDLText", ColumnType.String, 0, primaryKey: false, nullable: false, ColumnCategory.FormattedSDDLText, description: "String to indicate permissions to be applied to the LockObject", modularizeType: ColumnModularizeType.Property), | ||
701 | new ColumnDefinition("Condition", ColumnType.String, 255, primaryKey: false, nullable: true, ColumnCategory.Formatted, description: "Expression which must evaluate to TRUE in order for this set of permissions to be applied", modularizeType: ColumnModularizeType.Property), | ||
702 | }, | ||
703 | symbolIdIsPrimaryKey: true | ||
704 | ); | ||
705 | |||
706 | public static readonly TableDefinition Media = new TableDefinition( | ||
707 | "Media", | ||
708 | SymbolDefinitions.Media, | ||
709 | new[] | ||
710 | { | ||
711 | new ColumnDefinition("DiskId", ColumnType.Number, 2, primaryKey: true, nullable: false, ColumnCategory.Unknown, minValue: 1, maxValue: 32767, description: "Primary key, integer to determine sort order for table."), | ||
712 | new ColumnDefinition("LastSequence", ColumnType.Number, 4, primaryKey: false, nullable: false, ColumnCategory.Unknown, minValue: 0, maxValue: 2147483647, description: "File sequence number for the last file for this media."), | ||
713 | new ColumnDefinition("DiskPrompt", ColumnType.Localized, 64, primaryKey: false, nullable: true, ColumnCategory.Text, description: "Disk name: the visible text actually printed on the disk. This will be used to prompt the user when this disk needs to be inserted."), | ||
714 | new ColumnDefinition("Cabinet", ColumnType.String, 255, primaryKey: false, nullable: true, ColumnCategory.Cabinet, description: "If some or all of the files stored on the media are compressed in a cabinet, the name of that cabinet."), | ||
715 | new ColumnDefinition("VolumeLabel", ColumnType.String, 32, primaryKey: false, nullable: true, ColumnCategory.Text, description: "The label attributed to the volume."), | ||
716 | new ColumnDefinition("Source", ColumnType.String, 72, primaryKey: false, nullable: true, ColumnCategory.Property, description: "The property defining the location of the cabinet file."), | ||
717 | }, | ||
718 | strongRowType: typeof(MediaRow), | ||
719 | symbolIdIsPrimaryKey: false | ||
720 | ); | ||
721 | |||
722 | public static readonly TableDefinition MoveFile = new TableDefinition( | ||
723 | "MoveFile", | ||
724 | SymbolDefinitions.MoveFile, | ||
725 | new[] | ||
726 | { | ||
727 | new ColumnDefinition("FileKey", ColumnType.String, 72, primaryKey: true, nullable: false, ColumnCategory.Identifier, description: "Primary key that uniquely identifies a particular MoveFile record", modularizeType: ColumnModularizeType.Column), | ||
728 | new ColumnDefinition("Component_", ColumnType.String, 72, primaryKey: false, nullable: false, ColumnCategory.Identifier, keyTable: "Component", keyColumn: 1, description: "If this component is not \"selected\" for installation or removal, no action will be taken on the associated MoveFile entry", modularizeType: ColumnModularizeType.Column), | ||
729 | new ColumnDefinition("SourceName", ColumnType.Localized, 255, primaryKey: false, nullable: true, ColumnCategory.Text, description: "Name of the source file(s) to be moved or copied. Can contain the '*' or '?' wildcards."), | ||
730 | new ColumnDefinition("DestName", ColumnType.Localized, 255, primaryKey: false, nullable: true, ColumnCategory.Filename, description: "Name to be given to the original file after it is moved or copied. If blank, the destination file will be given the same name as the source file"), | ||
731 | new ColumnDefinition("SourceFolder", ColumnType.String, 72, primaryKey: false, nullable: true, ColumnCategory.Identifier, description: "Name of a property whose value is assumed to resolve to the full path to the source directory", modularizeType: ColumnModularizeType.Column), | ||
732 | new ColumnDefinition("DestFolder", ColumnType.String, 72, primaryKey: false, nullable: false, ColumnCategory.Identifier, description: "Name of a property whose value is assumed to resolve to the full path to the destination directory", modularizeType: ColumnModularizeType.Column), | ||
733 | new ColumnDefinition("Options", ColumnType.Number, 2, primaryKey: false, nullable: false, ColumnCategory.Unknown, minValue: 0, maxValue: 1, description: "Integer value specifying the MoveFile operating mode, one of imfoEnum"), | ||
734 | }, | ||
735 | symbolIdIsPrimaryKey: true | ||
736 | ); | ||
737 | |||
738 | public static readonly TableDefinition MsiAssembly = new TableDefinition( | ||
739 | "MsiAssembly", | ||
740 | SymbolDefinitions.Assembly, | ||
741 | new[] | ||
742 | { | ||
743 | new ColumnDefinition("Component_", ColumnType.String, 72, primaryKey: true, nullable: false, ColumnCategory.Identifier, keyTable: "Component", keyColumn: 1, description: "Foreign key into Component table.", modularizeType: ColumnModularizeType.Column), | ||
744 | new ColumnDefinition("Feature_", ColumnType.String, 38, primaryKey: false, nullable: false, ColumnCategory.Identifier, keyTable: "Feature", keyColumn: 1, description: "Foreign key into Feature table."), | ||
745 | new ColumnDefinition("File_Manifest", ColumnType.String, 72, primaryKey: false, nullable: true, ColumnCategory.Identifier, keyTable: "File", keyColumn: 1, description: "Foreign key into the File table denoting the manifest file for the assembly.", modularizeType: ColumnModularizeType.Column), | ||
746 | new ColumnDefinition("File_Application", ColumnType.String, 72, primaryKey: false, nullable: true, ColumnCategory.Identifier, keyTable: "File", keyColumn: 1, description: "Foreign key into File table, denoting the application context for private assemblies. Null for global assemblies.", modularizeType: ColumnModularizeType.Column), | ||
747 | new ColumnDefinition("Attributes", ColumnType.Number, 2, primaryKey: false, nullable: true, ColumnCategory.Unknown, description: "Assembly attributes"), | ||
748 | }, | ||
749 | symbolIdIsPrimaryKey: false | ||
750 | ); | ||
751 | |||
752 | public static readonly TableDefinition MsiAssemblyName = new TableDefinition( | ||
753 | "MsiAssemblyName", | ||
754 | SymbolDefinitions.MsiAssemblyName, | ||
755 | new[] | ||
756 | { | ||
757 | new ColumnDefinition("Component_", ColumnType.String, 72, primaryKey: true, nullable: false, ColumnCategory.Identifier, keyTable: "Component", keyColumn: 1, description: "Foreign key into Component table.", modularizeType: ColumnModularizeType.Column), | ||
758 | new ColumnDefinition("Name", ColumnType.String, 255, primaryKey: true, nullable: false, ColumnCategory.Text, description: "The name part of the name-value pairs for the assembly name."), | ||
759 | new ColumnDefinition("Value", ColumnType.String, 255, primaryKey: false, nullable: false, ColumnCategory.Text, description: "The value part of the name-value pairs for the assembly name."), | ||
760 | }, | ||
761 | symbolIdIsPrimaryKey: false | ||
762 | ); | ||
763 | |||
764 | public static readonly TableDefinition MsiDigitalCertificate = new TableDefinition( | ||
765 | "MsiDigitalCertificate", | ||
766 | SymbolDefinitions.MsiDigitalCertificate, | ||
767 | new[] | ||
768 | { | ||
769 | new ColumnDefinition("DigitalCertificate", ColumnType.String, 72, primaryKey: true, nullable: false, ColumnCategory.Identifier, description: "A unique identifier for the row"), | ||
770 | new ColumnDefinition("CertData", ColumnType.Object, 0, primaryKey: false, nullable: false, ColumnCategory.Binary, description: "A certificate context blob for a signer certificate"), | ||
771 | }, | ||
772 | symbolIdIsPrimaryKey: true | ||
773 | ); | ||
774 | |||
775 | public static readonly TableDefinition MsiDigitalSignature = new TableDefinition( | ||
776 | "MsiDigitalSignature", | ||
777 | SymbolDefinitions.MsiDigitalSignature, | ||
778 | new[] | ||
779 | { | ||
780 | new ColumnDefinition("Table", ColumnType.String, 32, primaryKey: true, nullable: false, ColumnCategory.Unknown, possibilities: "Media", description: "Reference to another table name (only Media table is supported)"), | ||
781 | new ColumnDefinition("SignObject", ColumnType.String, 72, primaryKey: true, nullable: false, ColumnCategory.Text, description: "Foreign key to Media table"), | ||
782 | new ColumnDefinition("DigitalCertificate_", ColumnType.String, 72, primaryKey: false, nullable: false, ColumnCategory.Identifier, keyTable: "MsiDigitalCertificate", keyColumn: 1, description: "Foreign key to MsiDigitalCertificate table identifying the signer certificate"), | ||
783 | new ColumnDefinition("Hash", ColumnType.Object, 0, primaryKey: false, nullable: true, ColumnCategory.Binary, description: "The encoded hash blob from the digital signature"), | ||
784 | }, | ||
785 | symbolIdIsPrimaryKey: false | ||
786 | ); | ||
787 | |||
788 | public static readonly TableDefinition MsiEmbeddedChainer = new TableDefinition( | ||
789 | "MsiEmbeddedChainer", | ||
790 | SymbolDefinitions.MsiEmbeddedChainer, | ||
791 | new[] | ||
792 | { | ||
793 | new ColumnDefinition("MsiEmbeddedChainer", ColumnType.String, 72, primaryKey: true, nullable: false, ColumnCategory.Identifier, description: "The primary key for the table.", modularizeType: ColumnModularizeType.Column), | ||
794 | new ColumnDefinition("Condition", ColumnType.String, 255, primaryKey: false, nullable: true, ColumnCategory.Condition, description: "A conditional statement for running the user-defined function.", forceLocalizable: true), | ||
795 | new ColumnDefinition("CommandLine", ColumnType.String, 255, primaryKey: false, nullable: true, ColumnCategory.Formatted, description: "The value in this field is a part of the command line string passed to the executable file identified in the Source column.", modularizeType: ColumnModularizeType.Property), | ||
796 | new ColumnDefinition("Source", ColumnType.String, 72, primaryKey: false, nullable: false, ColumnCategory.CustomSource, description: "The location of the executable file for the user-defined function.", modularizeType: ColumnModularizeType.Column), | ||
797 | new ColumnDefinition("Type", ColumnType.Number, 2, primaryKey: false, nullable: false, ColumnCategory.Unknown, possibilities: "2;18;50", description: "The functions listed in the MsiEmbeddedChainer table are described using the following custom action numeric types."), | ||
798 | }, | ||
799 | symbolIdIsPrimaryKey: true | ||
800 | ); | ||
801 | |||
802 | public static readonly TableDefinition MsiEmbeddedUI = new TableDefinition( | ||
803 | "MsiEmbeddedUI", | ||
804 | SymbolDefinitions.MsiEmbeddedUI, | ||
805 | new[] | ||
806 | { | ||
807 | new ColumnDefinition("MsiEmbeddedUI", ColumnType.String, 72, primaryKey: true, nullable: false, ColumnCategory.Identifier, description: "The primary key for the table.", modularizeType: ColumnModularizeType.Column), | ||
808 | new ColumnDefinition("FileName", ColumnType.Localized, 255, primaryKey: false, nullable: false, ColumnCategory.Text, description: "The name of the file that receives the binary information in the Data column."), | ||
809 | new ColumnDefinition("Attributes", ColumnType.Number, 2, primaryKey: false, nullable: false, ColumnCategory.Unknown, possibilities: "0;1;2;3", description: "Information about the data in the Data column."), | ||
810 | new ColumnDefinition("MessageFilter", ColumnType.Number, 4, primaryKey: false, nullable: true, ColumnCategory.Unknown, description: "Specifies the types of messages that are sent to the user interface DLL."), | ||
811 | new ColumnDefinition("Data", ColumnType.Object, 0, primaryKey: false, nullable: false, ColumnCategory.Binary, description: "This column contains binary information."), | ||
812 | }, | ||
813 | symbolIdIsPrimaryKey: true | ||
814 | ); | ||
815 | |||
816 | public static readonly TableDefinition MsiFileHash = new TableDefinition( | ||
817 | "MsiFileHash", | ||
818 | SymbolDefinitions.MsiFileHash, | ||
819 | new[] | ||
820 | { | ||
821 | new ColumnDefinition("File_", ColumnType.String, 72, primaryKey: true, nullable: false, ColumnCategory.Identifier, keyTable: "File", keyColumn: 1, description: "Primary key, foreign key into File table referencing file with this hash", modularizeType: ColumnModularizeType.Column), | ||
822 | new ColumnDefinition("Options", ColumnType.Number, 2, primaryKey: false, nullable: false, ColumnCategory.Unknown, minValue: 0, maxValue: 32767, description: "Various options and attributes for this hash."), | ||
823 | new ColumnDefinition("HashPart1", ColumnType.Number, 4, primaryKey: false, nullable: false, ColumnCategory.Unknown, description: "Size of file in bytes (long integer)."), | ||
824 | new ColumnDefinition("HashPart2", ColumnType.Number, 4, primaryKey: false, nullable: false, ColumnCategory.Unknown, description: "Size of file in bytes (long integer)."), | ||
825 | new ColumnDefinition("HashPart3", ColumnType.Number, 4, primaryKey: false, nullable: false, ColumnCategory.Unknown, description: "Size of file in bytes (long integer)."), | ||
826 | new ColumnDefinition("HashPart4", ColumnType.Number, 4, primaryKey: false, nullable: false, ColumnCategory.Unknown, description: "Size of file in bytes (long integer)."), | ||
827 | }, | ||
828 | symbolIdIsPrimaryKey: true | ||
829 | ); | ||
830 | |||
831 | public static readonly TableDefinition MsiPackageCertificate = new TableDefinition( | ||
832 | "MsiPackageCertificate", | ||
833 | SymbolDefinitions.MsiPackageCertificate, | ||
834 | new[] | ||
835 | { | ||
836 | new ColumnDefinition("PackageCertificate", ColumnType.String, 72, primaryKey: true, nullable: false, ColumnCategory.Identifier, description: "Primary key. A unique identifier for the row."), | ||
837 | new ColumnDefinition("DigitalCertificate_", ColumnType.String, 72, primaryKey: true, nullable: false, ColumnCategory.Identifier, keyTable: "MsiDigitalCertificate", keyColumn: 1, description: "Foreign key to MsiDigitalCertificate table identifying the signer certificate."), | ||
838 | }, | ||
839 | symbolIdIsPrimaryKey: false | ||
840 | ); | ||
841 | |||
842 | public static readonly TableDefinition MsiPatchCertificate = new TableDefinition( | ||
843 | "MsiPatchCertificate", | ||
844 | SymbolDefinitions.MsiPatchCertificate, | ||
845 | new[] | ||
846 | { | ||
847 | new ColumnDefinition("PatchCertificate", ColumnType.String, 72, primaryKey: true, nullable: false, ColumnCategory.Identifier, description: "Primary key. A unique identifier for the row."), | ||
848 | new ColumnDefinition("DigitalCertificate_", ColumnType.String, 72, primaryKey: true, nullable: false, ColumnCategory.Identifier, keyTable: "MsiDigitalCertificate", keyColumn: 1, description: "Foreign key to MsiDigitalCertificate table identifying the signer certificate."), | ||
849 | }, | ||
850 | symbolIdIsPrimaryKey: false | ||
851 | ); | ||
852 | |||
853 | public static readonly TableDefinition MsiPatchHeaders = new TableDefinition( | ||
854 | "MsiPatchHeaders", | ||
855 | SymbolDefinitions.MsiPatchHeaders, | ||
856 | new[] | ||
857 | { | ||
858 | new ColumnDefinition("StreamRef", ColumnType.String, 38, primaryKey: true, nullable: false, ColumnCategory.Identifier, description: "Primary key. A unique identifier for the row."), | ||
859 | new ColumnDefinition("Header", ColumnType.Object, 0, primaryKey: false, nullable: false, ColumnCategory.Binary, description: "Binary stream. The patch header, used for patch validation."), | ||
860 | }, | ||
861 | symbolIdIsPrimaryKey: false | ||
862 | ); | ||
863 | |||
864 | public static readonly TableDefinition PatchMetadata = new TableDefinition( | ||
865 | "PatchMetadata", | ||
866 | SymbolDefinitions.PatchMetadata, | ||
867 | new[] | ||
868 | { | ||
869 | new ColumnDefinition("Company", ColumnType.String, 72, primaryKey: true, nullable: true, ColumnCategory.Identifier, description: "Primary key. The name of the company."), | ||
870 | new ColumnDefinition("Property", ColumnType.String, 72, primaryKey: true, nullable: false, ColumnCategory.Identifier, description: "Primary key. The name of the property."), | ||
871 | new ColumnDefinition("Value", ColumnType.Localized, 0, primaryKey: false, nullable: false, ColumnCategory.Text, description: "Non-null, non-empty value of the metadata property."), | ||
872 | }, | ||
873 | symbolIdIsPrimaryKey: false | ||
874 | ); | ||
875 | |||
876 | public static readonly TableDefinition MsiPatchMetadata = new TableDefinition( | ||
877 | "MsiPatchMetadata", | ||
878 | SymbolDefinitions.MsiPatchMetadata, | ||
879 | new[] | ||
880 | { | ||
881 | new ColumnDefinition("Company", ColumnType.String, 72, primaryKey: true, nullable: true, ColumnCategory.Unknown), | ||
882 | new ColumnDefinition("Property", ColumnType.String, 72, primaryKey: true, nullable: false, ColumnCategory.Unknown), | ||
883 | new ColumnDefinition("Value", ColumnType.Localized, 0, primaryKey: false, nullable: false, ColumnCategory.Unknown), | ||
884 | }, | ||
885 | symbolIdIsPrimaryKey: false | ||
886 | ); | ||
887 | |||
888 | public static readonly TableDefinition MsiPatchOldAssemblyFile = new TableDefinition( | ||
889 | "MsiPatchOldAssemblyFile", | ||
890 | SymbolDefinitions.MsiPatchOldAssemblyFile, | ||
891 | new[] | ||
892 | { | ||
893 | new ColumnDefinition("File_", ColumnType.String, 72, primaryKey: true, nullable: false, ColumnCategory.Identifier, keyTable: "File", keyColumn: 1, description: "Foreign key into File table. Patch-only table.", modularizeType: ColumnModularizeType.Column), | ||
894 | new ColumnDefinition("Assembly_", ColumnType.String, 72, primaryKey: true, nullable: false, ColumnCategory.Identifier, keyTable: "MsiPatchOldAssemblyName", keyColumn: 1, description: "Foreign key into MsiPatchOldAssemblyName table.", modularizeType: ColumnModularizeType.Column), | ||
895 | }, | ||
896 | symbolIdIsPrimaryKey: false | ||
897 | ); | ||
898 | |||
899 | public static readonly TableDefinition MsiPatchOldAssemblyName = new TableDefinition( | ||
900 | "MsiPatchOldAssemblyName", | ||
901 | SymbolDefinitions.MsiPatchOldAssemblyName, | ||
902 | new[] | ||
903 | { | ||
904 | new ColumnDefinition("Assembly", ColumnType.String, 72, primaryKey: true, nullable: false, ColumnCategory.Identifier, description: "A unique identifier for the row.", modularizeType: ColumnModularizeType.Column), | ||
905 | new ColumnDefinition("Name", ColumnType.String, 255, primaryKey: true, nullable: false, ColumnCategory.Text, description: "The name part of the name-value pairs for the assembly name. This represents the old name for the assembly."), | ||
906 | new ColumnDefinition("Value", ColumnType.String, 255, primaryKey: false, nullable: false, ColumnCategory.Text, description: "The value part of the name-value pairs for the assembly name. This represents the old name for the assembly."), | ||
907 | }, | ||
908 | symbolIdIsPrimaryKey: false | ||
909 | ); | ||
910 | |||
911 | public static readonly TableDefinition PatchSequence = new TableDefinition( | ||
912 | "PatchSequence", | ||
913 | SymbolDefinitions.PatchSequence, | ||
914 | new[] | ||
915 | { | ||
916 | new ColumnDefinition("PatchFamily", ColumnType.String, 72, primaryKey: true, nullable: false, ColumnCategory.Identifier, description: "Primary key. The name of the family for the patch."), | ||
917 | new ColumnDefinition("Target", ColumnType.String, 72, primaryKey: true, nullable: true, ColumnCategory.Text, description: "Primary key. Determines product code filtering for family."), | ||
918 | new ColumnDefinition("Sequence", ColumnType.String, 72, primaryKey: false, nullable: true, ColumnCategory.Text, description: "Sequence information in version (x.x.x.x) format."), | ||
919 | new ColumnDefinition("Supersede", ColumnType.Number, 4, primaryKey: false, nullable: true, ColumnCategory.Unknown, description: "Indicates that this patch supersedes earlier patches."), | ||
920 | }, | ||
921 | symbolIdIsPrimaryKey: false | ||
922 | ); | ||
923 | |||
924 | public static readonly TableDefinition MsiPatchSequence = new TableDefinition( | ||
925 | "MsiPatchSequence", | ||
926 | SymbolDefinitions.MsiPatchSequence, | ||
927 | new[] | ||
928 | { | ||
929 | new ColumnDefinition("PatchFamily", ColumnType.String, 72, primaryKey: true, nullable: false, ColumnCategory.Unknown), | ||
930 | new ColumnDefinition("ProductCode", ColumnType.String, 38, primaryKey: true, nullable: true, ColumnCategory.Unknown), | ||
931 | new ColumnDefinition("Sequence", ColumnType.String, 72, primaryKey: false, nullable: false, ColumnCategory.Unknown), | ||
932 | new ColumnDefinition("Attributes", ColumnType.Number, 4, primaryKey: false, nullable: true, ColumnCategory.Unknown), | ||
933 | }, | ||
934 | symbolIdIsPrimaryKey: false | ||
935 | ); | ||
936 | |||
937 | public static readonly TableDefinition ODBCAttribute = new TableDefinition( | ||
938 | "ODBCAttribute", | ||
939 | SymbolDefinitions.ODBCAttribute, | ||
940 | new[] | ||
941 | { | ||
942 | new ColumnDefinition("Driver_", ColumnType.String, 72, primaryKey: true, nullable: false, ColumnCategory.Identifier, keyTable: "ODBCDriver", keyColumn: 1, description: "Reference to ODBC driver in ODBCDriver table", modularizeType: ColumnModularizeType.Column), | ||
943 | new ColumnDefinition("Attribute", ColumnType.String, 40, primaryKey: true, nullable: false, ColumnCategory.Text, description: "Name of ODBC driver attribute"), | ||
944 | new ColumnDefinition("Value", ColumnType.Localized, 255, primaryKey: false, nullable: true, ColumnCategory.Formatted, description: "Value for ODBC driver attribute"), | ||
945 | }, | ||
946 | symbolIdIsPrimaryKey: false | ||
947 | ); | ||
948 | |||
949 | public static readonly TableDefinition ODBCDriver = new TableDefinition( | ||
950 | "ODBCDriver", | ||
951 | SymbolDefinitions.ODBCDriver, | ||
952 | new[] | ||
953 | { | ||
954 | new ColumnDefinition("Driver", ColumnType.String, 72, primaryKey: true, nullable: false, ColumnCategory.Identifier, description: "Primary key, non-localized.internal token for driver", modularizeType: ColumnModularizeType.Column), | ||
955 | new ColumnDefinition("Component_", ColumnType.String, 72, primaryKey: false, nullable: false, ColumnCategory.Identifier, keyTable: "Component", keyColumn: 1, description: "Reference to associated component", modularizeType: ColumnModularizeType.Column), | ||
956 | new ColumnDefinition("Description", ColumnType.String, 255, primaryKey: false, nullable: false, ColumnCategory.Text, description: "Text used as registered name for driver, non-localized"), | ||
957 | new ColumnDefinition("File_", ColumnType.String, 72, primaryKey: false, nullable: false, ColumnCategory.Identifier, keyTable: "File", keyColumn: 1, description: "Reference to key driver file", modularizeType: ColumnModularizeType.Column), | ||
958 | new ColumnDefinition("File_Setup", ColumnType.String, 72, primaryKey: false, nullable: true, ColumnCategory.Identifier, keyTable: "File", keyColumn: 1, description: "Optional reference to key driver setup DLL", modularizeType: ColumnModularizeType.Column), | ||
959 | }, | ||
960 | symbolIdIsPrimaryKey: true | ||
961 | ); | ||
962 | |||
963 | public static readonly TableDefinition ODBCDataSource = new TableDefinition( | ||
964 | "ODBCDataSource", | ||
965 | SymbolDefinitions.ODBCDataSource, | ||
966 | new[] | ||
967 | { | ||
968 | new ColumnDefinition("DataSource", ColumnType.String, 72, primaryKey: true, nullable: false, ColumnCategory.Identifier, description: "Primary key, non-localized.internal token for data source", modularizeType: ColumnModularizeType.Column), | ||
969 | new ColumnDefinition("Component_", ColumnType.String, 72, primaryKey: false, nullable: false, ColumnCategory.Identifier, keyTable: "Component", keyColumn: 1, description: "Reference to associated component", modularizeType: ColumnModularizeType.Column), | ||
970 | new ColumnDefinition("Description", ColumnType.String, 255, primaryKey: false, nullable: false, ColumnCategory.Text, description: "Text used as registered name for data source"), | ||
971 | new ColumnDefinition("DriverDescription", ColumnType.String, 255, primaryKey: false, nullable: false, ColumnCategory.Text, description: "Reference to driver description, may be existing driver"), | ||
972 | new ColumnDefinition("Registration", ColumnType.Number, 2, primaryKey: false, nullable: false, ColumnCategory.Unknown, minValue: 0, maxValue: 1, description: "Registration option: 0=machine, 1=user, others t.b.d."), | ||
973 | }, | ||
974 | symbolIdIsPrimaryKey: true | ||
975 | ); | ||
976 | |||
977 | public static readonly TableDefinition ODBCSourceAttribute = new TableDefinition( | ||
978 | "ODBCSourceAttribute", | ||
979 | SymbolDefinitions.ODBCSourceAttribute, | ||
980 | new[] | ||
981 | { | ||
982 | new ColumnDefinition("DataSource_", ColumnType.String, 72, primaryKey: true, nullable: false, ColumnCategory.Identifier, keyTable: "ODBCDataSource", keyColumn: 1, description: "Reference to ODBC data source in ODBCDataSource table", modularizeType: ColumnModularizeType.Column), | ||
983 | new ColumnDefinition("Attribute", ColumnType.String, 32, primaryKey: true, nullable: false, ColumnCategory.Text, description: "Name of ODBC data source attribute"), | ||
984 | new ColumnDefinition("Value", ColumnType.Localized, 255, primaryKey: false, nullable: true, ColumnCategory.Formatted, description: "Value for ODBC data source attribute"), | ||
985 | }, | ||
986 | symbolIdIsPrimaryKey: false | ||
987 | ); | ||
988 | |||
989 | public static readonly TableDefinition ODBCTranslator = new TableDefinition( | ||
990 | "ODBCTranslator", | ||
991 | SymbolDefinitions.ODBCTranslator, | ||
992 | new[] | ||
993 | { | ||
994 | new ColumnDefinition("Translator", ColumnType.String, 72, primaryKey: true, nullable: false, ColumnCategory.Identifier, description: "Primary key, non-localized.internal token for translator", modularizeType: ColumnModularizeType.Column), | ||
995 | new ColumnDefinition("Component_", ColumnType.String, 72, primaryKey: false, nullable: false, ColumnCategory.Identifier, keyTable: "Component", keyColumn: 1, description: "Reference to associated component", modularizeType: ColumnModularizeType.Column), | ||
996 | new ColumnDefinition("Description", ColumnType.String, 255, primaryKey: false, nullable: false, ColumnCategory.Text, description: "Text used as registered name for translator"), | ||
997 | new ColumnDefinition("File_", ColumnType.String, 72, primaryKey: false, nullable: false, ColumnCategory.Identifier, keyTable: "File", keyColumn: 1, description: "Reference to key translator file", modularizeType: ColumnModularizeType.Column), | ||
998 | new ColumnDefinition("File_Setup", ColumnType.String, 72, primaryKey: false, nullable: true, ColumnCategory.Identifier, keyTable: "File", keyColumn: 1, description: "Optional reference to key translator setup DLL", modularizeType: ColumnModularizeType.Column), | ||
999 | }, | ||
1000 | symbolIdIsPrimaryKey: true | ||
1001 | ); | ||
1002 | |||
1003 | public static readonly TableDefinition Patch = new TableDefinition( | ||
1004 | "Patch", | ||
1005 | SymbolDefinitions.Patch, | ||
1006 | new[] | ||
1007 | { | ||
1008 | new ColumnDefinition("File_", ColumnType.String, 72, primaryKey: true, nullable: false, ColumnCategory.Identifier, description: "Primary key, non-localized token, foreign key to File table, must match identifier in cabinet.", modularizeType: ColumnModularizeType.Column), | ||
1009 | new ColumnDefinition("Sequence", ColumnType.Number, 4, primaryKey: true, nullable: false, ColumnCategory.Unknown, minValue: 0, maxValue: 2147483647, description: "Primary key, sequence with respect to the media images; order must track cabinet order."), | ||
1010 | new ColumnDefinition("PatchSize", ColumnType.Number, 4, primaryKey: false, nullable: false, ColumnCategory.Unknown, minValue: 0, maxValue: 2147483647, description: "Size of patch in bytes (long integer)."), | ||
1011 | new ColumnDefinition("Attributes", ColumnType.Number, 2, primaryKey: false, nullable: false, ColumnCategory.Unknown, minValue: 0, maxValue: 32767, description: "Integer containing bit flags representing patch attributes"), | ||
1012 | new ColumnDefinition("Header", ColumnType.Object, 0, primaryKey: false, nullable: true, ColumnCategory.Binary, description: "Binary stream. The patch header, used for patch validation."), | ||
1013 | new ColumnDefinition("StreamRef_", ColumnType.String, 38, primaryKey: false, nullable: true, ColumnCategory.Identifier, description: "Identifier. Foreign key to the StreamRef column of the MsiPatchHeaders table."), | ||
1014 | }, | ||
1015 | symbolIdIsPrimaryKey: false | ||
1016 | ); | ||
1017 | |||
1018 | public static readonly TableDefinition PatchPackage = new TableDefinition( | ||
1019 | "PatchPackage", | ||
1020 | SymbolDefinitions.PatchPackage, | ||
1021 | new[] | ||
1022 | { | ||
1023 | new ColumnDefinition("PatchId", ColumnType.String, 38, primaryKey: true, nullable: false, ColumnCategory.Guid, description: "A unique string GUID representing this patch."), | ||
1024 | new ColumnDefinition("Media_", ColumnType.Number, 2, primaryKey: false, nullable: false, ColumnCategory.Unknown, minValue: 0, maxValue: 32767, description: "Foreign key to DiskId column of Media table. Indicates the disk containing the patch package."), | ||
1025 | }, | ||
1026 | symbolIdIsPrimaryKey: false | ||
1027 | ); | ||
1028 | |||
1029 | public static readonly TableDefinition PublishComponent = new TableDefinition( | ||
1030 | "PublishComponent", | ||
1031 | SymbolDefinitions.PublishComponent, | ||
1032 | new[] | ||
1033 | { | ||
1034 | new ColumnDefinition("ComponentId", ColumnType.String, 38, primaryKey: true, nullable: false, ColumnCategory.Guid, description: "A string GUID that represents the component id that will be requested by the alien product."), | ||
1035 | new ColumnDefinition("Qualifier", ColumnType.String, 255, primaryKey: true, nullable: false, ColumnCategory.Text, description: "This is defined only when the ComponentId column is an Qualified Component Id. This is the Qualifier for ProvideComponentIndirect."), | ||
1036 | new ColumnDefinition("Component_", ColumnType.String, 72, primaryKey: true, nullable: false, ColumnCategory.Identifier, keyTable: "Component", keyColumn: 1, description: "Foreign key into the Component table.", modularizeType: ColumnModularizeType.Column), | ||
1037 | new ColumnDefinition("AppData", ColumnType.Localized, 0, primaryKey: false, nullable: true, ColumnCategory.Text, description: "This is localisable Application specific data that can be associated with a Qualified Component."), | ||
1038 | new ColumnDefinition("Feature_", ColumnType.String, 38, primaryKey: false, nullable: false, ColumnCategory.Identifier, keyTable: "Feature", keyColumn: 1, description: "Foreign key into the Feature table."), | ||
1039 | }, | ||
1040 | symbolIdIsPrimaryKey: false | ||
1041 | ); | ||
1042 | |||
1043 | public static readonly TableDefinition RadioButton = new TableDefinition( | ||
1044 | "RadioButton", | ||
1045 | SymbolDefinitions.RadioButton, | ||
1046 | new[] | ||
1047 | { | ||
1048 | new ColumnDefinition("Property", ColumnType.String, 72, primaryKey: true, nullable: false, ColumnCategory.Identifier, description: "A named property to be tied to this radio button. All the buttons tied to the same property become part of the same group.", modularizeType: ColumnModularizeType.Column), | ||
1049 | new ColumnDefinition("Order", ColumnType.Number, 2, primaryKey: true, nullable: false, ColumnCategory.Unknown, minValue: 1, maxValue: 32767, description: "A positive integer used to determine the ordering of the items within one list..The integers do not have to be consecutive."), | ||
1050 | new ColumnDefinition("Value", ColumnType.String, 64, primaryKey: false, nullable: false, ColumnCategory.Formatted, description: "The value string associated with this button. Selecting the button will set the associated property to this value.", modularizeType: ColumnModularizeType.Property), | ||
1051 | new ColumnDefinition("X", ColumnType.Number, 2, primaryKey: false, nullable: false, ColumnCategory.Unknown, minValue: 0, maxValue: 32767, description: "The horizontal coordinate of the upper left corner of the bounding rectangle of the radio button.", forceLocalizable: true), | ||
1052 | new ColumnDefinition("Y", ColumnType.Number, 2, primaryKey: false, nullable: false, ColumnCategory.Unknown, minValue: 0, maxValue: 32767, description: "The vertical coordinate of the upper left corner of the bounding rectangle of the radio button.", forceLocalizable: true), | ||
1053 | new ColumnDefinition("Width", ColumnType.Number, 2, primaryKey: false, nullable: false, ColumnCategory.Unknown, minValue: 0, maxValue: 32767, description: "The width of the button.", forceLocalizable: true), | ||
1054 | new ColumnDefinition("Height", ColumnType.Number, 2, primaryKey: false, nullable: false, ColumnCategory.Unknown, minValue: 0, maxValue: 32767, description: "The height of the button.", forceLocalizable: true), | ||
1055 | new ColumnDefinition("Text", ColumnType.Localized, 0, primaryKey: false, nullable: true, ColumnCategory.Text, description: "The visible title to be assigned to the radio button."), | ||
1056 | new ColumnDefinition("Help", ColumnType.Localized, 50, primaryKey: false, nullable: true, ColumnCategory.Text, description: "The help strings used with the button. The text is optional."), | ||
1057 | }, | ||
1058 | symbolIdIsPrimaryKey: false | ||
1059 | ); | ||
1060 | |||
1061 | public static readonly TableDefinition Registry = new TableDefinition( | ||
1062 | "Registry", | ||
1063 | SymbolDefinitions.Registry, | ||
1064 | new[] | ||
1065 | { | ||
1066 | new ColumnDefinition("Registry", ColumnType.String, 72, primaryKey: true, nullable: false, ColumnCategory.Identifier, description: "Primary key, non-localized token.", modularizeType: ColumnModularizeType.Column), | ||
1067 | new ColumnDefinition("Root", ColumnType.Number, 2, primaryKey: false, nullable: false, ColumnCategory.Unknown, minValue: -1, maxValue: 3, description: "The predefined root key for the registry value, one of rrkEnum."), | ||
1068 | new ColumnDefinition("Key", ColumnType.Localized, 255, primaryKey: false, nullable: false, ColumnCategory.RegPath, description: "The key for the registry value.", modularizeType: ColumnModularizeType.Property), | ||
1069 | new ColumnDefinition("Name", ColumnType.Localized, 255, primaryKey: false, nullable: true, ColumnCategory.Formatted, description: "The registry value name.", modularizeType: ColumnModularizeType.Property), | ||
1070 | new ColumnDefinition("Value", ColumnType.Localized, 0, primaryKey: false, nullable: true, ColumnCategory.Formatted, description: "The registry value.", modularizeType: ColumnModularizeType.Property), | ||
1071 | new ColumnDefinition("Component_", ColumnType.String, 72, primaryKey: false, nullable: false, ColumnCategory.Identifier, keyTable: "Component", keyColumn: 1, description: "Foreign key into the Component table referencing component that controls the installing of the registry value.", modularizeType: ColumnModularizeType.Column), | ||
1072 | }, | ||
1073 | symbolIdIsPrimaryKey: true | ||
1074 | ); | ||
1075 | |||
1076 | public static readonly TableDefinition RegLocator = new TableDefinition( | ||
1077 | "RegLocator", | ||
1078 | SymbolDefinitions.RegLocator, | ||
1079 | new[] | ||
1080 | { | ||
1081 | new ColumnDefinition("Signature_", ColumnType.String, 72, primaryKey: true, nullable: false, ColumnCategory.Identifier, description: "The table key. The Signature_ represents a unique file signature and is also the foreign key in the Signature table. If the type is 0, the registry values refers a directory, and _Signature is not a foreign key.", modularizeType: ColumnModularizeType.Column), | ||
1082 | new ColumnDefinition("Root", ColumnType.Number, 2, primaryKey: false, nullable: false, ColumnCategory.Unknown, minValue: 0, maxValue: 3, description: "The predefined root key for the registry value, one of rrkEnum."), | ||
1083 | new ColumnDefinition("Key", ColumnType.String, 255, primaryKey: false, nullable: false, ColumnCategory.RegPath, description: "The key for the registry value.", modularizeType: ColumnModularizeType.Property, forceLocalizable: true), | ||
1084 | new ColumnDefinition("Name", ColumnType.String, 255, primaryKey: false, nullable: true, ColumnCategory.Formatted, description: "The registry value name.", modularizeType: ColumnModularizeType.Property, forceLocalizable: true), | ||
1085 | new ColumnDefinition("Type", ColumnType.Number, 2, primaryKey: false, nullable: true, ColumnCategory.Unknown, minValue: 0, maxValue: 18, description: "An integer value that determines if the registry value is a filename or a directory location or to be used as is w/o interpretation."), | ||
1086 | }, | ||
1087 | symbolIdIsPrimaryKey: true | ||
1088 | ); | ||
1089 | |||
1090 | public static readonly TableDefinition RemoveFile = new TableDefinition( | ||
1091 | "RemoveFile", | ||
1092 | SymbolDefinitions.RemoveFile, | ||
1093 | new[] | ||
1094 | { | ||
1095 | new ColumnDefinition("FileKey", ColumnType.String, 72, primaryKey: true, nullable: false, ColumnCategory.Identifier, description: "Primary key used to identify a particular file entry", modularizeType: ColumnModularizeType.Column), | ||
1096 | new ColumnDefinition("Component_", ColumnType.String, 72, primaryKey: false, nullable: false, ColumnCategory.Identifier, keyTable: "Component", keyColumn: 1, description: "Foreign key referencing Component that controls the file to be removed.", modularizeType: ColumnModularizeType.Column), | ||
1097 | new ColumnDefinition("FileName", ColumnType.Localized, 255, primaryKey: false, nullable: true, ColumnCategory.WildCardFilename, description: "Name of the file to be removed."), | ||
1098 | new ColumnDefinition("DirProperty", ColumnType.String, 72, primaryKey: false, nullable: false, ColumnCategory.Identifier, description: "Name of a property whose value is assumed to resolve to the full pathname to the folder of the file to be removed.", modularizeType: ColumnModularizeType.Column), | ||
1099 | new ColumnDefinition("InstallMode", ColumnType.Number, 2, primaryKey: false, nullable: false, ColumnCategory.Unknown, possibilities: "1;2;3", description: "Installation option, one of iimEnum."), | ||
1100 | }, | ||
1101 | symbolIdIsPrimaryKey: true | ||
1102 | ); | ||
1103 | |||
1104 | public static readonly TableDefinition RemoveIniFile = new TableDefinition( | ||
1105 | "RemoveIniFile", | ||
1106 | null, | ||
1107 | new[] | ||
1108 | { | ||
1109 | new ColumnDefinition("RemoveIniFile", ColumnType.String, 72, primaryKey: true, nullable: false, ColumnCategory.Identifier, description: "Primary key, non-localized token.", modularizeType: ColumnModularizeType.Column), | ||
1110 | new ColumnDefinition("FileName", ColumnType.Localized, 255, primaryKey: false, nullable: false, ColumnCategory.Filename, description: "The .INI file name in which to delete the information"), | ||
1111 | new ColumnDefinition("DirProperty", ColumnType.String, 72, primaryKey: false, nullable: true, ColumnCategory.Identifier, description: "Foreign key into the Directory table denoting the directory where the .INI file is.", modularizeType: ColumnModularizeType.Column), | ||
1112 | new ColumnDefinition("Section", ColumnType.Localized, 96, primaryKey: false, nullable: false, ColumnCategory.Formatted, description: "The .INI file Section.", modularizeType: ColumnModularizeType.Property), | ||
1113 | new ColumnDefinition("Key", ColumnType.Localized, 128, primaryKey: false, nullable: false, ColumnCategory.Formatted, description: "The .INI file key below Section.", modularizeType: ColumnModularizeType.Property), | ||
1114 | new ColumnDefinition("Value", ColumnType.Localized, 255, primaryKey: false, nullable: true, ColumnCategory.Formatted, description: "The value to be deleted. The value is required when Action is iifIniRemoveTag", modularizeType: ColumnModularizeType.Property), | ||
1115 | new ColumnDefinition("Action", ColumnType.Number, 2, primaryKey: false, nullable: false, ColumnCategory.Unknown, possibilities: "2;4", description: "The type of modification to be made, one of iifEnum."), | ||
1116 | new ColumnDefinition("Component_", ColumnType.String, 72, primaryKey: false, nullable: false, ColumnCategory.Identifier, keyTable: "Component", keyColumn: 1, description: "Foreign key into the Component table referencing component that controls the deletion of the .INI value.", modularizeType: ColumnModularizeType.Column), | ||
1117 | }, | ||
1118 | symbolIdIsPrimaryKey: true | ||
1119 | ); | ||
1120 | |||
1121 | public static readonly TableDefinition RemoveRegistry = new TableDefinition( | ||
1122 | "RemoveRegistry", | ||
1123 | SymbolDefinitions.RemoveRegistry, | ||
1124 | new[] | ||
1125 | { | ||
1126 | new ColumnDefinition("RemoveRegistry", ColumnType.String, 72, primaryKey: true, nullable: false, ColumnCategory.Identifier, description: "Primary key, non-localized token.", modularizeType: ColumnModularizeType.Column), | ||
1127 | new ColumnDefinition("Root", ColumnType.Number, 2, primaryKey: false, nullable: false, ColumnCategory.Unknown, minValue: -1, maxValue: 3, description: "The predefined root key for the registry value, one of rrkEnum"), | ||
1128 | new ColumnDefinition("Key", ColumnType.Localized, 255, primaryKey: false, nullable: false, ColumnCategory.RegPath, description: "The key for the registry value.", modularizeType: ColumnModularizeType.Property), | ||
1129 | new ColumnDefinition("Name", ColumnType.Localized, 255, primaryKey: false, nullable: true, ColumnCategory.Formatted, description: "The registry value name.", modularizeType: ColumnModularizeType.Property), | ||
1130 | new ColumnDefinition("Component_", ColumnType.String, 72, primaryKey: false, nullable: false, ColumnCategory.Identifier, keyTable: "Component", keyColumn: 1, description: "Foreign key into the Component table referencing component that controls the deletion of the registry value.", modularizeType: ColumnModularizeType.Column), | ||
1131 | }, | ||
1132 | symbolIdIsPrimaryKey: true | ||
1133 | ); | ||
1134 | |||
1135 | public static readonly TableDefinition ReserveCost = new TableDefinition( | ||
1136 | "ReserveCost", | ||
1137 | SymbolDefinitions.ReserveCost, | ||
1138 | new[] | ||
1139 | { | ||
1140 | new ColumnDefinition("ReserveKey", ColumnType.String, 72, primaryKey: true, nullable: false, ColumnCategory.Identifier, description: "Primary key that uniquely identifies a particular ReserveCost record", modularizeType: ColumnModularizeType.Column), | ||
1141 | new ColumnDefinition("Component_", ColumnType.String, 72, primaryKey: false, nullable: false, ColumnCategory.Identifier, keyTable: "Component", keyColumn: 1, description: "Reserve a specified amount of space if this component is to be installed.", modularizeType: ColumnModularizeType.Column), | ||
1142 | new ColumnDefinition("ReserveFolder", ColumnType.String, 72, primaryKey: false, nullable: true, ColumnCategory.Identifier, description: "Name of a property whose value is assumed to resolve to the full path to the destination directory", modularizeType: ColumnModularizeType.Column), | ||
1143 | new ColumnDefinition("ReserveLocal", ColumnType.Number, 4, primaryKey: false, nullable: false, ColumnCategory.Unknown, minValue: 0, maxValue: 2147483647, description: "Disk space to reserve if linked component is installed locally."), | ||
1144 | new ColumnDefinition("ReserveSource", ColumnType.Number, 4, primaryKey: false, nullable: false, ColumnCategory.Unknown, minValue: 0, maxValue: 2147483647, description: "Disk space to reserve if linked component is installed to run from the source location."), | ||
1145 | }, | ||
1146 | symbolIdIsPrimaryKey: true | ||
1147 | ); | ||
1148 | |||
1149 | public static readonly TableDefinition SelfReg = new TableDefinition( | ||
1150 | "SelfReg", | ||
1151 | null, | ||
1152 | new[] | ||
1153 | { | ||
1154 | new ColumnDefinition("File_", ColumnType.String, 72, primaryKey: true, nullable: false, ColumnCategory.Identifier, keyTable: "File", keyColumn: 1, description: "Foreign key into the File table denoting the module that needs to be registered.", modularizeType: ColumnModularizeType.Column), | ||
1155 | new ColumnDefinition("Cost", ColumnType.Number, 2, primaryKey: false, nullable: true, ColumnCategory.Unknown, minValue: 0, maxValue: 32767, description: "The cost of registering the module."), | ||
1156 | }, | ||
1157 | symbolIdIsPrimaryKey: false | ||
1158 | ); | ||
1159 | |||
1160 | public static readonly TableDefinition ServiceControl = new TableDefinition( | ||
1161 | "ServiceControl", | ||
1162 | SymbolDefinitions.ServiceControl, | ||
1163 | new[] | ||
1164 | { | ||
1165 | new ColumnDefinition("ServiceControl", ColumnType.String, 72, primaryKey: true, nullable: false, ColumnCategory.Identifier, description: "Primary key, non-localized token.", modularizeType: ColumnModularizeType.Column), | ||
1166 | new ColumnDefinition("Name", ColumnType.Localized, 255, primaryKey: false, nullable: false, ColumnCategory.Formatted, description: "Name of a service. /, \\, comma and space are invalid", modularizeType: ColumnModularizeType.Property), | ||
1167 | new ColumnDefinition("Event", ColumnType.Number, 2, primaryKey: false, nullable: false, ColumnCategory.Unknown, minValue: 0, maxValue: 187, description: "Bit field: Install: 0x1 = Start, 0x2 = Stop, 0x8 = Delete, Uninstall: 0x10 = Start, 0x20 = Stop, 0x80 = Delete"), | ||
1168 | new ColumnDefinition("Arguments", ColumnType.Localized, 255, primaryKey: false, nullable: true, ColumnCategory.Formatted, description: "Arguments for the service. Separate by [~].", modularizeType: ColumnModularizeType.Property), | ||
1169 | new ColumnDefinition("Wait", ColumnType.Number, 2, primaryKey: false, nullable: true, ColumnCategory.Unknown, minValue: 0, maxValue: 1, description: "Boolean for whether to wait for the service to fully start"), | ||
1170 | new ColumnDefinition("Component_", ColumnType.String, 72, primaryKey: false, nullable: false, ColumnCategory.Identifier, keyTable: "Component", keyColumn: 1, description: "Required foreign key into the Component Table that controls the startup of the service", modularizeType: ColumnModularizeType.Column), | ||
1171 | }, | ||
1172 | symbolIdIsPrimaryKey: true | ||
1173 | ); | ||
1174 | |||
1175 | public static readonly TableDefinition ServiceInstall = new TableDefinition( | ||
1176 | "ServiceInstall", | ||
1177 | SymbolDefinitions.ServiceInstall, | ||
1178 | new[] | ||
1179 | { | ||
1180 | new ColumnDefinition("ServiceInstall", ColumnType.String, 72, primaryKey: true, nullable: false, ColumnCategory.Identifier, description: "Primary key, non-localized token.", modularizeType: ColumnModularizeType.Column), | ||
1181 | new ColumnDefinition("Name", ColumnType.String, 255, primaryKey: false, nullable: false, ColumnCategory.Formatted, description: "Internal Name of the Service", modularizeType: ColumnModularizeType.Property), | ||
1182 | new ColumnDefinition("DisplayName", ColumnType.Localized, 255, primaryKey: false, nullable: true, ColumnCategory.Formatted, description: "External Name of the Service", modularizeType: ColumnModularizeType.Property), | ||
1183 | new ColumnDefinition("ServiceType", ColumnType.Number, 4, primaryKey: false, nullable: false, ColumnCategory.Unknown, minValue: -2147483647, maxValue: 2147483647, description: "Type of the service"), | ||
1184 | new ColumnDefinition("StartType", ColumnType.Number, 4, primaryKey: false, nullable: false, ColumnCategory.Unknown, minValue: 0, maxValue: 4, description: "Type of the service"), | ||
1185 | new ColumnDefinition("ErrorControl", ColumnType.Number, 4, primaryKey: false, nullable: false, ColumnCategory.Unknown, minValue: -2147483647, maxValue: 2147483647, description: "Severity of error if service fails to start"), | ||
1186 | new ColumnDefinition("LoadOrderGroup", ColumnType.String, 255, primaryKey: false, nullable: true, ColumnCategory.Formatted, description: "LoadOrderGroup", modularizeType: ColumnModularizeType.Property), | ||
1187 | new ColumnDefinition("Dependencies", ColumnType.String, 255, primaryKey: false, nullable: true, ColumnCategory.Formatted, description: "Other services this depends on to start. Separate by [~], and end with [~][~]", modularizeType: ColumnModularizeType.Property), | ||
1188 | new ColumnDefinition("StartName", ColumnType.String, 255, primaryKey: false, nullable: true, ColumnCategory.Formatted, description: "User or object name to run service as", modularizeType: ColumnModularizeType.Property), | ||
1189 | new ColumnDefinition("Password", ColumnType.String, 255, primaryKey: false, nullable: true, ColumnCategory.Formatted, description: "password to run service with. (with StartName)", modularizeType: ColumnModularizeType.Property), | ||
1190 | new ColumnDefinition("Arguments", ColumnType.String, 255, primaryKey: false, nullable: true, ColumnCategory.Formatted, description: "Arguments to include in every start of the service, passed to WinMain", modularizeType: ColumnModularizeType.Property), | ||
1191 | new ColumnDefinition("Component_", ColumnType.String, 72, primaryKey: false, nullable: false, ColumnCategory.Identifier, keyTable: "Component", keyColumn: 1, description: "Required foreign key into the Component Table that controls the startup of the service", modularizeType: ColumnModularizeType.Column), | ||
1192 | new ColumnDefinition("Description", ColumnType.Localized, 255, primaryKey: false, nullable: true, ColumnCategory.Text, description: "Description of service.", modularizeType: ColumnModularizeType.Property), | ||
1193 | }, | ||
1194 | symbolIdIsPrimaryKey: true | ||
1195 | ); | ||
1196 | |||
1197 | public static readonly TableDefinition MsiServiceConfig = new TableDefinition( | ||
1198 | "MsiServiceConfig", | ||
1199 | SymbolDefinitions.MsiServiceConfig, | ||
1200 | new[] | ||
1201 | { | ||
1202 | new ColumnDefinition("MsiServiceConfig", ColumnType.String, 72, primaryKey: true, nullable: false, ColumnCategory.Identifier, description: "Primary key, non-localized token.", modularizeType: ColumnModularizeType.Column), | ||
1203 | new ColumnDefinition("Name", ColumnType.Localized, 255, primaryKey: false, nullable: false, ColumnCategory.Formatted, description: "Name of a service. /, \\, comma and space are invalid", modularizeType: ColumnModularizeType.Property), | ||
1204 | new ColumnDefinition("Event", ColumnType.Number, 2, primaryKey: false, nullable: false, ColumnCategory.Unknown, minValue: 0, maxValue: 7, description: "Bit field: 0x1 = Install, 0x2 = Uninstall, 0x4 = Reinstall"), | ||
1205 | new ColumnDefinition("ConfigType", ColumnType.Number, 4, primaryKey: false, nullable: false, ColumnCategory.Unknown, minValue: -2147483647, maxValue: 2147483647, description: "Service Configuration Option"), | ||
1206 | new ColumnDefinition("Argument", ColumnType.String, 0, primaryKey: false, nullable: true, ColumnCategory.Text, description: "Argument(s) for service configuration. Value depends on the content of the ConfigType field"), | ||
1207 | new ColumnDefinition("Component_", ColumnType.String, 72, primaryKey: false, nullable: false, ColumnCategory.Identifier, keyTable: "Component", keyColumn: 1, description: "Required foreign key into the Component Table that controls the configuration of the service", modularizeType: ColumnModularizeType.Column), | ||
1208 | }, | ||
1209 | symbolIdIsPrimaryKey: true | ||
1210 | ); | ||
1211 | |||
1212 | public static readonly TableDefinition MsiServiceConfigFailureActions = new TableDefinition( | ||
1213 | "MsiServiceConfigFailureActions", | ||
1214 | SymbolDefinitions.MsiServiceConfigFailureActions, | ||
1215 | new[] | ||
1216 | { | ||
1217 | new ColumnDefinition("MsiServiceConfigFailureActions", ColumnType.String, 72, primaryKey: true, nullable: false, ColumnCategory.Identifier, description: "Primary key, non-localized token", modularizeType: ColumnModularizeType.Column), | ||
1218 | new ColumnDefinition("Name", ColumnType.Localized, 255, primaryKey: false, nullable: false, ColumnCategory.Formatted, description: "Name of a service. /, \\, comma and space are invalid", modularizeType: ColumnModularizeType.Property), | ||
1219 | new ColumnDefinition("Event", ColumnType.Number, 2, primaryKey: false, nullable: false, ColumnCategory.Unknown, minValue: 0, maxValue: 7, description: "Bit field: 0x1 = Install, 0x2 = Uninstall, 0x4 = Reinstall"), | ||
1220 | new ColumnDefinition("ResetPeriod", ColumnType.Number, 4, primaryKey: false, nullable: true, ColumnCategory.Unknown, minValue: 0, maxValue: 2147483647, description: "Time in seconds after which to reset the failure count to zero. Leave blank if it should never be reset"), | ||
1221 | new ColumnDefinition("RebootMessage", ColumnType.Localized, 255, primaryKey: false, nullable: true, ColumnCategory.Formatted, description: "Message to be broadcast to server users before rebooting"), | ||
1222 | new ColumnDefinition("Command", ColumnType.Localized, 255, primaryKey: false, nullable: true, ColumnCategory.Formatted, description: "Command line of the process to CreateProcess function to execute"), | ||
1223 | new ColumnDefinition("Actions", ColumnType.String, 0, primaryKey: false, nullable: true, ColumnCategory.Text, description: "A list of integer actions separated by [~] delimiters: 0 = SC_ACTION_NONE, 1 = SC_ACTION_RESTART, 2 = SC_ACTION_REBOOT, 3 = SC_ACTION_RUN_COMMAND. Terminate with [~][~]"), | ||
1224 | new ColumnDefinition("DelayActions", ColumnType.String, 0, primaryKey: false, nullable: true, ColumnCategory.Text, description: "A list of delays (time in milli-seconds), separated by [~] delmiters, to wait before taking the corresponding Action. Terminate with [~][~]"), | ||
1225 | new ColumnDefinition("Component_", ColumnType.String, 72, primaryKey: false, nullable: false, ColumnCategory.Identifier, keyTable: "Component", keyColumn: 1, description: "Required foreign key into the Component Table that controls the configuration of failure actions for the service", modularizeType: ColumnModularizeType.Column), | ||
1226 | }, | ||
1227 | symbolIdIsPrimaryKey: true | ||
1228 | ); | ||
1229 | |||
1230 | public static readonly TableDefinition Shortcut = new TableDefinition( | ||
1231 | "Shortcut", | ||
1232 | SymbolDefinitions.Shortcut, | ||
1233 | new[] | ||
1234 | { | ||
1235 | new ColumnDefinition("Shortcut", ColumnType.String, 72, primaryKey: true, nullable: false, ColumnCategory.Identifier, description: "Primary key, non-localized token.", modularizeType: ColumnModularizeType.Column), | ||
1236 | new ColumnDefinition("Directory_", ColumnType.String, 72, primaryKey: false, nullable: false, ColumnCategory.Identifier, keyTable: "Directory", keyColumn: 1, description: "Foreign key into the Directory table denoting the directory where the shortcut file is created.", modularizeType: ColumnModularizeType.Column), | ||
1237 | new ColumnDefinition("Name", ColumnType.Localized, 128, primaryKey: false, nullable: false, ColumnCategory.Filename, description: "The name of the shortcut to be created."), | ||
1238 | new ColumnDefinition("Component_", ColumnType.String, 72, primaryKey: false, nullable: false, ColumnCategory.Identifier, keyTable: "Component", keyColumn: 1, description: "Foreign key into the Component table denoting the component whose selection gates the the shortcut creation/deletion.", modularizeType: ColumnModularizeType.Column), | ||
1239 | new ColumnDefinition("Target", ColumnType.String, 72, primaryKey: false, nullable: false, ColumnCategory.Shortcut, description: "The shortcut target. This is usually a property that is expanded to a file or a folder that the shortcut points to.", modularizeType: ColumnModularizeType.Property), | ||
1240 | new ColumnDefinition("Arguments", ColumnType.String, 255, primaryKey: false, nullable: true, ColumnCategory.Formatted, description: "The command-line arguments for the shortcut.", modularizeType: ColumnModularizeType.Property), | ||
1241 | new ColumnDefinition("Description", ColumnType.Localized, 255, primaryKey: false, nullable: true, ColumnCategory.Text, description: "The description for the shortcut."), | ||
1242 | new ColumnDefinition("Hotkey", ColumnType.Number, 2, primaryKey: false, nullable: true, ColumnCategory.Unknown, minValue: 0, maxValue: 32767, description: "The hotkey for the shortcut. It has the virtual-key code for the key in the low-order byte, and the modifier flags in the high-order byte. "), | ||
1243 | new ColumnDefinition("Icon_", ColumnType.String, 72, primaryKey: false, nullable: true, ColumnCategory.Identifier, keyTable: "Icon", keyColumn: 1, description: "Foreign key into the File table denoting the external icon file for the shortcut.", modularizeType: ColumnModularizeType.Icon), | ||
1244 | new ColumnDefinition("IconIndex", ColumnType.Number, 2, primaryKey: false, nullable: true, ColumnCategory.Unknown, minValue: -32767, maxValue: 32767, description: "The icon index for the shortcut."), | ||
1245 | new ColumnDefinition("ShowCmd", ColumnType.Number, 2, primaryKey: false, nullable: true, ColumnCategory.Unknown, possibilities: "1;3;7", description: "The show command for the application window.The following values may be used."), | ||
1246 | new ColumnDefinition("WkDir", ColumnType.String, 72, primaryKey: false, nullable: true, ColumnCategory.Identifier, description: "Name of property defining location of working directory.", modularizeType: ColumnModularizeType.Column), | ||
1247 | new ColumnDefinition("DisplayResourceDLL", ColumnType.String, 255, primaryKey: false, nullable: true, ColumnCategory.Formatted, description: "The Formatted string providing the full path to the language neutral file containing the MUI Manifest.", modularizeType: ColumnModularizeType.Property), | ||
1248 | new ColumnDefinition("DisplayResourceId", ColumnType.Number, 2, primaryKey: false, nullable: true, ColumnCategory.Unknown, minValue: 0, maxValue: 32767, description: "The display name index for the shortcut. This must be a non-negative number."), | ||
1249 | new ColumnDefinition("DescriptionResourceDLL", ColumnType.String, 255, primaryKey: false, nullable: true, ColumnCategory.Formatted, description: "The Formatted string providing the full path to the language neutral file containing the MUI Manifest.", modularizeType: ColumnModularizeType.Property), | ||
1250 | new ColumnDefinition("DescriptionResourceId", ColumnType.Number, 2, primaryKey: false, nullable: true, ColumnCategory.Unknown, minValue: 0, maxValue: 32767, description: "The description name index for the shortcut. This must be a non-negative number."), | ||
1251 | }, | ||
1252 | symbolIdIsPrimaryKey: true | ||
1253 | ); | ||
1254 | |||
1255 | public static readonly TableDefinition MsiShortcutProperty = new TableDefinition( | ||
1256 | "MsiShortcutProperty", | ||
1257 | SymbolDefinitions.MsiShortcutProperty, | ||
1258 | new[] | ||
1259 | { | ||
1260 | new ColumnDefinition("MsiShortcutProperty", ColumnType.String, 72, primaryKey: true, nullable: false, ColumnCategory.Identifier, description: "Primary key, non-localized token", modularizeType: ColumnModularizeType.Column), | ||
1261 | new ColumnDefinition("Shortcut_", ColumnType.String, 72, primaryKey: false, nullable: false, ColumnCategory.Identifier, keyTable: "Shortcut", keyColumn: 1, description: "Foreign key into the Shortcut table", modularizeType: ColumnModularizeType.Column), | ||
1262 | new ColumnDefinition("PropertyKey", ColumnType.String, 0, primaryKey: false, nullable: false, ColumnCategory.Formatted, description: "Canonical string representation of the Property Key being set", modularizeType: ColumnModularizeType.Property), | ||
1263 | new ColumnDefinition("PropVariantValue", ColumnType.String, 0, primaryKey: false, nullable: false, ColumnCategory.Formatted, description: "String representation of the value in the property", modularizeType: ColumnModularizeType.Property), | ||
1264 | }, | ||
1265 | symbolIdIsPrimaryKey: true | ||
1266 | ); | ||
1267 | |||
1268 | public static readonly TableDefinition Signature = new TableDefinition( | ||
1269 | "Signature", | ||
1270 | SymbolDefinitions.Signature, | ||
1271 | new[] | ||
1272 | { | ||
1273 | new ColumnDefinition("Signature", ColumnType.String, 72, primaryKey: true, nullable: false, ColumnCategory.Identifier, description: "The table key. The Signature represents a unique file signature.", modularizeType: ColumnModularizeType.Column), | ||
1274 | new ColumnDefinition("FileName", ColumnType.String, 255, primaryKey: false, nullable: false, ColumnCategory.Text, description: "The name of the file. This may contain a \"short name|long name\" pair."), | ||
1275 | new ColumnDefinition("MinVersion", ColumnType.String, 20, primaryKey: false, nullable: true, ColumnCategory.Text, description: "The minimum version of the file."), | ||
1276 | new ColumnDefinition("MaxVersion", ColumnType.String, 20, primaryKey: false, nullable: true, ColumnCategory.Text, description: "The maximum version of the file."), | ||
1277 | new ColumnDefinition("MinSize", ColumnType.Number, 4, primaryKey: false, nullable: true, ColumnCategory.Unknown, minValue: 0, maxValue: 2147483647, description: "The minimum size of the file."), | ||
1278 | new ColumnDefinition("MaxSize", ColumnType.Number, 4, primaryKey: false, nullable: true, ColumnCategory.Unknown, minValue: 0, maxValue: 2147483647, description: "The maximum size of the file. "), | ||
1279 | new ColumnDefinition("MinDate", ColumnType.Number, 4, primaryKey: false, nullable: true, ColumnCategory.Unknown, minValue: 0, maxValue: 2147483647, description: "The minimum creation date of the file."), | ||
1280 | new ColumnDefinition("MaxDate", ColumnType.Number, 4, primaryKey: false, nullable: true, ColumnCategory.Unknown, minValue: 0, maxValue: 2147483647, description: "The maximum creation date of the file."), | ||
1281 | new ColumnDefinition("Languages", ColumnType.String, 255, primaryKey: false, nullable: true, ColumnCategory.Language, description: "The languages supported by the file."), | ||
1282 | }, | ||
1283 | symbolIdIsPrimaryKey: true | ||
1284 | ); | ||
1285 | |||
1286 | public static readonly TableDefinition SoftwareIdentificationTag = new TableDefinition( | ||
1287 | "SoftwareIdentificationTag", | ||
1288 | SymbolDefinitions.SoftwareIdentificationTag, | ||
1289 | new[] | ||
1290 | { | ||
1291 | new ColumnDefinition("File_", ColumnType.String, 72, primaryKey: true, nullable: false, ColumnCategory.Identifier, keyTable: "File", keyColumn: 1, description: "The file that installs the software id tag.", modularizeType: ColumnModularizeType.Column), | ||
1292 | new ColumnDefinition("Regid", ColumnType.String, 0, primaryKey: false, nullable: false, ColumnCategory.Text, description: "The regid for the software id tag."), | ||
1293 | new ColumnDefinition("TagId", ColumnType.String, 0, primaryKey: false, nullable: false, ColumnCategory.Text, description: "The unique id for the software id tag."), | ||
1294 | new ColumnDefinition("PersistentId", ColumnType.String, 0, primaryKey: false, nullable: false, ColumnCategory.Text, description: "The type of the software id tag."), | ||
1295 | new ColumnDefinition("Alias", ColumnType.String, 0, primaryKey: false, nullable: true, ColumnCategory.Text, description: "Alias for the software id tag."), | ||
1296 | }, | ||
1297 | symbolIdIsPrimaryKey: false | ||
1298 | ); | ||
1299 | |||
1300 | public static readonly TableDefinition TextStyle = new TableDefinition( | ||
1301 | "TextStyle", | ||
1302 | SymbolDefinitions.TextStyle, | ||
1303 | new[] | ||
1304 | { | ||
1305 | new ColumnDefinition("TextStyle", ColumnType.String, 72, primaryKey: true, nullable: false, ColumnCategory.Identifier, description: "Name of the style. The primary key of this table. This name is embedded in the texts to indicate a style change."), | ||
1306 | new ColumnDefinition("FaceName", ColumnType.String, 32, primaryKey: false, nullable: false, ColumnCategory.Text, description: "A string indicating the name of the font used. Required. The string must be at most 31 characters long.", forceLocalizable: true), | ||
1307 | new ColumnDefinition("Size", ColumnType.Number, 2, primaryKey: false, nullable: false, ColumnCategory.Unknown, minValue: 0, maxValue: 32767, description: "The size of the font used. This size is given in our units (1/12 of the system font height). Assuming that the system font is set to 12 point size, this is equivalent to the point size.", forceLocalizable: true), | ||
1308 | new ColumnDefinition("Color", ColumnType.Number, 4, primaryKey: false, nullable: true, ColumnCategory.Unknown, minValue: 0, maxValue: 16777215, description: "A long integer indicating the color of the string in the RGB format (Red, Green, Blue each 0-255, RGB = R + 256*G + 256^2*B)."), | ||
1309 | new ColumnDefinition("StyleBits", ColumnType.Number, 2, primaryKey: false, nullable: true, ColumnCategory.Unknown, minValue: 0, maxValue: 15, description: "A combination of style bits."), | ||
1310 | }, | ||
1311 | symbolIdIsPrimaryKey: true | ||
1312 | ); | ||
1313 | |||
1314 | public static readonly TableDefinition TypeLib = new TableDefinition( | ||
1315 | "TypeLib", | ||
1316 | SymbolDefinitions.TypeLib, | ||
1317 | new[] | ||
1318 | { | ||
1319 | new ColumnDefinition("LibID", ColumnType.String, 38, primaryKey: true, nullable: false, ColumnCategory.Guid, description: "The GUID that represents the library."), | ||
1320 | new ColumnDefinition("Language", ColumnType.Number, 2, primaryKey: true, nullable: false, ColumnCategory.Unknown, minValue: 0, maxValue: 32767, description: "The language of the library."), | ||
1321 | new ColumnDefinition("Component_", ColumnType.String, 72, primaryKey: true, nullable: false, ColumnCategory.Identifier, keyTable: "Component", keyColumn: 1, description: "Required foreign key into the Component Table, specifying the component for which to return a path when called through LocateComponent.", modularizeType: ColumnModularizeType.Column), | ||
1322 | new ColumnDefinition("Version", ColumnType.Number, 4, primaryKey: false, nullable: true, ColumnCategory.Unknown, minValue: 0, maxValue: 16777215, description: "The version of the library. The minor version is in the lower 8 bits of the integer. The major version is in the next 16 bits. "), | ||
1323 | new ColumnDefinition("Description", ColumnType.Localized, 128, primaryKey: false, nullable: true, ColumnCategory.Text), | ||
1324 | new ColumnDefinition("Directory_", ColumnType.String, 72, primaryKey: false, nullable: true, ColumnCategory.Identifier, keyTable: "Directory", keyColumn: 1, description: "Optional. The foreign key into the Directory table denoting the path to the help file for the type library.", modularizeType: ColumnModularizeType.Column), | ||
1325 | new ColumnDefinition("Feature_", ColumnType.String, 38, primaryKey: false, nullable: false, ColumnCategory.Identifier, keyTable: "Feature", keyColumn: 1, description: "Required foreign key into the Feature Table, specifying the feature to validate or install in order for the type library to be operational."), | ||
1326 | new ColumnDefinition("Cost", ColumnType.Number, 4, primaryKey: false, nullable: true, ColumnCategory.Unknown, minValue: 0, maxValue: 2147483647, description: "The cost associated with the registration of the typelib. This column is currently optional."), | ||
1327 | }, | ||
1328 | symbolIdIsPrimaryKey: false | ||
1329 | ); | ||
1330 | |||
1331 | public static readonly TableDefinition UIText = new TableDefinition( | ||
1332 | "UIText", | ||
1333 | SymbolDefinitions.UIText, | ||
1334 | new[] | ||
1335 | { | ||
1336 | new ColumnDefinition("Key", ColumnType.String, 72, primaryKey: true, nullable: false, ColumnCategory.Identifier, description: "A unique key that identifies the particular string."), | ||
1337 | new ColumnDefinition("Text", ColumnType.Localized, 255, primaryKey: false, nullable: true, ColumnCategory.Text, description: "The localized version of the string."), | ||
1338 | }, | ||
1339 | symbolIdIsPrimaryKey: true | ||
1340 | ); | ||
1341 | |||
1342 | public static readonly TableDefinition Upgrade = new TableDefinition( | ||
1343 | "Upgrade", | ||
1344 | SymbolDefinitions.Upgrade, | ||
1345 | new[] | ||
1346 | { | ||
1347 | new ColumnDefinition("UpgradeCode", ColumnType.String, 38, primaryKey: true, nullable: false, ColumnCategory.Guid, description: "The UpgradeCode GUID belonging to the products in this set."), | ||
1348 | new ColumnDefinition("VersionMin", ColumnType.String, 20, primaryKey: true, nullable: true, ColumnCategory.Text, description: "The minimum ProductVersion of the products in this set. The set may or may not include products with this particular version."), | ||
1349 | new ColumnDefinition("VersionMax", ColumnType.String, 20, primaryKey: true, nullable: true, ColumnCategory.Text, description: "The maximum ProductVersion of the products in this set. The set may or may not include products with this particular version."), | ||
1350 | new ColumnDefinition("Language", ColumnType.String, 255, primaryKey: true, nullable: true, ColumnCategory.Language, description: "A comma-separated list of languages for either products in this set or products not in this set.", forceLocalizable: true), | ||
1351 | new ColumnDefinition("Attributes", ColumnType.Number, 4, primaryKey: true, nullable: false, ColumnCategory.Unknown, minValue: 0, maxValue: 2147483647, description: "The attributes of this product set."), | ||
1352 | new ColumnDefinition("Remove", ColumnType.String, 255, primaryKey: false, nullable: true, ColumnCategory.Formatted, description: "The list of features to remove when uninstalling a product from this set. The default is \"ALL\"."), | ||
1353 | new ColumnDefinition("ActionProperty", ColumnType.String, 72, primaryKey: false, nullable: false, ColumnCategory.UpperCase, description: "The property to set when a product in this set is found."), | ||
1354 | }, | ||
1355 | strongRowType: typeof(UpgradeRow), | ||
1356 | symbolIdIsPrimaryKey: false | ||
1357 | ); | ||
1358 | |||
1359 | public static readonly TableDefinition Verb = new TableDefinition( | ||
1360 | "Verb", | ||
1361 | SymbolDefinitions.Verb, | ||
1362 | new[] | ||
1363 | { | ||
1364 | new ColumnDefinition("Extension_", ColumnType.String, 255, primaryKey: true, nullable: false, ColumnCategory.Text, keyTable: "Extension", keyColumn: 1, description: "The extension associated with the table row."), | ||
1365 | new ColumnDefinition("Verb", ColumnType.String, 32, primaryKey: true, nullable: false, ColumnCategory.Text, description: "The verb for the command."), | ||
1366 | new ColumnDefinition("Sequence", ColumnType.Number, 2, primaryKey: false, nullable: true, ColumnCategory.Unknown, minValue: 0, maxValue: 32767, description: "Order within the verbs for a particular extension. Also used simply to specify the default verb."), | ||
1367 | new ColumnDefinition("Command", ColumnType.Localized, 255, primaryKey: false, nullable: true, ColumnCategory.Formatted, description: "The command text.", modularizeType: ColumnModularizeType.Property), | ||
1368 | new ColumnDefinition("Argument", ColumnType.Localized, 255, primaryKey: false, nullable: true, ColumnCategory.Formatted, description: "Optional value for the command arguments.", modularizeType: ColumnModularizeType.Property), | ||
1369 | }, | ||
1370 | symbolIdIsPrimaryKey: false | ||
1371 | ); | ||
1372 | |||
1373 | public static readonly TableDefinition ModuleAdminExecuteSequence = new TableDefinition( | ||
1374 | "ModuleAdminExecuteSequence", | ||
1375 | null, | ||
1376 | new[] | ||
1377 | { | ||
1378 | new ColumnDefinition("Action", ColumnType.String, 64, primaryKey: true, nullable: false, ColumnCategory.Identifier, description: "Action to insert", modularizeType: ColumnModularizeType.Column), | ||
1379 | new ColumnDefinition("Sequence", ColumnType.Number, 2, primaryKey: false, nullable: true, ColumnCategory.Unknown, minValue: -4, maxValue: 32767, description: "Standard Sequence number"), | ||
1380 | new ColumnDefinition("BaseAction", ColumnType.String, 64, primaryKey: false, nullable: true, ColumnCategory.Identifier, keyTable: "ModuleAdminExecuteSequence", keyColumn: 1, description: "Base action to determine insert location.", modularizeType: ColumnModularizeType.Column), | ||
1381 | new ColumnDefinition("After", ColumnType.Number, 2, primaryKey: false, nullable: true, ColumnCategory.Unknown, minValue: 0, maxValue: 1, description: "Before (0) or After (1)"), | ||
1382 | new ColumnDefinition("Condition", ColumnType.String, 255, primaryKey: false, nullable: true, ColumnCategory.Condition, modularizeType: ColumnModularizeType.Condition, forceLocalizable: true), | ||
1383 | }, | ||
1384 | symbolIdIsPrimaryKey: true | ||
1385 | ); | ||
1386 | |||
1387 | public static readonly TableDefinition ModuleAdminUISequence = new TableDefinition( | ||
1388 | "ModuleAdminUISequence", | ||
1389 | null, | ||
1390 | new[] | ||
1391 | { | ||
1392 | new ColumnDefinition("Action", ColumnType.String, 64, primaryKey: true, nullable: false, ColumnCategory.Identifier, description: "Action to insert", modularizeType: ColumnModularizeType.Column), | ||
1393 | new ColumnDefinition("Sequence", ColumnType.Number, 2, primaryKey: false, nullable: true, ColumnCategory.Unknown, minValue: -4, maxValue: 32767, description: "Standard Sequence number"), | ||
1394 | new ColumnDefinition("BaseAction", ColumnType.String, 64, primaryKey: false, nullable: true, ColumnCategory.Identifier, keyTable: "ModuleAdminUISequence", keyColumn: 1, description: "Base action to determine insert location.", modularizeType: ColumnModularizeType.Column), | ||
1395 | new ColumnDefinition("After", ColumnType.Number, 2, primaryKey: false, nullable: true, ColumnCategory.Unknown, minValue: 0, maxValue: 1, description: "Before (0) or After (1)"), | ||
1396 | new ColumnDefinition("Condition", ColumnType.String, 255, primaryKey: false, nullable: true, ColumnCategory.Condition, modularizeType: ColumnModularizeType.Condition, forceLocalizable: true), | ||
1397 | }, | ||
1398 | symbolIdIsPrimaryKey: true | ||
1399 | ); | ||
1400 | |||
1401 | public static readonly TableDefinition ModuleAdvtExecuteSequence = new TableDefinition( | ||
1402 | "ModuleAdvtExecuteSequence", | ||
1403 | null, | ||
1404 | new[] | ||
1405 | { | ||
1406 | new ColumnDefinition("Action", ColumnType.String, 64, primaryKey: true, nullable: false, ColumnCategory.Identifier, description: "Action to insert", modularizeType: ColumnModularizeType.Column), | ||
1407 | new ColumnDefinition("Sequence", ColumnType.Number, 2, primaryKey: false, nullable: true, ColumnCategory.Unknown, minValue: -4, maxValue: 32767, description: "Standard Sequence number"), | ||
1408 | new ColumnDefinition("BaseAction", ColumnType.String, 64, primaryKey: false, nullable: true, ColumnCategory.Identifier, keyTable: "ModuleAdvtExecuteSequence", keyColumn: 1, description: "Base action to determine insert location.", modularizeType: ColumnModularizeType.Column), | ||
1409 | new ColumnDefinition("After", ColumnType.Number, 2, primaryKey: false, nullable: true, ColumnCategory.Unknown, minValue: 0, maxValue: 1, description: "Before (0) or After (1)"), | ||
1410 | new ColumnDefinition("Condition", ColumnType.String, 255, primaryKey: false, nullable: true, ColumnCategory.Condition, modularizeType: ColumnModularizeType.Condition, forceLocalizable: true), | ||
1411 | }, | ||
1412 | symbolIdIsPrimaryKey: true | ||
1413 | ); | ||
1414 | |||
1415 | public static readonly TableDefinition ModuleAdvtUISequence = new TableDefinition( | ||
1416 | "ModuleAdvtUISequence", | ||
1417 | null, | ||
1418 | new[] | ||
1419 | { | ||
1420 | new ColumnDefinition("Action", ColumnType.String, 64, primaryKey: true, nullable: false, ColumnCategory.Identifier, description: "Action to insert", modularizeType: ColumnModularizeType.Column), | ||
1421 | new ColumnDefinition("Sequence", ColumnType.Number, 2, primaryKey: false, nullable: true, ColumnCategory.Unknown, minValue: -4, maxValue: 32767, description: "Standard Sequence number"), | ||
1422 | new ColumnDefinition("BaseAction", ColumnType.String, 64, primaryKey: false, nullable: true, ColumnCategory.Identifier, keyTable: "ModuleAdvtUISequence", keyColumn: 1, description: "Base action to determine insert location.", modularizeType: ColumnModularizeType.Column), | ||
1423 | new ColumnDefinition("After", ColumnType.Number, 2, primaryKey: false, nullable: true, ColumnCategory.Unknown, minValue: 0, maxValue: 1, description: "Before (0) or After (1)"), | ||
1424 | new ColumnDefinition("Condition", ColumnType.String, 255, primaryKey: false, nullable: true, ColumnCategory.Condition, modularizeType: ColumnModularizeType.Condition, forceLocalizable: true), | ||
1425 | }, | ||
1426 | symbolIdIsPrimaryKey: true | ||
1427 | ); | ||
1428 | |||
1429 | public static readonly TableDefinition ModuleComponents = new TableDefinition( | ||
1430 | "ModuleComponents", | ||
1431 | SymbolDefinitions.ModuleComponents, | ||
1432 | new[] | ||
1433 | { | ||
1434 | new ColumnDefinition("Component", ColumnType.String, 72, primaryKey: true, nullable: false, ColumnCategory.Identifier, keyTable: "Component", keyColumn: 1, description: "Component contained in the module.", modularizeType: ColumnModularizeType.Column), | ||
1435 | new ColumnDefinition("ModuleID", ColumnType.String, 72, primaryKey: true, nullable: false, ColumnCategory.Identifier, keyTable: "ModuleSignature", keyColumn: 1, description: "Module containing the component.", modularizeType: ColumnModularizeType.Column), | ||
1436 | new ColumnDefinition("Language", ColumnType.Number, 2, primaryKey: true, nullable: false, ColumnCategory.Unknown, keyTable: "ModuleSignature", keyColumn: 2, description: "Default language ID for module (may be changed by transform).", forceLocalizable: true), | ||
1437 | }, | ||
1438 | symbolIdIsPrimaryKey: false | ||
1439 | ); | ||
1440 | |||
1441 | public static readonly TableDefinition ModuleSignature = new TableDefinition( | ||
1442 | "ModuleSignature", | ||
1443 | SymbolDefinitions.WixModule, | ||
1444 | new[] | ||
1445 | { | ||
1446 | new ColumnDefinition("ModuleID", ColumnType.String, 72, primaryKey: true, nullable: false, ColumnCategory.Identifier, description: "Module identifier (String.GUID).", modularizeType: ColumnModularizeType.Column), | ||
1447 | new ColumnDefinition("Language", ColumnType.Number, 2, primaryKey: true, nullable: false, ColumnCategory.Unknown, description: "Default decimal language of module.", forceLocalizable: true), | ||
1448 | new ColumnDefinition("Version", ColumnType.String, 32, primaryKey: false, nullable: false, ColumnCategory.Version, description: "Version of the module."), | ||
1449 | }, | ||
1450 | symbolIdIsPrimaryKey: false | ||
1451 | ); | ||
1452 | |||
1453 | public static readonly TableDefinition ModuleConfiguration = new TableDefinition( | ||
1454 | "ModuleConfiguration", | ||
1455 | SymbolDefinitions.ModuleConfiguration, | ||
1456 | new[] | ||
1457 | { | ||
1458 | new ColumnDefinition("Name", ColumnType.String, 72, primaryKey: true, nullable: false, ColumnCategory.Identifier, description: "Unique identifier for this row."), | ||
1459 | new ColumnDefinition("Format", ColumnType.Number, 2, primaryKey: false, nullable: false, ColumnCategory.Unknown, minValue: 0, maxValue: 3, description: "Format of this item."), | ||
1460 | new ColumnDefinition("Type", ColumnType.String, 72, primaryKey: false, nullable: true, ColumnCategory.Identifier, description: "Additional type information for this item."), | ||
1461 | new ColumnDefinition("ContextData", ColumnType.Localized, 0, primaryKey: false, nullable: true, ColumnCategory.Text, description: "Additional context information about this item."), | ||
1462 | new ColumnDefinition("DefaultValue", ColumnType.Localized, 0, primaryKey: false, nullable: true, ColumnCategory.Text, description: "Default value for this item."), | ||
1463 | new ColumnDefinition("Attributes", ColumnType.Number, 4, primaryKey: false, nullable: true, ColumnCategory.Unknown, minValue: 0, maxValue: 3, description: "Additional type-specific attributes."), | ||
1464 | new ColumnDefinition("DisplayName", ColumnType.Localized, 72, primaryKey: false, nullable: true, ColumnCategory.Text, description: "A short human-readable name for this item."), | ||
1465 | new ColumnDefinition("Description", ColumnType.Localized, 0, primaryKey: false, nullable: true, ColumnCategory.Text, description: "A human-readable description."), | ||
1466 | new ColumnDefinition("HelpLocation", ColumnType.String, 0, primaryKey: false, nullable: true, ColumnCategory.Text, description: "Filename or namespace of the context-sensitive help for this item."), | ||
1467 | new ColumnDefinition("HelpKeyword", ColumnType.String, 0, primaryKey: false, nullable: true, ColumnCategory.Text, description: "Keyword index into the HelpLocation for this item."), | ||
1468 | }, | ||
1469 | symbolIdIsPrimaryKey: true | ||
1470 | ); | ||
1471 | |||
1472 | public static readonly TableDefinition ModuleDependency = new TableDefinition( | ||
1473 | "ModuleDependency", | ||
1474 | SymbolDefinitions.ModuleDependency, | ||
1475 | new[] | ||
1476 | { | ||
1477 | new ColumnDefinition("ModuleID", ColumnType.String, 72, primaryKey: true, nullable: false, ColumnCategory.Identifier, keyTable: "ModuleSignature", keyColumn: 1, description: "Module requiring the dependency.", modularizeType: ColumnModularizeType.Column), | ||
1478 | new ColumnDefinition("ModuleLanguage", ColumnType.Number, 2, primaryKey: true, nullable: false, ColumnCategory.Unknown, keyTable: "ModuleSignature", keyColumn: 2, description: "Language of module requiring the dependency.", forceLocalizable: true), | ||
1479 | new ColumnDefinition("RequiredID", ColumnType.String, 72, primaryKey: true, nullable: false, ColumnCategory.Unknown, description: "String.GUID of required module."), | ||
1480 | new ColumnDefinition("RequiredLanguage", ColumnType.Number, 2, primaryKey: true, nullable: false, ColumnCategory.Unknown, description: "LanguageID of the required module.", forceLocalizable: true), | ||
1481 | new ColumnDefinition("RequiredVersion", ColumnType.String, 32, primaryKey: false, nullable: true, ColumnCategory.Version, description: "Version of the required version."), | ||
1482 | }, | ||
1483 | symbolIdIsPrimaryKey: false | ||
1484 | ); | ||
1485 | |||
1486 | public static readonly TableDefinition ModuleExclusion = new TableDefinition( | ||
1487 | "ModuleExclusion", | ||
1488 | SymbolDefinitions.ModuleExclusion, | ||
1489 | new[] | ||
1490 | { | ||
1491 | new ColumnDefinition("ModuleID", ColumnType.String, 72, primaryKey: true, nullable: false, ColumnCategory.Identifier, keyTable: "ModuleSignature", keyColumn: 1, description: "String.GUID of module with exclusion requirement.", modularizeType: ColumnModularizeType.Column), | ||
1492 | new ColumnDefinition("ModuleLanguage", ColumnType.Number, 2, primaryKey: true, nullable: false, ColumnCategory.Unknown, keyTable: "ModuleSignature", keyColumn: 2, description: "LanguageID of module with exclusion requirement.", forceLocalizable: true), | ||
1493 | new ColumnDefinition("ExcludedID", ColumnType.String, 72, primaryKey: true, nullable: false, ColumnCategory.Unknown, description: "String.GUID of excluded module."), | ||
1494 | new ColumnDefinition("ExcludedLanguage", ColumnType.Number, 2, primaryKey: true, nullable: false, ColumnCategory.Unknown, description: "Language of excluded module.", forceLocalizable: true), | ||
1495 | new ColumnDefinition("ExcludedMinVersion", ColumnType.String, 32, primaryKey: false, nullable: true, ColumnCategory.Version, description: "Minimum version of excluded module."), | ||
1496 | new ColumnDefinition("ExcludedMaxVersion", ColumnType.String, 32, primaryKey: false, nullable: true, ColumnCategory.Version, description: "Maximum version of excluded module."), | ||
1497 | }, | ||
1498 | symbolIdIsPrimaryKey: false | ||
1499 | ); | ||
1500 | |||
1501 | public static readonly TableDefinition ModuleIgnoreTable = new TableDefinition( | ||
1502 | "ModuleIgnoreTable", | ||
1503 | SymbolDefinitions.ModuleIgnoreTable, | ||
1504 | new[] | ||
1505 | { | ||
1506 | new ColumnDefinition("Table", ColumnType.String, 72, primaryKey: true, nullable: false, ColumnCategory.Identifier, description: "Table name to ignore during merge operation."), | ||
1507 | }, | ||
1508 | symbolIdIsPrimaryKey: true | ||
1509 | ); | ||
1510 | |||
1511 | public static readonly TableDefinition ModuleInstallExecuteSequence = new TableDefinition( | ||
1512 | "ModuleInstallExecuteSequence", | ||
1513 | null, | ||
1514 | new[] | ||
1515 | { | ||
1516 | new ColumnDefinition("Action", ColumnType.String, 64, primaryKey: true, nullable: false, ColumnCategory.Identifier, description: "Action to insert", modularizeType: ColumnModularizeType.Column), | ||
1517 | new ColumnDefinition("Sequence", ColumnType.Number, 2, primaryKey: false, nullable: true, ColumnCategory.Unknown, minValue: -4, maxValue: 32767, description: "Standard Sequence number"), | ||
1518 | new ColumnDefinition("BaseAction", ColumnType.String, 64, primaryKey: false, nullable: true, ColumnCategory.Identifier, keyTable: "ModuleInstallExecuteSequence", keyColumn: 1, description: "Base action to determine insert location.", modularizeType: ColumnModularizeType.Column), | ||
1519 | new ColumnDefinition("After", ColumnType.Number, 2, primaryKey: false, nullable: true, ColumnCategory.Unknown, minValue: 0, maxValue: 1, description: "Before (0) or After (1)"), | ||
1520 | new ColumnDefinition("Condition", ColumnType.String, 255, primaryKey: false, nullable: true, ColumnCategory.Condition, modularizeType: ColumnModularizeType.Condition, forceLocalizable: true), | ||
1521 | }, | ||
1522 | symbolIdIsPrimaryKey: true | ||
1523 | ); | ||
1524 | |||
1525 | public static readonly TableDefinition ModuleInstallUISequence = new TableDefinition( | ||
1526 | "ModuleInstallUISequence", | ||
1527 | null, | ||
1528 | new[] | ||
1529 | { | ||
1530 | new ColumnDefinition("Action", ColumnType.String, 64, primaryKey: true, nullable: false, ColumnCategory.Identifier, description: "Action to insert", modularizeType: ColumnModularizeType.Column), | ||
1531 | new ColumnDefinition("Sequence", ColumnType.Number, 2, primaryKey: false, nullable: true, ColumnCategory.Unknown, minValue: -4, maxValue: 32767, description: "Standard Sequence number"), | ||
1532 | new ColumnDefinition("BaseAction", ColumnType.String, 64, primaryKey: false, nullable: true, ColumnCategory.Identifier, keyTable: "ModuleInstallUISequence", keyColumn: 1, description: "Base action to determine insert location.", modularizeType: ColumnModularizeType.Column), | ||
1533 | new ColumnDefinition("After", ColumnType.Number, 2, primaryKey: false, nullable: true, ColumnCategory.Unknown, minValue: 0, maxValue: 1, description: "Before (0) or After (1)"), | ||
1534 | new ColumnDefinition("Condition", ColumnType.String, 255, primaryKey: false, nullable: true, ColumnCategory.Condition, modularizeType: ColumnModularizeType.Condition, forceLocalizable: true), | ||
1535 | }, | ||
1536 | symbolIdIsPrimaryKey: true | ||
1537 | ); | ||
1538 | |||
1539 | public static readonly TableDefinition ModuleSubstitution = new TableDefinition( | ||
1540 | "ModuleSubstitution", | ||
1541 | SymbolDefinitions.ModuleSubstitution, | ||
1542 | new[] | ||
1543 | { | ||
1544 | new ColumnDefinition("Table", ColumnType.String, 72, primaryKey: true, nullable: false, ColumnCategory.Identifier, description: "Table containing the data to be modified."), | ||
1545 | new ColumnDefinition("Row", ColumnType.String, 0, primaryKey: true, nullable: false, ColumnCategory.Text, description: "Row containing the data to be modified.", modularizeType: ColumnModularizeType.SemicolonDelimited), | ||
1546 | new ColumnDefinition("Column", ColumnType.String, 72, primaryKey: true, nullable: false, ColumnCategory.Identifier, description: "Column containing the data to be modified."), | ||
1547 | new ColumnDefinition("Value", ColumnType.Localized, 0, primaryKey: false, nullable: true, ColumnCategory.Text, description: "Template for modification data."), | ||
1548 | }, | ||
1549 | symbolIdIsPrimaryKey: false | ||
1550 | ); | ||
1551 | |||
1552 | public static readonly TableDefinition Properties = new TableDefinition( | ||
1553 | "Properties", | ||
1554 | SymbolDefinitions.Properties, | ||
1555 | new[] | ||
1556 | { | ||
1557 | new ColumnDefinition("Name", ColumnType.String, 72, primaryKey: true, nullable: false, ColumnCategory.Text, description: "Primary key, non-localized token"), | ||
1558 | new ColumnDefinition("Value", ColumnType.String, 0, primaryKey: false, nullable: false, ColumnCategory.Text, description: "Value of the property"), | ||
1559 | }, | ||
1560 | symbolIdIsPrimaryKey: false | ||
1561 | ); | ||
1562 | |||
1563 | public static readonly TableDefinition ImageFamilies = new TableDefinition( | ||
1564 | "ImageFamilies", | ||
1565 | SymbolDefinitions.ImageFamilies, | ||
1566 | new[] | ||
1567 | { | ||
1568 | new ColumnDefinition("Family", ColumnType.String, 8, primaryKey: true, nullable: false, ColumnCategory.Text, description: "Primary key"), | ||
1569 | new ColumnDefinition("MediaSrcPropName", ColumnType.String, 72, primaryKey: false, nullable: true, ColumnCategory.Text), | ||
1570 | new ColumnDefinition("MediaDiskId", ColumnType.Number, 0, primaryKey: false, nullable: true, ColumnCategory.Integer), | ||
1571 | new ColumnDefinition("FileSequenceStart", ColumnType.Number, 4, primaryKey: false, nullable: true, ColumnCategory.Integer, minValue: 1, maxValue: 214743647), | ||
1572 | new ColumnDefinition("DiskPrompt", ColumnType.String, 128, primaryKey: false, nullable: true, ColumnCategory.Text, forceLocalizable: true), | ||
1573 | new ColumnDefinition("VolumeLabel", ColumnType.String, 32, primaryKey: false, nullable: true, ColumnCategory.Text), | ||
1574 | }, | ||
1575 | symbolIdIsPrimaryKey: false | ||
1576 | ); | ||
1577 | |||
1578 | public static readonly TableDefinition UpgradedImages = new TableDefinition( | ||
1579 | "UpgradedImages", | ||
1580 | SymbolDefinitions.UpgradedImages, | ||
1581 | new[] | ||
1582 | { | ||
1583 | new ColumnDefinition("Upgraded", ColumnType.String, 13, primaryKey: true, nullable: false, ColumnCategory.Text, description: "Primary key"), | ||
1584 | new ColumnDefinition("MsiPath", ColumnType.String, 255, primaryKey: false, nullable: false, ColumnCategory.Text), | ||
1585 | new ColumnDefinition("PatchMsiPath", ColumnType.String, 255, primaryKey: false, nullable: true, ColumnCategory.Text), | ||
1586 | new ColumnDefinition("SymbolPaths", ColumnType.String, 255, primaryKey: false, nullable: true, ColumnCategory.Text), | ||
1587 | new ColumnDefinition("Family", ColumnType.String, 8, primaryKey: false, nullable: false, ColumnCategory.Text, keyTable: "ImageFamilies", keyColumn: 1, description: "Foreign key, Family to which this image belongs"), | ||
1588 | }, | ||
1589 | symbolIdIsPrimaryKey: false | ||
1590 | ); | ||
1591 | |||
1592 | public static readonly TableDefinition UpgradedFilesToIgnore = new TableDefinition( | ||
1593 | "UpgradedFilesToIgnore", | ||
1594 | SymbolDefinitions.UpgradedFilesToIgnore, | ||
1595 | new[] | ||
1596 | { | ||
1597 | new ColumnDefinition("Upgraded", ColumnType.String, 13, primaryKey: true, nullable: false, ColumnCategory.Text, keyTable: "UpgradedImages", keyColumn: 1, description: "Foreign key, Upgraded image"), | ||
1598 | new ColumnDefinition("FTK", ColumnType.String, 255, primaryKey: true, nullable: false, ColumnCategory.Text, keyTable: "File", keyColumn: 1, description: "Foreign key, File to ignore", modularizeType: ColumnModularizeType.Column), | ||
1599 | }, | ||
1600 | symbolIdIsPrimaryKey: false | ||
1601 | ); | ||
1602 | |||
1603 | public static readonly TableDefinition UpgradedFilesOptionalData = new TableDefinition( | ||
1604 | "UpgradedFiles_OptionalData", | ||
1605 | SymbolDefinitions.UpgradedFilesOptionalData, | ||
1606 | new[] | ||
1607 | { | ||
1608 | new ColumnDefinition("Upgraded", ColumnType.String, 13, primaryKey: true, nullable: false, ColumnCategory.Text, keyTable: "UpgradedImages", keyColumn: 1, description: "Foreign key, Upgraded image"), | ||
1609 | new ColumnDefinition("FTK", ColumnType.String, 255, primaryKey: true, nullable: false, ColumnCategory.Text, keyTable: "File", keyColumn: 1, description: "Foreign key, File to ignore", modularizeType: ColumnModularizeType.Column), | ||
1610 | new ColumnDefinition("SymbolPaths", ColumnType.String, 255, primaryKey: false, nullable: true, ColumnCategory.Text), | ||
1611 | new ColumnDefinition("AllowIgnoreOnPatchError", ColumnType.Number, 0, primaryKey: false, nullable: true, ColumnCategory.Integer), | ||
1612 | new ColumnDefinition("IncludeWholeFile", ColumnType.Number, 0, primaryKey: false, nullable: true, ColumnCategory.Integer), | ||
1613 | }, | ||
1614 | symbolIdIsPrimaryKey: false | ||
1615 | ); | ||
1616 | |||
1617 | public static readonly TableDefinition TargetImages = new TableDefinition( | ||
1618 | "TargetImages", | ||
1619 | SymbolDefinitions.TargetImages, | ||
1620 | new[] | ||
1621 | { | ||
1622 | new ColumnDefinition("Target", ColumnType.String, 13, primaryKey: true, nullable: false, ColumnCategory.Text), | ||
1623 | new ColumnDefinition("MsiPath", ColumnType.String, 255, primaryKey: false, nullable: false, ColumnCategory.Text), | ||
1624 | new ColumnDefinition("SymbolPaths", ColumnType.String, 255, primaryKey: false, nullable: true, ColumnCategory.Text), | ||
1625 | new ColumnDefinition("Upgraded", ColumnType.String, 13, primaryKey: false, nullable: false, ColumnCategory.Text, keyTable: "UpgradedImages", keyColumn: 1, description: "Foreign key, Upgraded image"), | ||
1626 | new ColumnDefinition("Order", ColumnType.Number, 0, primaryKey: false, nullable: false, ColumnCategory.Integer), | ||
1627 | new ColumnDefinition("ProductValidateFlags", ColumnType.String, 16, primaryKey: false, nullable: true, ColumnCategory.Text), | ||
1628 | new ColumnDefinition("IgnoreMissingSrcFiles", ColumnType.Number, 0, primaryKey: false, nullable: false, ColumnCategory.Integer), | ||
1629 | }, | ||
1630 | symbolIdIsPrimaryKey: false | ||
1631 | ); | ||
1632 | |||
1633 | public static readonly TableDefinition TargetFilesOptionalData = new TableDefinition( | ||
1634 | "TargetFiles_OptionalData", | ||
1635 | SymbolDefinitions.TargetFilesOptionalData, | ||
1636 | new[] | ||
1637 | { | ||
1638 | new ColumnDefinition("Target", ColumnType.String, 13, primaryKey: true, nullable: false, ColumnCategory.Text, keyTable: "TargetImages", keyColumn: 1, description: "Foreign key, Target image"), | ||
1639 | new ColumnDefinition("FTK", ColumnType.String, 255, primaryKey: true, nullable: false, ColumnCategory.Text, keyTable: "File", keyColumn: 1, description: "Foreign key, File to ignore", modularizeType: ColumnModularizeType.Column), | ||
1640 | new ColumnDefinition("SymbolPaths", ColumnType.String, 255, primaryKey: false, nullable: true, ColumnCategory.Text), | ||
1641 | new ColumnDefinition("IgnoreOffsets", ColumnType.String, 255, primaryKey: false, nullable: true, ColumnCategory.Text), | ||
1642 | new ColumnDefinition("IgnoreLengths", ColumnType.String, 255, primaryKey: false, nullable: true, ColumnCategory.Text), | ||
1643 | new ColumnDefinition("RetainOffsets", ColumnType.String, 255, primaryKey: false, nullable: true, ColumnCategory.Text), | ||
1644 | }, | ||
1645 | symbolIdIsPrimaryKey: false | ||
1646 | ); | ||
1647 | |||
1648 | public static readonly TableDefinition FamilyFileRanges = new TableDefinition( | ||
1649 | "FamilyFileRanges", | ||
1650 | SymbolDefinitions.FamilyFileRanges, | ||
1651 | new[] | ||
1652 | { | ||
1653 | new ColumnDefinition("Family", ColumnType.String, 8, primaryKey: true, nullable: false, ColumnCategory.Text, keyTable: "ImageFamilies", keyColumn: 1, description: "Foreign key, Family"), | ||
1654 | new ColumnDefinition("FTK", ColumnType.String, 255, primaryKey: true, nullable: false, ColumnCategory.Text, keyTable: "File", keyColumn: 1, description: "Foreign key, File to ignore", modularizeType: ColumnModularizeType.Column), | ||
1655 | new ColumnDefinition("RetainOffsets", ColumnType.String, 128, primaryKey: false, nullable: false, ColumnCategory.Text), | ||
1656 | new ColumnDefinition("RetainLengths", ColumnType.String, 128, primaryKey: false, nullable: false, ColumnCategory.Text), | ||
1657 | }, | ||
1658 | symbolIdIsPrimaryKey: false | ||
1659 | ); | ||
1660 | |||
1661 | public static readonly TableDefinition ExternalFiles = new TableDefinition( | ||
1662 | "ExternalFiles", | ||
1663 | SymbolDefinitions.ExternalFiles, | ||
1664 | new[] | ||
1665 | { | ||
1666 | new ColumnDefinition("Family", ColumnType.String, 8, primaryKey: true, nullable: false, ColumnCategory.Text, keyTable: "ImageFamilies", keyColumn: 1, description: "Foreign key, Family"), | ||
1667 | new ColumnDefinition("FTK", ColumnType.String, 255, primaryKey: true, nullable: false, ColumnCategory.Text, keyTable: "File", keyColumn: 1, description: "Foreign key, File to ignore", modularizeType: ColumnModularizeType.Column), | ||
1668 | new ColumnDefinition("FilePath", ColumnType.String, 255, primaryKey: true, nullable: false, ColumnCategory.Text), | ||
1669 | new ColumnDefinition("SymbolPaths", ColumnType.String, 255, primaryKey: false, nullable: true, ColumnCategory.Text), | ||
1670 | new ColumnDefinition("IgnoreOffsets", ColumnType.String, 255, primaryKey: false, nullable: true, ColumnCategory.Text), | ||
1671 | new ColumnDefinition("IgnoreLengths", ColumnType.String, 255, primaryKey: false, nullable: true, ColumnCategory.Text), | ||
1672 | new ColumnDefinition("RetainOffsets", ColumnType.String, 255, primaryKey: false, nullable: true, ColumnCategory.Text), | ||
1673 | new ColumnDefinition("Order", ColumnType.Number, 0, primaryKey: false, nullable: false, ColumnCategory.Integer), | ||
1674 | }, | ||
1675 | symbolIdIsPrimaryKey: false | ||
1676 | ); | ||
1677 | |||
1678 | public static readonly TableDefinition Streams = new TableDefinition( | ||
1679 | "_Streams", | ||
1680 | null, | ||
1681 | new[] | ||
1682 | { | ||
1683 | new ColumnDefinition("Name", ColumnType.String, 62, primaryKey: true, nullable: false, ColumnCategory.Unknown), | ||
1684 | new ColumnDefinition("Data", ColumnType.Object, 0, primaryKey: false, nullable: true, ColumnCategory.Unknown), | ||
1685 | }, | ||
1686 | unreal: true, | ||
1687 | symbolIdIsPrimaryKey: false | ||
1688 | ); | ||
1689 | |||
1690 | public static readonly TableDefinition SummaryInformation = new TableDefinition( | ||
1691 | "_SummaryInformation", | ||
1692 | SymbolDefinitions.SummaryInformation, | ||
1693 | new[] | ||
1694 | { | ||
1695 | new ColumnDefinition("PropertyId", ColumnType.Number, 2, primaryKey: true, nullable: false, ColumnCategory.Unknown), | ||
1696 | new ColumnDefinition("Value", ColumnType.Localized, 255, primaryKey: false, nullable: false, ColumnCategory.Unknown), | ||
1697 | }, | ||
1698 | symbolIdIsPrimaryKey: false | ||
1699 | ); | ||
1700 | |||
1701 | public static readonly TableDefinition TransformView = new TableDefinition( | ||
1702 | "_TransformView", | ||
1703 | null, | ||
1704 | new[] | ||
1705 | { | ||
1706 | new ColumnDefinition("Table", ColumnType.String, 0, primaryKey: true, nullable: false, ColumnCategory.Unknown), | ||
1707 | new ColumnDefinition("Column", ColumnType.String, 0, primaryKey: true, nullable: false, ColumnCategory.Unknown), | ||
1708 | new ColumnDefinition("Row", ColumnType.String, 0, primaryKey: false, nullable: false, ColumnCategory.Unknown), | ||
1709 | new ColumnDefinition("Data", ColumnType.String, 0, primaryKey: false, nullable: false, ColumnCategory.Unknown), | ||
1710 | new ColumnDefinition("Current", ColumnType.String, 0, primaryKey: false, nullable: false, ColumnCategory.Unknown), | ||
1711 | }, | ||
1712 | unreal: true, | ||
1713 | symbolIdIsPrimaryKey: false | ||
1714 | ); | ||
1715 | |||
1716 | public static readonly TableDefinition Validation = new TableDefinition( | ||
1717 | "_Validation", | ||
1718 | null, | ||
1719 | new[] | ||
1720 | { | ||
1721 | new ColumnDefinition("Table", ColumnType.String, 32, primaryKey: true, nullable: false, ColumnCategory.Identifier, description: "Name of table"), | ||
1722 | new ColumnDefinition("Column", ColumnType.String, 32, primaryKey: true, nullable: false, ColumnCategory.Identifier, description: "Name of column"), | ||
1723 | new ColumnDefinition("Nullable", ColumnType.String, 4, primaryKey: false, nullable: false, ColumnCategory.Unknown, possibilities: "Y;N", description: "Whether the column is nullable"), | ||
1724 | new ColumnDefinition("MinValue", ColumnType.Number, 4, primaryKey: false, nullable: true, ColumnCategory.Unknown, minValue: -2147483647, maxValue: 2147483647, description: "Minimum value allowed"), | ||
1725 | new ColumnDefinition("MaxValue", ColumnType.Number, 4, primaryKey: false, nullable: true, ColumnCategory.Unknown, minValue: -2147483647, maxValue: 2147483647, description: "Maximum value allowed"), | ||
1726 | new ColumnDefinition("KeyTable", ColumnType.String, 255, primaryKey: false, nullable: true, ColumnCategory.Identifier, description: "For foreign key, Name of table to which data must link"), | ||
1727 | new ColumnDefinition("KeyColumn", ColumnType.Number, 2, primaryKey: false, nullable: true, ColumnCategory.Unknown, minValue: 1, maxValue: 32, description: "Column to which foreign key connects"), | ||
1728 | new ColumnDefinition("Category", ColumnType.String, 32, primaryKey: false, nullable: true, ColumnCategory.Unknown, possibilities: "Text;Formatted;Template;Condition;Guid;Path;Version;Language;Identifier;Binary;UpperCase;LowerCase;Filename;Paths;AnyPath;WildCardFilename;RegPath;CustomSource;Property;Cabinet;Shortcut;FormattedSDDLText;Integer;DoubleInteger;TimeDate;DefaultDir", description: "String category"), | ||
1729 | new ColumnDefinition("Set", ColumnType.String, 255, primaryKey: false, nullable: true, ColumnCategory.Text, description: "Set of values that are permitted"), | ||
1730 | new ColumnDefinition("Description", ColumnType.String, 255, primaryKey: false, nullable: true, ColumnCategory.Text, description: "Description of column"), | ||
1731 | }, | ||
1732 | symbolIdIsPrimaryKey: false | ||
1733 | ); | ||
1734 | |||
1735 | public static readonly TableDefinition WixDependencyProvider = new TableDefinition( | ||
1736 | "WixDependencyProvider", | ||
1737 | SymbolDefinitions.WixDependencyProvider, | ||
1738 | new[] | ||
1739 | { | ||
1740 | new ColumnDefinition("WixDependencyProvider", ColumnType.String, 72, primaryKey: true, nullable: false, ColumnCategory.Identifier, description: "The non-localized primary key for the table.", modularizeType: ColumnModularizeType.Column), | ||
1741 | new ColumnDefinition("Component_", ColumnType.String, 72, primaryKey: false, nullable: false, ColumnCategory.Identifier, keyTable: "Component", keyColumn: 1, description: "The foreign key into the Component table used to determine install state.", modularizeType: ColumnModularizeType.Column), | ||
1742 | new ColumnDefinition("ProviderKey", ColumnType.String, 255, primaryKey: false, nullable: false, ColumnCategory.Text, description: "The name of the registry key that holds the provider identity."), | ||
1743 | new ColumnDefinition("Version", ColumnType.String, 72, primaryKey: false, nullable: true, ColumnCategory.Version, description: "The version of the package."), | ||
1744 | new ColumnDefinition("DisplayName", ColumnType.String, 255, primaryKey: false, nullable: true, ColumnCategory.Text, description: "The display name of the package."), | ||
1745 | new ColumnDefinition("Attributes", ColumnType.Number, 4, primaryKey: false, nullable: true, ColumnCategory.Unknown, minValue: 0, maxValue: 2147483647, description: "A 32-bit word that specifies the attribute flags to be applied."), | ||
1746 | }, | ||
1747 | symbolIdIsPrimaryKey: true | ||
1748 | ); | ||
1749 | |||
1750 | public static readonly TableDefinition WixDependency = new TableDefinition( | ||
1751 | "WixDependency", | ||
1752 | SymbolDefinitions.WixDependency, | ||
1753 | new[] | ||
1754 | { | ||
1755 | new ColumnDefinition("WixDependency", ColumnType.String, 72, primaryKey: true, nullable: false, ColumnCategory.Identifier, description: "The non-localized primary key for the table.", modularizeType: ColumnModularizeType.Column), | ||
1756 | new ColumnDefinition("ProviderKey", ColumnType.String, 255, primaryKey: false, nullable: false, ColumnCategory.Text, description: "The name of the registry key that holds the provider identity."), | ||
1757 | new ColumnDefinition("MinVersion", ColumnType.String, 72, primaryKey: false, nullable: true, ColumnCategory.Version, description: "The minimum version of the provider supported."), | ||
1758 | new ColumnDefinition("MaxVersion", ColumnType.String, 72, primaryKey: false, nullable: true, ColumnCategory.Version, description: "The maximum version of the provider supported."), | ||
1759 | new ColumnDefinition("Attributes", ColumnType.Number, 4, primaryKey: false, nullable: true, ColumnCategory.Unknown, minValue: 0, maxValue: 2147483647, description: "A 32-bit word that specifies the attribute flags to be applied."), | ||
1760 | }, | ||
1761 | symbolIdIsPrimaryKey: true | ||
1762 | ); | ||
1763 | |||
1764 | public static readonly TableDefinition WixDependencyRef = new TableDefinition( | ||
1765 | "WixDependencyRef", | ||
1766 | SymbolDefinitions.WixDependencyRef, | ||
1767 | new[] | ||
1768 | { | ||
1769 | new ColumnDefinition("WixDependencyProvider_", ColumnType.String, 72, primaryKey: true, nullable: false, ColumnCategory.Identifier, keyTable: "WixDependencyProvider", keyColumn: 1, description: "Foreign key into the Component table.", modularizeType: ColumnModularizeType.Column), | ||
1770 | new ColumnDefinition("WixDependency_", ColumnType.String, 72, primaryKey: true, nullable: false, ColumnCategory.Identifier, keyTable: "WixDependency", keyColumn: 1, description: "Foreign key into the WixDependency table.", modularizeType: ColumnModularizeType.Column), | ||
1771 | }, | ||
1772 | symbolIdIsPrimaryKey: false | ||
1773 | ); | ||
1774 | |||
1775 | public static readonly TableDefinition[] All = new[] | ||
1776 | { | ||
1777 | ActionText, | ||
1778 | AdminExecuteSequence, | ||
1779 | Condition, | ||
1780 | AdminUISequence, | ||
1781 | AdvtExecuteSequence, | ||
1782 | AdvtUISequence, | ||
1783 | AppId, | ||
1784 | AppSearch, | ||
1785 | Property, | ||
1786 | BBControl, | ||
1787 | Billboard, | ||
1788 | Feature, | ||
1789 | Binary, | ||
1790 | BindImage, | ||
1791 | File, | ||
1792 | CCPSearch, | ||
1793 | CheckBox, | ||
1794 | Class, | ||
1795 | Component, | ||
1796 | Icon, | ||
1797 | ProgId, | ||
1798 | ComboBox, | ||
1799 | CompLocator, | ||
1800 | Complus, | ||
1801 | Directory, | ||
1802 | Control, | ||
1803 | Dialog, | ||
1804 | ControlCondition, | ||
1805 | ControlEvent, | ||
1806 | CreateFolder, | ||
1807 | CustomAction, | ||
1808 | DrLocator, | ||
1809 | DuplicateFile, | ||
1810 | Environment, | ||
1811 | Error, | ||
1812 | EventMapping, | ||
1813 | Extension, | ||
1814 | MIME, | ||
1815 | FeatureComponents, | ||
1816 | FileSFPCatalog, | ||
1817 | SFPCatalog, | ||
1818 | Font, | ||
1819 | IniFile, | ||
1820 | IniLocator, | ||
1821 | InstallExecuteSequence, | ||
1822 | InstallUISequence, | ||
1823 | IsolatedComponent, | ||
1824 | LaunchCondition, | ||
1825 | ListBox, | ||
1826 | ListView, | ||
1827 | LockPermissions, | ||
1828 | MsiLockPermissionsEx, | ||
1829 | Media, | ||
1830 | MoveFile, | ||
1831 | MsiAssembly, | ||
1832 | MsiAssemblyName, | ||
1833 | MsiDigitalCertificate, | ||
1834 | MsiDigitalSignature, | ||
1835 | MsiEmbeddedChainer, | ||
1836 | MsiEmbeddedUI, | ||
1837 | MsiFileHash, | ||
1838 | MsiPackageCertificate, | ||
1839 | MsiPatchCertificate, | ||
1840 | MsiPatchHeaders, | ||
1841 | PatchMetadata, | ||
1842 | MsiPatchMetadata, | ||
1843 | MsiPatchOldAssemblyFile, | ||
1844 | MsiPatchOldAssemblyName, | ||
1845 | PatchSequence, | ||
1846 | MsiPatchSequence, | ||
1847 | ODBCAttribute, | ||
1848 | ODBCDriver, | ||
1849 | ODBCDataSource, | ||
1850 | ODBCSourceAttribute, | ||
1851 | ODBCTranslator, | ||
1852 | Patch, | ||
1853 | PatchPackage, | ||
1854 | PublishComponent, | ||
1855 | RadioButton, | ||
1856 | Registry, | ||
1857 | RegLocator, | ||
1858 | RemoveFile, | ||
1859 | RemoveIniFile, | ||
1860 | RemoveRegistry, | ||
1861 | ReserveCost, | ||
1862 | SelfReg, | ||
1863 | ServiceControl, | ||
1864 | ServiceInstall, | ||
1865 | MsiServiceConfig, | ||
1866 | MsiServiceConfigFailureActions, | ||
1867 | Shortcut, | ||
1868 | MsiShortcutProperty, | ||
1869 | Signature, | ||
1870 | SoftwareIdentificationTag, | ||
1871 | TextStyle, | ||
1872 | TypeLib, | ||
1873 | UIText, | ||
1874 | Upgrade, | ||
1875 | Verb, | ||
1876 | ModuleAdminExecuteSequence, | ||
1877 | ModuleAdminUISequence, | ||
1878 | ModuleAdvtExecuteSequence, | ||
1879 | ModuleAdvtUISequence, | ||
1880 | ModuleComponents, | ||
1881 | ModuleSignature, | ||
1882 | ModuleConfiguration, | ||
1883 | ModuleDependency, | ||
1884 | ModuleExclusion, | ||
1885 | ModuleIgnoreTable, | ||
1886 | ModuleInstallExecuteSequence, | ||
1887 | ModuleInstallUISequence, | ||
1888 | ModuleSubstitution, | ||
1889 | Properties, | ||
1890 | ImageFamilies, | ||
1891 | UpgradedImages, | ||
1892 | UpgradedFilesToIgnore, | ||
1893 | UpgradedFilesOptionalData, | ||
1894 | TargetImages, | ||
1895 | TargetFilesOptionalData, | ||
1896 | FamilyFileRanges, | ||
1897 | ExternalFiles, | ||
1898 | Streams, | ||
1899 | SummaryInformation, | ||
1900 | TransformView, | ||
1901 | Validation, | ||
1902 | WixDependency, | ||
1903 | WixDependencyProvider, | ||
1904 | WixDependencyRef, | ||
1905 | }; | ||
1906 | } | ||
1907 | } | ||
diff --git a/src/api/wix/WixToolset.Data/WindowsInstaller/WixMissingTableDefinitionException.cs b/src/api/wix/WixToolset.Data/WindowsInstaller/WixMissingTableDefinitionException.cs new file mode 100644 index 00000000..9f7e5fa8 --- /dev/null +++ b/src/api/wix/WixToolset.Data/WindowsInstaller/WixMissingTableDefinitionException.cs | |||
@@ -0,0 +1,22 @@ | |||
1 | // Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. | ||
2 | |||
3 | namespace WixToolset.Data.WindowsInstaller | ||
4 | { | ||
5 | using System; | ||
6 | |||
7 | /// <summary> | ||
8 | /// Exception thrown when a table definition is missing. | ||
9 | /// </summary> | ||
10 | [Serializable] | ||
11 | public class WixMissingTableDefinitionException : WixException | ||
12 | { | ||
13 | /// <summary> | ||
14 | /// Instantiate new WixMissingTableDefinitionException. | ||
15 | /// </summary> | ||
16 | /// <param name="error">Localized error information.</param> | ||
17 | public WixMissingTableDefinitionException(Message error) | ||
18 | : base(error) | ||
19 | { | ||
20 | } | ||
21 | } | ||
22 | } | ||
diff --git a/src/api/wix/WixToolset.Data/WindowsInstaller/Xsd/data.xsd b/src/api/wix/WixToolset.Data/WindowsInstaller/Xsd/data.xsd new file mode 100644 index 00000000..a3dc7e2b --- /dev/null +++ b/src/api/wix/WixToolset.Data/WindowsInstaller/Xsd/data.xsd | |||
@@ -0,0 +1,66 @@ | |||
1 | <?xml version="1.0" encoding="utf-8"?> | ||
2 | <!-- 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. --> | ||
3 | |||
4 | |||
5 | <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" | ||
6 | targetNamespace="http://wixtoolset.org/schemas/v4/windowsinstallerdata" | ||
7 | xmlns="http://wixtoolset.org/schemas/v4/windowsinstallerdata" | ||
8 | xmlns:objs="http://wixtoolset.org/schemas/v4/wixobj" | ||
9 | xmlns:tbls="http://wixtoolset.org/schemas/v4/wi/tables"> | ||
10 | <xs:annotation> | ||
11 | <xs:documentation> | ||
12 | Schema for describing WiX Windows Installer Data files. | ||
13 | </xs:documentation> | ||
14 | </xs:annotation> | ||
15 | |||
16 | <xs:import namespace="http://wixtoolset.org/schemas/v4/wixobj" schemaLocation="objects.xsd" /> | ||
17 | <xs:import namespace="http://wixtoolset.org/schemas/v4/wi/tables" schemaLocation="tables.xsd" /> | ||
18 | |||
19 | <xs:element name="windowsInstallerData"> | ||
20 | <xs:complexType> | ||
21 | <xs:sequence> | ||
22 | <xs:element ref="tbls:tableDefinitions" /> | ||
23 | <xs:element ref="objs:table" maxOccurs="unbounded" /> | ||
24 | <xs:element ref="subStorage" minOccurs="0" maxOccurs="unbounded" /> | ||
25 | </xs:sequence> | ||
26 | <xs:attribute name="codepage" type="xs:unsignedInt"> | ||
27 | <xs:annotation> | ||
28 | <xs:documentation>Codepage of the output.</xs:documentation> | ||
29 | </xs:annotation> | ||
30 | </xs:attribute> | ||
31 | <xs:attribute name="type" use="required"> | ||
32 | <xs:annotation> | ||
33 | <xs:documentation>Type of the output.</xs:documentation> | ||
34 | </xs:annotation> | ||
35 | <xs:simpleType> | ||
36 | <xs:restriction base="xs:NMTOKEN"> | ||
37 | <xs:enumeration value="Bundle" /> | ||
38 | <xs:enumeration value="Module" /> | ||
39 | <xs:enumeration value="Patch" /> | ||
40 | <xs:enumeration value="PatchCreation" /> | ||
41 | <xs:enumeration value="Product" /> | ||
42 | <xs:enumeration value="Transform" /> | ||
43 | </xs:restriction> | ||
44 | </xs:simpleType> | ||
45 | </xs:attribute> | ||
46 | <xs:attribute name="version" type="xs:string" use="required"> | ||
47 | <xs:annotation> | ||
48 | <xs:documentation>Version of WiX used to create this output file.</xs:documentation> | ||
49 | </xs:annotation> | ||
50 | </xs:attribute> | ||
51 | </xs:complexType> | ||
52 | </xs:element> | ||
53 | |||
54 | <xs:element name="subStorage"> | ||
55 | <xs:complexType> | ||
56 | <xs:sequence minOccurs="1" maxOccurs="1"> | ||
57 | <xs:element ref="windowsInstallerData" /> | ||
58 | </xs:sequence> | ||
59 | <xs:attribute name="name" type="xs:string"> | ||
60 | <xs:annotation> | ||
61 | <xs:documentation>Name of the substorage.</xs:documentation> | ||
62 | </xs:annotation> | ||
63 | </xs:attribute> | ||
64 | </xs:complexType> | ||
65 | </xs:element> | ||
66 | </xs:schema> | ||
diff --git a/src/api/wix/WixToolset.Data/WindowsInstaller/Xsd/libraries.xsd b/src/api/wix/WixToolset.Data/WindowsInstaller/Xsd/libraries.xsd new file mode 100644 index 00000000..a4504c01 --- /dev/null +++ b/src/api/wix/WixToolset.Data/WindowsInstaller/Xsd/libraries.xsd | |||
@@ -0,0 +1,66 @@ | |||
1 | <?xml version="1.0" encoding="utf-8"?> | ||
2 | <!-- 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. --> | ||
3 | |||
4 | |||
5 | <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" | ||
6 | targetNamespace="http://wixtoolset.org/schemas/v4/wixlib" | ||
7 | xmlns="http://wixtoolset.org/schemas/v4/wixlib" | ||
8 | xmlns:loc="http://wixtoolset.org/schemas/v4/wxl" | ||
9 | xmlns:objs="http://wixtoolset.org/schemas/v4/wixobj"> | ||
10 | <xs:annotation> | ||
11 | <xs:documentation> | ||
12 | Schema for describing WiX Library files (.wixlib). | ||
13 | </xs:documentation> | ||
14 | </xs:annotation> | ||
15 | |||
16 | <xs:import namespace="http://wixtoolset.org/schemas/v4/wixobj" schemaLocation="objects.xsd" /> | ||
17 | |||
18 | <xs:element name="wixLibrary"> | ||
19 | <xs:complexType> | ||
20 | <xs:sequence> | ||
21 | <xs:element ref="localization" minOccurs="0" maxOccurs="unbounded" /> | ||
22 | <xs:element ref="objs:section" minOccurs="0" maxOccurs="unbounded" /> | ||
23 | </xs:sequence> | ||
24 | |||
25 | <xs:attribute name="id" type="xs:string" use="required" /> | ||
26 | <xs:attribute name="version" type="xs:string" use="required"> | ||
27 | <xs:annotation> | ||
28 | <xs:documentation>Version of WiX used to create this library file</xs:documentation> | ||
29 | </xs:annotation> | ||
30 | </xs:attribute> | ||
31 | </xs:complexType> | ||
32 | </xs:element> | ||
33 | |||
34 | <xs:element name="localization"> | ||
35 | <xs:complexType> | ||
36 | <xs:sequence> | ||
37 | <xs:element ref="string" minOccurs="0" maxOccurs="unbounded" /> | ||
38 | <xs:element ref="ui" minOccurs="0" maxOccurs="unbounded" /> | ||
39 | </xs:sequence> | ||
40 | |||
41 | <xs:attribute name="codepage" type="xs:string" use="required" /> | ||
42 | <xs:attribute name="culture" type="xs:string" /> | ||
43 | </xs:complexType> | ||
44 | </xs:element> | ||
45 | |||
46 | <xs:element name="string"> | ||
47 | <xs:complexType mixed="true"> | ||
48 | <xs:attribute name="id" type="xs:string" use="required" /> | ||
49 | <xs:attribute name="overridable" type="xs:string" /> | ||
50 | </xs:complexType> | ||
51 | </xs:element> | ||
52 | |||
53 | <xs:element name="ui"> | ||
54 | <xs:complexType> | ||
55 | <xs:attribute name="dialog" type="xs:string" /> | ||
56 | <xs:attribute name="control" type="xs:string" /> | ||
57 | <xs:attribute name="x" type="xs:int" /> | ||
58 | <xs:attribute name="y" type="xs:int" /> | ||
59 | <xs:attribute name="width" type="xs:int" /> | ||
60 | <xs:attribute name="height" type="xs:int" /> | ||
61 | <xs:attribute name="rightToLeft" type="xs:string" /> | ||
62 | <xs:attribute name="rightAligned" type="xs:string" /> | ||
63 | <xs:attribute name="leftScroll" type="xs:string" /> | ||
64 | </xs:complexType> | ||
65 | </xs:element> | ||
66 | </xs:schema> | ||
diff --git a/src/api/wix/WixToolset.Data/WindowsInstaller/Xsd/objects.xsd b/src/api/wix/WixToolset.Data/WindowsInstaller/Xsd/objects.xsd new file mode 100644 index 00000000..5d95a59c --- /dev/null +++ b/src/api/wix/WixToolset.Data/WindowsInstaller/Xsd/objects.xsd | |||
@@ -0,0 +1,143 @@ | |||
1 | <?xml version="1.0" encoding="utf-8"?> | ||
2 | <!-- 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. --> | ||
3 | |||
4 | |||
5 | <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" | ||
6 | targetNamespace="http://wixtoolset.org/schemas/v4/wixobj" | ||
7 | xmlns="http://wixtoolset.org/schemas/v4/wixobj"> | ||
8 | <xs:annotation> | ||
9 | <xs:documentation> | ||
10 | Schema for describing WiX Object files (.wixobj). | ||
11 | </xs:documentation> | ||
12 | </xs:annotation> | ||
13 | |||
14 | <xs:element name="wixObject"> | ||
15 | <xs:complexType> | ||
16 | <xs:sequence minOccurs="0" maxOccurs="unbounded"> | ||
17 | <xs:element ref="section" /> | ||
18 | </xs:sequence> | ||
19 | <xs:attribute name="id" type="xs:string" use="required" /> | ||
20 | <xs:attribute name="version" type="xs:string" use="required"> | ||
21 | <xs:annotation> | ||
22 | <xs:documentation>Version of WiX used to create this object file.</xs:documentation> | ||
23 | </xs:annotation> | ||
24 | </xs:attribute> | ||
25 | </xs:complexType> | ||
26 | </xs:element> | ||
27 | |||
28 | <xs:element name="section"> | ||
29 | <xs:complexType> | ||
30 | <xs:sequence> | ||
31 | <xs:element ref="table" minOccurs="0" maxOccurs="unbounded" /> | ||
32 | </xs:sequence> | ||
33 | <xs:attribute name="id" type="xs:string"> | ||
34 | <xs:annotation> | ||
35 | <xs:documentation>Identifier for section (optional for Fragments)</xs:documentation> | ||
36 | </xs:annotation> | ||
37 | </xs:attribute> | ||
38 | <xs:attribute name="type" type="SectionType" use="required"> | ||
39 | <xs:annotation> | ||
40 | <xs:documentation>Type of section</xs:documentation> | ||
41 | </xs:annotation> | ||
42 | </xs:attribute> | ||
43 | <xs:attribute name="codepage" type="xs:integer" use="optional"> | ||
44 | <xs:annotation> | ||
45 | <xs:documentation>Codepage for output file, only valid on entry sections.</xs:documentation> | ||
46 | </xs:annotation> | ||
47 | </xs:attribute> | ||
48 | </xs:complexType> | ||
49 | </xs:element> | ||
50 | |||
51 | <xs:element name="table"> | ||
52 | <xs:complexType> | ||
53 | <xs:sequence minOccurs="0" maxOccurs="unbounded"> | ||
54 | <xs:element ref="row" /> | ||
55 | </xs:sequence> | ||
56 | <xs:attribute name="name" type="TableNameType" use="required"> | ||
57 | <xs:annotation> | ||
58 | <xs:documentation>Name of table in Windows Installer database</xs:documentation> | ||
59 | </xs:annotation> | ||
60 | </xs:attribute> | ||
61 | <xs:attribute name="op"> | ||
62 | <xs:simpleType> | ||
63 | <xs:restriction base="xs:string"> | ||
64 | <xs:enumeration value="add" /> | ||
65 | <xs:enumeration value="drop" /> | ||
66 | </xs:restriction> | ||
67 | </xs:simpleType> | ||
68 | </xs:attribute> | ||
69 | </xs:complexType> | ||
70 | </xs:element> | ||
71 | |||
72 | <xs:element name="row"> | ||
73 | <xs:annotation> | ||
74 | <xs:documentation>Row in a table</xs:documentation> | ||
75 | </xs:annotation> | ||
76 | <xs:complexType> | ||
77 | <xs:sequence maxOccurs="unbounded"> | ||
78 | <xs:element ref="field" /> | ||
79 | </xs:sequence> | ||
80 | <xs:attribute name="access"> | ||
81 | <xs:simpleType> | ||
82 | <xs:restriction base="xs:string"> | ||
83 | <xs:enumeration value="public" /> | ||
84 | <xs:enumeration value="internal" /> | ||
85 | <xs:enumeration value="protected" /> | ||
86 | <xs:enumeration value="private" /> | ||
87 | </xs:restriction> | ||
88 | </xs:simpleType> | ||
89 | </xs:attribute> | ||
90 | <xs:attribute name="op"> | ||
91 | <xs:simpleType> | ||
92 | <xs:restriction base="xs:string"> | ||
93 | <xs:enumeration value="add" /> | ||
94 | <xs:enumeration value="delete" /> | ||
95 | <xs:enumeration value="modify" /> | ||
96 | </xs:restriction> | ||
97 | </xs:simpleType> | ||
98 | </xs:attribute> | ||
99 | <xs:attribute name="redundant" type="YesNoType" /> | ||
100 | <xs:attribute name="sectionId" type="xs:string" /> | ||
101 | <xs:attribute name="sourceLineNumber" type="xs:string" /> | ||
102 | </xs:complexType> | ||
103 | </xs:element> | ||
104 | |||
105 | <xs:element name="field"> | ||
106 | <xs:annotation> | ||
107 | <xs:documentation>Data for a particular field in a row.</xs:documentation> | ||
108 | </xs:annotation> | ||
109 | <xs:complexType mixed="true"> | ||
110 | <xs:attribute name="cabinetFileId" type="xs:string" /> | ||
111 | <xs:attribute name="modified" type="YesNoType" /> | ||
112 | <xs:attribute name="previousData" type="xs:string" /> | ||
113 | <xs:attribute name="unresolvedData" type="xs:string" /> | ||
114 | <xs:attribute name="unresolvedPreviousData" type="xs:string" /> | ||
115 | <xs:attribute name="previousCabinetFileId" type="xs:string" /> | ||
116 | </xs:complexType> | ||
117 | </xs:element> | ||
118 | |||
119 | <xs:simpleType name="SectionType"> | ||
120 | <xs:restriction base="xs:NMTOKEN"> | ||
121 | <xs:enumeration value="bundle"/> | ||
122 | <xs:enumeration value="fragment" /> | ||
123 | <xs:enumeration value="module" /> | ||
124 | <xs:enumeration value="product" /> | ||
125 | <xs:enumeration value="patchCreation" /> | ||
126 | <xs:enumeration value="patch" /> | ||
127 | </xs:restriction> | ||
128 | </xs:simpleType> | ||
129 | |||
130 | <xs:simpleType name="TableNameType"> | ||
131 | <xs:restriction base="xs:string"> | ||
132 | <xs:minLength value="1" /> | ||
133 | <xs:maxLength value="62" /> | ||
134 | </xs:restriction> | ||
135 | </xs:simpleType> | ||
136 | |||
137 | <xs:simpleType name="YesNoType"> | ||
138 | <xs:restriction base="xs:NMTOKEN"> | ||
139 | <xs:enumeration value="yes" /> | ||
140 | <xs:enumeration value="no" /> | ||
141 | </xs:restriction> | ||
142 | </xs:simpleType> | ||
143 | </xs:schema> | ||
diff --git a/src/api/wix/WixToolset.Data/WixCorruptFileException.cs b/src/api/wix/WixToolset.Data/WixCorruptFileException.cs new file mode 100644 index 00000000..83c3eb80 --- /dev/null +++ b/src/api/wix/WixToolset.Data/WixCorruptFileException.cs | |||
@@ -0,0 +1,29 @@ | |||
1 | // Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. | ||
2 | |||
3 | namespace WixToolset.Data | ||
4 | { | ||
5 | using System; | ||
6 | |||
7 | /// <summary> | ||
8 | /// Exception when file does not match the expected format. | ||
9 | /// </summary> | ||
10 | public class WixCorruptFileException : WixException | ||
11 | { | ||
12 | public WixCorruptFileException(string path, string format, Exception innerException = null) | ||
13 | : base(ErrorMessages.CorruptFileFormat(path, format), innerException) | ||
14 | { | ||
15 | this.Path = path; | ||
16 | this.FileFormat = format; | ||
17 | } | ||
18 | |||
19 | /// <summary> | ||
20 | /// Gets the actual file format found in the file. | ||
21 | /// </summary> | ||
22 | public string FileFormat { get; } | ||
23 | |||
24 | /// <summary> | ||
25 | /// Gets the path to the file with unexpected format. | ||
26 | /// </summary> | ||
27 | public string Path { get; } | ||
28 | } | ||
29 | } | ||
diff --git a/src/api/wix/WixToolset.Data/WixDataStrings.Designer.cs b/src/api/wix/WixToolset.Data/WixDataStrings.Designer.cs new file mode 100644 index 00000000..de26156a --- /dev/null +++ b/src/api/wix/WixToolset.Data/WixDataStrings.Designer.cs | |||
@@ -0,0 +1,90 @@ | |||
1 | //------------------------------------------------------------------------------ | ||
2 | // <auto-generated> | ||
3 | // This code was generated by a tool. | ||
4 | // Runtime Version:4.0.30319.42000 | ||
5 | // | ||
6 | // Changes to this file may cause incorrect behavior and will be lost if | ||
7 | // the code is regenerated. | ||
8 | // </auto-generated> | ||
9 | //------------------------------------------------------------------------------ | ||
10 | |||
11 | namespace WixToolset.Data { | ||
12 | using System; | ||
13 | |||
14 | |||
15 | /// <summary> | ||
16 | /// A strongly-typed resource class, for looking up localized strings, etc. | ||
17 | /// </summary> | ||
18 | // This class was auto-generated by the StronglyTypedResourceBuilder | ||
19 | // class via a tool like ResGen or Visual Studio. | ||
20 | // To add or remove a member, edit your .ResX file then rerun ResGen | ||
21 | // with the /str option, or rebuild your VS project. | ||
22 | [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "16.0.0.0")] | ||
23 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] | ||
24 | [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] | ||
25 | public class WixDataStrings { | ||
26 | |||
27 | private static global::System.Resources.ResourceManager resourceMan; | ||
28 | |||
29 | private static global::System.Globalization.CultureInfo resourceCulture; | ||
30 | |||
31 | [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] | ||
32 | internal WixDataStrings() { | ||
33 | } | ||
34 | |||
35 | /// <summary> | ||
36 | /// Returns the cached ResourceManager instance used by this class. | ||
37 | /// </summary> | ||
38 | [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] | ||
39 | public static global::System.Resources.ResourceManager ResourceManager { | ||
40 | get { | ||
41 | if (object.ReferenceEquals(resourceMan, null)) { | ||
42 | global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("WixToolset.Data.WixDataStrings", typeof(WixDataStrings).Assembly); | ||
43 | resourceMan = temp; | ||
44 | } | ||
45 | return resourceMan; | ||
46 | } | ||
47 | } | ||
48 | |||
49 | /// <summary> | ||
50 | /// Overrides the current thread's CurrentUICulture property for all | ||
51 | /// resource lookups using this strongly typed resource class. | ||
52 | /// </summary> | ||
53 | [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] | ||
54 | public static global::System.Globalization.CultureInfo Culture { | ||
55 | get { | ||
56 | return resourceCulture; | ||
57 | } | ||
58 | set { | ||
59 | resourceCulture = value; | ||
60 | } | ||
61 | } | ||
62 | |||
63 | /// <summary> | ||
64 | /// Looks up a localized string similar to The value '{0}' is not a legal identifier and therefore cannot be modularized.. | ||
65 | /// </summary> | ||
66 | public static string EXP_CannotModularizeIllegalID { | ||
67 | get { | ||
68 | return ResourceManager.GetString("EXP_CannotModularizeIllegalID", resourceCulture); | ||
69 | } | ||
70 | } | ||
71 | |||
72 | /// <summary> | ||
73 | /// Looks up a localized string similar to Unknown column type: {0}. | ||
74 | /// </summary> | ||
75 | public static string EXP_UnknownColumnType { | ||
76 | get { | ||
77 | return ResourceManager.GetString("EXP_UnknownColumnType", resourceCulture); | ||
78 | } | ||
79 | } | ||
80 | |||
81 | /// <summary> | ||
82 | /// Looks up a localized string similar to The table {0} is not supported.. | ||
83 | /// </summary> | ||
84 | public static string EXP_UnsupportedTable { | ||
85 | get { | ||
86 | return ResourceManager.GetString("EXP_UnsupportedTable", resourceCulture); | ||
87 | } | ||
88 | } | ||
89 | } | ||
90 | } | ||
diff --git a/src/api/wix/WixToolset.Data/WixDataStrings.resx b/src/api/wix/WixToolset.Data/WixDataStrings.resx new file mode 100644 index 00000000..999f5057 --- /dev/null +++ b/src/api/wix/WixToolset.Data/WixDataStrings.resx | |||
@@ -0,0 +1,129 @@ | |||
1 | <?xml version="1.0" encoding="utf-8"?> | ||
2 | <root> | ||
3 | <!-- | ||
4 | Microsoft ResX Schema | ||
5 | |||
6 | Version 2.0 | ||
7 | |||
8 | The primary goals of this format is to allow a simple XML format | ||
9 | that is mostly human readable. The generation and parsing of the | ||
10 | various data types are done through the TypeConverter classes | ||
11 | associated with the data types. | ||
12 | |||
13 | Example: | ||
14 | |||
15 | ... ado.net/XML headers & schema ... | ||
16 | <resheader name="resmimetype">text/microsoft-resx</resheader> | ||
17 | <resheader name="version">2.0</resheader> | ||
18 | <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader> | ||
19 | <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader> | ||
20 | <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data> | ||
21 | <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data> | ||
22 | <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64"> | ||
23 | <value>[base64 mime encoded serialized .NET Framework object]</value> | ||
24 | </data> | ||
25 | <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64"> | ||
26 | <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value> | ||
27 | <comment>This is a comment</comment> | ||
28 | </data> | ||
29 | |||
30 | There are any number of "resheader" rows that contain simple | ||
31 | name/value pairs. | ||
32 | |||
33 | Each data row contains a name, and value. The row also contains a | ||
34 | type or mimetype. Type corresponds to a .NET class that support | ||
35 | text/value conversion through the TypeConverter architecture. | ||
36 | Classes that don't support this are serialized and stored with the | ||
37 | mimetype set. | ||
38 | |||
39 | The mimetype is used for serialized objects, and tells the | ||
40 | ResXResourceReader how to depersist the object. This is currently not | ||
41 | extensible. For a given mimetype the value must be set accordingly: | ||
42 | |||
43 | Note - application/x-microsoft.net.object.binary.base64 is the format | ||
44 | that the ResXResourceWriter will generate, however the reader can | ||
45 | read any of the formats listed below. | ||
46 | |||
47 | mimetype: application/x-microsoft.net.object.binary.base64 | ||
48 | value : The object must be serialized with | ||
49 | : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter | ||
50 | : and then encoded with base64 encoding. | ||
51 | |||
52 | mimetype: application/x-microsoft.net.object.soap.base64 | ||
53 | value : The object must be serialized with | ||
54 | : System.Runtime.Serialization.Formatters.Soap.SoapFormatter | ||
55 | : and then encoded with base64 encoding. | ||
56 | |||
57 | mimetype: application/x-microsoft.net.object.bytearray.base64 | ||
58 | value : The object must be serialized into a byte array | ||
59 | : using a System.ComponentModel.TypeConverter | ||
60 | : and then encoded with base64 encoding. | ||
61 | --> | ||
62 | <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata"> | ||
63 | <xsd:import namespace="http://www.w3.org/XML/1998/namespace" /> | ||
64 | <xsd:element name="root" msdata:IsDataSet="true"> | ||
65 | <xsd:complexType> | ||
66 | <xsd:choice maxOccurs="unbounded"> | ||
67 | <xsd:element name="metadata"> | ||
68 | <xsd:complexType> | ||
69 | <xsd:sequence> | ||
70 | <xsd:element name="value" type="xsd:string" minOccurs="0" /> | ||
71 | </xsd:sequence> | ||
72 | <xsd:attribute name="name" use="required" type="xsd:string" /> | ||
73 | <xsd:attribute name="type" type="xsd:string" /> | ||
74 | <xsd:attribute name="mimetype" type="xsd:string" /> | ||
75 | <xsd:attribute ref="xml:space" /> | ||
76 | </xsd:complexType> | ||
77 | </xsd:element> | ||
78 | <xsd:element name="assembly"> | ||
79 | <xsd:complexType> | ||
80 | <xsd:attribute name="alias" type="xsd:string" /> | ||
81 | <xsd:attribute name="name" type="xsd:string" /> | ||
82 | </xsd:complexType> | ||
83 | </xsd:element> | ||
84 | <xsd:element name="data"> | ||
85 | <xsd:complexType> | ||
86 | <xsd:sequence> | ||
87 | <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" /> | ||
88 | <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" /> | ||
89 | </xsd:sequence> | ||
90 | <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" /> | ||
91 | <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" /> | ||
92 | <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" /> | ||
93 | <xsd:attribute ref="xml:space" /> | ||
94 | </xsd:complexType> | ||
95 | </xsd:element> | ||
96 | <xsd:element name="resheader"> | ||
97 | <xsd:complexType> | ||
98 | <xsd:sequence> | ||
99 | <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" /> | ||
100 | </xsd:sequence> | ||
101 | <xsd:attribute name="name" type="xsd:string" use="required" /> | ||
102 | </xsd:complexType> | ||
103 | </xsd:element> | ||
104 | </xsd:choice> | ||
105 | </xsd:complexType> | ||
106 | </xsd:element> | ||
107 | </xsd:schema> | ||
108 | <resheader name="resmimetype"> | ||
109 | <value>text/microsoft-resx</value> | ||
110 | </resheader> | ||
111 | <resheader name="version"> | ||
112 | <value>2.0</value> | ||
113 | </resheader> | ||
114 | <resheader name="reader"> | ||
115 | <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> | ||
116 | </resheader> | ||
117 | <resheader name="writer"> | ||
118 | <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> | ||
119 | </resheader> | ||
120 | <data name="EXP_UnsupportedTable" xml:space="preserve"> | ||
121 | <value>The table {0} is not supported.</value> | ||
122 | </data> | ||
123 | <data name="EXP_CannotModularizeIllegalID" xml:space="preserve"> | ||
124 | <value>The value '{0}' is not a legal identifier and therefore cannot be modularized.</value> | ||
125 | </data> | ||
126 | <data name="EXP_UnknownColumnType" xml:space="preserve"> | ||
127 | <value>Unknown column type: {0}</value> | ||
128 | </data> | ||
129 | </root> \ No newline at end of file | ||
diff --git a/src/api/wix/WixToolset.Data/WixException.cs b/src/api/wix/WixToolset.Data/WixException.cs new file mode 100644 index 00000000..77dadcd2 --- /dev/null +++ b/src/api/wix/WixToolset.Data/WixException.cs | |||
@@ -0,0 +1,63 @@ | |||
1 | // Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. | ||
2 | |||
3 | namespace WixToolset.Data | ||
4 | { | ||
5 | using System; | ||
6 | |||
7 | /// <summary> | ||
8 | /// Base class for all WiX exceptions. | ||
9 | /// </summary> | ||
10 | [Serializable] | ||
11 | public class WixException : Exception | ||
12 | { | ||
13 | /// <summary> | ||
14 | /// Instantiate a new WixException. | ||
15 | /// </summary> | ||
16 | public WixException() | ||
17 | { | ||
18 | } | ||
19 | |||
20 | /// <summary> | ||
21 | /// Instantiate a new WixException with a simple string message. | ||
22 | /// </summary> | ||
23 | /// <param name="message">Simple string message.</param> | ||
24 | public WixException(string message) : base(message) | ||
25 | { | ||
26 | } | ||
27 | |||
28 | /// <summary> | ||
29 | /// Instantiate a new WixException with a simple message and exception. | ||
30 | /// </summary> | ||
31 | /// <param name="message">Simple string message.</param> | ||
32 | /// <param name="innerException">Inner exception.</param> | ||
33 | public WixException(string message, Exception innerException) : base(message, innerException) | ||
34 | { | ||
35 | } | ||
36 | |||
37 | /// <summary> | ||
38 | /// Instantiate a new WixException with a given WixError. | ||
39 | /// </summary> | ||
40 | /// <param name="error">The localized error information.</param> | ||
41 | public WixException(Message error) | ||
42 | : this(error, null) | ||
43 | { | ||
44 | } | ||
45 | |||
46 | /// <summary> | ||
47 | /// Instantiate a new WixException with a given WixError. | ||
48 | /// </summary> | ||
49 | /// <param name="error">The localized error information.</param> | ||
50 | /// <param name="exception">Original exception.</param> | ||
51 | public WixException(Message error, Exception exception) : | ||
52 | base(error.ToString(), exception) | ||
53 | { | ||
54 | this.Error = error; | ||
55 | } | ||
56 | |||
57 | /// <summary> | ||
58 | /// Gets the error message. | ||
59 | /// </summary> | ||
60 | /// <value>The error message.</value> | ||
61 | public Message Error { get; } | ||
62 | } | ||
63 | } | ||
diff --git a/src/api/wix/WixToolset.Data/WixOutput.cs b/src/api/wix/WixToolset.Data/WixOutput.cs new file mode 100644 index 00000000..43359f24 --- /dev/null +++ b/src/api/wix/WixToolset.Data/WixOutput.cs | |||
@@ -0,0 +1,279 @@ | |||
1 | // Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. | ||
2 | |||
3 | namespace WixToolset.Data | ||
4 | { | ||
5 | using System; | ||
6 | using System.IO; | ||
7 | using System.IO.Compression; | ||
8 | using System.Reflection; | ||
9 | using System.Text; | ||
10 | |||
11 | /// <summary> | ||
12 | /// Class that understands the standard file structure of the WiX toolset. | ||
13 | /// </summary> | ||
14 | public class WixOutput : IDisposable | ||
15 | { | ||
16 | private readonly Stream stream; | ||
17 | private ZipArchive archive; | ||
18 | private bool disposed; | ||
19 | |||
20 | private WixOutput(Uri uri, ZipArchive archive, Stream stream) | ||
21 | { | ||
22 | this.Uri = uri; | ||
23 | this.archive = archive; | ||
24 | this.stream = stream; | ||
25 | } | ||
26 | |||
27 | /// <summary> | ||
28 | /// | ||
29 | /// </summary> | ||
30 | public Uri Uri { get; } | ||
31 | |||
32 | /// <summary> | ||
33 | /// Creates a new file structure in memory. | ||
34 | /// </summary> | ||
35 | /// <returns>Newly created <c>WixOutput</c>.</returns> | ||
36 | public static WixOutput Create() | ||
37 | { | ||
38 | var uri = new Uri("memorystream:"); | ||
39 | |||
40 | var stream = new MemoryStream(); | ||
41 | |||
42 | return WixOutput.Create(uri, stream); | ||
43 | } | ||
44 | |||
45 | /// <summary> | ||
46 | /// Creates a new file structure on disk. | ||
47 | /// </summary> | ||
48 | /// <param name="path">Path to write file structure to.</param> | ||
49 | /// <returns>Newly created <c>WixOutput</c>.</returns> | ||
50 | public static WixOutput Create(string path) | ||
51 | { | ||
52 | var fullPath = Path.GetFullPath(path); | ||
53 | |||
54 | Directory.CreateDirectory(Path.GetDirectoryName(fullPath)); | ||
55 | |||
56 | var uri = new Uri(fullPath); | ||
57 | |||
58 | var stream = File.Create(path); | ||
59 | |||
60 | return WixOutput.Create(uri, stream); | ||
61 | } | ||
62 | |||
63 | /// <summary> | ||
64 | /// Creates a new file structure. | ||
65 | /// </summary> | ||
66 | /// <param name="uri"></param> | ||
67 | /// <param name="stream">Stream to write the file structure to.</param> | ||
68 | /// <returns>Newly created <c>WixOutput</c>.</returns> | ||
69 | public static WixOutput Create(Uri uri, Stream stream) | ||
70 | { | ||
71 | var archive = new ZipArchive(stream, ZipArchiveMode.Update, leaveOpen: true); | ||
72 | |||
73 | return new WixOutput(uri, archive, stream); | ||
74 | } | ||
75 | |||
76 | /// <summary> | ||
77 | /// Loads a wixout from a path on disk. | ||
78 | /// </summary> | ||
79 | /// <param name="path">Path to wixout file saved on disk.</param> | ||
80 | /// <returns>Loaded created <c>WixOutput</c>.</returns> | ||
81 | public static WixOutput Read(string path) | ||
82 | { | ||
83 | var uri = new Uri(Path.GetFullPath(path)); | ||
84 | |||
85 | var stream = File.OpenRead(path); | ||
86 | |||
87 | return Read(uri, stream); | ||
88 | } | ||
89 | |||
90 | /// <summary> | ||
91 | /// Loads a wixout from a path on disk or embedded resource in assembly. | ||
92 | /// </summary> | ||
93 | /// <param name="baseUri">Uri with local path to wixout file saved on disk or embedded resource in assembly.</param> | ||
94 | /// <returns>Loaded created <c>WixOutput</c>.</returns> | ||
95 | public static WixOutput Read(Uri baseUri) | ||
96 | { | ||
97 | // If the embedded files are stored in an assembly resource stream (usually | ||
98 | // a .wixlib embedded in a WixExtension). | ||
99 | if ("embeddedresource" == baseUri.Scheme) | ||
100 | { | ||
101 | var assemblyPath = Path.GetFullPath(baseUri.LocalPath); | ||
102 | var resourceName = baseUri.Fragment.TrimStart('#'); | ||
103 | |||
104 | var assembly = Assembly.LoadFile(assemblyPath); | ||
105 | return WixOutput.Read(assembly, resourceName); | ||
106 | } | ||
107 | else // normal file (usually a binary .wixlib on disk). | ||
108 | { | ||
109 | var stream = File.OpenRead(baseUri.LocalPath); | ||
110 | return WixOutput.Read(baseUri, stream); | ||
111 | } | ||
112 | } | ||
113 | |||
114 | /// <summary> | ||
115 | /// Loads a wixout from an assembly resource stream. | ||
116 | /// </summary> | ||
117 | /// <param name="assembly"></param> | ||
118 | /// <param name="resourceName"></param> | ||
119 | /// <returns>Loaded created <c>WixOutput</c>.</returns> | ||
120 | public static WixOutput Read(Assembly assembly, string resourceName) | ||
121 | { | ||
122 | var resourceStream = assembly.GetManifestResourceStream(resourceName); | ||
123 | |||
124 | var uriBuilder = new UriBuilder(assembly.CodeBase) | ||
125 | { | ||
126 | Scheme = "embeddedresource", | ||
127 | Fragment = resourceName | ||
128 | }; | ||
129 | |||
130 | return Read(uriBuilder.Uri, resourceStream); | ||
131 | } | ||
132 | |||
133 | /// <summary> | ||
134 | /// Reads a file structure from an open stream. | ||
135 | /// </summary> | ||
136 | /// <param name="uri"></param> | ||
137 | /// <param name="stream">Stream to read from.</param> | ||
138 | /// <returns>Loaded created <c>WixOutput</c>.</returns> | ||
139 | public static WixOutput Read(Uri uri, Stream stream) | ||
140 | { | ||
141 | try | ||
142 | { | ||
143 | var archive = new ZipArchive(stream, ZipArchiveMode.Read, leaveOpen: true); | ||
144 | |||
145 | return new WixOutput(uri, archive, stream); | ||
146 | } | ||
147 | catch (InvalidDataException) | ||
148 | { | ||
149 | throw new WixException(ErrorMessages.CorruptFileFormat(uri.AbsoluteUri, "wixout")); | ||
150 | } | ||
151 | } | ||
152 | |||
153 | /// <summary> | ||
154 | /// Reopen the underlying archive for read-only or read-write access. | ||
155 | /// </summary> | ||
156 | /// <param name="writable">Indicates whether the output can be modified. Defaults to false.</param> | ||
157 | public void Reopen(bool writable = false) | ||
158 | { | ||
159 | this.archive?.Dispose(); | ||
160 | this.archive = null; | ||
161 | |||
162 | this.archive = new ZipArchive(this.stream, writable ? ZipArchiveMode.Update : ZipArchiveMode.Read, leaveOpen: true); | ||
163 | } | ||
164 | |||
165 | /// <summary> | ||
166 | /// Extracts an embedded file. | ||
167 | /// </summary> | ||
168 | /// <param name="embeddedId">Id to the file to extract.</param> | ||
169 | /// <param name="outputPath">Path to write the extracted file to.</param> | ||
170 | public void ExtractEmbeddedFile(string embeddedId, string outputPath) | ||
171 | { | ||
172 | var entry = this.archive.GetEntry(embeddedId); | ||
173 | |||
174 | if (entry == null) | ||
175 | { | ||
176 | throw new ArgumentOutOfRangeException(nameof(embeddedId)); | ||
177 | } | ||
178 | |||
179 | var folder = Path.GetDirectoryName(outputPath); | ||
180 | |||
181 | Directory.CreateDirectory(folder); | ||
182 | |||
183 | entry.ExtractToFile(outputPath, overwrite: true); | ||
184 | } | ||
185 | |||
186 | /// <summary> | ||
187 | /// Creates a data stream in the wixout. | ||
188 | /// </summary> | ||
189 | /// <returns>Stream to the data of the file.</returns> | ||
190 | public Stream CreateDataStream(string name) | ||
191 | { | ||
192 | this.DeleteExistingEntry(name); | ||
193 | |||
194 | var entry = this.archive.CreateEntry(name); | ||
195 | |||
196 | return entry.Open(); | ||
197 | } | ||
198 | |||
199 | /// <summary> | ||
200 | /// Imports a file from disk into the output. | ||
201 | /// </summary> | ||
202 | /// <param name="name">Name of the stream in the output.</param> | ||
203 | /// <param name="path">Path to file on disk to include in the output.</param> | ||
204 | public void ImportDataStream(string name, string path) | ||
205 | { | ||
206 | this.DeleteExistingEntry(name); | ||
207 | |||
208 | this.archive.CreateEntryFromFile(path, name, System.IO.Compression.CompressionLevel.Optimal); | ||
209 | } | ||
210 | |||
211 | /// <summary> | ||
212 | /// Gets a non-closing stream to the data of the file. | ||
213 | /// </summary> | ||
214 | /// <returns>Stream to the data of the file.</returns> | ||
215 | public Stream GetDataStream(string name) | ||
216 | { | ||
217 | var entry = this.archive.GetEntry(name); | ||
218 | |||
219 | if (entry == null) | ||
220 | { | ||
221 | throw new ArgumentOutOfRangeException(nameof(name)); | ||
222 | } | ||
223 | |||
224 | return entry.Open(); | ||
225 | } | ||
226 | |||
227 | /// <summary> | ||
228 | /// Gets the data of the file as a string. | ||
229 | /// </summary> | ||
230 | /// <returns>String contents data of the file.</returns> | ||
231 | public string GetData(string name) | ||
232 | { | ||
233 | var entry = this.archive.GetEntry(name); | ||
234 | |||
235 | // Use StreamReader to "swallow" BOM if present. | ||
236 | using (var stream = entry.Open()) | ||
237 | using (var streamReader = new StreamReader(stream, Encoding.UTF8)) | ||
238 | { | ||
239 | return streamReader.ReadToEnd(); | ||
240 | } | ||
241 | } | ||
242 | |||
243 | /// <summary> | ||
244 | /// Disposes of the internal state of the file structure. | ||
245 | /// </summary> | ||
246 | public void Dispose() | ||
247 | { | ||
248 | this.Dispose(true); | ||
249 | GC.SuppressFinalize(this); | ||
250 | } | ||
251 | |||
252 | /// <summary> | ||
253 | /// Disposes of the internsl state of the file structure. | ||
254 | /// </summary> | ||
255 | /// <param name="disposing">True if disposing.</param> | ||
256 | protected virtual void Dispose(bool disposing) | ||
257 | { | ||
258 | if (!this.disposed) | ||
259 | { | ||
260 | if (disposing) | ||
261 | { | ||
262 | this.archive?.Dispose(); | ||
263 | this.stream?.Dispose(); | ||
264 | } | ||
265 | } | ||
266 | |||
267 | this.disposed = true; | ||
268 | } | ||
269 | |||
270 | private void DeleteExistingEntry(string name) | ||
271 | { | ||
272 | var entry = this.archive.GetEntry(name); | ||
273 | if (entry != null) | ||
274 | { | ||
275 | entry.Delete(); | ||
276 | } | ||
277 | } | ||
278 | } | ||
279 | } | ||
diff --git a/src/api/wix/WixToolset.Data/WixToolset.Data.csproj b/src/api/wix/WixToolset.Data/WixToolset.Data.csproj new file mode 100644 index 00000000..24b0917b --- /dev/null +++ b/src/api/wix/WixToolset.Data/WixToolset.Data.csproj | |||
@@ -0,0 +1,40 @@ | |||
1 | <?xml version="1.0" encoding="utf-8"?> | ||
2 | <!-- 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. --> | ||
3 | |||
4 | <Project Sdk="Microsoft.NET.Sdk"> | ||
5 | <PropertyGroup> | ||
6 | <TargetFrameworks>netstandard2.0</TargetFrameworks> | ||
7 | <TargetFrameworks Condition=" '$(Configuration)'=='Release' ">$(TargetFrameworks);net461;net472</TargetFrameworks> | ||
8 | <LangVersion>7.3</LangVersion> | ||
9 | <Description>WiX Toolset Data</Description> | ||
10 | <DebugType>embedded</DebugType> | ||
11 | <PublishRepositoryUrl>true</PublishRepositoryUrl> | ||
12 | <CreateDocumentationFile>true</CreateDocumentationFile> | ||
13 | <!-- TODO: This shouldn't be ignored because this is public-facing --> | ||
14 | <NoWarn>CS1591</NoWarn> | ||
15 | </PropertyGroup> | ||
16 | |||
17 | <ItemGroup> | ||
18 | <PackageReference Include="System.IO.Compression" Version="4.3.0" /> | ||
19 | </ItemGroup> | ||
20 | |||
21 | <ItemGroup> | ||
22 | <PackageReference Include="Microsoft.SourceLink.GitHub" Version="1.0.0" PrivateAssets="All" /> | ||
23 | <PackageReference Include="Nerdbank.GitVersioning" Version="3.3.37" PrivateAssets="all" /> | ||
24 | </ItemGroup> | ||
25 | |||
26 | <ItemGroup> | ||
27 | <Compile Update="WixDataStrings.Designer.cs"> | ||
28 | <DesignTime>True</DesignTime> | ||
29 | <AutoGen>True</AutoGen> | ||
30 | <DependentUpon>WixDataStrings.resx</DependentUpon> | ||
31 | </Compile> | ||
32 | </ItemGroup> | ||
33 | |||
34 | <ItemGroup> | ||
35 | <EmbeddedResource Update="WixDataStrings.resx"> | ||
36 | <Generator>PublicResXFileCodeGenerator</Generator> | ||
37 | <LastGenOutput>WixDataStrings.Designer.cs</LastGenOutput> | ||
38 | </EmbeddedResource> | ||
39 | </ItemGroup> | ||
40 | </Project> | ||
diff --git a/src/api/wix/WixToolset.Data/WixToolset.Data.v3.ncrunchproject b/src/api/wix/WixToolset.Data/WixToolset.Data.v3.ncrunchproject new file mode 100644 index 00000000..c6001ebe --- /dev/null +++ b/src/api/wix/WixToolset.Data/WixToolset.Data.v3.ncrunchproject | |||
@@ -0,0 +1,7 @@ | |||
1 | <ProjectConfiguration> | ||
2 | <Settings> | ||
3 | <AdditionalFilesToIncludeForProject> | ||
4 | <Value>..\..\version.json</Value> | ||
5 | </AdditionalFilesToIncludeForProject> | ||
6 | </Settings> | ||
7 | </ProjectConfiguration> \ No newline at end of file | ||
diff --git a/src/api/wix/WixToolset.Data/WixUnexpectedFileFormatException.cs b/src/api/wix/WixToolset.Data/WixUnexpectedFileFormatException.cs new file mode 100644 index 00000000..4bd6ba4a --- /dev/null +++ b/src/api/wix/WixToolset.Data/WixUnexpectedFileFormatException.cs | |||
@@ -0,0 +1,35 @@ | |||
1 | // Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. | ||
2 | |||
3 | namespace WixToolset.Data | ||
4 | { | ||
5 | using System; | ||
6 | |||
7 | /// <summary> | ||
8 | /// Exception when file does not match the expected format. | ||
9 | /// </summary> | ||
10 | public class WixUnexpectedFileFormatException : WixException | ||
11 | { | ||
12 | public WixUnexpectedFileFormatException(string path, string expectedFormat, string format, Exception innerException = null) | ||
13 | : base(ErrorMessages.UnexpectedFileFormat(path, expectedFormat, format), innerException) | ||
14 | { | ||
15 | this.Path = path; | ||
16 | this.ExpectedFileFormat = expectedFormat; | ||
17 | this.FileFormat = format; | ||
18 | } | ||
19 | |||
20 | /// <summary> | ||
21 | /// Gets the expected file format. | ||
22 | /// </summary> | ||
23 | public string ExpectedFileFormat { get; } | ||
24 | |||
25 | /// <summary> | ||
26 | /// Gets the actual file format found in the file. | ||
27 | /// </summary> | ||
28 | public string FileFormat { get; } | ||
29 | |||
30 | /// <summary> | ||
31 | /// Gets the path to the file with unexpected format. | ||
32 | /// </summary> | ||
33 | public string Path { get; set; } | ||
34 | } | ||
35 | } | ||
diff --git a/src/api/wix/WixToolset.Data/YesNoAlwaysType.cs b/src/api/wix/WixToolset.Data/YesNoAlwaysType.cs new file mode 100644 index 00000000..3b4ca5d7 --- /dev/null +++ b/src/api/wix/WixToolset.Data/YesNoAlwaysType.cs | |||
@@ -0,0 +1,25 @@ | |||
1 | // Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. | ||
2 | |||
3 | namespace WixToolset.Data | ||
4 | { | ||
5 | /// <summary> | ||
6 | /// Yes, No, Always xml simple type. | ||
7 | /// </summary> | ||
8 | public enum YesNoAlwaysType | ||
9 | { | ||
10 | /// <summary>Not a valid yes, no or always value.</summary> | ||
11 | IllegalValue = -2, | ||
12 | |||
13 | /// <summary>Value not set; equivalent to null for reference types.</summary> | ||
14 | NotSet = -1, | ||
15 | |||
16 | /// <summary>The no value.</summary> | ||
17 | No, | ||
18 | |||
19 | /// <summary>The yes value.</summary> | ||
20 | Yes, | ||
21 | |||
22 | /// <summary>The always value.</summary> | ||
23 | Always, | ||
24 | } | ||
25 | } | ||
diff --git a/src/api/wix/WixToolset.Data/YesNoDefaultType.cs b/src/api/wix/WixToolset.Data/YesNoDefaultType.cs new file mode 100644 index 00000000..fd782d46 --- /dev/null +++ b/src/api/wix/WixToolset.Data/YesNoDefaultType.cs | |||
@@ -0,0 +1,25 @@ | |||
1 | // Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. | ||
2 | |||
3 | namespace WixToolset.Data | ||
4 | { | ||
5 | /// <summary> | ||
6 | /// Yes, No, Default xml simple type. | ||
7 | /// </summary> | ||
8 | public enum YesNoDefaultType | ||
9 | { | ||
10 | /// <summary>Not a valid yes, no or default value.</summary> | ||
11 | IllegalValue = -2, | ||
12 | |||
13 | /// <summary>Value not set; equivalent to null for reference types.</summary> | ||
14 | NotSet = -1, | ||
15 | |||
16 | /// <summary>The no value.</summary> | ||
17 | No, | ||
18 | |||
19 | /// <summary>The yes value.</summary> | ||
20 | Yes, | ||
21 | |||
22 | /// <summary>The default value.</summary> | ||
23 | Default, | ||
24 | } | ||
25 | } | ||
diff --git a/src/api/wix/WixToolset.Data/YesNoType.cs b/src/api/wix/WixToolset.Data/YesNoType.cs new file mode 100644 index 00000000..9c1cc9a7 --- /dev/null +++ b/src/api/wix/WixToolset.Data/YesNoType.cs | |||
@@ -0,0 +1,22 @@ | |||
1 | // Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. | ||
2 | |||
3 | namespace WixToolset.Data | ||
4 | { | ||
5 | /// <summary> | ||
6 | /// Yes/no type (kinda like a boolean). | ||
7 | /// </summary> | ||
8 | public enum YesNoType | ||
9 | { | ||
10 | /// <summary>Not a valid yes or no value.</summary> | ||
11 | IllegalValue = -2, | ||
12 | |||
13 | /// <summary>Value not set; equivalent to null for reference types.</summary> | ||
14 | NotSet = -1, | ||
15 | |||
16 | /// <summary>The no value.</summary> | ||
17 | No, | ||
18 | |||
19 | /// <summary>The yes value.</summary> | ||
20 | Yes, | ||
21 | } | ||
22 | } | ||
diff --git a/src/api/wix/appveyor.cmd b/src/api/wix/appveyor.cmd new file mode 100644 index 00000000..5e5debc9 --- /dev/null +++ b/src/api/wix/appveyor.cmd | |||
@@ -0,0 +1,19 @@ | |||
1 | @setlocal | ||
2 | @pushd %~dp0 | ||
3 | @set _C=Release | ||
4 | @if /i "%1"=="debug" set _C=Debug | ||
5 | |||
6 | :: Restore | ||
7 | msbuild -p:Configuration=%_C% -t:Restore || exit /b | ||
8 | |||
9 | :: Build | ||
10 | msbuild -p:Configuration=%_C% || exit /b | ||
11 | |||
12 | :: Test | ||
13 | dotnet test -c %_C% --no-build || exit /b | ||
14 | |||
15 | :: Pack | ||
16 | msbuild -p:Configuration=%_C% -p:NoBuild=true -t:Pack || exit /b | ||
17 | |||
18 | @popd | ||
19 | @endlocal | ||
diff --git a/src/api/wix/appveyor.yml b/src/api/wix/appveyor.yml new file mode 100644 index 00000000..c53cc9cc --- /dev/null +++ b/src/api/wix/appveyor.yml | |||
@@ -0,0 +1,42 @@ | |||
1 | # Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. | ||
2 | # | ||
3 | # Do NOT modify this file. Update the canonical version in Home\repo-template\src\appveyor.yml | ||
4 | # then update all of the repos. | ||
5 | |||
6 | branches: | ||
7 | only: | ||
8 | - master | ||
9 | - develop | ||
10 | |||
11 | image: Visual Studio 2019 | ||
12 | |||
13 | version: 0.0.0.{build} | ||
14 | configuration: Release | ||
15 | |||
16 | environment: | ||
17 | DOTNET_SKIP_FIRST_TIME_EXPERIENCE: true | ||
18 | DOTNET_CLI_TELEMETRY_OPTOUT: 1 | ||
19 | NUGET_XMLDOC_MODE: skip | ||
20 | |||
21 | build_script: | ||
22 | - appveyor.cmd | ||
23 | |||
24 | pull_requests: | ||
25 | do_not_increment_build_number: true | ||
26 | |||
27 | nuget: | ||
28 | disable_publish_on_pr: true | ||
29 | |||
30 | skip_branch_with_pr: true | ||
31 | skip_tags: true | ||
32 | |||
33 | artifacts: | ||
34 | - path: build\Release\**\*.nupkg | ||
35 | name: nuget | ||
36 | - path: build\Release\**\*.snupkg | ||
37 | name: snupkg | ||
38 | |||
39 | notifications: | ||
40 | - provider: Slack | ||
41 | incoming_webhook: | ||
42 | secure: p5xuu+4x2JHfwGDMDe5KcG1k7gZxqYc4jWVwvyNZv5cvkubPD2waJs5yXMAXZNN7Z63/3PWHb7q4KoY/99AjauYa1nZ4c5qYqRPFRBKTHfA= | ||
diff --git a/src/api/wix/nuget.config b/src/api/wix/nuget.config new file mode 100644 index 00000000..d5ef8952 --- /dev/null +++ b/src/api/wix/nuget.config | |||
@@ -0,0 +1,8 @@ | |||
1 | <?xml version="1.0" encoding="utf-8"?> | ||
2 | <configuration> | ||
3 | <packageSources> | ||
4 | <clear /> | ||
5 | <add key="wixbuildtools" value="https://ci.appveyor.com/nuget/wixbuildtools" /> | ||
6 | <add key="api.nuget.org" value="https://api.nuget.org/v3/index.json" protocolVersion="3" /> | ||
7 | </packageSources> | ||
8 | </configuration> \ No newline at end of file | ||
diff --git a/src/api/wix/test/WixToolsetTest.Data/SerializeFixture.cs b/src/api/wix/test/WixToolsetTest.Data/SerializeFixture.cs new file mode 100644 index 00000000..8a65c2d4 --- /dev/null +++ b/src/api/wix/test/WixToolsetTest.Data/SerializeFixture.cs | |||
@@ -0,0 +1,427 @@ | |||
1 | // Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. | ||
2 | |||
3 | namespace WixToolsetTest.Data | ||
4 | { | ||
5 | using System; | ||
6 | using System.IO; | ||
7 | using System.Linq; | ||
8 | using WixToolset.Data; | ||
9 | using WixToolset.Data.Bind; | ||
10 | using WixToolset.Data.Symbols; | ||
11 | using WixToolset.Data.WindowsInstaller.Rows; | ||
12 | using Xunit; | ||
13 | |||
14 | using Wid = WixToolset.Data.WindowsInstaller; | ||
15 | |||
16 | public class SerializeFixture | ||
17 | { | ||
18 | [Fact] | ||
19 | public void CanSaveAndLoadIntermediate() | ||
20 | { | ||
21 | var sln = new SourceLineNumber("test.wxs", 1); | ||
22 | |||
23 | var section = new IntermediateSection("test", SectionType.Product); | ||
24 | |||
25 | section.AddSymbol(new ComponentSymbol(sln, new Identifier(AccessModifier.Global, "TestComponent")) | ||
26 | { | ||
27 | ComponentId = new Guid(1, 0, 0, new byte[8]).ToString("B"), | ||
28 | DirectoryRef = "TestFolder", | ||
29 | Location = ComponentLocation.Either, | ||
30 | }); | ||
31 | |||
32 | var intermediate = new Intermediate("TestIntermediate", IntermediateLevels.Compiled, new[] { section }, null); | ||
33 | |||
34 | intermediate.UpdateLevel(IntermediateLevels.Linked); | ||
35 | intermediate.UpdateLevel(IntermediateLevels.Resolved); | ||
36 | |||
37 | var path = Path.GetTempFileName(); | ||
38 | try | ||
39 | { | ||
40 | intermediate.Save(path); | ||
41 | |||
42 | var loaded = Intermediate.Load(path); | ||
43 | |||
44 | Assert.True(loaded.HasLevel(IntermediateLevels.Compiled)); | ||
45 | Assert.True(loaded.HasLevel(IntermediateLevels.Linked)); | ||
46 | Assert.True(loaded.HasLevel(IntermediateLevels.Resolved)); | ||
47 | |||
48 | var symbol = (ComponentSymbol)loaded.Sections.Single().Symbols.Single(); | ||
49 | |||
50 | Assert.Equal("TestComponent", symbol.Id.Id); | ||
51 | Assert.Equal(AccessModifier.Global, symbol.Id.Access); | ||
52 | Assert.Equal("TestFolder", symbol.DirectoryRef); | ||
53 | Assert.Equal(ComponentLocation.Either, symbol.Location); | ||
54 | } | ||
55 | finally | ||
56 | { | ||
57 | File.Delete(path); | ||
58 | } | ||
59 | } | ||
60 | |||
61 | [Fact] | ||
62 | public void CanUpdateIntermediate() | ||
63 | { | ||
64 | var sln = new SourceLineNumber("test.wxs", 1); | ||
65 | var section = new IntermediateSection("test", SectionType.Product); | ||
66 | |||
67 | section.AddSymbol(new ComponentSymbol(sln, new Identifier(AccessModifier.Global, "TestComponent")) | ||
68 | { | ||
69 | ComponentId = new Guid(1, 0, 0, new byte[8]).ToString("B"), | ||
70 | DirectoryRef = "TestFolder", | ||
71 | Location = ComponentLocation.Either, | ||
72 | }); | ||
73 | |||
74 | var intermediate = new Intermediate("TestIntermediate", IntermediateLevels.Compiled, new[] { section }, null); | ||
75 | |||
76 | var path = Path.GetTempFileName(); | ||
77 | try | ||
78 | { | ||
79 | intermediate.Save(path); | ||
80 | |||
81 | var uri = new Uri(Path.GetFullPath(path)); | ||
82 | var stream = File.Open(path, FileMode.Open, FileAccess.ReadWrite); | ||
83 | |||
84 | using (var wixout = WixOutput.Read(uri, stream)) | ||
85 | { | ||
86 | var loaded = Intermediate.Load(wixout); | ||
87 | var symbol = (ComponentSymbol)loaded.Sections.Single().Symbols.Single(); | ||
88 | |||
89 | Assert.Equal("TestComponent", symbol.Id.Id); | ||
90 | Assert.Equal(AccessModifier.Global, symbol.Id.Access); | ||
91 | |||
92 | wixout.Reopen(writable: true); | ||
93 | |||
94 | section.AddSymbol(new ComponentSymbol(sln, new Identifier(AccessModifier.Global, "NewComponent")) | ||
95 | { | ||
96 | ComponentId = new Guid(1, 0, 0, new byte[8]).ToString("B"), | ||
97 | }); | ||
98 | |||
99 | intermediate.Save(wixout); | ||
100 | loaded = Intermediate.Load(wixout); | ||
101 | |||
102 | var newSymbol = loaded.Sections.Single().Symbols.Where(t => t.Id.Id == "NewComponent"); | ||
103 | Assert.Single(newSymbol); | ||
104 | } | ||
105 | |||
106 | var loadedAfterDispose = Intermediate.Load(path); | ||
107 | var newSymbolStillThere = loadedAfterDispose.Sections.Single().Symbols.Where(t => t.Id.Id == "NewComponent"); | ||
108 | Assert.Single(newSymbolStillThere); | ||
109 | |||
110 | } | ||
111 | finally | ||
112 | { | ||
113 | File.Delete(path); | ||
114 | } | ||
115 | } | ||
116 | |||
117 | [Fact] | ||
118 | public void CanSaveAndLoadIntermediateWithCustomDefinitions() | ||
119 | { | ||
120 | var sln = new SourceLineNumber("test.wxs", 1); | ||
121 | |||
122 | var section = new IntermediateSection("test", SectionType.Product); | ||
123 | |||
124 | var fieldDefs = new[] | ||
125 | { | ||
126 | new IntermediateFieldDefinition("A", IntermediateFieldType.String), | ||
127 | new IntermediateFieldDefinition("B", IntermediateFieldType.Number), | ||
128 | new IntermediateFieldDefinition("C", IntermediateFieldType.Bool), | ||
129 | }; | ||
130 | |||
131 | var symbolDef = new IntermediateSymbolDefinition("CustomDef2", fieldDefs, null); | ||
132 | |||
133 | var symbol = symbolDef.CreateSymbol(sln, new Identifier(AccessModifier.Global, "customT")); | ||
134 | symbol.Set(0, "foo"); | ||
135 | symbol.Set(1, 2); | ||
136 | symbol.Set(2, true); | ||
137 | |||
138 | section.AddSymbol(symbol); | ||
139 | |||
140 | var intermediate = new Intermediate("TestIntermediate", new[] { section }, null); | ||
141 | |||
142 | var path = Path.GetTempFileName(); | ||
143 | try | ||
144 | { | ||
145 | intermediate.Save(path); | ||
146 | |||
147 | var loaded = Intermediate.Load(path); | ||
148 | var loadedSection = loaded.Sections.Single(); | ||
149 | var loadedSymbol = loadedSection.Symbols.Single(); | ||
150 | |||
151 | Assert.Equal("foo", loadedSymbol.AsString(0)); | ||
152 | Assert.Equal(2, loadedSymbol[1].AsNumber()); | ||
153 | Assert.True(loadedSymbol[2].AsBool()); | ||
154 | } | ||
155 | finally | ||
156 | { | ||
157 | File.Delete(path); | ||
158 | } | ||
159 | } | ||
160 | |||
161 | [Fact] | ||
162 | public void CanSaveAndLoadMultipleIntermediateWithCustomDefinitions() | ||
163 | { | ||
164 | var sln = new SourceLineNumber("test.wxs", 1); | ||
165 | |||
166 | // Intermediate #1 | ||
167 | var fieldDefs = new[] | ||
168 | { | ||
169 | new IntermediateFieldDefinition("A", IntermediateFieldType.String), | ||
170 | new IntermediateFieldDefinition("B", IntermediateFieldType.Number), | ||
171 | new IntermediateFieldDefinition("C", IntermediateFieldType.Bool), | ||
172 | }; | ||
173 | |||
174 | var symbolDef = new IntermediateSymbolDefinition("CustomDef", fieldDefs, null); | ||
175 | |||
176 | var symbol = symbolDef.CreateSymbol(sln, new Identifier(AccessModifier.Global, "customT")); | ||
177 | symbol.Set(0, "foo"); | ||
178 | symbol.Set(1, 2); | ||
179 | symbol.Set(2, true); | ||
180 | |||
181 | var section = new IntermediateSection("test", SectionType.Product); | ||
182 | section.AddSymbol(symbol); | ||
183 | |||
184 | var intermediate1 = new Intermediate("TestIntermediate", new[] { section }, null); | ||
185 | |||
186 | // Intermediate #2 | ||
187 | var fieldDefs2 = new[] | ||
188 | { | ||
189 | new IntermediateFieldDefinition("A", IntermediateFieldType.String), | ||
190 | new IntermediateFieldDefinition("B", IntermediateFieldType.Number), | ||
191 | new IntermediateFieldDefinition("C", IntermediateFieldType.Bool), | ||
192 | new IntermediateFieldDefinition("D", IntermediateFieldType.String), | ||
193 | }; | ||
194 | |||
195 | var symbolDef2 = new IntermediateSymbolDefinition("CustomDef2", 1, fieldDefs2, null); | ||
196 | |||
197 | var symbol2 = symbolDef2.CreateSymbol(sln, new Identifier(AccessModifier.Global, "customT2")); | ||
198 | symbol2.Set(0, "bar"); | ||
199 | symbol2.Set(1, 3); | ||
200 | symbol2.Set(2, false); | ||
201 | symbol2.Set(3, "baz"); | ||
202 | |||
203 | var section2 = new IntermediateSection("test2", SectionType.Fragment); | ||
204 | section2.AddSymbol(symbol2); | ||
205 | |||
206 | var intermediate2 = new Intermediate("TestIntermediate2", new[] { section2 }, null); | ||
207 | |||
208 | // Save | ||
209 | var path1 = Path.GetTempFileName(); | ||
210 | var path2 = Path.GetTempFileName(); | ||
211 | try | ||
212 | { | ||
213 | intermediate1.Save(path1); | ||
214 | intermediate2.Save(path2); | ||
215 | |||
216 | var loaded = Intermediate.Load(new[] { path1, path2 }); | ||
217 | |||
218 | var loaded1 = loaded.First(); | ||
219 | var loaded2 = loaded.Skip(1).Single(); | ||
220 | |||
221 | var loadedSymbol1 = loaded1.Sections.Single().Symbols.Single(); | ||
222 | var loadedSymbol2 = loaded2.Sections.Single().Symbols.Single(); | ||
223 | |||
224 | Assert.Equal("foo", loadedSymbol1.AsString(0)); | ||
225 | Assert.Equal(2, loadedSymbol1[1].AsNumber()); | ||
226 | Assert.True(loadedSymbol1[2].AsBool()); | ||
227 | |||
228 | Assert.Equal("bar", loadedSymbol2.AsString(0)); | ||
229 | Assert.Equal(3, loadedSymbol2[1].AsNumber()); | ||
230 | Assert.False(loadedSymbol2[2].AsBool()); | ||
231 | Assert.Equal("baz", loadedSymbol2.AsString(3)); | ||
232 | } | ||
233 | finally | ||
234 | { | ||
235 | File.Delete(path2); | ||
236 | File.Delete(path1); | ||
237 | } | ||
238 | } | ||
239 | |||
240 | [Fact] | ||
241 | public void CanSaveAndLoadMultipleIntermediateWithCustomDefinitionsAndTags() | ||
242 | { | ||
243 | var sln = new SourceLineNumber("test.wxs", 1); | ||
244 | |||
245 | // Intermediate #1 | ||
246 | var fieldDefs = new[] | ||
247 | { | ||
248 | new IntermediateFieldDefinition("A", IntermediateFieldType.String), | ||
249 | new IntermediateFieldDefinition("B", IntermediateFieldType.Number), | ||
250 | new IntermediateFieldDefinition("C", IntermediateFieldType.Bool), | ||
251 | }; | ||
252 | |||
253 | var symbolDef = new IntermediateSymbolDefinition("CustomDef", fieldDefs, null); | ||
254 | |||
255 | symbolDef.AddTag("customDef"); | ||
256 | |||
257 | var symbol = symbolDef.CreateSymbol(sln, new Identifier(AccessModifier.Global, "customT")); | ||
258 | symbol.Set(0, "foo"); | ||
259 | symbol.Set(1, 2); | ||
260 | symbol.Set(2, true); | ||
261 | |||
262 | symbol.AddTag("symbol1tag"); | ||
263 | |||
264 | var section = new IntermediateSection("test", SectionType.Product); | ||
265 | section.AddSymbol(symbol); | ||
266 | |||
267 | var intermediate1 = new Intermediate("TestIntermediate", new[] { section }, null); | ||
268 | |||
269 | // Intermediate #2 | ||
270 | var fieldDefs2 = new[] | ||
271 | { | ||
272 | new IntermediateFieldDefinition("A", IntermediateFieldType.String), | ||
273 | new IntermediateFieldDefinition("B", IntermediateFieldType.Number), | ||
274 | new IntermediateFieldDefinition("C", IntermediateFieldType.Bool), | ||
275 | new IntermediateFieldDefinition("D", IntermediateFieldType.String), | ||
276 | }; | ||
277 | |||
278 | var symbolDef2 = new IntermediateSymbolDefinition("CustomDef2", 1, fieldDefs2, null); | ||
279 | |||
280 | symbolDef2.AddTag("customDef2"); | ||
281 | symbolDef2.AddTag("customDef2 tag2"); | ||
282 | |||
283 | var symbol2 = symbolDef2.CreateSymbol(sln, new Identifier(AccessModifier.Global, "customT2")); | ||
284 | symbol2.Set(0, "bar"); | ||
285 | symbol2.Set(1, 3); | ||
286 | symbol2.Set(2, false); | ||
287 | symbol2.Set(3, "baz"); | ||
288 | |||
289 | symbol2.AddTag("symbol2tag1"); | ||
290 | symbol2.AddTag("symbol2tag2"); | ||
291 | |||
292 | var section2 = new IntermediateSection("test2", SectionType.Fragment); | ||
293 | section2.AddSymbol(symbol2); | ||
294 | |||
295 | var intermediate2 = new Intermediate("TestIntermediate2", new[] { section2 }, null); | ||
296 | |||
297 | // Save | ||
298 | var path1 = Path.GetTempFileName(); | ||
299 | var path2 = Path.GetTempFileName(); | ||
300 | try | ||
301 | { | ||
302 | intermediate1.Save(path1); | ||
303 | intermediate2.Save(path2); | ||
304 | |||
305 | var loaded = Intermediate.Load(new[] { path1, path2 }); | ||
306 | |||
307 | var loaded1 = loaded.First(); | ||
308 | var loaded2 = loaded.Skip(1).Single(); | ||
309 | |||
310 | var loadedSymbol1 = loaded1.Sections.Single().Symbols.Single(); | ||
311 | var loadedSymbol2 = loaded2.Sections.Single().Symbols.Single(); | ||
312 | |||
313 | Assert.True(loadedSymbol1.Definition.HasTag("customDef")); | ||
314 | Assert.Equal("foo", loadedSymbol1.AsString(0)); | ||
315 | Assert.Equal(2, loadedSymbol1[1].AsNumber()); | ||
316 | Assert.True(loadedSymbol1[2].AsBool()); | ||
317 | Assert.True(loadedSymbol1.HasTag("symbol1tag")); | ||
318 | |||
319 | Assert.True(loadedSymbol2.Definition.HasTag("customDef2")); | ||
320 | Assert.True(loadedSymbol2.Definition.HasTag("customDef2 tag2")); | ||
321 | Assert.Equal("bar", loadedSymbol2.AsString(0)); | ||
322 | Assert.Equal(3, loadedSymbol2[1].AsNumber()); | ||
323 | Assert.False(loadedSymbol2[2].AsBool()); | ||
324 | Assert.Equal("baz", loadedSymbol2.AsString(3)); | ||
325 | Assert.True(loadedSymbol2.HasTag("symbol2tag1")); | ||
326 | Assert.True(loadedSymbol2.HasTag("symbol2tag2")); | ||
327 | } | ||
328 | finally | ||
329 | { | ||
330 | File.Delete(path2); | ||
331 | File.Delete(path1); | ||
332 | } | ||
333 | } | ||
334 | |||
335 | [Fact] | ||
336 | public void CanSaveAndLoadIntermediateWithLocalization() | ||
337 | { | ||
338 | var sln = new SourceLineNumber("test.wxs", 10); | ||
339 | |||
340 | var bindVariables = new[] | ||
341 | { | ||
342 | new BindVariable { Id = "TestVar1", Value = "TestValue1", SourceLineNumbers = sln }, | ||
343 | new BindVariable { Id = "TestVar2", Value = "TestValue2", Overridable = true, SourceLineNumbers = sln }, | ||
344 | }; | ||
345 | |||
346 | var controls = new[] | ||
347 | { | ||
348 | new LocalizedControl("TestDlg1", "TestControl1", 10, 10, 100, 100, false, false, false, null), | ||
349 | new LocalizedControl("TestDlg1", "TestControl2", 100, 90, 50, 70, false, false, false, "localized"), | ||
350 | }; | ||
351 | |||
352 | var localizations = new[] | ||
353 | { | ||
354 | new Localization(65001, 1252, null, bindVariables.ToDictionary(b => b.Id), controls.ToDictionary(c => c.GetKey())) | ||
355 | }; | ||
356 | |||
357 | var section = new IntermediateSection("test", SectionType.Product); | ||
358 | |||
359 | section.AddSymbol(new ComponentSymbol(sln, new Identifier(AccessModifier.Global, "TestComponent")) | ||
360 | { | ||
361 | ComponentId = new Guid(1, 0, 0, new byte[8]).ToString("B"), | ||
362 | DirectoryRef = "TestFolder", | ||
363 | Location = ComponentLocation.Either, | ||
364 | }); | ||
365 | |||
366 | var intermediate = new Intermediate("TestIntermediate", new[] { section }, localizations.ToDictionary(l => l.Culture)); | ||
367 | |||
368 | var path = Path.GetTempFileName(); | ||
369 | try | ||
370 | { | ||
371 | intermediate.Save(path); | ||
372 | |||
373 | var loaded = Intermediate.Load(path); | ||
374 | |||
375 | var loc = loaded.Localizations.Single(); | ||
376 | Assert.Equal(65001, loc.Codepage); | ||
377 | Assert.Empty(loc.Culture); | ||
378 | Assert.Equal(new[] | ||
379 | { | ||
380 | "TestVar1/TestValue1/False", | ||
381 | "TestVar2/TestValue2/True", | ||
382 | }, loc.Variables.Select(v => String.Join("/", v.Id, v.Value, v.Overridable)).ToArray()); | ||
383 | } | ||
384 | finally | ||
385 | { | ||
386 | File.Delete(path); | ||
387 | } | ||
388 | } | ||
389 | |||
390 | [Fact] | ||
391 | public void CanSaveAndLoadWindowsInstallerData() | ||
392 | { | ||
393 | var sln = new SourceLineNumber("test.wxs", 1); | ||
394 | var windowsInstallerData = new Wid.WindowsInstallerData(sln) | ||
395 | { | ||
396 | Type = OutputType.Product, | ||
397 | }; | ||
398 | |||
399 | var fileTable = windowsInstallerData.EnsureTable(Wid.WindowsInstallerTableDefinitions.File); | ||
400 | var fileRow = (FileRow)fileTable.CreateRow(sln); | ||
401 | fileRow.File = "TestFile"; | ||
402 | |||
403 | var path = Path.GetTempFileName(); | ||
404 | try | ||
405 | { | ||
406 | using (var wixout = WixOutput.Create(path)) | ||
407 | { | ||
408 | windowsInstallerData.Save(wixout); | ||
409 | } | ||
410 | |||
411 | var loaded = Wid.WindowsInstallerData.Load(path); | ||
412 | |||
413 | var loadedTable = Assert.Single(loaded.Tables); | ||
414 | Assert.Equal(Wid.WindowsInstallerTableDefinitions.File.Name, loadedTable.Name); | ||
415 | |||
416 | var loadedRow = Assert.Single(loadedTable.Rows); | ||
417 | var loadedFileRow = Assert.IsType<FileRow>(loadedRow); | ||
418 | |||
419 | Assert.Equal("TestFile", loadedFileRow.File); | ||
420 | } | ||
421 | finally | ||
422 | { | ||
423 | File.Delete(path); | ||
424 | } | ||
425 | } | ||
426 | } | ||
427 | } | ||
diff --git a/src/api/wix/test/WixToolsetTest.Data/TagFixture.cs b/src/api/wix/test/WixToolsetTest.Data/TagFixture.cs new file mode 100644 index 00000000..5527c978 --- /dev/null +++ b/src/api/wix/test/WixToolsetTest.Data/TagFixture.cs | |||
@@ -0,0 +1,101 @@ | |||
1 | // Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. | ||
2 | |||
3 | namespace WixToolsetTest.Data | ||
4 | { | ||
5 | using WixToolset.Data; | ||
6 | using Xunit; | ||
7 | |||
8 | public class TagFixture | ||
9 | { | ||
10 | [Fact] | ||
11 | public void CanAddSingleTag() | ||
12 | { | ||
13 | var symbol = SymbolDefinitions.File.CreateSymbol(); | ||
14 | Assert.True(symbol.AddTag("test")); | ||
15 | Assert.True(symbol.HasTag("test")); | ||
16 | } | ||
17 | |||
18 | [Fact] | ||
19 | public void CanAddDuplicateTag() | ||
20 | { | ||
21 | var symbol = SymbolDefinitions.File.CreateSymbol(); | ||
22 | Assert.True(symbol.AddTag("test")); | ||
23 | Assert.False(symbol.AddTag("test")); | ||
24 | } | ||
25 | |||
26 | [Fact] | ||
27 | public void CanAddRemoveSingleTag() | ||
28 | { | ||
29 | var symbol = SymbolDefinitions.File.CreateSymbol(); | ||
30 | Assert.True(symbol.AddTag("test")); | ||
31 | Assert.True(symbol.RemoveTag("test")); | ||
32 | Assert.False(symbol.HasTag("test")); | ||
33 | } | ||
34 | |||
35 | [Fact] | ||
36 | public void CanAddMultipleTags() | ||
37 | { | ||
38 | var symbol = SymbolDefinitions.File.CreateSymbol(); | ||
39 | Assert.True(symbol.AddTag("test1")); | ||
40 | Assert.True(symbol.AddTag("test2")); | ||
41 | Assert.True(symbol.HasTag("test1")); | ||
42 | Assert.True(symbol.HasTag("test2")); | ||
43 | } | ||
44 | |||
45 | [Fact] | ||
46 | public void CanAddRemoveMultipleTags() | ||
47 | { | ||
48 | var symbol = SymbolDefinitions.File.CreateSymbol(); | ||
49 | Assert.True(symbol.AddTag("test1")); | ||
50 | Assert.True(symbol.AddTag("test2")); | ||
51 | Assert.True(symbol.RemoveTag("test2")); | ||
52 | Assert.False(symbol.HasTag("test2")); | ||
53 | Assert.True(symbol.RemoveTag("test1")); | ||
54 | Assert.False(symbol.HasTag("test1")); | ||
55 | } | ||
56 | |||
57 | [Fact] | ||
58 | public void CanAddRemoveMissingTags() | ||
59 | { | ||
60 | var symbol = SymbolDefinitions.File.CreateSymbol(); | ||
61 | Assert.True(symbol.AddTag("test1")); | ||
62 | Assert.True(symbol.AddTag("test2")); | ||
63 | Assert.False(symbol.RemoveTag("test3")); | ||
64 | } | ||
65 | |||
66 | [Fact] | ||
67 | public void CanAdd2AndRemoveAllTags() | ||
68 | { | ||
69 | var symbol = SymbolDefinitions.File.CreateSymbol(); | ||
70 | Assert.True(symbol.AddTag("test1")); | ||
71 | Assert.True(symbol.AddTag("test2")); | ||
72 | Assert.True(symbol.RemoveTag("test1")); | ||
73 | Assert.True(symbol.RemoveTag("test2")); | ||
74 | } | ||
75 | |||
76 | [Fact] | ||
77 | public void CanAdd3AndRemoveAllTags() | ||
78 | { | ||
79 | var symbol = SymbolDefinitions.File.CreateSymbol(); | ||
80 | Assert.True(symbol.AddTag("test1")); | ||
81 | Assert.True(symbol.AddTag("test2")); | ||
82 | Assert.True(symbol.AddTag("test3")); | ||
83 | Assert.True(symbol.RemoveTag("test1")); | ||
84 | Assert.True(symbol.RemoveTag("test3")); | ||
85 | Assert.True(symbol.RemoveTag("test2")); | ||
86 | } | ||
87 | |||
88 | [Fact] | ||
89 | public void CanAdd3AndRemoveMissingTags() | ||
90 | { | ||
91 | var symbol = SymbolDefinitions.File.CreateSymbol(); | ||
92 | Assert.True(symbol.AddTag("test1")); | ||
93 | Assert.True(symbol.AddTag("test2")); | ||
94 | Assert.True(symbol.AddTag("test3")); | ||
95 | Assert.False(symbol.RemoveTag("test4")); | ||
96 | Assert.True(symbol.RemoveTag("test1")); | ||
97 | Assert.True(symbol.RemoveTag("test3")); | ||
98 | Assert.True(symbol.RemoveTag("test2")); | ||
99 | } | ||
100 | } | ||
101 | } | ||
diff --git a/src/api/wix/test/WixToolsetTest.Data/TupleDefinitionFixture.cs b/src/api/wix/test/WixToolsetTest.Data/TupleDefinitionFixture.cs new file mode 100644 index 00000000..cde4a675 --- /dev/null +++ b/src/api/wix/test/WixToolsetTest.Data/TupleDefinitionFixture.cs | |||
@@ -0,0 +1,135 @@ | |||
1 | // Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. | ||
2 | |||
3 | namespace WixToolsetTest.Data | ||
4 | { | ||
5 | using WixToolset.Data; | ||
6 | using WixToolset.Data.Symbols; | ||
7 | using Xunit; | ||
8 | |||
9 | public class SymbolDefinitionFixture | ||
10 | { | ||
11 | [Fact] | ||
12 | public void CanCreateFileSymbol() | ||
13 | { | ||
14 | var symbol = SymbolDefinitions.File.CreateSymbol(); | ||
15 | Assert.IsType<FileSymbol>(symbol); | ||
16 | Assert.Same(SymbolDefinitions.File, symbol.Definition); | ||
17 | } | ||
18 | |||
19 | [Fact] | ||
20 | public void CanCreateFileSymbolByName() | ||
21 | { | ||
22 | var symbol = SymbolDefinitions.ByName("File").CreateSymbol(); | ||
23 | Assert.IsType<FileSymbol>(symbol); | ||
24 | Assert.Same(SymbolDefinitions.File, symbol.Definition); | ||
25 | } | ||
26 | |||
27 | //[Fact] | ||
28 | //public void CanCreateFileSymbolByType() | ||
29 | //{ | ||
30 | // var symbol = SymbolDefinitions.CreateSymbol<FileSymbol>(); | ||
31 | // Assert.Same(SymbolDefinitions.File, symbol.Definition); | ||
32 | //} | ||
33 | |||
34 | [Fact] | ||
35 | public void CanSetComponentFieldInFileSymbolByCasting() | ||
36 | { | ||
37 | var fileSymbol = (FileSymbol)SymbolDefinitions.File.CreateSymbol(); | ||
38 | fileSymbol.ComponentRef = "Foo"; | ||
39 | Assert.Equal("Foo", fileSymbol.ComponentRef); | ||
40 | } | ||
41 | |||
42 | [Fact] | ||
43 | public void CanCheckNameofField() | ||
44 | { | ||
45 | var fileSymbol = new FileSymbol(); | ||
46 | Assert.Equal("ComponentRef", fileSymbol.Definition.FieldDefinitions[0].Name); | ||
47 | Assert.Null(fileSymbol.Fields[0]); | ||
48 | fileSymbol.ComponentRef = "Foo"; | ||
49 | Assert.Equal("ComponentRef", fileSymbol.Fields[0].Name); | ||
50 | Assert.Same(fileSymbol.Definition.FieldDefinitions[0].Name, fileSymbol.Fields[0].Name); | ||
51 | } | ||
52 | |||
53 | [Fact] | ||
54 | public void CanSetComponentFieldInFileSymbolByNew() | ||
55 | { | ||
56 | var fileSymbol = new FileSymbol(); | ||
57 | fileSymbol.ComponentRef = "Foo"; | ||
58 | Assert.Equal("Foo", fileSymbol.ComponentRef); | ||
59 | } | ||
60 | |||
61 | [Fact] | ||
62 | public void CanGetContext() | ||
63 | { | ||
64 | using (new IntermediateFieldContext("bar")) | ||
65 | { | ||
66 | var fileSymbol = new FileSymbol(); | ||
67 | fileSymbol.ComponentRef = "Foo"; | ||
68 | |||
69 | var field = fileSymbol[FileSymbolFields.ComponentRef]; | ||
70 | Assert.Equal("Foo", field.AsString()); | ||
71 | Assert.Equal("bar", field.Context); | ||
72 | } | ||
73 | } | ||
74 | |||
75 | [Fact] | ||
76 | public void CanSetInNestedContext() | ||
77 | { | ||
78 | var fileSymbol = new FileSymbol(); | ||
79 | |||
80 | using (new IntermediateFieldContext("bar")) | ||
81 | { | ||
82 | fileSymbol.ComponentRef = "Foo"; | ||
83 | |||
84 | var field = fileSymbol[FileSymbolFields.ComponentRef]; | ||
85 | Assert.Equal("Foo", field.AsString()); | ||
86 | Assert.Equal("bar", field.Context); | ||
87 | |||
88 | using (new IntermediateFieldContext("baz")) | ||
89 | { | ||
90 | fileSymbol.ComponentRef = "Foo2"; | ||
91 | |||
92 | field = fileSymbol[FileSymbolFields.ComponentRef]; | ||
93 | Assert.Equal("Foo2", field.AsString()); | ||
94 | Assert.Equal("baz", field.Context); | ||
95 | |||
96 | Assert.Equal("Foo", (string)field.PreviousValue); | ||
97 | Assert.Equal("bar", field.PreviousValue.Context); | ||
98 | } | ||
99 | |||
100 | fileSymbol.ComponentRef = "Foo3"; | ||
101 | |||
102 | field = fileSymbol[FileSymbolFields.ComponentRef]; | ||
103 | Assert.Equal("Foo3", field.AsString()); | ||
104 | Assert.Equal("bar", field.Context); | ||
105 | |||
106 | Assert.Equal("Foo2", (string)field.PreviousValue); | ||
107 | Assert.Equal("baz", field.PreviousValue.Context); | ||
108 | |||
109 | Assert.Equal("Foo", (string)field.PreviousValue.PreviousValue); | ||
110 | Assert.Equal("bar", field.PreviousValue.PreviousValue.Context); | ||
111 | } | ||
112 | |||
113 | fileSymbol.ComponentRef = "Foo4"; | ||
114 | |||
115 | var fieldOutside = fileSymbol[FileSymbolFields.ComponentRef]; | ||
116 | Assert.Equal("Foo4", fieldOutside.AsString()); | ||
117 | Assert.Null(fieldOutside.Context); | ||
118 | } | ||
119 | |||
120 | //[Fact] | ||
121 | //public void CanSetComponentFieldInFileSymbol() | ||
122 | //{ | ||
123 | // var fileSymbol = SymbolDefinitions.File.CreateSymbol<FileSymbol>(); | ||
124 | // fileSymbol.Component_ = "Foo"; | ||
125 | // Assert.Equal("Foo", fileSymbol.Component_); | ||
126 | //} | ||
127 | |||
128 | //[Fact] | ||
129 | //public void CanThrowOnMismatchSymbolType() | ||
130 | //{ | ||
131 | // var e = Assert.Throws<InvalidCastException>(() => SymbolDefinitions.File.CreateSymbol<ComponentSymbol>()); | ||
132 | // Assert.Equal("Requested wrong type WixToolset.Data.Symbols.ComponentSymbol, actual type WixToolset.Data.Symbols.FileSymbol", e.Message); | ||
133 | //} | ||
134 | } | ||
135 | } | ||
diff --git a/src/api/wix/test/WixToolsetTest.Data/WindowsInstallerTableDefinitionsFixture.cs b/src/api/wix/test/WixToolsetTest.Data/WindowsInstallerTableDefinitionsFixture.cs new file mode 100644 index 00000000..5621a756 --- /dev/null +++ b/src/api/wix/test/WixToolsetTest.Data/WindowsInstallerTableDefinitionsFixture.cs | |||
@@ -0,0 +1,29 @@ | |||
1 | // Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. | ||
2 | |||
3 | namespace WixToolsetTest.Data | ||
4 | { | ||
5 | using WixToolset.Data.WindowsInstaller; | ||
6 | using Xunit; | ||
7 | |||
8 | public class WindowsInstallerTableDefinitionsFixture | ||
9 | { | ||
10 | [Fact] | ||
11 | public void CanCreateWindowsInstallerRows() | ||
12 | { | ||
13 | foreach (var tableDefinition in WindowsInstallerTableDefinitions.All) | ||
14 | { | ||
15 | var table = new Table(tableDefinition); | ||
16 | var rowFromTable = table.CreateRow(null); | ||
17 | var rowFromTableDefinition = tableDefinition.CreateRow(null); | ||
18 | var expectedRowTypeName = tableDefinition.Name.Replace("_", "") + "Row"; | ||
19 | var expectedRowType = rowFromTable.GetType(); | ||
20 | |||
21 | Assert.Equal(expectedRowType, rowFromTableDefinition.GetType()); | ||
22 | if (typeof(Row) != expectedRowType) | ||
23 | { | ||
24 | Assert.Equal(expectedRowTypeName, expectedRowType.Name); | ||
25 | } | ||
26 | } | ||
27 | } | ||
28 | } | ||
29 | } | ||
diff --git a/src/api/wix/test/WixToolsetTest.Data/WixToolsetTest.Data.csproj b/src/api/wix/test/WixToolsetTest.Data/WixToolsetTest.Data.csproj new file mode 100644 index 00000000..fb0f8594 --- /dev/null +++ b/src/api/wix/test/WixToolsetTest.Data/WixToolsetTest.Data.csproj | |||
@@ -0,0 +1,19 @@ | |||
1 | <Project Sdk="Microsoft.NET.Sdk"> | ||
2 | |||
3 | <PropertyGroup> | ||
4 | <TargetFramework>netcoreapp3.1</TargetFramework> | ||
5 | |||
6 | <IsPackable>false</IsPackable> | ||
7 | </PropertyGroup> | ||
8 | |||
9 | <ItemGroup> | ||
10 | <ProjectReference Include="..\..\WixToolset.Data\WixToolset.Data.csproj" /> | ||
11 | </ItemGroup> | ||
12 | |||
13 | <ItemGroup> | ||
14 | <PackageReference Include="Microsoft.NET.Test.Sdk" Version="15.8.0" /> | ||
15 | <PackageReference Include="xunit" Version="2.4.1" /> | ||
16 | <PackageReference Include="xunit.runner.visualstudio" Version="2.4.1" PrivateAssets="All" /> | ||
17 | </ItemGroup> | ||
18 | |||
19 | </Project> | ||