@joebigelow / wix / commits / c239e0cc

Integrate into latest v4.

Sean Hall committed Feb 4, 2019 at 20:06 UTC c239e0cc3a28a50c42c63b086ee62e17cf699104
80 files changed +3717 -1047
.editorconfig new
+37
@@ -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 +# Do NOT modify this file. Update the canonical version in Home\repo-template\src\.editorconfig
4 +# then update all of the repos.
5 +
6 +root = true
7 +
8 +[*]
9 +charset = utf-8
10 +indent_style = space
11 +indent_size = 4
12 +trim_trailing_whitespace = true
13 +
14 +[*.{cs,vb}]
15 +dotnet_sort_system_directives_first = true
16 +
17 +[*.cs]
18 +csharp_indent_case_contents = true : error
19 +csharp_indent_switch_labels = true : error
20 +csharp_new_line_before_open_brace = all
21 +csharp_prefer_braces = true : error
22 +csharp_style_expression_bodied_methods = when_on_single_line : suggestion
23 +csharp_style_expression_bodied_constructors = when_on_single_line : suggestion
24 +csharp_style_expression_bodied_operators = when_on_single_line : suggestion
25 +csharp_style_expression_bodied_properties = when_on_single_line : suggestion
26 +csharp_style_expression_bodied_indexers = when_on_single_line : suggestion
27 +csharp_style_expression_bodied_accessors = when_on_single_line : suggestion
28 +csharp_style_var_elsewhere = true : suggestion
29 +csharp_style_var_for_built_in_types = true : suggestion
30 +csharp_style_var_when_type_is_apparent = true : suggestion
31 +dotnet_style_qualification_for_event = true : error
32 +dotnet_style_qualification_for_field = true : error
33 +dotnet_style_qualification_for_method = true : error
34 +dotnet_style_qualification_for_property = true : error
35 +
36 +[*.targets]
37 +indent_size = 2
ComPlus.wixext.sln new
+64
@@ -0,0 +1,64 @@
1 +
2 +Microsoft Visual Studio Solution File, Format Version 12.00
3 +# Visual Studio 15
4 +VisualStudioVersion = 15.0.28010.2016
5 +MinimumVisualStudioVersion = 10.0.40219.1
6 +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "complusca", "src\ca\complusca.vcxproj", "{BDEF51ED-E242-4FA2-801A-01B127DF851A}"
7 +EndProject
8 +Project("{930C7802-8A8C-48F9-8165-68863BCCD9DD}") = "complus", "src\wixlib\complus.wixproj", "{E191E61E-E098-4F71-888F-51A79F952022}"
9 + ProjectSection(ProjectDependencies) = postProject
10 + {BDEF51ED-E242-4FA2-801A-01B127DF851A} = {BDEF51ED-E242-4FA2-801A-01B127DF851A}
11 + EndProjectSection
12 +EndProject
13 +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "WixToolset.ComPlus.wixext", "src\wixext\WixToolset.ComPlus.wixext.csproj", "{1497B777-330B-4CFE-927A-22850CD24D64}"
14 +EndProject
15 +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "WixToolsetTest.ComPlus", "src\test\WixToolsetTest.ComPlus\WixToolsetTest.ComPlus.csproj", "{2FC5F039-EACF-428B-BA87-8CDE1D25E121}"
16 +EndProject
17 +Global
18 + GlobalSection(SolutionConfigurationPlatforms) = preSolution
19 + Debug|Any CPU = Debug|Any CPU
20 + Debug|x86 = Debug|x86
21 + Release|Any CPU = Release|Any CPU
22 + Release|x86 = Release|x86
23 + EndGlobalSection
24 + GlobalSection(ProjectConfigurationPlatforms) = postSolution
25 + {BDEF51ED-E242-4FA2-801A-01B127DF851A}.Debug|Any CPU.ActiveCfg = Debug|Win32
26 + {BDEF51ED-E242-4FA2-801A-01B127DF851A}.Debug|Any CPU.Build.0 = Debug|Win32
27 + {BDEF51ED-E242-4FA2-801A-01B127DF851A}.Debug|x86.ActiveCfg = Debug|Win32
28 + {BDEF51ED-E242-4FA2-801A-01B127DF851A}.Debug|x86.Build.0 = Debug|Win32
29 + {BDEF51ED-E242-4FA2-801A-01B127DF851A}.Release|Any CPU.ActiveCfg = Release|Win32
30 + {BDEF51ED-E242-4FA2-801A-01B127DF851A}.Release|Any CPU.Build.0 = Release|Win32
31 + {BDEF51ED-E242-4FA2-801A-01B127DF851A}.Release|x86.ActiveCfg = Release|Win32
32 + {BDEF51ED-E242-4FA2-801A-01B127DF851A}.Release|x86.Build.0 = Release|Win32
33 + {E191E61E-E098-4F71-888F-51A79F952022}.Debug|Any CPU.ActiveCfg = Debug|x86
34 + {E191E61E-E098-4F71-888F-51A79F952022}.Debug|Any CPU.Build.0 = Debug|x86
35 + {E191E61E-E098-4F71-888F-51A79F952022}.Debug|x86.ActiveCfg = Debug|x86
36 + {E191E61E-E098-4F71-888F-51A79F952022}.Debug|x86.Build.0 = Debug|x86
37 + {E191E61E-E098-4F71-888F-51A79F952022}.Release|Any CPU.ActiveCfg = Release|x86
38 + {E191E61E-E098-4F71-888F-51A79F952022}.Release|Any CPU.Build.0 = Release|x86
39 + {E191E61E-E098-4F71-888F-51A79F952022}.Release|x86.ActiveCfg = Release|x86
40 + {E191E61E-E098-4F71-888F-51A79F952022}.Release|x86.Build.0 = Release|x86
41 + {1497B777-330B-4CFE-927A-22850CD24D64}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
42 + {1497B777-330B-4CFE-927A-22850CD24D64}.Debug|Any CPU.Build.0 = Debug|Any CPU
43 + {1497B777-330B-4CFE-927A-22850CD24D64}.Debug|x86.ActiveCfg = Debug|Any CPU
44 + {1497B777-330B-4CFE-927A-22850CD24D64}.Debug|x86.Build.0 = Debug|Any CPU
45 + {1497B777-330B-4CFE-927A-22850CD24D64}.Release|Any CPU.ActiveCfg = Release|Any CPU
46 + {1497B777-330B-4CFE-927A-22850CD24D64}.Release|Any CPU.Build.0 = Release|Any CPU
47 + {1497B777-330B-4CFE-927A-22850CD24D64}.Release|x86.ActiveCfg = Release|Any CPU
48 + {1497B777-330B-4CFE-927A-22850CD24D64}.Release|x86.Build.0 = Release|Any CPU
49 + {2FC5F039-EACF-428B-BA87-8CDE1D25E121}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
50 + {2FC5F039-EACF-428B-BA87-8CDE1D25E121}.Debug|Any CPU.Build.0 = Debug|Any CPU
51 + {2FC5F039-EACF-428B-BA87-8CDE1D25E121}.Debug|x86.ActiveCfg = Debug|Any CPU
52 + {2FC5F039-EACF-428B-BA87-8CDE1D25E121}.Debug|x86.Build.0 = Debug|Any CPU
53 + {2FC5F039-EACF-428B-BA87-8CDE1D25E121}.Release|Any CPU.ActiveCfg = Release|Any CPU
54 + {2FC5F039-EACF-428B-BA87-8CDE1D25E121}.Release|Any CPU.Build.0 = Release|Any CPU
55 + {2FC5F039-EACF-428B-BA87-8CDE1D25E121}.Release|x86.ActiveCfg = Release|Any CPU
56 + {2FC5F039-EACF-428B-BA87-8CDE1D25E121}.Release|x86.Build.0 = Release|Any CPU
57 + EndGlobalSection
58 + GlobalSection(SolutionProperties) = preSolution
59 + HideSolutionNode = FALSE
60 + EndGlobalSection
61 + GlobalSection(ExtensibilityGlobals) = postSolution
62 + SolutionGuid = {3E1857C4-5EE1-4C9E-9390-9954E041546D}
63 + EndGlobalSection
64 +EndGlobal
appveyor.cmd new
+16
@@ -0,0 +1,16 @@
1 +@setlocal
2 +@pushd %~dp0
3 +
4 +nuget restore
5 +
6 +msbuild -p:Configuration=Release -t:Restore
7 +
8 +msbuild -p:Configuration=Release -p:Platform=Win32 src\ca\complusca.vcxproj
9 +msbuild -p:Configuration=Release -p:Platform=x64 src\ca\complusca.vcxproj
10 +
11 +msbuild -p:Configuration=Release src\test\WixToolsetTest.ComPlus\WixToolsetTest.ComPlus.csproj
12 +
13 +msbuild -p:Configuration=Release -t:Pack src\wixext\WixToolset.ComPlus.wixext.csproj
14 +
15 +@popd
16 +@endlocal
\ No newline at end of file
appveyor.yml new
+42
@@ -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 2017
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\**\*.msi
37 + name: msi
38 +
39 +notifications:
40 +- provider: Slack
41 + incoming_webhook:
42 + secure: p5xuu+4x2JHfwGDMDe5KcG1k7gZxqYc4jWVwvyNZv5cvkubPD2waJs5yXMAXZNN7Z63/3PWHb7q4KoY/99AjauYa1nZ4c5qYqRPFRBKTHfA=
nuget.config new
+16
@@ -0,0 +1,16 @@
1 +<?xml version="1.0" encoding="utf-8"?>
2 +<configuration>
3 + <packageSources>
4 + <clear />
5 + <add key="wixtoolset-data" value="https://ci.appveyor.com/nuget/wixtoolset-data" />
6 + <add key="wixtoolset-extensibility" value="https://ci.appveyor.com/nuget/wixtoolset-extensibility" />
7 + <add key="wixtoolset-core" value="https://ci.appveyor.com/nuget/wixtoolset-core" />
8 + <add key="wixtoolset-core-native" value="https://ci.appveyor.com/nuget/wixtoolset-core-native" />
9 + <add key="wixtoolset-dtf" value="https://ci.appveyor.com/nuget/wixtoolset-dtf" />
10 + <add key="wixtoolset-dutil" value="https://ci.appveyor.com/nuget/wixtoolset-dutil" />
11 + <add key="wixtoolset-wcautil" value="https://ci.appveyor.com/nuget/wixtoolset-wcautil" />
12 + <add key="wixtoolset-tools" value="https://ci.appveyor.com/nuget/wixtoolset-tools" />
13 + <add key="wixbuildtools" value="https://ci.appveyor.com/nuget/wixbuildtools" />
14 + <add key="api.nuget.org" value="https://api.nuget.org/v3/index.json" protocolVersion="3" />
15 + </packageSources>
16 +</configuration>
\ No newline at end of file
src/Cpp.Build.props new
+106
@@ -0,0 +1,106 @@
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>
5 + <PropertyGroup>
6 + <Platform Condition=" '$(Platform)' == '' OR '$(Platform)' == 'AnyCPU' OR '$(Platform)' == 'x86' ">Win32</Platform>
7 + <NormalizedPlatform Condition=" '$(Platform)'=='Win32' ">x86</NormalizedPlatform>
8 + <NormalizedPlatform Condition=" '$(NormalizedPlatform)'=='' ">$(Platform)</NormalizedPlatform>
9 + <IntDir>$(BaseIntermediateOutputPath)$(Configuration)\$(NormalizedPlatform)\</IntDir>
10 + <OutDir>$(OutputPath)$(NormalizedPlatform)\</OutDir>
11 + </PropertyGroup>
12 +
13 + <PropertyGroup Condition="'$(WindowsTargetPlatformVersion)'=='' AND '$(VisualStudioVersion)'=='15.0'">
14 + <WindowsTargetPlatformVersion>$([Microsoft.Build.Utilities.ToolLocationHelper]::GetLatestSDKTargetPlatformVersion('Windows', '10.0'))</WindowsTargetPlatformVersion>
15 + </PropertyGroup>
16 +
17 + <ItemDefinitionGroup>
18 + <ClCompile>
19 + <DisableSpecificWarnings>$(DisableSpecificCompilerWarnings)</DisableSpecificWarnings>
20 + <WarningLevel>Level4</WarningLevel>
21 + <AdditionalIncludeDirectories>$(ProjectDir)inc;$(MSBuildProjectDirectory);$(IntDir);$(SqlCESdkIncludePath);$(ProjectAdditionalIncludeDirectories);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
22 + <PreprocessorDefinitions>WIN32;_WINDOWS;_WIN32_MSI=500;_WIN32_WINNT=0x0501;$(ArmPreprocessorDefinitions);$(UnicodePreprocessorDefinitions);_CRT_STDIO_LEGACY_WIDE_SPECIFIERS;_WINSOCK_DEPRECATED_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
23 + <PrecompiledHeader>Use</PrecompiledHeader>
24 + <PrecompiledHeaderFile>precomp.h</PrecompiledHeaderFile>
25 + <CallingConvention Condition="'$(Platform)'=='Win32'">StdCall</CallingConvention>
26 + <TreatWarningAsError>true</TreatWarningAsError>
27 + <ExceptionHandling>false</ExceptionHandling>
28 + <AdditionalOptions>-YlprecompDefine</AdditionalOptions>
29 + <AdditionalOptions Condition=" $(PlatformToolset.StartsWith('v14')) ">/Zc:threadSafeInit- %(AdditionalOptions)</AdditionalOptions>
30 + <MultiProcessorCompilation Condition=" $(NUMBER_OF_PROCESSORS) &gt; 4 ">true</MultiProcessorCompilation>
31 + </ClCompile>
32 + <ResourceCompile>
33 + <PreprocessorDefinitions>$(ArmPreprocessorDefinitions);%(PreprocessorDefinitions)</PreprocessorDefinitions>
34 + <AdditionalIncludeDirectories>$(ProjectAdditionalResourceIncludeDirectories);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
35 + </ResourceCompile>
36 + <Lib>
37 + <AdditionalLibraryDirectories>$(OutDir);$(AdditionalMultiTargetLibraryPath);$(ProjectAdditionalLibraryDirectories);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
38 + </Lib>
39 + <Link>
40 + <SubSystem>$(ProjectSubSystem)</SubSystem>
41 + <ModuleDefinitionFile>$(ProjectModuleDefinitionFile)</ModuleDefinitionFile>
42 + <NoEntryPoint>$(ResourceOnlyDll)</NoEntryPoint>
43 + <GenerateDebugInformation>true</GenerateDebugInformation>
44 + <AdditionalDependencies>$(ProjectAdditionalLinkLibraries);advapi32.lib;comdlg32.lib;user32.lib;oleaut32.lib;gdi32.lib;shell32.lib;ole32.lib;version.lib;%(AdditionalDependencies)</AdditionalDependencies>
45 + <AdditionalLibraryDirectories>$(OutDir);$(AdditionalMultiTargetLibraryPath);$(ArmLibraryDirectories);$(ProjectAdditionalLinkLibraryDirectories);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
46 + <AdditionalOptions Condition=" $(PlatformToolset.StartsWith('v14')) ">/IGNORE:4099 %(AdditionalOptions)</AdditionalOptions>
47 + </Link>
48 + </ItemDefinitionGroup>
49 +
50 + <ItemDefinitionGroup Condition=" '$(Platform)'=='Win32' and '$(PlatformToolset)'!='v100'">
51 + <ClCompile>
52 + <EnableEnhancedInstructionSet>NoExtensions</EnableEnhancedInstructionSet>
53 + </ClCompile>
54 + </ItemDefinitionGroup>
55 + <ItemDefinitionGroup Condition=" '$(Platform)'=='arm' ">
56 + <ClCompile>
57 + <CallingConvention>CDecl</CallingConvention>
58 + </ClCompile>
59 + </ItemDefinitionGroup>
60 + <ItemDefinitionGroup Condition=" '$(ConfigurationType)'=='StaticLibrary' ">
61 + <ClCompile>
62 + <DebugInformationFormat>OldStyle</DebugInformationFormat>
63 + <OmitDefaultLibName>true</OmitDefaultLibName>
64 + <IgnoreAllDefaultLibraries>true</IgnoreAllDefaultLibraries>
65 + </ClCompile>
66 + </ItemDefinitionGroup>
67 + <ItemDefinitionGroup Condition=" '$(Configuration)'=='Debug' ">
68 + <ClCompile>
69 + <Optimization>Disabled</Optimization>
70 + <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
71 + <PreprocessorDefinitions>_DEBUG;DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
72 + <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
73 + </ClCompile>
74 + </ItemDefinitionGroup>
75 + <ItemDefinitionGroup Condition=" '$(Configuration)'=='Debug' and '$(CLRSupport)'=='true' ">
76 + <ClCompile>
77 + <BasicRuntimeChecks></BasicRuntimeChecks>
78 + <RuntimeLibrary>MultiThreadedDebugDll</RuntimeLibrary>
79 + </ClCompile>
80 + </ItemDefinitionGroup>
81 + <ItemDefinitionGroup Condition=" '$(Configuration)'=='Release' ">
82 + <ClCompile>
83 + <Optimization>MinSpace</Optimization>
84 + <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
85 + <FunctionLevelLinking>true</FunctionLevelLinking>
86 + <IntrinsicFunctions>true</IntrinsicFunctions>
87 + <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
88 + </ClCompile>
89 + <Link>
90 + <EnableCOMDATFolding>true</EnableCOMDATFolding>
91 + <OptimizeReferences>true</OptimizeReferences>
92 + </Link>
93 + </ItemDefinitionGroup>
94 + <ItemDefinitionGroup Condition=" '$(Configuration)'=='Release' and '$(CLRSupport)'=='true' ">
95 + <ClCompile>
96 + <BasicRuntimeChecks></BasicRuntimeChecks>
97 + <RuntimeLibrary>MultiThreadedDll</RuntimeLibrary>
98 + </ClCompile>
99 + </ItemDefinitionGroup>
100 + <ItemDefinitionGroup Condition=" '$(CLRSupport)'=='true' ">
101 + <Link>
102 + <KeyFile>$(LinkKeyFile)</KeyFile>
103 + <DelaySign>$(LinkDelaySign)</DelaySign>
104 + </Link>
105 + </ItemDefinitionGroup>
106 +</Project>
src/Directory.Build.props new
+28
@@ -0,0 +1,28 @@
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="Cpp.Build.props" Condition=" Exists('Cpp.Build.props') And '$(MSBuildProjectExtension)'=='.vcxproj' " />
26 + <Import Project="Wix.Build.props" Condition=" Exists('Wix.Build.props') And '$(MSBuildProjectExtension)'=='.wixproj' " />
27 + <Import Project="Custom.Build.props" Condition=" Exists('Custom.Build.props') " />
28 +</Project>
src/Directory.Build.targets new
+48
@@ -0,0 +1,48 @@
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>(?&lt;="[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 +</Project>
src/FindLocalWix.props new
+8
@@ -0,0 +1,8 @@
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 xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
5 + <PropertyGroup>
6 + <WixTargetsPath Condition=" '$(Configuration)' == 'Debug' And Exists('$(MSBuildThisFileDirectory)..\..\Tools\README.md') ">$(MSBuildThisFileDirectory)..\..\Tools\build\Debug\net461\wix.targets</WixTargetsPath>
7 + </PropertyGroup>
8 +</Project>
src/Wix.Build.props new
+31
@@ -0,0 +1,31 @@
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>
5 + <PropertyGroup>
6 + <DefineConstants>$(DefineConstants);CompanyName=$(Company)</DefineConstants>
7 + <OutputPath_x86>$(OutputPath)x86\</OutputPath_x86>
8 + <OutputPath_x64>$(OutputPath)x64\</OutputPath_x64>
9 + <OutputPath_arm>$(OutputPath)ARM\</OutputPath_arm>
10 + <OutputPath_arm64>$(OutputPath)ARM64\</OutputPath_arm64>
11 + <OutputPath_win32>$(OutputPath)Win32\</OutputPath_win32>
12 + </PropertyGroup>
13 +
14 + <ItemGroup>
15 + <BindInputPaths Include="$(OutputPath_x86)">
16 + <BindName>x86</BindName>
17 + </BindInputPaths>
18 + <BindInputPaths Include="$(OutputPath_x64)">
19 + <BindName>x64</BindName>
20 + </BindInputPaths>
21 + <BindInputPaths Include="$(OutputPath_arm)">
22 + <BindName>arm</BindName>
23 + </BindInputPaths>
24 + <BindInputPaths Include="$(OutputPath_arm64)">
25 + <BindName>arm64</BindName>
26 + </BindInputPaths>
27 + <BindInputPaths Include="$(OutputPath_win32)">
28 + <BindName>win32</BindName>
29 + </BindInputPaths>
30 + </ItemGroup>
31 +</Project>
src/ca/complusca.def renamed
+4
@@ -1,6 +1,8 @@
1 ; Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information.
2
3
4 +LIBRARY "complusca"
5 +
6 EXPORTS
7 ComPlusPrepare
8 ComPlusCleanup
@@ -9,3 +11,5 @@ EXPORTS
11 ComPlusRollbackInstallExecute
12 ComPlusUninstallExecute
13 ComPlusRollbackUninstallExecute
14 + ConfigureComPlusInstall
15 + ConfigureComPlusUninstall
src/ca/complusca.vcxproj new
+99
@@ -0,0 +1,99 @@
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 DefaultTargets="Build" ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
5 + <Import Project="..\..\packages\WixToolset.DUtil.4.0.16\build\WixToolset.DUtil.props" Condition="Exists('..\..\packages\WixToolset.DUtil.4.0.16\build\WixToolset.DUtil.props')" />
6 + <Import Project="..\..\packages\WixToolset.WcaUtil.4.0.2\build\WixToolset.WcaUtil.props" Condition="Exists('..\..\packages\WixToolset.WcaUtil.4.0.2\build\WixToolset.WcaUtil.props')" />
7 +
8 + <ItemGroup Label="ProjectConfigurations">
9 + <ProjectConfiguration Include="Debug|Win32">
10 + <Configuration>Debug</Configuration>
11 + <Platform>Win32</Platform>
12 + </ProjectConfiguration>
13 + <ProjectConfiguration Include="Release|Win32">
14 + <Configuration>Release</Configuration>
15 + <Platform>Win32</Platform>
16 + </ProjectConfiguration>
17 + <ProjectConfiguration Include="Debug|x64">
18 + <Configuration>Debug</Configuration>
19 + <Platform>x64</Platform>
20 + </ProjectConfiguration>
21 + <ProjectConfiguration Include="Release|x64">
22 + <Configuration>Release</Configuration>
23 + <Platform>x64</Platform>
24 + </ProjectConfiguration>
25 + </ItemGroup>
26 +
27 + <PropertyGroup Label="Globals">
28 + <ProjectGuid>{BDEF51ED-E242-4FA2-801A-01B127DF851A}</ProjectGuid>
29 + <ConfigurationType>DynamicLibrary</ConfigurationType>
30 + <PlatformToolset>v141</PlatformToolset>
31 + <CharacterSet>Unicode</CharacterSet>
32 + <TargetName>complusca</TargetName>
33 + <ProjectModuleDefinitionFile>complusca.def</ProjectModuleDefinitionFile>
34 + <Description>WiX Toolset ComPlus CustomAction</Description>
35 + </PropertyGroup>
36 +
37 + <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
38 + <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
39 +
40 + <PropertyGroup>
41 + <ProjectAdditionalLinkLibraries>msi.lib</ProjectAdditionalLinkLibraries>
42 + </PropertyGroup>
43 +
44 + <ItemGroup>
45 + <ClCompile Include="cpappexec.cpp" />
46 + <ClCompile Include="cpapproleexec.cpp" />
47 + <ClCompile Include="cpapprolesched.cpp" />
48 + <ClCompile Include="cpappsched.cpp" />
49 + <ClCompile Include="cpasmexec.cpp" />
50 + <ClCompile Include="cpasmsched.cpp" />
51 + <ClCompile Include="cpexec.cpp" />
52 + <ClCompile Include="cppartexec.cpp" />
53 + <ClCompile Include="cppartroleexec.cpp" />
54 + <ClCompile Include="cppartrolesched.cpp" />
55 + <ClCompile Include="cppartsched.cpp" />
56 + <ClCompile Include="cpsched.cpp" />
57 + <ClCompile Include="cpsubsexec.cpp" />
58 + <ClCompile Include="cpsubssched.cpp" />
59 + <ClCompile Include="cputilexec.cpp" />
60 + <ClCompile Include="cputilsched.cpp" />
61 + <ClCompile Include="dllmain.cpp">
62 + <PrecompiledHeader>Create</PrecompiledHeader>
63 + </ClCompile>
64 + </ItemGroup>
65 +
66 + <ItemGroup>
67 + <ClInclude Include="cpappexec.h" />
68 + <ClInclude Include="cpapproleexec.h" />
69 + <ClInclude Include="cpapprolesched.h" />
70 + <ClInclude Include="cpappsched.h" />
71 + <ClInclude Include="cpasmexec.h" />
72 + <ClInclude Include="cpasmsched.h" />
73 + <ClInclude Include="cpcost.h" />
74 + <ClInclude Include="cppartexec.h" />
75 + <ClInclude Include="cppartroleexec.h" />
76 + <ClInclude Include="cppartrolesched.h" />
77 + <ClInclude Include="cppartsched.h" />
78 + <ClInclude Include="cpsubsexec.h" />
79 + <ClInclude Include="cpsubssched.h" />
80 + <ClInclude Include="cputilexec.h" />
81 + <ClInclude Include="cputilsched.h" />
82 + <ClInclude Include="precomp.h" />
83 + </ItemGroup>
84 +
85 + <ItemGroup>
86 + <None Include="packages.config" />
87 + <None Include="complusca.def" />
88 + </ItemGroup>
89 +
90 + <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
91 +
92 + <Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">
93 + <PropertyGroup>
94 + <ErrorText>This project references NuGet package(s) that are missing on this computer. Use NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}.</ErrorText>
95 + </PropertyGroup>
96 + <Error Condition="!Exists('..\..\packages\WixToolset.DUtil.4.0.16\build\WixToolset.DUtil.props')" Text="$([System.String]::Format('$(ErrorText)', '..\..\packages\WixToolset.DUtil.4.0.16\build\WixToolset.DUtil.props'))" />
97 + <Error Condition="!Exists('..\..\packages\WixToolset.WcaUtil.4.0.2\build\WixToolset.WcaUtil.props')" Text="$([System.String]::Format('$(ErrorText)', '..\..\packages\WixToolset.WcaUtil.4.0.2\build\WixToolset.WcaUtil.props'))" />
98 + </Target>
99 +</Project>
src/ca/cpappexec.cpp
+2 -2
@@ -239,7 +239,7 @@ static HRESULT CreateApplication(
239 WcaLog(LOGMSG_VERBOSE, "Creating application, key: %S", pAttrs->pwzKey);
240
241 // get applications collection
242 - hr = CpiGetApplicationsCollection(pAttrs->pwzPartID, &piAppColl);
242 + hr = CpiExecGetApplicationsCollection(pAttrs->pwzPartID, &piAppColl);
243 if (S_FALSE == hr)
244 hr = HRESULT_FROM_WIN32(ERROR_NOT_FOUND);
245 ExitOnFailure(hr, "Failed to get applications collection");
@@ -304,7 +304,7 @@ static HRESULT RemoveApplication(
304 WcaLog(LOGMSG_VERBOSE, "Removing application, key: %S", pAttrs->pwzKey);
305
306 // get applications collection
307 - hr = CpiGetApplicationsCollection(pAttrs->pwzPartID, &piAppColl);
307 + hr = CpiExecGetApplicationsCollection(pAttrs->pwzPartID, &piAppColl);
308 ExitOnFailure(hr, "Failed to get applications collection");
309
310 if (S_FALSE == hr)
src/ca/cpappsched.cpp
+5 -5
@@ -579,7 +579,7 @@ HRESULT CpiGetRolesCollForApplication(
579 if (pApp->pPartition)
580 hr = CpiGetApplicationsCollForPartition(pApp->pPartition, &piAppColl);
581 else
582 - hr = CpiGetApplicationsCollection(&piAppColl);
582 + hr = CpiSchedGetApplicationsCollection(&piAppColl);
583 ExitOnFailure(hr, "Failed to get applications collection");
584
585 if (S_FALSE == hr)
@@ -593,7 +593,7 @@ HRESULT CpiGetRolesCollForApplication(
593 ExitFunction(); // exit with hr = S_FALSE
594
595 // get roles collection
596 - hr = CpiGetCatalogCollection(piAppColl, piAppObj, L"Roles", &pApp->piRolesColl);
596 + hr = CpiSchedGetCatalogCollection(piAppColl, piAppObj, L"Roles", &pApp->piRolesColl);
597 ExitOnFailure(hr, "Failed to get roles collection");
598 }
599
@@ -632,7 +632,7 @@ HRESULT CpiGetComponentsCollForApplication(
632 if (pApp->pPartition)
633 hr = CpiGetApplicationsCollForPartition(pApp->pPartition, &piAppColl);
634 else
635 - hr = CpiGetApplicationsCollection(&piAppColl);
635 + hr = CpiSchedGetApplicationsCollection(&piAppColl);
636 ExitOnFailure(hr, "Failed to get applications collection");
637
638 if (S_FALSE == hr)
@@ -646,7 +646,7 @@ HRESULT CpiGetComponentsCollForApplication(
646 ExitFunction(); // exit with hr = S_FALSE
647
648 // get roles collection
649 - hr = CpiGetCatalogCollection(piAppColl, piAppObj, L"Components", &pApp->piCompsColl);
649 + hr = CpiSchedGetCatalogCollection(piAppColl, piAppObj, L"Components", &pApp->piCompsColl);
650 ExitOnFailure(hr, "Failed to get components collection");
651 }
652
@@ -695,7 +695,7 @@ static HRESULT FindObjectForApplication(
695 if (pItm->pPartition)
696 hr = CpiGetApplicationsCollForPartition(pItm->pPartition, &piAppColl);
697 else
698 - hr = CpiGetApplicationsCollection(&piAppColl);
698 + hr = CpiSchedGetApplicationsCollection(&piAppColl);
699 ExitOnFailure(hr, "Failed to get applications collection");
700
701 if (S_FALSE == hr)
src/ca/cpasmexec.cpp
+61 -72
@@ -75,58 +75,47 @@ enum eInstallationFlags {
75 };
76
77
78 -// private constants
79 -
80 -enum eAssemblyAttributes
81 -{
82 - aaEventClass = (1 << 0),
83 - aaDotNetAssembly = (1 << 1),
84 - aaPathFromGAC = (1 << 2),
85 - aaRunInCommit = (1 << 3)
86 -};
87 -
88 -
78 // private structs
79
91 -struct CPI_ROLE_ASSIGNMENT
80 +struct CPIEXEC_ROLE_ASSIGNMENT
81 {
82 WCHAR wzKey[MAX_DARWIN_KEY + 1];
83 WCHAR wzRoleName[MAX_DARWIN_COLUMN + 1];
84
96 - CPI_ROLE_ASSIGNMENT* pNext;
85 + CPIEXEC_ROLE_ASSIGNMENT* pNext;
86 };
87
99 -struct CPI_METHOD
88 +struct CPIEXEC_METHOD
89 {
90 WCHAR wzIndex[11 + 1];
91 WCHAR wzName[MAX_DARWIN_COLUMN + 1];
92
93 CPI_PROPERTY* pPropertyList;
105 - CPI_ROLE_ASSIGNMENT* pRoleAssignmentList;
94 + CPIEXEC_ROLE_ASSIGNMENT* pRoleAssignmentList;
95
107 - CPI_METHOD* pNext;
96 + CPIEXEC_METHOD* pNext;
97 };
98
110 -struct CPI_INTERFACE
99 +struct CPIEXEC_INTERFACE
100 {
101 WCHAR wzIID[CPI_MAX_GUID + 1];
102
103 CPI_PROPERTY* pPropertyList;
115 - CPI_ROLE_ASSIGNMENT* pRoleAssignmentList;
116 - CPI_METHOD* pMethodList;
104 + CPIEXEC_ROLE_ASSIGNMENT* pRoleAssignmentList;
105 + CPIEXEC_METHOD* pMethodList;
106
118 - CPI_INTERFACE* pNext;
107 + CPIEXEC_INTERFACE* pNext;
108 };
109
121 -struct CPI_COMPONENT
110 +struct CPIEXEC_COMPONENT
111 {
112 WCHAR wzCLSID[CPI_MAX_GUID + 1];
113
114 CPI_PROPERTY* pPropertyList;
126 - CPI_ROLE_ASSIGNMENT* pRoleAssignmentList;
127 - CPI_INTERFACE* pInterfaceList;
115 + CPIEXEC_ROLE_ASSIGNMENT* pRoleAssignmentList;
116 + CPIEXEC_INTERFACE* pInterfaceList;
117
129 - CPI_COMPONENT* pNext;
118 + CPIEXEC_COMPONENT* pNext;
119 };
120
121 struct CPI_ASSEMBLY_ATTRIBUTES
@@ -141,7 +130,7 @@ struct CPI_ASSEMBLY_ATTRIBUTES
130 LPWSTR pwzAppID;
131 LPWSTR pwzPartID;
132 int iAttributes;
144 - CPI_COMPONENT* pCompList;
133 + CPIEXEC_COMPONENT* pCompList;
134 };
135
136 struct CPI_ROLE_ASSIGNMENTS_ATTRIBUTES
@@ -152,7 +141,7 @@ struct CPI_ROLE_ASSIGNMENTS_ATTRIBUTES
141 LPWSTR pwzAppID;
142 LPWSTR pwzPartID;
143 int iRoleCount;
155 - CPI_COMPONENT* pCompList;
144 + CPIEXEC_COMPONENT* pCompList;
145 };
146
147
@@ -187,7 +176,7 @@ static HRESULT UnregisterDotNetAssembly(
176 );
177 static HRESULT RemoveComponents(
178 ICatalogCollection* piCompColl,
190 - CPI_COMPONENT* pCompList
179 + CPIEXEC_COMPONENT* pCompList
180 );
181 static HRESULT ReadAssemblyAttributes(
182 LPWSTR* ppwzData,
@@ -206,56 +195,56 @@ static void FreeRoleAssignmentsAttributes(
195 static HRESULT ConfigureComponents(
196 LPCWSTR pwzPartID,
197 LPCWSTR pwzAppID,
209 - CPI_COMPONENT* pCompList,
198 + CPIEXEC_COMPONENT* pCompList,
199 BOOL fCreate,
200 BOOL fProgress
201 );
202 static HRESULT ConfigureInterfaces(
203 ICatalogCollection* piCompColl,
204 ICatalogObject* piCompObj,
216 - CPI_INTERFACE* pIntfList,
205 + CPIEXEC_INTERFACE* pIntfList,
206 BOOL fCreate
207 );
208 static HRESULT ConfigureMethods(
209 ICatalogCollection* piIntfColl,
210 ICatalogObject* piIntfObj,
222 - CPI_METHOD* pMethList,
211 + CPIEXEC_METHOD* pMethList,
212 BOOL fCreate
213 );
214 static HRESULT ConfigureRoleAssignments(
215 LPCWSTR pwzCollName,
216 ICatalogCollection* piCompColl,
217 ICatalogObject* piCompObj,
229 - CPI_ROLE_ASSIGNMENT* pRoleList,
218 + CPIEXEC_ROLE_ASSIGNMENT* pRoleList,
219 BOOL fCreate
220 );
221 static HRESULT ReadComponentList(
222 LPWSTR* ppwzData,
234 - CPI_COMPONENT** ppCompList
223 + CPIEXEC_COMPONENT** ppCompList
224 );
225 static HRESULT ReadInterfaceList(
226 LPWSTR* ppwzData,
238 - CPI_INTERFACE** ppIntfList
227 + CPIEXEC_INTERFACE** ppIntfList
228 );
229 static HRESULT ReadMethodList(
230 LPWSTR* ppwzData,
242 - CPI_METHOD** ppMethList
231 + CPIEXEC_METHOD** ppMethList
232 );
233 static HRESULT ReadRoleAssignmentList(
234 LPWSTR* ppwzData,
246 - CPI_ROLE_ASSIGNMENT** ppRoleList
235 + CPIEXEC_ROLE_ASSIGNMENT** ppRoleList
236 );
237 static void FreeComponentList(
249 - CPI_COMPONENT* pList
238 + CPIEXEC_COMPONENT* pList
239 );
240 static void FreeInterfaceList(
252 - CPI_INTERFACE* pList
241 + CPIEXEC_INTERFACE* pList
242 );
243 static void FreeMethodList(
255 - CPI_METHOD* pList
244 + CPIEXEC_METHOD* pList
245 );
246 static void FreeRoleAssignmentList(
258 - CPI_ROLE_ASSIGNMENT* pList
247 + CPIEXEC_ROLE_ASSIGNMENT* pList
248 );
249
250
@@ -648,7 +637,7 @@ static HRESULT UnregisterAssembly(
637 // TODO: handle rollbacks
638
639 // get applications collection
651 - hr = CpiGetApplicationsCollection(pAttrs->pwzPartID, &piColl);
640 + hr = CpiExecGetApplicationsCollection(pAttrs->pwzPartID, &piColl);
641 ExitOnFailure(hr, "Failed to get applications collection");
642
643 if (S_FALSE == hr)
@@ -993,7 +982,7 @@ static HRESULT RegisterNativeAssembly(
982 ExitOnNull(bstrPSDllPath, hr, E_OUTOFMEMORY, "Failed to allocate BSTR for tlb path");
983
984 // get catalog
996 - hr = CpiGetAdminCatalog(&piCatalog);
985 + hr = CpiExecGetAdminCatalog(&piCatalog);
986 ExitOnFailure(hr, "Failed to get COM+ admin catalog");
987
988 // get ICOMAdminCatalog2 interface
@@ -1154,12 +1143,12 @@ LExit:
1143
1144 static HRESULT RemoveComponents(
1145 ICatalogCollection* piCompColl,
1157 - CPI_COMPONENT* pCompList
1146 + CPIEXEC_COMPONENT* pCompList
1147 )
1148 {
1149 HRESULT hr = S_OK;
1150
1162 - for (CPI_COMPONENT* pItm = pCompList; pItm; pItm = pItm->pNext)
1151 + for (CPIEXEC_COMPONENT* pItm = pCompList; pItm; pItm = pItm->pNext)
1152 {
1153 // remove
1154 hr = CpiRemoveCollectionObject(piCompColl, pItm->wzCLSID, NULL, FALSE);
@@ -1291,7 +1280,7 @@ static void FreeRoleAssignmentsAttributes(
1280 static HRESULT ConfigureComponents(
1281 LPCWSTR pwzPartID,
1282 LPCWSTR pwzAppID,
1294 - CPI_COMPONENT* pCompList,
1283 + CPIEXEC_COMPONENT* pCompList,
1284 BOOL fCreate,
1285 BOOL fProgress
1286 )
@@ -1313,7 +1302,7 @@ static HRESULT ConfigureComponents(
1302 ExitOnFailure(hr, "Failed to get components collection");
1303
1304 // read components
1316 - for (CPI_COMPONENT* pItm = pCompList; pItm; pItm = pItm->pNext)
1305 + for (CPIEXEC_COMPONENT* pItm = pCompList; pItm; pItm = pItm->pNext)
1306 {
1307 // progress message
1308 if (fProgress)
@@ -1375,7 +1364,7 @@ LExit:
1364 static HRESULT ConfigureInterfaces(
1365 ICatalogCollection* piCompColl,
1366 ICatalogObject* piCompObj,
1378 - CPI_INTERFACE* pIntfList,
1367 + CPIEXEC_INTERFACE* pIntfList,
1368 BOOL fCreate
1369 )
1370 {
@@ -1396,7 +1385,7 @@ static HRESULT ConfigureInterfaces(
1385 ExitOnFailure(hr, "Failed to get interfaces collection");
1386
1387 // read interfaces
1399 - for (CPI_INTERFACE* pItm = pIntfList; pItm; pItm = pItm->pNext)
1388 + for (CPIEXEC_INTERFACE* pItm = pIntfList; pItm; pItm = pItm->pNext)
1389 {
1390 // find interface
1391 hr = CpiFindCollectionObjectByStringKey(piIntfColl, pItm->wzIID, &piIntfObj);
@@ -1448,7 +1437,7 @@ LExit:
1437 static HRESULT ConfigureMethods(
1438 ICatalogCollection* piIntfColl,
1439 ICatalogObject* piIntfObj,
1451 - CPI_METHOD* pMethList,
1440 + CPIEXEC_METHOD* pMethList,
1441 BOOL fCreate
1442 )
1443 {
@@ -1469,7 +1458,7 @@ static HRESULT ConfigureMethods(
1458 ExitOnFailure(hr, "Failed to get methods collection");
1459
1460 // read methods
1472 - for (CPI_METHOD* pItm = pMethList; pItm; pItm = pItm->pNext)
1461 + for (CPIEXEC_METHOD* pItm = pMethList; pItm; pItm = pItm->pNext)
1462 {
1463 // find method
1464 if (*pItm->wzIndex)
@@ -1519,7 +1508,7 @@ static HRESULT ConfigureRoleAssignments(
1508 LPCWSTR pwzCollName,
1509 ICatalogCollection* piCompColl,
1510 ICatalogObject* piCompObj,
1522 - CPI_ROLE_ASSIGNMENT* pRoleList,
1511 + CPIEXEC_ROLE_ASSIGNMENT* pRoleList,
1512 BOOL fCreate
1513 )
1514 {
@@ -1531,7 +1520,7 @@ static HRESULT ConfigureRoleAssignments(
1520 long lChanges = 0;
1521
1522 // get roles collection
1534 - hr = CpiGetCatalogCollection(piCompColl, piCompObj, pwzCollName, &piRoleColl);
1523 + hr = CpiExecGetCatalogCollection(piCompColl, piCompObj, pwzCollName, &piRoleColl);
1524 if (S_FALSE == hr)
1525 if (fCreate)
1526 hr = HRESULT_FROM_WIN32(ERROR_NOT_FOUND);
@@ -1540,7 +1529,7 @@ static HRESULT ConfigureRoleAssignments(
1529 ExitOnFailure(hr, "Failed to get role assignments collection");
1530
1531 // read roles
1543 - for (CPI_ROLE_ASSIGNMENT* pItm = pRoleList; pItm; pItm = pItm->pNext)
1532 + for (CPIEXEC_ROLE_ASSIGNMENT* pItm = pRoleList; pItm; pItm = pItm->pNext)
1533 {
1534 if (fCreate)
1535 {
@@ -1588,14 +1577,14 @@ LExit:
1577
1578 static HRESULT ReadComponentList(
1579 LPWSTR* ppwzData,
1591 - CPI_COMPONENT** ppCompList
1580 + CPIEXEC_COMPONENT** ppCompList
1581 )
1582 {
1583 HRESULT hr = S_OK;
1584
1585 LPWSTR pwzData = NULL;
1586
1598 - CPI_COMPONENT* pItm = NULL;
1587 + CPIEXEC_COMPONENT* pItm = NULL;
1588
1589 int iCnt = 0;
1590
@@ -1606,7 +1595,7 @@ static HRESULT ReadComponentList(
1595 // read components
1596 for (int i = 0; i < iCnt; i++)
1597 {
1609 - pItm = (CPI_COMPONENT*)::HeapAlloc(::GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(CPI_COMPONENT));
1598 + pItm = (CPIEXEC_COMPONENT*)::HeapAlloc(::GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(CPIEXEC_COMPONENT));
1599 if (!pItm)
1600 ExitFunction1(hr = E_OUTOFMEMORY);
1601
@@ -1648,14 +1637,14 @@ LExit:
1637
1638 static HRESULT ReadInterfaceList(
1639 LPWSTR* ppwzData,
1651 - CPI_INTERFACE** ppIntfList
1640 + CPIEXEC_INTERFACE** ppIntfList
1641 )
1642 {
1643 HRESULT hr = S_OK;
1644
1645 LPWSTR pwzData = NULL;
1646
1658 - CPI_INTERFACE* pItm = NULL;
1647 + CPIEXEC_INTERFACE* pItm = NULL;
1648
1649 int iCnt = 0;
1650
@@ -1666,7 +1655,7 @@ static HRESULT ReadInterfaceList(
1655 // read interfaces
1656 for (int i = 0; i < iCnt; i++)
1657 {
1669 - pItm = (CPI_INTERFACE*)::HeapAlloc(::GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(CPI_INTERFACE));
1658 + pItm = (CPIEXEC_INTERFACE*)::HeapAlloc(::GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(CPIEXEC_INTERFACE));
1659 if (!pItm)
1660 ExitFunction1(hr = E_OUTOFMEMORY);
1661
@@ -1708,14 +1697,14 @@ LExit:
1697
1698 static HRESULT ReadMethodList(
1699 LPWSTR* ppwzData,
1711 - CPI_METHOD** ppMethList
1700 + CPIEXEC_METHOD** ppMethList
1701 )
1702 {
1703 HRESULT hr = S_OK;
1704
1705 LPWSTR pwzData = NULL;
1706
1718 - CPI_METHOD* pItm = NULL;
1707 + CPIEXEC_METHOD* pItm = NULL;
1708
1709 int iCnt = 0;
1710
@@ -1726,7 +1715,7 @@ static HRESULT ReadMethodList(
1715 // read methods
1716 for (int i = 0; i < iCnt; i++)
1717 {
1729 - pItm = (CPI_METHOD*)::HeapAlloc(::GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(CPI_METHOD));
1718 + pItm = (CPIEXEC_METHOD*)::HeapAlloc(::GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(CPIEXEC_METHOD));
1719 if (!pItm)
1720 ExitFunction1(hr = E_OUTOFMEMORY);
1721
@@ -1769,14 +1758,14 @@ LExit:
1758
1759 static HRESULT ReadRoleAssignmentList(
1760 LPWSTR* ppwzData,
1772 - CPI_ROLE_ASSIGNMENT** ppRoleList
1761 + CPIEXEC_ROLE_ASSIGNMENT** ppRoleList
1762 )
1763 {
1764 HRESULT hr = S_OK;
1765
1766 LPWSTR pwzData = NULL;
1767
1779 - CPI_ROLE_ASSIGNMENT* pItm = NULL;
1768 + CPIEXEC_ROLE_ASSIGNMENT* pItm = NULL;
1769
1770 int iCnt = 0;
1771
@@ -1787,7 +1776,7 @@ static HRESULT ReadRoleAssignmentList(
1776 // read roles
1777 for (int i = 0; i < iCnt; i++)
1778 {
1790 - pItm = (CPI_ROLE_ASSIGNMENT*)::HeapAlloc(::GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(CPI_ROLE_ASSIGNMENT));
1779 + pItm = (CPIEXEC_ROLE_ASSIGNMENT*)::HeapAlloc(::GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(CPIEXEC_ROLE_ASSIGNMENT));
1780 if (!pItm)
1781 ExitFunction1(hr = E_OUTOFMEMORY);
1782
@@ -1821,7 +1810,7 @@ LExit:
1810 }
1811
1812 static void FreeComponentList(
1824 - CPI_COMPONENT* pList
1813 + CPIEXEC_COMPONENT* pList
1814 )
1815 {
1816 while (pList)
@@ -1833,14 +1822,14 @@ static void FreeComponentList(
1822 if (pList->pInterfaceList)
1823 FreeInterfaceList(pList->pInterfaceList);
1824
1836 - CPI_COMPONENT* pDelete = pList;
1825 + CPIEXEC_COMPONENT* pDelete = pList;
1826 pList = pList->pNext;
1827 ::HeapFree(::GetProcessHeap(), 0, pDelete);
1828 }
1829 }
1830
1831 static void FreeInterfaceList(
1843 - CPI_INTERFACE* pList
1832 + CPIEXEC_INTERFACE* pList
1833 )
1834 {
1835 while (pList)
@@ -1852,14 +1841,14 @@ static void FreeInterfaceList(
1841 if (pList->pMethodList)
1842 FreeMethodList(pList->pMethodList);
1843
1855 - CPI_INTERFACE* pDelete = pList;
1844 + CPIEXEC_INTERFACE* pDelete = pList;
1845 pList = pList->pNext;
1846 ::HeapFree(::GetProcessHeap(), 0, pDelete);
1847 }
1848 }
1849
1850 static void FreeMethodList(
1862 - CPI_METHOD* pList
1851 + CPIEXEC_METHOD* pList
1852 )
1853 {
1854 while (pList)
@@ -1869,19 +1858,19 @@ static void FreeMethodList(
1858 if (pList->pRoleAssignmentList)
1859 FreeRoleAssignmentList(pList->pRoleAssignmentList);
1860
1872 - CPI_METHOD* pDelete = pList;
1861 + CPIEXEC_METHOD* pDelete = pList;
1862 pList = pList->pNext;
1863 ::HeapFree(::GetProcessHeap(), 0, pDelete);
1864 }
1865 }
1866
1867 static void FreeRoleAssignmentList(
1879 - CPI_ROLE_ASSIGNMENT* pList
1868 + CPIEXEC_ROLE_ASSIGNMENT* pList
1869 )
1870 {
1871 while (pList)
1872 {
1884 - CPI_ROLE_ASSIGNMENT* pDelete = pList;
1873 + CPIEXEC_ROLE_ASSIGNMENT* pDelete = pList;
1874 pList = pList->pNext;
1875 ::HeapFree(::GetProcessHeap(), 0, pDelete);
1876 }
src/ca/cpasmsched.cpp
+41 -41
@@ -169,19 +169,19 @@ static HRESULT InterfacesRead(
169 LPCWSTR pwzCompKey,
170 CPI_APPLICATION_ROLE_LIST* pAppRoleList,
171 CPI_ASSEMBLY* pAsm,
172 - CPI_COMPONENT* pComp
172 + CPISCHED_COMPONENT* pComp
173 );
174 static HRESULT MethodsRead(
175 LPCWSTR pwzIntfKey,
176 CPI_APPLICATION_ROLE_LIST* pAppRoleList,
177 CPI_ASSEMBLY* pAsm,
178 - CPI_INTERFACE* pIntf
178 + CPISCHED_INTERFACE* pIntf
179 );
180 static HRESULT RoleAssignmentsRead(
181 LPCWSTR pwzQuery,
182 LPCWSTR pwzKey,
183 CPI_APPLICATION_ROLE_LIST* pAppRoleList,
184 - CPI_ROLE_ASSIGNMENT** ppRoleList,
184 + CPISCHED_ROLE_ASSIGNMENT** ppRoleList,
185 int* piInstallCount,
186 int* piUninstallCount
187 );
@@ -238,21 +238,21 @@ static HRESULT AddRoleAssignmentsToActionData(
238 LPWSTR* ppwzActionData
239 );
240 static HRESULT AddComponentToActionData(
241 - CPI_COMPONENT* pItm,
241 + CPISCHED_COMPONENT* pItm,
242 BOOL fInstall,
243 BOOL fProps,
244 BOOL fRoles,
245 LPWSTR* ppwzActionData
246 );
247 static HRESULT AddInterfaceToActionData(
248 - CPI_INTERFACE* pItm,
248 + CPISCHED_INTERFACE* pItm,
249 BOOL fInstall,
250 BOOL fProps,
251 BOOL fRoles,
252 LPWSTR* ppwzActionData
253 );
254 static HRESULT AddMethodToActionData(
255 - CPI_METHOD* pItm,
255 + CPISCHED_METHOD* pItm,
256 BOOL fInstall,
257 BOOL fProps,
258 BOOL fRoles,
@@ -261,7 +261,7 @@ static HRESULT AddMethodToActionData(
261 static HRESULT AddRolesToActionData(
262 int iRoleInstallCount,
263 int iRoleUninstallCount,
264 - CPI_ROLE_ASSIGNMENT* pRoleList,
264 + CPISCHED_ROLE_ASSIGNMENT* pRoleList,
265 BOOL fInstall,
266 BOOL fRoles,
267 LPWSTR* ppwzActionData
@@ -284,16 +284,16 @@ static void ModuleFree(
284 CPI_MODULE* pItm
285 );
286 static void ComponentsFreeList(
287 - CPI_COMPONENT* pList
287 + CPISCHED_COMPONENT* pList
288 );
289 static void InterfacesFreeList(
290 - CPI_INTERFACE* pList
290 + CPISCHED_INTERFACE* pList
291 );
292 static void MethodsFreeList(
293 - CPI_METHOD* pList
293 + CPISCHED_METHOD* pList
294 );
295 static void RoleAssignmentsFreeList(
296 - CPI_ROLE_ASSIGNMENT* pList
296 + CPISCHED_ROLE_ASSIGNMENT* pList
297 );
298
299
@@ -686,7 +686,7 @@ LExit:
686
687 HRESULT CpiGetSubscriptionsCollForComponent(
688 CPI_ASSEMBLY* pAsm,
689 - CPI_COMPONENT* pComp,
689 + CPISCHED_COMPONENT* pComp,
690 ICatalogCollection** ppiSubsColl
691 )
692 {
@@ -713,7 +713,7 @@ HRESULT CpiGetSubscriptionsCollForComponent(
713 ExitFunction(); // exit with hr = S_FALSE
714
715 // get roles collection
716 - hr = CpiGetCatalogCollection(piCompColl, piCompObj, L"SubscriptionsForComponent", &pComp->piSubsColl);
716 + hr = CpiSchedGetCatalogCollection(piCompColl, piCompObj, L"SubscriptionsForComponent", &pComp->piSubsColl);
717 ExitOnFailure(hr, "Failed to get subscriptions collection");
718 }
719
@@ -1372,7 +1372,7 @@ static HRESULT ComponentsRead(
1372 PMSIHANDLE hView;
1373 PMSIHANDLE hRec;
1374 PMSIHANDLE hRecKey;
1375 - CPI_COMPONENT* pItm = NULL;
1375 + CPISCHED_COMPONENT* pItm = NULL;
1376 LPWSTR pwzData = NULL;
1377
1378 // create parameter record
@@ -1390,7 +1390,7 @@ static HRESULT ComponentsRead(
1390 while (S_OK == (hr = WcaFetchRecord(hView, &hRec)))
1391 {
1392 // create entry
1393 - pItm = (CPI_COMPONENT*)::HeapAlloc(::GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(CPI_COMPONENT));
1393 + pItm = (CPISCHED_COMPONENT*)::HeapAlloc(::GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(CPISCHED_COMPONENT));
1394 if (!pItm)
1395 ExitFunction1(hr = E_OUTOFMEMORY);
1396
@@ -1455,14 +1455,14 @@ static HRESULT InterfacesRead(
1455 LPCWSTR pwzCompKey,
1456 CPI_APPLICATION_ROLE_LIST* pAppRoleList,
1457 CPI_ASSEMBLY* pAsm,
1458 - CPI_COMPONENT* pComp
1458 + CPISCHED_COMPONENT* pComp
1459 )
1460 {
1461 HRESULT hr = S_OK;
1462 PMSIHANDLE hView;
1463 PMSIHANDLE hRec;
1464 PMSIHANDLE hRecKey;
1465 - CPI_INTERFACE* pItm = NULL;
1465 + CPISCHED_INTERFACE* pItm = NULL;
1466 LPWSTR pwzData = NULL;
1467
1468 // create parameter record
@@ -1480,7 +1480,7 @@ static HRESULT InterfacesRead(
1480 while (S_OK == (hr = WcaFetchRecord(hView, &hRec)))
1481 {
1482 // create entry
1483 - pItm = (CPI_INTERFACE*)::HeapAlloc(::GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(CPI_INTERFACE));
1483 + pItm = (CPISCHED_INTERFACE*)::HeapAlloc(::GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(CPISCHED_INTERFACE));
1484 if (!pItm)
1485 ExitFunction1(hr = E_OUTOFMEMORY);
1486
@@ -1545,12 +1545,12 @@ static HRESULT MethodsRead(
1545 LPCWSTR pwzIntfKey,
1546 CPI_APPLICATION_ROLE_LIST* pAppRoleList,
1547 CPI_ASSEMBLY* pAsm,
1548 - CPI_INTERFACE* pIntf
1548 + CPISCHED_INTERFACE* pIntf
1549 )
1550 {
1551 HRESULT hr = S_OK;
1552 PMSIHANDLE hView, hRec, hRecKey;
1553 - CPI_METHOD* pItm = NULL;
1553 + CPISCHED_METHOD* pItm = NULL;
1554 LPWSTR pwzData = NULL;
1555
1556 // create parameter record
@@ -1568,7 +1568,7 @@ static HRESULT MethodsRead(
1568 while (S_OK == (hr = WcaFetchRecord(hView, &hRec)))
1569 {
1570 // create entry
1571 - pItm = (CPI_METHOD*)::HeapAlloc(::GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(CPI_METHOD));
1571 + pItm = (CPISCHED_METHOD*)::HeapAlloc(::GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(CPISCHED_METHOD));
1572 if (!pItm)
1573 ExitFunction1(hr = E_OUTOFMEMORY);
1574
@@ -1635,7 +1635,7 @@ static HRESULT RoleAssignmentsRead(
1635 LPCWSTR pwzQuery,
1636 LPCWSTR pwzKey,
1637 CPI_APPLICATION_ROLE_LIST* pAppRoleList,
1638 - CPI_ROLE_ASSIGNMENT** ppRoleList,
1638 + CPISCHED_ROLE_ASSIGNMENT** ppRoleList,
1639 int* piInstallCount,
1640 int* piUninstallCount
1641 )
@@ -1645,7 +1645,7 @@ static HRESULT RoleAssignmentsRead(
1645
1646 PMSIHANDLE hView, hRec, hRecKey;
1647
1648 - CPI_ROLE_ASSIGNMENT* pItm = NULL;
1648 + CPISCHED_ROLE_ASSIGNMENT* pItm = NULL;
1649 LPWSTR pwzData = NULL;
1650 BOOL fMatchingArchitecture = FALSE;
1651
@@ -1677,7 +1677,7 @@ static HRESULT RoleAssignmentsRead(
1677 }
1678
1679 // create entry
1680 - pItm = (CPI_ROLE_ASSIGNMENT*)::HeapAlloc(::GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(CPI_ROLE_ASSIGNMENT));
1680 + pItm = (CPISCHED_ROLE_ASSIGNMENT*)::HeapAlloc(::GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(CPISCHED_ROLE_ASSIGNMENT));
1681 if (!pItm)
1682 ExitFunction1(hr = E_OUTOFMEMORY);
1683
@@ -1786,7 +1786,7 @@ static HRESULT AddAssemblyToActionData(
1786
1787 if (iCompCount)
1788 {
1789 - for (CPI_COMPONENT* pComp = pItm->pComponents; pComp; pComp = pComp->pNext)
1789 + for (CPISCHED_COMPONENT* pComp = pItm->pComponents; pComp; pComp = pComp->pNext)
1790 {
1791 hr = AddComponentToActionData(pComp, fInstall, atCreate == iActionType, FALSE, ppwzActionData);
1792 ExitOnFailure(hr, "Failed to add component to custom action data, component: %S", pComp->wzKey);
@@ -1834,7 +1834,7 @@ static HRESULT AddRoleAssignmentsToActionData(
1834 hr = WcaWriteIntegerToCaData(pItm->iComponentCount, ppwzActionData);
1835 ExitOnFailure(hr, "Failed to add component count to custom action data");
1836
1837 - for (CPI_COMPONENT* pComp = pItm->pComponents; pComp; pComp = pComp->pNext)
1837 + for (CPISCHED_COMPONENT* pComp = pItm->pComponents; pComp; pComp = pComp->pNext)
1838 {
1839 hr = AddComponentToActionData(pComp, fInstall, FALSE, TRUE, ppwzActionData);
1840 ExitOnFailure(hr, "Failed to add component to custom action data, component: %S", pComp->wzKey);
@@ -1847,7 +1847,7 @@ LExit:
1847 }
1848
1849 static HRESULT AddComponentToActionData(
1850 - CPI_COMPONENT* pItm,
1850 + CPISCHED_COMPONENT* pItm,
1851 BOOL fInstall,
1852 BOOL fProps,
1853 BOOL fRoles,
@@ -1875,7 +1875,7 @@ static HRESULT AddComponentToActionData(
1875
1876 if (iIntfCount)
1877 {
1878 - for (CPI_INTERFACE* pIntf = pItm->pInterfaces; pIntf; pIntf = pIntf->pNext)
1878 + for (CPISCHED_INTERFACE* pIntf = pItm->pInterfaces; pIntf; pIntf = pIntf->pNext)
1879 {
1880 hr = AddInterfaceToActionData(pIntf, fInstall, fProps, fRoles, ppwzActionData);
1881 ExitOnFailure(hr, "Failed to add interface custom action data, interface: %S", pIntf->wzKey);
@@ -1889,7 +1889,7 @@ LExit:
1889 }
1890
1891 static HRESULT AddInterfaceToActionData(
1892 - CPI_INTERFACE* pItm,
1892 + CPISCHED_INTERFACE* pItm,
1893 BOOL fInstall,
1894 BOOL fProps,
1895 BOOL fRoles,
@@ -1914,7 +1914,7 @@ static HRESULT AddInterfaceToActionData(
1914 hr = WcaWriteIntegerToCaData(pItm->iMethodCount, ppwzActionData);
1915 ExitOnFailure(hr, "Failed to add method count to custom action data");
1916
1917 - for (CPI_METHOD* pMeth = pItm->pMethods; pMeth; pMeth = pMeth->pNext)
1917 + for (CPISCHED_METHOD* pMeth = pItm->pMethods; pMeth; pMeth = pMeth->pNext)
1918 {
1919 hr = AddMethodToActionData(pMeth, fInstall, fProps, fRoles, ppwzActionData);
1920 ExitOnFailure(hr, "Failed to add method custom action data, method: %S", pMeth->wzKey);
@@ -1927,7 +1927,7 @@ LExit:
1927 }
1928
1929 static HRESULT AddMethodToActionData(
1930 - CPI_METHOD* pItm,
1930 + CPISCHED_METHOD* pItm,
1931 BOOL fInstall,
1932 BOOL fProps,
1933 BOOL fRoles,
@@ -1960,7 +1960,7 @@ LExit:
1960 static HRESULT AddRolesToActionData(
1961 int iRoleInstallCount,
1962 int iRoleUninstallCount,
1963 - CPI_ROLE_ASSIGNMENT* pRoleList,
1963 + CPISCHED_ROLE_ASSIGNMENT* pRoleList,
1964 BOOL fInstall,
1965 BOOL fRoles,
1966 LPWSTR* ppwzActionData
@@ -1974,7 +1974,7 @@ static HRESULT AddRolesToActionData(
1974
1975 if (iRoleCount)
1976 {
1977 - for (CPI_ROLE_ASSIGNMENT* pRole = pRoleList; pRole; pRole = pRole->pNext)
1977 + for (CPISCHED_ROLE_ASSIGNMENT* pRole = pRoleList; pRole; pRole = pRole->pNext)
1978 {
1979 // make sure the install state matches the create flag
1980 if (fInstall ? !WcaIsInstalling(pRole->isInstalled, pRole->isAction) : !WcaIsUninstalling(pRole->isInstalled, pRole->isAction))
@@ -2061,7 +2061,7 @@ static void ModuleFree(
2061 }
2062
2063 static void ComponentsFreeList(
2064 - CPI_COMPONENT* pList
2064 + CPISCHED_COMPONENT* pList
2065 )
2066 {
2067 while (pList)
@@ -2077,14 +2077,14 @@ static void ComponentsFreeList(
2077
2078 ReleaseObject(pList->piSubsColl);
2079
2080 - CPI_COMPONENT* pDelete = pList;
2080 + CPISCHED_COMPONENT* pDelete = pList;
2081 pList = pList->pNext;
2082 ::HeapFree(::GetProcessHeap(), 0, pDelete);
2083 }
2084 }
2085
2086 static void InterfacesFreeList(
2087 - CPI_INTERFACE* pList
2087 + CPISCHED_INTERFACE* pList
2088 )
2089 {
2090 while (pList)
@@ -2098,14 +2098,14 @@ static void InterfacesFreeList(
2098 if (pList->pMethods)
2099 MethodsFreeList(pList->pMethods);
2100
2101 - CPI_INTERFACE* pDelete = pList;
2101 + CPISCHED_INTERFACE* pDelete = pList;
2102 pList = pList->pNext;
2103 ::HeapFree(::GetProcessHeap(), 0, pDelete);
2104 }
2105 }
2106
2107 static void MethodsFreeList(
2108 - CPI_METHOD* pList
2108 + CPISCHED_METHOD* pList
2109 )
2110 {
2111 while (pList)
@@ -2116,19 +2116,19 @@ static void MethodsFreeList(
2116 if (pList->pRoles)
2117 RoleAssignmentsFreeList(pList->pRoles);
2118
2119 - CPI_METHOD* pDelete = pList;
2119 + CPISCHED_METHOD* pDelete = pList;
2120 pList = pList->pNext;
2121 ::HeapFree(::GetProcessHeap(), 0, pDelete);
2122 }
2123 }
2124
2125 static void RoleAssignmentsFreeList(
2126 - CPI_ROLE_ASSIGNMENT* pList
2126 + CPISCHED_ROLE_ASSIGNMENT* pList
2127 )
2128 {
2129 while (pList)
2130 {
2131 - CPI_ROLE_ASSIGNMENT* pDelete = pList;
2131 + CPISCHED_ROLE_ASSIGNMENT* pDelete = pList;
2132 pList = pList->pNext;
2133 ::HeapFree(::GetProcessHeap(), 0, pDelete);
2134 }
src/ca/cpasmsched.h
+15 -15
@@ -13,7 +13,7 @@ enum eAssemblyAttributes
13
14 // structs
15
16 -struct CPI_ROLE_ASSIGNMENT
16 +struct CPISCHED_ROLE_ASSIGNMENT
17 {
18 WCHAR wzKey[MAX_DARWIN_KEY + 1];
19
@@ -21,10 +21,10 @@ struct CPI_ROLE_ASSIGNMENT
21
22 CPI_APPLICATION_ROLE* pApplicationRole;
23
24 - CPI_ROLE_ASSIGNMENT* pNext;
24 + CPISCHED_ROLE_ASSIGNMENT* pNext;
25 };
26
27 -struct CPI_METHOD
27 +struct CPISCHED_METHOD
28 {
29 WCHAR wzKey[MAX_DARWIN_KEY + 1];
30 WCHAR wzIndex[11 + 1];
@@ -35,12 +35,12 @@ struct CPI_METHOD
35
36 int iRoleInstallCount;
37 int iRoleUninstallCount;
38 - CPI_ROLE_ASSIGNMENT* pRoles;
38 + CPISCHED_ROLE_ASSIGNMENT* pRoles;
39
40 - CPI_METHOD* pNext;
40 + CPISCHED_METHOD* pNext;
41 };
42
43 -struct CPI_INTERFACE
43 +struct CPISCHED_INTERFACE
44 {
45 WCHAR wzKey[MAX_DARWIN_KEY + 1];
46 WCHAR wzIID[CPI_MAX_GUID + 1];
@@ -50,15 +50,15 @@ struct CPI_INTERFACE
50
51 int iRoleInstallCount;
52 int iRoleUninstallCount;
53 - CPI_ROLE_ASSIGNMENT* pRoles;
53 + CPISCHED_ROLE_ASSIGNMENT* pRoles;
54
55 int iMethodCount;
56 - CPI_METHOD* pMethods;
56 + CPISCHED_METHOD* pMethods;
57
58 - CPI_INTERFACE* pNext;
58 + CPISCHED_INTERFACE* pNext;
59 };
60
61 -struct CPI_COMPONENT
61 +struct CPISCHED_COMPONENT
62 {
63 WCHAR wzKey[MAX_DARWIN_KEY + 1];
64 WCHAR wzCLSID[CPI_MAX_GUID + 1];
@@ -68,14 +68,14 @@ struct CPI_COMPONENT
68
69 int iRoleInstallCount;
70 int iRoleUninstallCount;
71 - CPI_ROLE_ASSIGNMENT* pRoles;
71 + CPISCHED_ROLE_ASSIGNMENT* pRoles;
72
73 int iInterfaceCount;
74 - CPI_INTERFACE* pInterfaces;
74 + CPISCHED_INTERFACE* pInterfaces;
75
76 ICatalogCollection* piSubsColl;
77
78 - CPI_COMPONENT* pNext;
78 + CPISCHED_COMPONENT* pNext;
79 };
80
81 struct CPI_ASSEMBLY
@@ -89,7 +89,7 @@ struct CPI_ASSEMBLY
89 int iAttributes;
90
91 int iComponentCount;
92 - CPI_COMPONENT* pComponents;
92 + CPISCHED_COMPONENT* pComponents;
93
94 BOOL fReferencedForInstall;
95 BOOL fReferencedForUninstall;
@@ -163,6 +163,6 @@ HRESULT CpiRoleAssignmentsUninstall(
163 );
164 HRESULT CpiGetSubscriptionsCollForComponent(
165 CPI_ASSEMBLY* pAsm,
166 - CPI_COMPONENT* pComp,
166 + CPISCHED_COMPONENT* pComp,
167 ICatalogCollection** ppiSubsColl
168 );
src/ca/cpexec.cpp
+10 -33
@@ -2,29 +2,6 @@
2
3 #include "precomp.h"
4
5 -/********************************************************************
6 - DllMain - standard entry point for all WiX CustomActions
7 -
8 -********************************************************************/
9 -extern "C" BOOL WINAPI DllMain(
10 - IN HINSTANCE hInst,
11 - IN ULONG ulReason,
12 - IN LPVOID)
13 -{
14 - switch(ulReason)
15 - {
16 - case DLL_PROCESS_ATTACH:
17 - WcaGlobalInitialize(hInst);
18 - break;
19 -
20 - case DLL_PROCESS_DETACH:
21 - WcaGlobalFinalize();
22 - break;
23 - }
24 -
25 - return TRUE;
26 -}
27 -
5 /********************************************************************
6 ComPlusPrepare - CUSTOM ACTION ENTRY POINT
7
@@ -133,7 +110,7 @@ extern "C" UINT __stdcall ComPlusInstallExecute(MSIHANDLE hInstall)
110 ExitOnFailure(hr, "Failed to initialize COM");
111 fInitializedCom = TRUE;
112
136 - CpiInitialize();
113 + CpiExecInitialize();
114
115 // get custom action data
116 hr = WcaGetProperty(L"CustomActionData", &pwzCustomActionData);
@@ -204,7 +181,7 @@ LExit:
181 ::CloseHandle(hRollbackFile);
182
183 // unitialize
207 - CpiFinalize();
184 + CpiExecFinalize();
185
186 if (fInitializedCom)
187 ::CoUninitialize();
@@ -239,7 +216,7 @@ extern "C" UINT __stdcall ComPlusInstallExecuteCommit(MSIHANDLE hInstall)
216 ExitOnFailure(hr, "Failed to initialize COM");
217 fInitializedCom = TRUE;
218
242 - CpiInitialize();
219 + CpiExecInitialize();
220
221 // get custom action data
222 hr = WcaGetProperty(L"CustomActionData", &pwzCustomActionData);
@@ -282,7 +259,7 @@ LExit:
259 ::CloseHandle(hRollbackFile);
260
261 // unitialize
285 - CpiFinalize();
262 + CpiExecFinalize();
263
264 if (fInitializedCom)
265 ::CoUninitialize();
@@ -327,7 +304,7 @@ extern "C" UINT __stdcall ComPlusRollbackInstallExecute(MSIHANDLE hInstall)
304 ExitOnFailure(hr, "Failed to initialize COM");
305 fInitializedCom = TRUE;
306
330 - CpiInitialize();
307 + CpiExecInitialize();
308
309 // get custom action data
310 hr = WcaGetProperty(L"CustomActionData", &pwzCustomActionData);
@@ -439,7 +416,7 @@ LExit:
416 CpiFreeRollbackDataList(prdSubscriptions);
417
418 // unitialize
442 - CpiFinalize();
419 + CpiExecFinalize();
420
421 if (fInitializedCom)
422 ::CoUninitialize();
@@ -474,7 +451,7 @@ extern "C" UINT __stdcall ComPlusUninstallExecute(MSIHANDLE hInstall)
451 ExitOnFailure(hr, "Failed to initialize COM");
452 fInitializedCom = TRUE;
453
477 - CpiInitialize();
454 + CpiExecInitialize();
455
456 // get custom action data
457 hr = WcaGetProperty(L"CustomActionData", &pwzCustomActionData);
@@ -545,7 +522,7 @@ LExit:
522 ::CloseHandle(hRollbackFile);
523
524 // unitialize
548 - CpiFinalize();
525 + CpiExecFinalize();
526
527 if (fInitializedCom)
528 ::CoUninitialize();
@@ -590,7 +567,7 @@ extern "C" UINT __stdcall ComPlusRollbackUninstallExecute(MSIHANDLE hInstall)
567 ExitOnFailure(hr, "Failed to initialize COM");
568 fInitializedCom = TRUE;
569
593 - CpiInitialize();
570 + CpiExecInitialize();
571
572 // get custom action data
573 hr = WcaGetProperty(L"CustomActionData", &pwzCustomActionData);
@@ -694,7 +671,7 @@ LExit:
671 CpiFreeRollbackDataList(prdSubscriptions);
672
673 // unitialize
697 - CpiFinalize();
674 + CpiExecFinalize();
675
676 if (fInitializedCom)
677 ::CoUninitialize();
src/ca/cppartexec.cpp
+2 -2
@@ -399,7 +399,7 @@ static HRESULT CreatePartition(
399 WcaLog(LOGMSG_VERBOSE, "Creating partition, key: %S", pAttrs->pwzKey);
400
401 // get partitions collection
402 - hr = CpiGetPartitionsCollection(&piPartColl);
402 + hr = CpiExecGetPartitionsCollection(&piPartColl);
403 ExitOnFailure(hr, "Failed to get partitions collection");
404
405 // check if partition exists
@@ -456,7 +456,7 @@ static HRESULT RemovePartition(
456 WcaLog(LOGMSG_VERBOSE, "Removing partition, key: %S", pAttrs->pwzKey);
457
458 // get partitions collection
459 - hr = CpiGetPartitionsCollection(&piPartColl);
459 + hr = CpiExecGetPartitionsCollection(&piPartColl);
460 ExitOnFailure(hr, "Failed to get partitions collection");
461
462 // remove
src/ca/cppartsched.cpp
+6 -6
@@ -199,7 +199,7 @@ HRESULT CpiPartitionsVerifyInstall(
199 // get partitions collection
200 if (!piPartColl)
201 {
202 - hr = CpiGetPartitionsCollection(&piPartColl);
202 + hr = CpiSchedGetPartitionsCollection(&piPartColl);
203 ExitOnFailure(hr, "Failed to get partitions collection");
204 }
205
@@ -336,7 +336,7 @@ HRESULT CpiPartitionsVerifyUninstall(
336 // get partitions collection
337 if (!piPartColl)
338 {
339 - hr = CpiGetPartitionsCollection(&piPartColl);
339 + hr = CpiSchedGetPartitionsCollection(&piPartColl);
340 ExitOnFailure(hr, "Failed to get partitions collection");
341 }
342
@@ -526,7 +526,7 @@ HRESULT CpiGetApplicationsCollForPartition(
526 if (!pPart->piApplicationsColl)
527 {
528 // get partitions collection from catalog
529 - hr = CpiGetPartitionsCollection(&piPartColl);
529 + hr = CpiSchedGetPartitionsCollection(&piPartColl);
530 ExitOnFailure(hr, "Failed to get partitions collection");
531
532 // find application object
@@ -540,7 +540,7 @@ HRESULT CpiGetApplicationsCollForPartition(
540 }
541
542 // get roles collection
543 - hr = CpiGetCatalogCollection(piPartColl, piPartObj, L"Applications", &pPart->piApplicationsColl);
543 + hr = CpiSchedGetCatalogCollection(piPartColl, piPartObj, L"Applications", &pPart->piApplicationsColl);
544 ExitOnFailure(hr, "Failed to get applications collection");
545 }
546
@@ -576,7 +576,7 @@ HRESULT CpiGetRolesCollForPartition(
576 if (!pPart->piRolesColl)
577 {
578 // get partitions collection from catalog
579 - hr = CpiGetPartitionsCollection(&piPartColl);
579 + hr = CpiSchedGetPartitionsCollection(&piPartColl);
580 ExitOnFailure(hr, "Failed to get partitions collection");
581
582 // find partition object
@@ -587,7 +587,7 @@ HRESULT CpiGetRolesCollForPartition(
587 ExitFunction(); // exit with hr = S_FALSE
588
589 // get roles collection
590 - hr = CpiGetCatalogCollection(piPartColl, piPartObj, L"RolesForPartition", &pPart->piRolesColl);
590 + hr = CpiSchedGetCatalogCollection(piPartColl, piPartObj, L"RolesForPartition", &pPart->piRolesColl);
591 ExitOnFailure(hr, "Failed to get roles collection");
592 }
593
src/ca/cpsched.cpp
+6 -30
@@ -29,30 +29,6 @@
29 #define CP_COMPLUSINSTALLCOMMIT L"ComPlusInstallCommit"
30 #endif
31
32 -
33 -/********************************************************************
34 - DllMain - standard entry point for all WiX CustomActions
35 -
36 -********************************************************************/
37 -extern "C" BOOL WINAPI DllMain(
38 - IN HINSTANCE hInst,
39 - IN ULONG ulReason,
40 - IN LPVOID)
41 -{
42 - switch(ulReason)
43 - {
44 - case DLL_PROCESS_ATTACH:
45 - WcaGlobalInitialize(hInst);
46 - break;
47 -
48 - case DLL_PROCESS_DETACH:
49 - WcaGlobalFinalize();
50 - break;
51 - }
52 -
53 - return TRUE;
54 -}
55 -
32 /********************************************************************
33 ConfigureComPlusInstall - CUSTOM ACTION ENTRY POINT for installing COM+ components
34
@@ -103,7 +79,7 @@ extern "C" UINT __stdcall ConfigureComPlusInstall(MSIHANDLE hInstall)
79 ExitOnFailure(hr, "Failed to initialize COM");
80 fInitializedCom = TRUE;
81
106 - CpiInitialize();
82 + CpiSchedInitialize();
83
84 // check for the prerequsite tables
85 if (!CpiTableExists(cptComPlusPartition) && !CpiTableExists(cptComPlusApplication) && !CpiTableExists(cptComPlusAssembly))
@@ -114,7 +90,7 @@ extern "C" UINT __stdcall ConfigureComPlusInstall(MSIHANDLE hInstall)
90
91 // make sure we can access the COM+ admin catalog
92 do {
117 - hr = CpiGetAdminCatalog(&piCatalog);
93 + hr = CpiSchedGetAdminCatalog(&piCatalog);
94 if (FAILED(hr))
95 {
96 WcaLog(LOGMSG_STANDARD, "Failed to get COM+ admin catalog");
@@ -320,7 +296,7 @@ LExit:
296 CpiSubscriptionListFree(&subList);
297
298 // unitialize
323 - CpiFinalize();
299 + CpiSchedFinalize();
300
301 if (fInitializedCom)
302 ::CoUninitialize();
@@ -378,7 +354,7 @@ extern "C" UINT __stdcall ConfigureComPlusUninstall(MSIHANDLE hInstall)
354 ExitOnFailure(hr, "Failed to initialize COM");
355 fInitializedCom = TRUE;
356
381 - CpiInitialize();
357 + CpiSchedInitialize();
358
359 // check for the prerequsite tables
360 if (!CpiTableExists(cptComPlusPartition) && !CpiTableExists(cptComPlusApplication) && !CpiTableExists(cptComPlusAssembly))
@@ -389,7 +365,7 @@ extern "C" UINT __stdcall ConfigureComPlusUninstall(MSIHANDLE hInstall)
365
366 // make sure we can access the COM+ admin catalog
367 do {
392 - hr = CpiGetAdminCatalog(&piCatalog);
368 + hr = CpiSchedGetAdminCatalog(&piCatalog);
369 if (FAILED(hr))
370 {
371 WcaLog(LOGMSG_STANDARD, "Failed to get COM+ admin catalog");
@@ -580,7 +556,7 @@ LExit:
556 CpiSubscriptionListFree(&subList);
557
558 // unitialize
583 - CpiFinalize();
559 + CpiSchedFinalize();
560
561 if (fInitializedCom)
562 ::CoUninitialize();
src/ca/cpsubssched.cpp
+3 -3
@@ -53,7 +53,7 @@ static HRESULT ComponentFindByKey(
53 CPI_ASSEMBLY_LIST* pAsmList,
54 LPCWSTR pwzKey,
55 CPI_ASSEMBLY** ppAsmItm,
56 - CPI_COMPONENT** ppCompItm
56 + CPISCHED_COMPONENT** ppCompItm
57 );
58
59
@@ -586,12 +586,12 @@ static HRESULT ComponentFindByKey(
586 CPI_ASSEMBLY_LIST* pAsmList,
587 LPCWSTR pwzKey,
588 CPI_ASSEMBLY** ppAsmItm,
589 - CPI_COMPONENT** ppCompItm
589 + CPISCHED_COMPONENT** ppCompItm
590 )
591 {
592 for (CPI_ASSEMBLY* pAsmItm = pAsmList->pFirst; pAsmItm; pAsmItm = pAsmItm->pNext)
593 {
594 - for (CPI_COMPONENT* pCompItm = pAsmItm->pComponents; pCompItm; pCompItm = pCompItm->pNext)
594 + for (CPISCHED_COMPONENT* pCompItm = pAsmItm->pComponents; pCompItm; pCompItm = pCompItm->pNext)
595 {
596 if (0 == lstrcmpW(pCompItm->wzKey, pwzKey))
597 {
src/ca/cpsubssched.h
+1 -1
@@ -18,7 +18,7 @@ struct CPI_SUBSCRIPTION
18 INSTALLSTATE isInstalled, isAction;
19
20 CPI_ASSEMBLY* pAssembly;
21 - CPI_COMPONENT* pComponent;
21 + CPISCHED_COMPONENT* pComponent;
22
23 CPI_SUBSCRIPTION* pNext;
24 };
src/ca/cputilexec.cpp
+28 -28
@@ -69,13 +69,13 @@ static ICOMAdminCatalog* gpiCatalog;
69
70 // function definitions
71
72 -void CpiInitialize()
72 +void CpiExecInitialize()
73 {
74 // collections
75 gpiCatalog = NULL;
76 }
77
78 -void CpiFinalize()
78 +void CpiExecFinalize()
79 {
80 // collections
81 ReleaseObject(gpiCatalog);
@@ -187,7 +187,7 @@ LExit:
187 return hr;
188 }
189
190 -HRESULT CpiGetAdminCatalog(
190 +HRESULT CpiExecGetAdminCatalog(
191 ICOMAdminCatalog** ppiCatalog
192 )
193 {
@@ -225,11 +225,11 @@ HRESULT CpiLogCatalogErrorInfo()
225 LPWSTR pwzMinorRef = NULL;
226
227 // get catalog
228 - hr = CpiGetAdminCatalog(&piCatalog);
228 + hr = CpiExecGetAdminCatalog(&piCatalog);
229 ExitOnFailure(hr, "Failed to get COM+ admin catalog");
230
231 // get error info collection
232 - hr = CpiGetCatalogCollection(L"ErrorInfo", &piErrColl);
232 + hr = CpiExecGetCatalogCollection(L"ErrorInfo", &piErrColl);
233 ExitOnFailure(hr, "Failed to get error info collection");
234
235 // loop objects
@@ -282,7 +282,7 @@ LExit:
282 return hr;
283 }
284
285 -HRESULT CpiGetCatalogCollection(
285 +HRESULT CpiExecGetCatalogCollection(
286 LPCWSTR pwzName,
287 ICatalogCollection** ppiColl
288 )
@@ -299,7 +299,7 @@ HRESULT CpiGetCatalogCollection(
299 ExitOnNull(bstrName, hr, E_OUTOFMEMORY, "Failed to allocate BSTR for collection name");
300
301 // get catalog
302 - hr = CpiGetAdminCatalog(&piCatalog);
302 + hr = CpiExecGetAdminCatalog(&piCatalog);
303 ExitOnFailure(hr, "Failed to get COM+ admin catalog");
304
305 // get collecton from catalog
@@ -326,7 +326,7 @@ LExit:
326 return hr;
327 }
328
329 -HRESULT CpiGetCatalogCollection(
329 +HRESULT CpiExecGetCatalogCollection(
330 ICatalogCollection* piColl,
331 ICatalogObject* piObj,
332 LPCWSTR pwzName,
@@ -348,7 +348,7 @@ HRESULT CpiGetCatalogCollection(
348 ExitOnNull(bstrName, hr, E_OUTOFMEMORY, "Failed to allocate BSTR for collection name");
349
350 // get catalog
351 - hr = CpiGetAdminCatalog(&piCatalog);
351 + hr = CpiExecGetAdminCatalog(&piCatalog);
352 ExitOnFailure(hr, "Failed to get COM+ admin catalog");
353
354 // get key
@@ -894,14 +894,14 @@ LExit:
894 return hr;
895 }
896
897 -HRESULT CpiGetPartitionsCollection(
897 +HRESULT CpiExecGetPartitionsCollection(
898 ICatalogCollection** ppiPartColl
899 )
900 {
901 HRESULT hr = S_OK;
902
903 // get collection
904 - hr = CpiGetCatalogCollection(L"Partitions", ppiPartColl);
904 + hr = CpiExecGetCatalogCollection(L"Partitions", ppiPartColl);
905 ExitOnFailure(hr, "Failed to get catalog collection");
906
907 hr = S_OK;
@@ -921,7 +921,7 @@ HRESULT CpiGetPartitionRolesCollection(
921 ICatalogObject* piPartObj = NULL;
922
923 // get partitions collection
924 - hr = CpiGetPartitionsCollection(&piPartColl);
924 + hr = CpiExecGetPartitionsCollection(&piPartColl);
925 ExitOnFailure(hr, "Failed to get partitions collection");
926
927 if (S_FALSE == hr)
@@ -935,7 +935,7 @@ HRESULT CpiGetPartitionRolesCollection(
935 ExitFunction(); // partition not found, exit with hr = S_FALSE
936
937 // get roles collection
938 - hr = CpiGetCatalogCollection(piPartColl, piPartObj, L"RolesForPartition", ppiRolesColl);
938 + hr = CpiExecGetCatalogCollection(piPartColl, piPartObj, L"RolesForPartition", ppiRolesColl);
939 ExitOnFailure(hr, "Failed to get catalog collection");
940
941 hr = S_OK;
@@ -974,7 +974,7 @@ HRESULT CpiGetUsersInPartitionRoleCollection(
974 ExitFunction(); // user not found, exit with hr = S_FALSE
975
976 // get roles collection
977 - hr = CpiGetCatalogCollection(piRoleColl, piRoleObj, L"UsersInPartitionRole", ppiUsrInRoleColl);
977 + hr = CpiExecGetCatalogCollection(piRoleColl, piRoleObj, L"UsersInPartitionRole", ppiUsrInRoleColl);
978 ExitOnFailure(hr, "Failed to get catalog collection");
979
980 hr = S_OK;
@@ -994,7 +994,7 @@ HRESULT CpiGetPartitionUsersCollection(
994 HRESULT hr = S_OK;
995
996 // get roles collection
997 - hr = CpiGetCatalogCollection(L"PartitionUsers", ppiUserColl);
997 + hr = CpiExecGetCatalogCollection(L"PartitionUsers", ppiUserColl);
998 ExitOnFailure(hr, "Failed to get catalog collection");
999
1000 hr = S_OK;
@@ -1003,7 +1003,7 @@ LExit:
1003 return hr;
1004 }
1005
1006 -HRESULT CpiGetApplicationsCollection(
1006 +HRESULT CpiExecGetApplicationsCollection(
1007 LPCWSTR pwzPartID,
1008 ICatalogCollection** ppiAppColl
1009 )
@@ -1018,7 +1018,7 @@ HRESULT CpiGetApplicationsCollection(
1018 ICatalogObject* piPartObj = NULL;
1019
1020 // get catalog
1021 - hr = CpiGetAdminCatalog(&piCatalog);
1021 + hr = CpiExecGetAdminCatalog(&piCatalog);
1022 ExitOnFailure(hr, "Failed to get COM+ admin catalog");
1023
1024 // get ICOMAdminCatalog2 interface
@@ -1038,7 +1038,7 @@ HRESULT CpiGetApplicationsCollection(
1038 }
1039
1040 // get partitions collection
1041 - hr = CpiGetPartitionsCollection(&piPartColl);
1041 + hr = CpiExecGetPartitionsCollection(&piPartColl);
1042 ExitOnFailure(hr, "Failed to get partitions collection");
1043
1044 // find object
@@ -1049,7 +1049,7 @@ HRESULT CpiGetApplicationsCollection(
1049 ExitFunction(); // partition not found, exit with hr = S_FALSE
1050
1051 // get applications collection
1052 - hr = CpiGetCatalogCollection(piPartColl, piPartObj, L"Applications", ppiAppColl);
1052 + hr = CpiExecGetCatalogCollection(piPartColl, piPartObj, L"Applications", ppiAppColl);
1053 ExitOnFailure(hr, "Failed to get catalog collection for partition");
1054 }
1055
@@ -1061,7 +1061,7 @@ HRESULT CpiGetApplicationsCollection(
1061 ExitOnFailure(hr = E_FAIL, "Partitions are not supported by this version of COM+");
1062
1063 // get applications collection
1064 - hr = CpiGetCatalogCollection(L"Applications", ppiAppColl);
1064 + hr = CpiExecGetCatalogCollection(L"Applications", ppiAppColl);
1065 ExitOnFailure(hr, "Failed to get catalog collection");
1066 }
1067
@@ -1091,7 +1091,7 @@ HRESULT CpiGetRolesCollection(
1091 ICatalogObject* piAppObj = NULL;
1092
1093 // get applications collection
1094 - hr = CpiGetApplicationsCollection(pwzPartID, &piAppColl);
1094 + hr = CpiExecGetApplicationsCollection(pwzPartID, &piAppColl);
1095 ExitOnFailure(hr, "Failed to get applications collection");
1096
1097 if (S_FALSE == hr)
@@ -1105,7 +1105,7 @@ HRESULT CpiGetRolesCollection(
1105 ExitFunction(); // application not found, exit with hr = S_FALSE
1106
1107 // get roles collection
1108 - hr = CpiGetCatalogCollection(piAppColl, piAppObj, L"Roles", ppiRolesColl);
1108 + hr = CpiExecGetCatalogCollection(piAppColl, piAppObj, L"Roles", ppiRolesColl);
1109 ExitOnFailure(hr, "Failed to catalog collection");
1110
1111 hr = S_OK;
@@ -1145,7 +1145,7 @@ HRESULT CpiGetUsersInRoleCollection(
1145 ExitFunction(); // role not found, exit with hr = S_FALSE
1146
1147 // get roles collection
1148 - hr = CpiGetCatalogCollection(piRoleColl, piRoleObj, L"UsersInRole", ppiUsrInRoleColl);
1148 + hr = CpiExecGetCatalogCollection(piRoleColl, piRoleObj, L"UsersInRole", ppiUsrInRoleColl);
1149 ExitOnFailure(hr, "Failed to get catalog collection");
1150
1151 hr = S_OK;
@@ -1170,7 +1170,7 @@ HRESULT CpiGetComponentsCollection(
1170 ICatalogObject* piAppObj = NULL;
1171
1172 // get applications collection
1173 - hr = CpiGetApplicationsCollection(pwzPartID, &piAppColl);
1173 + hr = CpiExecGetApplicationsCollection(pwzPartID, &piAppColl);
1174 ExitOnFailure(hr, "Failed to get applications collection");
1175
1176 if (S_FALSE == hr)
@@ -1184,7 +1184,7 @@ HRESULT CpiGetComponentsCollection(
1184 ExitFunction(); // application not found, exit with hr = S_FALSE
1185
1186 // get components collection
1187 - hr = CpiGetCatalogCollection(piAppColl, piAppObj, L"Components", ppiCompsColl);
1187 + hr = CpiExecGetCatalogCollection(piAppColl, piAppObj, L"Components", ppiCompsColl);
1188 ExitOnFailure(hr, "Failed to get catalog collection");
1189
1190 hr = S_OK;
@@ -1206,7 +1206,7 @@ HRESULT CpiGetInterfacesCollection(
1206 HRESULT hr = S_OK;
1207
1208 // get interfaces collection
1209 - hr = CpiGetCatalogCollection(piCompColl, piCompObj, L"InterfacesForComponent", ppiIntfColl);
1209 + hr = CpiExecGetCatalogCollection(piCompColl, piCompObj, L"InterfacesForComponent", ppiIntfColl);
1210 ExitOnFailure(hr, "Failed to get catalog collection");
1211
1212 hr = S_OK;
@@ -1224,7 +1224,7 @@ HRESULT CpiGetMethodsCollection(
1224 HRESULT hr = S_OK;
1225
1226 // get interfaces collection
1227 - hr = CpiGetCatalogCollection(piIntfColl, piIntfObj, L"MethodsForInterface", ppiMethColl);
1227 + hr = CpiExecGetCatalogCollection(piIntfColl, piIntfObj, L"MethodsForInterface", ppiMethColl);
1228 ExitOnFailure(hr, "Failed to get catalog collection");
1229
1230 hr = S_OK;
@@ -1260,7 +1260,7 @@ HRESULT CpiGetSubscriptionsCollection(
1260 ExitFunction(); // component not found, exit with hr = S_FALSE
1261
1262 // get subscriptions collection
1263 - hr = CpiGetCatalogCollection(piCompColl, piCompObj, L"SubscriptionsForComponent", ppiSubsColl);
1263 + hr = CpiExecGetCatalogCollection(piCompColl, piCompObj, L"SubscriptionsForComponent", ppiSubsColl);
1264 ExitOnFailure(hr, "Failed to get catalog collection");
1265
1266 hr = S_OK;
src/ca/cputilexec.h
+7 -7
@@ -28,8 +28,8 @@ struct CPI_ROLLBACK_DATA
28
29 // function prototypes
30
31 -void CpiInitialize();
32 -void CpiFinalize();
31 +void CpiExecInitialize();
32 +void CpiExecFinalize();
33 HRESULT CpiActionStartMessage(
34 LPWSTR* ppwzActionData,
35 BOOL fSuppress
@@ -38,15 +38,15 @@ HRESULT CpiActionDataMessage(
38 DWORD cArgs,
39 ...
40 );
41 -HRESULT CpiGetAdminCatalog(
41 +HRESULT CpiExecGetAdminCatalog(
42 ICOMAdminCatalog** ppiCatalog
43 );
44 HRESULT CpiLogCatalogErrorInfo();
45 -HRESULT CpiGetCatalogCollection(
45 +HRESULT CpiExecGetCatalogCollection(
46 LPCWSTR pwzName,
47 ICatalogCollection** ppiColl
48 );
49 -HRESULT CpiGetCatalogCollection(
49 +HRESULT CpiExecGetCatalogCollection(
50 ICatalogCollection* piColl,
51 ICatalogObject* piObj,
52 LPCWSTR pwzName,
@@ -105,7 +105,7 @@ HRESULT CpiFindUserCollectionObject(
105 PSID pSid,
106 ICatalogObject** ppiObj
107 );
108 -HRESULT CpiGetPartitionsCollection(
108 +HRESULT CpiExecGetPartitionsCollection(
109 ICatalogCollection** ppiPartColl
110 );
111 HRESULT CpiGetPartitionRolesCollection(
@@ -120,7 +120,7 @@ HRESULT CpiGetUsersInPartitionRoleCollection(
120 HRESULT CpiGetPartitionUsersCollection(
121 ICatalogCollection** ppiUserColl
122 );
123 -HRESULT CpiGetApplicationsCollection(
123 +HRESULT CpiExecGetApplicationsCollection(
124 LPCWSTR pwzPartID,
125 ICatalogCollection** ppiAppColl
126 );
src/ca/cputilsched.cpp
+14 -14
@@ -43,7 +43,7 @@ static int giTables;
43
44 // function definitions
45
46 -void CpiInitialize()
46 +void CpiSchedInitialize()
47 {
48 // collections
49 gpiCatalog = NULL;
@@ -80,7 +80,7 @@ void CpiInitialize()
80 if (S_OK == WcaTableExists(L"ComPlusSubscriptionProperty")) giTables |= cptComPlusSubscriptionProperty;
81 }
82
83 -void CpiFinalize()
83 +void CpiSchedFinalize()
84 {
85 // collections
86 ReleaseObject(gpiCatalog);
@@ -95,7 +95,7 @@ BOOL CpiTableExists(
95 return (giTables & iTable) == iTable;
96 }
97
98 -HRESULT CpiGetAdminCatalog(
98 +HRESULT CpiSchedGetAdminCatalog(
99 ICOMAdminCatalog** ppiCatalog
100 )
101 {
@@ -118,7 +118,7 @@ LExit:
118 return hr;
119 }
120
121 -HRESULT CpiGetCatalogCollection(
121 +HRESULT CpiSchedGetCatalogCollection(
122 LPCWSTR pwzName,
123 ICatalogCollection** ppiColl
124 )
@@ -134,7 +134,7 @@ HRESULT CpiGetCatalogCollection(
134 ExitOnNull(bstrName, hr, E_OUTOFMEMORY, "Failed to allocate BSTR for collection name");
135
136 // get catalog
137 - hr = CpiGetAdminCatalog(&piCatalog);
137 + hr = CpiSchedGetAdminCatalog(&piCatalog);
138 ExitOnFailure(hr, "Failed to get COM+ admin catalog");
139
140 // get collecton from catalog
@@ -159,7 +159,7 @@ LExit:
159 return hr;
160 }
161
162 -HRESULT CpiGetCatalogCollection(
162 +HRESULT CpiSchedGetCatalogCollection(
163 ICatalogCollection* piColl,
164 ICatalogObject* piObj,
165 LPCWSTR pwzName,
@@ -180,7 +180,7 @@ HRESULT CpiGetCatalogCollection(
180 ExitOnNull(bstrName, hr, E_OUTOFMEMORY, "Failed to allocate BSTR for collection name");
181
182 // get catalog
183 - hr = CpiGetAdminCatalog(&piCatalog);
183 + hr = CpiSchedGetAdminCatalog(&piCatalog);
184 ExitOnFailure(hr, "Failed to get COM+ admin catalog");
185
186 // get key
@@ -331,7 +331,7 @@ LExit:
331 return hr;
332 }
333
334 -HRESULT CpiGetPartitionsCollection(
334 +HRESULT CpiSchedGetPartitionsCollection(
335 ICatalogCollection** ppiPartColl
336 )
337 {
@@ -340,7 +340,7 @@ HRESULT CpiGetPartitionsCollection(
340 if (!gpiPartColl)
341 {
342 // get collection
343 - hr = CpiGetCatalogCollection(L"Partitions", &gpiPartColl);
343 + hr = CpiSchedGetCatalogCollection(L"Partitions", &gpiPartColl);
344 ExitOnFailure(hr, "Failed to get partitions collection");
345 }
346
@@ -354,7 +354,7 @@ LExit:
354 return hr;
355 }
356
357 -HRESULT CpiGetApplicationsCollection(
357 +HRESULT CpiSchedGetApplicationsCollection(
358 ICatalogCollection** ppiAppColl
359 )
360 {
@@ -369,7 +369,7 @@ HRESULT CpiGetApplicationsCollection(
369 if (!gpiAppColl)
370 {
371 // get catalog
372 - hr = CpiGetAdminCatalog(&piCatalog);
372 + hr = CpiSchedGetAdminCatalog(&piCatalog);
373 ExitOnFailure(hr, "Failed to get COM+ admin catalog");
374
375 // get ICOMAdminCatalog2 interface
@@ -385,7 +385,7 @@ HRESULT CpiGetApplicationsCollection(
385 ExitOnFailure(hr, "Failed to get global partition id");
386
387 // get partitions collection
388 - hr = CpiGetPartitionsCollection(&piPartColl);
388 + hr = CpiSchedGetPartitionsCollection(&piPartColl);
389 ExitOnFailure(hr, "Failed to get partitions collection");
390
391 // find object
@@ -396,7 +396,7 @@ HRESULT CpiGetApplicationsCollection(
396 ExitFunction(); // partition not found, exit with hr = S_FALSE
397
398 // get applications collection
399 - hr = CpiGetCatalogCollection(piPartColl, piPartObj, L"Applications", &gpiAppColl);
399 + hr = CpiSchedGetCatalogCollection(piPartColl, piPartObj, L"Applications", &gpiAppColl);
400 ExitOnFailure(hr, "Failed to get applications collection");
401 }
402
@@ -404,7 +404,7 @@ HRESULT CpiGetApplicationsCollection(
404 else
405 {
406 // get applications collection
407 - hr = CpiGetCatalogCollection(L"Applications", &gpiAppColl);
407 + hr = CpiSchedGetCatalogCollection(L"Applications", &gpiAppColl);
408 ExitOnFailure(hr, "Failed to get applications collection");
409 }
410 }
src/ca/cputilsched.h
+7 -19
@@ -2,12 +2,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 -#define CPI_MAX_GUID 38
6 -
5 enum eRunMode { rmDeferred = 1, rmCommit, rmRollback };
6
9 -enum eActionType { atNoOp = 0, atCreate, atRemove };
10 -
7 enum eComPlusPropertyType { cpptNone = 0, cpptBoolean, cpptInteger, cpptString, cpptUser };
8
9 enum eComPlusTables
@@ -42,14 +38,6 @@ enum eComPlusTables
38
39 // structs
40
45 -struct CPI_PROPERTY
46 -{
47 - WCHAR wzName[MAX_DARWIN_KEY + 1];
48 - LPWSTR pwzValue;
49 -
50 - CPI_PROPERTY* pNext;
51 -};
52 -
41 struct CPI_PROPERTY_DEFINITION
42 {
43 LPCWSTR pwzName;
@@ -60,19 +48,19 @@ struct CPI_PROPERTY_DEFINITION
48
49 // function prototypes
50
63 -void CpiInitialize();
64 -void CpiFinalize();
51 +void CpiSchedInitialize();
52 +void CpiSchedFinalize();
53 BOOL CpiTableExists(
54 int iTable
55 );
68 -HRESULT CpiGetAdminCatalog(
56 +HRESULT CpiSchedGetAdminCatalog(
57 ICOMAdminCatalog** ppiCatalog
58 );
71 -HRESULT CpiGetCatalogCollection(
59 +HRESULT CpiSchedGetCatalogCollection(
60 LPCWSTR pwzName,
61 ICatalogCollection** ppiColl
62 );
75 -HRESULT CpiGetCatalogCollection(
63 +HRESULT CpiSchedGetCatalogCollection(
64 ICatalogCollection* piColl,
65 ICatalogObject* piObj,
66 LPCWSTR pwzName,
@@ -89,10 +77,10 @@ HRESULT CpiFindCollectionObject(
77 LPCWSTR pwzName,
78 ICatalogObject** ppiObj
79 );
92 -HRESULT CpiGetPartitionsCollection(
80 +HRESULT CpiSchedGetPartitionsCollection(
81 ICatalogCollection** ppiPartColl
82 );
95 -HRESULT CpiGetApplicationsCollection(
83 +HRESULT CpiSchedGetApplicationsCollection(
84 ICatalogCollection** ppiAppColl
85 );
86 HRESULT CpiAddActionTextToActionData(
src/ca/custommsierrors.h new
+29
@@ -0,0 +1,29 @@
1 +#pragma once
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 +#define msierrComPlusCannotConnect 28001
6 +#define msierrComPlusPartitionReadFailed 28002
7 +#define msierrComPlusPartitionRoleReadFailed 28003
8 +#define msierrComPlusUserInPartitionRoleReadFailed 28004
9 +#define msierrComPlusPartitionUserReadFailed 28005
10 +#define msierrComPlusApplicationReadFailed 28006
11 +#define msierrComPlusApplicationRoleReadFailed 28007
12 +#define msierrComPlusUserInApplicationRoleReadFailed 28008
13 +#define msierrComPlusAssembliesReadFailed 28009
14 +#define msierrComPlusSubscriptionReadFailed 28010
15 +#define msierrComPlusPartitionDependency 28011
16 +#define msierrComPlusPartitionNotFound 28012
17 +#define msierrComPlusPartitionIdConflict 28013
18 +#define msierrComPlusPartitionNameConflict 28014
19 +#define msierrComPlusApplicationDependency 28015
20 +#define msierrComPlusApplicationNotFound 28016
21 +#define msierrComPlusApplicationIdConflict 28017
22 +#define msierrComPlusApplicationNameConflict 28018
23 +#define msierrComPlusApplicationRoleDependency 28019
24 +#define msierrComPlusApplicationRoleNotFound 28020
25 +#define msierrComPlusApplicationRoleConflict 28021
26 +#define msierrComPlusAssemblyDependency 28022
27 +#define msierrComPlusSubscriptionIdConflict 28023
28 +#define msierrComPlusSubscriptionNameConflict 28024
29 +#define msierrComPlusFailedLookupNames 28025
src/ca/dllmain.cpp new
+27
@@ -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 +#include "precomp.h"
4 +
5 +/********************************************************************
6 +DllMain - standard entry point for all WiX custom actions.
7 +
8 +********************************************************************/
9 +extern "C" BOOL WINAPI DllMain(
10 + IN HINSTANCE hInstance,
11 + IN ULONG ulReason,
12 + IN LPVOID)
13 +{
14 + switch(ulReason)
15 + {
16 + case DLL_PROCESS_ATTACH:
17 + WcaGlobalInitialize(hInstance);
18 + ::DisableThreadLibraryCalls(hInstance);
19 + break;
20 +
21 + case DLL_PROCESS_DETACH:
22 + WcaGlobalFinalize();
23 + break;
24 + }
25 +
26 + return TRUE;
27 +}
src/ca/packages.config new
+5
@@ -0,0 +1,5 @@
1 +<?xml version="1.0" encoding="utf-8"?>
2 +<packages>
3 + <package id="WixToolset.DUtil" version="4.0.16" targetFramework="native" />
4 + <package id="WixToolset.WcaUtil" version="4.0.2" targetFramework="native" />
5 +</packages>
\ No newline at end of file
src/ca/precomp.h new
+33
@@ -0,0 +1,33 @@
1 +#pragma once
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 +#include <windows.h>
6 +#include <msiquery.h>
7 +#include <strsafe.h>
8 +#include <comadmin.h>
9 +#include <ntsecapi.h>
10 +#include <aclapi.h>
11 +
12 +#include "wcautil.h"
13 +#include "memutil.h"
14 +#include "strutil.h"
15 +#include "wiutil.h"
16 +
17 +#include "CustomMsiErrors.h"
18 +
19 +#include "cpcost.h"
20 +#include "cputilexec.h"
21 +#include "cppartexec.h"
22 +#include "cppartroleexec.h"
23 +#include "cpappexec.h"
24 +#include "cpapproleexec.h"
25 +#include "cpasmexec.h"
26 +#include "cpsubsexec.h"
27 +#include "cputilsched.h"
28 +#include "cppartsched.h"
29 +#include "cppartrolesched.h"
30 +#include "cpappsched.h"
31 +#include "cpapprolesched.h"
32 +#include "cpasmsched.h"
33 +#include "cpsubssched.h"
src/test/WixToolsetTest.ComPlus/ComPlusExtensionFixture.cs new
+32
@@ -0,0 +1,32 @@
1 +// Copyright (c) .NET Foundation and contributors. 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.ComPlus
4 +{
5 + using System.Linq;
6 + using WixBuildTools.TestSupport;
7 + using WixToolset.Core.TestPackage;
8 + using WixToolset.ComPlus;
9 + using Xunit;
10 +
11 + public class ComPlusExtensionFixture
12 + {
13 + [Fact]
14 + public void CanBuildUsingComPlusPartition()
15 + {
16 + var folder = TestData.Get(@"TestData\UsingComPlusPartition");
17 + var build = new Builder(folder, typeof(ComPlusExtensionFactory), new[] { folder });
18 +
19 + var results = build.BuildAndQuery(Build, "ComPlusPartition");
20 + Assert.Equal(new[]
21 + {
22 + "ComPlusPartition:",
23 + }, results.OrderBy(s => s).ToArray());
24 + }
25 +
26 + private static void Build(string[] args)
27 + {
28 + var result = WixRunner.Execute(args)
29 + .AssertSuccess();
30 + }
31 + }
32 +}
src/test/WixToolsetTest.ComPlus/TestData/UsingComPlusPartition/Package.en-us.wxl new
+11
@@ -0,0 +1,11 @@
1 +<?xml version="1.0" encoding="utf-8"?>
2 +
3 +<!--
4 +This file contains the declaration of all the localizable strings.
5 +-->
6 +<WixLocalization xmlns="http://wixtoolset.org/schemas/v4/wxl" Culture="en-US">
7 +
8 + <String Id="DowngradeError">A newer version of [ProductName] is already installed.</String>
9 + <String Id="FeatureTitle">MsiPackage</String>
10 +
11 +</WixLocalization>
src/test/WixToolsetTest.ComPlus/TestData/UsingComPlusPartition/Package.wxs new
+22
@@ -0,0 +1,22 @@
1 +<?xml version="1.0" encoding="utf-8"?>
2 +<Wix xmlns="http://wixtoolset.org/schemas/v4/wxs">
3 + <Product Id="*" Name="MsiPackage" Language="1033" Version="1.0.0.0" Manufacturer="Example Corporation" UpgradeCode="047730a5-30fe-4a62-a520-da9381b8226a">
4 + <Package InstallerVersion="200" Compressed="no" InstallScope="perMachine" />
5 +
6 + <MajorUpgrade DowngradeErrorMessage="!(loc.DowngradeError)" />
7 + <MediaTemplate />
8 +
9 + <Feature Id="ProductFeature" Title="!(loc.FeatureTitle)">
10 + <ComponentGroupRef Id="ProductComponents" />
11 + </Feature>
12 +
13 + </Product>
14 +
15 + <Fragment>
16 + <Directory Id="TARGETDIR" Name="SourceDir">
17 + <Directory Id="ProgramFilesFolder">
18 + <Directory Id="INSTALLFOLDER" Name="MsiPackage" />
19 + </Directory>
20 + </Directory>
21 + </Fragment>
22 +</Wix>
src/test/WixToolsetTest.ComPlus/TestData/UsingComPlusPartition/PackageComponents.wxs new
+12
@@ -0,0 +1,12 @@
1 +<?xml version="1.0" encoding="utf-8"?>
2 +<Wix xmlns="http://wixtoolset.org/schemas/v4/wxs"
3 + xmlns:complus="http://wixtoolset.org/schemas/v4/wxs/complus">
4 + <Fragment>
5 + <ComponentGroup Id="ProductComponents" Directory="INSTALLFOLDER">
6 + <Component>
7 + <File Source="example.txt" />
8 + <complus:ComPlusPartition Id="MyPartition" Name="MyPartition" PartitionId="MyPartitionId" />
9 + </Component>
10 + </ComponentGroup>
11 + </Fragment>
12 +</Wix>
src/test/WixToolsetTest.ComPlus/TestData/UsingComPlusPartition/example.txt new
+1
@@ -0,0 +1 @@
1 +This is example.txt.
\ No newline at end of file
src/test/WixToolsetTest.ComPlus/WixToolsetTest.ComPlus.csproj new
+38
@@ -0,0 +1,38 @@
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 + <TargetFramework>netcoreapp2.1</TargetFramework>
7 + <IsPackable>false</IsPackable>
8 + </PropertyGroup>
9 +
10 + <PropertyGroup>
11 + <NoWarn>NU1701</NoWarn>
12 + </PropertyGroup>
13 +
14 + <ItemGroup>
15 + <Content Include="TestData\UsingComPlusPartition\example.txt" CopyToOutputDirectory="PreserveNewest" />
16 + <Content Include="TestData\UsingComPlusPartition\Package.en-us.wxl" CopyToOutputDirectory="PreserveNewest" />
17 + <Content Include="TestData\UsingComPlusPartition\Package.wxs" CopyToOutputDirectory="PreserveNewest" />
18 + <Content Include="TestData\UsingComPlusPartition\PackageComponents.wxs" CopyToOutputDirectory="PreserveNewest" />
19 + </ItemGroup>
20 +
21 + <ItemGroup>
22 + <ProjectReference Include="..\..\wixext\WixToolset.ComPlus.wixext.csproj" />
23 + </ItemGroup>
24 +
25 + <ItemGroup>
26 + <PackageReference Include="WixToolset.Core.TestPackage" Version="4.0.*" PrivateAssets="all" />
27 + </ItemGroup>
28 +
29 + <ItemGroup>
30 + <PackageReference Include="WixBuildTools.TestSupport" Version="4.0.*" />
31 + </ItemGroup>
32 +
33 + <ItemGroup>
34 + <PackageReference Include="Microsoft.NET.Test.Sdk" Version="15.8.0" />
35 + <PackageReference Include="xunit" Version="2.4.0" />
36 + <PackageReference Include="xunit.runner.visualstudio" Version="2.4.0" />
37 + </ItemGroup>
38 +</Project>
src/wixext/ComPlusCompiler.cs
+536 -543
@@ -1,31 +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.Extensions
3 +namespace WixToolset.ComPlus
4 {
5 using System;
6 using System.Collections;
7 using System.Collections.Generic;
8 using System.Globalization;
9 - using System.Reflection;
10 - using System.Xml;
9 + using System.Text;
10 using System.Xml.Linq;
12 - using System.Xml.Schema;
11 using WixToolset.Data;
12 using WixToolset.Extensibility;
13 + using WixToolset.Extensibility.Data;
14
15 /// <summary>
17 - /// The compiler for the WiX Toolset Internet Information Services Extension.
16 + /// The compiler for the WiX Toolset COM+ Extension.
17 /// </summary>
19 - public sealed class ComPlusCompiler : CompilerExtension
18 + public sealed class ComPlusCompiler : BaseCompilerExtension
19 {
21 - /// <summary>
22 - /// Instantiate a new ComPlusCompiler.
23 - /// </summary>
24 - public ComPlusCompiler()
25 - {
26 - this.Namespace = "http://wixtoolset.org/schemas/v4/wxs/complus";
27 - }
28 -
20 /// <summary>
21 /// </summary>
22 /// <remarks></remarks>
@@ -37,6 +28,8 @@ namespace WixToolset.Extensions
28 RegisterInCommit = (1 << 3)
29 }
30
31 + public override XNamespace Namespace => "http://wixtoolset.org/schemas/v4/wxs/complus";
32 +
33 /// <summary>
34 /// Processes an element for the Compiler.
35 /// </summary>
@@ -44,7 +37,7 @@ namespace WixToolset.Extensions
37 /// <param name="parentElement">Parent element of element to process.</param>
38 /// <param name="element">Element to process.</param>
39 /// <param name="contextValues">Extra information about the context in which this element is being parsed.</param>
47 - public override void ParseElement(XElement parentElement, XElement element, IDictionary<string, string> context)
40 + public override void ParseElement(Intermediate intermediate, IntermediateSection section, XElement parentElement, XElement element, IDictionary<string, string> context)
41 {
42 switch (parentElement.Name.LocalName)
43 {
@@ -56,49 +49,49 @@ namespace WixToolset.Extensions
49 switch (element.Name.LocalName)
50 {
51 case "ComPlusPartition":
59 - this.ParseComPlusPartitionElement(element, componentId, win64);
52 + this.ParseComPlusPartitionElement(intermediate, section, element, componentId, win64);
53 break;
54 case "ComPlusPartitionRole":
62 - this.ParseComPlusPartitionRoleElement(element, componentId, null);
55 + this.ParseComPlusPartitionRoleElement(intermediate, section, element, componentId, null);
56 break;
57 case "ComPlusUserInPartitionRole":
65 - this.ParseComPlusUserInPartitionRoleElement(element, componentId, null);
58 + this.ParseComPlusUserInPartitionRoleElement(intermediate, section, element, componentId, null);
59 break;
60 case "ComPlusGroupInPartitionRole":
68 - this.ParseComPlusGroupInPartitionRoleElement(element, componentId, null);
61 + this.ParseComPlusGroupInPartitionRoleElement(intermediate, section, element, componentId, null);
62 break;
63 case "ComPlusPartitionUser":
71 - this.ParseComPlusPartitionUserElement(element, componentId, null);
64 + this.ParseComPlusPartitionUserElement(intermediate, section, element, componentId, null);
65 break;
66 case "ComPlusApplication":
74 - this.ParseComPlusApplicationElement(element, componentId, win64, null);
67 + this.ParseComPlusApplicationElement(intermediate, section, element, componentId, win64, null);
68 break;
69 case "ComPlusApplicationRole":
77 - this.ParseComPlusApplicationRoleElement(element, componentId, null);
70 + this.ParseComPlusApplicationRoleElement(intermediate, section, element, componentId, null);
71 break;
72 case "ComPlusUserInApplicationRole":
80 - this.ParseComPlusUserInApplicationRoleElement(element, componentId, null);
73 + this.ParseComPlusUserInApplicationRoleElement(intermediate, section, element, componentId, null);
74 break;
75 case "ComPlusGroupInApplicationRole":
83 - this.ParseComPlusGroupInApplicationRoleElement(element, componentId, null);
76 + this.ParseComPlusGroupInApplicationRoleElement(intermediate, section, element, componentId, null);
77 break;
78 case "ComPlusAssembly":
86 - this.ParseComPlusAssemblyElement(element, componentId, win64, null);
79 + this.ParseComPlusAssemblyElement(intermediate, section, element, componentId, win64, null);
80 break;
81 case "ComPlusRoleForComponent":
89 - this.ParseComPlusRoleForComponentElement(element, componentId, null);
82 + this.ParseComPlusRoleForComponentElement(intermediate, section, element, componentId, null);
83 break;
84 case "ComPlusRoleForInterface":
92 - this.ParseComPlusRoleForInterfaceElement(element, componentId, null);
85 + this.ParseComPlusRoleForInterfaceElement(intermediate, section, element, componentId, null);
86 break;
87 case "ComPlusRoleForMethod":
95 - this.ParseComPlusRoleForMethodElement(element, componentId, null);
88 + this.ParseComPlusRoleForMethodElement(intermediate, section, element, componentId, null);
89 break;
90 case "ComPlusSubscription":
98 - this.ParseComPlusSubscriptionElement(element, componentId, null);
91 + this.ParseComPlusSubscriptionElement(intermediate, section, element, componentId, null);
92 break;
93 default:
101 - this.Core.UnexpectedElement(parentElement, element);
94 + this.ParseHelper.UnexpectedElement(parentElement, element);
95 break;
96 }
97 break;
@@ -108,24 +101,24 @@ namespace WixToolset.Extensions
101 switch (element.Name.LocalName)
102 {
103 case "ComPlusPartition":
111 - this.ParseComPlusPartitionElement(element, null, false);
104 + this.ParseComPlusPartitionElement(intermediate, section, element, null, false);
105 break;
106 case "ComPlusPartitionRole":
114 - this.ParseComPlusPartitionRoleElement(element, null, null);
107 + this.ParseComPlusPartitionRoleElement(intermediate, section, element, null, null);
108 break;
109 case "ComPlusApplication":
117 - this.ParseComPlusApplicationElement(element, null, false, null);
110 + this.ParseComPlusApplicationElement(intermediate, section, element, null, false, null);
111 break;
112 case "ComPlusApplicationRole":
120 - this.ParseComPlusApplicationRoleElement(element, null, null);
113 + this.ParseComPlusApplicationRoleElement(intermediate, section, element, null, null);
114 break;
115 default:
123 - this.Core.UnexpectedElement(parentElement, element);
116 + this.ParseHelper.UnexpectedElement(parentElement, element);
117 break;
118 }
119 break;
120 default:
128 - this.Core.UnexpectedElement(parentElement, element);
121 + this.ParseHelper.UnexpectedElement(parentElement, element);
122 break;
123 }
124 }
@@ -135,9 +128,9 @@ namespace WixToolset.Extensions
128 /// </summary>
129 /// <param name="node">Element to parse.</param>
130 /// <param name="componentKey">Identifier of parent component.</param>
138 - private void ParseComPlusPartitionElement(XElement node, string componentKey, bool win64)
131 + private void ParseComPlusPartitionElement(Intermediate intermediate, IntermediateSection section, XElement node, string componentKey, bool win64)
132 {
140 - SourceLineNumber sourceLineNumbers = Preprocessor.GetSourceLineNumbers(node);
133 + SourceLineNumber sourceLineNumbers = this.ParseHelper.GetSourceLineNumbers(node);
134
135 string key = null;
136 string id = null;
@@ -152,49 +145,49 @@ namespace WixToolset.Extensions
145 switch (attrib.Name.LocalName)
146 {
147 case "Id":
155 - key = this.Core.GetAttributeIdentifierValue(sourceLineNumbers, attrib);
148 + key = this.ParseHelper.GetAttributeIdentifierValue(sourceLineNumbers, attrib);
149 break;
150 case "PartitionId":
158 - id = TryFormatGuidValue(this.Core.GetAttributeValue(sourceLineNumbers, attrib));
151 + id = this.TryFormatGuidValue(this.ParseHelper.GetAttributeValue(sourceLineNumbers, attrib));
152 break;
153 case "Name":
161 - name = this.Core.GetAttributeValue(sourceLineNumbers, attrib);
154 + name = this.ParseHelper.GetAttributeValue(sourceLineNumbers, attrib);
155 break;
156 case "Changeable":
164 - this.Core.OnMessage(WixWarnings.DeprecatedAttribute(sourceLineNumbers, node.Name.LocalName, attrib.Name.LocalName));
157 + this.Messaging.Write(WarningMessages.DeprecatedAttribute(sourceLineNumbers, node.Name.LocalName, attrib.Name.LocalName));
158 break;
159 case "Deleteable":
160 if (null == componentKey)
161 {
169 - this.Core.OnMessage(ComPlusErrors.IllegalAttributeWithoutComponent(sourceLineNumbers, node.Name.LocalName, attrib.Name.LocalName));
162 + this.Messaging.Write(ComPlusErrors.IllegalAttributeWithoutComponent(sourceLineNumbers, node.Name.LocalName, attrib.Name.LocalName));
163 }
171 - properties["Deleteable"] = YesNoType.Yes == this.Core.GetAttributeYesNoValue(sourceLineNumbers, attrib) ? "1" : "0";
164 + properties["Deleteable"] = YesNoType.Yes == this.ParseHelper.GetAttributeYesNoValue(sourceLineNumbers, attrib) ? "1" : "0";
165 break;
166 case "Description":
167 if (null == componentKey)
168 {
176 - this.Core.OnMessage(ComPlusErrors.IllegalAttributeWithoutComponent(sourceLineNumbers, node.Name.LocalName, attrib.Name.LocalName));
169 + this.Messaging.Write(ComPlusErrors.IllegalAttributeWithoutComponent(sourceLineNumbers, node.Name.LocalName, attrib.Name.LocalName));
170 }
178 - properties["Description"] = this.Core.GetAttributeValue(sourceLineNumbers, attrib);
171 + properties["Description"] = this.ParseHelper.GetAttributeValue(sourceLineNumbers, attrib);
172 break;
173 default:
181 - this.Core.UnexpectedAttribute(node, attrib);
174 + this.ParseHelper.UnexpectedAttribute(node, attrib);
175 break;
176 }
177 }
178 else
179 {
187 - this.Core.ParseExtensionAttribute(node, attrib);
180 + this.ParseHelper.ParseExtensionAttribute(this.Context.Extensions, intermediate, section, node, attrib);
181 }
182 }
183
184 if (null != componentKey && null == name)
185 {
193 - this.Core.OnMessage(ComPlusErrors.RequiredAttributeUnderComponent(sourceLineNumbers, node.Name.LocalName, "Name"));
186 + this.Messaging.Write(ComPlusErrors.RequiredAttributeUnderComponent(sourceLineNumbers, node.Name.LocalName, "Name"));
187 }
188 if (null == componentKey && null == id && null == name)
189 {
197 - this.Core.OnMessage(ComPlusErrors.RequiredAttributeNotUnderComponent(sourceLineNumbers, node.Name.LocalName, "Id", "Name"));
190 + this.Messaging.Write(ComPlusErrors.RequiredAttributeNotUnderComponent(sourceLineNumbers, node.Name.LocalName, "Id", "Name"));
191 }
192
193 foreach (XElement child in node.Elements())
@@ -204,58 +197,58 @@ namespace WixToolset.Extensions
197 switch (child.Name.LocalName)
198 {
199 case "ComPlusPartitionRole":
207 - this.ParseComPlusPartitionRoleElement(child, componentKey, key);
200 + this.ParseComPlusPartitionRoleElement(intermediate, section, child, componentKey, key);
201 break;
202 case "ComPlusPartitionUser":
210 - this.ParseComPlusPartitionUserElement(child, componentKey, key);
203 + this.ParseComPlusPartitionUserElement(intermediate, section, child, componentKey, key);
204 break;
205 case "ComPlusApplication":
213 - this.ParseComPlusApplicationElement(child, componentKey, win64, key);
206 + this.ParseComPlusApplicationElement(intermediate, section, child, componentKey, win64, key);
207 break;
208 default:
216 - this.Core.UnexpectedElement(node, child);
209 + this.ParseHelper.UnexpectedElement(node, child);
210 break;
211 }
212 }
213 else
214 {
222 - this.Core.ParseExtensionElement(node, child);
215 + this.ParseHelper.ParseExtensionElement(this.Context.Extensions, intermediate, section, node, child);
216 }
217 }
218
226 - Row row = this.Core.CreateRow(sourceLineNumbers, "ComPlusPartition");
227 - row[0] = key;
228 - row[1] = componentKey;
229 - row[2] = id;
230 - row[3] = name;
219 + var row = this.ParseHelper.CreateRow(section, sourceLineNumbers, "ComPlusPartition");
220 + row.Set(0, key);
221 + row.Set(1, componentKey);
222 + row.Set(2, id);
223 + row.Set(3, name);
224
225 IDictionaryEnumerator propertiesEnumerator = properties.GetEnumerator();
226 while (propertiesEnumerator.MoveNext())
227 {
235 - Row propertyRow = this.Core.CreateRow(sourceLineNumbers, "ComPlusPartitionProperty");
236 - propertyRow[0] = key;
237 - propertyRow[1] = (string)propertiesEnumerator.Key;
238 - propertyRow[2] = (string)propertiesEnumerator.Value;
228 + var propertyRow = this.ParseHelper.CreateRow(section, sourceLineNumbers, "ComPlusPartitionProperty");
229 + propertyRow.Set(0, key);
230 + propertyRow.Set(1, (string)propertiesEnumerator.Key);
231 + propertyRow.Set(2, (string)propertiesEnumerator.Value);
232 }
233
234 if (componentKey != null)
235 {
236 if (win64)
237 {
245 - if (this.Core.CurrentPlatform == Platform.IA64)
238 + if (this.Context.Platform == Platform.IA64)
239 {
247 - this.Core.OnMessage(WixErrors.UnsupportedPlatformForElement(sourceLineNumbers, "ia64", node.Name.LocalName));
240 + this.Messaging.Write(ErrorMessages.UnsupportedPlatformForElement(sourceLineNumbers, "ia64", node.Name.LocalName));
241 }
242 else
243 {
251 - this.Core.CreateSimpleReference(sourceLineNumbers, "CustomAction", "ConfigureComPlusInstall_x64");
252 - this.Core.CreateSimpleReference(sourceLineNumbers, "CustomAction", "ConfigureComPlusUninstall_x64");
244 + this.ParseHelper.CreateSimpleReference(section, sourceLineNumbers, "CustomAction", "ConfigureComPlusInstall_x64");
245 + this.ParseHelper.CreateSimpleReference(section, sourceLineNumbers, "CustomAction", "ConfigureComPlusUninstall_x64");
246 }
247 }
248 else
249 {
257 - this.Core.CreateSimpleReference(sourceLineNumbers, "CustomAction", "ConfigureComPlusInstall");
258 - this.Core.CreateSimpleReference(sourceLineNumbers, "CustomAction", "ConfigureComPlusUninstall");
250 + this.ParseHelper.CreateSimpleReference(section, sourceLineNumbers, "CustomAction", "ConfigureComPlusInstall");
251 + this.ParseHelper.CreateSimpleReference(section, sourceLineNumbers, "CustomAction", "ConfigureComPlusUninstall");
252 }
253 }
254 }
@@ -266,9 +259,9 @@ namespace WixToolset.Extensions
259 /// <param name="node">Element to parse.</param>
260 /// <param name="componentKey">Identifier of parent component.</param>
261 /// <param name="applicationKey">Optional identifier of parent application.</param>
269 - private void ParseComPlusPartitionRoleElement(XElement node, string componentKey, string partitionKey)
262 + private void ParseComPlusPartitionRoleElement(Intermediate intermediate, IntermediateSection section, XElement node, string componentKey, string partitionKey)
263 {
271 - SourceLineNumber sourceLineNumbers = Preprocessor.GetSourceLineNumbers(node);
264 + SourceLineNumber sourceLineNumbers = this.ParseHelper.GetSourceLineNumbers(node);
265
266 string key = null;
267 string name = null;
@@ -280,33 +273,33 @@ namespace WixToolset.Extensions
273 switch (attrib.Name.LocalName)
274 {
275 case "Id":
283 - key = this.Core.GetAttributeIdentifierValue(sourceLineNumbers, attrib);
276 + key = this.ParseHelper.GetAttributeIdentifierValue(sourceLineNumbers, attrib);
277 break;
278 case "Partition":
279 if (null != partitionKey)
280 {
288 - this.Core.OnMessage(WixErrors.IllegalAttributeWhenNested(sourceLineNumbers, node.Name.LocalName, attrib.Name.LocalName, node.Parent.Name.LocalName));
281 + this.Messaging.Write(ErrorMessages.IllegalAttributeWhenNested(sourceLineNumbers, node.Name.LocalName, attrib.Name.LocalName, node.Parent.Name.LocalName));
282 }
290 - partitionKey = this.Core.GetAttributeValue(sourceLineNumbers, attrib);
291 - this.Core.CreateSimpleReference(sourceLineNumbers, "ComPlusPartition", partitionKey);
283 + partitionKey = this.ParseHelper.GetAttributeValue(sourceLineNumbers, attrib);
284 + this.ParseHelper.CreateSimpleReference(section, sourceLineNumbers, "ComPlusPartition", partitionKey);
285 break;
286 case "Name":
294 - name = this.Core.GetAttributeValue(sourceLineNumbers, attrib);
287 + name = this.ParseHelper.GetAttributeValue(sourceLineNumbers, attrib);
288 break;
289 default:
297 - this.Core.UnexpectedAttribute(node, attrib);
290 + this.ParseHelper.UnexpectedAttribute(node, attrib);
291 break;
292 }
293 }
294 else
295 {
303 - this.Core.ParseExtensionAttribute(node, attrib);
296 + this.ParseHelper.ParseExtensionAttribute(this.Context.Extensions, intermediate, section, node, attrib);
297 }
298 }
299
300 if (null == partitionKey)
301 {
309 - this.Core.OnMessage(WixErrors.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "Partition"));
302 + this.Messaging.Write(ErrorMessages.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "Partition"));
303 }
304
305 foreach (XElement child in node.Elements())
@@ -316,27 +309,27 @@ namespace WixToolset.Extensions
309 switch (child.Name.LocalName)
310 {
311 case "ComPlusUserInPartitionRole":
319 - this.ParseComPlusUserInPartitionRoleElement(child, componentKey, key);
312 + this.ParseComPlusUserInPartitionRoleElement(intermediate, section, child, componentKey, key);
313 break;
314 case "ComPlusGroupInPartitionRole":
322 - this.ParseComPlusGroupInPartitionRoleElement(child, componentKey, key);
315 + this.ParseComPlusGroupInPartitionRoleElement(intermediate, section, child, componentKey, key);
316 break;
317 default:
325 - this.Core.UnexpectedElement(node, child);
318 + this.ParseHelper.UnexpectedElement(node, child);
319 break;
320 }
321 }
322 else
323 {
331 - this.Core.ParseExtensionElement(node, child);
324 + this.ParseHelper.ParseExtensionElement(this.Context.Extensions, intermediate, section, node, child);
325 }
326 }
327
328 // add table row
336 - Row row = this.Core.CreateRow(sourceLineNumbers, "ComPlusPartitionRole");
337 - row[0] = key;
338 - row[1] = partitionKey;
339 - row[3] = name;
329 + var row = this.ParseHelper.CreateRow(section, sourceLineNumbers, "ComPlusPartitionRole");
330 + row.Set(0, key);
331 + row.Set(1, partitionKey);
332 + row.Set(3, name);
333 }
334
335 /// <summary>
@@ -345,9 +338,9 @@ namespace WixToolset.Extensions
338 /// <param name="node">Element to parse.</param>
339 /// <param name="componentKey">Identifier of parent component.</param>
340 /// <param name="applicationKey">Optional identifier of parent application role.</param>
348 - private void ParseComPlusUserInPartitionRoleElement(XElement node, string componentKey, string partitionRoleKey)
341 + private void ParseComPlusUserInPartitionRoleElement(Intermediate intermediate, IntermediateSection section, XElement node, string componentKey, string partitionRoleKey)
342 {
350 - SourceLineNumber sourceLineNumbers = Preprocessor.GetSourceLineNumbers(node);
343 + SourceLineNumber sourceLineNumbers = this.ParseHelper.GetSourceLineNumbers(node);
344
345 string key = null;
346 string user = null;
@@ -359,41 +352,41 @@ namespace WixToolset.Extensions
352 switch (attrib.Name.LocalName)
353 {
354 case "Id":
362 - key = this.Core.GetAttributeIdentifierValue(sourceLineNumbers, attrib);
355 + key = this.ParseHelper.GetAttributeIdentifierValue(sourceLineNumbers, attrib);
356 break;
357 case "PartitionRole":
358 if (null != partitionRoleKey)
359 {
367 - this.Core.OnMessage(WixErrors.IllegalAttributeWhenNested(sourceLineNumbers, node.Name.LocalName, attrib.Name.LocalName, node.Parent.Name.LocalName));
360 + this.Messaging.Write(ErrorMessages.IllegalAttributeWhenNested(sourceLineNumbers, node.Name.LocalName, attrib.Name.LocalName, node.Parent.Name.LocalName));
361 }
369 - partitionRoleKey = this.Core.GetAttributeValue(sourceLineNumbers, attrib);
370 - this.Core.CreateSimpleReference(sourceLineNumbers, "ComPlusPartitionRole", partitionRoleKey);
362 + partitionRoleKey = this.ParseHelper.GetAttributeValue(sourceLineNumbers, attrib);
363 + this.ParseHelper.CreateSimpleReference(section, sourceLineNumbers, "ComPlusPartitionRole", partitionRoleKey);
364 break;
365 case "User":
373 - user = this.Core.GetAttributeValue(sourceLineNumbers, attrib);
374 - this.Core.CreateSimpleReference(sourceLineNumbers, "User", user);
366 + user = this.ParseHelper.GetAttributeValue(sourceLineNumbers, attrib);
367 + this.ParseHelper.CreateSimpleReference(section, sourceLineNumbers, "User", user);
368 break;
369 default:
377 - this.Core.UnexpectedAttribute(node, attrib);
370 + this.ParseHelper.UnexpectedAttribute(node, attrib);
371 break;
372 }
373 }
374 else
375 {
383 - this.Core.ParseExtensionAttribute(node, attrib);
376 + this.ParseHelper.ParseExtensionAttribute(this.Context.Extensions, intermediate, section, node, attrib);
377 }
378 }
379
380 if (null == partitionRoleKey)
381 {
389 - this.Core.OnMessage(WixErrors.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "PartitionRole"));
382 + this.Messaging.Write(ErrorMessages.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "PartitionRole"));
383 }
384
392 - Row row = this.Core.CreateRow(sourceLineNumbers, "ComPlusUserInPartitionRole");
393 - row[0] = key;
394 - row[1] = partitionRoleKey;
395 - row[2] = componentKey;
396 - row[3] = user;
385 + var row = this.ParseHelper.CreateRow(section, sourceLineNumbers, "ComPlusUserInPartitionRole");
386 + row.Set(0, key);
387 + row.Set(1, partitionRoleKey);
388 + row.Set(2, componentKey);
389 + row.Set(3, user);
390 }
391
392 /// <summary>
@@ -402,9 +395,9 @@ namespace WixToolset.Extensions
395 /// <param name="node">Element to parse.</param>
396 /// <param name="componentKey">Identifier of parent component.</param>
397 /// <param name="applicationKey">Optional identifier of parent application role.</param>
405 - private void ParseComPlusGroupInPartitionRoleElement(XElement node, string componentKey, string partitionRoleKey)
398 + private void ParseComPlusGroupInPartitionRoleElement(Intermediate intermediate, IntermediateSection section, XElement node, string componentKey, string partitionRoleKey)
399 {
407 - SourceLineNumber sourceLineNumbers = Preprocessor.GetSourceLineNumbers(node);
400 + SourceLineNumber sourceLineNumbers = this.ParseHelper.GetSourceLineNumbers(node);
401
402 string key = null;
403 string group = null;
@@ -416,41 +409,41 @@ namespace WixToolset.Extensions
409 switch (attrib.Name.LocalName)
410 {
411 case "Id":
419 - key = this.Core.GetAttributeIdentifierValue(sourceLineNumbers, attrib);
412 + key = this.ParseHelper.GetAttributeIdentifierValue(sourceLineNumbers, attrib);
413 break;
414 case "PartitionRole":
415 if (null != partitionRoleKey)
416 {
424 - this.Core.OnMessage(WixErrors.IllegalAttributeWhenNested(sourceLineNumbers, node.Name.LocalName, attrib.Name.LocalName, node.Parent.Name.LocalName));
417 + this.Messaging.Write(ErrorMessages.IllegalAttributeWhenNested(sourceLineNumbers, node.Name.LocalName, attrib.Name.LocalName, node.Parent.Name.LocalName));
418 }
426 - partitionRoleKey = this.Core.GetAttributeValue(sourceLineNumbers, attrib);
427 - this.Core.CreateSimpleReference(sourceLineNumbers, "ComPlusPartitionRole", partitionRoleKey);
419 + partitionRoleKey = this.ParseHelper.GetAttributeValue(sourceLineNumbers, attrib);
420 + this.ParseHelper.CreateSimpleReference(section, sourceLineNumbers, "ComPlusPartitionRole", partitionRoleKey);
421 break;
422 case "Group":
430 - group = this.Core.GetAttributeValue(sourceLineNumbers, attrib);
431 - this.Core.CreateSimpleReference(sourceLineNumbers, "Group", group);
423 + group = this.ParseHelper.GetAttributeValue(sourceLineNumbers, attrib);
424 + this.ParseHelper.CreateSimpleReference(section, sourceLineNumbers, "Group", group);
425 break;
426 default:
434 - this.Core.UnexpectedAttribute(node, attrib);
427 + this.ParseHelper.UnexpectedAttribute(node, attrib);
428 break;
429 }
430 }
431 else
432 {
440 - this.Core.ParseExtensionAttribute(node, attrib);
433 + this.ParseHelper.ParseExtensionAttribute(this.Context.Extensions, intermediate, section, node, attrib);
434 }
435 }
436
437 if (null == partitionRoleKey)
438 {
446 - this.Core.OnMessage(WixErrors.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "PartitionRole"));
439 + this.Messaging.Write(ErrorMessages.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "PartitionRole"));
440 }
441
449 - Row row = this.Core.CreateRow(sourceLineNumbers, "ComPlusGroupInPartitionRole");
450 - row[0] = key;
451 - row[1] = partitionRoleKey;
452 - row[2] = componentKey;
453 - row[3] = group;
442 + var row = this.ParseHelper.CreateRow(section, sourceLineNumbers, "ComPlusGroupInPartitionRole");
443 + row.Set(0, key);
444 + row.Set(1, partitionRoleKey);
445 + row.Set(2, componentKey);
446 + row.Set(3, group);
447 }
448
449 /// <summary>
@@ -458,9 +451,9 @@ namespace WixToolset.Extensions
451 /// </summary>
452 /// <param name="node">Element to parse.</param>
453 /// <param name="componentKey">Identifier of parent component.</param>
461 - private void ParseComPlusPartitionUserElement(XElement node, string componentKey, string partitionKey)
454 + private void ParseComPlusPartitionUserElement(Intermediate intermediate, IntermediateSection section, XElement node, string componentKey, string partitionKey)
455 {
463 - SourceLineNumber sourceLineNumbers = Preprocessor.GetSourceLineNumbers(node);
456 + SourceLineNumber sourceLineNumbers = this.ParseHelper.GetSourceLineNumbers(node);
457
458 string key = null;
459 string user = null;
@@ -472,41 +465,41 @@ namespace WixToolset.Extensions
465 switch (attrib.Name.LocalName)
466 {
467 case "Id":
475 - key = this.Core.GetAttributeIdentifierValue(sourceLineNumbers, attrib);
468 + key = this.ParseHelper.GetAttributeIdentifierValue(sourceLineNumbers, attrib);
469 break;
470 case "Partition":
471 if (null != partitionKey)
472 {
480 - this.Core.OnMessage(WixErrors.IllegalAttributeWhenNested(sourceLineNumbers, node.Name.LocalName, attrib.Name.LocalName, node.Parent.Name.LocalName));
473 + this.Messaging.Write(ErrorMessages.IllegalAttributeWhenNested(sourceLineNumbers, node.Name.LocalName, attrib.Name.LocalName, node.Parent.Name.LocalName));
474 }
482 - partitionKey = this.Core.GetAttributeValue(sourceLineNumbers, attrib);
483 - this.Core.CreateSimpleReference(sourceLineNumbers, "ComPlusPartition", partitionKey);
475 + partitionKey = this.ParseHelper.GetAttributeValue(sourceLineNumbers, attrib);
476 + this.ParseHelper.CreateSimpleReference(section, sourceLineNumbers, "ComPlusPartition", partitionKey);
477 break;
478 case "User":
486 - user = this.Core.GetAttributeValue(sourceLineNumbers, attrib);
487 - this.Core.CreateSimpleReference(sourceLineNumbers, "User", user);
479 + user = this.ParseHelper.GetAttributeValue(sourceLineNumbers, attrib);
480 + this.ParseHelper.CreateSimpleReference(section, sourceLineNumbers, "User", user);
481 break;
482 default:
490 - this.Core.UnexpectedAttribute(node, attrib);
483 + this.ParseHelper.UnexpectedAttribute(node, attrib);
484 break;
485 }
486 }
487 else
488 {
496 - this.Core.ParseExtensionAttribute(node, attrib);
489 + this.ParseHelper.ParseExtensionAttribute(this.Context.Extensions, intermediate, section, node, attrib);
490 }
491 }
492
493 if (null == partitionKey)
494 {
502 - this.Core.OnMessage(WixErrors.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "Partition"));
495 + this.Messaging.Write(ErrorMessages.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "Partition"));
496 }
497
505 - Row row = this.Core.CreateRow(sourceLineNumbers, "ComPlusPartitionUser");
506 - row[0] = key;
507 - row[1] = partitionKey;
508 - row[2] = componentKey;
509 - row[3] = user;
498 + var row = this.ParseHelper.CreateRow(section, sourceLineNumbers, "ComPlusPartitionUser");
499 + row.Set(0, key);
500 + row.Set(1, partitionKey);
501 + row.Set(2, componentKey);
502 + row.Set(3, user);
503 }
504
505 /// <summary>
@@ -515,9 +508,9 @@ namespace WixToolset.Extensions
508 /// <param name="node">Element to parse.</param>
509 /// <param name="componentKey">Identifier of parent component.</param>
510 /// <param name="partitionKey">Optional identifier of parent partition.</param>
518 - private void ParseComPlusApplicationElement(XElement node, string componentKey, bool win64, string partitionKey)
511 + private void ParseComPlusApplicationElement(Intermediate intermediate, IntermediateSection section, XElement node, string componentKey, bool win64, string partitionKey)
512 {
520 - SourceLineNumber sourceLineNumbers = Preprocessor.GetSourceLineNumbers(node);
513 + SourceLineNumber sourceLineNumbers = this.ParseHelper.GetSourceLineNumbers(node);
514
515 string key = null;
516 string id = null;
@@ -532,35 +525,35 @@ namespace WixToolset.Extensions
525 switch (attrib.Name.LocalName)
526 {
527 case "Id":
535 - key = this.Core.GetAttributeIdentifierValue(sourceLineNumbers, attrib);
528 + key = this.ParseHelper.GetAttributeIdentifierValue(sourceLineNumbers, attrib);
529 break;
530 case "Partition":
531 if (null != partitionKey)
532 {
540 - this.Core.OnMessage(WixErrors.IllegalAttributeWhenNested(sourceLineNumbers, node.Name.LocalName, attrib.Name.LocalName, node.Parent.Name.LocalName));
533 + this.Messaging.Write(ErrorMessages.IllegalAttributeWhenNested(sourceLineNumbers, node.Name.LocalName, attrib.Name.LocalName, node.Parent.Name.LocalName));
534 }
542 - partitionKey = this.Core.GetAttributeValue(sourceLineNumbers, attrib);
543 - this.Core.CreateSimpleReference(sourceLineNumbers, "ComPlusPartition", partitionKey);
535 + partitionKey = this.ParseHelper.GetAttributeValue(sourceLineNumbers, attrib);
536 + this.ParseHelper.CreateSimpleReference(section, sourceLineNumbers, "ComPlusPartition", partitionKey);
537 break;
538 case "ApplicationId":
546 - id = TryFormatGuidValue(this.Core.GetAttributeValue(sourceLineNumbers, attrib));
539 + id = this.TryFormatGuidValue(this.ParseHelper.GetAttributeValue(sourceLineNumbers, attrib));
540 break;
541 case "Name":
549 - name = this.Core.GetAttributeValue(sourceLineNumbers, attrib);
542 + name = this.ParseHelper.GetAttributeValue(sourceLineNumbers, attrib);
543 break;
544 case "ThreeGigSupportEnabled":
545 if (null == componentKey)
546 {
554 - this.Core.OnMessage(ComPlusErrors.IllegalAttributeWithoutComponent(sourceLineNumbers, node.Name.LocalName, attrib.Name.LocalName));
547 + this.Messaging.Write(ComPlusErrors.IllegalAttributeWithoutComponent(sourceLineNumbers, node.Name.LocalName, attrib.Name.LocalName));
548 }
556 - properties["3GigSupportEnabled"] = YesNoType.Yes == this.Core.GetAttributeYesNoValue(sourceLineNumbers, attrib) ? "1" : "0";
549 + properties["3GigSupportEnabled"] = YesNoType.Yes == this.ParseHelper.GetAttributeYesNoValue(sourceLineNumbers, attrib) ? "1" : "0";
550 break;
551 case "AccessChecksLevel":
552 if (null == componentKey)
553 {
561 - this.Core.OnMessage(ComPlusErrors.IllegalAttributeWithoutComponent(sourceLineNumbers, node.Name.LocalName, attrib.Name.LocalName));
554 + this.Messaging.Write(ComPlusErrors.IllegalAttributeWithoutComponent(sourceLineNumbers, node.Name.LocalName, attrib.Name.LocalName));
555 }
563 - string accessChecksLevelValue = this.Core.GetAttributeValue(sourceLineNumbers, attrib);
556 + string accessChecksLevelValue = this.ParseHelper.GetAttributeValue(sourceLineNumbers, attrib);
557 switch (accessChecksLevelValue)
558 {
559 case "applicationLevel":
@@ -570,16 +563,16 @@ namespace WixToolset.Extensions
563 properties["AccessChecksLevel"] = "1";
564 break;
565 default:
573 - this.Core.OnMessage(WixErrors.IllegalAttributeValue(sourceLineNumbers, "ComPlusApplication", "AccessChecksLevel", accessChecksLevelValue, "applicationLevel", "applicationComponentLevel"));
566 + this.Messaging.Write(ErrorMessages.IllegalAttributeValue(sourceLineNumbers, "ComPlusApplication", "AccessChecksLevel", accessChecksLevelValue, "applicationLevel", "applicationComponentLevel"));
567 break;
568 }
569 break;
570 case "Activation":
571 if (null == componentKey)
572 {
580 - this.Core.OnMessage(ComPlusErrors.IllegalAttributeWithoutComponent(sourceLineNumbers, node.Name.LocalName, attrib.Name.LocalName));
573 + this.Messaging.Write(ComPlusErrors.IllegalAttributeWithoutComponent(sourceLineNumbers, node.Name.LocalName, attrib.Name.LocalName));
574 }
582 - string activationValue = this.Core.GetAttributeValue(sourceLineNumbers, attrib);
575 + string activationValue = this.ParseHelper.GetAttributeValue(sourceLineNumbers, attrib);
576 switch (activationValue)
577 {
578 case "inproc":
@@ -589,30 +582,30 @@ namespace WixToolset.Extensions
582 properties["Activation"] = "Local";
583 break;
584 default:
592 - this.Core.OnMessage(WixErrors.IllegalAttributeValue(sourceLineNumbers, "ComPlusApplication", "Activation", activationValue, "inproc", "local"));
585 + this.Messaging.Write(ErrorMessages.IllegalAttributeValue(sourceLineNumbers, "ComPlusApplication", "Activation", activationValue, "inproc", "local"));
586 break;
587 }
588 break;
589 case "ApplicationAccessChecksEnabled":
590 if (null == componentKey)
591 {
599 - this.Core.OnMessage(ComPlusErrors.IllegalAttributeWithoutComponent(sourceLineNumbers, node.Name.LocalName, attrib.Name.LocalName));
592 + this.Messaging.Write(ComPlusErrors.IllegalAttributeWithoutComponent(sourceLineNumbers, node.Name.LocalName, attrib.Name.LocalName));
593 }
601 - properties["ApplicationAccessChecksEnabled"] = YesNoType.Yes == this.Core.GetAttributeYesNoValue(sourceLineNumbers, attrib) ? "1" : "0";
594 + properties["ApplicationAccessChecksEnabled"] = YesNoType.Yes == this.ParseHelper.GetAttributeYesNoValue(sourceLineNumbers, attrib) ? "1" : "0";
595 break;
596 case "ApplicationDirectory":
597 if (null == componentKey)
598 {
606 - this.Core.OnMessage(ComPlusErrors.IllegalAttributeWithoutComponent(sourceLineNumbers, node.Name.LocalName, attrib.Name.LocalName));
599 + this.Messaging.Write(ComPlusErrors.IllegalAttributeWithoutComponent(sourceLineNumbers, node.Name.LocalName, attrib.Name.LocalName));
600 }
608 - properties["ApplicationDirectory"] = this.Core.GetAttributeValue(sourceLineNumbers, attrib);
601 + properties["ApplicationDirectory"] = this.ParseHelper.GetAttributeValue(sourceLineNumbers, attrib);
602 break;
603 case "Authentication":
604 if (null == componentKey)
605 {
613 - this.Core.OnMessage(ComPlusErrors.IllegalAttributeWithoutComponent(sourceLineNumbers, node.Name.LocalName, attrib.Name.LocalName));
606 + this.Messaging.Write(ComPlusErrors.IllegalAttributeWithoutComponent(sourceLineNumbers, node.Name.LocalName, attrib.Name.LocalName));
607 }
615 - string authenticationValue = this.Core.GetAttributeValue(sourceLineNumbers, attrib);
608 + string authenticationValue = this.ParseHelper.GetAttributeValue(sourceLineNumbers, attrib);
609 switch (authenticationValue)
610 {
611 case "default":
@@ -637,16 +630,16 @@ namespace WixToolset.Extensions
630 properties["Authentication"] = "6";
631 break;
632 default:
640 - this.Core.OnMessage(WixErrors.IllegalAttributeValue(sourceLineNumbers, "ComPlusApplication", "Authentication", authenticationValue, "default", "none", "connect", "call", "packet", "integrity", "privacy"));
633 + this.Messaging.Write(ErrorMessages.IllegalAttributeValue(sourceLineNumbers, "ComPlusApplication", "Authentication", authenticationValue, "default", "none", "connect", "call", "packet", "integrity", "privacy"));
634 break;
635 }
636 break;
637 case "AuthenticationCapability":
638 if (null == componentKey)
639 {
647 - this.Core.OnMessage(ComPlusErrors.IllegalAttributeWithoutComponent(sourceLineNumbers, node.Name.LocalName, attrib.Name.LocalName));
640 + this.Messaging.Write(ComPlusErrors.IllegalAttributeWithoutComponent(sourceLineNumbers, node.Name.LocalName, attrib.Name.LocalName));
641 }
649 - string authenticationCapabilityValue = this.Core.GetAttributeValue(sourceLineNumbers, attrib);
642 + string authenticationCapabilityValue = this.ParseHelper.GetAttributeValue(sourceLineNumbers, attrib);
643 switch (authenticationCapabilityValue)
644 {
645 case "none":
@@ -662,110 +655,110 @@ namespace WixToolset.Extensions
655 properties["AuthenticationCapability"] = "64";
656 break;
657 default:
665 - this.Core.OnMessage(WixErrors.IllegalAttributeValue(sourceLineNumbers, "ComPlusApplication", "AuthenticationCapability", authenticationCapabilityValue, "none", "secureReference", "staticCloaking", "dynamicCloaking"));
658 + this.Messaging.Write(ErrorMessages.IllegalAttributeValue(sourceLineNumbers, "ComPlusApplication", "AuthenticationCapability", authenticationCapabilityValue, "none", "secureReference", "staticCloaking", "dynamicCloaking"));
659 break;
660 }
661 break;
662 case "Changeable":
670 - this.Core.OnMessage(WixWarnings.DeprecatedAttribute(sourceLineNumbers, node.Name.LocalName, attrib.Name.LocalName));
663 + this.Messaging.Write(WarningMessages.DeprecatedAttribute(sourceLineNumbers, node.Name.LocalName, attrib.Name.LocalName));
664 break;
665 case "CommandLine":
666 if (null == componentKey)
667 {
675 - this.Core.OnMessage(ComPlusErrors.IllegalAttributeWithoutComponent(sourceLineNumbers, node.Name.LocalName, attrib.Name.LocalName));
668 + this.Messaging.Write(ComPlusErrors.IllegalAttributeWithoutComponent(sourceLineNumbers, node.Name.LocalName, attrib.Name.LocalName));
669 }
677 - properties["CommandLine"] = this.Core.GetAttributeValue(sourceLineNumbers, attrib);
670 + properties["CommandLine"] = this.ParseHelper.GetAttributeValue(sourceLineNumbers, attrib);
671 break;
672 case "ConcurrentApps":
673 if (null == componentKey)
674 {
682 - this.Core.OnMessage(ComPlusErrors.IllegalAttributeWithoutComponent(sourceLineNumbers, node.Name.LocalName, attrib.Name.LocalName));
675 + this.Messaging.Write(ComPlusErrors.IllegalAttributeWithoutComponent(sourceLineNumbers, node.Name.LocalName, attrib.Name.LocalName));
676 }
684 - properties["ConcurrentApps"] = this.Core.GetAttributeValue(sourceLineNumbers, attrib);
677 + properties["ConcurrentApps"] = this.ParseHelper.GetAttributeValue(sourceLineNumbers, attrib);
678 break;
679 case "CreatedBy":
680 if (null == componentKey)
681 {
689 - this.Core.OnMessage(ComPlusErrors.IllegalAttributeWithoutComponent(sourceLineNumbers, node.Name.LocalName, attrib.Name.LocalName));
682 + this.Messaging.Write(ComPlusErrors.IllegalAttributeWithoutComponent(sourceLineNumbers, node.Name.LocalName, attrib.Name.LocalName));
683 }
691 - properties["CreatedBy"] = this.Core.GetAttributeValue(sourceLineNumbers, attrib);
684 + properties["CreatedBy"] = this.ParseHelper.GetAttributeValue(sourceLineNumbers, attrib);
685 break;
686 case "CRMEnabled":
687 if (null == componentKey)
688 {
696 - this.Core.OnMessage(ComPlusErrors.IllegalAttributeWithoutComponent(sourceLineNumbers, node.Name.LocalName, attrib.Name.LocalName));
689 + this.Messaging.Write(ComPlusErrors.IllegalAttributeWithoutComponent(sourceLineNumbers, node.Name.LocalName, attrib.Name.LocalName));
690 }
698 - properties["CRMEnabled"] = YesNoType.Yes == this.Core.GetAttributeYesNoValue(sourceLineNumbers, attrib) ? "1" : "0";
691 + properties["CRMEnabled"] = YesNoType.Yes == this.ParseHelper.GetAttributeYesNoValue(sourceLineNumbers, attrib) ? "1" : "0";
692 break;
693 case "CRMLogFile":
694 if (null == componentKey)
695 {
703 - this.Core.OnMessage(ComPlusErrors.IllegalAttributeWithoutComponent(sourceLineNumbers, node.Name.LocalName, attrib.Name.LocalName));
696 + this.Messaging.Write(ComPlusErrors.IllegalAttributeWithoutComponent(sourceLineNumbers, node.Name.LocalName, attrib.Name.LocalName));
697 }
705 - properties["CRMLogFile"] = this.Core.GetAttributeValue(sourceLineNumbers, attrib);
698 + properties["CRMLogFile"] = this.ParseHelper.GetAttributeValue(sourceLineNumbers, attrib);
699 break;
700 case "Deleteable":
701 if (null == componentKey)
702 {
710 - this.Core.OnMessage(ComPlusErrors.IllegalAttributeWithoutComponent(sourceLineNumbers, node.Name.LocalName, attrib.Name.LocalName));
703 + this.Messaging.Write(ComPlusErrors.IllegalAttributeWithoutComponent(sourceLineNumbers, node.Name.LocalName, attrib.Name.LocalName));
704 }
712 - properties["Deleteable"] = YesNoType.Yes == this.Core.GetAttributeYesNoValue(sourceLineNumbers, attrib) ? "1" : "0";
705 + properties["Deleteable"] = YesNoType.Yes == this.ParseHelper.GetAttributeYesNoValue(sourceLineNumbers, attrib) ? "1" : "0";
706 break;
707 case "Description":
708 if (null == componentKey)
709 {
717 - this.Core.OnMessage(ComPlusErrors.IllegalAttributeWithoutComponent(sourceLineNumbers, node.Name.LocalName, attrib.Name.LocalName));
710 + this.Messaging.Write(ComPlusErrors.IllegalAttributeWithoutComponent(sourceLineNumbers, node.Name.LocalName, attrib.Name.LocalName));
711 }
719 - properties["Description"] = this.Core.GetAttributeValue(sourceLineNumbers, attrib);
712 + properties["Description"] = this.ParseHelper.GetAttributeValue(sourceLineNumbers, attrib);
713 break;
714 case "DumpEnabled":
715 if (null == componentKey)
716 {
724 - this.Core.OnMessage(ComPlusErrors.IllegalAttributeWithoutComponent(sourceLineNumbers, node.Name.LocalName, attrib.Name.LocalName));
717 + this.Messaging.Write(ComPlusErrors.IllegalAttributeWithoutComponent(sourceLineNumbers, node.Name.LocalName, attrib.Name.LocalName));
718 }
726 - properties["DumpEnabled"] = YesNoType.Yes == this.Core.GetAttributeYesNoValue(sourceLineNumbers, attrib) ? "1" : "0";
719 + properties["DumpEnabled"] = YesNoType.Yes == this.ParseHelper.GetAttributeYesNoValue(sourceLineNumbers, attrib) ? "1" : "0";
720 break;
721 case "DumpOnException":
722 if (null == componentKey)
723 {
731 - this.Core.OnMessage(ComPlusErrors.IllegalAttributeWithoutComponent(sourceLineNumbers, node.Name.LocalName, attrib.Name.LocalName));
724 + this.Messaging.Write(ComPlusErrors.IllegalAttributeWithoutComponent(sourceLineNumbers, node.Name.LocalName, attrib.Name.LocalName));
725 }
733 - properties["DumpOnException"] = YesNoType.Yes == this.Core.GetAttributeYesNoValue(sourceLineNumbers, attrib) ? "1" : "0";
726 + properties["DumpOnException"] = YesNoType.Yes == this.ParseHelper.GetAttributeYesNoValue(sourceLineNumbers, attrib) ? "1" : "0";
727 break;
728 case "DumpOnFailfast":
729 if (null == componentKey)
730 {
738 - this.Core.OnMessage(ComPlusErrors.IllegalAttributeWithoutComponent(sourceLineNumbers, node.Name.LocalName, attrib.Name.LocalName));
731 + this.Messaging.Write(ComPlusErrors.IllegalAttributeWithoutComponent(sourceLineNumbers, node.Name.LocalName, attrib.Name.LocalName));
732 }
740 - properties["DumpOnFailfast"] = YesNoType.Yes == this.Core.GetAttributeYesNoValue(sourceLineNumbers, attrib) ? "1" : "0";
733 + properties["DumpOnFailfast"] = YesNoType.Yes == this.ParseHelper.GetAttributeYesNoValue(sourceLineNumbers, attrib) ? "1" : "0";
734 break;
735 case "DumpPath":
736 if (null == componentKey)
737 {
745 - this.Core.OnMessage(ComPlusErrors.IllegalAttributeWithoutComponent(sourceLineNumbers, node.Name.LocalName, attrib.Name.LocalName));
738 + this.Messaging.Write(ComPlusErrors.IllegalAttributeWithoutComponent(sourceLineNumbers, node.Name.LocalName, attrib.Name.LocalName));
739 }
747 - properties["DumpPath"] = this.Core.GetAttributeValue(sourceLineNumbers, attrib);
740 + properties["DumpPath"] = this.ParseHelper.GetAttributeValue(sourceLineNumbers, attrib);
741 break;
742 case "EventsEnabled":
743 if (null == componentKey)
744 {
752 - this.Core.OnMessage(ComPlusErrors.IllegalAttributeWithoutComponent(sourceLineNumbers, node.Name.LocalName, attrib.Name.LocalName));
745 + this.Messaging.Write(ComPlusErrors.IllegalAttributeWithoutComponent(sourceLineNumbers, node.Name.LocalName, attrib.Name.LocalName));
746 }
754 - properties["EventsEnabled"] = YesNoType.Yes == this.Core.GetAttributeYesNoValue(sourceLineNumbers, attrib) ? "1" : "0";
747 + properties["EventsEnabled"] = YesNoType.Yes == this.ParseHelper.GetAttributeYesNoValue(sourceLineNumbers, attrib) ? "1" : "0";
748 break;
749 case "Identity":
750 if (null == componentKey)
751 {
759 - this.Core.OnMessage(ComPlusErrors.IllegalAttributeWithoutComponent(sourceLineNumbers, node.Name.LocalName, attrib.Name.LocalName));
752 + this.Messaging.Write(ComPlusErrors.IllegalAttributeWithoutComponent(sourceLineNumbers, node.Name.LocalName, attrib.Name.LocalName));
753 }
761 - properties["Identity"] = this.Core.GetAttributeValue(sourceLineNumbers, attrib);
754 + properties["Identity"] = this.ParseHelper.GetAttributeValue(sourceLineNumbers, attrib);
755 break;
756 case "ImpersonationLevel":
757 if (null == componentKey)
758 {
766 - this.Core.OnMessage(ComPlusErrors.IllegalAttributeWithoutComponent(sourceLineNumbers, node.Name.LocalName, attrib.Name.LocalName));
759 + this.Messaging.Write(ComPlusErrors.IllegalAttributeWithoutComponent(sourceLineNumbers, node.Name.LocalName, attrib.Name.LocalName));
760 }
768 - string impersonationLevelValue = this.Core.GetAttributeValue(sourceLineNumbers, attrib);
761 + string impersonationLevelValue = this.ParseHelper.GetAttributeValue(sourceLineNumbers, attrib);
762 switch (impersonationLevelValue)
763 {
764 case "anonymous":
@@ -781,37 +774,37 @@ namespace WixToolset.Extensions
774 properties["ImpersonationLevel"] = "4";
775 break;
776 default:
784 - this.Core.OnMessage(WixErrors.IllegalAttributeValue(sourceLineNumbers, "ComPlusApplication", "ImpersonationLevel", impersonationLevelValue, "anonymous", "identify", "impersonate", "delegate"));
777 + this.Messaging.Write(ErrorMessages.IllegalAttributeValue(sourceLineNumbers, "ComPlusApplication", "ImpersonationLevel", impersonationLevelValue, "anonymous", "identify", "impersonate", "delegate"));
778 break;
779 }
780 break;
781 case "IsEnabled":
782 if (null == componentKey)
783 {
791 - this.Core.OnMessage(ComPlusErrors.IllegalAttributeWithoutComponent(sourceLineNumbers, node.Name.LocalName, attrib.Name.LocalName));
784 + this.Messaging.Write(ComPlusErrors.IllegalAttributeWithoutComponent(sourceLineNumbers, node.Name.LocalName, attrib.Name.LocalName));
785 }
793 - properties["IsEnabled"] = YesNoType.Yes == this.Core.GetAttributeYesNoValue(sourceLineNumbers, attrib) ? "1" : "0";
786 + properties["IsEnabled"] = YesNoType.Yes == this.ParseHelper.GetAttributeYesNoValue(sourceLineNumbers, attrib) ? "1" : "0";
787 break;
788 case "MaxDumpCount":
789 if (null == componentKey)
790 {
798 - this.Core.OnMessage(ComPlusErrors.IllegalAttributeWithoutComponent(sourceLineNumbers, node.Name.LocalName, attrib.Name.LocalName));
791 + this.Messaging.Write(ComPlusErrors.IllegalAttributeWithoutComponent(sourceLineNumbers, node.Name.LocalName, attrib.Name.LocalName));
792 }
800 - properties["MaxDumpCount"] = this.Core.GetAttributeValue(sourceLineNumbers, attrib);
793 + properties["MaxDumpCount"] = this.ParseHelper.GetAttributeValue(sourceLineNumbers, attrib);
794 break;
795 case "Password":
796 if (null == componentKey)
797 {
805 - this.Core.OnMessage(ComPlusErrors.IllegalAttributeWithoutComponent(sourceLineNumbers, node.Name.LocalName, attrib.Name.LocalName));
798 + this.Messaging.Write(ComPlusErrors.IllegalAttributeWithoutComponent(sourceLineNumbers, node.Name.LocalName, attrib.Name.LocalName));
799 }
807 - properties["Password"] = this.Core.GetAttributeValue(sourceLineNumbers, attrib);
800 + properties["Password"] = this.ParseHelper.GetAttributeValue(sourceLineNumbers, attrib);
801 break;
802 case "QCAuthenticateMsgs":
803 if (null == componentKey)
804 {
812 - this.Core.OnMessage(ComPlusErrors.IllegalAttributeWithoutComponent(sourceLineNumbers, node.Name.LocalName, attrib.Name.LocalName));
805 + this.Messaging.Write(ComPlusErrors.IllegalAttributeWithoutComponent(sourceLineNumbers, node.Name.LocalName, attrib.Name.LocalName));
806 }
814 - string qcAuthenticateMsgsValue = this.Core.GetAttributeValue(sourceLineNumbers, attrib);
807 + string qcAuthenticateMsgsValue = this.ParseHelper.GetAttributeValue(sourceLineNumbers, attrib);
808 switch (qcAuthenticateMsgsValue)
809 {
810 case "secureApps":
@@ -824,128 +817,128 @@ namespace WixToolset.Extensions
817 properties["QCAuthenticateMsgs"] = "2";
818 break;
819 default:
827 - this.Core.OnMessage(WixErrors.IllegalAttributeValue(sourceLineNumbers, "ComPlusApplication", "QCAuthenticateMsgs", qcAuthenticateMsgsValue, "secureApps", "off", "on"));
820 + this.Messaging.Write(ErrorMessages.IllegalAttributeValue(sourceLineNumbers, "ComPlusApplication", "QCAuthenticateMsgs", qcAuthenticateMsgsValue, "secureApps", "off", "on"));
821 break;
822 }
823 break;
824 case "QCListenerMaxThreads":
825 if (null == componentKey)
826 {
834 - this.Core.OnMessage(ComPlusErrors.IllegalAttributeWithoutComponent(sourceLineNumbers, node.Name.LocalName, attrib.Name.LocalName));
827 + this.Messaging.Write(ComPlusErrors.IllegalAttributeWithoutComponent(sourceLineNumbers, node.Name.LocalName, attrib.Name.LocalName));
828 }
836 - properties["QCListenerMaxThreads"] = this.Core.GetAttributeValue(sourceLineNumbers, attrib);
829 + properties["QCListenerMaxThreads"] = this.ParseHelper.GetAttributeValue(sourceLineNumbers, attrib);
830 break;
831 case "QueueListenerEnabled":
832 if (null == componentKey)
833 {
841 - this.Core.OnMessage(ComPlusErrors.IllegalAttributeWithoutComponent(sourceLineNumbers, node.Name.LocalName, attrib.Name.LocalName));
834 + this.Messaging.Write(ComPlusErrors.IllegalAttributeWithoutComponent(sourceLineNumbers, node.Name.LocalName, attrib.Name.LocalName));
835 }
843 - properties["QueueListenerEnabled"] = YesNoType.Yes == this.Core.GetAttributeYesNoValue(sourceLineNumbers, attrib) ? "1" : "0";
836 + properties["QueueListenerEnabled"] = YesNoType.Yes == this.ParseHelper.GetAttributeYesNoValue(sourceLineNumbers, attrib) ? "1" : "0";
837 break;
838 case "QueuingEnabled":
839 if (null == componentKey)
840 {
848 - this.Core.OnMessage(ComPlusErrors.IllegalAttributeWithoutComponent(sourceLineNumbers, node.Name.LocalName, attrib.Name.LocalName));
841 + this.Messaging.Write(ComPlusErrors.IllegalAttributeWithoutComponent(sourceLineNumbers, node.Name.LocalName, attrib.Name.LocalName));
842 }
850 - properties["QueuingEnabled"] = YesNoType.Yes == this.Core.GetAttributeYesNoValue(sourceLineNumbers, attrib) ? "1" : "0";
843 + properties["QueuingEnabled"] = YesNoType.Yes == this.ParseHelper.GetAttributeYesNoValue(sourceLineNumbers, attrib) ? "1" : "0";
844 break;
845 case "RecycleActivationLimit":
846 if (null == componentKey)
847 {
855 - this.Core.OnMessage(ComPlusErrors.IllegalAttributeWithoutComponent(sourceLineNumbers, node.Name.LocalName, attrib.Name.LocalName));
848 + this.Messaging.Write(ComPlusErrors.IllegalAttributeWithoutComponent(sourceLineNumbers, node.Name.LocalName, attrib.Name.LocalName));
849 }
857 - properties["RecycleActivationLimit"] = this.Core.GetAttributeValue(sourceLineNumbers, attrib);
850 + properties["RecycleActivationLimit"] = this.ParseHelper.GetAttributeValue(sourceLineNumbers, attrib);
851 break;
852 case "RecycleCallLimit":
853 if (null == componentKey)
854 {
862 - this.Core.OnMessage(ComPlusErrors.IllegalAttributeWithoutComponent(sourceLineNumbers, node.Name.LocalName, attrib.Name.LocalName));
855 + this.Messaging.Write(ComPlusErrors.IllegalAttributeWithoutComponent(sourceLineNumbers, node.Name.LocalName, attrib.Name.LocalName));
856 }
864 - properties["RecycleCallLimit"] = this.Core.GetAttributeValue(sourceLineNumbers, attrib);
857 + properties["RecycleCallLimit"] = this.ParseHelper.GetAttributeValue(sourceLineNumbers, attrib);
858 break;
859 case "RecycleExpirationTimeout":
860 if (null == componentKey)
861 {
869 - this.Core.OnMessage(ComPlusErrors.IllegalAttributeWithoutComponent(sourceLineNumbers, node.Name.LocalName, attrib.Name.LocalName));
862 + this.Messaging.Write(ComPlusErrors.IllegalAttributeWithoutComponent(sourceLineNumbers, node.Name.LocalName, attrib.Name.LocalName));
863 }
871 - properties["RecycleExpirationTimeout"] = this.Core.GetAttributeValue(sourceLineNumbers, attrib);
864 + properties["RecycleExpirationTimeout"] = this.ParseHelper.GetAttributeValue(sourceLineNumbers, attrib);
865 break;
866 case "RecycleLifetimeLimit":
867 if (null == componentKey)
868 {
876 - this.Core.OnMessage(ComPlusErrors.IllegalAttributeWithoutComponent(sourceLineNumbers, node.Name.LocalName, attrib.Name.LocalName));
869 + this.Messaging.Write(ComPlusErrors.IllegalAttributeWithoutComponent(sourceLineNumbers, node.Name.LocalName, attrib.Name.LocalName));
870 }
878 - properties["RecycleLifetimeLimit"] = this.Core.GetAttributeValue(sourceLineNumbers, attrib);
871 + properties["RecycleLifetimeLimit"] = this.ParseHelper.GetAttributeValue(sourceLineNumbers, attrib);
872 break;
873 case "RecycleMemoryLimit":
874 if (null == componentKey)
875 {
883 - this.Core.OnMessage(ComPlusErrors.IllegalAttributeWithoutComponent(sourceLineNumbers, node.Name.LocalName, attrib.Name.LocalName));
876 + this.Messaging.Write(ComPlusErrors.IllegalAttributeWithoutComponent(sourceLineNumbers, node.Name.LocalName, attrib.Name.LocalName));
877 }
885 - properties["RecycleMemoryLimit"] = this.Core.GetAttributeValue(sourceLineNumbers, attrib);
878 + properties["RecycleMemoryLimit"] = this.ParseHelper.GetAttributeValue(sourceLineNumbers, attrib);
879 break;
880 case "Replicable":
881 if (null == componentKey)
882 {
890 - this.Core.OnMessage(ComPlusErrors.IllegalAttributeWithoutComponent(sourceLineNumbers, node.Name.LocalName, attrib.Name.LocalName));
883 + this.Messaging.Write(ComPlusErrors.IllegalAttributeWithoutComponent(sourceLineNumbers, node.Name.LocalName, attrib.Name.LocalName));
884 }
892 - properties["Replicable"] = YesNoType.Yes == this.Core.GetAttributeYesNoValue(sourceLineNumbers, attrib) ? "1" : "0";
885 + properties["Replicable"] = YesNoType.Yes == this.ParseHelper.GetAttributeYesNoValue(sourceLineNumbers, attrib) ? "1" : "0";
886 break;
887 case "RunForever":
888 if (null == componentKey)
889 {
897 - this.Core.OnMessage(ComPlusErrors.IllegalAttributeWithoutComponent(sourceLineNumbers, node.Name.LocalName, attrib.Name.LocalName));
890 + this.Messaging.Write(ComPlusErrors.IllegalAttributeWithoutComponent(sourceLineNumbers, node.Name.LocalName, attrib.Name.LocalName));
891 }
899 - properties["RunForever"] = YesNoType.Yes == this.Core.GetAttributeYesNoValue(sourceLineNumbers, attrib) ? "1" : "0";
892 + properties["RunForever"] = YesNoType.Yes == this.ParseHelper.GetAttributeYesNoValue(sourceLineNumbers, attrib) ? "1" : "0";
893 break;
894 case "ShutdownAfter":
895 if (null == componentKey)
896 {
904 - this.Core.OnMessage(ComPlusErrors.IllegalAttributeWithoutComponent(sourceLineNumbers, node.Name.LocalName, attrib.Name.LocalName));
897 + this.Messaging.Write(ComPlusErrors.IllegalAttributeWithoutComponent(sourceLineNumbers, node.Name.LocalName, attrib.Name.LocalName));
898 }
906 - properties["ShutdownAfter"] = this.Core.GetAttributeValue(sourceLineNumbers, attrib);
899 + properties["ShutdownAfter"] = this.ParseHelper.GetAttributeValue(sourceLineNumbers, attrib);
900 break;
901 case "SoapActivated":
902 if (null == componentKey)
903 {
911 - this.Core.OnMessage(ComPlusErrors.IllegalAttributeWithoutComponent(sourceLineNumbers, node.Name.LocalName, attrib.Name.LocalName));
904 + this.Messaging.Write(ComPlusErrors.IllegalAttributeWithoutComponent(sourceLineNumbers, node.Name.LocalName, attrib.Name.LocalName));
905 }
913 - properties["SoapActivated"] = YesNoType.Yes == this.Core.GetAttributeYesNoValue(sourceLineNumbers, attrib) ? "1" : "0";
906 + properties["SoapActivated"] = YesNoType.Yes == this.ParseHelper.GetAttributeYesNoValue(sourceLineNumbers, attrib) ? "1" : "0";
907 break;
908 case "SoapBaseUrl":
909 if (null == componentKey)
910 {
918 - this.Core.OnMessage(ComPlusErrors.IllegalAttributeWithoutComponent(sourceLineNumbers, node.Name.LocalName, attrib.Name.LocalName));
911 + this.Messaging.Write(ComPlusErrors.IllegalAttributeWithoutComponent(sourceLineNumbers, node.Name.LocalName, attrib.Name.LocalName));
912 }
920 - properties["SoapBaseUrl"] = this.Core.GetAttributeValue(sourceLineNumbers, attrib);
913 + properties["SoapBaseUrl"] = this.ParseHelper.GetAttributeValue(sourceLineNumbers, attrib);
914 break;
915 case "SoapMailTo":
916 if (null == componentKey)
917 {
925 - this.Core.OnMessage(ComPlusErrors.IllegalAttributeWithoutComponent(sourceLineNumbers, node.Name.LocalName, attrib.Name.LocalName));
918 + this.Messaging.Write(ComPlusErrors.IllegalAttributeWithoutComponent(sourceLineNumbers, node.Name.LocalName, attrib.Name.LocalName));
919 }
927 - properties["SoapMailTo"] = this.Core.GetAttributeValue(sourceLineNumbers, attrib);
920 + properties["SoapMailTo"] = this.ParseHelper.GetAttributeValue(sourceLineNumbers, attrib);
921 break;
922 case "SoapVRoot":
923 if (null == componentKey)
924 {
932 - this.Core.OnMessage(ComPlusErrors.IllegalAttributeWithoutComponent(sourceLineNumbers, node.Name.LocalName, attrib.Name.LocalName));
925 + this.Messaging.Write(ComPlusErrors.IllegalAttributeWithoutComponent(sourceLineNumbers, node.Name.LocalName, attrib.Name.LocalName));
926 }
934 - properties["SoapVRoot"] = this.Core.GetAttributeValue(sourceLineNumbers, attrib);
927 + properties["SoapVRoot"] = this.ParseHelper.GetAttributeValue(sourceLineNumbers, attrib);
928 break;
929 case "SRPEnabled":
930 if (null == componentKey)
931 {
939 - this.Core.OnMessage(ComPlusErrors.IllegalAttributeWithoutComponent(sourceLineNumbers, node.Name.LocalName, attrib.Name.LocalName));
932 + this.Messaging.Write(ComPlusErrors.IllegalAttributeWithoutComponent(sourceLineNumbers, node.Name.LocalName, attrib.Name.LocalName));
933 }
941 - properties["SRPEnabled"] = YesNoType.Yes == this.Core.GetAttributeYesNoValue(sourceLineNumbers, attrib) ? "1" : "0";
934 + properties["SRPEnabled"] = YesNoType.Yes == this.ParseHelper.GetAttributeYesNoValue(sourceLineNumbers, attrib) ? "1" : "0";
935 break;
936 case "SRPTrustLevel":
937 if (null == componentKey)
938 {
946 - this.Core.OnMessage(ComPlusErrors.IllegalAttributeWithoutComponent(sourceLineNumbers, node.Name.LocalName, attrib.Name.LocalName));
939 + this.Messaging.Write(ComPlusErrors.IllegalAttributeWithoutComponent(sourceLineNumbers, node.Name.LocalName, attrib.Name.LocalName));
940 }
948 - string srpTrustLevelValue = this.Core.GetAttributeValue(sourceLineNumbers, attrib);
941 + string srpTrustLevelValue = this.ParseHelper.GetAttributeValue(sourceLineNumbers, attrib);
942 switch (srpTrustLevelValue)
943 {
944 case "disallowed":
@@ -955,28 +948,28 @@ namespace WixToolset.Extensions
948 properties["SRPTrustLevel"] = "262144";
949 break;
950 default:
958 - this.Core.OnMessage(WixErrors.IllegalAttributeValue(sourceLineNumbers, "ComPlusApplication", "SRPTrustLevel", srpTrustLevelValue, "disallowed", "fullyTrusted"));
951 + this.Messaging.Write(ErrorMessages.IllegalAttributeValue(sourceLineNumbers, "ComPlusApplication", "SRPTrustLevel", srpTrustLevelValue, "disallowed", "fullyTrusted"));
952 break;
953 }
954 break;
955 default:
963 - this.Core.UnexpectedAttribute(node, attrib);
956 + this.ParseHelper.UnexpectedAttribute(node, attrib);
957 break;
958 }
959 }
960 else
961 {
969 - this.Core.ParseExtensionAttribute(node, attrib);
962 + this.ParseHelper.ParseExtensionAttribute(this.Context.Extensions, intermediate, section, node, attrib);
963 }
964 }
965
966 if (null != componentKey && null == name)
967 {
975 - this.Core.OnMessage(ComPlusErrors.RequiredAttributeUnderComponent(sourceLineNumbers, node.Name.LocalName, "Name"));
968 + this.Messaging.Write(ComPlusErrors.RequiredAttributeUnderComponent(sourceLineNumbers, node.Name.LocalName, "Name"));
969 }
970 if (null == componentKey && null == id && null == name)
971 {
979 - this.Core.OnMessage(ComPlusErrors.RequiredAttributeNotUnderComponent(sourceLineNumbers, node.Name.LocalName, "Id", "Name"));
972 + this.Messaging.Write(ComPlusErrors.RequiredAttributeNotUnderComponent(sourceLineNumbers, node.Name.LocalName, "Id", "Name"));
973 }
974
975 foreach (XElement child in node.Elements())
@@ -986,56 +979,56 @@ namespace WixToolset.Extensions
979 switch (child.Name.LocalName)
980 {
981 case "ComPlusApplicationRole":
989 - this.ParseComPlusApplicationRoleElement(child, componentKey, key);
982 + this.ParseComPlusApplicationRoleElement(intermediate, section, child, componentKey, key);
983 break;
984 case "ComPlusAssembly":
992 - this.ParseComPlusAssemblyElement(child, componentKey, win64, key);
985 + this.ParseComPlusAssemblyElement(intermediate, section, child, componentKey, win64, key);
986 break;
987 default:
995 - this.Core.UnexpectedElement(node, child);
988 + this.ParseHelper.UnexpectedElement(node, child);
989 break;
990 }
991 }
992 else
993 {
1001 - this.Core.ParseExtensionElement(node, child);
994 + this.ParseHelper.ParseExtensionElement(this.Context.Extensions, intermediate, section, node, child);
995 }
996 }
997
1005 - Row row = this.Core.CreateRow(sourceLineNumbers, "ComPlusApplication");
1006 - row[0] = key;
1007 - row[1] = partitionKey;
1008 - row[2] = componentKey;
1009 - row[3] = id;
1010 - row[4] = name;
998 + var row = this.ParseHelper.CreateRow(section, sourceLineNumbers, "ComPlusApplication");
999 + row.Set(0, key);
1000 + row.Set(1, partitionKey);
1001 + row.Set(2, componentKey);
1002 + row.Set(3, id);
1003 + row.Set(4, name);
1004
1005 IDictionaryEnumerator propertiesEnumerator = properties.GetEnumerator();
1006 while (propertiesEnumerator.MoveNext())
1007 {
1015 - Row propertyRow = this.Core.CreateRow(sourceLineNumbers, "ComPlusApplicationProperty");
1016 - propertyRow[0] = key;
1017 - propertyRow[1] = (string)propertiesEnumerator.Key;
1018 - propertyRow[2] = (string)propertiesEnumerator.Value;
1008 + var propertyRow = this.ParseHelper.CreateRow(section, sourceLineNumbers, "ComPlusApplicationProperty");
1009 + propertyRow.Set(0, key);
1010 + propertyRow.Set(1, (string)propertiesEnumerator.Key);
1011 + propertyRow.Set(2, (string)propertiesEnumerator.Value);
1012 }
1013
1014 if (componentKey != null)
1015 {
1016 if (win64)
1017 {
1025 - if (this.Core.CurrentPlatform == Platform.IA64)
1018 + if (this.Context.Platform == Platform.IA64)
1019 {
1027 - this.Core.OnMessage(WixErrors.UnsupportedPlatformForElement(sourceLineNumbers, "ia64", node.Name.LocalName));
1020 + this.Messaging.Write(ErrorMessages.UnsupportedPlatformForElement(sourceLineNumbers, "ia64", node.Name.LocalName));
1021 }
1022 else
1023 {
1031 - this.Core.CreateSimpleReference(sourceLineNumbers, "CustomAction", "ConfigureComPlusInstall_x64");
1032 - this.Core.CreateSimpleReference(sourceLineNumbers, "CustomAction", "ConfigureComPlusUninstall_x64");
1024 + this.ParseHelper.CreateSimpleReference(section, sourceLineNumbers, "CustomAction", "ConfigureComPlusInstall_x64");
1025 + this.ParseHelper.CreateSimpleReference(section, sourceLineNumbers, "CustomAction", "ConfigureComPlusUninstall_x64");
1026 }
1027 }
1028 else
1029 {
1037 - this.Core.CreateSimpleReference(sourceLineNumbers, "CustomAction", "ConfigureComPlusInstall");
1038 - this.Core.CreateSimpleReference(sourceLineNumbers, "CustomAction", "ConfigureComPlusUninstall");
1030 + this.ParseHelper.CreateSimpleReference(section, sourceLineNumbers, "CustomAction", "ConfigureComPlusInstall");
1031 + this.ParseHelper.CreateSimpleReference(section, sourceLineNumbers, "CustomAction", "ConfigureComPlusUninstall");
1032 }
1033 }
1034 }
@@ -1046,9 +1039,9 @@ namespace WixToolset.Extensions
1039 /// <param name="node">Element to parse.</param>
1040 /// <param name="componentKey">Identifier of parent component.</param>
1041 /// <param name="applicationKey">Optional identifier of parent application.</param>
1049 - private void ParseComPlusApplicationRoleElement(XElement node, string componentKey, string applicationKey)
1042 + private void ParseComPlusApplicationRoleElement(Intermediate intermediate, IntermediateSection section, XElement node, string componentKey, string applicationKey)
1043 {
1051 - SourceLineNumber sourceLineNumbers = Preprocessor.GetSourceLineNumbers(node);
1044 + SourceLineNumber sourceLineNumbers = this.ParseHelper.GetSourceLineNumbers(node);
1045
1046 string key = null;
1047 string name = null;
@@ -1062,40 +1055,40 @@ namespace WixToolset.Extensions
1055 switch (attrib.Name.LocalName)
1056 {
1057 case "Id":
1065 - key = this.Core.GetAttributeIdentifierValue(sourceLineNumbers, attrib);
1058 + key = this.ParseHelper.GetAttributeIdentifierValue(sourceLineNumbers, attrib);
1059 break;
1060 case "Application":
1061 if (null != applicationKey)
1062 {
1070 - this.Core.OnMessage(WixErrors.IllegalAttributeWhenNested(sourceLineNumbers, node.Name.LocalName, attrib.Name.LocalName, node.Parent.Name.LocalName));
1063 + this.Messaging.Write(ErrorMessages.IllegalAttributeWhenNested(sourceLineNumbers, node.Name.LocalName, attrib.Name.LocalName, node.Parent.Name.LocalName));
1064 }
1072 - applicationKey = this.Core.GetAttributeValue(sourceLineNumbers, attrib);
1073 - this.Core.CreateSimpleReference(sourceLineNumbers, "ComPlusApplication", applicationKey);
1065 + applicationKey = this.ParseHelper.GetAttributeValue(sourceLineNumbers, attrib);
1066 + this.ParseHelper.CreateSimpleReference(section, sourceLineNumbers, "ComPlusApplication", applicationKey);
1067 break;
1068 case "Name":
1076 - name = this.Core.GetAttributeValue(sourceLineNumbers, attrib);
1069 + name = this.ParseHelper.GetAttributeValue(sourceLineNumbers, attrib);
1070 break;
1071 case "Description":
1072 if (null == componentKey)
1073 {
1081 - this.Core.OnMessage(ComPlusErrors.IllegalAttributeWithoutComponent(sourceLineNumbers, node.Name.LocalName, attrib.Name.LocalName));
1074 + this.Messaging.Write(ComPlusErrors.IllegalAttributeWithoutComponent(sourceLineNumbers, node.Name.LocalName, attrib.Name.LocalName));
1075 }
1083 - properties["Description"] = this.Core.GetAttributeValue(sourceLineNumbers, attrib);
1076 + properties["Description"] = this.ParseHelper.GetAttributeValue(sourceLineNumbers, attrib);
1077 break;
1078 default:
1086 - this.Core.UnexpectedAttribute(node, attrib);
1079 + this.ParseHelper.UnexpectedAttribute(node, attrib);
1080 break;
1081 }
1082 }
1083 else
1084 {
1092 - this.Core.ParseExtensionAttribute(node, attrib);
1085 + this.ParseHelper.ParseExtensionAttribute(this.Context.Extensions, intermediate, section, node, attrib);
1086 }
1087 }
1088
1089 if (null == applicationKey)
1090 {
1098 - this.Core.OnMessage(WixErrors.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "Application"));
1091 + this.Messaging.Write(ErrorMessages.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "Application"));
1092 }
1093
1094 foreach (XElement child in node.Elements())
@@ -1105,35 +1098,35 @@ namespace WixToolset.Extensions
1098 switch (child.Name.LocalName)
1099 {
1100 case "ComPlusUserInApplicationRole":
1108 - this.ParseComPlusUserInApplicationRoleElement(child, componentKey, key);
1101 + this.ParseComPlusUserInApplicationRoleElement(intermediate, section, child, componentKey, key);
1102 break;
1103 case "ComPlusGroupInApplicationRole":
1111 - this.ParseComPlusGroupInApplicationRoleElement(child, componentKey, key);
1104 + this.ParseComPlusGroupInApplicationRoleElement(intermediate, section, child, componentKey, key);
1105 break;
1106 default:
1114 - this.Core.UnexpectedElement(node, child);
1107 + this.ParseHelper.UnexpectedElement(node, child);
1108 break;
1109 }
1110 }
1111 else
1112 {
1120 - this.Core.ParseExtensionElement(node, child);
1113 + this.ParseHelper.ParseExtensionElement(this.Context.Extensions, intermediate, section, node, child);
1114 }
1115 }
1116
1124 - Row row = this.Core.CreateRow(sourceLineNumbers, "ComPlusApplicationRole");
1125 - row[0] = key;
1126 - row[1] = applicationKey;
1127 - row[2] = componentKey;
1128 - row[3] = name;
1117 + var row = this.ParseHelper.CreateRow(section, sourceLineNumbers, "ComPlusApplicationRole");
1118 + row.Set(0, key);
1119 + row.Set(1, applicationKey);
1120 + row.Set(2, componentKey);
1121 + row.Set(3, name);
1122
1123 IDictionaryEnumerator propertiesEnumerator = properties.GetEnumerator();
1124 while (propertiesEnumerator.MoveNext())
1125 {
1133 - Row propertyRow = this.Core.CreateRow(sourceLineNumbers, "ComPlusApplicationRoleProperty");
1134 - propertyRow[0] = key;
1135 - propertyRow[1] = (string)propertiesEnumerator.Key;
1136 - propertyRow[2] = (string)propertiesEnumerator.Value;
1126 + var propertyRow = this.ParseHelper.CreateRow(section, sourceLineNumbers, "ComPlusApplicationRoleProperty");
1127 + propertyRow.Set(0, key);
1128 + propertyRow.Set(1, (string)propertiesEnumerator.Key);
1129 + propertyRow.Set(2, (string)propertiesEnumerator.Value);
1130 }
1131 }
1132
@@ -1143,9 +1136,9 @@ namespace WixToolset.Extensions
1136 /// <param name="node">Element to parse.</param>
1137 /// <param name="componentKey">Identifier of parent component.</param>
1138 /// <param name="applicationKey">Optional identifier of parent application role.</param>
1146 - private void ParseComPlusUserInApplicationRoleElement(XElement node, string componentKey, string applicationRoleKey)
1139 + private void ParseComPlusUserInApplicationRoleElement(Intermediate intermediate, IntermediateSection section, XElement node, string componentKey, string applicationRoleKey)
1140 {
1148 - SourceLineNumber sourceLineNumbers = Preprocessor.GetSourceLineNumbers(node);
1141 + SourceLineNumber sourceLineNumbers = this.ParseHelper.GetSourceLineNumbers(node);
1142
1143 string key = null;
1144 string user = null;
@@ -1157,41 +1150,41 @@ namespace WixToolset.Extensions
1150 switch (attrib.Name.LocalName)
1151 {
1152 case "Id":
1160 - key = this.Core.GetAttributeIdentifierValue(sourceLineNumbers, attrib);
1153 + key = this.ParseHelper.GetAttributeIdentifierValue(sourceLineNumbers, attrib);
1154 break;
1155 case "ApplicationRole":
1156 if (null != applicationRoleKey)
1157 {
1165 - this.Core.OnMessage(WixErrors.IllegalAttributeWhenNested(sourceLineNumbers, node.Name.LocalName, attrib.Name.LocalName, node.Parent.Name.LocalName));
1158 + this.Messaging.Write(ErrorMessages.IllegalAttributeWhenNested(sourceLineNumbers, node.Name.LocalName, attrib.Name.LocalName, node.Parent.Name.LocalName));
1159 }
1167 - applicationRoleKey = this.Core.GetAttributeValue(sourceLineNumbers, attrib);
1168 - this.Core.CreateSimpleReference(sourceLineNumbers, "ComPlusApplicationRole", applicationRoleKey);
1160 + applicationRoleKey = this.ParseHelper.GetAttributeValue(sourceLineNumbers, attrib);
1161 + this.ParseHelper.CreateSimpleReference(section, sourceLineNumbers, "ComPlusApplicationRole", applicationRoleKey);
1162 break;
1163 case "User":
1171 - user = this.Core.GetAttributeValue(sourceLineNumbers, attrib);
1172 - this.Core.CreateSimpleReference(sourceLineNumbers, "User", user);
1164 + user = this.ParseHelper.GetAttributeValue(sourceLineNumbers, attrib);
1165 + this.ParseHelper.CreateSimpleReference(section, sourceLineNumbers, "User", user);
1166 break;
1167 default:
1175 - this.Core.UnexpectedAttribute(node, attrib);
1168 + this.ParseHelper.UnexpectedAttribute(node, attrib);
1169 break;
1170 }
1171 }
1172 else
1173 {
1181 - this.Core.ParseExtensionAttribute(node, attrib);
1174 + this.ParseHelper.ParseExtensionAttribute(this.Context.Extensions, intermediate, section, node, attrib);
1175 }
1176 }
1177
1178 if (null == applicationRoleKey)
1179 {
1187 - this.Core.OnMessage(WixErrors.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "ApplicationRole"));
1180 + this.Messaging.Write(ErrorMessages.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "ApplicationRole"));
1181 }
1182
1190 - Row row = this.Core.CreateRow(sourceLineNumbers, "ComPlusUserInApplicationRole");
1191 - row[0] = key;
1192 - row[1] = applicationRoleKey;
1193 - row[2] = componentKey;
1194 - row[3] = user;
1183 + var row = this.ParseHelper.CreateRow(section, sourceLineNumbers, "ComPlusUserInApplicationRole");
1184 + row.Set(0, key);
1185 + row.Set(1, applicationRoleKey);
1186 + row.Set(2, componentKey);
1187 + row.Set(3, user);
1188 }
1189
1190 /// <summary>
@@ -1200,9 +1193,9 @@ namespace WixToolset.Extensions
1193 /// <param name="node">Element to parse.</param>
1194 /// <param name="componentKey">Identifier of parent component.</param>
1195 /// <param name="applicationKey">Optional identifier of parent application role.</param>
1203 - private void ParseComPlusGroupInApplicationRoleElement(XElement node, string componentKey, string applicationRoleKey)
1196 + private void ParseComPlusGroupInApplicationRoleElement(Intermediate intermediate, IntermediateSection section, XElement node, string componentKey, string applicationRoleKey)
1197 {
1205 - SourceLineNumber sourceLineNumbers = Preprocessor.GetSourceLineNumbers(node);
1198 + SourceLineNumber sourceLineNumbers = this.ParseHelper.GetSourceLineNumbers(node);
1199
1200 string key = null;
1201 string group = null;
@@ -1214,41 +1207,41 @@ namespace WixToolset.Extensions
1207 switch (attrib.Name.LocalName)
1208 {
1209 case "Id":
1217 - key = this.Core.GetAttributeIdentifierValue(sourceLineNumbers, attrib);
1210 + key = this.ParseHelper.GetAttributeIdentifierValue(sourceLineNumbers, attrib);
1211 break;
1212 case "ApplicationRole":
1213 if (null != applicationRoleKey)
1214 {
1222 - this.Core.OnMessage(WixErrors.IllegalAttributeWhenNested(sourceLineNumbers, node.Name.LocalName, attrib.Name.LocalName, node.Parent.Name.LocalName));
1215 + this.Messaging.Write(ErrorMessages.IllegalAttributeWhenNested(sourceLineNumbers, node.Name.LocalName, attrib.Name.LocalName, node.Parent.Name.LocalName));
1216 }
1224 - applicationRoleKey = this.Core.GetAttributeValue(sourceLineNumbers, attrib);
1225 - this.Core.CreateSimpleReference(sourceLineNumbers, "ComPlusApplicationRole", applicationRoleKey);
1217 + applicationRoleKey = this.ParseHelper.GetAttributeValue(sourceLineNumbers, attrib);
1218 + this.ParseHelper.CreateSimpleReference(section, sourceLineNumbers, "ComPlusApplicationRole", applicationRoleKey);
1219 break;
1220 case "Group":
1228 - group = this.Core.GetAttributeValue(sourceLineNumbers, attrib);
1229 - this.Core.CreateSimpleReference(sourceLineNumbers, "Group", group);
1221 + group = this.ParseHelper.GetAttributeValue(sourceLineNumbers, attrib);
1222 + this.ParseHelper.CreateSimpleReference(section, sourceLineNumbers, "Group", group);
1223 break;
1224 default:
1232 - this.Core.UnexpectedAttribute(node, attrib);
1225 + this.ParseHelper.UnexpectedAttribute(node, attrib);
1226 break;
1227 }
1228 }
1229 else
1230 {
1238 - this.Core.ParseExtensionAttribute(node, attrib);
1231 + this.ParseHelper.ParseExtensionAttribute(this.Context.Extensions, intermediate, section, node, attrib);
1232 }
1233 }
1234
1235 if (null == applicationRoleKey)
1236 {
1244 - this.Core.OnMessage(WixErrors.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "ApplicationRole"));
1237 + this.Messaging.Write(ErrorMessages.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "ApplicationRole"));
1238 }
1239
1247 - Row row = this.Core.CreateRow(sourceLineNumbers, "ComPlusGroupInApplicationRole");
1248 - row[0] = key;
1249 - row[1] = applicationRoleKey;
1250 - row[2] = componentKey;
1251 - row[3] = group;
1240 + var row = this.ParseHelper.CreateRow(section, sourceLineNumbers, "ComPlusGroupInApplicationRole");
1241 + row.Set(0, key);
1242 + row.Set(1, applicationRoleKey);
1243 + row.Set(2, componentKey);
1244 + row.Set(3, group);
1245 }
1246
1247 /// <summary>
@@ -1257,9 +1250,9 @@ namespace WixToolset.Extensions
1250 /// <param name="node">Element to parse.</param>
1251 /// <param name="componentKey">Identifier of parent component.</param>
1252 /// <param name="applicationKey">Optional identifier of parent application.</param>
1260 - private void ParseComPlusAssemblyElement(XElement node, string componentKey, bool win64, string applicationKey)
1253 + private void ParseComPlusAssemblyElement(Intermediate intermediate, IntermediateSection section, XElement node, string componentKey, bool win64, string applicationKey)
1254 {
1262 - SourceLineNumber sourceLineNumbers = Preprocessor.GetSourceLineNumbers(node);
1255 + SourceLineNumber sourceLineNumbers = this.ParseHelper.GetSourceLineNumbers(node);
1256
1257 string key = null;
1258 string assemblyName = null;
@@ -1277,30 +1270,30 @@ namespace WixToolset.Extensions
1270 switch (attrib.Name.LocalName)
1271 {
1272 case "Id":
1280 - key = this.Core.GetAttributeIdentifierValue(sourceLineNumbers, attrib);
1273 + key = this.ParseHelper.GetAttributeIdentifierValue(sourceLineNumbers, attrib);
1274 break;
1275 case "Application":
1276 if (null != applicationKey)
1277 {
1285 - this.Core.OnMessage(WixErrors.IllegalAttributeWhenNested(sourceLineNumbers, node.Name.LocalName, attrib.Name.LocalName, node.Parent.Name.LocalName));
1278 + this.Messaging.Write(ErrorMessages.IllegalAttributeWhenNested(sourceLineNumbers, node.Name.LocalName, attrib.Name.LocalName, node.Parent.Name.LocalName));
1279 }
1287 - applicationKey = this.Core.GetAttributeValue(sourceLineNumbers, attrib);
1288 - this.Core.CreateSimpleReference(sourceLineNumbers, "ComPlusApplication", applicationKey);
1280 + applicationKey = this.ParseHelper.GetAttributeValue(sourceLineNumbers, attrib);
1281 + this.ParseHelper.CreateSimpleReference(section, sourceLineNumbers, "ComPlusApplication", applicationKey);
1282 break;
1283 case "AssemblyName":
1291 - assemblyName = this.Core.GetAttributeValue(sourceLineNumbers, attrib);
1284 + assemblyName = this.ParseHelper.GetAttributeValue(sourceLineNumbers, attrib);
1285 break;
1286 case "DllPath":
1294 - dllPath = this.Core.GetAttributeValue(sourceLineNumbers, attrib);
1287 + dllPath = this.ParseHelper.GetAttributeValue(sourceLineNumbers, attrib);
1288 break;
1289 case "TlbPath":
1297 - tlbPath = this.Core.GetAttributeValue(sourceLineNumbers, attrib);
1290 + tlbPath = this.ParseHelper.GetAttributeValue(sourceLineNumbers, attrib);
1291 break;
1292 case "PSDllPath":
1300 - psDllPath = this.Core.GetAttributeValue(sourceLineNumbers, attrib);
1293 + psDllPath = this.ParseHelper.GetAttributeValue(sourceLineNumbers, attrib);
1294 break;
1295 case "Type":
1303 - string typeValue = this.Core.GetAttributeValue(sourceLineNumbers, attrib);
1296 + string typeValue = this.ParseHelper.GetAttributeValue(sourceLineNumbers, attrib);
1297 switch (typeValue)
1298 {
1299 case ".net":
@@ -1310,12 +1303,12 @@ namespace WixToolset.Extensions
1303 attributes &= ~(int)CpiAssemblyAttributes.DotNetAssembly;
1304 break;
1305 default:
1313 - this.Core.OnMessage(WixErrors.IllegalAttributeValue(sourceLineNumbers, "ComPlusAssembly", "Type", typeValue, ".net", "native"));
1306 + this.Messaging.Write(ErrorMessages.IllegalAttributeValue(sourceLineNumbers, "ComPlusAssembly", "Type", typeValue, ".net", "native"));
1307 break;
1308 }
1309 break;
1310 case "EventClass":
1318 - if (YesNoType.Yes == this.Core.GetAttributeYesNoValue(sourceLineNumbers, attrib))
1311 + if (YesNoType.Yes == this.ParseHelper.GetAttributeYesNoValue(sourceLineNumbers, attrib))
1312 {
1313 attributes |= (int)CpiAssemblyAttributes.EventClass;
1314 }
@@ -1325,7 +1318,7 @@ namespace WixToolset.Extensions
1318 }
1319 break;
1320 case "DllPathFromGAC":
1328 - if (YesNoType.Yes == this.Core.GetAttributeYesNoValue(sourceLineNumbers, attrib))
1321 + if (YesNoType.Yes == this.ParseHelper.GetAttributeYesNoValue(sourceLineNumbers, attrib))
1322 {
1323 attributes |= (int)CpiAssemblyAttributes.DllPathFromGAC;
1324 }
@@ -1335,7 +1328,7 @@ namespace WixToolset.Extensions
1328 }
1329 break;
1330 case "RegisterInCommit":
1338 - if (YesNoType.Yes == this.Core.GetAttributeYesNoValue(sourceLineNumbers, attrib))
1331 + if (YesNoType.Yes == this.ParseHelper.GetAttributeYesNoValue(sourceLineNumbers, attrib))
1332 {
1333 attributes |= (int)CpiAssemblyAttributes.RegisterInCommit;
1334 }
@@ -1345,35 +1338,35 @@ namespace WixToolset.Extensions
1338 }
1339 break;
1340 default:
1348 - this.Core.UnexpectedAttribute(node, attrib);
1341 + this.ParseHelper.UnexpectedAttribute(node, attrib);
1342 break;
1343 }
1344 }
1345 else
1346 {
1354 - this.Core.ParseExtensionAttribute(node, attrib);
1347 + this.ParseHelper.ParseExtensionAttribute(this.Context.Extensions, intermediate, section, node, attrib);
1348 }
1349 }
1350
1351 if (null == applicationKey && 0 == (attributes & (int)CpiAssemblyAttributes.DotNetAssembly))
1352 {
1360 - this.Core.OnMessage(WixErrors.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "Application", "Type", "native"));
1353 + this.Messaging.Write(ErrorMessages.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "Application", "Type", "native"));
1354 }
1355 if (null != assemblyName && 0 == (attributes & (int)CpiAssemblyAttributes.DllPathFromGAC))
1356 {
1364 - this.Core.OnMessage(ComPlusErrors.UnexpectedAttributeWithoutOtherValue(sourceLineNumbers, node.Name.LocalName, "AssemblyName", "DllPathFromGAC", "no"));
1357 + this.Messaging.Write(ComPlusErrors.UnexpectedAttributeWithoutOtherValue(sourceLineNumbers, node.Name.LocalName, "AssemblyName", "DllPathFromGAC", "no"));
1358 }
1359 if (null == tlbPath && 0 != (attributes & (int)CpiAssemblyAttributes.DotNetAssembly))
1360 {
1368 - this.Core.OnMessage(WixErrors.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "TlbPath", "Type", ".net"));
1361 + this.Messaging.Write(ErrorMessages.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "TlbPath", "Type", ".net"));
1362 }
1363 if (null != psDllPath && 0 != (attributes & (int)CpiAssemblyAttributes.DotNetAssembly))
1364 {
1372 - this.Core.OnMessage(ComPlusErrors.UnexpectedAttributeWithOtherValue(sourceLineNumbers, node.Name.LocalName, "PSDllPath", "Type", ".net"));
1365 + this.Messaging.Write(ComPlusErrors.UnexpectedAttributeWithOtherValue(sourceLineNumbers, node.Name.LocalName, "PSDllPath", "Type", ".net"));
1366 }
1367 if (0 != (attributes & (int)CpiAssemblyAttributes.EventClass) && 0 != (attributes & (int)CpiAssemblyAttributes.DotNetAssembly))
1368 {
1376 - this.Core.OnMessage(ComPlusErrors.UnexpectedAttributeWithOtherValue(sourceLineNumbers, node.Name.LocalName, "EventClass", "yes", "Type", ".net"));
1369 + this.Messaging.Write(ComPlusErrors.UnexpectedAttributeWithOtherValue(sourceLineNumbers, node.Name.LocalName, "EventClass", "yes", "Type", ".net"));
1370 }
1371
1372 foreach (XElement child in node.Elements())
@@ -1383,54 +1376,54 @@ namespace WixToolset.Extensions
1376 switch (child.Name.LocalName)
1377 {
1378 case "ComPlusAssemblyDependency":
1386 - this.ParseComPlusAssemblyDependencyElement(child, key);
1379 + this.ParseComPlusAssemblyDependencyElement(intermediate, section, child, key);
1380 break;
1381 case "ComPlusComponent":
1389 - this.ParseComPlusComponentElement(child, componentKey, key);
1382 + this.ParseComPlusComponentElement(intermediate, section, child, componentKey, key);
1383 hasComponents = true;
1384 break;
1385 default:
1393 - this.Core.UnexpectedElement(node, child);
1386 + this.ParseHelper.UnexpectedElement(node, child);
1387 break;
1388 }
1389 }
1390 else
1391 {
1399 - this.Core.ParseExtensionElement(node, child);
1392 + this.ParseHelper.ParseExtensionElement(this.Context.Extensions, intermediate, section, node, child);
1393 }
1394 }
1395
1396 if (0 == (attributes & (int)CpiAssemblyAttributes.DotNetAssembly) && !hasComponents)
1397 {
1405 - this.Core.OnMessage(ComPlusWarnings.MissingComponents(sourceLineNumbers));
1398 + this.Messaging.Write(ComPlusWarnings.MissingComponents(sourceLineNumbers));
1399 }
1400
1408 - Row row = this.Core.CreateRow(sourceLineNumbers, "ComPlusAssembly");
1409 - row[0] = key;
1410 - row[1] = applicationKey;
1411 - row[2] = componentKey;
1412 - row[3] = assemblyName;
1413 - row[4] = dllPath;
1414 - row[5] = tlbPath;
1415 - row[6] = psDllPath;
1416 - row[7] = attributes;
1401 + var row = this.ParseHelper.CreateRow(section, sourceLineNumbers, "ComPlusAssembly");
1402 + row.Set(0, key);
1403 + row.Set(1, applicationKey);
1404 + row.Set(2, componentKey);
1405 + row.Set(3, assemblyName);
1406 + row.Set(4, dllPath);
1407 + row.Set(5, tlbPath);
1408 + row.Set(6, psDllPath);
1409 + row.Set(7, attributes);
1410
1411 if (win64)
1412 {
1420 - if (this.Core.CurrentPlatform == Platform.IA64)
1413 + if (this.Context.Platform == Platform.IA64)
1414 {
1422 - this.Core.OnMessage(WixErrors.UnsupportedPlatformForElement(sourceLineNumbers, "ia64", node.Name.LocalName));
1415 + this.Messaging.Write(ErrorMessages.UnsupportedPlatformForElement(sourceLineNumbers, "ia64", node.Name.LocalName));
1416 }
1417 else
1418 {
1426 - this.Core.CreateSimpleReference(sourceLineNumbers, "CustomAction", "ConfigureComPlusInstall_x64");
1427 - this.Core.CreateSimpleReference(sourceLineNumbers, "CustomAction", "ConfigureComPlusUninstall_x64");
1419 + this.ParseHelper.CreateSimpleReference(section, sourceLineNumbers, "CustomAction", "ConfigureComPlusInstall_x64");
1420 + this.ParseHelper.CreateSimpleReference(section, sourceLineNumbers, "CustomAction", "ConfigureComPlusUninstall_x64");
1421 }
1422 }
1423 else
1424 {
1432 - this.Core.CreateSimpleReference(sourceLineNumbers, "CustomAction", "ConfigureComPlusInstall");
1433 - this.Core.CreateSimpleReference(sourceLineNumbers, "CustomAction", "ConfigureComPlusUninstall");
1425 + this.ParseHelper.CreateSimpleReference(section, sourceLineNumbers, "CustomAction", "ConfigureComPlusInstall");
1426 + this.ParseHelper.CreateSimpleReference(section, sourceLineNumbers, "CustomAction", "ConfigureComPlusUninstall");
1427 }
1428 }
1429
@@ -1439,9 +1432,9 @@ namespace WixToolset.Extensions
1432 /// </summary>
1433 /// <param name="node">Element to parse.</param>
1434 /// <param name="assemblyKey">Identifier of parent assembly.</param>
1442 - private void ParseComPlusAssemblyDependencyElement(XElement node, string assemblyKey)
1435 + private void ParseComPlusAssemblyDependencyElement(Intermediate intermediate, IntermediateSection section, XElement node, string assemblyKey)
1436 {
1444 - SourceLineNumber sourceLineNumbers = Preprocessor.GetSourceLineNumbers(node);
1437 + SourceLineNumber sourceLineNumbers = this.ParseHelper.GetSourceLineNumbers(node);
1438
1439 string requiredAssemblyKey = null;
1440
@@ -1452,22 +1445,22 @@ namespace WixToolset.Extensions
1445 switch (attrib.Name.LocalName)
1446 {
1447 case "RequiredAssembly":
1455 - requiredAssemblyKey = this.Core.GetAttributeValue(sourceLineNumbers, attrib);
1448 + requiredAssemblyKey = this.ParseHelper.GetAttributeValue(sourceLineNumbers, attrib);
1449 break;
1450 default:
1458 - this.Core.UnexpectedAttribute(node, attrib);
1451 + this.ParseHelper.UnexpectedAttribute(node, attrib);
1452 break;
1453 }
1454 }
1455 else
1456 {
1464 - this.Core.ParseExtensionAttribute(node, attrib);
1457 + this.ParseHelper.ParseExtensionAttribute(this.Context.Extensions, intermediate, section, node, attrib);
1458 }
1459 }
1460
1468 - Row row = this.Core.CreateRow(sourceLineNumbers, "ComPlusAssemblyDependency");
1469 - row[0] = assemblyKey;
1470 - row[1] = requiredAssemblyKey;
1461 + var row = this.ParseHelper.CreateRow(section, sourceLineNumbers, "ComPlusAssemblyDependency");
1462 + row.Set(0, assemblyKey);
1463 + row.Set(1, requiredAssemblyKey);
1464 }
1465
1466 /// <summary>
@@ -1476,9 +1469,9 @@ namespace WixToolset.Extensions
1469 /// <param name="node">Element to parse.</param>
1470 /// <param name="componentKey">Identifier of parent component.</param>
1471 /// <param name="assemblyKey">Identifier of parent assembly.</param>
1479 - private void ParseComPlusComponentElement(XElement node, string componentKey, string assemblyKey)
1472 + private void ParseComPlusComponentElement(Intermediate intermediate, IntermediateSection section, XElement node, string componentKey, string assemblyKey)
1473 {
1481 - SourceLineNumber sourceLineNumbers = Preprocessor.GetSourceLineNumbers(node);
1474 + SourceLineNumber sourceLineNumbers = this.ParseHelper.GetSourceLineNumbers(node);
1475
1476 string key = null;
1477 string clsid = null;
@@ -1492,94 +1485,94 @@ namespace WixToolset.Extensions
1485 switch (attrib.Name.LocalName)
1486 {
1487 case "Id":
1495 - key = this.Core.GetAttributeIdentifierValue(sourceLineNumbers, attrib);
1488 + key = this.ParseHelper.GetAttributeIdentifierValue(sourceLineNumbers, attrib);
1489 break;
1490 case "CLSID":
1498 - clsid = "{" + this.Core.GetAttributeValue(sourceLineNumbers, attrib) + "}";
1491 + clsid = "{" + this.ParseHelper.GetAttributeValue(sourceLineNumbers, attrib) + "}";
1492 break;
1493 case "AllowInprocSubscribers":
1501 - properties["AllowInprocSubscribers"] = YesNoType.Yes == this.Core.GetAttributeYesNoValue(sourceLineNumbers, attrib) ? "1" : "0";
1494 + properties["AllowInprocSubscribers"] = YesNoType.Yes == this.ParseHelper.GetAttributeYesNoValue(sourceLineNumbers, attrib) ? "1" : "0";
1495 break;
1496 case "ComponentAccessChecksEnabled":
1504 - properties["ComponentAccessChecksEnabled"] = YesNoType.Yes == this.Core.GetAttributeYesNoValue(sourceLineNumbers, attrib) ? "1" : "0";
1497 + properties["ComponentAccessChecksEnabled"] = YesNoType.Yes == this.ParseHelper.GetAttributeYesNoValue(sourceLineNumbers, attrib) ? "1" : "0";
1498 break;
1499 case "ComponentTransactionTimeout":
1507 - properties["ComponentTransactionTimeout"] = this.Core.GetAttributeIntegerValue(sourceLineNumbers, attrib, 0, 3600).ToString();
1500 + properties["ComponentTransactionTimeout"] = this.ParseHelper.GetAttributeIntegerValue(sourceLineNumbers, attrib, 0, 3600).ToString();
1501 break;
1502 case "ComponentTransactionTimeoutEnabled":
1510 - properties["ComponentTransactionTimeoutEnabled"] = YesNoType.Yes == this.Core.GetAttributeYesNoValue(sourceLineNumbers, attrib) ? "1" : "0";
1503 + properties["ComponentTransactionTimeoutEnabled"] = YesNoType.Yes == this.ParseHelper.GetAttributeYesNoValue(sourceLineNumbers, attrib) ? "1" : "0";
1504 break;
1505 case "COMTIIntrinsics":
1513 - properties["COMTIIntrinsics"] = YesNoType.Yes == this.Core.GetAttributeYesNoValue(sourceLineNumbers, attrib) ? "1" : "0";
1506 + properties["COMTIIntrinsics"] = YesNoType.Yes == this.ParseHelper.GetAttributeYesNoValue(sourceLineNumbers, attrib) ? "1" : "0";
1507 break;
1508 case "ConstructionEnabled":
1516 - properties["ConstructionEnabled"] = YesNoType.Yes == this.Core.GetAttributeYesNoValue(sourceLineNumbers, attrib) ? "1" : "0";
1509 + properties["ConstructionEnabled"] = YesNoType.Yes == this.ParseHelper.GetAttributeYesNoValue(sourceLineNumbers, attrib) ? "1" : "0";
1510 break;
1511 case "ConstructorString":
1519 - properties["ConstructorString"] = this.Core.GetAttributeValue(sourceLineNumbers, attrib);
1512 + properties["ConstructorString"] = this.ParseHelper.GetAttributeValue(sourceLineNumbers, attrib);
1513 break;
1514 case "CreationTimeout":
1522 - properties["CreationTimeout"] = this.Core.GetAttributeValue(sourceLineNumbers, attrib);
1515 + properties["CreationTimeout"] = this.ParseHelper.GetAttributeValue(sourceLineNumbers, attrib);
1516 break;
1517 case "Description":
1525 - properties["Description"] = this.Core.GetAttributeValue(sourceLineNumbers, attrib);
1518 + properties["Description"] = this.ParseHelper.GetAttributeValue(sourceLineNumbers, attrib);
1519 break;
1520 case "EventTrackingEnabled":
1528 - properties["EventTrackingEnabled"] = YesNoType.Yes == this.Core.GetAttributeYesNoValue(sourceLineNumbers, attrib) ? "1" : "0";
1521 + properties["EventTrackingEnabled"] = YesNoType.Yes == this.ParseHelper.GetAttributeYesNoValue(sourceLineNumbers, attrib) ? "1" : "0";
1522 break;
1523 case "ExceptionClass":
1531 - properties["ExceptionClass"] = this.Core.GetAttributeValue(sourceLineNumbers, attrib);
1524 + properties["ExceptionClass"] = this.ParseHelper.GetAttributeValue(sourceLineNumbers, attrib);
1525 break;
1526 case "FireInParallel":
1534 - properties["FireInParallel"] = YesNoType.Yes == this.Core.GetAttributeYesNoValue(sourceLineNumbers, attrib) ? "1" : "0";
1527 + properties["FireInParallel"] = YesNoType.Yes == this.ParseHelper.GetAttributeYesNoValue(sourceLineNumbers, attrib) ? "1" : "0";
1528 break;
1529 case "IISIntrinsics":
1537 - properties["IISIntrinsics"] = YesNoType.Yes == this.Core.GetAttributeYesNoValue(sourceLineNumbers, attrib) ? "1" : "0";
1530 + properties["IISIntrinsics"] = YesNoType.Yes == this.ParseHelper.GetAttributeYesNoValue(sourceLineNumbers, attrib) ? "1" : "0";
1531 break;
1532 case "InitializesServerApplication":
1540 - properties["InitializesServerApplication"] = YesNoType.Yes == this.Core.GetAttributeYesNoValue(sourceLineNumbers, attrib) ? "1" : "0";
1533 + properties["InitializesServerApplication"] = YesNoType.Yes == this.ParseHelper.GetAttributeYesNoValue(sourceLineNumbers, attrib) ? "1" : "0";
1534 break;
1535 case "IsEnabled":
1543 - properties["IsEnabled"] = YesNoType.Yes == this.Core.GetAttributeYesNoValue(sourceLineNumbers, attrib) ? "1" : "0";
1536 + properties["IsEnabled"] = YesNoType.Yes == this.ParseHelper.GetAttributeYesNoValue(sourceLineNumbers, attrib) ? "1" : "0";
1537 break;
1538 case "IsPrivateComponent":
1546 - properties["IsPrivateComponent"] = YesNoType.Yes == this.Core.GetAttributeYesNoValue(sourceLineNumbers, attrib) ? "1" : "0";
1539 + properties["IsPrivateComponent"] = YesNoType.Yes == this.ParseHelper.GetAttributeYesNoValue(sourceLineNumbers, attrib) ? "1" : "0";
1540 break;
1541 case "JustInTimeActivation":
1549 - properties["JustInTimeActivation"] = YesNoType.Yes == this.Core.GetAttributeYesNoValue(sourceLineNumbers, attrib) ? "1" : "0";
1542 + properties["JustInTimeActivation"] = YesNoType.Yes == this.ParseHelper.GetAttributeYesNoValue(sourceLineNumbers, attrib) ? "1" : "0";
1543 break;
1544 case "LoadBalancingSupported":
1552 - properties["LoadBalancingSupported"] = YesNoType.Yes == this.Core.GetAttributeYesNoValue(sourceLineNumbers, attrib) ? "1" : "0";
1545 + properties["LoadBalancingSupported"] = YesNoType.Yes == this.ParseHelper.GetAttributeYesNoValue(sourceLineNumbers, attrib) ? "1" : "0";
1546 break;
1547 case "MaxPoolSize":
1555 - properties["MaxPoolSize"] = this.Core.GetAttributeValue(sourceLineNumbers, attrib);
1548 + properties["MaxPoolSize"] = this.ParseHelper.GetAttributeValue(sourceLineNumbers, attrib);
1549 break;
1550 case "MinPoolSize":
1558 - properties["MinPoolSize"] = this.Core.GetAttributeValue(sourceLineNumbers, attrib);
1551 + properties["MinPoolSize"] = this.ParseHelper.GetAttributeValue(sourceLineNumbers, attrib);
1552 break;
1553 case "MultiInterfacePublisherFilterCLSID":
1561 - properties["MultiInterfacePublisherFilterCLSID"] = this.Core.GetAttributeValue(sourceLineNumbers, attrib);
1554 + properties["MultiInterfacePublisherFilterCLSID"] = this.ParseHelper.GetAttributeValue(sourceLineNumbers, attrib);
1555 break;
1556 case "MustRunInClientContext":
1564 - properties["MustRunInClientContext"] = YesNoType.Yes == this.Core.GetAttributeYesNoValue(sourceLineNumbers, attrib) ? "1" : "0";
1557 + properties["MustRunInClientContext"] = YesNoType.Yes == this.ParseHelper.GetAttributeYesNoValue(sourceLineNumbers, attrib) ? "1" : "0";
1558 break;
1559 case "MustRunInDefaultContext":
1567 - properties["MustRunInDefaultContext"] = YesNoType.Yes == this.Core.GetAttributeYesNoValue(sourceLineNumbers, attrib) ? "1" : "0";
1560 + properties["MustRunInDefaultContext"] = YesNoType.Yes == this.ParseHelper.GetAttributeYesNoValue(sourceLineNumbers, attrib) ? "1" : "0";
1561 break;
1562 case "ObjectPoolingEnabled":
1570 - properties["ObjectPoolingEnabled"] = YesNoType.Yes == this.Core.GetAttributeYesNoValue(sourceLineNumbers, attrib) ? "1" : "0";
1563 + properties["ObjectPoolingEnabled"] = YesNoType.Yes == this.ParseHelper.GetAttributeYesNoValue(sourceLineNumbers, attrib) ? "1" : "0";
1564 break;
1565 case "PublisherID":
1573 - properties["PublisherID"] = TryFormatGuidValue(this.Core.GetAttributeValue(sourceLineNumbers, attrib));
1566 + properties["PublisherID"] = this.TryFormatGuidValue(this.ParseHelper.GetAttributeValue(sourceLineNumbers, attrib));
1567 break;
1568 case "SoapAssemblyName":
1576 - properties["SoapAssemblyName"] = this.Core.GetAttributeValue(sourceLineNumbers, attrib);
1569 + properties["SoapAssemblyName"] = this.ParseHelper.GetAttributeValue(sourceLineNumbers, attrib);
1570 break;
1571 case "SoapTypeName":
1579 - properties["SoapTypeName"] = this.Core.GetAttributeValue(sourceLineNumbers, attrib);
1572 + properties["SoapTypeName"] = this.ParseHelper.GetAttributeValue(sourceLineNumbers, attrib);
1573 break;
1574 case "Synchronization":
1582 - string synchronizationValue = this.Core.GetAttributeValue(sourceLineNumbers, attrib);
1575 + string synchronizationValue = this.ParseHelper.GetAttributeValue(sourceLineNumbers, attrib);
1576 switch (synchronizationValue)
1577 {
1578 case "ignored":
@@ -1598,12 +1591,12 @@ namespace WixToolset.Extensions
1591 properties["Synchronization"] = "4";
1592 break;
1593 default:
1601 - this.Core.OnMessage(WixErrors.IllegalAttributeValue(sourceLineNumbers, "ComPlusComponent", "Synchronization", synchronizationValue, "ignored", "none", "supported", "required", "requiresNew"));
1594 + this.Messaging.Write(ErrorMessages.IllegalAttributeValue(sourceLineNumbers, "ComPlusComponent", "Synchronization", synchronizationValue, "ignored", "none", "supported", "required", "requiresNew"));
1595 break;
1596 }
1597 break;
1598 case "Transaction":
1606 - string transactionValue = this.Core.GetAttributeValue(sourceLineNumbers, attrib);
1599 + string transactionValue = this.ParseHelper.GetAttributeValue(sourceLineNumbers, attrib);
1600 switch (transactionValue)
1601 {
1602 case "ignored":
@@ -1622,12 +1615,12 @@ namespace WixToolset.Extensions
1615 properties["Transaction"] = "4";
1616 break;
1617 default:
1625 - this.Core.OnMessage(WixErrors.IllegalAttributeValue(sourceLineNumbers, "ComPlusComponent", "Transaction", transactionValue, "ignored", "none", "supported", "required", "requiresNew"));
1618 + this.Messaging.Write(ErrorMessages.IllegalAttributeValue(sourceLineNumbers, "ComPlusComponent", "Transaction", transactionValue, "ignored", "none", "supported", "required", "requiresNew"));
1619 break;
1620 }
1621 break;
1622 case "TxIsolationLevel":
1630 - string txIsolationLevelValue = this.Core.GetAttributeValue(sourceLineNumbers, attrib);
1623 + string txIsolationLevelValue = this.ParseHelper.GetAttributeValue(sourceLineNumbers, attrib);
1624 switch (txIsolationLevelValue)
1625 {
1626 case "any":
@@ -1646,18 +1639,18 @@ namespace WixToolset.Extensions
1639 properties["TxIsolationLevel"] = "4";
1640 break;
1641 default:
1649 - this.Core.OnMessage(WixErrors.IllegalAttributeValue(sourceLineNumbers, "ComPlusComponent", "TxIsolationLevel", txIsolationLevelValue, "any", "readUnCommitted", "readCommitted", "repeatableRead", "serializable"));
1642 + this.Messaging.Write(ErrorMessages.IllegalAttributeValue(sourceLineNumbers, "ComPlusComponent", "TxIsolationLevel", txIsolationLevelValue, "any", "readUnCommitted", "readCommitted", "repeatableRead", "serializable"));
1643 break;
1644 }
1645 break;
1646 default:
1654 - this.Core.UnexpectedAttribute(node, attrib);
1647 + this.ParseHelper.UnexpectedAttribute(node, attrib);
1648 break;
1649 }
1650 }
1651 else
1652 {
1660 - this.Core.ParseExtensionAttribute(node, attrib);
1653 + this.ParseHelper.ParseExtensionAttribute(this.Context.Extensions, intermediate, section, node, attrib);
1654 }
1655 }
1656
@@ -1668,37 +1661,37 @@ namespace WixToolset.Extensions
1661 switch (child.Name.LocalName)
1662 {
1663 case "ComPlusRoleForComponent":
1671 - this.ParseComPlusRoleForComponentElement(child, componentKey, key);
1664 + this.ParseComPlusRoleForComponentElement(intermediate, section, child, componentKey, key);
1665 break;
1666 case "ComPlusInterface":
1674 - this.ParseComPlusInterfaceElement(child, componentKey, key);
1667 + this.ParseComPlusInterfaceElement(intermediate, section, child, componentKey, key);
1668 break;
1669 case "ComPlusSubscription":
1677 - this.ParseComPlusSubscriptionElement(child, componentKey, key);
1670 + this.ParseComPlusSubscriptionElement(intermediate, section, child, componentKey, key);
1671 break;
1672 default:
1680 - this.Core.UnexpectedElement(node, child);
1673 + this.ParseHelper.UnexpectedElement(node, child);
1674 break;
1675 }
1676 }
1677 else
1678 {
1686 - this.Core.ParseExtensionElement(node, child);
1679 + this.ParseHelper.ParseExtensionElement(this.Context.Extensions, intermediate, section, node, child);
1680 }
1681 }
1682
1690 - Row row = this.Core.CreateRow(sourceLineNumbers, "ComPlusComponent");
1691 - row[0] = key;
1692 - row[1] = assemblyKey;
1693 - row[2] = clsid;
1683 + var row = this.ParseHelper.CreateRow(section, sourceLineNumbers, "ComPlusComponent");
1684 + row.Set(0, key);
1685 + row.Set(1, assemblyKey);
1686 + row.Set(2, clsid);
1687
1688 IDictionaryEnumerator propertiesEnumerator = properties.GetEnumerator();
1689 while (propertiesEnumerator.MoveNext())
1690 {
1698 - Row propertyRow = this.Core.CreateRow(sourceLineNumbers, "ComPlusComponentProperty");
1699 - propertyRow[0] = key;
1700 - propertyRow[1] = (string)propertiesEnumerator.Key;
1701 - propertyRow[2] = (string)propertiesEnumerator.Value;
1691 + var propertyRow = this.ParseHelper.CreateRow(section, sourceLineNumbers, "ComPlusComponentProperty");
1692 + propertyRow.Set(0, key);
1693 + propertyRow.Set(1, (string)propertiesEnumerator.Key);
1694 + propertyRow.Set(2, (string)propertiesEnumerator.Value);
1695 }
1696 }
1697
@@ -1708,9 +1701,9 @@ namespace WixToolset.Extensions
1701 /// <param name="node">Element to parse.</param>
1702 /// <param name="componentKey">Identifier of parent component.</param>
1703 /// <param name="cpcomponentKey">Identifier of parent COM+ component.</param>
1711 - private void ParseComPlusRoleForComponentElement(XElement node, string componentKey, string cpcomponentKey)
1704 + private void ParseComPlusRoleForComponentElement(Intermediate intermediate, IntermediateSection section, XElement node, string componentKey, string cpcomponentKey)
1705 {
1713 - SourceLineNumber sourceLineNumbers = Preprocessor.GetSourceLineNumbers(node);
1706 + SourceLineNumber sourceLineNumbers = this.ParseHelper.GetSourceLineNumbers(node);
1707
1708 string key = null;
1709 string applicationRoleKey = null;
@@ -1722,40 +1715,40 @@ namespace WixToolset.Extensions
1715 switch (attrib.Name.LocalName)
1716 {
1717 case "Id":
1725 - key = this.Core.GetAttributeIdentifierValue(sourceLineNumbers, attrib);
1718 + key = this.ParseHelper.GetAttributeIdentifierValue(sourceLineNumbers, attrib);
1719 break;
1720 case "Component":
1721 if (null != cpcomponentKey)
1722 {
1730 - this.Core.OnMessage(WixErrors.IllegalAttributeWhenNested(sourceLineNumbers, node.Name.LocalName, attrib.Name.LocalName, node.Parent.Name.LocalName));
1723 + this.Messaging.Write(ErrorMessages.IllegalAttributeWhenNested(sourceLineNumbers, node.Name.LocalName, attrib.Name.LocalName, node.Parent.Name.LocalName));
1724 }
1732 - cpcomponentKey = this.Core.GetAttributeValue(sourceLineNumbers, attrib);
1733 - this.Core.CreateSimpleReference(sourceLineNumbers, "ComPlusComponent", cpcomponentKey);
1725 + cpcomponentKey = this.ParseHelper.GetAttributeValue(sourceLineNumbers, attrib);
1726 + this.ParseHelper.CreateSimpleReference(section, sourceLineNumbers, "ComPlusComponent", cpcomponentKey);
1727 break;
1728 case "ApplicationRole":
1736 - applicationRoleKey = this.Core.GetAttributeValue(sourceLineNumbers, attrib);
1729 + applicationRoleKey = this.ParseHelper.GetAttributeValue(sourceLineNumbers, attrib);
1730 break;
1731 default:
1739 - this.Core.UnexpectedAttribute(node, attrib);
1732 + this.ParseHelper.UnexpectedAttribute(node, attrib);
1733 break;
1734 }
1735 }
1736 else
1737 {
1745 - this.Core.ParseExtensionAttribute(node, attrib);
1738 + this.ParseHelper.ParseExtensionAttribute(this.Context.Extensions, intermediate, section, node, attrib);
1739 }
1740 }
1741
1742 if (null == cpcomponentKey)
1743 {
1751 - this.Core.OnMessage(WixErrors.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "Component"));
1744 + this.Messaging.Write(ErrorMessages.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "Component"));
1745 }
1746
1754 - Row row = this.Core.CreateRow(sourceLineNumbers, "ComPlusRoleForComponent");
1755 - row[0] = key;
1756 - row[1] = cpcomponentKey;
1757 - row[2] = applicationRoleKey;
1758 - row[3] = componentKey;
1747 + var row = this.ParseHelper.CreateRow(section, sourceLineNumbers, "ComPlusRoleForComponent");
1748 + row.Set(0, key);
1749 + row.Set(1, cpcomponentKey);
1750 + row.Set(2, applicationRoleKey);
1751 + row.Set(3, componentKey);
1752 }
1753
1754 /// <summary>
@@ -1764,9 +1757,9 @@ namespace WixToolset.Extensions
1757 /// <param name="node">Element to parse.</param>
1758 /// <param name="componentKey">Identifier of parent component.</param>
1759 /// <param name="cpcomponentKey">Identifier of parent COM+ component.</param>
1767 - private void ParseComPlusInterfaceElement(XElement node, string componentKey, string cpcomponentKey)
1760 + private void ParseComPlusInterfaceElement(Intermediate intermediate, IntermediateSection section, XElement node, string componentKey, string cpcomponentKey)
1761 {
1769 - SourceLineNumber sourceLineNumbers = Preprocessor.GetSourceLineNumbers(node);
1762 + SourceLineNumber sourceLineNumbers = this.ParseHelper.GetSourceLineNumbers(node);
1763
1764 // parse attributes
1765 string key = null;
@@ -1781,25 +1774,25 @@ namespace WixToolset.Extensions
1774 switch (attrib.Name.LocalName)
1775 {
1776 case "Id":
1784 - key = this.Core.GetAttributeIdentifierValue(sourceLineNumbers, attrib);
1777 + key = this.ParseHelper.GetAttributeIdentifierValue(sourceLineNumbers, attrib);
1778 break;
1779 case "IID":
1787 - iid = "{" + this.Core.GetAttributeValue(sourceLineNumbers, attrib) + "}";
1780 + iid = "{" + this.ParseHelper.GetAttributeValue(sourceLineNumbers, attrib) + "}";
1781 break;
1782 case "Description":
1790 - properties["Description"] = this.Core.GetAttributeValue(sourceLineNumbers, attrib);
1783 + properties["Description"] = this.ParseHelper.GetAttributeValue(sourceLineNumbers, attrib);
1784 break;
1785 case "QueuingEnabled":
1793 - properties["QueuingEnabled"] = YesNoType.Yes == this.Core.GetAttributeYesNoValue(sourceLineNumbers, attrib) ? "1" : "0";
1786 + properties["QueuingEnabled"] = YesNoType.Yes == this.ParseHelper.GetAttributeYesNoValue(sourceLineNumbers, attrib) ? "1" : "0";
1787 break;
1788 default:
1796 - this.Core.UnexpectedAttribute(node, attrib);
1789 + this.ParseHelper.UnexpectedAttribute(node, attrib);
1790 break;
1791 }
1792 }
1793 else
1794 {
1802 - this.Core.ParseExtensionAttribute(node, attrib);
1795 + this.ParseHelper.ParseExtensionAttribute(this.Context.Extensions, intermediate, section, node, attrib);
1796 }
1797 }
1798
@@ -1810,34 +1803,34 @@ namespace WixToolset.Extensions
1803 switch (child.Name.LocalName)
1804 {
1805 case "ComPlusRoleForInterface":
1813 - this.ParseComPlusRoleForInterfaceElement(child, componentKey, key);
1806 + this.ParseComPlusRoleForInterfaceElement(intermediate, section, child, componentKey, key);
1807 break;
1808 case "ComPlusMethod":
1816 - this.ParseComPlusMethodElement(child, componentKey, key);
1809 + this.ParseComPlusMethodElement(intermediate, section, child, componentKey, key);
1810 break;
1811 default:
1819 - this.Core.UnexpectedElement(node, child);
1812 + this.ParseHelper.UnexpectedElement(node, child);
1813 break;
1814 }
1815 }
1816 else
1817 {
1825 - this.Core.ParseExtensionElement(node, child);
1818 + this.ParseHelper.ParseExtensionElement(this.Context.Extensions, intermediate, section, node, child);
1819 }
1820 }
1821
1829 - Row row = this.Core.CreateRow(sourceLineNumbers, "ComPlusInterface");
1830 - row[0] = key;
1831 - row[1] = cpcomponentKey;
1832 - row[2] = iid;
1822 + var row = this.ParseHelper.CreateRow(section, sourceLineNumbers, "ComPlusInterface");
1823 + row.Set(0, key);
1824 + row.Set(1, cpcomponentKey);
1825 + row.Set(2, iid);
1826
1827 IDictionaryEnumerator propertiesEnumerator = properties.GetEnumerator();
1828 while (propertiesEnumerator.MoveNext())
1829 {
1837 - Row propertyRow = this.Core.CreateRow(sourceLineNumbers, "ComPlusInterfaceProperty");
1838 - propertyRow[0] = key;
1839 - propertyRow[1] = (string)propertiesEnumerator.Key;
1840 - propertyRow[2] = (string)propertiesEnumerator.Value;
1830 + var propertyRow = this.ParseHelper.CreateRow(section, sourceLineNumbers, "ComPlusInterfaceProperty");
1831 + propertyRow.Set(0, key);
1832 + propertyRow.Set(1, (string)propertiesEnumerator.Key);
1833 + propertyRow.Set(2, (string)propertiesEnumerator.Value);
1834 }
1835 }
1836
@@ -1847,9 +1840,9 @@ namespace WixToolset.Extensions
1840 /// <param name="node">Element to parse.</param>
1841 /// <param name="componentKey">Identifier of parent component.</param>
1842 /// <param name="interfaceKey">Identifier of parent interface.</param>
1850 - private void ParseComPlusRoleForInterfaceElement(XElement node, string componentKey, string interfaceKey)
1843 + private void ParseComPlusRoleForInterfaceElement(Intermediate intermediate, IntermediateSection section, XElement node, string componentKey, string interfaceKey)
1844 {
1852 - SourceLineNumber sourceLineNumbers = Preprocessor.GetSourceLineNumbers(node);
1845 + SourceLineNumber sourceLineNumbers = this.ParseHelper.GetSourceLineNumbers(node);
1846
1847 string key = null;
1848 string applicationRoleKey = null;
@@ -1861,40 +1854,40 @@ namespace WixToolset.Extensions
1854 switch (attrib.Name.LocalName)
1855 {
1856 case "Id":
1864 - key = this.Core.GetAttributeIdentifierValue(sourceLineNumbers, attrib);
1857 + key = this.ParseHelper.GetAttributeIdentifierValue(sourceLineNumbers, attrib);
1858 break;
1859 case "Interface":
1860 if (null != interfaceKey)
1861 {
1869 - this.Core.OnMessage(WixErrors.IllegalAttributeWhenNested(sourceLineNumbers, node.Name.LocalName, attrib.Name.LocalName, node.Parent.Name.LocalName));
1862 + this.Messaging.Write(ErrorMessages.IllegalAttributeWhenNested(sourceLineNumbers, node.Name.LocalName, attrib.Name.LocalName, node.Parent.Name.LocalName));
1863 }
1871 - interfaceKey = this.Core.GetAttributeValue(sourceLineNumbers, attrib);
1872 - this.Core.CreateSimpleReference(sourceLineNumbers, "ComPlusInterface", interfaceKey);
1864 + interfaceKey = this.ParseHelper.GetAttributeValue(sourceLineNumbers, attrib);
1865 + this.ParseHelper.CreateSimpleReference(section, sourceLineNumbers, "ComPlusInterface", interfaceKey);
1866 break;
1867 case "ApplicationRole":
1875 - applicationRoleKey = this.Core.GetAttributeValue(sourceLineNumbers, attrib);
1868 + applicationRoleKey = this.ParseHelper.GetAttributeValue(sourceLineNumbers, attrib);
1869 break;
1870 default:
1878 - this.Core.UnexpectedAttribute(node, attrib);
1871 + this.ParseHelper.UnexpectedAttribute(node, attrib);
1872 break;
1873 }
1874 }
1875 else
1876 {
1884 - this.Core.ParseExtensionAttribute(node, attrib);
1877 + this.ParseHelper.ParseExtensionAttribute(this.Context.Extensions, intermediate, section, node, attrib);
1878 }
1879 }
1880
1881 if (null == interfaceKey)
1882 {
1890 - this.Core.OnMessage(WixErrors.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "Interface"));
1883 + this.Messaging.Write(ErrorMessages.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "Interface"));
1884 }
1885
1893 - Row row = this.Core.CreateRow(sourceLineNumbers, "ComPlusRoleForInterface");
1894 - row[0] = key;
1895 - row[1] = interfaceKey;
1896 - row[2] = applicationRoleKey;
1897 - row[3] = componentKey;
1886 + var row = this.ParseHelper.CreateRow(section, sourceLineNumbers, "ComPlusRoleForInterface");
1887 + row.Set(0, key);
1888 + row.Set(1, interfaceKey);
1889 + row.Set(2, applicationRoleKey);
1890 + row.Set(3, componentKey);
1891 }
1892
1893 /// <summary>
@@ -1903,9 +1896,9 @@ namespace WixToolset.Extensions
1896 /// <param name="node">Element to parse.</param>
1897 /// <param name="componentKey">Identifier of parent component.</param>
1898 /// <param name="interfaceKey">Identifier of parent interface.</param>
1906 - private void ParseComPlusMethodElement(XElement node, string componentKey, string interfaceKey)
1899 + private void ParseComPlusMethodElement(Intermediate intermediate, IntermediateSection section, XElement node, string componentKey, string interfaceKey)
1900 {
1908 - SourceLineNumber sourceLineNumbers = Preprocessor.GetSourceLineNumbers(node);
1901 + SourceLineNumber sourceLineNumbers = this.ParseHelper.GetSourceLineNumbers(node);
1902
1903 string key = null;
1904 int index = CompilerConstants.IntegerNotSet;
@@ -1920,28 +1913,28 @@ namespace WixToolset.Extensions
1913 switch (attrib.Name.LocalName)
1914 {
1915 case "Id":
1923 - key = this.Core.GetAttributeIdentifierValue(sourceLineNumbers, attrib);
1916 + key = this.ParseHelper.GetAttributeIdentifierValue(sourceLineNumbers, attrib);
1917 break;
1918 case "Index":
1926 - index = this.Core.GetAttributeIntegerValue(sourceLineNumbers, attrib, 0, int.MaxValue);
1919 + index = this.ParseHelper.GetAttributeIntegerValue(sourceLineNumbers, attrib, 0, int.MaxValue);
1920 break;
1921 case "Name":
1929 - name = this.Core.GetAttributeValue(sourceLineNumbers, attrib);
1922 + name = this.ParseHelper.GetAttributeValue(sourceLineNumbers, attrib);
1923 break;
1924 case "AutoComplete":
1932 - properties["AutoComplete"] = YesNoType.Yes == this.Core.GetAttributeYesNoValue(sourceLineNumbers, attrib) ? "1" : "0";
1925 + properties["AutoComplete"] = YesNoType.Yes == this.ParseHelper.GetAttributeYesNoValue(sourceLineNumbers, attrib) ? "1" : "0";
1926 break;
1927 case "Description":
1935 - properties["Description"] = this.Core.GetAttributeValue(sourceLineNumbers, attrib);
1928 + properties["Description"] = this.ParseHelper.GetAttributeValue(sourceLineNumbers, attrib);
1929 break;
1930 default:
1938 - this.Core.UnexpectedAttribute(node, attrib);
1931 + this.ParseHelper.UnexpectedAttribute(node, attrib);
1932 break;
1933 }
1934 }
1935 else
1936 {
1944 - this.Core.ParseExtensionAttribute(node, attrib);
1937 + this.ParseHelper.ParseExtensionAttribute(this.Context.Extensions, intermediate, section, node, attrib);
1938 }
1939 }
1940
@@ -1952,40 +1945,40 @@ namespace WixToolset.Extensions
1945 switch (child.Name.LocalName)
1946 {
1947 case "ComPlusRoleForMethod":
1955 - this.ParseComPlusRoleForMethodElement(child, componentKey, key);
1948 + this.ParseComPlusRoleForMethodElement(intermediate, section, child, componentKey, key);
1949 break;
1950 default:
1958 - this.Core.UnexpectedElement(node, child);
1951 + this.ParseHelper.UnexpectedElement(node, child);
1952 break;
1953 }
1954 }
1955 else
1956 {
1964 - this.Core.ParseExtensionElement(node, child);
1957 + this.ParseHelper.ParseExtensionElement(this.Context.Extensions, intermediate, section, node, child);
1958 }
1959 }
1960
1961 if (CompilerConstants.IntegerNotSet == index && null == name)
1962 {
1970 - this.Core.OnMessage(ComPlusErrors.RequiredAttribute(sourceLineNumbers, node.Name.LocalName, "Index", "Name"));
1963 + this.Messaging.Write(ComPlusErrors.RequiredAttribute(sourceLineNumbers, node.Name.LocalName, "Index", "Name"));
1964 }
1965
1973 - Row row = this.Core.CreateRow(sourceLineNumbers, "ComPlusMethod");
1974 - row[0] = key;
1975 - row[1] = interfaceKey;
1966 + var row = this.ParseHelper.CreateRow(section, sourceLineNumbers, "ComPlusMethod");
1967 + row.Set(0, key);
1968 + row.Set(1, interfaceKey);
1969 if (CompilerConstants.IntegerNotSet != index)
1970 {
1978 - row[2] = index;
1971 + row.Set(2, index);
1972 }
1980 - row[3] = name;
1973 + row.Set(3, name);
1974
1975 IDictionaryEnumerator propertiesEnumerator = properties.GetEnumerator();
1976 while (propertiesEnumerator.MoveNext())
1977 {
1985 - Row propertyRow = this.Core.CreateRow(sourceLineNumbers, "ComPlusMethodProperty");
1986 - propertyRow[0] = key;
1987 - propertyRow[1] = (string)propertiesEnumerator.Key;
1988 - propertyRow[2] = (string)propertiesEnumerator.Value;
1978 + var propertyRow = this.ParseHelper.CreateRow(section, sourceLineNumbers, "ComPlusMethodProperty");
1979 + propertyRow.Set(0, key);
1980 + propertyRow.Set(1, (string)propertiesEnumerator.Key);
1981 + propertyRow.Set(2, (string)propertiesEnumerator.Value);
1982 }
1983 }
1984
@@ -1995,9 +1988,9 @@ namespace WixToolset.Extensions
1988 /// <param name="node">Element to parse.</param>
1989 /// <param name="componentKey">Identifier of parent component.</param>
1990 /// <param name="methodKey">Identifier of parent method.</param>
1998 - private void ParseComPlusRoleForMethodElement(XElement node, string componentKey, string methodKey)
1991 + private void ParseComPlusRoleForMethodElement(Intermediate intermediate, IntermediateSection section, XElement node, string componentKey, string methodKey)
1992 {
2000 - SourceLineNumber sourceLineNumbers = Preprocessor.GetSourceLineNumbers(node);
1993 + SourceLineNumber sourceLineNumbers = this.ParseHelper.GetSourceLineNumbers(node);
1994
1995 string key = null;
1996 string applicationRoleKey = null;
@@ -2009,40 +2002,40 @@ namespace WixToolset.Extensions
2002 switch (attrib.Name.LocalName)
2003 {
2004 case "Id":
2012 - key = this.Core.GetAttributeIdentifierValue(sourceLineNumbers, attrib);
2005 + key = this.ParseHelper.GetAttributeIdentifierValue(sourceLineNumbers, attrib);
2006 break;
2007 case "Method":
2008 if (null != methodKey)
2009 {
2017 - this.Core.OnMessage(WixErrors.IllegalAttributeWhenNested(sourceLineNumbers, node.Name.LocalName, attrib.Name.LocalName, node.Parent.Name.LocalName));
2010 + this.Messaging.Write(ErrorMessages.IllegalAttributeWhenNested(sourceLineNumbers, node.Name.LocalName, attrib.Name.LocalName, node.Parent.Name.LocalName));
2011 }
2019 - methodKey = this.Core.GetAttributeValue(sourceLineNumbers, attrib);
2020 - this.Core.CreateSimpleReference(sourceLineNumbers, "ComPlusMethod", methodKey);
2012 + methodKey = this.ParseHelper.GetAttributeValue(sourceLineNumbers, attrib);
2013 + this.ParseHelper.CreateSimpleReference(section, sourceLineNumbers, "ComPlusMethod", methodKey);
2014 break;
2015 case "ApplicationRole":
2023 - applicationRoleKey = this.Core.GetAttributeValue(sourceLineNumbers, attrib);
2016 + applicationRoleKey = this.ParseHelper.GetAttributeValue(sourceLineNumbers, attrib);
2017 break;
2018 default:
2026 - this.Core.UnexpectedAttribute(node, attrib);
2019 + this.ParseHelper.UnexpectedAttribute(node, attrib);
2020 break;
2021 }
2022 }
2023 else
2024 {
2032 - this.Core.ParseExtensionAttribute(node, attrib);
2025 + this.ParseHelper.ParseExtensionAttribute(this.Context.Extensions, intermediate, section, node, attrib);
2026 }
2027 }
2028
2029 if (null == methodKey)
2030 {
2038 - this.Core.OnMessage(WixErrors.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "Method"));
2031 + this.Messaging.Write(ErrorMessages.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "Method"));
2032 }
2033
2041 - Row row = this.Core.CreateRow(sourceLineNumbers, "ComPlusRoleForMethod");
2042 - row[0] = key;
2043 - row[1] = methodKey;
2044 - row[2] = applicationRoleKey;
2045 - row[3] = componentKey;
2034 + var row = this.ParseHelper.CreateRow(section, sourceLineNumbers, "ComPlusRoleForMethod");
2035 + row.Set(0, key);
2036 + row.Set(1, methodKey);
2037 + row.Set(2, applicationRoleKey);
2038 + row.Set(3, componentKey);
2039 }
2040
2041 /// <summary>
@@ -2051,9 +2044,9 @@ namespace WixToolset.Extensions
2044 /// <param name="node">Element to parse.</param>
2045 /// <param name="componentKey">Identifier of parent component.</param>
2046 /// <param name="cpcomponentKey">Identifier of parent COM+ component.</param>
2054 - private void ParseComPlusSubscriptionElement(XElement node, string componentKey, string cpcomponentKey)
2047 + private void ParseComPlusSubscriptionElement(Intermediate intermediate, IntermediateSection section, XElement node, string componentKey, string cpcomponentKey)
2048 {
2056 - SourceLineNumber sourceLineNumbers = Preprocessor.GetSourceLineNumbers(node);
2049 + SourceLineNumber sourceLineNumbers = this.ParseHelper.GetSourceLineNumbers(node);
2050
2051 string key = null;
2052 string id = null;
@@ -2070,95 +2063,95 @@ namespace WixToolset.Extensions
2063 switch (attrib.Name.LocalName)
2064 {
2065 case "Id":
2073 - key = this.Core.GetAttributeIdentifierValue(sourceLineNumbers, attrib);
2066 + key = this.ParseHelper.GetAttributeIdentifierValue(sourceLineNumbers, attrib);
2067 break;
2068 case "Component":
2069 if (null != cpcomponentKey)
2070 {
2078 - this.Core.OnMessage(WixErrors.IllegalAttributeWhenNested(sourceLineNumbers, node.Name.LocalName, attrib.Name.LocalName, node.Parent.Name.LocalName));
2071 + this.Messaging.Write(ErrorMessages.IllegalAttributeWhenNested(sourceLineNumbers, node.Name.LocalName, attrib.Name.LocalName, node.Parent.Name.LocalName));
2072 }
2080 - cpcomponentKey = this.Core.GetAttributeValue(sourceLineNumbers, attrib);
2081 - this.Core.CreateSimpleReference(sourceLineNumbers, "ComPlusComponent", cpcomponentKey);
2073 + cpcomponentKey = this.ParseHelper.GetAttributeValue(sourceLineNumbers, attrib);
2074 + this.ParseHelper.CreateSimpleReference(section, sourceLineNumbers, "ComPlusComponent", cpcomponentKey);
2075 break;
2076 case "SubscriptionId":
2084 - id = TryFormatGuidValue(this.Core.GetAttributeValue(sourceLineNumbers, attrib));
2077 + id = this.TryFormatGuidValue(this.ParseHelper.GetAttributeValue(sourceLineNumbers, attrib));
2078 break;
2079 case "Name":
2087 - name = this.Core.GetAttributeValue(sourceLineNumbers, attrib);
2080 + name = this.ParseHelper.GetAttributeValue(sourceLineNumbers, attrib);
2081 break;
2082 case "EventCLSID":
2090 - eventCLSID = this.Core.GetAttributeValue(sourceLineNumbers, attrib);
2083 + eventCLSID = this.ParseHelper.GetAttributeValue(sourceLineNumbers, attrib);
2084 break;
2085 case "PublisherID":
2093 - publisherID = TryFormatGuidValue(this.Core.GetAttributeValue(sourceLineNumbers, attrib));
2086 + publisherID = this.TryFormatGuidValue(this.ParseHelper.GetAttributeValue(sourceLineNumbers, attrib));
2087 break;
2088 case "Description":
2096 - properties["Description"] = this.Core.GetAttributeValue(sourceLineNumbers, attrib);
2089 + properties["Description"] = this.ParseHelper.GetAttributeValue(sourceLineNumbers, attrib);
2090 break;
2091 case "Enabled":
2099 - properties["Enabled"] = YesNoType.Yes == this.Core.GetAttributeYesNoValue(sourceLineNumbers, attrib) ? "1" : "0";
2092 + properties["Enabled"] = YesNoType.Yes == this.ParseHelper.GetAttributeYesNoValue(sourceLineNumbers, attrib) ? "1" : "0";
2093 break;
2094 case "EventClassPartitionID":
2102 - properties["EventClassPartitionID"] = this.Core.GetAttributeValue(sourceLineNumbers, attrib);
2095 + properties["EventClassPartitionID"] = this.ParseHelper.GetAttributeValue(sourceLineNumbers, attrib);
2096 break;
2097 case "FilterCriteria":
2105 - properties["FilterCriteria"] = this.Core.GetAttributeValue(sourceLineNumbers, attrib);
2098 + properties["FilterCriteria"] = this.ParseHelper.GetAttributeValue(sourceLineNumbers, attrib);
2099 break;
2100 case "InterfaceID":
2108 - properties["InterfaceID"] = this.Core.GetAttributeValue(sourceLineNumbers, attrib);
2101 + properties["InterfaceID"] = this.ParseHelper.GetAttributeValue(sourceLineNumbers, attrib);
2102 break;
2103 case "MachineName":
2111 - properties["MachineName"] = this.Core.GetAttributeValue(sourceLineNumbers, attrib);
2104 + properties["MachineName"] = this.ParseHelper.GetAttributeValue(sourceLineNumbers, attrib);
2105 break;
2106 case "MethodName":
2114 - properties["MethodName"] = this.Core.GetAttributeValue(sourceLineNumbers, attrib);
2107 + properties["MethodName"] = this.ParseHelper.GetAttributeValue(sourceLineNumbers, attrib);
2108 break;
2109 case "PerUser":
2117 - properties["PerUser"] = YesNoType.Yes == this.Core.GetAttributeYesNoValue(sourceLineNumbers, attrib) ? "1" : "0";
2110 + properties["PerUser"] = YesNoType.Yes == this.ParseHelper.GetAttributeYesNoValue(sourceLineNumbers, attrib) ? "1" : "0";
2111 break;
2112 case "Queued":
2120 - properties["Queued"] = YesNoType.Yes == this.Core.GetAttributeYesNoValue(sourceLineNumbers, attrib) ? "1" : "0";
2113 + properties["Queued"] = YesNoType.Yes == this.ParseHelper.GetAttributeYesNoValue(sourceLineNumbers, attrib) ? "1" : "0";
2114 break;
2115 case "SubscriberMoniker":
2123 - properties["SubscriberMoniker"] = this.Core.GetAttributeValue(sourceLineNumbers, attrib);
2116 + properties["SubscriberMoniker"] = this.ParseHelper.GetAttributeValue(sourceLineNumbers, attrib);
2117 break;
2118 case "UserName":
2126 - properties["UserName"] = this.Core.GetAttributeValue(sourceLineNumbers, attrib);
2119 + properties["UserName"] = this.ParseHelper.GetAttributeValue(sourceLineNumbers, attrib);
2120 break;
2121 default:
2129 - this.Core.UnexpectedAttribute(node, attrib);
2122 + this.ParseHelper.UnexpectedAttribute(node, attrib);
2123 break;
2124 }
2125 }
2126 else
2127 {
2135 - this.Core.ParseExtensionAttribute(node, attrib);
2128 + this.ParseHelper.ParseExtensionAttribute(this.Context.Extensions, intermediate, section, node, attrib);
2129 }
2130 }
2131
2132 if (null == cpcomponentKey)
2133 {
2141 - this.Core.OnMessage(WixErrors.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "Component"));
2134 + this.Messaging.Write(ErrorMessages.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "Component"));
2135 }
2136
2144 - this.Core.ParseForExtensionElements(node);
2137 + this.ParseHelper.ParseForExtensionElements(this.Context.Extensions, intermediate, section, node);
2138
2146 - Row row = this.Core.CreateRow(sourceLineNumbers, "ComPlusSubscription");
2147 - row[0] = key;
2148 - row[1] = cpcomponentKey;
2149 - row[2] = componentKey;
2150 - row[3] = id;
2151 - row[4] = name;
2152 - row[5] = eventCLSID;
2153 - row[6] = publisherID;
2139 + var row = this.ParseHelper.CreateRow(section, sourceLineNumbers, "ComPlusSubscription");
2140 + row.Set(0, key);
2141 + row.Set(1, cpcomponentKey);
2142 + row.Set(2, componentKey);
2143 + row.Set(3, id);
2144 + row.Set(4, name);
2145 + row.Set(5, eventCLSID);
2146 + row.Set(6, publisherID);
2147
2148 IDictionaryEnumerator propertiesEnumerator = properties.GetEnumerator();
2149 while (propertiesEnumerator.MoveNext())
2150 {
2158 - Row propertyRow = this.Core.CreateRow(sourceLineNumbers, "ComPlusSubscriptionProperty");
2159 - propertyRow[0] = key;
2160 - propertyRow[1] = (string)propertiesEnumerator.Key;
2161 - propertyRow[2] = (string)propertiesEnumerator.Value;
2151 + var propertyRow = this.ParseHelper.CreateRow(section, sourceLineNumbers, "ComPlusSubscriptionProperty");
2152 + propertyRow.Set(0, key);
2153 + propertyRow.Set(1, (string)propertiesEnumerator.Key);
2154 + propertyRow.Set(2, (string)propertiesEnumerator.Value);
2155 }
2156 }
2157
src/wixext/ComPlusDecompiler.cs
+3 -1
@@ -1,7 +1,8 @@
1 // Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information.
2
3 -namespace WixToolset.Extensions
3 +namespace WixToolset.ComPlus
4 {
5 +#if TODO_CONSIDER_DECOMPILER
6 using System;
7 using System.Collections;
8 using System.Globalization;
@@ -1840,4 +1841,5 @@ namespace WixToolset.Extensions
1841 }
1842 }
1843 }
1844 +#endif
1845 }
src/wixext/ComPlusErrors.cs new
+72
@@ -0,0 +1,72 @@
1 +// Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information.
2 +
3 +namespace WixToolset.ComPlus
4 +{
5 + using System;
6 + using System.Resources;
7 + using WixToolset.Data;
8 +
9 + public static class ComPlusErrors
10 + {
11 + public static Message IllegalAttributeWithoutComponent(SourceLineNumber sourceLineNumbers, string elementName, string attributeName)
12 + {
13 + return Message(sourceLineNumbers, Ids.IllegalAttributeWithoutComponent, "The {0}/@{1} attribute cannot be specified unless the element has a component as an ancestor. A {0} that does not have a component ancestor is not installed.", elementName, attributeName);
14 + }
15 +
16 + public static Message IllegalElementWithoutComponent(SourceLineNumber sourceLineNumbers, string elementName)
17 + {
18 + return Message(sourceLineNumbers, Ids.IllegalElementWithoutComponent, "The {0} element cannot be specified unless the element has a component as an ancestor. A {0} that does not have a component ancestor is not installed.", elementName);
19 + }
20 +
21 + public static Message RequiredAttribute(SourceLineNumber sourceLineNumbers, string elementName, string attributeName1, string attributeName2)
22 + {
23 + return Message(sourceLineNumbers, Ids.RequiredAttribute, "A {0} element must have either a {1} attribute or a {2} attribute, or both set.", elementName, attributeName1, attributeName2);
24 + }
25 +
26 + public static Message RequiredAttributeNotUnderComponent(SourceLineNumber sourceLineNumbers, string elementName, string attributeName1, string attributeName2)
27 + {
28 + return Message(sourceLineNumbers, Ids.RequiredAttributeNotUnderComponent, "A {0} element not nested under a component must have either a {1} attribute or a {2} attribute, or both set.", elementName, attributeName1, attributeName2);
29 + }
30 +
31 + public static Message RequiredAttributeUnderComponent(SourceLineNumber sourceLineNumbers, string elementName, string attributeName)
32 + {
33 + return Message(sourceLineNumbers, Ids.RequiredAttributeUnderComponent, "The {0}/@{1} attribute must be provided when {0} element is nested under a component.", elementName, attributeName);
34 + }
35 +
36 + public static Message UnexpectedAttributeWithOtherValue(SourceLineNumber sourceLineNumbers, string elementName, string attributeName, string otherAttributeName, string otherValue)
37 + {
38 + return Message(sourceLineNumbers, Ids.UnexpectedAttributeWithOtherValue, "The {0}/@{1} attribute cannot coexist with the {2} attribute's value of '{3}'.", elementName, attributeName, otherAttributeName, otherValue);
39 + }
40 +
41 + public static Message UnexpectedAttributeWithOtherValue(SourceLineNumber sourceLineNumbers, string elementName, string attributeName, string value, string otherAttributeName, string otherValue)
42 + {
43 + return Message(sourceLineNumbers, Ids.UnexpectedAttributeWithOtherValue, "The {0}/@{1} attribute's value, '{2}', cannot coexist with the {3} attribute's value of '{4}'.", elementName, attributeName, value, otherAttributeName, otherValue);
44 + }
45 +
46 + public static Message UnexpectedAttributeWithoutOtherValue(SourceLineNumber sourceLineNumbers, string elementName, string attributeName, string otherAttributeName, string otherValue)
47 + {
48 + return Message(sourceLineNumbers, Ids.UnexpectedAttributeWithoutOtherValue, "The {0}/@{1} cannot be provided unless the {2} attribute is provided with a value of '{3}'.", elementName, attributeName, otherAttributeName, otherValue);
49 + }
50 +
51 + private static Message Message(SourceLineNumber sourceLineNumber, Ids id, string format, params object[] args)
52 + {
53 + return new Message(sourceLineNumber, MessageLevel.Error, (int)id, format, args);
54 + }
55 +
56 + private static Message Message(SourceLineNumber sourceLineNumber, Ids id, ResourceManager resourceManager, string resourceName, params object[] args)
57 + {
58 + return new Message(sourceLineNumber, MessageLevel.Error, (int)id, resourceManager, resourceName, args);
59 + }
60 +
61 + public enum Ids
62 + {
63 + IllegalAttributeWithoutComponent = 6000,
64 + IllegalElementWithoutComponent = 6001,
65 + UnexpectedAttributeWithOtherValue = 6002,
66 + UnexpectedAttributeWithoutOtherValue = 6003,
67 + RequiredAttributeUnderComponent = 6004,
68 + RequiredAttribute = 6005,
69 + RequiredAttributeNotUnderComponent = 6006,
70 + }
71 + }
72 +}
src/wixext/ComPlusExtensionData.cs
+8 -42
@@ -1,64 +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.Extensions
3 +namespace WixToolset.ComPlus
4 {
5 - using System;
6 - using System.Reflection;
5 using WixToolset.Data;
6 using WixToolset.Extensibility;
7
8 /// <summary>
9 /// The WiX Toolset COM+ Extension.
10 /// </summary>
13 - public sealed class ComPlusExtensionData : ExtensionData
11 + public sealed class ComPlusExtensionData : BaseExtensionData
12 {
13 /// <summary>
14 /// Gets the default culture.
15 /// </summary>
16 /// <value>The default culture.</value>
19 - public override string DefaultCulture
20 - {
21 - get { return "en-us"; }
22 - }
23 -
24 - /// <summary>
25 - /// Gets the optional table definitions for this extension.
26 - /// </summary>
27 - /// <value>The optional table definitions for this extension.</value>
28 - public override TableDefinitionCollection TableDefinitions
29 - {
30 - get
31 - {
32 - return ComPlusExtensionData.GetExtensionTableDefinitions();
33 - }
34 - }
35 -
36 - /// <summary>
37 - /// Gets the library associated with this extension.
38 - /// </summary>
39 - /// <param name="tableDefinitions">The table definitions to use while loading the library.</param>
40 - /// <returns>The loaded library.</returns>
41 - public override Library GetLibrary(TableDefinitionCollection tableDefinitions)
42 - {
43 - return ComPlusExtensionData.GetExtensionLibrary(tableDefinitions);
44 - }
17 + public override string DefaultCulture => "en-US";
18
46 - /// <summary>
47 - /// Internal mechanism to access the extension's table definitions.
48 - /// </summary>
49 - /// <returns>Extension's table definitions.</returns>
50 - internal static TableDefinitionCollection GetExtensionTableDefinitions()
19 + public override bool TryGetTupleDefinitionByName(string name, out IntermediateTupleDefinition tupleDefinition)
20 {
52 - return ExtensionData.LoadTableDefinitionHelper(Assembly.GetExecutingAssembly(), "WixToolset.Extensions.Data.tables.xml");
21 + tupleDefinition = ComPlusTupleDefinitions.ByName(name);
22 + return tupleDefinition != null;
23 }
24
55 - /// <summary>
56 - /// Internal mechanism to access the extension's library.
57 - /// </summary>
58 - /// <returns>Extension's library.</returns>
59 - internal static Library GetExtensionLibrary(TableDefinitionCollection tableDefinitions)
25 + public override Intermediate GetLibrary(ITupleDefinitionCreator tupleDefinitions)
26 {
61 - return ExtensionData.LoadLibraryHelper(Assembly.GetExecutingAssembly(), "WixToolset.Extensions.Data.complus.wixlib", tableDefinitions);
27 + return Intermediate.Load(typeof(ComPlusExtensionData).Assembly, "WixToolset.ComPlus.complus.wixlib", tupleDefinitions);
28 }
29 }
30 }
src/wixext/ComPlusExtensionFactory.cs new
+18
@@ -0,0 +1,18 @@
1 +// Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information.
2 +
3 +namespace WixToolset.ComPlus
4 +{
5 + using System;
6 + using System.Collections.Generic;
7 + using WixToolset.Extensibility;
8 +
9 + public class ComPlusExtensionFactory : BaseExtensionFactory
10 + {
11 + protected override IEnumerable<Type> ExtensionTypes => new[]
12 + {
13 + typeof(ComPlusCompiler),
14 + typeof(ComPlusExtensionData),
15 + typeof(ComPlusWindowsInstallerBackendBinderExtension),
16 + };
17 + }
18 +}
src/wixext/ComPlusWarnings.cs new
+31
@@ -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.ComPlus
4 +{
5 + using System;
6 + using System.Resources;
7 + using WixToolset.Data;
8 +
9 + public static class ComPlusWarnings
10 + {
11 + public static Message MissingComponents(SourceLineNumber sourceLineNumbers)
12 + {
13 + return Message(sourceLineNumbers, Ids.MissingComponents, "The ComPlusAssembly element has a Type attribute with a value of 'native', but the element does not contain any ComPlusComponent elements. All components contained in a native assembly must be listed, or they will not be correctly removed during uninstall.");
14 + }
15 +
16 + private static Message Message(SourceLineNumber sourceLineNumber, Ids id, string format, params object[] args)
17 + {
18 + return new Message(sourceLineNumber, MessageLevel.Warning, (int)id, format, args);
19 + }
20 +
21 + private static Message Message(SourceLineNumber sourceLineNumber, Ids id, ResourceManager resourceManager, string resourceName, params object[] args)
22 + {
23 + return new Message(sourceLineNumber, MessageLevel.Warning, (int)id, resourceManager, resourceName, args);
24 + }
25 +
26 + public enum Ids
27 + {
28 + MissingComponents = 6007,
29 + }
30 + }
31 +}
src/wixext/ComPlusWindowsInstallerBackendBinderExtension.cs new
+26
@@ -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.ComPlus
4 +{
5 + using System.Linq;
6 + using System.Xml;
7 + using WixToolset.Data.WindowsInstaller;
8 + using WixToolset.Extensibility;
9 +
10 + public class ComPlusWindowsInstallerBackendBinderExtension : BaseWindowsInstallerBackendBinderExtension
11 + {
12 + private static readonly TableDefinition[] Tables = LoadTables();
13 +
14 + protected override TableDefinition[] TableDefinitionsForTuples => Tables;
15 +
16 + private static TableDefinition[] LoadTables()
17 + {
18 + using (var resourceStream = typeof(ComPlusWindowsInstallerBackendBinderExtension).Assembly.GetManifestResourceStream("WixToolset.ComPlus.tables.xml"))
19 + using (var reader = XmlReader.Create(resourceStream))
20 + {
21 + var tables = TableDefinitionCollection.Load(reader);
22 + return tables.ToArray();
23 + }
24 + }
25 + }
26 +}
src/wixext/Tuples/ComPlusApplicationPropertyTuple.cs new
+63
@@ -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.ComPlus
4 +{
5 + using WixToolset.Data;
6 + using WixToolset.ComPlus.Tuples;
7 +
8 + public static partial class ComPlusTupleDefinitions
9 + {
10 + public static readonly IntermediateTupleDefinition ComPlusApplicationProperty = new IntermediateTupleDefinition(
11 + ComPlusTupleDefinitionType.ComPlusApplicationProperty.ToString(),
12 + new[]
13 + {
14 + new IntermediateFieldDefinition(nameof(ComPlusApplicationPropertyTupleFields.Application_), IntermediateFieldType.String),
15 + new IntermediateFieldDefinition(nameof(ComPlusApplicationPropertyTupleFields.Name), IntermediateFieldType.String),
16 + new IntermediateFieldDefinition(nameof(ComPlusApplicationPropertyTupleFields.Value), IntermediateFieldType.String),
17 + },
18 + typeof(ComPlusApplicationPropertyTuple));
19 + }
20 +}
21 +
22 +namespace WixToolset.ComPlus.Tuples
23 +{
24 + using WixToolset.Data;
25 +
26 + public enum ComPlusApplicationPropertyTupleFields
27 + {
28 + Application_,
29 + Name,
30 + Value,
31 + }
32 +
33 + public class ComPlusApplicationPropertyTuple : IntermediateTuple
34 + {
35 + public ComPlusApplicationPropertyTuple() : base(ComPlusTupleDefinitions.ComPlusApplicationProperty, null, null)
36 + {
37 + }
38 +
39 + public ComPlusApplicationPropertyTuple(SourceLineNumber sourceLineNumber, Identifier id = null) : base(ComPlusTupleDefinitions.ComPlusApplicationProperty, sourceLineNumber, id)
40 + {
41 + }
42 +
43 + public IntermediateField this[ComPlusApplicationPropertyTupleFields index] => this.Fields[(int)index];
44 +
45 + public string Application_
46 + {
47 + get => this.Fields[(int)ComPlusApplicationPropertyTupleFields.Application_].AsString();
48 + set => this.Set((int)ComPlusApplicationPropertyTupleFields.Application_, value);
49 + }
50 +
51 + public string Name
52 + {
53 + get => this.Fields[(int)ComPlusApplicationPropertyTupleFields.Name].AsString();
54 + set => this.Set((int)ComPlusApplicationPropertyTupleFields.Name, value);
55 + }
56 +
57 + public string Value
58 + {
59 + get => this.Fields[(int)ComPlusApplicationPropertyTupleFields.Value].AsString();
60 + set => this.Set((int)ComPlusApplicationPropertyTupleFields.Value, value);
61 + }
62 + }
63 +}
\ No newline at end of file
src/wixext/Tuples/ComPlusApplicationRolePropertyTuple.cs new
+63
@@ -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.ComPlus
4 +{
5 + using WixToolset.Data;
6 + using WixToolset.ComPlus.Tuples;
7 +
8 + public static partial class ComPlusTupleDefinitions
9 + {
10 + public static readonly IntermediateTupleDefinition ComPlusApplicationRoleProperty = new IntermediateTupleDefinition(
11 + ComPlusTupleDefinitionType.ComPlusApplicationRoleProperty.ToString(),
12 + new[]
13 + {
14 + new IntermediateFieldDefinition(nameof(ComPlusApplicationRolePropertyTupleFields.ApplicationRole_), IntermediateFieldType.String),
15 + new IntermediateFieldDefinition(nameof(ComPlusApplicationRolePropertyTupleFields.Name), IntermediateFieldType.String),
16 + new IntermediateFieldDefinition(nameof(ComPlusApplicationRolePropertyTupleFields.Value), IntermediateFieldType.String),
17 + },
18 + typeof(ComPlusApplicationRolePropertyTuple));
19 + }
20 +}
21 +
22 +namespace WixToolset.ComPlus.Tuples
23 +{
24 + using WixToolset.Data;
25 +
26 + public enum ComPlusApplicationRolePropertyTupleFields
27 + {
28 + ApplicationRole_,
29 + Name,
30 + Value,
31 + }
32 +
33 + public class ComPlusApplicationRolePropertyTuple : IntermediateTuple
34 + {
35 + public ComPlusApplicationRolePropertyTuple() : base(ComPlusTupleDefinitions.ComPlusApplicationRoleProperty, null, null)
36 + {
37 + }
38 +
39 + public ComPlusApplicationRolePropertyTuple(SourceLineNumber sourceLineNumber, Identifier id = null) : base(ComPlusTupleDefinitions.ComPlusApplicationRoleProperty, sourceLineNumber, id)
40 + {
41 + }
42 +
43 + public IntermediateField this[ComPlusApplicationRolePropertyTupleFields index] => this.Fields[(int)index];
44 +
45 + public string ApplicationRole_
46 + {
47 + get => this.Fields[(int)ComPlusApplicationRolePropertyTupleFields.ApplicationRole_].AsString();
48 + set => this.Set((int)ComPlusApplicationRolePropertyTupleFields.ApplicationRole_, value);
49 + }
50 +
51 + public string Name
52 + {
53 + get => this.Fields[(int)ComPlusApplicationRolePropertyTupleFields.Name].AsString();
54 + set => this.Set((int)ComPlusApplicationRolePropertyTupleFields.Name, value);
55 + }
56 +
57 + public string Value
58 + {
59 + get => this.Fields[(int)ComPlusApplicationRolePropertyTupleFields.Value].AsString();
60 + set => this.Set((int)ComPlusApplicationRolePropertyTupleFields.Value, value);
61 + }
62 + }
63 +}
\ No newline at end of file
src/wixext/Tuples/ComPlusApplicationRoleTuple.cs new
+71
@@ -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.ComPlus
4 +{
5 + using WixToolset.Data;
6 + using WixToolset.ComPlus.Tuples;
7 +
8 + public static partial class ComPlusTupleDefinitions
9 + {
10 + public static readonly IntermediateTupleDefinition ComPlusApplicationRole = new IntermediateTupleDefinition(
11 + ComPlusTupleDefinitionType.ComPlusApplicationRole.ToString(),
12 + new[]
13 + {
14 + new IntermediateFieldDefinition(nameof(ComPlusApplicationRoleTupleFields.ApplicationRole), IntermediateFieldType.String),
15 + new IntermediateFieldDefinition(nameof(ComPlusApplicationRoleTupleFields.Application_), IntermediateFieldType.String),
16 + new IntermediateFieldDefinition(nameof(ComPlusApplicationRoleTupleFields.Component_), IntermediateFieldType.String),
17 + new IntermediateFieldDefinition(nameof(ComPlusApplicationRoleTupleFields.Name), IntermediateFieldType.String),
18 + },
19 + typeof(ComPlusApplicationRoleTuple));
20 + }
21 +}
22 +
23 +namespace WixToolset.ComPlus.Tuples
24 +{
25 + using WixToolset.Data;
26 +
27 + public enum ComPlusApplicationRoleTupleFields
28 + {
29 + ApplicationRole,
30 + Application_,
31 + Component_,
32 + Name,
33 + }
34 +
35 + public class ComPlusApplicationRoleTuple : IntermediateTuple
36 + {
37 + public ComPlusApplicationRoleTuple() : base(ComPlusTupleDefinitions.ComPlusApplicationRole, null, null)
38 + {
39 + }
40 +
41 + public ComPlusApplicationRoleTuple(SourceLineNumber sourceLineNumber, Identifier id = null) : base(ComPlusTupleDefinitions.ComPlusApplicationRole, sourceLineNumber, id)
42 + {
43 + }
44 +
45 + public IntermediateField this[ComPlusApplicationRoleTupleFields index] => this.Fields[(int)index];
46 +
47 + public string ApplicationRole
48 + {
49 + get => this.Fields[(int)ComPlusApplicationRoleTupleFields.ApplicationRole].AsString();
50 + set => this.Set((int)ComPlusApplicationRoleTupleFields.ApplicationRole, value);
51 + }
52 +
53 + public string Application_
54 + {
55 + get => this.Fields[(int)ComPlusApplicationRoleTupleFields.Application_].AsString();
56 + set => this.Set((int)ComPlusApplicationRoleTupleFields.Application_, value);
57 + }
58 +
59 + public string Component_
60 + {
61 + get => this.Fields[(int)ComPlusApplicationRoleTupleFields.Component_].AsString();
62 + set => this.Set((int)ComPlusApplicationRoleTupleFields.Component_, value);
63 + }
64 +
65 + public string Name
66 + {
67 + get => this.Fields[(int)ComPlusApplicationRoleTupleFields.Name].AsString();
68 + set => this.Set((int)ComPlusApplicationRoleTupleFields.Name, value);
69 + }
70 + }
71 +}
\ No newline at end of file
src/wixext/Tuples/ComPlusApplicationTuple.cs new
+79
@@ -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.ComPlus
4 +{
5 + using WixToolset.Data;
6 + using WixToolset.ComPlus.Tuples;
7 +
8 + public static partial class ComPlusTupleDefinitions
9 + {
10 + public static readonly IntermediateTupleDefinition ComPlusApplication = new IntermediateTupleDefinition(
11 + ComPlusTupleDefinitionType.ComPlusApplication.ToString(),
12 + new[]
13 + {
14 + new IntermediateFieldDefinition(nameof(ComPlusApplicationTupleFields.Application), IntermediateFieldType.String),
15 + new IntermediateFieldDefinition(nameof(ComPlusApplicationTupleFields.Partition_), IntermediateFieldType.String),
16 + new IntermediateFieldDefinition(nameof(ComPlusApplicationTupleFields.Component_), IntermediateFieldType.String),
17 + new IntermediateFieldDefinition(nameof(ComPlusApplicationTupleFields.CustomId), IntermediateFieldType.String),
18 + new IntermediateFieldDefinition(nameof(ComPlusApplicationTupleFields.Name), IntermediateFieldType.String),
19 + },
20 + typeof(ComPlusApplicationTuple));
21 + }
22 +}
23 +
24 +namespace WixToolset.ComPlus.Tuples
25 +{
26 + using WixToolset.Data;
27 +
28 + public enum ComPlusApplicationTupleFields
29 + {
30 + Application,
31 + Partition_,
32 + Component_,
33 + CustomId,
34 + Name,
35 + }
36 +
37 + public class ComPlusApplicationTuple : IntermediateTuple
38 + {
39 + public ComPlusApplicationTuple() : base(ComPlusTupleDefinitions.ComPlusApplication, null, null)
40 + {
41 + }
42 +
43 + public ComPlusApplicationTuple(SourceLineNumber sourceLineNumber, Identifier id = null) : base(ComPlusTupleDefinitions.ComPlusApplication, sourceLineNumber, id)
44 + {
45 + }
46 +
47 + public IntermediateField this[ComPlusApplicationTupleFields index] => this.Fields[(int)index];
48 +
49 + public string Application
50 + {
51 + get => this.Fields[(int)ComPlusApplicationTupleFields.Application].AsString();
52 + set => this.Set((int)ComPlusApplicationTupleFields.Application, value);
53 + }
54 +
55 + public string Partition_
56 + {
57 + get => this.Fields[(int)ComPlusApplicationTupleFields.Partition_].AsString();
58 + set => this.Set((int)ComPlusApplicationTupleFields.Partition_, value);
59 + }
60 +
61 + public string Component_
62 + {
63 + get => this.Fields[(int)ComPlusApplicationTupleFields.Component_].AsString();
64 + set => this.Set((int)ComPlusApplicationTupleFields.Component_, value);
65 + }
66 +
67 + public string CustomId
68 + {
69 + get => this.Fields[(int)ComPlusApplicationTupleFields.CustomId].AsString();
70 + set => this.Set((int)ComPlusApplicationTupleFields.CustomId, value);
71 + }
72 +
73 + public string Name
74 + {
75 + get => this.Fields[(int)ComPlusApplicationTupleFields.Name].AsString();
76 + set => this.Set((int)ComPlusApplicationTupleFields.Name, value);
77 + }
78 + }
79 +}
\ No newline at end of file
src/wixext/Tuples/ComPlusAssemblyDependencyTuple.cs new
+55
@@ -0,0 +1,55 @@
1 +// Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information.
2 +
3 +namespace WixToolset.ComPlus
4 +{
5 + using WixToolset.Data;
6 + using WixToolset.ComPlus.Tuples;
7 +
8 + public static partial class ComPlusTupleDefinitions
9 + {
10 + public static readonly IntermediateTupleDefinition ComPlusAssemblyDependency = new IntermediateTupleDefinition(
11 + ComPlusTupleDefinitionType.ComPlusAssemblyDependency.ToString(),
12 + new[]
13 + {
14 + new IntermediateFieldDefinition(nameof(ComPlusAssemblyDependencyTupleFields.Assembly_), IntermediateFieldType.String),
15 + new IntermediateFieldDefinition(nameof(ComPlusAssemblyDependencyTupleFields.RequiredAssembly_), IntermediateFieldType.String),
16 + },
17 + typeof(ComPlusAssemblyDependencyTuple));
18 + }
19 +}
20 +
21 +namespace WixToolset.ComPlus.Tuples
22 +{
23 + using WixToolset.Data;
24 +
25 + public enum ComPlusAssemblyDependencyTupleFields
26 + {
27 + Assembly_,
28 + RequiredAssembly_,
29 + }
30 +
31 + public class ComPlusAssemblyDependencyTuple : IntermediateTuple
32 + {
33 + public ComPlusAssemblyDependencyTuple() : base(ComPlusTupleDefinitions.ComPlusAssemblyDependency, null, null)
34 + {
35 + }
36 +
37 + public ComPlusAssemblyDependencyTuple(SourceLineNumber sourceLineNumber, Identifier id = null) : base(ComPlusTupleDefinitions.ComPlusAssemblyDependency, sourceLineNumber, id)
38 + {
39 + }
40 +
41 + public IntermediateField this[ComPlusAssemblyDependencyTupleFields index] => this.Fields[(int)index];
42 +
43 + public string Assembly_
44 + {
45 + get => this.Fields[(int)ComPlusAssemblyDependencyTupleFields.Assembly_].AsString();
46 + set => this.Set((int)ComPlusAssemblyDependencyTupleFields.Assembly_, value);
47 + }
48 +
49 + public string RequiredAssembly_
50 + {
51 + get => this.Fields[(int)ComPlusAssemblyDependencyTupleFields.RequiredAssembly_].AsString();
52 + set => this.Set((int)ComPlusAssemblyDependencyTupleFields.RequiredAssembly_, value);
53 + }
54 + }
55 +}
\ No newline at end of file
src/wixext/Tuples/ComPlusAssemblyTuple.cs new
+103
@@ -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.ComPlus
4 +{
5 + using WixToolset.Data;
6 + using WixToolset.ComPlus.Tuples;
7 +
8 + public static partial class ComPlusTupleDefinitions
9 + {
10 + public static readonly IntermediateTupleDefinition ComPlusAssembly = new IntermediateTupleDefinition(
11 + ComPlusTupleDefinitionType.ComPlusAssembly.ToString(),
12 + new[]
13 + {
14 + new IntermediateFieldDefinition(nameof(ComPlusAssemblyTupleFields.Assembly), IntermediateFieldType.String),
15 + new IntermediateFieldDefinition(nameof(ComPlusAssemblyTupleFields.Application_), IntermediateFieldType.String),
16 + new IntermediateFieldDefinition(nameof(ComPlusAssemblyTupleFields.Component_), IntermediateFieldType.String),
17 + new IntermediateFieldDefinition(nameof(ComPlusAssemblyTupleFields.AssemblyName), IntermediateFieldType.String),
18 + new IntermediateFieldDefinition(nameof(ComPlusAssemblyTupleFields.DllPath), IntermediateFieldType.String),
19 + new IntermediateFieldDefinition(nameof(ComPlusAssemblyTupleFields.TlbPath), IntermediateFieldType.String),
20 + new IntermediateFieldDefinition(nameof(ComPlusAssemblyTupleFields.PSDllPath), IntermediateFieldType.String),
21 + new IntermediateFieldDefinition(nameof(ComPlusAssemblyTupleFields.Attributes), IntermediateFieldType.Number),
22 + },
23 + typeof(ComPlusAssemblyTuple));
24 + }
25 +}
26 +
27 +namespace WixToolset.ComPlus.Tuples
28 +{
29 + using WixToolset.Data;
30 +
31 + public enum ComPlusAssemblyTupleFields
32 + {
33 + Assembly,
34 + Application_,
35 + Component_,
36 + AssemblyName,
37 + DllPath,
38 + TlbPath,
39 + PSDllPath,
40 + Attributes,
41 + }
42 +
43 + public class ComPlusAssemblyTuple : IntermediateTuple
44 + {
45 + public ComPlusAssemblyTuple() : base(ComPlusTupleDefinitions.ComPlusAssembly, null, null)
46 + {
47 + }
48 +
49 + public ComPlusAssemblyTuple(SourceLineNumber sourceLineNumber, Identifier id = null) : base(ComPlusTupleDefinitions.ComPlusAssembly, sourceLineNumber, id)
50 + {
51 + }
52 +
53 + public IntermediateField this[ComPlusAssemblyTupleFields index] => this.Fields[(int)index];
54 +
55 + public string Assembly
56 + {
57 + get => this.Fields[(int)ComPlusAssemblyTupleFields.Assembly].AsString();
58 + set => this.Set((int)ComPlusAssemblyTupleFields.Assembly, value);
59 + }
60 +
61 + public string Application_
62 + {
63 + get => this.Fields[(int)ComPlusAssemblyTupleFields.Application_].AsString();
64 + set => this.Set((int)ComPlusAssemblyTupleFields.Application_, value);
65 + }
66 +
67 + public string Component_
68 + {
69 + get => this.Fields[(int)ComPlusAssemblyTupleFields.Component_].AsString();
70 + set => this.Set((int)ComPlusAssemblyTupleFields.Component_, value);
71 + }
72 +
73 + public string AssemblyName
74 + {
75 + get => this.Fields[(int)ComPlusAssemblyTupleFields.AssemblyName].AsString();
76 + set => this.Set((int)ComPlusAssemblyTupleFields.AssemblyName, value);
77 + }
78 +
79 + public string DllPath
80 + {
81 + get => this.Fields[(int)ComPlusAssemblyTupleFields.DllPath].AsString();
82 + set => this.Set((int)ComPlusAssemblyTupleFields.DllPath, value);
83 + }
84 +
85 + public string TlbPath
86 + {
87 + get => this.Fields[(int)ComPlusAssemblyTupleFields.TlbPath].AsString();
88 + set => this.Set((int)ComPlusAssemblyTupleFields.TlbPath, value);
89 + }
90 +
91 + public string PSDllPath
92 + {
93 + get => this.Fields[(int)ComPlusAssemblyTupleFields.PSDllPath].AsString();
94 + set => this.Set((int)ComPlusAssemblyTupleFields.PSDllPath, value);
95 + }
96 +
97 + public int Attributes
98 + {
99 + get => this.Fields[(int)ComPlusAssemblyTupleFields.Attributes].AsNumber();
100 + set => this.Set((int)ComPlusAssemblyTupleFields.Attributes, value);
101 + }
102 + }
103 +}
\ No newline at end of file
src/wixext/Tuples/ComPlusComponentPropertyTuple.cs new
+63
@@ -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.ComPlus
4 +{
5 + using WixToolset.Data;
6 + using WixToolset.ComPlus.Tuples;
7 +
8 + public static partial class ComPlusTupleDefinitions
9 + {
10 + public static readonly IntermediateTupleDefinition ComPlusComponentProperty = new IntermediateTupleDefinition(
11 + ComPlusTupleDefinitionType.ComPlusComponentProperty.ToString(),
12 + new[]
13 + {
14 + new IntermediateFieldDefinition(nameof(ComPlusComponentPropertyTupleFields.ComPlusComponent_), IntermediateFieldType.String),
15 + new IntermediateFieldDefinition(nameof(ComPlusComponentPropertyTupleFields.Name), IntermediateFieldType.String),
16 + new IntermediateFieldDefinition(nameof(ComPlusComponentPropertyTupleFields.Value), IntermediateFieldType.String),
17 + },
18 + typeof(ComPlusComponentPropertyTuple));
19 + }
20 +}
21 +
22 +namespace WixToolset.ComPlus.Tuples
23 +{
24 + using WixToolset.Data;
25 +
26 + public enum ComPlusComponentPropertyTupleFields
27 + {
28 + ComPlusComponent_,
29 + Name,
30 + Value,
31 + }
32 +
33 + public class ComPlusComponentPropertyTuple : IntermediateTuple
34 + {
35 + public ComPlusComponentPropertyTuple() : base(ComPlusTupleDefinitions.ComPlusComponentProperty, null, null)
36 + {
37 + }
38 +
39 + public ComPlusComponentPropertyTuple(SourceLineNumber sourceLineNumber, Identifier id = null) : base(ComPlusTupleDefinitions.ComPlusComponentProperty, sourceLineNumber, id)
40 + {
41 + }
42 +
43 + public IntermediateField this[ComPlusComponentPropertyTupleFields index] => this.Fields[(int)index];
44 +
45 + public string ComPlusComponent_
46 + {
47 + get => this.Fields[(int)ComPlusComponentPropertyTupleFields.ComPlusComponent_].AsString();
48 + set => this.Set((int)ComPlusComponentPropertyTupleFields.ComPlusComponent_, value);
49 + }
50 +
51 + public string Name
52 + {
53 + get => this.Fields[(int)ComPlusComponentPropertyTupleFields.Name].AsString();
54 + set => this.Set((int)ComPlusComponentPropertyTupleFields.Name, value);
55 + }
56 +
57 + public string Value
58 + {
59 + get => this.Fields[(int)ComPlusComponentPropertyTupleFields.Value].AsString();
60 + set => this.Set((int)ComPlusComponentPropertyTupleFields.Value, value);
61 + }
62 + }
63 +}
\ No newline at end of file
src/wixext/Tuples/ComPlusComponentTuple.cs new
+63
@@ -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.ComPlus
4 +{
5 + using WixToolset.Data;
6 + using WixToolset.ComPlus.Tuples;
7 +
8 + public static partial class ComPlusTupleDefinitions
9 + {
10 + public static readonly IntermediateTupleDefinition ComPlusComponent = new IntermediateTupleDefinition(
11 + ComPlusTupleDefinitionType.ComPlusComponent.ToString(),
12 + new[]
13 + {
14 + new IntermediateFieldDefinition(nameof(ComPlusComponentTupleFields.ComPlusComponent), IntermediateFieldType.String),
15 + new IntermediateFieldDefinition(nameof(ComPlusComponentTupleFields.Assembly_), IntermediateFieldType.String),
16 + new IntermediateFieldDefinition(nameof(ComPlusComponentTupleFields.CLSID), IntermediateFieldType.String),
17 + },
18 + typeof(ComPlusComponentTuple));
19 + }
20 +}
21 +
22 +namespace WixToolset.ComPlus.Tuples
23 +{
24 + using WixToolset.Data;
25 +
26 + public enum ComPlusComponentTupleFields
27 + {
28 + ComPlusComponent,
29 + Assembly_,
30 + CLSID,
31 + }
32 +
33 + public class ComPlusComponentTuple : IntermediateTuple
34 + {
35 + public ComPlusComponentTuple() : base(ComPlusTupleDefinitions.ComPlusComponent, null, null)
36 + {
37 + }
38 +
39 + public ComPlusComponentTuple(SourceLineNumber sourceLineNumber, Identifier id = null) : base(ComPlusTupleDefinitions.ComPlusComponent, sourceLineNumber, id)
40 + {
41 + }
42 +
43 + public IntermediateField this[ComPlusComponentTupleFields index] => this.Fields[(int)index];
44 +
45 + public string ComPlusComponent
46 + {
47 + get => this.Fields[(int)ComPlusComponentTupleFields.ComPlusComponent].AsString();
48 + set => this.Set((int)ComPlusComponentTupleFields.ComPlusComponent, value);
49 + }
50 +
51 + public string Assembly_
52 + {
53 + get => this.Fields[(int)ComPlusComponentTupleFields.Assembly_].AsString();
54 + set => this.Set((int)ComPlusComponentTupleFields.Assembly_, value);
55 + }
56 +
57 + public string CLSID
58 + {
59 + get => this.Fields[(int)ComPlusComponentTupleFields.CLSID].AsString();
60 + set => this.Set((int)ComPlusComponentTupleFields.CLSID, value);
61 + }
62 + }
63 +}
\ No newline at end of file
src/wixext/Tuples/ComPlusGroupInApplicationRoleTuple.cs new
+71
@@ -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.ComPlus
4 +{
5 + using WixToolset.Data;
6 + using WixToolset.ComPlus.Tuples;
7 +
8 + public static partial class ComPlusTupleDefinitions
9 + {
10 + public static readonly IntermediateTupleDefinition ComPlusGroupInApplicationRole = new IntermediateTupleDefinition(
11 + ComPlusTupleDefinitionType.ComPlusGroupInApplicationRole.ToString(),
12 + new[]
13 + {
14 + new IntermediateFieldDefinition(nameof(ComPlusGroupInApplicationRoleTupleFields.GroupInApplicationRole), IntermediateFieldType.String),
15 + new IntermediateFieldDefinition(nameof(ComPlusGroupInApplicationRoleTupleFields.ApplicationRole_), IntermediateFieldType.String),
16 + new IntermediateFieldDefinition(nameof(ComPlusGroupInApplicationRoleTupleFields.Component_), IntermediateFieldType.String),
17 + new IntermediateFieldDefinition(nameof(ComPlusGroupInApplicationRoleTupleFields.Group_), IntermediateFieldType.String),
18 + },
19 + typeof(ComPlusGroupInApplicationRoleTuple));
20 + }
21 +}
22 +
23 +namespace WixToolset.ComPlus.Tuples
24 +{
25 + using WixToolset.Data;
26 +
27 + public enum ComPlusGroupInApplicationRoleTupleFields
28 + {
29 + GroupInApplicationRole,
30 + ApplicationRole_,
31 + Component_,
32 + Group_,
33 + }
34 +
35 + public class ComPlusGroupInApplicationRoleTuple : IntermediateTuple
36 + {
37 + public ComPlusGroupInApplicationRoleTuple() : base(ComPlusTupleDefinitions.ComPlusGroupInApplicationRole, null, null)
38 + {
39 + }
40 +
41 + public ComPlusGroupInApplicationRoleTuple(SourceLineNumber sourceLineNumber, Identifier id = null) : base(ComPlusTupleDefinitions.ComPlusGroupInApplicationRole, sourceLineNumber, id)
42 + {
43 + }
44 +
45 + public IntermediateField this[ComPlusGroupInApplicationRoleTupleFields index] => this.Fields[(int)index];
46 +
47 + public string GroupInApplicationRole
48 + {
49 + get => this.Fields[(int)ComPlusGroupInApplicationRoleTupleFields.GroupInApplicationRole].AsString();
50 + set => this.Set((int)ComPlusGroupInApplicationRoleTupleFields.GroupInApplicationRole, value);
51 + }
52 +
53 + public string ApplicationRole_
54 + {
55 + get => this.Fields[(int)ComPlusGroupInApplicationRoleTupleFields.ApplicationRole_].AsString();
56 + set => this.Set((int)ComPlusGroupInApplicationRoleTupleFields.ApplicationRole_, value);
57 + }
58 +
59 + public string Component_
60 + {
61 + get => this.Fields[(int)ComPlusGroupInApplicationRoleTupleFields.Component_].AsString();
62 + set => this.Set((int)ComPlusGroupInApplicationRoleTupleFields.Component_, value);
63 + }
64 +
65 + public string Group_
66 + {
67 + get => this.Fields[(int)ComPlusGroupInApplicationRoleTupleFields.Group_].AsString();
68 + set => this.Set((int)ComPlusGroupInApplicationRoleTupleFields.Group_, value);
69 + }
70 + }
71 +}
\ No newline at end of file
src/wixext/Tuples/ComPlusGroupInPartitionRoleTuple.cs new
+71
@@ -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.ComPlus
4 +{
5 + using WixToolset.Data;
6 + using WixToolset.ComPlus.Tuples;
7 +
8 + public static partial class ComPlusTupleDefinitions
9 + {
10 + public static readonly IntermediateTupleDefinition ComPlusGroupInPartitionRole = new IntermediateTupleDefinition(
11 + ComPlusTupleDefinitionType.ComPlusGroupInPartitionRole.ToString(),
12 + new[]
13 + {
14 + new IntermediateFieldDefinition(nameof(ComPlusGroupInPartitionRoleTupleFields.GroupInPartitionRole), IntermediateFieldType.String),
15 + new IntermediateFieldDefinition(nameof(ComPlusGroupInPartitionRoleTupleFields.PartitionRole_), IntermediateFieldType.String),
16 + new IntermediateFieldDefinition(nameof(ComPlusGroupInPartitionRoleTupleFields.Component_), IntermediateFieldType.String),
17 + new IntermediateFieldDefinition(nameof(ComPlusGroupInPartitionRoleTupleFields.Group_), IntermediateFieldType.String),
18 + },
19 + typeof(ComPlusGroupInPartitionRoleTuple));
20 + }
21 +}
22 +
23 +namespace WixToolset.ComPlus.Tuples
24 +{
25 + using WixToolset.Data;
26 +
27 + public enum ComPlusGroupInPartitionRoleTupleFields
28 + {
29 + GroupInPartitionRole,
30 + PartitionRole_,
31 + Component_,
32 + Group_,
33 + }
34 +
35 + public class ComPlusGroupInPartitionRoleTuple : IntermediateTuple
36 + {
37 + public ComPlusGroupInPartitionRoleTuple() : base(ComPlusTupleDefinitions.ComPlusGroupInPartitionRole, null, null)
38 + {
39 + }
40 +
41 + public ComPlusGroupInPartitionRoleTuple(SourceLineNumber sourceLineNumber, Identifier id = null) : base(ComPlusTupleDefinitions.ComPlusGroupInPartitionRole, sourceLineNumber, id)
42 + {
43 + }
44 +
45 + public IntermediateField this[ComPlusGroupInPartitionRoleTupleFields index] => this.Fields[(int)index];
46 +
47 + public string GroupInPartitionRole
48 + {
49 + get => this.Fields[(int)ComPlusGroupInPartitionRoleTupleFields.GroupInPartitionRole].AsString();
50 + set => this.Set((int)ComPlusGroupInPartitionRoleTupleFields.GroupInPartitionRole, value);
51 + }
52 +
53 + public string PartitionRole_
54 + {
55 + get => this.Fields[(int)ComPlusGroupInPartitionRoleTupleFields.PartitionRole_].AsString();
56 + set => this.Set((int)ComPlusGroupInPartitionRoleTupleFields.PartitionRole_, value);
57 + }
58 +
59 + public string Component_
60 + {
61 + get => this.Fields[(int)ComPlusGroupInPartitionRoleTupleFields.Component_].AsString();
62 + set => this.Set((int)ComPlusGroupInPartitionRoleTupleFields.Component_, value);
63 + }
64 +
65 + public string Group_
66 + {
67 + get => this.Fields[(int)ComPlusGroupInPartitionRoleTupleFields.Group_].AsString();
68 + set => this.Set((int)ComPlusGroupInPartitionRoleTupleFields.Group_, value);
69 + }
70 + }
71 +}
\ No newline at end of file
src/wixext/Tuples/ComPlusInterfacePropertyTuple.cs new
+63
@@ -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.ComPlus
4 +{
5 + using WixToolset.Data;
6 + using WixToolset.ComPlus.Tuples;
7 +
8 + public static partial class ComPlusTupleDefinitions
9 + {
10 + public static readonly IntermediateTupleDefinition ComPlusInterfaceProperty = new IntermediateTupleDefinition(
11 + ComPlusTupleDefinitionType.ComPlusInterfaceProperty.ToString(),
12 + new[]
13 + {
14 + new IntermediateFieldDefinition(nameof(ComPlusInterfacePropertyTupleFields.Interface_), IntermediateFieldType.String),
15 + new IntermediateFieldDefinition(nameof(ComPlusInterfacePropertyTupleFields.Name), IntermediateFieldType.String),
16 + new IntermediateFieldDefinition(nameof(ComPlusInterfacePropertyTupleFields.Value), IntermediateFieldType.String),
17 + },
18 + typeof(ComPlusInterfacePropertyTuple));
19 + }
20 +}
21 +
22 +namespace WixToolset.ComPlus.Tuples
23 +{
24 + using WixToolset.Data;
25 +
26 + public enum ComPlusInterfacePropertyTupleFields
27 + {
28 + Interface_,
29 + Name,
30 + Value,
31 + }
32 +
33 + public class ComPlusInterfacePropertyTuple : IntermediateTuple
34 + {
35 + public ComPlusInterfacePropertyTuple() : base(ComPlusTupleDefinitions.ComPlusInterfaceProperty, null, null)
36 + {
37 + }
38 +
39 + public ComPlusInterfacePropertyTuple(SourceLineNumber sourceLineNumber, Identifier id = null) : base(ComPlusTupleDefinitions.ComPlusInterfaceProperty, sourceLineNumber, id)
40 + {
41 + }
42 +
43 + public IntermediateField this[ComPlusInterfacePropertyTupleFields index] => this.Fields[(int)index];
44 +
45 + public string Interface_
46 + {
47 + get => this.Fields[(int)ComPlusInterfacePropertyTupleFields.Interface_].AsString();
48 + set => this.Set((int)ComPlusInterfacePropertyTupleFields.Interface_, value);
49 + }
50 +
51 + public string Name
52 + {
53 + get => this.Fields[(int)ComPlusInterfacePropertyTupleFields.Name].AsString();
54 + set => this.Set((int)ComPlusInterfacePropertyTupleFields.Name, value);
55 + }
56 +
57 + public string Value
58 + {
59 + get => this.Fields[(int)ComPlusInterfacePropertyTupleFields.Value].AsString();
60 + set => this.Set((int)ComPlusInterfacePropertyTupleFields.Value, value);
61 + }
62 + }
63 +}
\ No newline at end of file
src/wixext/Tuples/ComPlusInterfaceTuple.cs new
+63
@@ -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.ComPlus
4 +{
5 + using WixToolset.Data;
6 + using WixToolset.ComPlus.Tuples;
7 +
8 + public static partial class ComPlusTupleDefinitions
9 + {
10 + public static readonly IntermediateTupleDefinition ComPlusInterface = new IntermediateTupleDefinition(
11 + ComPlusTupleDefinitionType.ComPlusInterface.ToString(),
12 + new[]
13 + {
14 + new IntermediateFieldDefinition(nameof(ComPlusInterfaceTupleFields.Interface), IntermediateFieldType.String),
15 + new IntermediateFieldDefinition(nameof(ComPlusInterfaceTupleFields.ComPlusComponent_), IntermediateFieldType.String),
16 + new IntermediateFieldDefinition(nameof(ComPlusInterfaceTupleFields.IID), IntermediateFieldType.String),
17 + },
18 + typeof(ComPlusInterfaceTuple));
19 + }
20 +}
21 +
22 +namespace WixToolset.ComPlus.Tuples
23 +{
24 + using WixToolset.Data;
25 +
26 + public enum ComPlusInterfaceTupleFields
27 + {
28 + Interface,
29 + ComPlusComponent_,
30 + IID,
31 + }
32 +
33 + public class ComPlusInterfaceTuple : IntermediateTuple
34 + {
35 + public ComPlusInterfaceTuple() : base(ComPlusTupleDefinitions.ComPlusInterface, null, null)
36 + {
37 + }
38 +
39 + public ComPlusInterfaceTuple(SourceLineNumber sourceLineNumber, Identifier id = null) : base(ComPlusTupleDefinitions.ComPlusInterface, sourceLineNumber, id)
40 + {
41 + }
42 +
43 + public IntermediateField this[ComPlusInterfaceTupleFields index] => this.Fields[(int)index];
44 +
45 + public string Interface
46 + {
47 + get => this.Fields[(int)ComPlusInterfaceTupleFields.Interface].AsString();
48 + set => this.Set((int)ComPlusInterfaceTupleFields.Interface, value);
49 + }
50 +
51 + public string ComPlusComponent_
52 + {
53 + get => this.Fields[(int)ComPlusInterfaceTupleFields.ComPlusComponent_].AsString();
54 + set => this.Set((int)ComPlusInterfaceTupleFields.ComPlusComponent_, value);
55 + }
56 +
57 + public string IID
58 + {
59 + get => this.Fields[(int)ComPlusInterfaceTupleFields.IID].AsString();
60 + set => this.Set((int)ComPlusInterfaceTupleFields.IID, value);
61 + }
62 + }
63 +}
\ No newline at end of file
src/wixext/Tuples/ComPlusMethodPropertyTuple.cs new
+63
@@ -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.ComPlus
4 +{
5 + using WixToolset.Data;
6 + using WixToolset.ComPlus.Tuples;
7 +
8 + public static partial class ComPlusTupleDefinitions
9 + {
10 + public static readonly IntermediateTupleDefinition ComPlusMethodProperty = new IntermediateTupleDefinition(
11 + ComPlusTupleDefinitionType.ComPlusMethodProperty.ToString(),
12 + new[]
13 + {
14 + new IntermediateFieldDefinition(nameof(ComPlusMethodPropertyTupleFields.Method_), IntermediateFieldType.String),
15 + new IntermediateFieldDefinition(nameof(ComPlusMethodPropertyTupleFields.Name), IntermediateFieldType.String),
16 + new IntermediateFieldDefinition(nameof(ComPlusMethodPropertyTupleFields.Value), IntermediateFieldType.String),
17 + },
18 + typeof(ComPlusMethodPropertyTuple));
19 + }
20 +}
21 +
22 +namespace WixToolset.ComPlus.Tuples
23 +{
24 + using WixToolset.Data;
25 +
26 + public enum ComPlusMethodPropertyTupleFields
27 + {
28 + Method_,
29 + Name,
30 + Value,
31 + }
32 +
33 + public class ComPlusMethodPropertyTuple : IntermediateTuple
34 + {
35 + public ComPlusMethodPropertyTuple() : base(ComPlusTupleDefinitions.ComPlusMethodProperty, null, null)
36 + {
37 + }
38 +
39 + public ComPlusMethodPropertyTuple(SourceLineNumber sourceLineNumber, Identifier id = null) : base(ComPlusTupleDefinitions.ComPlusMethodProperty, sourceLineNumber, id)
40 + {
41 + }
42 +
43 + public IntermediateField this[ComPlusMethodPropertyTupleFields index] => this.Fields[(int)index];
44 +
45 + public string Method_
46 + {
47 + get => this.Fields[(int)ComPlusMethodPropertyTupleFields.Method_].AsString();
48 + set => this.Set((int)ComPlusMethodPropertyTupleFields.Method_, value);
49 + }
50 +
51 + public string Name
52 + {
53 + get => this.Fields[(int)ComPlusMethodPropertyTupleFields.Name].AsString();
54 + set => this.Set((int)ComPlusMethodPropertyTupleFields.Name, value);
55 + }
56 +
57 + public string Value
58 + {
59 + get => this.Fields[(int)ComPlusMethodPropertyTupleFields.Value].AsString();
60 + set => this.Set((int)ComPlusMethodPropertyTupleFields.Value, value);
61 + }
62 + }
63 +}
\ No newline at end of file
src/wixext/Tuples/ComPlusMethodTuple.cs new
+71
@@ -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.ComPlus
4 +{
5 + using WixToolset.Data;
6 + using WixToolset.ComPlus.Tuples;
7 +
8 + public static partial class ComPlusTupleDefinitions
9 + {
10 + public static readonly IntermediateTupleDefinition ComPlusMethod = new IntermediateTupleDefinition(
11 + ComPlusTupleDefinitionType.ComPlusMethod.ToString(),
12 + new[]
13 + {
14 + new IntermediateFieldDefinition(nameof(ComPlusMethodTupleFields.Method), IntermediateFieldType.String),
15 + new IntermediateFieldDefinition(nameof(ComPlusMethodTupleFields.Interface_), IntermediateFieldType.String),
16 + new IntermediateFieldDefinition(nameof(ComPlusMethodTupleFields.Index), IntermediateFieldType.Number),
17 + new IntermediateFieldDefinition(nameof(ComPlusMethodTupleFields.Name), IntermediateFieldType.String),
18 + },
19 + typeof(ComPlusMethodTuple));
20 + }
21 +}
22 +
23 +namespace WixToolset.ComPlus.Tuples
24 +{
25 + using WixToolset.Data;
26 +
27 + public enum ComPlusMethodTupleFields
28 + {
29 + Method,
30 + Interface_,
31 + Index,
32 + Name,
33 + }
34 +
35 + public class ComPlusMethodTuple : IntermediateTuple
36 + {
37 + public ComPlusMethodTuple() : base(ComPlusTupleDefinitions.ComPlusMethod, null, null)
38 + {
39 + }
40 +
41 + public ComPlusMethodTuple(SourceLineNumber sourceLineNumber, Identifier id = null) : base(ComPlusTupleDefinitions.ComPlusMethod, sourceLineNumber, id)
42 + {
43 + }
44 +
45 + public IntermediateField this[ComPlusMethodTupleFields index] => this.Fields[(int)index];
46 +
47 + public string Method
48 + {
49 + get => this.Fields[(int)ComPlusMethodTupleFields.Method].AsString();
50 + set => this.Set((int)ComPlusMethodTupleFields.Method, value);
51 + }
52 +
53 + public string Interface_
54 + {
55 + get => this.Fields[(int)ComPlusMethodTupleFields.Interface_].AsString();
56 + set => this.Set((int)ComPlusMethodTupleFields.Interface_, value);
57 + }
58 +
59 + public int Index
60 + {
61 + get => this.Fields[(int)ComPlusMethodTupleFields.Index].AsNumber();
62 + set => this.Set((int)ComPlusMethodTupleFields.Index, value);
63 + }
64 +
65 + public string Name
66 + {
67 + get => this.Fields[(int)ComPlusMethodTupleFields.Name].AsString();
68 + set => this.Set((int)ComPlusMethodTupleFields.Name, value);
69 + }
70 + }
71 +}
\ No newline at end of file
src/wixext/Tuples/ComPlusPartitionPropertyTuple.cs new
+63
@@ -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.ComPlus
4 +{
5 + using WixToolset.Data;
6 + using WixToolset.ComPlus.Tuples;
7 +
8 + public static partial class ComPlusTupleDefinitions
9 + {
10 + public static readonly IntermediateTupleDefinition ComPlusPartitionProperty = new IntermediateTupleDefinition(
11 + ComPlusTupleDefinitionType.ComPlusPartitionProperty.ToString(),
12 + new[]
13 + {
14 + new IntermediateFieldDefinition(nameof(ComPlusPartitionPropertyTupleFields.Partition_), IntermediateFieldType.String),
15 + new IntermediateFieldDefinition(nameof(ComPlusPartitionPropertyTupleFields.Name), IntermediateFieldType.String),
16 + new IntermediateFieldDefinition(nameof(ComPlusPartitionPropertyTupleFields.Value), IntermediateFieldType.String),
17 + },
18 + typeof(ComPlusPartitionPropertyTuple));
19 + }
20 +}
21 +
22 +namespace WixToolset.ComPlus.Tuples
23 +{
24 + using WixToolset.Data;
25 +
26 + public enum ComPlusPartitionPropertyTupleFields
27 + {
28 + Partition_,
29 + Name,
30 + Value,
31 + }
32 +
33 + public class ComPlusPartitionPropertyTuple : IntermediateTuple
34 + {
35 + public ComPlusPartitionPropertyTuple() : base(ComPlusTupleDefinitions.ComPlusPartitionProperty, null, null)
36 + {
37 + }
38 +
39 + public ComPlusPartitionPropertyTuple(SourceLineNumber sourceLineNumber, Identifier id = null) : base(ComPlusTupleDefinitions.ComPlusPartitionProperty, sourceLineNumber, id)
40 + {
41 + }
42 +
43 + public IntermediateField this[ComPlusPartitionPropertyTupleFields index] => this.Fields[(int)index];
44 +
45 + public string Partition_
46 + {
47 + get => this.Fields[(int)ComPlusPartitionPropertyTupleFields.Partition_].AsString();
48 + set => this.Set((int)ComPlusPartitionPropertyTupleFields.Partition_, value);
49 + }
50 +
51 + public string Name
52 + {
53 + get => this.Fields[(int)ComPlusPartitionPropertyTupleFields.Name].AsString();
54 + set => this.Set((int)ComPlusPartitionPropertyTupleFields.Name, value);
55 + }
56 +
57 + public string Value
58 + {
59 + get => this.Fields[(int)ComPlusPartitionPropertyTupleFields.Value].AsString();
60 + set => this.Set((int)ComPlusPartitionPropertyTupleFields.Value, value);
61 + }
62 + }
63 +}
\ No newline at end of file
src/wixext/Tuples/ComPlusPartitionRoleTuple.cs new
+71
@@ -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.ComPlus
4 +{
5 + using WixToolset.Data;
6 + using WixToolset.ComPlus.Tuples;
7 +
8 + public static partial class ComPlusTupleDefinitions
9 + {
10 + public static readonly IntermediateTupleDefinition ComPlusPartitionRole = new IntermediateTupleDefinition(
11 + ComPlusTupleDefinitionType.ComPlusPartitionRole.ToString(),
12 + new[]
13 + {
14 + new IntermediateFieldDefinition(nameof(ComPlusPartitionRoleTupleFields.PartitionRole), IntermediateFieldType.String),
15 + new IntermediateFieldDefinition(nameof(ComPlusPartitionRoleTupleFields.Partition_), IntermediateFieldType.String),
16 + new IntermediateFieldDefinition(nameof(ComPlusPartitionRoleTupleFields.Component_), IntermediateFieldType.String),
17 + new IntermediateFieldDefinition(nameof(ComPlusPartitionRoleTupleFields.Name), IntermediateFieldType.String),
18 + },
19 + typeof(ComPlusPartitionRoleTuple));
20 + }
21 +}
22 +
23 +namespace WixToolset.ComPlus.Tuples
24 +{
25 + using WixToolset.Data;
26 +
27 + public enum ComPlusPartitionRoleTupleFields
28 + {
29 + PartitionRole,
30 + Partition_,
31 + Component_,
32 + Name,
33 + }
34 +
35 + public class ComPlusPartitionRoleTuple : IntermediateTuple
36 + {
37 + public ComPlusPartitionRoleTuple() : base(ComPlusTupleDefinitions.ComPlusPartitionRole, null, null)
38 + {
39 + }
40 +
41 + public ComPlusPartitionRoleTuple(SourceLineNumber sourceLineNumber, Identifier id = null) : base(ComPlusTupleDefinitions.ComPlusPartitionRole, sourceLineNumber, id)
42 + {
43 + }
44 +
45 + public IntermediateField this[ComPlusPartitionRoleTupleFields index] => this.Fields[(int)index];
46 +
47 + public string PartitionRole
48 + {
49 + get => this.Fields[(int)ComPlusPartitionRoleTupleFields.PartitionRole].AsString();
50 + set => this.Set((int)ComPlusPartitionRoleTupleFields.PartitionRole, value);
51 + }
52 +
53 + public string Partition_
54 + {
55 + get => this.Fields[(int)ComPlusPartitionRoleTupleFields.Partition_].AsString();
56 + set => this.Set((int)ComPlusPartitionRoleTupleFields.Partition_, value);
57 + }
58 +
59 + public string Component_
60 + {
61 + get => this.Fields[(int)ComPlusPartitionRoleTupleFields.Component_].AsString();
62 + set => this.Set((int)ComPlusPartitionRoleTupleFields.Component_, value);
63 + }
64 +
65 + public string Name
66 + {
67 + get => this.Fields[(int)ComPlusPartitionRoleTupleFields.Name].AsString();
68 + set => this.Set((int)ComPlusPartitionRoleTupleFields.Name, value);
69 + }
70 + }
71 +}
\ No newline at end of file
src/wixext/Tuples/ComPlusPartitionTuple.cs new
+71
@@ -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.ComPlus
4 +{
5 + using WixToolset.Data;
6 + using WixToolset.ComPlus.Tuples;
7 +
8 + public static partial class ComPlusTupleDefinitions
9 + {
10 + public static readonly IntermediateTupleDefinition ComPlusPartition = new IntermediateTupleDefinition(
11 + ComPlusTupleDefinitionType.ComPlusPartition.ToString(),
12 + new[]
13 + {
14 + new IntermediateFieldDefinition(nameof(ComPlusPartitionTupleFields.Partition), IntermediateFieldType.String),
15 + new IntermediateFieldDefinition(nameof(ComPlusPartitionTupleFields.Component_), IntermediateFieldType.String),
16 + new IntermediateFieldDefinition(nameof(ComPlusPartitionTupleFields.CustomId), IntermediateFieldType.String),
17 + new IntermediateFieldDefinition(nameof(ComPlusPartitionTupleFields.Name), IntermediateFieldType.String),
18 + },
19 + typeof(ComPlusPartitionTuple));
20 + }
21 +}
22 +
23 +namespace WixToolset.ComPlus.Tuples
24 +{
25 + using WixToolset.Data;
26 +
27 + public enum ComPlusPartitionTupleFields
28 + {
29 + Partition,
30 + Component_,
31 + CustomId,
32 + Name,
33 + }
34 +
35 + public class ComPlusPartitionTuple : IntermediateTuple
36 + {
37 + public ComPlusPartitionTuple() : base(ComPlusTupleDefinitions.ComPlusPartition, null, null)
38 + {
39 + }
40 +
41 + public ComPlusPartitionTuple(SourceLineNumber sourceLineNumber, Identifier id = null) : base(ComPlusTupleDefinitions.ComPlusPartition, sourceLineNumber, id)
42 + {
43 + }
44 +
45 + public IntermediateField this[ComPlusPartitionTupleFields index] => this.Fields[(int)index];
46 +
47 + public string Partition
48 + {
49 + get => this.Fields[(int)ComPlusPartitionTupleFields.Partition].AsString();
50 + set => this.Set((int)ComPlusPartitionTupleFields.Partition, value);
51 + }
52 +
53 + public string Component_
54 + {
55 + get => this.Fields[(int)ComPlusPartitionTupleFields.Component_].AsString();
56 + set => this.Set((int)ComPlusPartitionTupleFields.Component_, value);
57 + }
58 +
59 + public string CustomId
60 + {
61 + get => this.Fields[(int)ComPlusPartitionTupleFields.CustomId].AsString();
62 + set => this.Set((int)ComPlusPartitionTupleFields.CustomId, value);
63 + }
64 +
65 + public string Name
66 + {
67 + get => this.Fields[(int)ComPlusPartitionTupleFields.Name].AsString();
68 + set => this.Set((int)ComPlusPartitionTupleFields.Name, value);
69 + }
70 + }
71 +}
\ No newline at end of file
src/wixext/Tuples/ComPlusPartitionUserTuple.cs new
+71
@@ -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.ComPlus
4 +{
5 + using WixToolset.Data;
6 + using WixToolset.ComPlus.Tuples;
7 +
8 + public static partial class ComPlusTupleDefinitions
9 + {
10 + public static readonly IntermediateTupleDefinition ComPlusPartitionUser = new IntermediateTupleDefinition(
11 + ComPlusTupleDefinitionType.ComPlusPartitionUser.ToString(),
12 + new[]
13 + {
14 + new IntermediateFieldDefinition(nameof(ComPlusPartitionUserTupleFields.PartitionUser), IntermediateFieldType.String),
15 + new IntermediateFieldDefinition(nameof(ComPlusPartitionUserTupleFields.Partition_), IntermediateFieldType.String),
16 + new IntermediateFieldDefinition(nameof(ComPlusPartitionUserTupleFields.Component_), IntermediateFieldType.String),
17 + new IntermediateFieldDefinition(nameof(ComPlusPartitionUserTupleFields.User_), IntermediateFieldType.String),
18 + },
19 + typeof(ComPlusPartitionUserTuple));
20 + }
21 +}
22 +
23 +namespace WixToolset.ComPlus.Tuples
24 +{
25 + using WixToolset.Data;
26 +
27 + public enum ComPlusPartitionUserTupleFields
28 + {
29 + PartitionUser,
30 + Partition_,
31 + Component_,
32 + User_,
33 + }
34 +
35 + public class ComPlusPartitionUserTuple : IntermediateTuple
36 + {
37 + public ComPlusPartitionUserTuple() : base(ComPlusTupleDefinitions.ComPlusPartitionUser, null, null)
38 + {
39 + }
40 +
41 + public ComPlusPartitionUserTuple(SourceLineNumber sourceLineNumber, Identifier id = null) : base(ComPlusTupleDefinitions.ComPlusPartitionUser, sourceLineNumber, id)
42 + {
43 + }
44 +
45 + public IntermediateField this[ComPlusPartitionUserTupleFields index] => this.Fields[(int)index];
46 +
47 + public string PartitionUser
48 + {
49 + get => this.Fields[(int)ComPlusPartitionUserTupleFields.PartitionUser].AsString();
50 + set => this.Set((int)ComPlusPartitionUserTupleFields.PartitionUser, value);
51 + }
52 +
53 + public string Partition_
54 + {
55 + get => this.Fields[(int)ComPlusPartitionUserTupleFields.Partition_].AsString();
56 + set => this.Set((int)ComPlusPartitionUserTupleFields.Partition_, value);
57 + }
58 +
59 + public string Component_
60 + {
61 + get => this.Fields[(int)ComPlusPartitionUserTupleFields.Component_].AsString();
62 + set => this.Set((int)ComPlusPartitionUserTupleFields.Component_, value);
63 + }
64 +
65 + public string User_
66 + {
67 + get => this.Fields[(int)ComPlusPartitionUserTupleFields.User_].AsString();
68 + set => this.Set((int)ComPlusPartitionUserTupleFields.User_, value);
69 + }
70 + }
71 +}
\ No newline at end of file
src/wixext/Tuples/ComPlusRoleForComponentTuple.cs new
+71
@@ -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.ComPlus
4 +{
5 + using WixToolset.Data;
6 + using WixToolset.ComPlus.Tuples;
7 +
8 + public static partial class ComPlusTupleDefinitions
9 + {
10 + public static readonly IntermediateTupleDefinition ComPlusRoleForComponent = new IntermediateTupleDefinition(
11 + ComPlusTupleDefinitionType.ComPlusRoleForComponent.ToString(),
12 + new[]
13 + {
14 + new IntermediateFieldDefinition(nameof(ComPlusRoleForComponentTupleFields.RoleForComponent), IntermediateFieldType.String),
15 + new IntermediateFieldDefinition(nameof(ComPlusRoleForComponentTupleFields.ComPlusComponent_), IntermediateFieldType.String),
16 + new IntermediateFieldDefinition(nameof(ComPlusRoleForComponentTupleFields.ApplicationRole_), IntermediateFieldType.String),
17 + new IntermediateFieldDefinition(nameof(ComPlusRoleForComponentTupleFields.Component_), IntermediateFieldType.String),
18 + },
19 + typeof(ComPlusRoleForComponentTuple));
20 + }
21 +}
22 +
23 +namespace WixToolset.ComPlus.Tuples
24 +{
25 + using WixToolset.Data;
26 +
27 + public enum ComPlusRoleForComponentTupleFields
28 + {
29 + RoleForComponent,
30 + ComPlusComponent_,
31 + ApplicationRole_,
32 + Component_,
33 + }
34 +
35 + public class ComPlusRoleForComponentTuple : IntermediateTuple
36 + {
37 + public ComPlusRoleForComponentTuple() : base(ComPlusTupleDefinitions.ComPlusRoleForComponent, null, null)
38 + {
39 + }
40 +
41 + public ComPlusRoleForComponentTuple(SourceLineNumber sourceLineNumber, Identifier id = null) : base(ComPlusTupleDefinitions.ComPlusRoleForComponent, sourceLineNumber, id)
42 + {
43 + }
44 +
45 + public IntermediateField this[ComPlusRoleForComponentTupleFields index] => this.Fields[(int)index];
46 +
47 + public string RoleForComponent
48 + {
49 + get => this.Fields[(int)ComPlusRoleForComponentTupleFields.RoleForComponent].AsString();
50 + set => this.Set((int)ComPlusRoleForComponentTupleFields.RoleForComponent, value);
51 + }
52 +
53 + public string ComPlusComponent_
54 + {
55 + get => this.Fields[(int)ComPlusRoleForComponentTupleFields.ComPlusComponent_].AsString();
56 + set => this.Set((int)ComPlusRoleForComponentTupleFields.ComPlusComponent_, value);
57 + }
58 +
59 + public string ApplicationRole_
60 + {
61 + get => this.Fields[(int)ComPlusRoleForComponentTupleFields.ApplicationRole_].AsString();
62 + set => this.Set((int)ComPlusRoleForComponentTupleFields.ApplicationRole_, value);
63 + }
64 +
65 + public string Component_
66 + {
67 + get => this.Fields[(int)ComPlusRoleForComponentTupleFields.Component_].AsString();
68 + set => this.Set((int)ComPlusRoleForComponentTupleFields.Component_, value);
69 + }
70 + }
71 +}
\ No newline at end of file
src/wixext/Tuples/ComPlusRoleForInterfaceTuple.cs new
+71
@@ -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.ComPlus
4 +{
5 + using WixToolset.Data;
6 + using WixToolset.ComPlus.Tuples;
7 +
8 + public static partial class ComPlusTupleDefinitions
9 + {
10 + public static readonly IntermediateTupleDefinition ComPlusRoleForInterface = new IntermediateTupleDefinition(
11 + ComPlusTupleDefinitionType.ComPlusRoleForInterface.ToString(),
12 + new[]
13 + {
14 + new IntermediateFieldDefinition(nameof(ComPlusRoleForInterfaceTupleFields.RoleForInterface), IntermediateFieldType.String),
15 + new IntermediateFieldDefinition(nameof(ComPlusRoleForInterfaceTupleFields.Interface_), IntermediateFieldType.String),
16 + new IntermediateFieldDefinition(nameof(ComPlusRoleForInterfaceTupleFields.ApplicationRole_), IntermediateFieldType.String),
17 + new IntermediateFieldDefinition(nameof(ComPlusRoleForInterfaceTupleFields.Component_), IntermediateFieldType.String),
18 + },
19 + typeof(ComPlusRoleForInterfaceTuple));
20 + }
21 +}
22 +
23 +namespace WixToolset.ComPlus.Tuples
24 +{
25 + using WixToolset.Data;
26 +
27 + public enum ComPlusRoleForInterfaceTupleFields
28 + {
29 + RoleForInterface,
30 + Interface_,
31 + ApplicationRole_,
32 + Component_,
33 + }
34 +
35 + public class ComPlusRoleForInterfaceTuple : IntermediateTuple
36 + {
37 + public ComPlusRoleForInterfaceTuple() : base(ComPlusTupleDefinitions.ComPlusRoleForInterface, null, null)
38 + {
39 + }
40 +
41 + public ComPlusRoleForInterfaceTuple(SourceLineNumber sourceLineNumber, Identifier id = null) : base(ComPlusTupleDefinitions.ComPlusRoleForInterface, sourceLineNumber, id)
42 + {
43 + }
44 +
45 + public IntermediateField this[ComPlusRoleForInterfaceTupleFields index] => this.Fields[(int)index];
46 +
47 + public string RoleForInterface
48 + {
49 + get => this.Fields[(int)ComPlusRoleForInterfaceTupleFields.RoleForInterface].AsString();
50 + set => this.Set((int)ComPlusRoleForInterfaceTupleFields.RoleForInterface, value);
51 + }
52 +
53 + public string Interface_
54 + {
55 + get => this.Fields[(int)ComPlusRoleForInterfaceTupleFields.Interface_].AsString();
56 + set => this.Set((int)ComPlusRoleForInterfaceTupleFields.Interface_, value);
57 + }
58 +
59 + public string ApplicationRole_
60 + {
61 + get => this.Fields[(int)ComPlusRoleForInterfaceTupleFields.ApplicationRole_].AsString();
62 + set => this.Set((int)ComPlusRoleForInterfaceTupleFields.ApplicationRole_, value);
63 + }
64 +
65 + public string Component_
66 + {
67 + get => this.Fields[(int)ComPlusRoleForInterfaceTupleFields.Component_].AsString();
68 + set => this.Set((int)ComPlusRoleForInterfaceTupleFields.Component_, value);
69 + }
70 + }
71 +}
\ No newline at end of file
src/wixext/Tuples/ComPlusRoleForMethodTuple.cs new
+71
@@ -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.ComPlus
4 +{
5 + using WixToolset.Data;
6 + using WixToolset.ComPlus.Tuples;
7 +
8 + public static partial class ComPlusTupleDefinitions
9 + {
10 + public static readonly IntermediateTupleDefinition ComPlusRoleForMethod = new IntermediateTupleDefinition(
11 + ComPlusTupleDefinitionType.ComPlusRoleForMethod.ToString(),
12 + new[]
13 + {
14 + new IntermediateFieldDefinition(nameof(ComPlusRoleForMethodTupleFields.RoleForMethod), IntermediateFieldType.String),
15 + new IntermediateFieldDefinition(nameof(ComPlusRoleForMethodTupleFields.Method_), IntermediateFieldType.String),
16 + new IntermediateFieldDefinition(nameof(ComPlusRoleForMethodTupleFields.ApplicationRole_), IntermediateFieldType.String),
17 + new IntermediateFieldDefinition(nameof(ComPlusRoleForMethodTupleFields.Component_), IntermediateFieldType.String),
18 + },
19 + typeof(ComPlusRoleForMethodTuple));
20 + }
21 +}
22 +
23 +namespace WixToolset.ComPlus.Tuples
24 +{
25 + using WixToolset.Data;
26 +
27 + public enum ComPlusRoleForMethodTupleFields
28 + {
29 + RoleForMethod,
30 + Method_,
31 + ApplicationRole_,
32 + Component_,
33 + }
34 +
35 + public class ComPlusRoleForMethodTuple : IntermediateTuple
36 + {
37 + public ComPlusRoleForMethodTuple() : base(ComPlusTupleDefinitions.ComPlusRoleForMethod, null, null)
38 + {
39 + }
40 +
41 + public ComPlusRoleForMethodTuple(SourceLineNumber sourceLineNumber, Identifier id = null) : base(ComPlusTupleDefinitions.ComPlusRoleForMethod, sourceLineNumber, id)
42 + {
43 + }
44 +
45 + public IntermediateField this[ComPlusRoleForMethodTupleFields index] => this.Fields[(int)index];
46 +
47 + public string RoleForMethod
48 + {
49 + get => this.Fields[(int)ComPlusRoleForMethodTupleFields.RoleForMethod].AsString();
50 + set => this.Set((int)ComPlusRoleForMethodTupleFields.RoleForMethod, value);
51 + }
52 +
53 + public string Method_
54 + {
55 + get => this.Fields[(int)ComPlusRoleForMethodTupleFields.Method_].AsString();
56 + set => this.Set((int)ComPlusRoleForMethodTupleFields.Method_, value);
57 + }
58 +
59 + public string ApplicationRole_
60 + {
61 + get => this.Fields[(int)ComPlusRoleForMethodTupleFields.ApplicationRole_].AsString();
62 + set => this.Set((int)ComPlusRoleForMethodTupleFields.ApplicationRole_, value);
63 + }
64 +
65 + public string Component_
66 + {
67 + get => this.Fields[(int)ComPlusRoleForMethodTupleFields.Component_].AsString();
68 + set => this.Set((int)ComPlusRoleForMethodTupleFields.Component_, value);
69 + }
70 + }
71 +}
\ No newline at end of file
src/wixext/Tuples/ComPlusSubscriptionPropertyTuple.cs new
+63
@@ -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.ComPlus
4 +{
5 + using WixToolset.Data;
6 + using WixToolset.ComPlus.Tuples;
7 +
8 + public static partial class ComPlusTupleDefinitions
9 + {
10 + public static readonly IntermediateTupleDefinition ComPlusSubscriptionProperty = new IntermediateTupleDefinition(
11 + ComPlusTupleDefinitionType.ComPlusSubscriptionProperty.ToString(),
12 + new[]
13 + {
14 + new IntermediateFieldDefinition(nameof(ComPlusSubscriptionPropertyTupleFields.Subscription_), IntermediateFieldType.String),
15 + new IntermediateFieldDefinition(nameof(ComPlusSubscriptionPropertyTupleFields.Name), IntermediateFieldType.String),
16 + new IntermediateFieldDefinition(nameof(ComPlusSubscriptionPropertyTupleFields.Value), IntermediateFieldType.String),
17 + },
18 + typeof(ComPlusSubscriptionPropertyTuple));
19 + }
20 +}
21 +
22 +namespace WixToolset.ComPlus.Tuples
23 +{
24 + using WixToolset.Data;
25 +
26 + public enum ComPlusSubscriptionPropertyTupleFields
27 + {
28 + Subscription_,
29 + Name,
30 + Value,
31 + }
32 +
33 + public class ComPlusSubscriptionPropertyTuple : IntermediateTuple
34 + {
35 + public ComPlusSubscriptionPropertyTuple() : base(ComPlusTupleDefinitions.ComPlusSubscriptionProperty, null, null)
36 + {
37 + }
38 +
39 + public ComPlusSubscriptionPropertyTuple(SourceLineNumber sourceLineNumber, Identifier id = null) : base(ComPlusTupleDefinitions.ComPlusSubscriptionProperty, sourceLineNumber, id)
40 + {
41 + }
42 +
43 + public IntermediateField this[ComPlusSubscriptionPropertyTupleFields index] => this.Fields[(int)index];
44 +
45 + public string Subscription_
46 + {
47 + get => this.Fields[(int)ComPlusSubscriptionPropertyTupleFields.Subscription_].AsString();
48 + set => this.Set((int)ComPlusSubscriptionPropertyTupleFields.Subscription_, value);
49 + }
50 +
51 + public string Name
52 + {
53 + get => this.Fields[(int)ComPlusSubscriptionPropertyTupleFields.Name].AsString();
54 + set => this.Set((int)ComPlusSubscriptionPropertyTupleFields.Name, value);
55 + }
56 +
57 + public string Value
58 + {
59 + get => this.Fields[(int)ComPlusSubscriptionPropertyTupleFields.Value].AsString();
60 + set => this.Set((int)ComPlusSubscriptionPropertyTupleFields.Value, value);
61 + }
62 + }
63 +}
\ No newline at end of file
src/wixext/Tuples/ComPlusSubscriptionTuple.cs new
+95
@@ -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.ComPlus
4 +{
5 + using WixToolset.Data;
6 + using WixToolset.ComPlus.Tuples;
7 +
8 + public static partial class ComPlusTupleDefinitions
9 + {
10 + public static readonly IntermediateTupleDefinition ComPlusSubscription = new IntermediateTupleDefinition(
11 + ComPlusTupleDefinitionType.ComPlusSubscription.ToString(),
12 + new[]
13 + {
14 + new IntermediateFieldDefinition(nameof(ComPlusSubscriptionTupleFields.Subscription), IntermediateFieldType.String),
15 + new IntermediateFieldDefinition(nameof(ComPlusSubscriptionTupleFields.ComPlusComponent_), IntermediateFieldType.String),
16 + new IntermediateFieldDefinition(nameof(ComPlusSubscriptionTupleFields.Component_), IntermediateFieldType.String),
17 + new IntermediateFieldDefinition(nameof(ComPlusSubscriptionTupleFields.CustomId), IntermediateFieldType.String),
18 + new IntermediateFieldDefinition(nameof(ComPlusSubscriptionTupleFields.Name), IntermediateFieldType.String),
19 + new IntermediateFieldDefinition(nameof(ComPlusSubscriptionTupleFields.EventCLSID), IntermediateFieldType.String),
20 + new IntermediateFieldDefinition(nameof(ComPlusSubscriptionTupleFields.PublisherID), IntermediateFieldType.String),
21 + },
22 + typeof(ComPlusSubscriptionTuple));
23 + }
24 +}
25 +
26 +namespace WixToolset.ComPlus.Tuples
27 +{
28 + using WixToolset.Data;
29 +
30 + public enum ComPlusSubscriptionTupleFields
31 + {
32 + Subscription,
33 + ComPlusComponent_,
34 + Component_,
35 + CustomId,
36 + Name,
37 + EventCLSID,
38 + PublisherID,
39 + }
40 +
41 + public class ComPlusSubscriptionTuple : IntermediateTuple
42 + {
43 + public ComPlusSubscriptionTuple() : base(ComPlusTupleDefinitions.ComPlusSubscription, null, null)
44 + {
45 + }
46 +
47 + public ComPlusSubscriptionTuple(SourceLineNumber sourceLineNumber, Identifier id = null) : base(ComPlusTupleDefinitions.ComPlusSubscription, sourceLineNumber, id)
48 + {
49 + }
50 +
51 + public IntermediateField this[ComPlusSubscriptionTupleFields index] => this.Fields[(int)index];
52 +
53 + public string Subscription
54 + {
55 + get => this.Fields[(int)ComPlusSubscriptionTupleFields.Subscription].AsString();
56 + set => this.Set((int)ComPlusSubscriptionTupleFields.Subscription, value);
57 + }
58 +
59 + public string ComPlusComponent_
60 + {
61 + get => this.Fields[(int)ComPlusSubscriptionTupleFields.ComPlusComponent_].AsString();
62 + set => this.Set((int)ComPlusSubscriptionTupleFields.ComPlusComponent_, value);
63 + }
64 +
65 + public string Component_
66 + {
67 + get => this.Fields[(int)ComPlusSubscriptionTupleFields.Component_].AsString();
68 + set => this.Set((int)ComPlusSubscriptionTupleFields.Component_, value);
69 + }
70 +
71 + public string CustomId
72 + {
73 + get => this.Fields[(int)ComPlusSubscriptionTupleFields.CustomId].AsString();
74 + set => this.Set((int)ComPlusSubscriptionTupleFields.CustomId, value);
75 + }
76 +
77 + public string Name
78 + {
79 + get => this.Fields[(int)ComPlusSubscriptionTupleFields.Name].AsString();
80 + set => this.Set((int)ComPlusSubscriptionTupleFields.Name, value);
81 + }
82 +
83 + public string EventCLSID
84 + {
85 + get => this.Fields[(int)ComPlusSubscriptionTupleFields.EventCLSID].AsString();
86 + set => this.Set((int)ComPlusSubscriptionTupleFields.EventCLSID, value);
87 + }
88 +
89 + public string PublisherID
90 + {
91 + get => this.Fields[(int)ComPlusSubscriptionTupleFields.PublisherID].AsString();
92 + set => this.Set((int)ComPlusSubscriptionTupleFields.PublisherID, value);
93 + }
94 + }
95 +}
\ No newline at end of file
src/wixext/Tuples/ComPlusTupleDefinitions.cs new
+135
@@ -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 WixToolset.ComPlus
4 +{
5 + using System;
6 + using WixToolset.Data;
7 +
8 + public enum ComPlusTupleDefinitionType
9 + {
10 + ComPlusApplication,
11 + ComPlusApplicationProperty,
12 + ComPlusApplicationRole,
13 + ComPlusApplicationRoleProperty,
14 + ComPlusAssembly,
15 + ComPlusAssemblyDependency,
16 + ComPlusComponent,
17 + ComPlusComponentProperty,
18 + ComPlusGroupInApplicationRole,
19 + ComPlusGroupInPartitionRole,
20 + ComPlusInterface,
21 + ComPlusInterfaceProperty,
22 + ComPlusMethod,
23 + ComPlusMethodProperty,
24 + ComPlusPartition,
25 + ComPlusPartitionProperty,
26 + ComPlusPartitionRole,
27 + ComPlusPartitionUser,
28 + ComPlusRoleForComponent,
29 + ComPlusRoleForInterface,
30 + ComPlusRoleForMethod,
31 + ComPlusSubscription,
32 + ComPlusSubscriptionProperty,
33 + ComPlusUserInApplicationRole,
34 + ComPlusUserInPartitionRole,
35 + }
36 +
37 + public static partial class ComPlusTupleDefinitions
38 + {
39 + public static readonly Version Version = new Version("4.0.0");
40 +
41 + public static IntermediateTupleDefinition ByName(string name)
42 + {
43 + if (!Enum.TryParse(name, out ComPlusTupleDefinitionType type))
44 + {
45 + return null;
46 + }
47 +
48 + return ByType(type);
49 + }
50 +
51 + public static IntermediateTupleDefinition ByType(ComPlusTupleDefinitionType type)
52 + {
53 + switch (type)
54 + {
55 + case ComPlusTupleDefinitionType.ComPlusApplication:
56 + return ComPlusTupleDefinitions.ComPlusApplication;
57 +
58 + case ComPlusTupleDefinitionType.ComPlusApplicationProperty:
59 + return ComPlusTupleDefinitions.ComPlusApplicationProperty;
60 +
61 + case ComPlusTupleDefinitionType.ComPlusApplicationRole:
62 + return ComPlusTupleDefinitions.ComPlusApplicationRole;
63 +
64 + case ComPlusTupleDefinitionType.ComPlusApplicationRoleProperty:
65 + return ComPlusTupleDefinitions.ComPlusApplicationRoleProperty;
66 +
67 + case ComPlusTupleDefinitionType.ComPlusAssembly:
68 + return ComPlusTupleDefinitions.ComPlusAssembly;
69 +
70 + case ComPlusTupleDefinitionType.ComPlusAssemblyDependency:
71 + return ComPlusTupleDefinitions.ComPlusAssemblyDependency;
72 +
73 + case ComPlusTupleDefinitionType.ComPlusComponent:
74 + return ComPlusTupleDefinitions.ComPlusComponent;
75 +
76 + case ComPlusTupleDefinitionType.ComPlusComponentProperty:
77 + return ComPlusTupleDefinitions.ComPlusComponentProperty;
78 +
79 + case ComPlusTupleDefinitionType.ComPlusGroupInApplicationRole:
80 + return ComPlusTupleDefinitions.ComPlusGroupInApplicationRole;
81 +
82 + case ComPlusTupleDefinitionType.ComPlusGroupInPartitionRole:
83 + return ComPlusTupleDefinitions.ComPlusGroupInPartitionRole;
84 +
85 + case ComPlusTupleDefinitionType.ComPlusInterface:
86 + return ComPlusTupleDefinitions.ComPlusInterface;
87 +
88 + case ComPlusTupleDefinitionType.ComPlusInterfaceProperty:
89 + return ComPlusTupleDefinitions.ComPlusInterfaceProperty;
90 +
91 + case ComPlusTupleDefinitionType.ComPlusMethod:
92 + return ComPlusTupleDefinitions.ComPlusMethod;
93 +
94 + case ComPlusTupleDefinitionType.ComPlusMethodProperty:
95 + return ComPlusTupleDefinitions.ComPlusMethodProperty;
96 +
97 + case ComPlusTupleDefinitionType.ComPlusPartition:
98 + return ComPlusTupleDefinitions.ComPlusPartition;
99 +
100 + case ComPlusTupleDefinitionType.ComPlusPartitionProperty:
101 + return ComPlusTupleDefinitions.ComPlusPartitionProperty;
102 +
103 + case ComPlusTupleDefinitionType.ComPlusPartitionRole:
104 + return ComPlusTupleDefinitions.ComPlusPartitionRole;
105 +
106 + case ComPlusTupleDefinitionType.ComPlusPartitionUser:
107 + return ComPlusTupleDefinitions.ComPlusPartitionUser;
108 +
109 + case ComPlusTupleDefinitionType.ComPlusRoleForComponent:
110 + return ComPlusTupleDefinitions.ComPlusRoleForComponent;
111 +
112 + case ComPlusTupleDefinitionType.ComPlusRoleForInterface:
113 + return ComPlusTupleDefinitions.ComPlusRoleForInterface;
114 +
115 + case ComPlusTupleDefinitionType.ComPlusRoleForMethod:
116 + return ComPlusTupleDefinitions.ComPlusRoleForMethod;
117 +
118 + case ComPlusTupleDefinitionType.ComPlusSubscription:
119 + return ComPlusTupleDefinitions.ComPlusSubscription;
120 +
121 + case ComPlusTupleDefinitionType.ComPlusSubscriptionProperty:
122 + return ComPlusTupleDefinitions.ComPlusSubscriptionProperty;
123 +
124 + case ComPlusTupleDefinitionType.ComPlusUserInApplicationRole:
125 + return ComPlusTupleDefinitions.ComPlusUserInApplicationRole;
126 +
127 + case ComPlusTupleDefinitionType.ComPlusUserInPartitionRole:
128 + return ComPlusTupleDefinitions.ComPlusUserInPartitionRole;
129 +
130 + default:
131 + throw new ArgumentOutOfRangeException(nameof(type));
132 + }
133 + }
134 + }
135 +}
src/wixext/Tuples/ComPlusUserInApplicationRoleTuple.cs new
+71
@@ -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.ComPlus
4 +{
5 + using WixToolset.Data;
6 + using WixToolset.ComPlus.Tuples;
7 +
8 + public static partial class ComPlusTupleDefinitions
9 + {
10 + public static readonly IntermediateTupleDefinition ComPlusUserInApplicationRole = new IntermediateTupleDefinition(
11 + ComPlusTupleDefinitionType.ComPlusUserInApplicationRole.ToString(),
12 + new[]
13 + {
14 + new IntermediateFieldDefinition(nameof(ComPlusUserInApplicationRoleTupleFields.UserInApplicationRole), IntermediateFieldType.String),
15 + new IntermediateFieldDefinition(nameof(ComPlusUserInApplicationRoleTupleFields.ApplicationRole_), IntermediateFieldType.String),
16 + new IntermediateFieldDefinition(nameof(ComPlusUserInApplicationRoleTupleFields.Component_), IntermediateFieldType.String),
17 + new IntermediateFieldDefinition(nameof(ComPlusUserInApplicationRoleTupleFields.User_), IntermediateFieldType.String),
18 + },
19 + typeof(ComPlusUserInApplicationRoleTuple));
20 + }
21 +}
22 +
23 +namespace WixToolset.ComPlus.Tuples
24 +{
25 + using WixToolset.Data;
26 +
27 + public enum ComPlusUserInApplicationRoleTupleFields
28 + {
29 + UserInApplicationRole,
30 + ApplicationRole_,
31 + Component_,
32 + User_,
33 + }
34 +
35 + public class ComPlusUserInApplicationRoleTuple : IntermediateTuple
36 + {
37 + public ComPlusUserInApplicationRoleTuple() : base(ComPlusTupleDefinitions.ComPlusUserInApplicationRole, null, null)
38 + {
39 + }
40 +
41 + public ComPlusUserInApplicationRoleTuple(SourceLineNumber sourceLineNumber, Identifier id = null) : base(ComPlusTupleDefinitions.ComPlusUserInApplicationRole, sourceLineNumber, id)
42 + {
43 + }
44 +
45 + public IntermediateField this[ComPlusUserInApplicationRoleTupleFields index] => this.Fields[(int)index];
46 +
47 + public string UserInApplicationRole
48 + {
49 + get => this.Fields[(int)ComPlusUserInApplicationRoleTupleFields.UserInApplicationRole].AsString();
50 + set => this.Set((int)ComPlusUserInApplicationRoleTupleFields.UserInApplicationRole, value);
51 + }
52 +
53 + public string ApplicationRole_
54 + {
55 + get => this.Fields[(int)ComPlusUserInApplicationRoleTupleFields.ApplicationRole_].AsString();
56 + set => this.Set((int)ComPlusUserInApplicationRoleTupleFields.ApplicationRole_, value);
57 + }
58 +
59 + public string Component_
60 + {
61 + get => this.Fields[(int)ComPlusUserInApplicationRoleTupleFields.Component_].AsString();
62 + set => this.Set((int)ComPlusUserInApplicationRoleTupleFields.Component_, value);
63 + }
64 +
65 + public string User_
66 + {
67 + get => this.Fields[(int)ComPlusUserInApplicationRoleTupleFields.User_].AsString();
68 + set => this.Set((int)ComPlusUserInApplicationRoleTupleFields.User_, value);
69 + }
70 + }
71 +}
\ No newline at end of file
src/wixext/Tuples/ComPlusUserInPartitionRoleTuple.cs new
+71
@@ -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.ComPlus
4 +{
5 + using WixToolset.Data;
6 + using WixToolset.ComPlus.Tuples;
7 +
8 + public static partial class ComPlusTupleDefinitions
9 + {
10 + public static readonly IntermediateTupleDefinition ComPlusUserInPartitionRole = new IntermediateTupleDefinition(
11 + ComPlusTupleDefinitionType.ComPlusUserInPartitionRole.ToString(),
12 + new[]
13 + {
14 + new IntermediateFieldDefinition(nameof(ComPlusUserInPartitionRoleTupleFields.UserInPartitionRole), IntermediateFieldType.String),
15 + new IntermediateFieldDefinition(nameof(ComPlusUserInPartitionRoleTupleFields.PartitionRole_), IntermediateFieldType.String),
16 + new IntermediateFieldDefinition(nameof(ComPlusUserInPartitionRoleTupleFields.Component_), IntermediateFieldType.String),
17 + new IntermediateFieldDefinition(nameof(ComPlusUserInPartitionRoleTupleFields.User_), IntermediateFieldType.String),
18 + },
19 + typeof(ComPlusUserInPartitionRoleTuple));
20 + }
21 +}
22 +
23 +namespace WixToolset.ComPlus.Tuples
24 +{
25 + using WixToolset.Data;
26 +
27 + public enum ComPlusUserInPartitionRoleTupleFields
28 + {
29 + UserInPartitionRole,
30 + PartitionRole_,
31 + Component_,
32 + User_,
33 + }
34 +
35 + public class ComPlusUserInPartitionRoleTuple : IntermediateTuple
36 + {
37 + public ComPlusUserInPartitionRoleTuple() : base(ComPlusTupleDefinitions.ComPlusUserInPartitionRole, null, null)
38 + {
39 + }
40 +
41 + public ComPlusUserInPartitionRoleTuple(SourceLineNumber sourceLineNumber, Identifier id = null) : base(ComPlusTupleDefinitions.ComPlusUserInPartitionRole, sourceLineNumber, id)
42 + {
43 + }
44 +
45 + public IntermediateField this[ComPlusUserInPartitionRoleTupleFields index] => this.Fields[(int)index];
46 +
47 + public string UserInPartitionRole
48 + {
49 + get => this.Fields[(int)ComPlusUserInPartitionRoleTupleFields.UserInPartitionRole].AsString();
50 + set => this.Set((int)ComPlusUserInPartitionRoleTupleFields.UserInPartitionRole, value);
51 + }
52 +
53 + public string PartitionRole_
54 + {
55 + get => this.Fields[(int)ComPlusUserInPartitionRoleTupleFields.PartitionRole_].AsString();
56 + set => this.Set((int)ComPlusUserInPartitionRoleTupleFields.PartitionRole_, value);
57 + }
58 +
59 + public string Component_
60 + {
61 + get => this.Fields[(int)ComPlusUserInPartitionRoleTupleFields.Component_].AsString();
62 + set => this.Set((int)ComPlusUserInPartitionRoleTupleFields.Component_, value);
63 + }
64 +
65 + public string User_
66 + {
67 + get => this.Fields[(int)ComPlusUserInPartitionRoleTupleFields.User_].AsString();
68 + set => this.Set((int)ComPlusUserInPartitionRoleTupleFields.User_, value);
69 + }
70 + }
71 +}
\ No newline at end of file
src/wixext/WixComPlusExtension.csproj deleted
-50
@@ -1,50 +0,0 @@
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 -<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="4.0">
6 - <PropertyGroup>
7 - <ProjectGuid>{1497B777-330B-4CFE-927A-22850CD24D64}</ProjectGuid>
8 - <AssemblyName>WixComPlusExtension</AssemblyName>
9 - <OutputType>Library</OutputType>
10 - <RootNamespace>WixToolset.Extensions</RootNamespace>
11 - </PropertyGroup>
12 - <ItemGroup>
13 - <Compile Include="AssemblyInfo.cs" />
14 - <Compile Include="ComPlusCompiler.cs" />
15 - <Compile Include="ComPlusDecompiler.cs" />
16 - <Compile Include="ComPlusExtensionData.cs" />
17 - <MsgGenSource Include="Data\messages.xml">
18 - <ResourcesLogicalName>$(RootNamespace).Data.Messages.resources</ResourcesLogicalName>
19 - </MsgGenSource>
20 - <EmbeddedFlattenedResource Include="Data\tables.xml">
21 - <LogicalName>$(RootNamespace).Data.tables.xml</LogicalName>
22 - </EmbeddedFlattenedResource>
23 - <EmbeddedFlattenedResource Include="Xsd\complus.xsd">
24 - <LogicalName>$(RootNamespace).Xsd.complus.xsd</LogicalName>
25 - </EmbeddedFlattenedResource>
26 - <XsdGenSource Include="Xsd\complus.xsd">
27 - <CommonNamespace>WixToolset.Data.Serialize</CommonNamespace>
28 - <Namespace>WixToolset.Extensions.Serialize.ComPlus</Namespace>
29 - </XsdGenSource>
30 - <None Include="Xsd\complus.xsd">
31 - <Link>complus.xsd</Link>
32 - <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
33 - </None>
34 - <EmbeddedResource Include="$(OutputPath)\complus.wixlib">
35 - <Link>Data\complus.wixlib</Link>
36 - </EmbeddedResource>
37 - </ItemGroup>
38 - <ItemGroup>
39 - <Reference Include="System" />
40 - <Reference Include="System.Xml" />
41 - <Reference Include="System.Xml.Linq" />
42 - <ProjectReference Include="..\..\..\libs\WixToolset.Data\WixToolset.Data.csproj" />
43 - <ProjectReference Include="..\..\..\libs\WixToolset.Extensibility\WixToolset.Extensibility.csproj" />
44 - <ProjectReference Include="..\..\..\tools\wix\Wix.csproj" />
45 - <ProjectReference Include="..\wixlib\ComPlusExtension.wixproj">
46 - <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
47 - </ProjectReference>
48 - </ItemGroup>
49 - <Import Project="$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildProjectDirectory), wix.proj))\tools\WixBuild.targets" />
50 -</Project>
src/wixext/WixToolset.ComPlus.wixext.csproj new
+33
@@ -0,0 +1,33 @@
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 + <TargetFramework>netstandard2.0</TargetFramework>
7 + <RootNamespace>WixToolset.ComPlus</RootNamespace>
8 + <Description>WiX Toolset ComPlus Extension</Description>
9 + <Title>WiX Toolset ComPlus Extension</Title>
10 + <IsTool>true</IsTool>
11 + <ContentTargetFolders>build</ContentTargetFolders>
12 + </PropertyGroup>
13 +
14 + <ItemGroup>
15 + <Content Include="$(MSBuildThisFileName).targets" />
16 + <Content Include="complus.xsd" PackagePath="tools" />
17 + <EmbeddedResource Include="tables.xml" />
18 + <EmbeddedResource Include="$(OutputPath)..\complus.wixlib" />
19 + </ItemGroup>
20 +
21 + <ItemGroup>
22 + <PackageReference Include="WixToolset.Data" Version="4.0.*" PrivateAssets="all" />
23 + <PackageReference Include="WixToolset.Extensibility" Version="4.0.*" PrivateAssets="all" />
24 + </ItemGroup>
25 +
26 + <ItemGroup>
27 + <ProjectReference Include="..\wixlib\complus.wixproj" ReferenceOutputAssembly="false" Condition=" '$(NCrunch)'=='' " />
28 + </ItemGroup>
29 +
30 + <ItemGroup>
31 + <PackageReference Include="Nerdbank.GitVersioning" Version="2.1.65" PrivateAssets="all" />
32 + </ItemGroup>
33 +</Project>
src/wixext/WixToolset.ComPlus.wixext.targets new
+11
@@ -0,0 +1,11 @@
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 xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="4.0">
5 + <PropertyGroup>
6 + <WixToolsetComPlusWixextPath Condition=" '$(WixToolsetComPlusWixextPath)' == '' ">$(MSBuildThisFileDirectory)..\tools\WixToolset.ComPlus.wixext.dll</WixToolsetComPlusWixextPath>
7 + </PropertyGroup>
8 + <ItemGroup>
9 + <WixExtension Include="$(WixToolsetComPlusWixextPath)" />
10 + </ItemGroup>
11 +</Project>
src/wixext/messages.xml deleted
-77
@@ -1,77 +0,0 @@
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 -<Messages Namespace="WixToolset.Extensions" Resources="Data.Messages" xmlns="http://schemas.microsoft.com/genmsgs/2004/07/messages">
6 - <Class Name="ComPlusErrors" ContainerName="ComPlusErrorEventArgs" BaseContainerName="MessageEventArgs">
7 - <Message Id="IllegalAttributeWithoutComponent" Number="6000">
8 - <Instance>
9 - The {0}/@{1} attribute cannot be specified unless the element has a component as an ancestor. A {0} that does not have a component ancestor is not installed.
10 - <Parameter Type="System.String" Name="elementName" />
11 - <Parameter Type="System.String" Name="attributeName" />
12 - </Instance>
13 - </Message>
14 - <Message Id="IllegalElementWithoutComponent" Number="6001">
15 - <Instance>
16 - The {0} element cannot be specified unless the element has a component as an ancestor. A {0} that does not have a component ancestor is not installed.
17 - <Parameter Type="System.String" Name="elementName" />
18 - </Instance>
19 - </Message>
20 - <Message Id="UnexpectedAttributeWithOtherValue" Number="6002">
21 - <Instance>
22 - The {0}/@{1} attribute cannot coexist with the {2} attribute's value of '{3}'.
23 - <Parameter Type="System.String" Name="elementName" />
24 - <Parameter Type="System.String" Name="attributeName" />
25 - <Parameter Type="System.String" Name="otherAttributeName" />
26 - <Parameter Type="System.String" Name="otherValue" />
27 - </Instance>
28 - <Instance>
29 - The {0}/@{1} attribute's value, '{2}', cannot coexist with the {3} attribute's value of '{4}'.
30 - <Parameter Type="System.String" Name="elementName" />
31 - <Parameter Type="System.String" Name="attributeName" />
32 - <Parameter Type="System.String" Name="value" />
33 - <Parameter Type="System.String" Name="otherAttributeName" />
34 - <Parameter Type="System.String" Name="otherValue" />
35 - </Instance>
36 - </Message>
37 - <Message Id="UnexpectedAttributeWithoutOtherValue" Number="6003">
38 - <Instance>
39 - The {0}/@{1} cannot be provided unless the {2} attribute is provided with a value of '{3}'.
40 - <Parameter Type="System.String" Name="elementName" />
41 - <Parameter Type="System.String" Name="attributeName" />
42 - <Parameter Type="System.String" Name="otherAttributeName" />
43 - <Parameter Type="System.String" Name="otherValue" />
44 - </Instance>
45 - </Message>
46 - <Message Id="RequiredAttributeUnderComponent" Number="6004">
47 - <Instance>
48 - The {0}/@{1} attribute must be provided when {0} element is nested under a component.
49 - <Parameter Type="System.String" Name="elementName" />
50 - <Parameter Type="System.String" Name="attributeName" />
51 - </Instance>
52 - </Message>
53 - <Message Id="RequiredAttribute" Number="6005">
54 - <Instance>
55 - A {0} element must have either a {1} attribute or a {2} attribute, or both set.
56 - <Parameter Type="System.String" Name="elementName" />
57 - <Parameter Type="System.String" Name="attributeName1" />
58 - <Parameter Type="System.String" Name="attributeName2" />
59 - </Instance>
60 - </Message>
61 - <Message Id="RequiredAttributeNotUnderComponent" Number="6006">
62 - <Instance>
63 - A {0} element not nested under a component must have either a {1} attribute or a {2} attribute, or both set.
64 - <Parameter Type="System.String" Name="elementName" />
65 - <Parameter Type="System.String" Name="attributeName1" />
66 - <Parameter Type="System.String" Name="attributeName2" />
67 - </Instance>
68 - </Message>
69 - </Class>
70 - <Class Name="ComPlusWarnings" ContainerName="ComPlusWarningEventArgs" BaseContainerName="MessageEventArgs">
71 - <Message Id="MissingComponents" Number="6007">
72 - <Instance>The ComPlusAssembly element has a Type attribute with a value of 'native', but the element does not contain any ComPlusComponent elements. All components contained in a native assembly must be listed, or they will not be correctly removed during uninstall.</Instance>
73 - </Message>
74 - </Class>
75 - <Class Name="ComPlusVerboses" ContainerName="ComPlusVerboseEventArgs" BaseContainerName="MessageEventArgs">
76 - </Class>
77 -</Messages>
src/wixlib/ComPlusExtension.wixproj deleted
-26
@@ -1,26 +0,0 @@
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 -<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="4.0">
6 - <PropertyGroup>
7 - <ProjectGuid>{E191E61E-E098-4F71-888F-51A79F952022}</ProjectGuid>
8 - <OutputName>complus</OutputName>
9 - <OutputType>Library</OutputType>
10 - <BindFiles>true</BindFiles>
11 - <SuppressSpecificWarnings>1086</SuppressSpecificWarnings>
12 - </PropertyGroup>
13 -
14 - <ItemGroup>
15 - <Compile Include="ComPlusExtension.wxs" />
16 - <EmbeddedResource Include="en-us.wxl" />
17 - <EmbeddedResource Include="es-es.wxl" />
18 - <EmbeddedResource Include="ja-jp.wxl" />
19 - </ItemGroup>
20 -
21 - <ItemGroup>
22 - <ProjectReference Include="..\ca\complusca.proj" />
23 - </ItemGroup>
24 -
25 - <Import Project="$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildProjectDirectory), wix.proj))\tools\WixBuild.targets" />
26 -</Project>
src/wixlib/ComPlusExtension.wxs
+28 -30
@@ -60,19 +60,19 @@
60 <Fragment>
61 <UIRef Id="ComPlusUI" />
62
63 - <CustomAction Id="ConfigureComPlusInstall" BinaryKey="WixCPSched_x86" DllEntry="ConfigureComPlusInstall" Execute="immediate" Return="check" SuppressModularization="yes" />
64 - <CustomAction Id="ConfigureComPlusUninstall" BinaryKey="WixCPSched_x86" DllEntry="ConfigureComPlusUninstall" Execute="immediate" Return="check" SuppressModularization="yes" />
65 - <CustomAction Id="ComPlusInstallPrepare" BinaryKey="WixCPExec_x86" DllEntry="ComPlusPrepare" Execute="deferred" Return="check" Impersonate="no" HideTarget="yes" SuppressModularization="yes" />
66 - <CustomAction Id="ComPlusRollbackInstallPrepare" BinaryKey="WixCPExec_x86" DllEntry="ComPlusCleanup" Execute="rollback" Return="check" Impersonate="no" HideTarget="yes" SuppressModularization="yes" />
67 - <CustomAction Id="ComPlusInstallExecute" BinaryKey="WixCPExec_x86" DllEntry="ComPlusInstallExecute" Execute="deferred" Return="check" Impersonate="no" HideTarget="yes" SuppressModularization="yes" />
68 - <CustomAction Id="ComPlusInstallExecuteCommit" BinaryKey="WixCPExec_x86" DllEntry="ComPlusInstallExecuteCommit" Execute="commit" Return="check" Impersonate="no" HideTarget="yes" SuppressModularization="yes" />
69 - <CustomAction Id="ComPlusRollbackInstallExecute" BinaryKey="WixCPExec_x86" DllEntry="ComPlusRollbackInstallExecute" Execute="rollback" Return="check" Impersonate="no" HideTarget="yes" SuppressModularization="yes" />
70 - <CustomAction Id="ComPlusInstallCommit" BinaryKey="WixCPExec_x86" DllEntry="ComPlusCleanup" Execute="commit" Return="check" Impersonate="no" HideTarget="yes" SuppressModularization="yes" />
71 - <CustomAction Id="ComPlusUninstallPrepare" BinaryKey="WixCPExec_x86" DllEntry="ComPlusPrepare" Execute="deferred" Return="check" Impersonate="no" HideTarget="yes" SuppressModularization="yes" />
72 - <CustomAction Id="ComPlusRollbackUninstallPrepare" BinaryKey="WixCPExec_x86" DllEntry="ComPlusCleanup" Execute="rollback" Return="check" Impersonate="no" HideTarget="yes" SuppressModularization="yes" />
73 - <CustomAction Id="ComPlusUninstallExecute" BinaryKey="WixCPExec_x86" DllEntry="ComPlusUninstallExecute" Execute="deferred" Return="check" Impersonate="no" HideTarget="yes" SuppressModularization="yes" />
74 - <CustomAction Id="ComPlusRollbackUninstallExecute" BinaryKey="WixCPExec_x86" DllEntry="ComPlusInstallExecute" Execute="rollback" Return="check" Impersonate="no" HideTarget="yes" SuppressModularization="yes" />
75 - <CustomAction Id="ComPlusUninstallCommit" BinaryKey="WixCPExec_x86" DllEntry="ComPlusCleanup" Execute="commit" Return="check" Impersonate="no" HideTarget="yes" SuppressModularization="yes" />
63 + <CustomAction Id="ConfigureComPlusInstall" BinaryKey="ComPlusCA_x86" DllEntry="ConfigureComPlusInstall" Execute="immediate" Return="check" SuppressModularization="yes" />
64 + <CustomAction Id="ConfigureComPlusUninstall" BinaryKey="ComPlusCA_x86" DllEntry="ConfigureComPlusUninstall" Execute="immediate" Return="check" SuppressModularization="yes" />
65 + <CustomAction Id="ComPlusInstallPrepare" BinaryKey="ComPlusCA_x86" DllEntry="ComPlusPrepare" Execute="deferred" Return="check" Impersonate="no" HideTarget="yes" SuppressModularization="yes" />
66 + <CustomAction Id="ComPlusRollbackInstallPrepare" BinaryKey="ComPlusCA_x86" DllEntry="ComPlusCleanup" Execute="rollback" Return="check" Impersonate="no" HideTarget="yes" SuppressModularization="yes" />
67 + <CustomAction Id="ComPlusInstallExecute" BinaryKey="ComPlusCA_x86" DllEntry="ComPlusInstallExecute" Execute="deferred" Return="check" Impersonate="no" HideTarget="yes" SuppressModularization="yes" />
68 + <CustomAction Id="ComPlusInstallExecuteCommit" BinaryKey="ComPlusCA_x86" DllEntry="ComPlusInstallExecuteCommit" Execute="commit" Return="check" Impersonate="no" HideTarget="yes" SuppressModularization="yes" />
69 + <CustomAction Id="ComPlusRollbackInstallExecute" BinaryKey="ComPlusCA_x86" DllEntry="ComPlusRollbackInstallExecute" Execute="rollback" Return="check" Impersonate="no" HideTarget="yes" SuppressModularization="yes" />
70 + <CustomAction Id="ComPlusInstallCommit" BinaryKey="ComPlusCA_x86" DllEntry="ComPlusCleanup" Execute="commit" Return="check" Impersonate="no" HideTarget="yes" SuppressModularization="yes" />
71 + <CustomAction Id="ComPlusUninstallPrepare" BinaryKey="ComPlusCA_x86" DllEntry="ComPlusPrepare" Execute="deferred" Return="check" Impersonate="no" HideTarget="yes" SuppressModularization="yes" />
72 + <CustomAction Id="ComPlusRollbackUninstallPrepare" BinaryKey="ComPlusCA_x86" DllEntry="ComPlusCleanup" Execute="rollback" Return="check" Impersonate="no" HideTarget="yes" SuppressModularization="yes" />
73 + <CustomAction Id="ComPlusUninstallExecute" BinaryKey="ComPlusCA_x86" DllEntry="ComPlusUninstallExecute" Execute="deferred" Return="check" Impersonate="no" HideTarget="yes" SuppressModularization="yes" />
74 + <CustomAction Id="ComPlusRollbackUninstallExecute" BinaryKey="ComPlusCA_x86" DllEntry="ComPlusInstallExecute" Execute="rollback" Return="check" Impersonate="no" HideTarget="yes" SuppressModularization="yes" />
75 + <CustomAction Id="ComPlusUninstallCommit" BinaryKey="ComPlusCA_x86" DllEntry="ComPlusCleanup" Execute="commit" Return="check" Impersonate="no" HideTarget="yes" SuppressModularization="yes" />
76
77 <Property Id="ComPlusInstallPrepare" Hidden="yes" SuppressModularization="yes" />
78 <Property Id="ComPlusRollbackInstallPrepare" Hidden="yes" SuppressModularization="yes" />
@@ -95,19 +95,19 @@
95 <Fragment>
96 <UIRef Id="ComPlusUI" />
97
98 - <CustomAction Id="ConfigureComPlusInstall_x64" BinaryKey="WixCPSched_x64" DllEntry="ConfigureComPlusInstall" Execute="immediate" Return="check" SuppressModularization="yes" />
99 - <CustomAction Id="ConfigureComPlusUninstall_x64" BinaryKey="WixCPSched_x64" DllEntry="ConfigureComPlusUninstall" Execute="immediate" Return="check" SuppressModularization="yes" />
100 - <CustomAction Id="ComPlusInstallPrepare_64" BinaryKey="WixCPExec_x64" DllEntry="ComPlusPrepare" Execute="deferred" Return="check" Impersonate="no" HideTarget="yes" SuppressModularization="yes" />
101 - <CustomAction Id="ComPlusRollbackInstallPrepare_64" BinaryKey="WixCPExec_x64" DllEntry="ComPlusCleanup" Execute="rollback" Return="check" Impersonate="no" HideTarget="yes" SuppressModularization="yes" />
102 - <CustomAction Id="ComPlusInstallExecute_64" BinaryKey="WixCPExec_x64" DllEntry="ComPlusInstallExecute" Execute="deferred" Return="check" Impersonate="no" HideTarget="yes" SuppressModularization="yes" />
103 - <CustomAction Id="ComPlusInstallExecuteCommit_64" BinaryKey="WixCPExec_x64" DllEntry="ComPlusInstallExecuteCommit" Execute="commit" Return="check" Impersonate="no" HideTarget="yes" SuppressModularization="yes" />
104 - <CustomAction Id="ComPlusRollbackInstallExecute_64" BinaryKey="WixCPExec_x64" DllEntry="ComPlusRollbackInstallExecute" Execute="rollback" Return="check" Impersonate="no" HideTarget="yes" SuppressModularization="yes" />
105 - <CustomAction Id="ComPlusInstallCommit_64" BinaryKey="WixCPExec_x64" DllEntry="ComPlusCleanup" Execute="commit" Return="check" Impersonate="no" HideTarget="yes" SuppressModularization="yes" />
106 - <CustomAction Id="ComPlusUninstallPrepare_64" BinaryKey="WixCPExec_x64" DllEntry="ComPlusPrepare" Execute="deferred" Return="check" Impersonate="no" HideTarget="yes" SuppressModularization="yes" />
107 - <CustomAction Id="ComPlusRollbackUninstallPrepare_64" BinaryKey="WixCPExec_x64" DllEntry="ComPlusCleanup" Execute="rollback" Return="check" Impersonate="no" HideTarget="yes" SuppressModularization="yes" />
108 - <CustomAction Id="ComPlusUninstallExecute_64" BinaryKey="WixCPExec_x64" DllEntry="ComPlusUninstallExecute" Execute="deferred" Return="check" Impersonate="no" HideTarget="yes" SuppressModularization="yes" />
109 - <CustomAction Id="ComPlusRollbackUninstallExecute_64" BinaryKey="WixCPExec_x64" DllEntry="ComPlusInstallExecute" Execute="rollback" Return="check" Impersonate="no" HideTarget="yes" SuppressModularization="yes" />
110 - <CustomAction Id="ComPlusUninstallCommit_64" BinaryKey="WixCPExec_x64" DllEntry="ComPlusCleanup" Execute="commit" Return="check" Impersonate="no" HideTarget="yes" SuppressModularization="yes" />
98 + <CustomAction Id="ConfigureComPlusInstall_x64" BinaryKey="ComPlusCA_x64" DllEntry="ConfigureComPlusInstall" Execute="immediate" Return="check" SuppressModularization="yes" />
99 + <CustomAction Id="ConfigureComPlusUninstall_x64" BinaryKey="ComPlusCA_x64" DllEntry="ConfigureComPlusUninstall" Execute="immediate" Return="check" SuppressModularization="yes" />
100 + <CustomAction Id="ComPlusInstallPrepare_64" BinaryKey="ComPlusCA_x64" DllEntry="ComPlusPrepare" Execute="deferred" Return="check" Impersonate="no" HideTarget="yes" SuppressModularization="yes" />
101 + <CustomAction Id="ComPlusRollbackInstallPrepare_64" BinaryKey="ComPlusCA_x64" DllEntry="ComPlusCleanup" Execute="rollback" Return="check" Impersonate="no" HideTarget="yes" SuppressModularization="yes" />
102 + <CustomAction Id="ComPlusInstallExecute_64" BinaryKey="ComPlusCA_x64" DllEntry="ComPlusInstallExecute" Execute="deferred" Return="check" Impersonate="no" HideTarget="yes" SuppressModularization="yes" />
103 + <CustomAction Id="ComPlusInstallExecuteCommit_64" BinaryKey="ComPlusCA_x64" DllEntry="ComPlusInstallExecuteCommit" Execute="commit" Return="check" Impersonate="no" HideTarget="yes" SuppressModularization="yes" />
104 + <CustomAction Id="ComPlusRollbackInstallExecute_64" BinaryKey="ComPlusCA_x64" DllEntry="ComPlusRollbackInstallExecute" Execute="rollback" Return="check" Impersonate="no" HideTarget="yes" SuppressModularization="yes" />
105 + <CustomAction Id="ComPlusInstallCommit_64" BinaryKey="ComPlusCA_x64" DllEntry="ComPlusCleanup" Execute="commit" Return="check" Impersonate="no" HideTarget="yes" SuppressModularization="yes" />
106 + <CustomAction Id="ComPlusUninstallPrepare_64" BinaryKey="ComPlusCA_x64" DllEntry="ComPlusPrepare" Execute="deferred" Return="check" Impersonate="no" HideTarget="yes" SuppressModularization="yes" />
107 + <CustomAction Id="ComPlusRollbackUninstallPrepare_64" BinaryKey="ComPlusCA_x64" DllEntry="ComPlusCleanup" Execute="rollback" Return="check" Impersonate="no" HideTarget="yes" SuppressModularization="yes" />
108 + <CustomAction Id="ComPlusUninstallExecute_64" BinaryKey="ComPlusCA_x64" DllEntry="ComPlusUninstallExecute" Execute="deferred" Return="check" Impersonate="no" HideTarget="yes" SuppressModularization="yes" />
109 + <CustomAction Id="ComPlusRollbackUninstallExecute_64" BinaryKey="ComPlusCA_x64" DllEntry="ComPlusInstallExecute" Execute="rollback" Return="check" Impersonate="no" HideTarget="yes" SuppressModularization="yes" />
110 + <CustomAction Id="ComPlusUninstallCommit_64" BinaryKey="ComPlusCA_x64" DllEntry="ComPlusCleanup" Execute="commit" Return="check" Impersonate="no" HideTarget="yes" SuppressModularization="yes" />
111
112 <Property Id="ComPlusInstallPrepare_64" Hidden="yes" SuppressModularization="yes" />
113 <Property Id="ComPlusRollbackInstallPrepare_64" Hidden="yes" SuppressModularization="yes" />
@@ -128,12 +128,10 @@
128 </Fragment>
129
130 <Fragment>
131 - <Binary Id="WixCPExec_x86" SourceFile="!(bindpath.x86)\cpexec.dll"/>
132 - <Binary Id="WixCPSched_x86" SourceFile="!(bindpath.x86)\cpsched.dll"/>
131 + <Binary Id="ComPlusCA_x86" SourceFile="!(bindpath.x86)complusca.dll"/>
132 </Fragment>
133
134 <Fragment>
136 - <Binary Id="WixCPExec_x64" SourceFile="!(bindpath.x64)\cpexec.dll"/>
137 - <Binary Id="WixCPSched_x64" SourceFile="!(bindpath.x64)\cpsched.dll"/>
135 + <Binary Id="ComPlusCA_x64" SourceFile="!(bindpath.x64)complusca.dll"/>
136 </Fragment>
137 </Wix>
src/wixlib/caerr.wxi new
+96
@@ -0,0 +1,96 @@
1 +<Include>
2 + <?define msierrSecureObjectsFailedCreateSD = 25520?>
3 + <?define msierrSecureObjectsFailedSet = 25521?>
4 + <?define msierrSecureObjectsUnknownType = 25522?>
5 + <?define msierrXmlFileFailedRead = 25530?>
6 + <?define msierrXmlFileFailedOpen = 25531?>
7 + <?define msierrXmlFileFailedSelect = 25532?>
8 + <?define msierrXmlFileFailedSave = 25533?>
9 + <?define msierrXmlConfigFailedRead = 25540?>
10 + <?define msierrXmlConfigFailedOpen = 25541?>
11 + <?define msierrXmlConfigFailedSelect = 25542?>
12 + <?define msierrXmlConfigFailedSave = 25543?>
13 + <?define msierrFirewallCannotConnect = 25580?>
14 + <?define msierrIISCannotConnect = 26001?>
15 + <?define msierrIISFailedReadWebSite = 26002?>
16 + <?define msierrIISFailedReadWebDirs = 26003?>
17 + <?define msierrIISFailedReadVDirs = 26004?>
18 + <?define msierrIISFailedReadFilters = 26005?>
19 + <?define msierrIISFailedReadAppPool = 26006?>
20 + <?define msierrIISFailedReadMimeMap = 26007?>
21 + <?define msierrIISFailedReadProp = 26008?>
22 + <?define msierrIISFailedReadWebSvcExt = 26009?>
23 + <?define msierrIISFailedReadWebError = 26010?>
24 + <?define msierrIISFailedReadHttpHeader = 26011?>
25 + <?define msierrIISFailedSchedTransaction = 26031?>
26 + <?define msierrIISFailedSchedInstallWebs = 26032?>
27 + <?define msierrIISFailedSchedInstallWebDirs = 26033?>
28 + <?define msierrIISFailedSchedInstallVDirs = 26034?>
29 + <?define msierrIISFailedSchedInstallFilters = 26035?>
30 + <?define msierrIISFailedSchedInstallAppPool = 26036?>
31 + <?define msierrIISFailedSchedInstallProp = 26037?>
32 + <?define msierrIISFailedSchedInstallWebSvcExt = 26038?>
33 + <?define msierrIISFailedSchedUninstallWebs = 26051?>
34 + <?define msierrIISFailedSchedUninstallWebDirs = 26052?>
35 + <?define msierrIISFailedSchedUninstallVDirs = 26053?>
36 + <?define msierrIISFailedSchedUninstallFilters = 26054?>
37 + <?define msierrIISFailedSchedUninstallAppPool = 26055?>
38 + <?define msierrIISFailedSchedUninstallProp = 26056?>
39 + <?define msierrIISFailedSchedUninstallWebSvcExt = 26057?>
40 + <?define msierrIISFailedStartTransaction = 26101?>
41 + <?define msierrIISFailedOpenKey = 26102?>
42 + <?define msierrIISFailedCreateKey = 26103?>
43 + <?define msierrIISFailedWriteData = 26104?>
44 + <?define msierrIISFailedCreateApp = 26105?>
45 + <?define msierrIISFailedDeleteKey = 26106?>
46 + <?define msierrIISFailedDeleteApp = 26107?>
47 + <?define msierrIISFailedDeleteValue = 26108?>
48 + <?define msierrIISFailedCommitInUse = 26109?>
49 + <?define msierrSQLFailedCreateDatabase = 26201?>
50 + <?define msierrSQLFailedDropDatabase = 26202?>
51 + <?define msierrSQLFailedConnectDatabase = 26203?>
52 + <?define msierrSQLFailedExecString = 26204?>
53 + <?define msierrSQLDatabaseAlreadyExists = 26205?>
54 + <?define msierrPERFMONFailedRegisterDLL = 26251?>
55 + <?define msierrPERFMONFailedUnregisterDLL = 26252?>
56 + <?define msierrInstallPerfCounterData = 26253?>
57 + <?define msierrUninstallPerfCounterData = 26254?>
58 + <?define msierrSMBFailedCreate = 26301?>
59 + <?define msierrSMBFailedDrop = 26302?>
60 + <?define msierrCERTFailedOpen = 26351?>
61 + <?define msierrCERTFailedAdd = 26352?>
62 + <?define msierrUSRFailedUserCreate = 26401?>
63 + <?define msierrUSRFailedUserCreatePswd = 26402?>
64 + <?define msierrUSRFailedUserGroupAdd = 26403?>
65 + <?define msierrUSRFailedUserCreateExists = 26404?>
66 + <?define msierrUSRFailedGrantLogonAsService = 26405?>
67 + <?define msierrDependencyMissingDependencies = 26451?>
68 + <?define msierrDependencyHasDependents = 26452?>
69 + <?define msierrDotNetRuntimeRequired = 27000?>
70 + <?define msierrComPlusCannotConnect = 28001?>
71 + <?define msierrComPlusPartitionReadFailed = 28002?>
72 + <?define msierrComPlusPartitionRoleReadFailed = 28003?>
73 + <?define msierrComPlusUserInPartitionRoleReadFailed = 28004?>
74 + <?define msierrComPlusPartitionUserReadFailed = 28005?>
75 + <?define msierrComPlusApplicationReadFailed = 28006?>
76 + <?define msierrComPlusApplicationRoleReadFailed = 28007?>
77 + <?define msierrComPlusUserInApplicationRoleReadFailed = 28008?>
78 + <?define msierrComPlusAssembliesReadFailed = 28009?>
79 + <?define msierrComPlusSubscriptionReadFailed = 28010?>
80 + <?define msierrComPlusPartitionDependency = 28011?>
81 + <?define msierrComPlusPartitionNotFound = 28012?>
82 + <?define msierrComPlusPartitionIdConflict = 28013?>
83 + <?define msierrComPlusPartitionNameConflict = 28014?>
84 + <?define msierrComPlusApplicationDependency = 28015?>
85 + <?define msierrComPlusApplicationNotFound = 28016?>
86 + <?define msierrComPlusApplicationIdConflict = 28017?>
87 + <?define msierrComPlusApplicationNameConflict = 28018?>
88 + <?define msierrComPlusApplicationRoleDependency = 28019?>
89 + <?define msierrComPlusApplicationRoleNotFound = 28020?>
90 + <?define msierrComPlusApplicationRoleConflict = 28021?>
91 + <?define msierrComPlusAssemblyDependency = 28022?>
92 + <?define msierrComPlusSubscriptionIdConflict = 28023?>
93 + <?define msierrComPlusSubscriptionNameConflict = 28024?>
94 + <?define msierrComPlusFailedLookupNames = 28025?>
95 + <?define msierrMsmqCannotConnect = 28101?>
96 +</Include>
\ No newline at end of file
src/wixlib/complus.wixproj new
+36
@@ -0,0 +1,36 @@
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 +<Project DefaultTargets="Build" InitialTargets="EnsureWixToolsetInstalled" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="15.0">
4 + <Import Project="..\..\packages\WixToolset.MSBuild.4.0.0-build-0042\build\WixToolset.MSBuild.props" Condition="Exists('..\..\packages\WixToolset.MSBuild.4.0.0-build-0042\build\WixToolset.MSBuild.props')" />
5 + <Import Project="..\FindLocalWix.props" />
6 + <PropertyGroup>
7 + <ProjectGuid>{E191E61E-E098-4F71-888F-51A79F952022}</ProjectGuid>
8 + <OutputName>complus</OutputName>
9 + <OutputType>Library</OutputType>
10 + <BindFiles>true</BindFiles>
11 + <SuppressSpecificWarnings>1086</SuppressSpecificWarnings>
12 + </PropertyGroup>
13 +
14 + <ItemGroup>
15 + <Compile Include="ComPlusExtension.wxs" />
16 + <EmbeddedResource Include="en-us.wxl" />
17 + <EmbeddedResource Include="es-es.wxl" />
18 + <EmbeddedResource Include="ja-jp.wxl" />
19 + </ItemGroup>
20 + <ItemGroup>
21 + <None Include="packages.config" />
22 + </ItemGroup>
23 + <Import Project="$(WixTargetsPath)" Condition=" '$(WixTargetsPath)' != '' AND Exists('$(WixTargetsPath)') " />
24 + <Import Project="$(MSBuildExtensionsPath32)\Microsoft\WiX\v3.x\wix.targets" Condition=" '$(WixTargetsPath)' == '' AND Exists('$(MSBuildExtensionsPath32)\Microsoft\WiX\v3.x\wix.targets') " />
25 + <Target Name="EnsureWixToolsetInstalled" Condition=" '$(WixTargetsImported)' != 'true' ">
26 + <Error Text="WiX Toolset build tools (v4.0 or later) must be installed to build this project. To download the WiX Toolset, go to http://wixtoolset.org/releases/." />
27 + </Target>
28 + <Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">
29 + <PropertyGroup>
30 + <ErrorText>This project references NuGet package(s) that are missing on this computer. Use NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}.</ErrorText>
31 + </PropertyGroup>
32 + <Error Condition="!Exists('..\..\packages\Nerdbank.GitVersioning.2.1.65\build\Nerdbank.GitVersioning.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\..\packages\Nerdbank.GitVersioning.2.1.65\build\Nerdbank.GitVersioning.targets'))" />
33 + <Error Condition="!Exists('..\..\packages\WixToolset.MSBuild.4.0.0-build-0042\build\WixToolset.MSBuild.props')" Text="$([System.String]::Format('$(ErrorText)', '..\..\packages\WixToolset.MSBuild.4.0.0-build-0042\build\WixToolset.MSBuild.props'))" />
34 + </Target>
35 + <Import Project="..\..\packages\Nerdbank.GitVersioning.2.1.65\build\Nerdbank.GitVersioning.targets" Condition="Exists('..\..\packages\Nerdbank.GitVersioning.2.1.65\build\Nerdbank.GitVersioning.targets')" />
36 +</Project>
src/wixlib/packages.config new
+5
@@ -0,0 +1,5 @@
1 +<?xml version="1.0" encoding="utf-8"?>
2 +<packages>
3 + <package id="Nerdbank.GitVersioning" version="2.1.65" developmentDependency="true" targetFramework="net40" />
4 + <package id="WixToolset.MSBuild" version="4.0.0-build-0042" developmentDependency="true" targetFramework="net40" />
5 +</packages>
\ No newline at end of file
version.json new
+11
@@ -0,0 +1,11 @@
1 +{
2 + "version": "4.0",
3 + "publicReleaseRefSpec": [
4 + "^refs/heads/master$"
5 + ],
6 + "cloudBuild": {
7 + "buildNumber": {
8 + "enabled": true
9 + }
10 + }
11 +}