From 9a105bff160e7ab7db82b1f2689e21f4f7b30917 Mon Sep 17 00:00:00 2001
From: Bob Arnson <bob@firegiant.com>
Date: Tue, 27 Oct 2020 15:54:11 -0400
Subject: Update project for Package/SummaryInformation change (and others).

---
 ComPlus.wixext.sln                                 |   4 +-
 global.json                                        |   2 +-
 src/ca/complusca.vcxproj                           |  15 +-
 .../TestData/UsingComPlusPartition/Package.wxs     |  11 +-
 src/wixext/ComPlusCompiler.cs                      |  13 +-
 src/wixext/WixToolset.ComPlus.wixext.csproj        |   1 -
 src/wixext/complus.xsd                             | 944 ---------------------
 src/wixlib/ComPlusExtension.wxs                    | 157 ++--
 src/wixlib/caerr.wxi                               |   2 +-
 9 files changed, 93 insertions(+), 1056 deletions(-)
 delete mode 100644 src/wixext/complus.xsd

diff --git a/ComPlus.wixext.sln b/ComPlus.wixext.sln
index f117e399..9fab25f2 100644
--- a/ComPlus.wixext.sln
+++ b/ComPlus.wixext.sln
@@ -1,7 +1,7 @@
 
 Microsoft Visual Studio Solution File, Format Version 12.00
-# Visual Studio 15
-VisualStudioVersion = 15.0.28010.2016
+# Visual Studio Version 16
+VisualStudioVersion = 16.0.30611.23
 MinimumVisualStudioVersion = 10.0.40219.1
 Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "complusca", "src\ca\complusca.vcxproj", "{BDEF51ED-E242-4FA2-801A-01B127DF851A}"
 EndProject
diff --git a/global.json b/global.json
index 7a995d0a..f94ab6df 100644
--- a/global.json
+++ b/global.json
@@ -1,5 +1,5 @@
 {
   "msbuild-sdks": {
-    "WixToolset.Sdk": "4.0.0-build-0143"
+    "WixToolset.Sdk": "4.0.0-build-0162"
   }
 }
diff --git a/src/ca/complusca.vcxproj b/src/ca/complusca.vcxproj
index 60c48f6d..0192557a 100644
--- a/src/ca/complusca.vcxproj
+++ b/src/ca/complusca.vcxproj
@@ -1,10 +1,8 @@
 <?xml version="1.0" encoding="utf-8"?>
 <!-- Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. -->
-
 <Project DefaultTargets="Build" ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
   <Import Project="..\..\packages\WixToolset.DUtil.4.0.30\build\WixToolset.DUtil.props" Condition="Exists('..\..\packages\WixToolset.DUtil.4.0.30\build\WixToolset.DUtil.props')" />
   <Import Project="..\..\packages\WixToolset.WcaUtil.4.0.16\build\WixToolset.WcaUtil.props" Condition="Exists('..\..\packages\WixToolset.WcaUtil.4.0.16\build\WixToolset.WcaUtil.props')" />
-
   <ItemGroup Label="ProjectConfigurations">
     <ProjectConfiguration Include="Debug|Win32">
       <Configuration>Debug</Configuration>
@@ -23,24 +21,21 @@
       <Platform>x64</Platform>
     </ProjectConfiguration>
   </ItemGroup>
-
   <PropertyGroup Label="Globals">
     <ProjectGuid>{BDEF51ED-E242-4FA2-801A-01B127DF851A}</ProjectGuid>
     <ConfigurationType>DynamicLibrary</ConfigurationType>
-    <PlatformToolset>v141</PlatformToolset>
+    <PlatformToolset>v142</PlatformToolset>
     <CharacterSet>Unicode</CharacterSet>
     <TargetName>complusca</TargetName>
     <ProjectModuleDefinitionFile>complusca.def</ProjectModuleDefinitionFile>
     <Description>WiX Toolset ComPlus CustomAction</Description>
+    <WindowsTargetPlatformVersion>10.0</WindowsTargetPlatformVersion>
   </PropertyGroup>
-
   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
-
   <PropertyGroup>
     <ProjectAdditionalLinkLibraries>msi.lib</ProjectAdditionalLinkLibraries>
   </PropertyGroup>
-
   <ItemGroup>
     <ClCompile Include="cpappexec.cpp" />
     <ClCompile Include="cpapproleexec.cpp" />
@@ -62,7 +57,6 @@
       <PrecompiledHeader>Create</PrecompiledHeader>
     </ClCompile>
   </ItemGroup>
-
   <ItemGroup>
     <ClInclude Include="cpappexec.h" />
     <ClInclude Include="cpapproleexec.h" />
@@ -81,14 +75,11 @@
     <ClInclude Include="cputilsched.h" />
     <ClInclude Include="precomp.h" />
   </ItemGroup>
-
   <ItemGroup>
     <None Include="packages.config" />
     <None Include="complusca.def" />
   </ItemGroup>
-
   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
-
   <Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">
     <PropertyGroup>
       <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>
@@ -96,4 +87,4 @@
     <Error Condition="!Exists('..\..\packages\WixToolset.DUtil.4.0.30\build\WixToolset.DUtil.props')" Text="$([System.String]::Format('$(ErrorText)', '..\..\packages\WixToolset.DUtil.4.0.30\build\WixToolset.DUtil.props'))" />
     <Error Condition="!Exists('..\..\packages\WixToolset.WcaUtil.4.0.16\build\WixToolset.WcaUtil.props')" Text="$([System.String]::Format('$(ErrorText)', '..\..\packages\WixToolset.WcaUtil.4.0.16\build\WixToolset.WcaUtil.props'))" />
   </Target>
-</Project>
+</Project>
\ No newline at end of file
diff --git a/src/test/WixToolsetTest.ComPlus/TestData/UsingComPlusPartition/Package.wxs b/src/test/WixToolsetTest.ComPlus/TestData/UsingComPlusPartition/Package.wxs
index 68ff98fd..44820bdd 100644
--- a/src/test/WixToolsetTest.ComPlus/TestData/UsingComPlusPartition/Package.wxs
+++ b/src/test/WixToolsetTest.ComPlus/TestData/UsingComPlusPartition/Package.wxs
@@ -1,16 +1,15 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Wix xmlns="http://wixtoolset.org/schemas/v4/wxs">
-  <Product Id="*" Name="MsiPackage" Language="1033" Version="1.0.0.0" Manufacturer="Example Corporation" UpgradeCode="047730a5-30fe-4a62-a520-da9381b8226a">
-    <Package InstallerVersion="200" Compressed="no" InstallScope="perMachine" />
+<Wix xmlns="http://wixtoolset.org/schemas/v4/wxs">
+  <Package Name="MsiPackage" Language="1033" Version="1.0.0.0" Manufacturer="Example Corporation" UpgradeCode="047730a5-30fe-4a62-a520-da9381b8226a" InstallerVersion="200">
+    
 
     <MajorUpgrade DowngradeErrorMessage="!(loc.DowngradeError)" />
-    <MediaTemplate />
+    
 
     <Feature Id="ProductFeature" Title="!(loc.FeatureTitle)">
       <ComponentGroupRef Id="ProductComponents" />
     </Feature>
     
-  </Product>
+  </Package>
 
   <Fragment>
     <Directory Id="TARGETDIR" Name="SourceDir">
diff --git a/src/wixext/ComPlusCompiler.cs b/src/wixext/ComPlusCompiler.cs
index 8df98bdf..4404801e 100644
--- a/src/wixext/ComPlusCompiler.cs
+++ b/src/wixext/ComPlusCompiler.cs
@@ -94,7 +94,7 @@ namespace WixToolset.ComPlus
                     break;
                 case "Fragment":
                 case "Module":
-                case "Product":
+                case "Package":
                     switch (element.Name.LocalName)
                     {
                         case "ComPlusPartition":
@@ -2150,15 +2150,8 @@ namespace WixToolset.ComPlus
         {
             if (win64)
             {
-                if (this.Context.Platform == Platform.IA64)
-                {
-                    this.Messaging.Write(ErrorMessages.UnsupportedPlatformForElement(sourceLineNumbers, "ia64", elementName));
-                }
-                else
-                {
-                    this.ParseHelper.CreateSimpleReference(section, sourceLineNumbers, "CustomAction", "ConfigureComPlusInstall_x64");
-                    this.ParseHelper.CreateSimpleReference(section, sourceLineNumbers, "CustomAction", "ConfigureComPlusUninstall_x64");
-                }
+                this.ParseHelper.CreateSimpleReference(section, sourceLineNumbers, "CustomAction", "ConfigureComPlusInstall_x64");
+                this.ParseHelper.CreateSimpleReference(section, sourceLineNumbers, "CustomAction", "ConfigureComPlusUninstall_x64");
             }
             else
             {
diff --git a/src/wixext/WixToolset.ComPlus.wixext.csproj b/src/wixext/WixToolset.ComPlus.wixext.csproj
index 86ad1a3d..5e411efb 100644
--- a/src/wixext/WixToolset.ComPlus.wixext.csproj
+++ b/src/wixext/WixToolset.ComPlus.wixext.csproj
@@ -13,7 +13,6 @@
 
   <ItemGroup>
     <Content Include="$(MSBuildThisFileName).targets" />
-    <Content Include="complus.xsd" PackagePath="tools" />
     <EmbeddedResource Include="$(OutputPath)..\complus.wixlib" />
   </ItemGroup>
 
diff --git a/src/wixext/complus.xsd b/src/wixext/complus.xsd
deleted file mode 100644
index f7ddacc6..00000000
--- a/src/wixext/complus.xsd
+++ /dev/null
@@ -1,944 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. -->
-
-
-<xs:schema xmlns:html="http://www.w3.org/1999/xhtml"
-            xmlns:wix="http://wixtoolset.org/schemas/v4/wxs"
-             xmlns:xs="http://www.w3.org/2001/XMLSchema"
-            xmlns:xse=" http://wixtoolset.org/schemas/XmlSchemaExtension"
-      targetNamespace="http://wixtoolset.org/schemas/v4/wxs/complus"
-                xmlns="http://wixtoolset.org/schemas/v4/wxs/complus">
-  <xs:annotation>
-    <xs:documentation>
-      The source code schema for the WiX Toolset COM+ Extension.
-    </xs:documentation>
-  </xs:annotation>
-
-  <xs:import namespace="http://wixtoolset.org/schemas/v4/wxs" />
-
-  <xs:element name="ComPlusPartition">
-    <xs:annotation>
-      <xs:appinfo>
-        <xse:parent namespace="http://wixtoolset.org/schemas/v4/wxs" ref="Component" />
-        <xse:parent namespace="http://wixtoolset.org/schemas/v4/wxs" ref="Fragment" />
-        <xse:parent namespace="http://wixtoolset.org/schemas/v4/wxs" ref="Module" />
-        <xse:parent namespace="http://wixtoolset.org/schemas/v4/wxs" ref="Product" />
-      </xs:appinfo>
-      <xs:documentation>
-        Defines a COM+ partition. If this element is a child of a
-        Component element, the partition will be created in association with this
-        component. If the element is a child of any of the Fragment, Module or Product
-        elements it is considered to be a locater, referencing an existing partition.
-      </xs:documentation>
-    </xs:annotation>
-    <xs:complexType>
-      <xs:sequence>
-        <xs:choice minOccurs="0" maxOccurs="unbounded">
-          <xs:element ref="ComPlusPartitionRole" />
-          <xs:element ref="ComPlusPartitionUser" />
-          <xs:element ref="ComPlusApplication" />
-        </xs:choice>
-      </xs:sequence>
-      <xs:attribute name="Id" use="required" type="xs:string">
-        <xs:annotation><xs:documentation>
-          Identifier for the element.
-        </xs:documentation></xs:annotation>
-      </xs:attribute>
-      <xs:attribute name="PartitionId" use="optional" type="xs:string">
-        <xs:annotation><xs:documentation>
-          Id for the partition. This attribute can be omitted, in
-          which case an id will be generated on install. If the element is a locater,
-          this attribute can be omitted if a value is provided for the Name attribute.
-        </xs:documentation></xs:annotation>
-      </xs:attribute>
-      <xs:attribute name="Name" use="optional" type="xs:string">
-        <xs:annotation><xs:documentation>
-          Name of the partition. This attribute can be omitted if
-          the element is a locater, and a value is provided for the PartitionId
-          attribute.
-        </xs:documentation></xs:annotation>
-      </xs:attribute>
-      <xs:attribute name="Changeable" use="optional" type="YesNoType" />
-      <xs:attribute name="Deleteable" use="optional" type="YesNoType" />
-      <xs:attribute name="Description" use="optional" type="xs:string" />
-    </xs:complexType>
-  </xs:element>
-
-  <xs:element name="ComPlusPartitionRole">
-    <xs:annotation>
-      <xs:appinfo>
-        <xse:parent namespace="http://wixtoolset.org/schemas/v4/wxs" ref="Component" />
-        <xse:parent namespace="http://wixtoolset.org/schemas/v4/wxs" ref="Fragment" />
-        <xse:parent namespace="http://wixtoolset.org/schemas/v4/wxs" ref="Module" />
-        <xse:parent namespace="http://wixtoolset.org/schemas/v4/wxs" ref="Product" />
-      </xs:appinfo>
-      <xs:documentation>
-        Defines a COM+ partition role. Partition roles can not be
-        created; this element can only be used as a locater to reference an existing
-        role.
-      </xs:documentation>
-    </xs:annotation>
-    <xs:complexType>
-      <xs:sequence>
-        <xs:choice minOccurs="0" maxOccurs="unbounded">
-          <xs:element ref="ComPlusUserInPartitionRole" />
-          <xs:element ref="ComPlusGroupInPartitionRole" />
-        </xs:choice>
-      </xs:sequence>
-      <xs:attribute name="Id" use="required" type="xs:string">
-        <xs:annotation><xs:documentation>
-          Identifier for the element.
-        </xs:documentation></xs:annotation>
-      </xs:attribute>
-      <xs:attribute name="Partition" use="optional" type="xs:string">
-        <xs:annotation><xs:documentation>
-          The id of a ComPlusPartition element representing the partition
-          the role belongs to.
-        </xs:documentation></xs:annotation>
-      </xs:attribute>
-      <xs:attribute name="Name" use="required" type="xs:string">
-        <xs:annotation><xs:documentation>
-          Name of the partition role.
-        </xs:documentation></xs:annotation>
-      </xs:attribute>
-    </xs:complexType>
-  </xs:element>
-
-  <xs:element name="ComPlusUserInPartitionRole">
-    <xs:annotation>
-      <xs:appinfo>
-        <xse:parent namespace="http://wixtoolset.org/schemas/v4/wxs" ref="Component" />
-      </xs:appinfo>
-      <xs:documentation>
-        This element represents a user membership in a partition
-        role. When the parent component of this element is installed, the user will be
-        added to the associated partition role.
-      </xs:documentation>
-    </xs:annotation>
-    <xs:complexType>
-      <xs:attribute name="Id" use="required" type="xs:string">
-        <xs:annotation><xs:documentation>
-          Identifier for the element.
-        </xs:documentation></xs:annotation>
-      </xs:attribute>
-      <xs:attribute name="PartitionRole" use="optional" type="xs:string">
-        <xs:annotation><xs:documentation>
-          The id of a ComPlusPartitionRole element representing the
-          partition the user should be added to.
-        </xs:documentation></xs:annotation>
-      </xs:attribute>
-      <xs:attribute name="User" use="required" type="xs:string">
-        <xs:annotation><xs:documentation>
-          Foreign key into the User table.
-        </xs:documentation></xs:annotation>
-      </xs:attribute>
-    </xs:complexType>
-  </xs:element>
-
-  <xs:element name="ComPlusGroupInPartitionRole">
-    <xs:annotation>
-      <xs:appinfo>
-        <xse:parent namespace="http://wixtoolset.org/schemas/v4/wxs" ref="Component" />
-      </xs:appinfo>
-      <xs:documentation>
-        This element represents a security group membership in a
-        partition role. When the parent component of this element is installed, the
-        security group will be added to the associated partition role.
-      </xs:documentation>
-    </xs:annotation>
-    <xs:complexType>
-      <xs:attribute name="Id" use="required" type="xs:string">
-        <xs:annotation><xs:documentation>
-          Identifier for the element.
-        </xs:documentation></xs:annotation>
-      </xs:attribute>
-      <xs:attribute name="PartitionRole" use="optional" type="xs:string">
-        <xs:annotation><xs:documentation>
-          The id of a ComPlusPartitionRole element representing the
-          partition the user should be added to.
-        </xs:documentation></xs:annotation>
-      </xs:attribute>
-      <xs:attribute name="Group" use="required" type="xs:string">
-        <xs:annotation><xs:documentation>
-          Foreign key into the Group table.
-        </xs:documentation></xs:annotation>
-      </xs:attribute>
-    </xs:complexType>
-  </xs:element>
-
-  <xs:element name="ComPlusPartitionUser">
-    <xs:annotation>
-      <xs:appinfo>
-        <xse:parent namespace="http://wixtoolset.org/schemas/v4/wxs" ref="Component" />
-      </xs:appinfo>
-      <xs:documentation>
-        Represents a default partition definition for a user. When
-        the parent component of this element is installed, the default partition of the
-        user will be set to the referenced partition.
-      </xs:documentation>
-    </xs:annotation>
-    <xs:complexType>
-      <xs:attribute name="Id" use="required" type="xs:string">
-        <xs:annotation><xs:documentation>
-          Identifier for the element.
-        </xs:documentation></xs:annotation>
-      </xs:attribute>
-      <xs:attribute name="Partition" use="optional" type="xs:string">
-        <xs:annotation><xs:documentation>
-          The id of a ComPlusPartition element representing the
-          partition that will be the default partition for the user.
-        </xs:documentation></xs:annotation>
-      </xs:attribute>
-      <xs:attribute name="User" use="required" type="xs:string">
-        <xs:annotation><xs:documentation>
-          Foreign key into the User table.
-        </xs:documentation></xs:annotation>
-      </xs:attribute>
-    </xs:complexType>
-  </xs:element>
-
-  <xs:element name="ComPlusApplication">
-    <xs:annotation>
-      <xs:appinfo>
-        <xse:parent namespace="http://wixtoolset.org/schemas/v4/wxs" ref="Component" />
-        <xse:parent namespace="http://wixtoolset.org/schemas/v4/wxs" ref="Fragment" />
-        <xse:parent namespace="http://wixtoolset.org/schemas/v4/wxs" ref="Module" />
-        <xse:parent namespace="http://wixtoolset.org/schemas/v4/wxs" ref="Product" />
-      </xs:appinfo>
-      <xs:documentation>
-        Defines a COM+ application. If this element is a descendent
-        of a Component element, the application will be created in association with
-        this component. If the element is a child of any of the Fragment, Module or
-        Product elements it is considered to be a locater, referencing an existing
-        application.
-
-        If the element is a child of a ComPlusPartition element,
-        or have its Partition attribute set, the application will be installed under
-        the referenced partition.
-      </xs:documentation>
-    </xs:annotation>
-    <xs:complexType>
-      <xs:sequence>
-        <xs:choice minOccurs="0" maxOccurs="unbounded">
-          <xs:element ref="ComPlusApplicationRole" />
-          <xs:element ref="ComPlusAssembly" />
-        </xs:choice>
-      </xs:sequence>
-      <xs:attribute name="Id" use="required" type="xs:string">
-        <xs:annotation><xs:documentation>
-          Identifier for the element.
-        </xs:documentation></xs:annotation>
-      </xs:attribute>
-      <xs:attribute name="Partition" use="optional" type="xs:string">
-        <xs:annotation><xs:documentation>
-          If the element is not a child of a ComPlusPartition
-          element, this attribute can be provided with the id of a ComPlusPartition
-          element representing the partition the application belongs to.
-        </xs:documentation></xs:annotation>
-      </xs:attribute>
-      <xs:attribute name="ApplicationId" use="optional" type="xs:string">
-        <xs:annotation><xs:documentation>
-          Id for the application. This attribute can be omitted, in
-          which case an id will be generated on install. If the element is a locater,
-          this attribute can be omitted if a value is provided for the Name attribute.
-        </xs:documentation></xs:annotation>
-      </xs:attribute>
-      <xs:attribute name="Name" use="optional" type="xs:string">
-        <xs:annotation><xs:documentation>
-          Name of the application. This attribute can be omitted if
-          the element is a locater, and a value is provided for the PartitionId
-          attribute.
-        </xs:documentation></xs:annotation>
-      </xs:attribute>
-      <xs:attribute name="ThreeGigSupportEnabled" use="optional" type="YesNoType" />
-      <xs:attribute name="AccessChecksLevel" use="optional">
-        <xs:simpleType>
-          <xs:restriction base="xs:NMTOKEN">
-            <xs:enumeration value="applicationLevel" />
-            <xs:enumeration value="applicationComponentLevel" />
-          </xs:restriction>
-        </xs:simpleType>
-      </xs:attribute>
-      <xs:attribute name="Activation" use="optional">
-        <xs:simpleType>
-          <xs:restriction base="xs:NMTOKEN">
-            <xs:enumeration value="inproc" />
-            <xs:enumeration value="local" />
-          </xs:restriction>
-        </xs:simpleType>
-      </xs:attribute>
-      <xs:attribute name="ApplicationAccessChecksEnabled" use="optional" type="YesNoType" />
-      <xs:attribute name="ApplicationDirectory" use="optional" type="xs:string" />
-      <xs:attribute name="Authentication" use="optional">
-        <xs:simpleType>
-          <xs:restriction base="xs:NMTOKEN">
-            <xs:enumeration value="default" />
-            <xs:enumeration value="none" />
-            <xs:enumeration value="connect" />
-            <xs:enumeration value="call" />
-            <xs:enumeration value="packet" />
-            <xs:enumeration value="integrity" />
-            <xs:enumeration value="privacy" />
-          </xs:restriction>
-        </xs:simpleType>
-      </xs:attribute>
-      <xs:attribute name="AuthenticationCapability" use="optional">
-        <xs:simpleType>
-          <xs:restriction base="xs:NMTOKEN">
-            <xs:enumeration value="none" />
-            <xs:enumeration value="secureReference" />
-            <xs:enumeration value="staticCloaking" />
-            <xs:enumeration value="dynamicCloaking" />
-          </xs:restriction>
-        </xs:simpleType>
-      </xs:attribute>
-      <xs:attribute name="Changeable" use="optional" type="YesNoType" />
-      <xs:attribute name="CommandLine" use="optional" type="xs:string" />
-      <xs:attribute name="ConcurrentApps" use="optional" type="xs:int" />
-      <xs:attribute name="CreatedBy" use="optional" type="xs:string" />
-      <xs:attribute name="CRMEnabled" use="optional" type="YesNoType" />
-      <xs:attribute name="CRMLogFile" use="optional" type="xs:string" />
-      <xs:attribute name="Deleteable" use="optional" type="YesNoType" />
-      <xs:attribute name="Description" use="optional" type="xs:string" />
-      <xs:attribute name="DumpEnabled" use="optional" type="YesNoType" />
-      <xs:attribute name="DumpOnException" use="optional" type="YesNoType" />
-      <xs:attribute name="DumpOnFailfast" use="optional" type="YesNoType" />
-      <xs:attribute name="DumpPath" use="optional" type="xs:string" />
-      <xs:attribute name="EventsEnabled" use="optional" type="YesNoType" />
-      <xs:attribute name="Identity" use="optional" type="xs:string" />
-      <xs:attribute name="ImpersonationLevel" use="optional">
-        <xs:simpleType>
-          <xs:restriction base="xs:NMTOKEN">
-            <xs:enumeration value="anonymous" />
-            <xs:enumeration value="identify" />
-            <xs:enumeration value="impersonate" />
-            <xs:enumeration value="delegate" />
-          </xs:restriction>
-        </xs:simpleType>
-      </xs:attribute>
-      <xs:attribute name="IsEnabled" use="optional" type="YesNoType" />
-      <xs:attribute name="MaxDumpCount" use="optional" type="xs:int" />
-      <xs:attribute name="Password" use="optional" type="xs:string" />
-      <xs:attribute name="QCAuthenticateMsgs" use="optional">
-        <xs:simpleType>
-          <xs:restriction base="xs:NMTOKEN">
-            <xs:enumeration value="secureApps" />
-            <xs:enumeration value="off" />
-            <xs:enumeration value="on" />
-          </xs:restriction>
-        </xs:simpleType>
-      </xs:attribute>
-      <xs:attribute name="QCListenerMaxThreads" use="optional" type="xs:int" />
-      <xs:attribute name="QueueListenerEnabled" use="optional" type="YesNoType" />
-      <xs:attribute name="QueuingEnabled" use="optional" type="YesNoType" />
-      <xs:attribute name="RecycleActivationLimit" use="optional" type="xs:int" />
-      <xs:attribute name="RecycleCallLimit" use="optional" type="xs:int" />
-      <xs:attribute name="RecycleExpirationTimeout" use="optional" type="xs:int" />
-      <xs:attribute name="RecycleLifetimeLimit" use="optional" type="xs:int" />
-      <xs:attribute name="RecycleMemoryLimit" use="optional" type="xs:int" />
-      <xs:attribute name="Replicable" use="optional" type="YesNoType" />
-      <xs:attribute name="RunForever" use="optional" type="YesNoType" />
-      <xs:attribute name="ShutdownAfter" use="optional" type="xs:int" />
-      <xs:attribute name="SoapActivated" use="optional" type="YesNoType" />
-      <xs:attribute name="SoapBaseUrl" use="optional" type="xs:string" />
-      <xs:attribute name="SoapMailTo" use="optional" type="xs:string" />
-      <xs:attribute name="SoapVRoot" use="optional" type="xs:string" />
-      <xs:attribute name="SRPEnabled" use="optional" type="YesNoType" />
-      <xs:attribute name="SRPTrustLevel" use="optional">
-        <xs:simpleType>
-          <xs:restriction base="xs:NMTOKEN">
-            <xs:enumeration value="disallowed" />
-            <xs:enumeration value="fullyTrusted" />
-          </xs:restriction>
-        </xs:simpleType>
-      </xs:attribute>
-    </xs:complexType>
-  </xs:element>
-
-  <xs:element name="ComPlusApplicationRole">
-    <xs:annotation>
-      <xs:appinfo>
-        <xse:parent namespace="http://wixtoolset.org/schemas/v4/wxs" ref="Component" />
-        <xse:parent namespace="http://wixtoolset.org/schemas/v4/wxs" ref="Fragment" />
-        <xse:parent namespace="http://wixtoolset.org/schemas/v4/wxs" ref="Module" />
-        <xse:parent namespace="http://wixtoolset.org/schemas/v4/wxs" ref="Product" />
-      </xs:appinfo>
-      <xs:documentation>
-        Defines an application role. If this element is a descendent
-        of a Component element, the application role will be created in association
-        with this component. If the element is a child of any of the Fragment, Module
-        or Product elements it is considered to be a locater, referencing an existing
-        application role.
-      </xs:documentation>
-    </xs:annotation>
-    <xs:complexType>
-      <xs:sequence>
-        <xs:choice minOccurs="0" maxOccurs="unbounded">
-          <xs:element ref="ComPlusUserInApplicationRole" />
-          <xs:element ref="ComPlusGroupInApplicationRole" />
-        </xs:choice>
-      </xs:sequence>
-      <xs:attribute name="Id" use="required" type="xs:string">
-        <xs:annotation><xs:documentation>
-          Identifier for the element.
-        </xs:documentation></xs:annotation>
-      </xs:attribute>
-      <xs:attribute name="Application" use="optional" type="xs:string">
-        <xs:annotation><xs:documentation>
-          If the element is not a child of a ComPlusApplication
-          element, this attribute should be provided with the id of a
-          ComPlusApplication element representing the application the role belongs to.
-        </xs:documentation></xs:annotation>
-      </xs:attribute>
-      <xs:attribute name="Name" use="required" type="xs:string">
-        <xs:annotation><xs:documentation>
-          Name of the application role.
-        </xs:documentation></xs:annotation>
-      </xs:attribute>
-      <xs:attribute name="Description" use="optional" type="xs:string" />
-    </xs:complexType>
-  </xs:element>
-
-  <xs:element name="ComPlusUserInApplicationRole">
-    <xs:annotation>
-      <xs:appinfo>
-        <xse:parent namespace="http://wixtoolset.org/schemas/v4/wxs" ref="Component" />
-      </xs:appinfo>
-      <xs:documentation>
-        This element represents a user membership in an
-        application role. When the parent component of this element is installed, the
-        user will be added to the associated application role. This element must be a descendent
-        of a Component element; it can not be a child of a ComPlusApplicationRole
-        locater element. To reference a locater element use the ApplicationRole
-        attribute.
-      </xs:documentation>
-    </xs:annotation>
-    <xs:complexType>
-      <xs:attribute name="Id" use="required" type="xs:string">
-        <xs:annotation><xs:documentation>
-          Identifier for the element.
-        </xs:documentation></xs:annotation>
-      </xs:attribute>
-      <xs:attribute name="ApplicationRole" use="optional" type="xs:string">
-        <xs:annotation><xs:documentation>
-          If the element is not a child of a ComPlusApplicationRole
-          element, this attribute should be provided with the id of a
-          ComPlusApplicationRole element representing the application role the user is
-          to be added to.
-        </xs:documentation></xs:annotation>
-      </xs:attribute>
-      <xs:attribute name="User" use="required" type="xs:string">
-        <xs:annotation><xs:documentation>
-          Foreign key into the User table.
-        </xs:documentation></xs:annotation>
-      </xs:attribute>
-    </xs:complexType>
-  </xs:element>
-
-  <xs:element name="ComPlusGroupInApplicationRole">
-    <xs:annotation>
-      <xs:appinfo>
-        <xse:parent namespace="http://wixtoolset.org/schemas/v4/wxs" ref="Component" />
-      </xs:appinfo>
-      <xs:documentation>
-        This element represents a security group membership in an
-        application role. When the parent component of this element is installed, the
-        user will be added to the associated application role. This element must be a
-        descendent of a Component element; it can not be a child of a
-        ComPlusApplicationRole locater element. To reference a locater element use the
-        ApplicationRole attribute.
-      </xs:documentation>
-    </xs:annotation>
-    <xs:complexType>
-      <xs:attribute name="Id" use="required" type="xs:string">
-        <xs:annotation><xs:documentation>
-          Identifier for the element.
-        </xs:documentation></xs:annotation>
-      </xs:attribute>
-      <xs:attribute name="ApplicationRole" use="optional" type="xs:string">
-        <xs:annotation><xs:documentation>
-          If the element is not a child of a ComPlusApplicationRole
-          element, this attribute should be provided with the id of a
-          ComPlusApplicationRole element representing the application role the user is
-          to be added to.
-        </xs:documentation></xs:annotation>
-      </xs:attribute>
-      <xs:attribute name="Group" use="required" type="xs:string">
-        <xs:annotation><xs:documentation>
-          Foreign key into the Group table.
-        </xs:documentation></xs:annotation>
-      </xs:attribute>
-    </xs:complexType>
-  </xs:element>
-
-  <xs:element name="ComPlusAssembly">
-    <xs:annotation>
-      <xs:documentation>
-        Represents a DLL or assembly to be registered with COM+. If
-        this element is a child of a ComPlusApplication element, the assembly will be
-        registered in this application. Other ways the Application attribute must be
-        set to an application. The element must be a descendent of a Component element,
-        it can not be a child of a ComPlusApplication locator element.
-      </xs:documentation>
-      <xs:appinfo>
-        <xse:parent namespace="http://wixtoolset.org/schemas/v4/wxs" ref="Component" />
-        <xse:remarks>
-          <html:p>
-            When installing a native assembly, all components
-            contained in the assembly must be represented as ComPlusComponent elements
-            under this element. Any component not listed will not be removed during
-            uninstall.
-          </html:p>
-
-          <html:p>
-            The fields DllPath, TlbPath and PSDllPath are formatted
-            fields that should contain file paths to there respective file types. A typical
-            value for DllPath for example, should be something like “[#MyAssembly_dll]”,
-            where “MyAssembly_dll” is the key of the dll file in the File table.
-          </html:p>
-
-          <html:p>
-            <html:b>Warning</html:b>: The assembly name provided in the AssemblyName
-            attribute must be a fully specified assembly name, if a partial name is
-            provided a random assembly matching the partial name will be selected.
-          </html:p>
-        </xse:remarks>
-      </xs:appinfo>
-    </xs:annotation>
-    <xs:complexType>
-      <xs:sequence>
-        <xs:choice minOccurs="0" maxOccurs="unbounded">
-          <xs:element ref="ComPlusAssemblyDependency" />
-          <xs:element ref="ComPlusComponent" />
-        </xs:choice>
-      </xs:sequence>
-      <xs:attribute name="Id" use="required" type="xs:string">
-        <xs:annotation><xs:documentation>
-          Identifier for the element.
-        </xs:documentation></xs:annotation>
-      </xs:attribute>
-      <xs:attribute name="Application" use="optional" type="xs:string">
-        <xs:annotation><xs:documentation>
-          If the element is not a child of a ComPlusApplication
-          element, this attribute should be provided with the id of a ComPlusApplication
-          element representing the application the assembly is to be registered in.
-          This attribute can be omitted for a .NET assembly even if the application is
-          not a child of a ComPlusApplication element.
-        </xs:documentation></xs:annotation>
-      </xs:attribute>
-      <xs:attribute name="AssemblyName" use="optional" type="xs:string">
-        <xs:annotation><xs:documentation>
-          The name of the assembly used to identify the assembly in
-          the GAC. This attribute can be provided only if DllPathFromGAC is set to
-          “yes”.
-        </xs:documentation></xs:annotation>
-      </xs:attribute>
-      <xs:attribute name="DllPath" use="optional" type="xs:string">
-        <xs:annotation><xs:documentation>
-          The path to locate the assembly DLL during registration.
-          This attribute should be provided if DllPathFromGAC is not set to “yes”.
-        </xs:documentation></xs:annotation>
-      </xs:attribute>
-      <xs:attribute name="TlbPath" use="optional" type="xs:string">
-        <xs:annotation><xs:documentation>
-          An optional path to an external type lib for the assembly.
-          This attribute must be provided if the Type attribute is set to “.net”.
-        </xs:documentation></xs:annotation>
-      </xs:attribute>
-      <xs:attribute name="PSDllPath" use="optional" type="xs:string">
-        <xs:annotation><xs:documentation>
-          An optional path to an external proxy/stub DLL for the assembly.
-        </xs:documentation></xs:annotation>
-      </xs:attribute>
-      <xs:attribute name="Type" use="required">
-        <xs:annotation><xs:documentation>
-        </xs:documentation></xs:annotation>
-        <xs:simpleType>
-          <xs:restriction base="xs:NMTOKEN">
-            <xs:enumeration value="native" />
-            <xs:enumeration value=".net" />
-          </xs:restriction>
-        </xs:simpleType>
-      </xs:attribute>
-      <xs:attribute name="EventClass" use="optional" type="YesNoType">
-        <xs:annotation><xs:documentation>
-          Indicates that the assembly is to be installed as an event
-          class DLL. This attribute is only valid for native assemblies. The assembly
-          will be installed with the COM+ catalog’s InstallEventClass() function.
-        </xs:documentation></xs:annotation>
-      </xs:attribute>
-      <xs:attribute name="DllPathFromGAC" use="optional" type="YesNoType">
-        <xs:annotation><xs:documentation>
-          Indicates that the DLL path should be extracted from the
-          GAC instead for being provided in the DllPath attribute. If this attribute is
-          set to “yes”, the name of the assembly can be provided using the AssemblyName
-          attribute. Or, if this AssemblyName attribute is missing, the name will be
-          extracted from the MsiAssemblyName table using the id of the parent Component
-          element.
-        </xs:documentation></xs:annotation>
-      </xs:attribute>
-      <xs:attribute name="RegisterInCommit" use="optional" type="YesNoType">
-        <xs:annotation><xs:documentation>
-          Indicates that the assembly should be installed in the
-          commit custom action instead of the normal deferred custom action. This is
-          necessary when installing .NET assemblies to the GAC in the same
-          installation, as the assemblies are not visible in the GAC until after the
-          InstallFinalize action has run.
-        </xs:documentation></xs:annotation>
-      </xs:attribute>
-    </xs:complexType>
-  </xs:element>
-
-  <xs:element name="ComPlusAssemblyDependency">
-    <xs:annotation>
-      <xs:documentation>
-        Defines a dependency between two assemblies. This element
-        affects the order in which assembles are registered. Any assemblies referenced
-        by this element are guarantied to be registered before, and unregistered after,
-        the assembly referenced by the parent ComPlusAssembly element.
-      </xs:documentation>
-      <xs:appinfo>
-        <xse:remarks>
-          It is only necessary to explicitly specify dependencies between
-          assemblies contained in the same package (MSI or MSM). Assemblies merged in to a
-          package from a merge module will always be installed before any assemblies
-          specified in the base package. Assemblies merged in from different merge
-          modules are sequenced using the ModuleDependency MSI table. It is not possible
-          to have cross dependencies between merge modules or have an assembly in a merge
-          module depend on an assembly in the base package.
-        </xse:remarks>
-      </xs:appinfo>
-    </xs:annotation>
-    <xs:complexType>
-      <xs:attribute name="RequiredAssembly" use="required" type="xs:string">
-        <xs:annotation><xs:documentation>
-          Reference to the id of the assembly required by the parent
-          ComPlusAssembly element.
-        </xs:documentation></xs:annotation>
-      </xs:attribute>
-    </xs:complexType>
-  </xs:element>
-
-  <xs:element name="ComPlusComponent">
-    <xs:annotation><xs:documentation>
-      Represents a COM+ component in an assembly.
-    </xs:documentation></xs:annotation>
-    <xs:complexType>
-      <xs:sequence>
-        <xs:choice minOccurs="0" maxOccurs="unbounded">
-          <xs:element ref="ComPlusRoleForComponent" />
-          <xs:element ref="ComPlusInterface" />
-          <xs:element ref="ComPlusSubscription" />
-        </xs:choice>
-      </xs:sequence>
-      <xs:attribute name="Id" use="required" type="xs:string">
-        <xs:annotation><xs:documentation>
-          Identifier for the element.
-        </xs:documentation></xs:annotation>
-      </xs:attribute>
-      <xs:attribute name="CLSID" use="required" type="uuid">
-        <xs:annotation><xs:documentation>
-          CLSID of the component.
-        </xs:documentation></xs:annotation>
-      </xs:attribute>
-      <xs:attribute name="AllowInprocSubscribers" use="optional" type="YesNoType" />
-      <xs:attribute name="ComponentAccessChecksEnabled" use="optional" type="YesNoType" />
-      <xs:attribute name="ComponentTransactionTimeout" use="optional" type="xs:int" />
-      <xs:attribute name="ComponentTransactionTimeoutEnabled" use="optional" type="YesNoType" />
-      <xs:attribute name="COMTIIntrinsics" use="optional" type="YesNoType" />
-      <xs:attribute name="ConstructionEnabled" use="optional" type="YesNoType" />
-      <xs:attribute name="ConstructorString" use="optional" type="xs:string" />
-      <xs:attribute name="CreationTimeout" use="optional" type="xs:int" />
-      <xs:attribute name="Description" use="optional" type="xs:string" />
-      <xs:attribute name="EventTrackingEnabled" use="optional" type="YesNoType" />
-      <xs:attribute name="ExceptionClass" use="optional" type="xs:string" />
-      <xs:attribute name="FireInParallel" use="optional" type="YesNoType" />
-      <xs:attribute name="IISIntrinsics" use="optional" type="YesNoType" />
-      <xs:attribute name="InitializesServerApplication" use="optional" type="YesNoType" />
-      <xs:attribute name="IsEnabled" use="optional" type="YesNoType" />
-      <xs:attribute name="IsPrivateComponent" use="optional" type="YesNoType" />
-      <xs:attribute name="JustInTimeActivation" use="optional" type="YesNoType" />
-      <xs:attribute name="LoadBalancingSupported" use="optional" type="YesNoType" />
-      <xs:attribute name="MaxPoolSize" use="optional" type="xs:int" />
-      <xs:attribute name="MinPoolSize" use="optional" type="xs:int" />
-      <xs:attribute name="MultiInterfacePublisherFilterCLSID" use="optional" type="xs:string" />
-      <xs:attribute name="MustRunInClientContext" use="optional" type="YesNoType" />
-      <xs:attribute name="MustRunInDefaultContext" use="optional" type="YesNoType" />
-      <xs:attribute name="ObjectPoolingEnabled" use="optional" type="YesNoType" />
-      <xs:attribute name="PublisherID" use="optional" type="xs:string" />
-      <xs:attribute name="SoapAssemblyName" use="optional" type="xs:string" />
-      <xs:attribute name="SoapTypeName" use="optional" type="xs:string" />
-      <xs:attribute name="Synchronization" use="optional">
-        <xs:simpleType>
-          <xs:restriction base="xs:NMTOKEN">
-            <xs:enumeration value="ignored" />
-            <xs:enumeration value="none" />
-            <xs:enumeration value="supported" />
-            <xs:enumeration value="required" />
-            <xs:enumeration value="requiresNew" />
-          </xs:restriction>
-        </xs:simpleType>
-      </xs:attribute>
-      <xs:attribute name="Transaction" use="optional">
-        <xs:simpleType>
-          <xs:restriction base="xs:NMTOKEN">
-            <xs:enumeration value="ignored" />
-            <xs:enumeration value="none" />
-            <xs:enumeration value="supported" />
-            <xs:enumeration value="required" />
-            <xs:enumeration value="requiresNew" />
-          </xs:restriction>
-        </xs:simpleType>
-      </xs:attribute>
-      <xs:attribute name="TxIsolationLevel" use="optional">
-        <xs:simpleType>
-          <xs:restriction base="xs:NMTOKEN">
-            <xs:enumeration value="any" />
-            <xs:enumeration value="readUnCommitted" />
-            <xs:enumeration value="readCommitted" />
-            <xs:enumeration value="repeatableRead" />
-            <xs:enumeration value="serializable" />
-          </xs:restriction>
-        </xs:simpleType>
-      </xs:attribute>
-    </xs:complexType>
-  </xs:element>
-
-  <xs:element name="ComPlusRoleForComponent">
-    <xs:annotation>
-      <xs:appinfo>
-        <xse:parent namespace="http://wixtoolset.org/schemas/v4/wxs" ref="Component" />
-      </xs:appinfo>
-      <xs:documentation>
-        Represents a role assignment to a COM+ component.
-      </xs:documentation>
-    </xs:annotation>
-    <xs:complexType>
-      <xs:attribute name="Id" use="required" type="xs:string">
-        <xs:annotation><xs:documentation>
-          Identifier for the element.
-        </xs:documentation></xs:annotation>
-      </xs:attribute>
-      <xs:attribute name="Component" use="optional" type="xs:string">
-        <xs:annotation><xs:documentation>
-          If the element is not a child of a ComPlusComponent
-          element, this attribute should be provided with the id of a ComPlusComponent
-          element representing the component the role is to be added to.
-        </xs:documentation></xs:annotation>
-      </xs:attribute>
-      <xs:attribute name="ApplicationRole" use="required" type="xs:string">
-        <xs:annotation><xs:documentation>
-          Id of the ComPlusApplicationRole element representing the
-          role that shall be granted access to the component.
-        </xs:documentation></xs:annotation>
-      </xs:attribute>
-    </xs:complexType>
-  </xs:element>
-
-  <xs:element name="ComPlusInterface">
-    <xs:annotation><xs:documentation>
-      Represents an interface for a COM+ component.
-    </xs:documentation></xs:annotation>
-    <xs:complexType>
-      <xs:sequence>
-        <xs:choice minOccurs="0" maxOccurs="unbounded">
-          <xs:element ref="ComPlusRoleForInterface" />
-          <xs:element ref="ComPlusMethod" />
-        </xs:choice>
-      </xs:sequence>
-      <xs:attribute name="Id" use="required" type="xs:string">
-        <xs:annotation><xs:documentation>
-          Identifier for the element.
-        </xs:documentation></xs:annotation>
-      </xs:attribute>
-      <xs:attribute name="IID" use="required" type="uuid">
-        <xs:annotation><xs:documentation>
-          IID of the interface.
-        </xs:documentation></xs:annotation>
-      </xs:attribute>
-      <xs:attribute name="Description" use="optional" type="xs:string" />
-      <xs:attribute name="QueuingEnabled" use="optional" type="YesNoType" />
-    </xs:complexType>
-  </xs:element>
-
-  <xs:element name="ComPlusRoleForInterface">
-    <xs:annotation>
-      <xs:appinfo>
-        <xse:parent namespace="http://wixtoolset.org/schemas/v4/wxs" ref="Component" />
-      </xs:appinfo>
-      <xs:documentation>
-        Represents a role assignment to an interface.
-      </xs:documentation>
-    </xs:annotation>
-    <xs:complexType>
-      <xs:attribute name="Id" use="required" type="xs:string">
-        <xs:annotation><xs:documentation>
-          Identifier for the element.
-        </xs:documentation></xs:annotation>
-      </xs:attribute>
-      <xs:attribute name="Interface" use="optional" type="xs:string">
-        <xs:annotation><xs:documentation>
-          If the element is not a child of a ComPlusInterface
-          element, this attribute should be provided with the id of a ComPlusInterface
-          element representing the interface the role is to be added to.
-        </xs:documentation></xs:annotation>
-      </xs:attribute>
-      <xs:attribute name="ApplicationRole" use="required" type="xs:string">
-        <xs:annotation><xs:documentation>
-          Id of the ComPlusApplicationRole element representing the
-          role that shall be granted access to the interface.
-        </xs:documentation></xs:annotation>
-      </xs:attribute>
-    </xs:complexType>
-  </xs:element>
-
-  <xs:element name="ComPlusMethod">
-    <xs:annotation>
-      <xs:documentation>
-        Represents a method for an interface.
-      </xs:documentation>
-    </xs:annotation>
-    <xs:complexType>
-      <xs:sequence>
-        <xs:element ref="ComPlusRoleForMethod" minOccurs="0" maxOccurs="unbounded" />
-      </xs:sequence>
-      <xs:attribute name="Id" use="required" type="xs:string">
-        <xs:annotation>
-          <xs:documentation>
-            Identifier for the element.
-          </xs:documentation>
-        </xs:annotation>
-      </xs:attribute>
-      <xs:attribute name="Index" use="optional" type="xs:int">
-        <xs:annotation>
-          <xs:documentation>
-            Dispatch id of the method. If this attribute is not set a
-            value must be provided for the Name attribute.
-          </xs:documentation>
-        </xs:annotation>
-      </xs:attribute>
-      <xs:attribute name="Name" use="optional" type="xs:string">
-        <xs:annotation>
-          <xs:documentation>
-            Name of the method. If this attribute is not set a value
-            must be provided for the Index attribute.
-          </xs:documentation>
-        </xs:annotation>
-      </xs:attribute>
-      <xs:attribute name="AutoComplete" use="optional" type="YesNoType" />
-      <xs:attribute name="Description" use="optional" type="xs:string" />
-    </xs:complexType>
-  </xs:element>
-
-  <xs:element name="ComPlusRoleForMethod">
-    <xs:annotation>
-      <xs:appinfo>
-        <xse:parent namespace="http://wixtoolset.org/schemas/v4/wxs" ref="Component" />
-      </xs:appinfo>
-      <xs:documentation>
-        Represents a role assignment to a COM+ method.
-      </xs:documentation>
-    </xs:annotation>
-    <xs:complexType>
-      <xs:attribute name="Id" use="required" type="xs:string">
-        <xs:annotation><xs:documentation>
-          Identifier for the element.
-        </xs:documentation></xs:annotation>
-      </xs:attribute>
-      <xs:attribute name="Method" use="optional" type="xs:string">
-        <xs:annotation><xs:documentation>
-          If the element is not a child of a ComPlusMethod element,
-          this attribute should be provided with the id of a ComPlusMethod element
-          representing the method the role is to be added to.
-        </xs:documentation></xs:annotation>
-      </xs:attribute>
-      <xs:attribute name="ApplicationRole" use="required" type="xs:string">
-        <xs:annotation><xs:documentation>
-          Id of the ComPlusApplicationRole element representing the
-          role that shall be granted access to the method.
-        </xs:documentation></xs:annotation>
-      </xs:attribute>
-    </xs:complexType>
-  </xs:element>
-
-  <xs:element name="ComPlusSubscription">
-    <xs:annotation>
-      <xs:appinfo>
-        <xse:parent namespace="http://wixtoolset.org/schemas/v4/wxs" ref="Component" />
-      </xs:appinfo>
-      <xs:documentation>
-        Defines an event subscription for a COM+ component.
-      </xs:documentation>
-    </xs:annotation>
-    <xs:complexType>
-      <xs:attribute name="Id" use="required" type="xs:string">
-        <xs:annotation><xs:documentation>
-          Identifier for the element.
-        </xs:documentation></xs:annotation>
-      </xs:attribute>
-      <xs:attribute name="Component" use="optional" type="xs:string">
-        <xs:annotation><xs:documentation>
-          If the element is not a child of a ComPlusComponent
-          element, this attribute should be provided with the id of a ComPlusComponent
-          element representing the component the subscription is to be created for.
-        </xs:documentation></xs:annotation>
-      </xs:attribute>
-      <xs:attribute name="SubscriptionId" use="optional" type="xs:string">
-        <xs:annotation><xs:documentation>
-          Id of the subscription. If a value is not provided for
-          this attribute, an id will be generated during installation.
-        </xs:documentation></xs:annotation>
-      </xs:attribute>
-      <xs:attribute name="Name" use="required" type="xs:string">
-        <xs:annotation><xs:documentation>
-          Name of the subscription.
-        </xs:documentation></xs:annotation>
-      </xs:attribute>
-      <xs:attribute name="EventCLSID" use="optional" type="xs:string">
-        <xs:annotation><xs:documentation>
-          CLSID of the event class for the subscription. If a value
-          for this attribute is not provided, a value for the PublisherID attribute
-          must be provided.
-        </xs:documentation></xs:annotation>
-      </xs:attribute>
-      <xs:attribute name="PublisherID" use="optional" type="xs:string">
-        <xs:annotation><xs:documentation>
-          Publisher id for the subscription. If a value for this
-          attribute is not provided, a value for the EventCLSID attribute must be
-          provided.
-        </xs:documentation></xs:annotation>
-      </xs:attribute>
-      <xs:attribute name="Description" use="optional" type="xs:string" />
-      <xs:attribute name="Enabled" use="optional" type="YesNoType" />
-      <xs:attribute name="EventClassPartitionID" use="optional" type="xs:string" />
-      <xs:attribute name="FilterCriteria" use="optional" type="xs:string" />
-      <xs:attribute name="InterfaceID" use="optional" type="xs:string" />
-      <xs:attribute name="MachineName" use="optional" type="xs:string" />
-      <xs:attribute name="MethodName" use="optional" type="xs:string" />
-      <xs:attribute name="PerUser" use="optional" type="YesNoType" />
-      <xs:attribute name="Queued" use="optional" type="YesNoType" />
-      <xs:attribute name="SubscriberMoniker" use="optional" type="xs:string" />
-      <xs:attribute name="UserName" use="optional" type="xs:string" />
-    </xs:complexType>
-  </xs:element>
-
-  <xs:simpleType name="YesNoType">
-    <xs:annotation>
-      <xs:documentation>Values of this type will either be "yes" or "no".</xs:documentation>
-    </xs:annotation>
-    <xs:restriction base="xs:NMTOKEN">
-      <xs:enumeration value="no" />
-      <xs:enumeration value="yes" />
-    </xs:restriction>
-  </xs:simpleType>
-
-  <xs:simpleType name="uuid">
-    <xs:annotation>
-      <xs:documentation>Values of this type will look like: "01234567-89AB-CDEF-0123-456789ABCDEF".</xs:documentation>
-    </xs:annotation>
-    <xs:restriction base="xs:string">
-      <xs:pattern value="[0-9A-Fa-f]{8}\-?[0-9A-Fa-f]{4}\-?[0-9A-Fa-f]{4}\-?[0-9A-Fa-f]{4}\-?[0-9A-Fa-f]{12}" />
-    </xs:restriction>
-  </xs:simpleType>
-
-</xs:schema>
diff --git a/src/wixlib/ComPlusExtension.wxs b/src/wixlib/ComPlusExtension.wxs
index 2a5710c0..d41e327e 100644
--- a/src/wixlib/ComPlusExtension.wxs
+++ b/src/wixlib/ComPlusExtension.wxs
@@ -1,5 +1,4 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. -->
+<!-- Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. -->
 
 
 <Wix xmlns="http://wixtoolset.org/schemas/v4/wxs">
@@ -7,72 +6,72 @@
 
   <Fragment>
     <UI Id="ComPlusUI">
-      <Error Id="$(var.msierrComPlusCannotConnect)">!(loc.msierrComPlusCannotConnect)</Error>
-      <Error Id="$(var.msierrComPlusPartitionReadFailed)">!(loc.msierrComPlusPartitionReadFailed)</Error>
-      <Error Id="$(var.msierrComPlusPartitionRoleReadFailed)">!(loc.msierrComPlusPartitionRoleReadFailed)</Error>
-      <Error Id="$(var.msierrComPlusUserInPartitionRoleReadFailed)">!(loc.msierrComPlusUserInPartitionRoleReadFailed)</Error>
-      <Error Id="$(var.msierrComPlusPartitionUserReadFailed)">!(loc.msierrComPlusPartitionUserReadFailed)</Error>
-      <Error Id="$(var.msierrComPlusApplicationReadFailed)">!(loc.msierrComPlusApplicationReadFailed)</Error>
-      <Error Id="$(var.msierrComPlusApplicationRoleReadFailed)">!(loc.msierrComPlusApplicationRoleReadFailed)</Error>
-      <Error Id="$(var.msierrComPlusUserInApplicationRoleReadFailed)">!(loc.msierrComPlusUserInApplicationRoleReadFailed)</Error>
-      <Error Id="$(var.msierrComPlusAssembliesReadFailed)">!(loc.msierrComPlusAssembliesReadFailed)</Error>
-      <Error Id="$(var.msierrComPlusSubscriptionReadFailed)">!(loc.msierrComPlusSubscriptionReadFailed)</Error>
-      <Error Id="$(var.msierrComPlusPartitionDependency)">!(loc.msierrComPlusPartitionDependency)</Error>
-      <Error Id="$(var.msierrComPlusPartitionNotFound)">!(loc.msierrComPlusPartitionNotFound)</Error>
-      <Error Id="$(var.msierrComPlusPartitionIdConflict)">!(loc.msierrComPlusPartitionIdConflict)</Error>
-      <Error Id="$(var.msierrComPlusPartitionNameConflict)">!(loc.msierrComPlusPartitionNameConflict)</Error>
-      <Error Id="$(var.msierrComPlusApplicationDependency)">!(loc.msierrComPlusApplicationDependency)</Error>
-      <Error Id="$(var.msierrComPlusApplicationNotFound)">!(loc.msierrComPlusApplicationNotFound)</Error>
-      <Error Id="$(var.msierrComPlusApplicationIdConflict)">!(loc.msierrComPlusApplicationIdConflict)</Error>
-      <Error Id="$(var.msierrComPlusApplicationNameConflict)">!(loc.msierrComPlusApplicationNameConflict)</Error>
-      <Error Id="$(var.msierrComPlusApplicationRoleDependency)">!(loc.msierrComPlusApplicationRoleDependency)</Error>
-      <Error Id="$(var.msierrComPlusApplicationRoleNotFound)">!(loc.msierrComPlusApplicationRoleNotFound)</Error>
-      <Error Id="$(var.msierrComPlusApplicationRoleConflict)">!(loc.msierrComPlusApplicationRoleConflict)</Error>
-      <Error Id="$(var.msierrComPlusAssemblyDependency)">!(loc.msierrComPlusAssemblyDependency)</Error>
-      <Error Id="$(var.msierrComPlusSubscriptionIdConflict)">!(loc.msierrComPlusSubscriptionIdConflict)</Error>
-      <Error Id="$(var.msierrComPlusSubscriptionNameConflict)">!(loc.msierrComPlusSubscriptionNameConflict)</Error>
-      <Error Id="$(var.msierrComPlusFailedLookupNames)">!(loc.msierrComPlusFailedLookupNames)</Error>
+      <Error Id="$(var.msierrComPlusCannotConnect)" Message="!(loc.msierrComPlusCannotConnect)" />
+      <Error Id="$(var.msierrComPlusPartitionReadFailed)" Message="!(loc.msierrComPlusPartitionReadFailed)" />
+      <Error Id="$(var.msierrComPlusPartitionRoleReadFailed)" Message="!(loc.msierrComPlusPartitionRoleReadFailed)" />
+      <Error Id="$(var.msierrComPlusUserInPartitionRoleReadFailed)" Message="!(loc.msierrComPlusUserInPartitionRoleReadFailed)" />
+      <Error Id="$(var.msierrComPlusPartitionUserReadFailed)" Message="!(loc.msierrComPlusPartitionUserReadFailed)" />
+      <Error Id="$(var.msierrComPlusApplicationReadFailed)" Message="!(loc.msierrComPlusApplicationReadFailed)" />
+      <Error Id="$(var.msierrComPlusApplicationRoleReadFailed)" Message="!(loc.msierrComPlusApplicationRoleReadFailed)" />
+      <Error Id="$(var.msierrComPlusUserInApplicationRoleReadFailed)" Message="!(loc.msierrComPlusUserInApplicationRoleReadFailed)" />
+      <Error Id="$(var.msierrComPlusAssembliesReadFailed)" Message="!(loc.msierrComPlusAssembliesReadFailed)" />
+      <Error Id="$(var.msierrComPlusSubscriptionReadFailed)" Message="!(loc.msierrComPlusSubscriptionReadFailed)" />
+      <Error Id="$(var.msierrComPlusPartitionDependency)" Message="!(loc.msierrComPlusPartitionDependency)" />
+      <Error Id="$(var.msierrComPlusPartitionNotFound)" Message="!(loc.msierrComPlusPartitionNotFound)" />
+      <Error Id="$(var.msierrComPlusPartitionIdConflict)" Message="!(loc.msierrComPlusPartitionIdConflict)" />
+      <Error Id="$(var.msierrComPlusPartitionNameConflict)" Message="!(loc.msierrComPlusPartitionNameConflict)" />
+      <Error Id="$(var.msierrComPlusApplicationDependency)" Message="!(loc.msierrComPlusApplicationDependency)" />
+      <Error Id="$(var.msierrComPlusApplicationNotFound)" Message="!(loc.msierrComPlusApplicationNotFound)" />
+      <Error Id="$(var.msierrComPlusApplicationIdConflict)" Message="!(loc.msierrComPlusApplicationIdConflict)" />
+      <Error Id="$(var.msierrComPlusApplicationNameConflict)" Message="!(loc.msierrComPlusApplicationNameConflict)" />
+      <Error Id="$(var.msierrComPlusApplicationRoleDependency)" Message="!(loc.msierrComPlusApplicationRoleDependency)" />
+      <Error Id="$(var.msierrComPlusApplicationRoleNotFound)" Message="!(loc.msierrComPlusApplicationRoleNotFound)" />
+      <Error Id="$(var.msierrComPlusApplicationRoleConflict)" Message="!(loc.msierrComPlusApplicationRoleConflict)" />
+      <Error Id="$(var.msierrComPlusAssemblyDependency)" Message="!(loc.msierrComPlusAssemblyDependency)" />
+      <Error Id="$(var.msierrComPlusSubscriptionIdConflict)" Message="!(loc.msierrComPlusSubscriptionIdConflict)" />
+      <Error Id="$(var.msierrComPlusSubscriptionNameConflict)" Message="!(loc.msierrComPlusSubscriptionNameConflict)" />
+      <Error Id="$(var.msierrComPlusFailedLookupNames)" Message="!(loc.msierrComPlusFailedLookupNames)" />
 
-      <ProgressText Action="ComPlusInstallExecute">!(loc.ComPlusInstallExecute)</ProgressText>
-      <ProgressText Action="ComPlusUninstallExecute">!(loc.ComPlusUninstallExecute)</ProgressText>
+      <ProgressText Action="ComPlusInstallExecute" Message="!(loc.ComPlusInstallExecute)" />
+      <ProgressText Action="ComPlusUninstallExecute" Message="!(loc.ComPlusUninstallExecute)" />
 
-      <ProgressText Action="CreateComPlusPartitions" Template="!(loc.CreateComPlusPartitionsTemplate)">!(loc.CreateComPlusPartitions)</ProgressText>
-      <ProgressText Action="RemoveComPlusPartitions" Template="!(loc.RemoveComPlusPartitionsTemplate)">!(loc.RemoveComPlusPartitions)</ProgressText>
-      <ProgressText Action="AddUsersToComPlusPartitionRoles" Template="!(loc.AddUsersToComPlusPartitionRolesTemplate)">!(loc.AddUsersToComPlusPartitionRoles)</ProgressText>
-      <ProgressText Action="RemoveUsersFromComPlusPartRoles" Template="!(loc.RemoveUsersFromComPlusPartitionRolesTemplate)">!(loc.RemoveUsersFromComPlusPartitionRoles)</ProgressText>
-      <ProgressText Action="AddComPlusPartitionUsers" Template="!(loc.AddComPlusPartitionUsersTemplate)">!(loc.AddComPlusPartitionUsers)</ProgressText>
-      <ProgressText Action="RemoveComPlusPartitionUsers" Template="!(loc.RemoveComPlusPartitionUsersTemplate)">!(loc.RemoveComPlusPartitionUsers)</ProgressText>
-      <ProgressText Action="CreateComPlusApplications" Template="!(loc.CreateComPlusApplicationsTemplate)">!(loc.CreateComPlusApplications)</ProgressText>
-      <ProgressText Action="RemoveComPlusApplications" Template="!(loc.RemoveComPlusApplicationsTemplate)">!(loc.RemoveComPlusApplications)</ProgressText>
-      <ProgressText Action="CreateComPlusApplicationRoles" Template="!(loc.CreateComPlusApplicationRolesTemplate)">!(loc.CreateComPlusApplicationRoles)</ProgressText>
-      <ProgressText Action="RemoveComPlusApplicationRoles" Template="!(loc.RemoveComPlusApplicationRolesTemplate)">!(loc.RemoveComPlusApplicationRoles)</ProgressText>
-      <ProgressText Action="AddUsersToComPlusApplicationRoles" Template="!(loc.AddUsersToComPlusApplicationRolesTemplate)">!(loc.AddUsersToComPlusApplicationRoles)</ProgressText>
-      <ProgressText Action="RemoveUsersFromComPlusAppRoles" Template="!(loc.RemoveUsersFromComPlusApplicationRolesTemplate)">!(loc.RemoveUsersFromComPlusApplicationRoles)</ProgressText>
-      <ProgressText Action="RegisterComPlusAssemblies" Template="!(loc.RegisterComPlusAssembliesTemplate)">!(loc.RegisterComPlusAssemblies)</ProgressText>
-      <ProgressText Action="UnregisterComPlusAssemblies" Template="!(loc.UnregisterComPlusAssembliesTemplate)">!(loc.UnregisterComPlusAssemblies)</ProgressText>
-      <ProgressText Action="AddComPlusRoleAssignments" Template="!(loc.AddComPlusRoleAssignmentsTemplate)">!(loc.AddComPlusRoleAssignments)</ProgressText>
-      <ProgressText Action="RemoveComPlusRoleAssignments" Template="!(loc.RemoveComPlusRoleAssignmentsTemplate)">!(loc.RemoveComPlusRoleAssignments)</ProgressText>
-      <ProgressText Action="CreateSubscrComPlusComponents" Template="!(loc.CreateSubscriptionsComPlusComponentsTemplate)">!(loc.CreateSubscriptionsComPlusComponents)</ProgressText>
-      <ProgressText Action="RemoveSubscrComPlusComponents" Template="!(loc.RemoveSubscriptionsComPlusComponentsTemplate)">!(loc.RemoveSubscriptionsComPlusComponents)</ProgressText>
+      <ProgressText Action="CreateComPlusPartitions" Template="!(loc.CreateComPlusPartitionsTemplate)" Message="!(loc.CreateComPlusPartitions)" />
+      <ProgressText Action="RemoveComPlusPartitions" Template="!(loc.RemoveComPlusPartitionsTemplate)" Message="!(loc.RemoveComPlusPartitions)" />
+      <ProgressText Action="AddUsersToComPlusPartitionRoles" Template="!(loc.AddUsersToComPlusPartitionRolesTemplate)" Message="!(loc.AddUsersToComPlusPartitionRoles)" />
+      <ProgressText Action="RemoveUsersFromComPlusPartRoles" Template="!(loc.RemoveUsersFromComPlusPartitionRolesTemplate)" Message="!(loc.RemoveUsersFromComPlusPartitionRoles)" />
+      <ProgressText Action="AddComPlusPartitionUsers" Template="!(loc.AddComPlusPartitionUsersTemplate)" Message="!(loc.AddComPlusPartitionUsers)" />
+      <ProgressText Action="RemoveComPlusPartitionUsers" Template="!(loc.RemoveComPlusPartitionUsersTemplate)" Message="!(loc.RemoveComPlusPartitionUsers)" />
+      <ProgressText Action="CreateComPlusApplications" Template="!(loc.CreateComPlusApplicationsTemplate)" Message="!(loc.CreateComPlusApplications)" />
+      <ProgressText Action="RemoveComPlusApplications" Template="!(loc.RemoveComPlusApplicationsTemplate)" Message="!(loc.RemoveComPlusApplications)" />
+      <ProgressText Action="CreateComPlusApplicationRoles" Template="!(loc.CreateComPlusApplicationRolesTemplate)" Message="!(loc.CreateComPlusApplicationRoles)" />
+      <ProgressText Action="RemoveComPlusApplicationRoles" Template="!(loc.RemoveComPlusApplicationRolesTemplate)" Message="!(loc.RemoveComPlusApplicationRoles)" />
+      <ProgressText Action="AddUsersToComPlusApplicationRoles" Template="!(loc.AddUsersToComPlusApplicationRolesTemplate)" Message="!(loc.AddUsersToComPlusApplicationRoles)" />
+      <ProgressText Action="RemoveUsersFromComPlusAppRoles" Template="!(loc.RemoveUsersFromComPlusApplicationRolesTemplate)" Message="!(loc.RemoveUsersFromComPlusApplicationRoles)" />
+      <ProgressText Action="RegisterComPlusAssemblies" Template="!(loc.RegisterComPlusAssembliesTemplate)" Message="!(loc.RegisterComPlusAssemblies)" />
+      <ProgressText Action="UnregisterComPlusAssemblies" Template="!(loc.UnregisterComPlusAssembliesTemplate)" Message="!(loc.UnregisterComPlusAssemblies)" />
+      <ProgressText Action="AddComPlusRoleAssignments" Template="!(loc.AddComPlusRoleAssignmentsTemplate)" Message="!(loc.AddComPlusRoleAssignments)" />
+      <ProgressText Action="RemoveComPlusRoleAssignments" Template="!(loc.RemoveComPlusRoleAssignmentsTemplate)" Message="!(loc.RemoveComPlusRoleAssignments)" />
+      <ProgressText Action="CreateSubscrComPlusComponents" Template="!(loc.CreateSubscriptionsComPlusComponentsTemplate)" Message="!(loc.CreateSubscriptionsComPlusComponents)" />
+      <ProgressText Action="RemoveSubscrComPlusComponents" Template="!(loc.RemoveSubscriptionsComPlusComponentsTemplate)" Message="!(loc.RemoveSubscriptionsComPlusComponents)" />
     </UI>
   </Fragment>
 
   <Fragment>
     <UIRef Id="ComPlusUI" />
 
-    <CustomAction Id="ConfigureComPlusInstall" BinaryKey="ComPlusCA_x86" DllEntry="ConfigureComPlusInstall" Execute="immediate" Return="check" SuppressModularization="yes" />
-    <CustomAction Id="ConfigureComPlusUninstall" BinaryKey="ComPlusCA_x86" DllEntry="ConfigureComPlusUninstall" Execute="immediate" Return="check" SuppressModularization="yes" />
-    <CustomAction Id="ComPlusInstallPrepare" BinaryKey="ComPlusCA_x86" DllEntry="ComPlusPrepare" Execute="deferred" Return="check" Impersonate="no" HideTarget="yes" SuppressModularization="yes" />
-    <CustomAction Id="ComPlusRollbackInstallPrepare" BinaryKey="ComPlusCA_x86" DllEntry="ComPlusCleanup" Execute="rollback" Return="check" Impersonate="no" HideTarget="yes" SuppressModularization="yes" />
-    <CustomAction Id="ComPlusInstallExecute" BinaryKey="ComPlusCA_x86" DllEntry="ComPlusInstallExecute" Execute="deferred" Return="check" Impersonate="no" HideTarget="yes" SuppressModularization="yes" />
-    <CustomAction Id="ComPlusInstallExecuteCommit" BinaryKey="ComPlusCA_x86" DllEntry="ComPlusInstallExecuteCommit" Execute="commit" Return="check" Impersonate="no" HideTarget="yes" SuppressModularization="yes" />
-    <CustomAction Id="ComPlusRollbackInstallExecute" BinaryKey="ComPlusCA_x86" DllEntry="ComPlusRollbackInstallExecute" Execute="rollback" Return="check" Impersonate="no" HideTarget="yes" SuppressModularization="yes" />
-    <CustomAction Id="ComPlusInstallCommit" BinaryKey="ComPlusCA_x86" DllEntry="ComPlusCleanup" Execute="commit" Return="check" Impersonate="no" HideTarget="yes" SuppressModularization="yes" />
-    <CustomAction Id="ComPlusUninstallPrepare" BinaryKey="ComPlusCA_x86" DllEntry="ComPlusPrepare" Execute="deferred" Return="check" Impersonate="no" HideTarget="yes" SuppressModularization="yes" />
-    <CustomAction Id="ComPlusRollbackUninstallPrepare" BinaryKey="ComPlusCA_x86" DllEntry="ComPlusCleanup" Execute="rollback" Return="check" Impersonate="no" HideTarget="yes" SuppressModularization="yes" />
-    <CustomAction Id="ComPlusUninstallExecute" BinaryKey="ComPlusCA_x86" DllEntry="ComPlusUninstallExecute" Execute="deferred" Return="check" Impersonate="no" HideTarget="yes" SuppressModularization="yes" />
-    <CustomAction Id="ComPlusRollbackUninstallExecute" BinaryKey="ComPlusCA_x86" DllEntry="ComPlusInstallExecute" Execute="rollback" Return="check" Impersonate="no" HideTarget="yes" SuppressModularization="yes" />
-    <CustomAction Id="ComPlusUninstallCommit" BinaryKey="ComPlusCA_x86" DllEntry="ComPlusCleanup" Execute="commit" Return="check" Impersonate="no" HideTarget="yes" SuppressModularization="yes" />
+    <CustomAction Id="ConfigureComPlusInstall" DllEntry="ConfigureComPlusInstall" Execute="immediate" Return="check" SuppressModularization="yes" BinaryRef="ComPlusCA_x86" />
+    <CustomAction Id="ConfigureComPlusUninstall" DllEntry="ConfigureComPlusUninstall" Execute="immediate" Return="check" SuppressModularization="yes" BinaryRef="ComPlusCA_x86" />
+    <CustomAction Id="ComPlusInstallPrepare" DllEntry="ComPlusPrepare" Execute="deferred" Return="check" Impersonate="no" HideTarget="yes" SuppressModularization="yes" BinaryRef="ComPlusCA_x86" />
+    <CustomAction Id="ComPlusRollbackInstallPrepare" DllEntry="ComPlusCleanup" Execute="rollback" Return="check" Impersonate="no" HideTarget="yes" SuppressModularization="yes" BinaryRef="ComPlusCA_x86" />
+    <CustomAction Id="ComPlusInstallExecute" DllEntry="ComPlusInstallExecute" Execute="deferred" Return="check" Impersonate="no" HideTarget="yes" SuppressModularization="yes" BinaryRef="ComPlusCA_x86" />
+    <CustomAction Id="ComPlusInstallExecuteCommit" DllEntry="ComPlusInstallExecuteCommit" Execute="commit" Return="check" Impersonate="no" HideTarget="yes" SuppressModularization="yes" BinaryRef="ComPlusCA_x86" />
+    <CustomAction Id="ComPlusRollbackInstallExecute" DllEntry="ComPlusRollbackInstallExecute" Execute="rollback" Return="check" Impersonate="no" HideTarget="yes" SuppressModularization="yes" BinaryRef="ComPlusCA_x86" />
+    <CustomAction Id="ComPlusInstallCommit" DllEntry="ComPlusCleanup" Execute="commit" Return="check" Impersonate="no" HideTarget="yes" SuppressModularization="yes" BinaryRef="ComPlusCA_x86" />
+    <CustomAction Id="ComPlusUninstallPrepare" DllEntry="ComPlusPrepare" Execute="deferred" Return="check" Impersonate="no" HideTarget="yes" SuppressModularization="yes" BinaryRef="ComPlusCA_x86" />
+    <CustomAction Id="ComPlusRollbackUninstallPrepare" DllEntry="ComPlusCleanup" Execute="rollback" Return="check" Impersonate="no" HideTarget="yes" SuppressModularization="yes" BinaryRef="ComPlusCA_x86" />
+    <CustomAction Id="ComPlusUninstallExecute" DllEntry="ComPlusUninstallExecute" Execute="deferred" Return="check" Impersonate="no" HideTarget="yes" SuppressModularization="yes" BinaryRef="ComPlusCA_x86" />
+    <CustomAction Id="ComPlusRollbackUninstallExecute" DllEntry="ComPlusInstallExecute" Execute="rollback" Return="check" Impersonate="no" HideTarget="yes" SuppressModularization="yes" BinaryRef="ComPlusCA_x86" />
+    <CustomAction Id="ComPlusUninstallCommit" DllEntry="ComPlusCleanup" Execute="commit" Return="check" Impersonate="no" HideTarget="yes" SuppressModularization="yes" BinaryRef="ComPlusCA_x86" />
 
     <Property Id="ComPlusInstallPrepare" Hidden="yes" SuppressModularization="yes" />
     <Property Id="ComPlusRollbackInstallPrepare" Hidden="yes" SuppressModularization="yes" />
@@ -87,27 +86,27 @@
     <Property Id="ComPlusUninstallCommit" Hidden="yes" SuppressModularization="yes" />
 
     <InstallExecuteSequence>
-      <Custom Action="ConfigureComPlusUninstall" After="DeleteServices" Overridable="yes">VersionNT >= 500</Custom>
-      <Custom Action="ConfigureComPlusInstall" Before="InstallServices" Overridable="yes">VersionNT >= 500</Custom>
+      <Custom Action="ConfigureComPlusUninstall" After="DeleteServices" Overridable="yes" Condition="VersionNT &gt;= 500" />
+      <Custom Action="ConfigureComPlusInstall" Before="InstallServices" Overridable="yes" Condition="VersionNT &gt;= 500" />
     </InstallExecuteSequence>
   </Fragment>
 
   <Fragment>
     <UIRef Id="ComPlusUI" />
 
-    <CustomAction Id="ConfigureComPlusInstall_x64" BinaryKey="ComPlusCA_x64" DllEntry="ConfigureComPlusInstall" Execute="immediate" Return="check" SuppressModularization="yes" />
-    <CustomAction Id="ConfigureComPlusUninstall_x64" BinaryKey="ComPlusCA_x64" DllEntry="ConfigureComPlusUninstall" Execute="immediate" Return="check" SuppressModularization="yes" />
-    <CustomAction Id="ComPlusInstallPrepare_64" BinaryKey="ComPlusCA_x64" DllEntry="ComPlusPrepare" Execute="deferred" Return="check" Impersonate="no" HideTarget="yes" SuppressModularization="yes" />
-    <CustomAction Id="ComPlusRollbackInstallPrepare_64" BinaryKey="ComPlusCA_x64" DllEntry="ComPlusCleanup" Execute="rollback" Return="check" Impersonate="no" HideTarget="yes" SuppressModularization="yes" />
-    <CustomAction Id="ComPlusInstallExecute_64" BinaryKey="ComPlusCA_x64" DllEntry="ComPlusInstallExecute" Execute="deferred" Return="check" Impersonate="no" HideTarget="yes" SuppressModularization="yes" />
-    <CustomAction Id="ComPlusInstallExecuteCommit_64" BinaryKey="ComPlusCA_x64" DllEntry="ComPlusInstallExecuteCommit" Execute="commit" Return="check" Impersonate="no" HideTarget="yes" SuppressModularization="yes" />
-    <CustomAction Id="ComPlusRollbackInstallExecute_64" BinaryKey="ComPlusCA_x64" DllEntry="ComPlusRollbackInstallExecute" Execute="rollback" Return="check" Impersonate="no" HideTarget="yes" SuppressModularization="yes" />
-    <CustomAction Id="ComPlusInstallCommit_64" BinaryKey="ComPlusCA_x64" DllEntry="ComPlusCleanup" Execute="commit" Return="check" Impersonate="no" HideTarget="yes" SuppressModularization="yes" />
-    <CustomAction Id="ComPlusUninstallPrepare_64" BinaryKey="ComPlusCA_x64" DllEntry="ComPlusPrepare" Execute="deferred" Return="check" Impersonate="no" HideTarget="yes" SuppressModularization="yes" />
-    <CustomAction Id="ComPlusRollbackUninstallPrepare_64" BinaryKey="ComPlusCA_x64" DllEntry="ComPlusCleanup" Execute="rollback" Return="check" Impersonate="no" HideTarget="yes" SuppressModularization="yes" />
-    <CustomAction Id="ComPlusUninstallExecute_64" BinaryKey="ComPlusCA_x64" DllEntry="ComPlusUninstallExecute" Execute="deferred" Return="check" Impersonate="no" HideTarget="yes" SuppressModularization="yes" />
-    <CustomAction Id="ComPlusRollbackUninstallExecute_64" BinaryKey="ComPlusCA_x64" DllEntry="ComPlusInstallExecute" Execute="rollback" Return="check" Impersonate="no" HideTarget="yes" SuppressModularization="yes" />
-    <CustomAction Id="ComPlusUninstallCommit_64" BinaryKey="ComPlusCA_x64" DllEntry="ComPlusCleanup" Execute="commit" Return="check" Impersonate="no" HideTarget="yes" SuppressModularization="yes" />
+    <CustomAction Id="ConfigureComPlusInstall_x64" DllEntry="ConfigureComPlusInstall" Execute="immediate" Return="check" SuppressModularization="yes" BinaryRef="ComPlusCA_x64" />
+    <CustomAction Id="ConfigureComPlusUninstall_x64" DllEntry="ConfigureComPlusUninstall" Execute="immediate" Return="check" SuppressModularization="yes" BinaryRef="ComPlusCA_x64" />
+    <CustomAction Id="ComPlusInstallPrepare_64" DllEntry="ComPlusPrepare" Execute="deferred" Return="check" Impersonate="no" HideTarget="yes" SuppressModularization="yes" BinaryRef="ComPlusCA_x64" />
+    <CustomAction Id="ComPlusRollbackInstallPrepare_64" DllEntry="ComPlusCleanup" Execute="rollback" Return="check" Impersonate="no" HideTarget="yes" SuppressModularization="yes" BinaryRef="ComPlusCA_x64" />
+    <CustomAction Id="ComPlusInstallExecute_64" DllEntry="ComPlusInstallExecute" Execute="deferred" Return="check" Impersonate="no" HideTarget="yes" SuppressModularization="yes" BinaryRef="ComPlusCA_x64" />
+    <CustomAction Id="ComPlusInstallExecuteCommit_64" DllEntry="ComPlusInstallExecuteCommit" Execute="commit" Return="check" Impersonate="no" HideTarget="yes" SuppressModularization="yes" BinaryRef="ComPlusCA_x64" />
+    <CustomAction Id="ComPlusRollbackInstallExecute_64" DllEntry="ComPlusRollbackInstallExecute" Execute="rollback" Return="check" Impersonate="no" HideTarget="yes" SuppressModularization="yes" BinaryRef="ComPlusCA_x64" />
+    <CustomAction Id="ComPlusInstallCommit_64" DllEntry="ComPlusCleanup" Execute="commit" Return="check" Impersonate="no" HideTarget="yes" SuppressModularization="yes" BinaryRef="ComPlusCA_x64" />
+    <CustomAction Id="ComPlusUninstallPrepare_64" DllEntry="ComPlusPrepare" Execute="deferred" Return="check" Impersonate="no" HideTarget="yes" SuppressModularization="yes" BinaryRef="ComPlusCA_x64" />
+    <CustomAction Id="ComPlusRollbackUninstallPrepare_64" DllEntry="ComPlusCleanup" Execute="rollback" Return="check" Impersonate="no" HideTarget="yes" SuppressModularization="yes" BinaryRef="ComPlusCA_x64" />
+    <CustomAction Id="ComPlusUninstallExecute_64" DllEntry="ComPlusUninstallExecute" Execute="deferred" Return="check" Impersonate="no" HideTarget="yes" SuppressModularization="yes" BinaryRef="ComPlusCA_x64" />
+    <CustomAction Id="ComPlusRollbackUninstallExecute_64" DllEntry="ComPlusInstallExecute" Execute="rollback" Return="check" Impersonate="no" HideTarget="yes" SuppressModularization="yes" BinaryRef="ComPlusCA_x64" />
+    <CustomAction Id="ComPlusUninstallCommit_64" DllEntry="ComPlusCleanup" Execute="commit" Return="check" Impersonate="no" HideTarget="yes" SuppressModularization="yes" BinaryRef="ComPlusCA_x64" />
 
     <Property Id="ComPlusInstallPrepare_64" Hidden="yes" SuppressModularization="yes" />
     <Property Id="ComPlusRollbackInstallPrepare_64" Hidden="yes" SuppressModularization="yes" />
@@ -122,16 +121,16 @@
     <Property Id="ComPlusUninstallCommit_64" Hidden="yes" SuppressModularization="yes" />
 
     <InstallExecuteSequence>
-      <Custom Action="ConfigureComPlusUninstall_x64" After="DeleteServices" Overridable="yes">VersionNT >= 500</Custom>
-      <Custom Action="ConfigureComPlusInstall_x64" Before="InstallServices" Overridable="yes">VersionNT >= 500</Custom>
+      <Custom Action="ConfigureComPlusUninstall_x64" After="DeleteServices" Overridable="yes" Condition="VersionNT &gt;= 500" />
+      <Custom Action="ConfigureComPlusInstall_x64" Before="InstallServices" Overridable="yes" Condition="VersionNT &gt;= 500" />
     </InstallExecuteSequence>
   </Fragment>
 
   <Fragment>
-    <Binary Id="ComPlusCA_x86" SourceFile="!(bindpath.x86)complusca.dll"/>
+    <Binary Id="ComPlusCA_x86" SourceFile="!(bindpath.x86)complusca.dll" />
   </Fragment>
 
   <Fragment>
-    <Binary Id="ComPlusCA_x64" SourceFile="!(bindpath.x64)complusca.dll"/>
+    <Binary Id="ComPlusCA_x64" SourceFile="!(bindpath.x64)complusca.dll" />
   </Fragment>
 </Wix>
diff --git a/src/wixlib/caerr.wxi b/src/wixlib/caerr.wxi
index 141942f2..ff7ec121 100644
--- a/src/wixlib/caerr.wxi
+++ b/src/wixlib/caerr.wxi
@@ -1,4 +1,4 @@
-<Include>
+<Include xmlns="http://wixtoolset.org/schemas/v4/wxs">
   <?define msierrSecureObjectsFailedCreateSD = 25520?>
   <?define msierrSecureObjectsFailedSet = 25521?>
   <?define msierrSecureObjectsUnknownType = 25522?>
-- 
cgit v1.2.3-55-g6feb