aboutsummaryrefslogtreecommitdiff
path: root/src/xsd/complus.xsd
blob: 5e658aedb35c2d65dcaca2c7cb6301e0dcbbfa41 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
<?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:xs="http://www.w3.org/2001/XMLSchema"
          xmlns:xse="http://wixtoolset.org/schemas/XmlSchemaExtension"
         xmlns:html="http://www.w3.org/1999/xhtml"
          xmlns:wxs="http://wixtoolset.org/schemas/v4/wxs"
    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="Package" />
      </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 Package
        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="wxs:YesNoTypeUnion" />
      <xs:attribute name="Deleteable" use="optional" type="wxs:YesNoTypeUnion" />
      <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="Package" />
      </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="Package" />
      </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
        Package 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="wxs:YesNoTypeUnion" />
      <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="wxs:YesNoTypeUnion" />
      <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="wxs:YesNoTypeUnion" />
      <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="wxs:YesNoTypeUnion" />
      <xs:attribute name="CRMLogFile" use="optional" type="xs:string" />
      <xs:attribute name="Deleteable" use="optional" type="wxs:YesNoTypeUnion" />
      <xs:attribute name="Description" use="optional" type="xs:string" />
      <xs:attribute name="DumpEnabled" use="optional" type="wxs:YesNoTypeUnion" />
      <xs:attribute name="DumpOnException" use="optional" type="wxs:YesNoTypeUnion" />
      <xs:attribute name="DumpOnFailfast" use="optional" type="wxs:YesNoTypeUnion" />
      <xs:attribute name="DumpPath" use="optional" type="xs:string" />
      <xs:attribute name="EventsEnabled" use="optional" type="wxs:YesNoTypeUnion" />
      <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="wxs:YesNoTypeUnion" />
      <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="wxs:YesNoTypeUnion" />
      <xs:attribute name="QueuingEnabled" use="optional" type="wxs:YesNoTypeUnion" />
      <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="wxs:YesNoTypeUnion" />
      <xs:attribute name="RunForever" use="optional" type="wxs:YesNoTypeUnion" />
      <xs:attribute name="ShutdownAfter" use="optional" type="xs:int" />
      <xs:attribute name="SoapActivated" use="optional" type="wxs:YesNoTypeUnion" />
      <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="wxs:YesNoTypeUnion" />
      <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="Package" />
      </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 Package 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="wxs:YesNoTypeUnion">
        <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="wxs:YesNoTypeUnion">
        <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="wxs:YesNoTypeUnion">
        <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="wxs:YesNoTypeUnion" />
      <xs:attribute name="ComponentAccessChecksEnabled" use="optional" type="wxs:YesNoTypeUnion" />
      <xs:attribute name="ComponentTransactionTimeout" use="optional" type="xs:int" />
      <xs:attribute name="ComponentTransactionTimeoutEnabled" use="optional" type="wxs:YesNoTypeUnion" />
      <xs:attribute name="COMTIIntrinsics" use="optional" type="wxs:YesNoTypeUnion" />
      <xs:attribute name="ConstructionEnabled" use="optional" type="wxs:YesNoTypeUnion" />
      <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="wxs:YesNoTypeUnion" />
      <xs:attribute name="ExceptionClass" use="optional" type="xs:string" />
      <xs:attribute name="FireInParallel" use="optional" type="wxs:YesNoTypeUnion" />
      <xs:attribute name="IISIntrinsics" use="optional" type="wxs:YesNoTypeUnion" />
      <xs:attribute name="InitializesServerApplication" use="optional" type="wxs:YesNoTypeUnion" />
      <xs:attribute name="IsEnabled" use="optional" type="wxs:YesNoTypeUnion" />
      <xs:attribute name="IsPrivateComponent" use="optional" type="wxs:YesNoTypeUnion" />
      <xs:attribute name="JustInTimeActivation" use="optional" type="wxs:YesNoTypeUnion" />
      <xs:attribute name="LoadBalancingSupported" use="optional" type="wxs:YesNoTypeUnion" />
      <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="wxs:YesNoTypeUnion" />
      <xs:attribute name="MustRunInDefaultContext" use="optional" type="wxs:YesNoTypeUnion" />
      <xs:attribute name="ObjectPoolingEnabled" use="optional" type="wxs:YesNoTypeUnion" />
      <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="wxs:YesNoTypeUnion" />
    </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="wxs:YesNoTypeUnion" />
      <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="wxs:YesNoTypeUnion" />
      <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="wxs:YesNoTypeUnion" />
      <xs:attribute name="Queued" use="optional" type="wxs:YesNoTypeUnion" />
      <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="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>