@joebigelow / wix-1 / commits / ef6485ac

Add additional strongly typed tuples

Rob Mensching committed May 8, 2019 at 13:35 UTC ef6485ac4a03333701d343c1e3a52d25805c58f1
42 files changed +1369 -13909
src/WixToolset.Data/ComponentKeyPathType.cs new
+27
@@ -0,0 +1,27 @@
1 +// Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information.
2 +
3 +namespace WixToolset.Data
4 +{
5 + public enum ComponentKeyPathType
6 + {
7 + /// <summary>
8 + /// Folder as a key path.
9 + /// </summary>
10 + Directory,
11 +
12 + /// <summary>
13 + /// File resource as a key path.
14 + /// </summary>
15 + File,
16 +
17 + /// <summary>
18 + /// ODBC data source as a key path.
19 + /// </summary>
20 + OdbcDataSource,
21 +
22 + /// <summary>
23 + /// A simple registry key acting as a key path.
24 + /// </summary>
25 + Registry,
26 + }
27 +}
src/WixToolset.Data/IntermediateTupleDefinition.cs
+1 -1
@@ -30,7 +30,7 @@ namespace WixToolset.Data
30 this.FieldDefinitions = fieldDefinitions;
31 this.StrongTupleType = strongTupleType ?? typeof(IntermediateTuple);
32 #if DEBUG
33 - if (this.StrongTupleType != typeof(IntermediateTuple) && !this.StrongTupleType.IsSubclassOf(typeof(IntermediateTuple))) throw new ArgumentException(nameof(strongTupleType));
33 + if (this.StrongTupleType != typeof(IntermediateTuple) && !this.StrongTupleType.IsSubclassOf(typeof(IntermediateTuple))) { throw new ArgumentException(nameof(strongTupleType)); }
34 #endif
35 }
36
src/WixToolset.Data/LocalizedControl.cs
+20 -10
@@ -7,7 +7,7 @@ namespace WixToolset.Data
7
8 public class LocalizedControl
9 {
10 - public LocalizedControl(string dialog, string control, int x, int y, int width, int height, int attribs, string text)
10 + public LocalizedControl(string dialog, string control, int x, int y, int width, int height, bool rightToLeft, bool rightAligned, bool leftScroll, string text)
11 {
12 this.Dialog = dialog;
13 this.Control = control;
@@ -15,7 +15,9 @@ namespace WixToolset.Data
15 this.Y = y;
16 this.Width = width;
17 this.Height = height;
18 - this.Attributes = attribs;
18 + this.RightToLeft = rightToLeft;
19 + this.RightAligned = rightAligned;
20 + this.LeftScroll = leftScroll;
21 this.Text = text;
22 }
23
@@ -31,7 +33,11 @@ namespace WixToolset.Data
33
34 public int Height { get; }
35
34 - public int Attributes { get; }
36 + public bool RightToLeft { get; }
37 +
38 + public bool RightAligned { get; }
39 +
40 + public bool LeftScroll { get; }
41
42 public string Text { get; }
43
@@ -57,11 +63,13 @@ namespace WixToolset.Data
63 };
64
65 jsonObject.AddIsNotNullOrEmpty("control", this.Control);
60 - jsonObject.AddNonDefaultValue("x", this.X, 0);
61 - jsonObject.AddNonDefaultValue("y", this.Y, 0);
62 - jsonObject.AddNonDefaultValue("width", this.Width, 0);
63 - jsonObject.AddNonDefaultValue("height", this.Height, 0);
64 - jsonObject.AddNonDefaultValue("attribs", this.Attributes, 0);
66 + jsonObject.AddNonDefaultValue("x", this.X);
67 + jsonObject.AddNonDefaultValue("y", this.Y);
68 + jsonObject.AddNonDefaultValue("width", this.Width);
69 + jsonObject.AddNonDefaultValue("height", this.Height);
70 + jsonObject.AddNonDefaultValue("rightToLeft", this.RightToLeft);
71 + jsonObject.AddNonDefaultValue("rightAligned", this.RightAligned);
72 + jsonObject.AddNonDefaultValue("leftScroll", this.LeftScroll);
73 jsonObject.AddIsNotNullOrEmpty("text", this.Text);
74
75 return jsonObject;
@@ -75,10 +83,12 @@ namespace WixToolset.Data
83 var y = jsonObject.GetValueOrDefault("y", 0);
84 var width = jsonObject.GetValueOrDefault("width", 0);
85 var height = jsonObject.GetValueOrDefault("height", 0);
78 - var attribs = jsonObject.GetValueOrDefault("attribs", 0);
86 + var rightToLeft = jsonObject.GetValueOrDefault("rightToLeft", false);
87 + var rightAligned = jsonObject.GetValueOrDefault("rightAligned", false);
88 + var leftScroll = jsonObject.GetValueOrDefault("leftScroll", false);
89 var text = jsonObject.GetValueOrDefault<string>("text");
90
81 - return new LocalizedControl(dialog, control, x, y, width, height, attribs, text);
91 + return new LocalizedControl(dialog, control, x, y, width, height, rightToLeft, rightAligned, leftScroll, text);
92 }
93 }
94 }
src/WixToolset.Data/Msi/MsiInterop.cs deleted
-313
@@ -1,313 +0,0 @@
1 -// Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information.
2 -
3 -namespace WixToolset.Data.Msi
4 -{
5 - public class MsiInterop
6 - {
7 - // Patching constants
8 - internal const int MsiMaxStreamNameLength = 62; // http://msdn2.microsoft.com/library/aa370551.aspx
9 -
10 - // Component.Attributes
11 - public const int MsidbComponentAttributesLocalOnly = 0;
12 - public const int MsidbComponentAttributesSourceOnly = 1;
13 - public const int MsidbComponentAttributesOptional = 2;
14 - public const int MsidbComponentAttributesRegistryKeyPath = 4;
15 - public const int MsidbComponentAttributesSharedDllRefCount = 8;
16 - public const int MsidbComponentAttributesPermanent = 16;
17 - public const int MsidbComponentAttributesODBCDataSource = 32;
18 - public const int MsidbComponentAttributesTransitive = 64;
19 - public const int MsidbComponentAttributesNeverOverwrite = 128;
20 - public const int MsidbComponentAttributes64bit = 256;
21 - public const int MsidbComponentAttributesDisableRegistryReflection = 512;
22 - public const int MsidbComponentAttributesUninstallOnSupersedence = 1024;
23 - public const int MsidbComponentAttributesShared = 2048;
24 -
25 - // BBControl.Attributes & Control.Attributes
26 - internal const int MsidbControlAttributesVisible = 0x00000001;
27 - internal const int MsidbControlAttributesEnabled = 0x00000002;
28 - internal const int MsidbControlAttributesSunken = 0x00000004;
29 - internal const int MsidbControlAttributesIndirect = 0x00000008;
30 - internal const int MsidbControlAttributesInteger = 0x00000010;
31 - internal const int MsidbControlAttributesRTLRO = 0x00000020;
32 - internal const int MsidbControlAttributesRightAligned = 0x00000040;
33 - internal const int MsidbControlAttributesLeftScroll = 0x00000080;
34 - internal const int MsidbControlAttributesBiDi = MsidbControlAttributesRTLRO | MsidbControlAttributesRightAligned | MsidbControlAttributesLeftScroll;
35 -
36 - // Text controls
37 - internal const int MsidbControlAttributesTransparent = 0x00010000;
38 - internal const int MsidbControlAttributesNoPrefix = 0x00020000;
39 - internal const int MsidbControlAttributesNoWrap = 0x00040000;
40 - internal const int MsidbControlAttributesFormatSize = 0x00080000;
41 - internal const int MsidbControlAttributesUsersLanguage = 0x00100000;
42 -
43 - // Edit controls
44 - internal const int MsidbControlAttributesMultiline = 0x00010000;
45 - internal const int MsidbControlAttributesPasswordInput = 0x00200000;
46 -
47 - // ProgressBar controls
48 - internal const int MsidbControlAttributesProgress95 = 0x00010000;
49 -
50 - // VolumeSelectCombo and DirectoryCombo controls
51 - internal const int MsidbControlAttributesRemovableVolume = 0x00010000;
52 - internal const int MsidbControlAttributesFixedVolume = 0x00020000;
53 - internal const int MsidbControlAttributesRemoteVolume = 0x00040000;
54 - internal const int MsidbControlAttributesCDROMVolume = 0x00080000;
55 - internal const int MsidbControlAttributesRAMDiskVolume = 0x00100000;
56 - internal const int MsidbControlAttributesFloppyVolume = 0x00200000;
57 -
58 - // VolumeCostList controls
59 - internal const int MsidbControlShowRollbackCost = 0x00400000;
60 -
61 - // ListBox and ComboBox controls
62 - internal const int MsidbControlAttributesSorted = 0x00010000;
63 - internal const int MsidbControlAttributesComboList = 0x00020000;
64 -
65 - // picture button controls
66 - internal const int MsidbControlAttributesImageHandle = 0x00010000;
67 - internal const int MsidbControlAttributesPushLike = 0x00020000;
68 - internal const int MsidbControlAttributesBitmap = 0x00040000;
69 - internal const int MsidbControlAttributesIcon = 0x00080000;
70 - internal const int MsidbControlAttributesFixedSize = 0x00100000;
71 - internal const int MsidbControlAttributesIconSize16 = 0x00200000;
72 - internal const int MsidbControlAttributesIconSize32 = 0x00400000;
73 - internal const int MsidbControlAttributesIconSize48 = 0x00600000;
74 - internal const int MsidbControlAttributesElevationShield = 0x00800000;
75 -
76 - // RadioButton controls
77 - internal const int MsidbControlAttributesHasBorder = 0x01000000;
78 -
79 - // CustomAction.Type
80 - // executable types
81 - internal const int MsidbCustomActionTypeDll = 0x00000001; // Target = entry point name
82 - internal const int MsidbCustomActionTypeExe = 0x00000002; // Target = command line args
83 - internal const int MsidbCustomActionTypeTextData = 0x00000003; // Target = text string to be formatted and set into property
84 - internal const int MsidbCustomActionTypeJScript = 0x00000005; // Target = entry point name; null if none to call
85 - internal const int MsidbCustomActionTypeVBScript = 0x00000006; // Target = entry point name; null if none to call
86 - internal const int MsidbCustomActionTypeInstall = 0x00000007; // Target = property list for nested engine initialization
87 - internal const int MsidbCustomActionTypeSourceBits = 0x00000030;
88 - internal const int MsidbCustomActionTypeTargetBits = 0x00000007;
89 - internal const int MsidbCustomActionTypeReturnBits = 0x000000C0;
90 - internal const int MsidbCustomActionTypeExecuteBits = 0x00000700;
91 -
92 - // source of code
93 - internal const int MsidbCustomActionTypeBinaryData = 0x00000000; // Source = Binary.Name; data stored in stream
94 - internal const int MsidbCustomActionTypeSourceFile = 0x00000010; // Source = File.File; file part of installation
95 - internal const int MsidbCustomActionTypeDirectory = 0x00000020; // Source = Directory.Directory; folder containing existing file
96 - internal const int MsidbCustomActionTypeProperty = 0x00000030; // Source = Property.Property; full path to executable
97 -
98 - // return processing; default is syncronous execution; process return code
99 - internal const int MsidbCustomActionTypeContinue = 0x00000040; // ignore action return status; continue running
100 - internal const int MsidbCustomActionTypeAsync = 0x00000080; // run asynchronously
101 -
102 - // execution scheduling flags; default is execute whenever sequenced
103 - internal const int MsidbCustomActionTypeFirstSequence = 0x00000100; // skip if UI sequence already run
104 - internal const int MsidbCustomActionTypeOncePerProcess = 0x00000200; // skip if UI sequence already run in same process
105 - internal const int MsidbCustomActionTypeClientRepeat = 0x00000300; // run on client only if UI already run on client
106 - internal const int MsidbCustomActionTypeInScript = 0x00000400; // queue for execution within script
107 - internal const int MsidbCustomActionTypeRollback = 0x00000100; // in conjunction with InScript: queue in Rollback script
108 - internal const int MsidbCustomActionTypeCommit = 0x00000200; // in conjunction with InScript: run Commit ops from script on success
109 -
110 - // security context flag; default to impersonate as user; valid only if InScript
111 - internal const int MsidbCustomActionTypeNoImpersonate = 0x00000800; // no impersonation; run in system context
112 - internal const int MsidbCustomActionTypeTSAware = 0x00004000; // impersonate for per-machine installs on TS machines
113 - internal const int MsidbCustomActionType64BitScript = 0x00001000; // script should run in 64bit process
114 - internal const int MsidbCustomActionTypeHideTarget = 0x00002000; // don't record the contents of the Target field in the log file.
115 -
116 - internal const int MsidbCustomActionTypePatchUninstall = 0x00008000; // run on patch uninstall
117 -
118 - // Dialog.Attributes
119 - internal const int MsidbDialogAttributesVisible = 0x00000001;
120 - internal const int MsidbDialogAttributesModal = 0x00000002;
121 - internal const int MsidbDialogAttributesMinimize = 0x00000004;
122 - internal const int MsidbDialogAttributesSysModal = 0x00000008;
123 - internal const int MsidbDialogAttributesKeepModeless = 0x00000010;
124 - internal const int MsidbDialogAttributesTrackDiskSpace = 0x00000020;
125 - internal const int MsidbDialogAttributesUseCustomPalette = 0x00000040;
126 - internal const int MsidbDialogAttributesRTLRO = 0x00000080;
127 - internal const int MsidbDialogAttributesRightAligned = 0x00000100;
128 - internal const int MsidbDialogAttributesLeftScroll = 0x00000200;
129 - internal const int MsidbDialogAttributesBiDi = MsidbDialogAttributesRTLRO | MsidbDialogAttributesRightAligned | MsidbDialogAttributesLeftScroll;
130 - internal const int MsidbDialogAttributesError = 0x00010000;
131 - internal const int CommonControlAttributesInvert = MsidbControlAttributesVisible + MsidbControlAttributesEnabled;
132 - internal const int DialogAttributesInvert = MsidbDialogAttributesVisible + MsidbDialogAttributesModal + MsidbDialogAttributesMinimize;
133 -
134 - // Feature.Attributes
135 - internal const int MsidbFeatureAttributesFavorLocal = 0;
136 - internal const int MsidbFeatureAttributesFavorSource = 1;
137 - internal const int MsidbFeatureAttributesFollowParent = 2;
138 - internal const int MsidbFeatureAttributesFavorAdvertise = 4;
139 - internal const int MsidbFeatureAttributesDisallowAdvertise = 8;
140 - internal const int MsidbFeatureAttributesUIDisallowAbsent = 16;
141 - internal const int MsidbFeatureAttributesNoUnsupportedAdvertise = 32;
142 -
143 - // File.Attributes
144 - public const int MsidbFileAttributesReadOnly = 1;
145 - public const int MsidbFileAttributesHidden = 2;
146 - public const int MsidbFileAttributesSystem = 4;
147 - public const int MsidbFileAttributesVital = 512;
148 - public const int MsidbFileAttributesChecksum = 1024;
149 - public const int MsidbFileAttributesPatchAdded = 4096;
150 - public const int MsidbFileAttributesNoncompressed = 8192;
151 - public const int MsidbFileAttributesCompressed = 16384;
152 -
153 - // IniFile.Action & RemoveIniFile.Action
154 - internal const int MsidbIniFileActionAddLine = 0;
155 - internal const int MsidbIniFileActionCreateLine = 1;
156 - internal const int MsidbIniFileActionRemoveLine = 2;
157 - internal const int MsidbIniFileActionAddTag = 3;
158 - internal const int MsidbIniFileActionRemoveTag = 4;
159 -
160 - // MoveFile.Options
161 - internal const int MsidbMoveFileOptionsMove = 1;
162 -
163 - // ServiceInstall.Attributes
164 - internal const int MsidbServiceInstallOwnProcess = 0x00000010;
165 - internal const int MsidbServiceInstallShareProcess = 0x00000020;
166 - internal const int MsidbServiceInstallInteractive = 0x00000100;
167 - internal const int MsidbServiceInstallAutoStart = 0x00000002;
168 - internal const int MsidbServiceInstallDemandStart = 0x00000003;
169 - internal const int MsidbServiceInstallDisabled = 0x00000004;
170 - internal const int MsidbServiceInstallErrorIgnore = 0x00000000;
171 - internal const int MsidbServiceInstallErrorNormal = 0x00000001;
172 - internal const int MsidbServiceInstallErrorCritical = 0x00000003;
173 - internal const int MsidbServiceInstallErrorControlVital = 0x00008000;
174 -
175 - // ServiceConfig.Event
176 - internal const int MsidbServiceConfigEventInstall = 0x00000001;
177 - internal const int MsidbServiceConfigEventUninstall = 0x00000002;
178 - internal const int MsidbServiceConfigEventReinstall = 0x00000004;
179 -
180 - // ServiceControl.Attributes
181 - internal const int MsidbServiceControlEventStart = 0x00000001;
182 - internal const int MsidbServiceControlEventStop = 0x00000002;
183 - internal const int MsidbServiceControlEventDelete = 0x00000008;
184 - internal const int MsidbServiceControlEventUninstallStart = 0x00000010;
185 - internal const int MsidbServiceControlEventUninstallStop = 0x00000020;
186 - internal const int MsidbServiceControlEventUninstallDelete = 0x00000080;
187 -
188 - // TextStyle.StyleBits
189 - internal const int MsidbTextStyleStyleBitsBold = 1;
190 - internal const int MsidbTextStyleStyleBitsItalic = 2;
191 - internal const int MsidbTextStyleStyleBitsUnderline = 4;
192 - internal const int MsidbTextStyleStyleBitsStrike = 8;
193 -
194 - // Upgrade.Attributes
195 - internal const int MsidbUpgradeAttributesMigrateFeatures = 0x00000001;
196 - internal const int MsidbUpgradeAttributesOnlyDetect = 0x00000002;
197 - internal const int MsidbUpgradeAttributesIgnoreRemoveFailure = 0x00000004;
198 - internal const int MsidbUpgradeAttributesVersionMinInclusive = 0x00000100;
199 - internal const int MsidbUpgradeAttributesVersionMaxInclusive = 0x00000200;
200 - internal const int MsidbUpgradeAttributesLanguagesExclusive = 0x00000400;
201 -
202 - // Registry Hive Roots
203 - internal const int MsidbRegistryRootClassesRoot = 0;
204 - internal const int MsidbRegistryRootCurrentUser = 1;
205 - internal const int MsidbRegistryRootLocalMachine = 2;
206 - internal const int MsidbRegistryRootUsers = 3;
207 -
208 - // Locator Types
209 - internal const int MsidbLocatorTypeDirectory = 0;
210 - internal const int MsidbLocatorTypeFileName = 1;
211 - internal const int MsidbLocatorTypeRawValue = 2;
212 - internal const int MsidbLocatorType64bit = 16;
213 -
214 - internal const int MsidbClassAttributesRelativePath = 1;
215 -
216 - // RemoveFile.InstallMode
217 - internal const int MsidbRemoveFileInstallModeOnInstall = 0x00000001;
218 - internal const int MsidbRemoveFileInstallModeOnRemove = 0x00000002;
219 - internal const int MsidbRemoveFileInstallModeOnBoth = 0x00000003;
220 -
221 - // ODBCDataSource.Registration
222 - internal const int MsidbODBCDataSourceRegistrationPerMachine = 0;
223 - internal const int MsidbODBCDataSourceRegistrationPerUser = 1;
224 -
225 - // ModuleConfiguration.Format
226 - internal const int MsidbModuleConfigurationFormatText = 0;
227 - internal const int MsidbModuleConfigurationFormatKey = 1;
228 - internal const int MsidbModuleConfigurationFormatInteger = 2;
229 - internal const int MsidbModuleConfigurationFormatBitfield = 3;
230 -
231 - // ModuleConfiguration.Attributes
232 - internal const int MsidbMsmConfigurableOptionKeyNoOrphan = 1;
233 - internal const int MsidbMsmConfigurableOptionNonNullable = 2;
234 -
235 - // ' Windows API function ShowWindow constants - used in Shortcut table
236 - internal const int SWSHOWNORMAL = 0x00000001;
237 - internal const int SWSHOWMAXIMIZED = 0x00000003;
238 - internal const int SWSHOWMINNOACTIVE = 0x00000007;
239 -
240 - // NameToBit arrays
241 - // UI elements
242 - internal static readonly string[] CommonControlAttributes = { "Hidden", "Disabled", "Sunken", "Indirect", "Integer", "RightToLeft", "RightAligned", "LeftScroll" };
243 - internal static readonly string[] TextControlAttributes = { "Transparent", "NoPrefix", "NoWrap", "FormatSize", "UserLanguage" };
244 - internal static readonly string[] HyperlinkControlAttributes = { "Transparent" };
245 - internal static readonly string[] EditControlAttributes = { "Multiline", null, null, null, null, "Password" };
246 - internal static readonly string[] ProgressControlAttributes = { "ProgressBlocks" };
247 - internal static readonly string[] VolumeControlAttributes = { "Removable", "Fixed", "Remote", "CDROM", "RAMDisk", "Floppy", "ShowRollbackCost" };
248 - internal static readonly string[] ListboxControlAttributes = { "Sorted", null, null, null, "UserLanguage" };
249 - internal static readonly string[] ListviewControlAttributes = { "Sorted", null, null, null, "FixedSize", "Icon16", "Icon32" };
250 - internal static readonly string[] ComboboxControlAttributes = { "Sorted", "ComboList", null, null, "UserLanguage" };
251 - internal static readonly string[] RadioControlAttributes = { "Image", "PushLike", "Bitmap", "Icon", "FixedSize", "Icon16", "Icon32", null, "HasBorder" };
252 - internal static readonly string[] ButtonControlAttributes = { "Image", null, "Bitmap", "Icon", "FixedSize", "Icon16", "Icon32", "ElevationShield" };
253 - internal static readonly string[] IconControlAttributes = { "Image", null, null, null, "FixedSize", "Icon16", "Icon32" };
254 - internal static readonly string[] BitmapControlAttributes = { "Image", null, null, null, "FixedSize" };
255 - internal static readonly string[] CheckboxControlAttributes = { null, "PushLike", "Bitmap", "Icon", "FixedSize", "Icon16", "Icon32" };
256 -
257 - internal const int MsidbEmbeddedUI = 0x01;
258 - internal const int MsidbEmbeddedHandlesBasic = 0x02;
259 -
260 - internal const int INSTALLLOGMODE_FATALEXIT = 0x00001;
261 - internal const int INSTALLLOGMODE_ERROR = 0x00002;
262 - internal const int INSTALLLOGMODE_WARNING = 0x00004;
263 - internal const int INSTALLLOGMODE_USER = 0x00008;
264 - internal const int INSTALLLOGMODE_INFO = 0x00010;
265 - internal const int INSTALLLOGMODE_FILESINUSE = 0x00020;
266 - internal const int INSTALLLOGMODE_RESOLVESOURCE = 0x00040;
267 - internal const int INSTALLLOGMODE_OUTOFDISKSPACE = 0x00080;
268 - internal const int INSTALLLOGMODE_ACTIONSTART = 0x00100;
269 - internal const int INSTALLLOGMODE_ACTIONDATA = 0x00200;
270 - internal const int INSTALLLOGMODE_PROGRESS = 0x00400;
271 - internal const int INSTALLLOGMODE_COMMONDATA = 0x00800;
272 - internal const int INSTALLLOGMODE_INITIALIZE = 0x01000;
273 - internal const int INSTALLLOGMODE_TERMINATE = 0x02000;
274 - internal const int INSTALLLOGMODE_SHOWDIALOG = 0x04000;
275 - internal const int INSTALLLOGMODE_RMFILESINUSE = 0x02000000;
276 - internal const int INSTALLLOGMODE_INSTALLSTART = 0x04000000;
277 - internal const int INSTALLLOGMODE_INSTALLEND = 0x08000000;
278 -
279 - internal const int MSICONDITIONFALSE = 0; // The table is temporary.
280 - internal const int MSICONDITIONTRUE = 1; // The table is persistent.
281 - internal const int MSICONDITIONNONE = 2; // The table is unknown.
282 - internal const int MSICONDITIONERROR = 3; // An invalid handle or invalid parameter was passed to the function.
283 -
284 - internal const int MSIDBOPENREADONLY = 0;
285 - internal const int MSIDBOPENTRANSACT = 1;
286 - internal const int MSIDBOPENDIRECT = 2;
287 - internal const int MSIDBOPENCREATE = 3;
288 - internal const int MSIDBOPENCREATEDIRECT = 4;
289 - internal const int MSIDBOPENPATCHFILE = 32;
290 -
291 - internal const int MSIMODIFYSEEK = -1; // Refreshes the information in the supplied record without changing the position in the result set and without affecting subsequent fetch operations. The record may then be used for subsequent Update, Delete, and Refresh. All primary key columns of the table must be in the query and the record must have at least as many fields as the query. Seek cannot be used with multi-table queries. This mode cannot be used with a view containing joins. See also the remarks.
292 - internal const int MSIMODIFYREFRESH = 0; // Refreshes the information in the record. Must first call MsiViewFetch with the same record. Fails for a deleted row. Works with read-write and read-only records.
293 - internal const int MSIMODIFYINSERT = 1; // Inserts a record. Fails if a row with the same primary keys exists. Fails with a read-only database. This mode cannot be used with a view containing joins.
294 - internal const int MSIMODIFYUPDATE = 2; // Updates an existing record. Nonprimary keys only. Must first call MsiViewFetch. Fails with a deleted record. Works only with read-write records.
295 - internal const int MSIMODIFYASSIGN = 3; // Writes current data in the cursor to a table row. Updates record if the primary keys match an existing row and inserts if they do not match. Fails with a read-only database. This mode cannot be used with a view containing joins.
296 - internal const int MSIMODIFYREPLACE = 4; // Updates or deletes and inserts a record into a table. Must first call MsiViewFetch with the same record. Updates record if the primary keys are unchanged. Deletes old row and inserts new if primary keys have changed. Fails with a read-only database. This mode cannot be used with a view containing joins.
297 - internal const int MSIMODIFYMERGE = 5; // Inserts or validates a record in a table. Inserts if primary keys do not match any row and validates if there is a match. Fails if the record does not match the data in the table. Fails if there is a record with a duplicate key that is not identical. Works only with read-write records. This mode cannot be used with a view containing joins.
298 - internal const int MSIMODIFYDELETE = 6; // Remove a row from the table. You must first call the MsiViewFetch function with the same record. Fails if the row has been deleted. Works only with read-write records. This mode cannot be used with a view containing joins.
299 - internal const int MSIMODIFYINSERTTEMPORARY = 7; // Inserts a temporary record. The information is not persistent. Fails if a row with the same primary key exists. Works only with read-write records. This mode cannot be used with a view containing joins.
300 - internal const int MSIMODIFYVALIDATE = 8; // Validates a record. Does not validate across joins. You must first call the MsiViewFetch function with the same record. Obtain validation errors with MsiViewGetError. Works with read-write and read-only records. This mode cannot be used with a view containing joins.
301 - internal const int MSIMODIFYVALIDATENEW = 9; // Validate a new record. Does not validate across joins. Checks for duplicate keys. Obtain validation errors by calling MsiViewGetError. Works with read-write and read-only records. This mode cannot be used with a view containing joins.
302 - internal const int MSIMODIFYVALIDATEFIELD = 10; // Validates fields of a fetched or new record. Can validate one or more fields of an incomplete record. Obtain validation errors by calling MsiViewGetError. Works with read-write and read-only records. This mode cannot be used with a view containing joins.
303 - internal const int MSIMODIFYVALIDATEDELETE = 11; // Validates a record that will be deleted later. You must first call MsiViewFetch. Fails if another row refers to the primary keys of this row. Validation does not check for the existence of the primary keys of this row in properties or strings. Does not check if a column is a foreign key to multiple tables. Obtain validation errors by calling MsiViewGetError. Works with read-write and read-only records. This mode cannot be used with a view containing joins.
304 -
305 - internal const uint VTI2 = 2;
306 - internal const uint VTI4 = 3;
307 - internal const uint VTLPWSTR = 30;
308 - internal const uint VTFILETIME = 64;
309 -
310 - internal const int MSICOLINFONAMES = 0; // return column names
311 - internal const int MSICOLINFOTYPES = 1; // return column definitions, datatype code followed by width
312 - }
313 -}
src/WixToolset.Data/Tuples/BBControlTuple.cs
+74 -2
@@ -18,7 +18,16 @@ namespace WixToolset.Data
18 new IntermediateFieldDefinition(nameof(BBControlTupleFields.Width), IntermediateFieldType.Number),
19 new IntermediateFieldDefinition(nameof(BBControlTupleFields.Height), IntermediateFieldType.Number),
20 new IntermediateFieldDefinition(nameof(BBControlTupleFields.Attributes), IntermediateFieldType.Number),
21 + new IntermediateFieldDefinition(nameof(BBControlTupleFields.Enabled), IntermediateFieldType.Bool),
22 + new IntermediateFieldDefinition(nameof(BBControlTupleFields.Indirect), IntermediateFieldType.Bool),
23 + new IntermediateFieldDefinition(nameof(BBControlTupleFields.Integer), IntermediateFieldType.Bool),
24 + new IntermediateFieldDefinition(nameof(BBControlTupleFields.LeftScroll), IntermediateFieldType.Bool),
25 + new IntermediateFieldDefinition(nameof(BBControlTupleFields.RightAligned), IntermediateFieldType.Bool),
26 + new IntermediateFieldDefinition(nameof(BBControlTupleFields.RightToLeft), IntermediateFieldType.Bool),
27 + new IntermediateFieldDefinition(nameof(BBControlTupleFields.Sunken), IntermediateFieldType.Bool),
28 + new IntermediateFieldDefinition(nameof(BBControlTupleFields.Visible), IntermediateFieldType.Bool),
29 new IntermediateFieldDefinition(nameof(BBControlTupleFields.Text), IntermediateFieldType.String),
30 + new IntermediateFieldDefinition(nameof(BBControlTupleFields.SourceFile), IntermediateFieldType.Path),
31 },
32 typeof(BBControlTuple));
33 }
@@ -36,7 +45,16 @@ namespace WixToolset.Data.Tuples
45 Width,
46 Height,
47 Attributes,
48 + Enabled,
49 + Indirect,
50 + Integer,
51 + LeftScroll,
52 + RightAligned,
53 + RightToLeft,
54 + Sunken,
55 + Visible,
56 Text,
57 + SourceFile
58 }
59
60 public class BBControlTuple : IntermediateTuple
@@ -83,7 +101,7 @@ namespace WixToolset.Data.Tuples
101
102 public int Width
103 {
86 - get => (int)this.Fields[(int)BBControlTupleFields.Width]?.Value;
104 + get => (int)this.Fields[(int)BBControlTupleFields.Width].AsNumber();
105 set => this.Set((int)BBControlTupleFields.Width, value);
106 }
107
@@ -95,14 +113,68 @@ namespace WixToolset.Data.Tuples
113
114 public int Attributes
115 {
98 - get => (int)this.Fields[(int)BBControlTupleFields.Attributes]?.Value;
116 + get => this.Fields[(int)BBControlTupleFields.Attributes].AsNumber();
117 set => this.Set((int)BBControlTupleFields.Attributes, value);
118 }
119
120 + public bool Enabled
121 + {
122 + get => this.Fields[(int)BBControlTupleFields.Enabled].AsBool();
123 + set => this.Set((int)BBControlTupleFields.Enabled, value);
124 + }
125 +
126 + public bool Indirect
127 + {
128 + get => this.Fields[(int)BBControlTupleFields.Indirect].AsBool();
129 + set => this.Set((int)BBControlTupleFields.Indirect, value);
130 + }
131 +
132 + public bool Integer
133 + {
134 + get => this.Fields[(int)BBControlTupleFields.Integer].AsBool();
135 + set => this.Set((int)BBControlTupleFields.Integer, value);
136 + }
137 +
138 + public bool LeftScroll
139 + {
140 + get => this.Fields[(int)BBControlTupleFields.LeftScroll].AsBool();
141 + set => this.Set((int)BBControlTupleFields.LeftScroll, value);
142 + }
143 +
144 + public bool RightAligned
145 + {
146 + get => this.Fields[(int)BBControlTupleFields.RightAligned].AsBool();
147 + set => this.Set((int)BBControlTupleFields.RightAligned, value);
148 + }
149 +
150 + public bool RightToLeft
151 + {
152 + get => this.Fields[(int)BBControlTupleFields.RightToLeft].AsBool();
153 + set => this.Set((int)BBControlTupleFields.RightToLeft, value);
154 + }
155 +
156 + public bool Sunken
157 + {
158 + get => this.Fields[(int)BBControlTupleFields.Sunken].AsBool();
159 + set => this.Set((int)BBControlTupleFields.Sunken, value);
160 + }
161 +
162 + public bool Visible
163 + {
164 + get => this.Fields[(int)BBControlTupleFields.Visible].AsBool();
165 + set => this.Set((int)BBControlTupleFields.Visible, value);
166 + }
167 +
168 public string Text
169 {
170 get => (string)this.Fields[(int)BBControlTupleFields.Text]?.Value;
171 set => this.Set((int)BBControlTupleFields.Text, value);
172 }
173 +
174 + public string SourceFile
175 + {
176 + get => (string)this.Fields[(int)BBControlTupleFields.SourceFile]?.Value;
177 + set => this.Set((int)BBControlTupleFields.SourceFile, value);
178 + }
179 }
180 }
\ No newline at end of file
src/WixToolset.Data/Tuples/ClassTuple.cs
+5 -5
@@ -22,7 +22,7 @@ namespace WixToolset.Data
22 new IntermediateFieldDefinition(nameof(ClassTupleFields.DefInprocHandler), IntermediateFieldType.String),
23 new IntermediateFieldDefinition(nameof(ClassTupleFields.Argument), IntermediateFieldType.String),
24 new IntermediateFieldDefinition(nameof(ClassTupleFields.Feature_), IntermediateFieldType.String),
25 - new IntermediateFieldDefinition(nameof(ClassTupleFields.Attributes), IntermediateFieldType.Number),
25 + new IntermediateFieldDefinition(nameof(ClassTupleFields.RelativePath), IntermediateFieldType.Bool),
26 },
27 typeof(ClassTuple));
28 }
@@ -44,7 +44,7 @@ namespace WixToolset.Data.Tuples
44 DefInprocHandler,
45 Argument,
46 Feature_,
47 - Attributes,
47 + RelativePath,
48 }
49
50 public class ClassTuple : IntermediateTuple
@@ -131,10 +131,10 @@ namespace WixToolset.Data.Tuples
131 set => this.Set((int)ClassTupleFields.Feature_, value);
132 }
133
134 - public int Attributes
134 + public bool RelativePath
135 {
136 - get => (int)this.Fields[(int)ClassTupleFields.Attributes]?.Value;
137 - set => this.Set((int)ClassTupleFields.Attributes, value);
136 + get => this.Fields[(int)ClassTupleFields.RelativePath].AsBool();
137 + set => this.Set((int)ClassTupleFields.RelativePath, value);
138 }
139 }
140 }
\ No newline at end of file
src/WixToolset.Data/Tuples/CompLocatorTuple.cs
+3 -11
@@ -10,7 +10,6 @@ namespace WixToolset.Data
10 TupleDefinitionType.CompLocator,
11 new[]
12 {
13 - new IntermediateFieldDefinition(nameof(CompLocatorTupleFields.Signature_), IntermediateFieldType.String),
13 new IntermediateFieldDefinition(nameof(CompLocatorTupleFields.ComponentId), IntermediateFieldType.String),
14 new IntermediateFieldDefinition(nameof(CompLocatorTupleFields.Type), IntermediateFieldType.Number),
15 },
@@ -22,7 +21,6 @@ namespace WixToolset.Data.Tuples
21 {
22 public enum CompLocatorTupleFields
23 {
25 - Signature_,
24 ComponentId,
25 Type,
26 }
@@ -39,22 +37,16 @@ namespace WixToolset.Data.Tuples
37
38 public IntermediateField this[CompLocatorTupleFields index] => this.Fields[(int)index];
39
42 - public string Signature_
43 - {
44 - get => (string)this.Fields[(int)CompLocatorTupleFields.Signature_]?.Value;
45 - set => this.Set((int)CompLocatorTupleFields.Signature_, value);
46 - }
47 -
40 public string ComponentId
41 {
42 get => (string)this.Fields[(int)CompLocatorTupleFields.ComponentId]?.Value;
43 set => this.Set((int)CompLocatorTupleFields.ComponentId, value);
44 }
45
54 - public int Type
46 + public LocatorType Type
47 {
56 - get => (int)this.Fields[(int)CompLocatorTupleFields.Type]?.Value;
57 - set => this.Set((int)CompLocatorTupleFields.Type, value);
48 + get => (LocatorType)this.Fields[(int)CompLocatorTupleFields.Type].AsNumber();
49 + set => this.Set((int)CompLocatorTupleFields.Type, (int)value);
50 }
51 }
52 }
\ No newline at end of file
src/WixToolset.Data/Tuples/ComponentTuple.cs
+76 -5
@@ -13,9 +13,17 @@ namespace WixToolset.Data
13 new IntermediateFieldDefinition(nameof(ComponentTupleFields.Component), IntermediateFieldType.String),
14 new IntermediateFieldDefinition(nameof(ComponentTupleFields.ComponentId), IntermediateFieldType.String),
15 new IntermediateFieldDefinition(nameof(ComponentTupleFields.Directory_), IntermediateFieldType.String),
16 - new IntermediateFieldDefinition(nameof(ComponentTupleFields.Attributes), IntermediateFieldType.Number),
16 + new IntermediateFieldDefinition(nameof(ComponentTupleFields.Location), IntermediateFieldType.Number),
17 + new IntermediateFieldDefinition(nameof(ComponentTupleFields.DisableRegistryReflection), IntermediateFieldType.Bool),
18 + new IntermediateFieldDefinition(nameof(ComponentTupleFields.NeverOverwrite), IntermediateFieldType.Bool),
19 + new IntermediateFieldDefinition(nameof(ComponentTupleFields.Permanent), IntermediateFieldType.Bool),
20 + new IntermediateFieldDefinition(nameof(ComponentTupleFields.SharedDllRefCount), IntermediateFieldType.Bool),
21 + new IntermediateFieldDefinition(nameof(ComponentTupleFields.Transitive), IntermediateFieldType.Bool),
22 + new IntermediateFieldDefinition(nameof(ComponentTupleFields.UninstallWhenSuperseded), IntermediateFieldType.Bool),
23 + new IntermediateFieldDefinition(nameof(ComponentTupleFields.Win64), IntermediateFieldType.Bool),
24 new IntermediateFieldDefinition(nameof(ComponentTupleFields.Condition), IntermediateFieldType.String),
25 new IntermediateFieldDefinition(nameof(ComponentTupleFields.KeyPath), IntermediateFieldType.String),
26 + new IntermediateFieldDefinition(nameof(ComponentTupleFields.KeyPathType), IntermediateFieldType.Number),
27 },
28 typeof(ComponentTuple));
29 }
@@ -28,9 +36,24 @@ namespace WixToolset.Data.Tuples
36 Component,
37 ComponentId,
38 Directory_,
31 - Attributes,
39 + Location,
40 + DisableRegistryReflection,
41 + NeverOverwrite,
42 + Permanent,
43 + SharedDllRefCount,
44 + Transitive,
45 + UninstallWhenSuperseded,
46 + Win64,
47 Condition,
48 KeyPath,
49 + KeyPathType,
50 + }
51 +
52 + public enum ComponentLocation
53 + {
54 + LocalOnly,
55 + SourceOnly,
56 + Either
57 }
58
59 public class ComponentTuple : IntermediateTuple
@@ -63,10 +86,52 @@ namespace WixToolset.Data.Tuples
86 set => this.Set((int)ComponentTupleFields.Directory_, value);
87 }
88
66 - public int Attributes
89 + public ComponentLocation Location
90 + {
91 + get => (ComponentLocation)this.Fields[(int)ComponentTupleFields.Location].AsNumber();
92 + set => this.Set((int)ComponentTupleFields.Location, (int)value);
93 + }
94 +
95 + public bool DisableRegistryReflection
96 + {
97 + get => this.Fields[(int)ComponentTupleFields.DisableRegistryReflection].AsBool();
98 + set => this.Set((int)ComponentTupleFields.DisableRegistryReflection, value);
99 + }
100 +
101 + public bool NeverOverwrite
102 {
68 - get => (int)this.Fields[(int)ComponentTupleFields.Attributes]?.Value;
69 - set => this.Set((int)ComponentTupleFields.Attributes, value);
103 + get => this.Fields[(int)ComponentTupleFields.NeverOverwrite].AsBool();
104 + set => this.Set((int)ComponentTupleFields.NeverOverwrite, value);
105 + }
106 +
107 + public bool Permanent
108 + {
109 + get => this.Fields[(int)ComponentTupleFields.Permanent].AsBool();
110 + set => this.Set((int)ComponentTupleFields.Permanent, value);
111 + }
112 +
113 + public bool SharedDllRefCount
114 + {
115 + get => this.Fields[(int)ComponentTupleFields.SharedDllRefCount].AsBool();
116 + set => this.Set((int)ComponentTupleFields.SharedDllRefCount, value);
117 + }
118 +
119 + public bool Transitive
120 + {
121 + get => this.Fields[(int)ComponentTupleFields.Transitive].AsBool();
122 + set => this.Set((int)ComponentTupleFields.Transitive, value);
123 + }
124 +
125 + public bool UninstallWhenSuperseded
126 + {
127 + get => this.Fields[(int)ComponentTupleFields.UninstallWhenSuperseded].AsBool();
128 + set => this.Set((int)ComponentTupleFields.UninstallWhenSuperseded, value);
129 + }
130 +
131 + public bool Win64
132 + {
133 + get => this.Fields[(int)ComponentTupleFields.Win64].AsBool();
134 + set => this.Set((int)ComponentTupleFields.Win64, value);
135 }
136
137 public string Condition
@@ -80,5 +145,11 @@ namespace WixToolset.Data.Tuples
145 get => (string)this.Fields[(int)ComponentTupleFields.KeyPath]?.Value;
146 set => this.Set((int)ComponentTupleFields.KeyPath, value);
147 }
148 +
149 + public ComponentKeyPathType KeyPathType
150 + {
151 + get => (ComponentKeyPathType)this.Fields[(int)ComponentTupleFields.KeyPathType].AsNumber();
152 + set => this.Set((int)ComponentTupleFields.KeyPathType, (int)value);
153 + }
154 }
155 }
\ No newline at end of file
src/WixToolset.Data/Tuples/ControlTuple.cs
+172 -1
@@ -18,10 +18,20 @@ namespace WixToolset.Data
18 new IntermediateFieldDefinition(nameof(ControlTupleFields.Width), IntermediateFieldType.Number),
19 new IntermediateFieldDefinition(nameof(ControlTupleFields.Height), IntermediateFieldType.Number),
20 new IntermediateFieldDefinition(nameof(ControlTupleFields.Attributes), IntermediateFieldType.Number),
21 + new IntermediateFieldDefinition(nameof(ControlTupleFields.Enabled), IntermediateFieldType.Bool),
22 + new IntermediateFieldDefinition(nameof(ControlTupleFields.Indirect), IntermediateFieldType.Bool),
23 + new IntermediateFieldDefinition(nameof(ControlTupleFields.Integer), IntermediateFieldType.Bool),
24 + new IntermediateFieldDefinition(nameof(ControlTupleFields.LeftScroll), IntermediateFieldType.Bool),
25 + new IntermediateFieldDefinition(nameof(ControlTupleFields.RightAligned), IntermediateFieldType.Bool),
26 + new IntermediateFieldDefinition(nameof(ControlTupleFields.RightToLeft), IntermediateFieldType.Bool),
27 + new IntermediateFieldDefinition(nameof(ControlTupleFields.Sunken), IntermediateFieldType.Bool),
28 + new IntermediateFieldDefinition(nameof(ControlTupleFields.Visible), IntermediateFieldType.Bool),
29 new IntermediateFieldDefinition(nameof(ControlTupleFields.Property), IntermediateFieldType.String),
30 new IntermediateFieldDefinition(nameof(ControlTupleFields.Text), IntermediateFieldType.String),
31 new IntermediateFieldDefinition(nameof(ControlTupleFields.Control_Next), IntermediateFieldType.String),
32 new IntermediateFieldDefinition(nameof(ControlTupleFields.Help), IntermediateFieldType.String),
33 + new IntermediateFieldDefinition(nameof(ControlTupleFields.TrackDiskSpace), IntermediateFieldType.Bool),
34 + new IntermediateFieldDefinition(nameof(ControlTupleFields.SourceFile), IntermediateFieldType.Path),
35 },
36 typeof(ControlTuple));
37 }
@@ -39,10 +49,20 @@ namespace WixToolset.Data.Tuples
49 Width,
50 Height,
51 Attributes,
52 + Enabled,
53 + Indirect,
54 + Integer,
55 + LeftScroll,
56 + RightAligned,
57 + RightToLeft,
58 + Sunken,
59 + Visible,
60 Property,
61 Text,
62 Control_Next,
63 Help,
64 + TrackDiskSpace,
65 + SourceFile,
66 }
67
68 public class ControlTuple : IntermediateTuple
@@ -101,10 +121,149 @@ namespace WixToolset.Data.Tuples
121
122 public int Attributes
123 {
104 - get => (int)this.Fields[(int)ControlTupleFields.Attributes]?.Value;
124 + get => this.Fields[(int)ControlTupleFields.Attributes].AsNumber();
125 set => this.Set((int)ControlTupleFields.Attributes, value);
126 }
127
128 + public bool Enabled
129 + {
130 + get => this.Fields[(int)ControlTupleFields.Enabled].AsBool();
131 + set => this.Set((int)ControlTupleFields.Enabled, value);
132 + }
133 +
134 + public bool Indirect
135 + {
136 + get => this.Fields[(int)ControlTupleFields.Indirect].AsBool();
137 + set => this.Set((int)ControlTupleFields.Indirect, value);
138 + }
139 +
140 + public bool Integer
141 + {
142 + get => this.Fields[(int)ControlTupleFields.Integer].AsBool();
143 + set => this.Set((int)ControlTupleFields.Integer, value);
144 + }
145 + /*
146 + /// <summary>PictureButton control</summary>
147 + public bool Bitmap
148 + {
149 + get => this.Fields[(int)ControlTupleFields.Bitmap].AsBool();
150 + set => this.Set((int)ControlTupleFields.Bitmap, value);
151 + }
152 +
153 + /// <summary>RadioButton control</summary>
154 + public bool Border
155 + {
156 + get => this.Fields[(int)ControlTupleFields.Border].AsBool();
157 + set => this.Set((int)ControlTupleFields.Border, value);
158 + }
159 +
160 + /// <summary>ListBox and ComboBox control</summary>
161 + public bool ComboList
162 + {
163 + get => this.Fields[(int)ControlTupleFields.ComboList].AsBool();
164 + set => this.Set((int)ControlTupleFields.ComboList, value);
165 + }
166 +
167 + /// <summary>PushButton control</summary>
168 + public bool ElevationShield
169 + {
170 + get => this.Fields[(int)ControlTupleFields.ElevationShield].AsBool();
171 + set => this.Set((int)ControlTupleFields.ElevationShield, value);
172 + }
173 +
174 + /// <summary>PictureButton control</summary>
175 + public bool FixedSize
176 + {
177 + get => this.Fields[(int)ControlTupleFields.FixedSize].AsBool();
178 + set => this.Set((int)ControlTupleFields.FixedSize, value);
179 + }
180 +
181 + /// <summary>PictureButton control</summary>
182 + public bool Icon
183 + {
184 + get => this.Fields[(int)ControlTupleFields.Icon].AsBool();
185 + set => this.Set((int)ControlTupleFields.Icon, value);
186 + }
187 +
188 + /// <summary>PictureButton control</summary>
189 + public bool Icon16
190 + {
191 + get => this.Fields[(int)ControlTupleFields.Icon16].AsBool();
192 + set => this.Set((int)ControlTupleFields.Icon16, value);
193 + }
194 +
195 + /// <summary>PictureButton control</summary>
196 + public bool Icon32
197 + {
198 + get => this.Fields[(int)ControlTupleFields.Icon32].AsBool();
199 + set => this.Set((int)ControlTupleFields.Icon32, value);
200 + }
201 +
202 + /// <summary>PictureButton control</summary>
203 + public bool Icon48
204 + {
205 + get => this.Fields[(int)ControlTupleFields.Icon48].AsBool();
206 + set => this.Set((int)ControlTupleFields.Icon48, value);
207 + }
208 + */
209 + public bool LeftScroll
210 + {
211 + get => this.Fields[(int)ControlTupleFields.LeftScroll].AsBool();
212 + set => this.Set((int)ControlTupleFields.LeftScroll, value);
213 + }
214 + /*
215 + /// <summary>PictureButton control</summary>
216 + public bool PushLike
217 + {
218 + get => this.Fields[(int)ControlTupleFields.PushLike].AsBool();
219 + set => this.Set((int)ControlTupleFields.PushLike, value);
220 + }
221 +
222 + /// <summary>Edit control</summary>
223 + public bool Mulitline
224 + {
225 + get => this.Fields[(int)ControlTupleFields.Mulitline].AsBool();
226 + set => this.Set((int)ControlTupleFields.Mulitline, value);
227 + }
228 + */
229 + public bool RightAligned
230 + {
231 + get => this.Fields[(int)ControlTupleFields.RightAligned].AsBool();
232 + set => this.Set((int)ControlTupleFields.RightAligned, value);
233 + }
234 +
235 + public bool RightToLeft
236 + {
237 + get => this.Fields[(int)ControlTupleFields.RightToLeft].AsBool();
238 + set => this.Set((int)ControlTupleFields.RightToLeft, value);
239 + }
240 + /*
241 + /// <summary>VolumeCostList control</summary>
242 + public bool ShowRollbackCost
243 + {
244 + get => this.Fields[(int)ControlTupleFields.ShowRollbackCost].AsBool();
245 + set => this.Set((int)ControlTupleFields.ShowRollbackCost, value);
246 + }
247 +
248 + /// <summary>ListBox and ComboBox control</summary>
249 + public bool Sorted
250 + {
251 + get => this.Fields[(int)ControlTupleFields.Sorted].AsBool();
252 + set => this.Set((int)ControlTupleFields.Sorted, value);
253 + }
254 + */
255 + public bool Sunken
256 + {
257 + get => this.Fields[(int)ControlTupleFields.Sunken].AsBool();
258 + set => this.Set((int)ControlTupleFields.Sunken, value);
259 + }
260 +
261 + public bool Visible
262 + {
263 + get => this.Fields[(int)ControlTupleFields.Visible].AsBool();
264 + set => this.Set((int)ControlTupleFields.Visible, value);
265 + }
266 +
267 public string Property
268 {
269 get => (string)this.Fields[(int)ControlTupleFields.Property]?.Value;
@@ -128,5 +287,17 @@ namespace WixToolset.Data.Tuples
287 get => (string)this.Fields[(int)ControlTupleFields.Help]?.Value;
288 set => this.Set((int)ControlTupleFields.Help, value);
289 }
290 +
291 + public bool TrackDiskSpace
292 + {
293 + get => this.Fields[(int)ControlTupleFields.TrackDiskSpace].AsBool();
294 + set => this.Set((int)ControlTupleFields.TrackDiskSpace, value);
295 + }
296 +
297 + public string SourceFile
298 + {
299 + get => (string)this.Fields[(int)ControlTupleFields.SourceFile]?.Value;
300 + set => this.Set((int)ControlTupleFields.SourceFile, value);
301 + }
302 }
303 }
\ No newline at end of file
src/WixToolset.Data/Tuples/CustomActionTuple.cs
+102 -18
@@ -10,11 +10,18 @@ namespace WixToolset.Data
10 TupleDefinitionType.CustomAction,
11 new[]
12 {
13 - new IntermediateFieldDefinition(nameof(CustomActionTupleFields.Action), IntermediateFieldType.String),
14 - new IntermediateFieldDefinition(nameof(CustomActionTupleFields.Type), IntermediateFieldType.Number),
13 + new IntermediateFieldDefinition(nameof(CustomActionTupleFields.ExecutionType), IntermediateFieldType.Number),
14 new IntermediateFieldDefinition(nameof(CustomActionTupleFields.Source), IntermediateFieldType.String),
15 + new IntermediateFieldDefinition(nameof(CustomActionTupleFields.SourceType), IntermediateFieldType.Number),
16 new IntermediateFieldDefinition(nameof(CustomActionTupleFields.Target), IntermediateFieldType.String),
17 - new IntermediateFieldDefinition(nameof(CustomActionTupleFields.ExtendedType), IntermediateFieldType.Number),
17 + new IntermediateFieldDefinition(nameof(CustomActionTupleFields.TargetType), IntermediateFieldType.Number),
18 + new IntermediateFieldDefinition(nameof(CustomActionTupleFields.Async), IntermediateFieldType.Bool),
19 + new IntermediateFieldDefinition(nameof(CustomActionTupleFields.Hidden), IntermediateFieldType.Bool),
20 + new IntermediateFieldDefinition(nameof(CustomActionTupleFields.IgnoreResult), IntermediateFieldType.Bool),
21 + new IntermediateFieldDefinition(nameof(CustomActionTupleFields.Impersonate), IntermediateFieldType.Bool),
22 + new IntermediateFieldDefinition(nameof(CustomActionTupleFields.PatchUninstall), IntermediateFieldType.Bool),
23 + new IntermediateFieldDefinition(nameof(CustomActionTupleFields.TSAware), IntermediateFieldType.Bool),
24 + new IntermediateFieldDefinition(nameof(CustomActionTupleFields.Win64), IntermediateFieldType.Bool),
25 },
26 typeof(CustomActionTuple));
27 }
@@ -24,11 +31,46 @@ namespace WixToolset.Data.Tuples
31 {
32 public enum CustomActionTupleFields
33 {
27 - Action,
28 - Type,
34 + ExecutionType,
35 Source,
36 + SourceType,
37 Target,
31 - ExtendedType,
38 + TargetType,
39 + Async,
40 + Hidden,
41 + IgnoreResult,
42 + Impersonate,
43 + PatchUninstall,
44 + TSAware,
45 + Win64,
46 + }
47 +
48 + public enum CustomActionExecutionType
49 + {
50 + Immediate,
51 + FirstSequence = 256,
52 + OncePerProcess = 512,
53 + ClientRepeat = 768,
54 + Deferred = 1024,
55 + Rollback = 1280,
56 + Commit = 1536,
57 + }
58 +
59 + public enum CustomActionSourceType
60 + {
61 + Binary,
62 + File = 0x10,
63 + Directory = 0x20,
64 + Property = 0x30,
65 + }
66 +
67 + public enum CustomActionTargetType
68 + {
69 + Dll = 1,
70 + Exe = 2,
71 + TextData = 3,
72 + JScript = 5,
73 + VBScript = 6,
74 }
75
76 public class CustomActionTuple : IntermediateTuple
@@ -43,16 +85,10 @@ namespace WixToolset.Data.Tuples
85
86 public IntermediateField this[CustomActionTupleFields index] => this.Fields[(int)index];
87
46 - public string Action
88 + public CustomActionExecutionType ExecutionType
89 {
48 - get => (string)this.Fields[(int)CustomActionTupleFields.Action]?.Value;
49 - set => this.Set((int)CustomActionTupleFields.Action, value);
50 - }
51 -
52 - public int Type
53 - {
54 - get => (int)this.Fields[(int)CustomActionTupleFields.Type]?.Value;
55 - set => this.Set((int)CustomActionTupleFields.Type, value);
90 + get => (CustomActionExecutionType)this.Fields[(int)CustomActionTupleFields.ExecutionType].AsNumber();
91 + set => this.Set((int)CustomActionTupleFields.ExecutionType, (int)value);
92 }
93
94 public string Source
@@ -61,16 +97,64 @@ namespace WixToolset.Data.Tuples
97 set => this.Set((int)CustomActionTupleFields.Source, value);
98 }
99
100 + public CustomActionSourceType SourceType
101 + {
102 + get => (CustomActionSourceType)this.Fields[(int)CustomActionTupleFields.SourceType].AsNumber();
103 + set => this.Set((int)CustomActionTupleFields.SourceType, (int)value);
104 + }
105 +
106 public string Target
107 {
108 get => (string)this.Fields[(int)CustomActionTupleFields.Target]?.Value;
109 set => this.Set((int)CustomActionTupleFields.Target, value);
110 }
111
70 - public int ExtendedType
112 + public CustomActionTargetType TargetType
113 + {
114 + get => (CustomActionTargetType)this.Fields[(int)CustomActionTupleFields.TargetType].AsNumber();
115 + set => this.Set((int)CustomActionTupleFields.TargetType, (int)value);
116 + }
117 +
118 + public bool Async
119 + {
120 + get => this.Fields[(int)CustomActionTupleFields.Async].AsBool();
121 + set => this.Set((int)CustomActionTupleFields.Async, value);
122 + }
123 +
124 + public bool Hidden
125 + {
126 + get => this.Fields[(int)CustomActionTupleFields.Hidden].AsBool();
127 + set => this.Set((int)CustomActionTupleFields.Hidden, value);
128 + }
129 +
130 + public bool IgnoreResult
131 + {
132 + get => this.Fields[(int)CustomActionTupleFields.IgnoreResult].AsBool();
133 + set => this.Set((int)CustomActionTupleFields.IgnoreResult, value);
134 + }
135 +
136 + public bool Impersonate
137 + {
138 + get => this.Fields[(int)CustomActionTupleFields.Impersonate].AsBool();
139 + set => this.Set((int)CustomActionTupleFields.Impersonate, value);
140 + }
141 +
142 + public bool PatchUninstall
143 + {
144 + get => this.Fields[(int)CustomActionTupleFields.PatchUninstall].AsBool();
145 + set => this.Set((int)CustomActionTupleFields.PatchUninstall, value);
146 + }
147 +
148 + public bool TSAware
149 + {
150 + get => this.Fields[(int)CustomActionTupleFields.TSAware].AsBool();
151 + set => this.Set((int)CustomActionTupleFields.TSAware, value);
152 + }
153 +
154 + public bool Win64
155 {
72 - get => (int)this.Fields[(int)CustomActionTupleFields.ExtendedType]?.Value;
73 - set => this.Set((int)CustomActionTupleFields.ExtendedType, value);
156 + get => this.Fields[(int)CustomActionTupleFields.Win64].AsBool();
157 + set => this.Set((int)CustomActionTupleFields.Win64, value);
158 }
159 }
160 }
\ No newline at end of file
src/WixToolset.Data/Tuples/DialogTuple.cs
+85 -13
@@ -10,12 +10,21 @@ namespace WixToolset.Data
10 TupleDefinitionType.Dialog,
11 new[]
12 {
13 - new IntermediateFieldDefinition(nameof(DialogTupleFields.Dialog), IntermediateFieldType.String),
13 new IntermediateFieldDefinition(nameof(DialogTupleFields.HCentering), IntermediateFieldType.Number),
14 new IntermediateFieldDefinition(nameof(DialogTupleFields.VCentering), IntermediateFieldType.Number),
15 new IntermediateFieldDefinition(nameof(DialogTupleFields.Width), IntermediateFieldType.Number),
16 new IntermediateFieldDefinition(nameof(DialogTupleFields.Height), IntermediateFieldType.Number),
18 - new IntermediateFieldDefinition(nameof(DialogTupleFields.Attributes), IntermediateFieldType.Number),
17 + new IntermediateFieldDefinition(nameof(DialogTupleFields.CustomPalette), IntermediateFieldType.Bool),
18 + new IntermediateFieldDefinition(nameof(DialogTupleFields.ErrorDialog), IntermediateFieldType.Bool),
19 + new IntermediateFieldDefinition(nameof(DialogTupleFields.Visible), IntermediateFieldType.Bool),
20 + new IntermediateFieldDefinition(nameof(DialogTupleFields.Modal), IntermediateFieldType.Bool),
21 + new IntermediateFieldDefinition(nameof(DialogTupleFields.KeepModeless), IntermediateFieldType.Bool),
22 + new IntermediateFieldDefinition(nameof(DialogTupleFields.LeftScroll), IntermediateFieldType.Bool),
23 + new IntermediateFieldDefinition(nameof(DialogTupleFields.Minimize), IntermediateFieldType.Bool),
24 + new IntermediateFieldDefinition(nameof(DialogTupleFields.RightAligned), IntermediateFieldType.Bool),
25 + new IntermediateFieldDefinition(nameof(DialogTupleFields.RightToLeft), IntermediateFieldType.Bool),
26 + new IntermediateFieldDefinition(nameof(DialogTupleFields.SystemModal), IntermediateFieldType.Bool),
27 + new IntermediateFieldDefinition(nameof(DialogTupleFields.TrackDiskSpace), IntermediateFieldType.Bool),
28 new IntermediateFieldDefinition(nameof(DialogTupleFields.Title), IntermediateFieldType.String),
29 new IntermediateFieldDefinition(nameof(DialogTupleFields.Control_First), IntermediateFieldType.String),
30 new IntermediateFieldDefinition(nameof(DialogTupleFields.Control_Default), IntermediateFieldType.String),
@@ -29,12 +38,21 @@ namespace WixToolset.Data.Tuples
38 {
39 public enum DialogTupleFields
40 {
32 - Dialog,
41 HCentering,
42 VCentering,
43 Width,
44 Height,
37 - Attributes,
45 + CustomPalette,
46 + ErrorDialog,
47 + Visible,
48 + Modal,
49 + KeepModeless,
50 + LeftScroll,
51 + Minimize,
52 + RightAligned,
53 + RightToLeft,
54 + SystemModal,
55 + TrackDiskSpace,
56 Title,
57 Control_First,
58 Control_Default,
@@ -53,12 +71,6 @@ namespace WixToolset.Data.Tuples
71
72 public IntermediateField this[DialogTupleFields index] => this.Fields[(int)index];
73
56 - public string Dialog
57 - {
58 - get => (string)this.Fields[(int)DialogTupleFields.Dialog]?.Value;
59 - set => this.Set((int)DialogTupleFields.Dialog, value);
60 - }
61 -
74 public int HCentering
75 {
76 get => (int)this.Fields[(int)DialogTupleFields.HCentering]?.Value;
@@ -83,10 +95,70 @@ namespace WixToolset.Data.Tuples
95 set => this.Set((int)DialogTupleFields.Height, value);
96 }
97
86 - public int Attributes
98 + public bool CustomPalette
99 + {
100 + get => this.Fields[(int)DialogTupleFields.CustomPalette].AsBool();
101 + set => this.Set((int)DialogTupleFields.CustomPalette, value);
102 + }
103 +
104 + public bool ErrorDialog
105 + {
106 + get => this.Fields[(int)DialogTupleFields.ErrorDialog].AsBool();
107 + set => this.Set((int)DialogTupleFields.ErrorDialog, value);
108 + }
109 +
110 + public bool Visible
111 + {
112 + get => this.Fields[(int)DialogTupleFields.Visible].AsBool();
113 + set => this.Set((int)DialogTupleFields.Visible, value);
114 + }
115 +
116 + public bool Modal
117 + {
118 + get => this.Fields[(int)DialogTupleFields.Modal].AsBool();
119 + set => this.Set((int)DialogTupleFields.Modal, value);
120 + }
121 +
122 + public bool KeepModeless
123 + {
124 + get => this.Fields[(int)DialogTupleFields.KeepModeless].AsBool();
125 + set => this.Set((int)DialogTupleFields.KeepModeless, value);
126 + }
127 +
128 + public bool LeftScroll
129 + {
130 + get => this.Fields[(int)DialogTupleFields.LeftScroll].AsBool();
131 + set => this.Set((int)DialogTupleFields.LeftScroll, value);
132 + }
133 +
134 + public bool Minimize
135 + {
136 + get => this.Fields[(int)DialogTupleFields.Minimize].AsBool();
137 + set => this.Set((int)DialogTupleFields.Minimize, value);
138 + }
139 +
140 + public bool RightAligned
141 + {
142 + get => this.Fields[(int)DialogTupleFields.RightAligned].AsBool();
143 + set => this.Set((int)DialogTupleFields.RightAligned, value);
144 + }
145 +
146 + public bool RightToLeft
147 + {
148 + get => this.Fields[(int)DialogTupleFields.RightToLeft].AsBool();
149 + set => this.Set((int)DialogTupleFields.RightToLeft, value);
150 + }
151 +
152 + public bool TrackDiskSpace
153 + {
154 + get => this.Fields[(int)DialogTupleFields.TrackDiskSpace].AsBool();
155 + set => this.Set((int)DialogTupleFields.TrackDiskSpace, value);
156 + }
157 +
158 + public bool SystemModal
159 {
88 - get => (int)this.Fields[(int)DialogTupleFields.Attributes]?.Value;
89 - set => this.Set((int)DialogTupleFields.Attributes, value);
160 + get => this.Fields[(int)DialogTupleFields.SystemModal].AsBool();
161 + set => this.Set((int)DialogTupleFields.SystemModal, value);
162 }
163
164 public string Title
src/WixToolset.Data/Tuples/EnvironmentTuple.cs
+54 -8
@@ -10,9 +10,13 @@ namespace WixToolset.Data
10 TupleDefinitionType.Environment,
11 new[]
12 {
13 - new IntermediateFieldDefinition(nameof(EnvironmentTupleFields.Environment), IntermediateFieldType.String),
13 new IntermediateFieldDefinition(nameof(EnvironmentTupleFields.Name), IntermediateFieldType.String),
14 new IntermediateFieldDefinition(nameof(EnvironmentTupleFields.Value), IntermediateFieldType.String),
15 + new IntermediateFieldDefinition(nameof(EnvironmentTupleFields.Separator), IntermediateFieldType.String),
16 + new IntermediateFieldDefinition(nameof(EnvironmentTupleFields.Action), IntermediateFieldType.Number),
17 + new IntermediateFieldDefinition(nameof(EnvironmentTupleFields.Part), IntermediateFieldType.Number),
18 + new IntermediateFieldDefinition(nameof(EnvironmentTupleFields.Permanent), IntermediateFieldType.Bool),
19 + new IntermediateFieldDefinition(nameof(EnvironmentTupleFields.System), IntermediateFieldType.Bool),
20 new IntermediateFieldDefinition(nameof(EnvironmentTupleFields.Component_), IntermediateFieldType.String),
21 },
22 typeof(EnvironmentTuple));
@@ -23,12 +27,30 @@ namespace WixToolset.Data.Tuples
27 {
28 public enum EnvironmentTupleFields
29 {
26 - Environment,
30 Name,
31 Value,
32 + Separator,
33 + Action,
34 + Part,
35 + Permanent,
36 + System,
37 Component_,
38 }
39
40 + public enum EnvironmentActionType
41 + {
42 + Set,
43 + Create,
44 + Remove
45 + }
46 +
47 + public enum EnvironmentPartType
48 + {
49 + All,
50 + First,
51 + Last
52 + }
53 +
54 public class EnvironmentTuple : IntermediateTuple
55 {
56 public EnvironmentTuple() : base(TupleDefinitions.Environment, null, null)
@@ -41,12 +63,6 @@ namespace WixToolset.Data.Tuples
63
64 public IntermediateField this[EnvironmentTupleFields index] => this.Fields[(int)index];
65
44 - public string Environment
45 - {
46 - get => (string)this.Fields[(int)EnvironmentTupleFields.Environment]?.Value;
47 - set => this.Set((int)EnvironmentTupleFields.Environment, value);
48 - }
49 -
66 public string Name
67 {
68 get => (string)this.Fields[(int)EnvironmentTupleFields.Name]?.Value;
@@ -59,6 +75,36 @@ namespace WixToolset.Data.Tuples
75 set => this.Set((int)EnvironmentTupleFields.Value, value);
76 }
77
78 + public string Separator
79 + {
80 + get => (string)this.Fields[(int)EnvironmentTupleFields.Separator]?.Value;
81 + set => this.Set((int)EnvironmentTupleFields.Separator, value);
82 + }
83 +
84 + public EnvironmentActionType? Action
85 + {
86 + get => (EnvironmentActionType?)this.Fields[(int)EnvironmentTupleFields.Action].AsNullableNumber();
87 + set => this.Set((int)EnvironmentTupleFields.Action, (int)value);
88 + }
89 +
90 + public EnvironmentPartType? Part
91 + {
92 + get => (EnvironmentPartType?)this.Fields[(int)EnvironmentTupleFields.Part].AsNullableNumber();
93 + set => this.Set((int)EnvironmentTupleFields.Part, (int)value);
94 + }
95 +
96 + public bool Permanent
97 + {
98 + get => this.Fields[(int)EnvironmentTupleFields.Permanent].AsBool();
99 + set => this.Set((int)EnvironmentTupleFields.Permanent, value);
100 + }
101 +
102 + public bool System
103 + {
104 + get => this.Fields[(int)EnvironmentTupleFields.System].AsBool();
105 + set => this.Set((int)EnvironmentTupleFields.System, value);
106 + }
107 +
108 public string Component_
109 {
110 get => (string)this.Fields[(int)EnvironmentTupleFields.Component_]?.Value;
src/WixToolset.Data/Tuples/FeatureTuple.cs
+42 -13
@@ -10,14 +10,16 @@ namespace WixToolset.Data
10 TupleDefinitionType.Feature,
11 new[]
12 {
13 - new IntermediateFieldDefinition(nameof(FeatureTupleFields.Feature), IntermediateFieldType.String),
13 new IntermediateFieldDefinition(nameof(FeatureTupleFields.Feature_Parent), IntermediateFieldType.String),
14 new IntermediateFieldDefinition(nameof(FeatureTupleFields.Title), IntermediateFieldType.String),
15 new IntermediateFieldDefinition(nameof(FeatureTupleFields.Description), IntermediateFieldType.String),
16 new IntermediateFieldDefinition(nameof(FeatureTupleFields.Display), IntermediateFieldType.Number),
17 new IntermediateFieldDefinition(nameof(FeatureTupleFields.Level), IntermediateFieldType.Number),
18 new IntermediateFieldDefinition(nameof(FeatureTupleFields.Directory_), IntermediateFieldType.String),
20 - new IntermediateFieldDefinition(nameof(FeatureTupleFields.Attributes), IntermediateFieldType.Number),
19 + new IntermediateFieldDefinition(nameof(FeatureTupleFields.DisallowAbsent), IntermediateFieldType.Bool),
20 + new IntermediateFieldDefinition(nameof(FeatureTupleFields.DisallowAdvertise), IntermediateFieldType.Bool),
21 + new IntermediateFieldDefinition(nameof(FeatureTupleFields.InstallDefault), IntermediateFieldType.Number),
22 + new IntermediateFieldDefinition(nameof(FeatureTupleFields.TypicalDefault), IntermediateFieldType.Number),
23 },
24 typeof(FeatureTuple));
25 }
@@ -27,14 +29,29 @@ namespace WixToolset.Data.Tuples
29 {
30 public enum FeatureTupleFields
31 {
30 - Feature,
32 Feature_Parent,
33 Title,
34 Description,
35 Display,
36 Level,
37 Directory_,
37 - Attributes,
38 + DisallowAbsent,
39 + DisallowAdvertise,
40 + InstallDefault,
41 + TypicalDefault,
42 + }
43 +
44 + public enum FeatureInstallDefault
45 + {
46 + Local,
47 + Source,
48 + FollowParent,
49 + }
50 +
51 + public enum FeatureTypicalDefault
52 + {
53 + Install,
54 + Advertise
55 }
56
57 public class FeatureTuple : IntermediateTuple
@@ -49,12 +66,6 @@ namespace WixToolset.Data.Tuples
66
67 public IntermediateField this[FeatureTupleFields index] => this.Fields[(int)index];
68
52 - public string Feature
53 - {
54 - get => (string)this.Fields[(int)FeatureTupleFields.Feature]?.Value;
55 - set => this.Set((int)FeatureTupleFields.Feature, value);
56 - }
57 -
69 public string Feature_Parent
70 {
71 get => (string)this.Fields[(int)FeatureTupleFields.Feature_Parent]?.Value;
@@ -91,10 +102,28 @@ namespace WixToolset.Data.Tuples
102 set => this.Set((int)FeatureTupleFields.Directory_, value);
103 }
104
94 - public int Attributes
105 + public bool DisallowAbsent
106 + {
107 + get => this.Fields[(int)FeatureTupleFields.DisallowAbsent].AsBool();
108 + set => this.Set((int)FeatureTupleFields.DisallowAbsent, value);
109 + }
110 +
111 + public bool DisallowAdvertise
112 + {
113 + get => this.Fields[(int)FeatureTupleFields.DisallowAdvertise].AsBool();
114 + set => this.Set((int)FeatureTupleFields.DisallowAdvertise, value);
115 + }
116 +
117 + public FeatureInstallDefault InstallDefault
118 + {
119 + get => (FeatureInstallDefault)this.Fields[(int)FeatureTupleFields.InstallDefault].AsNumber();
120 + set => this.Set((int)FeatureTupleFields.InstallDefault, (int)value);
121 + }
122 +
123 + public FeatureTypicalDefault TypicalDefault
124 {
96 - get => (int)this.Fields[(int)FeatureTupleFields.Attributes]?.Value;
97 - set => this.Set((int)FeatureTupleFields.Attributes, value);
125 + get => (FeatureTypicalDefault)this.Fields[(int)FeatureTupleFields.TypicalDefault].AsNumber();
126 + set => this.Set((int)FeatureTupleFields.TypicalDefault, (int)value);
127 }
128 }
129 }
\ No newline at end of file
src/WixToolset.Data/Tuples/IniFileTuple.cs
+3 -11
@@ -10,7 +10,6 @@ namespace WixToolset.Data
10 TupleDefinitionType.IniFile,
11 new[]
12 {
13 - new IntermediateFieldDefinition(nameof(IniFileTupleFields.IniFile), IntermediateFieldType.String),
13 new IntermediateFieldDefinition(nameof(IniFileTupleFields.FileName), IntermediateFieldType.String),
14 new IntermediateFieldDefinition(nameof(IniFileTupleFields.DirProperty), IntermediateFieldType.String),
15 new IntermediateFieldDefinition(nameof(IniFileTupleFields.Section), IntermediateFieldType.String),
@@ -27,7 +26,6 @@ namespace WixToolset.Data.Tuples
26 {
27 public enum IniFileTupleFields
28 {
30 - IniFile,
29 FileName,
30 DirProperty,
31 Section,
@@ -49,12 +47,6 @@ namespace WixToolset.Data.Tuples
47
48 public IntermediateField this[IniFileTupleFields index] => this.Fields[(int)index];
49
52 - public string IniFile
53 - {
54 - get => (string)this.Fields[(int)IniFileTupleFields.IniFile]?.Value;
55 - set => this.Set((int)IniFileTupleFields.IniFile, value);
56 - }
57 -
50 public string FileName
51 {
52 get => (string)this.Fields[(int)IniFileTupleFields.FileName]?.Value;
@@ -85,10 +77,10 @@ namespace WixToolset.Data.Tuples
77 set => this.Set((int)IniFileTupleFields.Value, value);
78 }
79
88 - public int Action
80 + public InifFileActionType Action
81 {
90 - get => (int)this.Fields[(int)IniFileTupleFields.Action]?.Value;
91 - set => this.Set((int)IniFileTupleFields.Action, value);
82 + get => (InifFileActionType)this.Fields[(int)IniFileTupleFields.Action]?.AsNumber();
83 + set => this.Set((int)IniFileTupleFields.Action, (int)value);
84 }
85
86 public string Component_
src/WixToolset.Data/Tuples/InifFileActionType.cs new
+13
@@ -0,0 +1,13 @@
1 +// Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information.
2 +
3 +namespace WixToolset.Data.Tuples
4 +{
5 + public enum InifFileActionType
6 + {
7 + AddLine,
8 + AddTag,
9 + CreateLine,
10 + RemoveLine,
11 + RemoveTag,
12 + }
13 +}
\ No newline at end of file
src/WixToolset.Data/Tuples/LocatorType.cs new
+12
@@ -0,0 +1,12 @@
1 +// Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information.
2 +
3 +namespace WixToolset.Data.Tuples
4 +{
5 + public enum LocatorType
6 + {
7 + Directory,
8 + Filename,
9 + RawValue,
10 + x64 = 16,
11 + }
12 +}
src/WixToolset.Data/Tuples/ModuleConfigurationTuple.cs
+13 -13
@@ -10,12 +10,12 @@ namespace WixToolset.Data
10 TupleDefinitionType.ModuleConfiguration,
11 new[]
12 {
13 - new IntermediateFieldDefinition(nameof(ModuleConfigurationTupleFields.Name), IntermediateFieldType.String),
13 new IntermediateFieldDefinition(nameof(ModuleConfigurationTupleFields.Format), IntermediateFieldType.Number),
14 new IntermediateFieldDefinition(nameof(ModuleConfigurationTupleFields.Type), IntermediateFieldType.String),
15 new IntermediateFieldDefinition(nameof(ModuleConfigurationTupleFields.ContextData), IntermediateFieldType.String),
16 new IntermediateFieldDefinition(nameof(ModuleConfigurationTupleFields.DefaultValue), IntermediateFieldType.String),
18 - new IntermediateFieldDefinition(nameof(ModuleConfigurationTupleFields.Attributes), IntermediateFieldType.Number),
17 + new IntermediateFieldDefinition(nameof(ModuleConfigurationTupleFields.KeyNoOrphan), IntermediateFieldType.Bool),
18 + new IntermediateFieldDefinition(nameof(ModuleConfigurationTupleFields.NonNullable), IntermediateFieldType.Bool),
19 new IntermediateFieldDefinition(nameof(ModuleConfigurationTupleFields.DisplayName), IntermediateFieldType.String),
20 new IntermediateFieldDefinition(nameof(ModuleConfigurationTupleFields.Description), IntermediateFieldType.String),
21 new IntermediateFieldDefinition(nameof(ModuleConfigurationTupleFields.HelpLocation), IntermediateFieldType.String),
@@ -29,12 +29,12 @@ namespace WixToolset.Data.Tuples
29 {
30 public enum ModuleConfigurationTupleFields
31 {
32 - Name,
32 Format,
33 Type,
34 ContextData,
35 DefaultValue,
37 - Attributes,
36 + KeyNoOrphan,
37 + NonNullable,
38 DisplayName,
39 Description,
40 HelpLocation,
@@ -53,12 +53,6 @@ namespace WixToolset.Data.Tuples
53
54 public IntermediateField this[ModuleConfigurationTupleFields index] => this.Fields[(int)index];
55
56 - public string Name
57 - {
58 - get => (string)this.Fields[(int)ModuleConfigurationTupleFields.Name]?.Value;
59 - set => this.Set((int)ModuleConfigurationTupleFields.Name, value);
60 - }
61 -
56 public int Format
57 {
58 get => (int)this.Fields[(int)ModuleConfigurationTupleFields.Format]?.Value;
@@ -83,10 +77,16 @@ namespace WixToolset.Data.Tuples
77 set => this.Set((int)ModuleConfigurationTupleFields.DefaultValue, value);
78 }
79
86 - public int Attributes
80 + public bool KeyNoOrphan
81 + {
82 + get => this.Fields[(int)ModuleConfigurationTupleFields.KeyNoOrphan].AsBool();
83 + set => this.Set((int)ModuleConfigurationTupleFields.KeyNoOrphan, value);
84 + }
85 +
86 + public bool NonNullable
87 {
88 - get => (int)this.Fields[(int)ModuleConfigurationTupleFields.Attributes]?.Value;
89 - set => this.Set((int)ModuleConfigurationTupleFields.Attributes, value);
88 + get => this.Fields[(int)ModuleConfigurationTupleFields.NonNullable].AsBool();
89 + set => this.Set((int)ModuleConfigurationTupleFields.NonNullable, value);
90 }
91
92 public string DisplayName
src/WixToolset.Data/Tuples/MsiEmbeddedUITuple.cs
+19 -19
@@ -10,11 +10,11 @@ namespace WixToolset.Data
10 TupleDefinitionType.MsiEmbeddedUI,
11 new[]
12 {
13 - new IntermediateFieldDefinition(nameof(MsiEmbeddedUITupleFields.MsiEmbeddedUI), IntermediateFieldType.String),
13 new IntermediateFieldDefinition(nameof(MsiEmbeddedUITupleFields.FileName), IntermediateFieldType.String),
15 - new IntermediateFieldDefinition(nameof(MsiEmbeddedUITupleFields.Attributes), IntermediateFieldType.Number),
14 + new IntermediateFieldDefinition(nameof(MsiEmbeddedUITupleFields.EntryPoint), IntermediateFieldType.Bool),
15 + new IntermediateFieldDefinition(nameof(MsiEmbeddedUITupleFields.SupportsBasicUI), IntermediateFieldType.Bool),
16 new IntermediateFieldDefinition(nameof(MsiEmbeddedUITupleFields.MessageFilter), IntermediateFieldType.Number),
17 - new IntermediateFieldDefinition(nameof(MsiEmbeddedUITupleFields.Data), IntermediateFieldType.Path),
17 + new IntermediateFieldDefinition(nameof(MsiEmbeddedUITupleFields.Source), IntermediateFieldType.Path),
18 },
19 typeof(MsiEmbeddedUITuple));
20 }
@@ -24,11 +24,11 @@ namespace WixToolset.Data.Tuples
24 {
25 public enum MsiEmbeddedUITupleFields
26 {
27 - MsiEmbeddedUI,
27 FileName,
29 - Attributes,
28 + EntryPoint,
29 + SupportsBasicUI,
30 MessageFilter,
31 - Data,
31 + Source,
32 }
33
34 public class MsiEmbeddedUITuple : IntermediateTuple
@@ -43,22 +43,22 @@ namespace WixToolset.Data.Tuples
43
44 public IntermediateField this[MsiEmbeddedUITupleFields index] => this.Fields[(int)index];
45
46 - public string MsiEmbeddedUI
47 - {
48 - get => (string)this.Fields[(int)MsiEmbeddedUITupleFields.MsiEmbeddedUI]?.Value;
49 - set => this.Set((int)MsiEmbeddedUITupleFields.MsiEmbeddedUI, value);
50 - }
51 -
46 public string FileName
47 {
48 get => (string)this.Fields[(int)MsiEmbeddedUITupleFields.FileName]?.Value;
49 set => this.Set((int)MsiEmbeddedUITupleFields.FileName, value);
50 }
51
58 - public int Attributes
52 + public bool EntryPoint
53 {
60 - get => (int)this.Fields[(int)MsiEmbeddedUITupleFields.Attributes]?.Value;
61 - set => this.Set((int)MsiEmbeddedUITupleFields.Attributes, value);
54 + get => this.Fields[(int)MsiEmbeddedUITupleFields.EntryPoint].AsBool();
55 + set => this.Set((int)MsiEmbeddedUITupleFields.EntryPoint, value);
56 + }
57 +
58 + public bool SupportsBasicUI
59 + {
60 + get => this.Fields[(int)MsiEmbeddedUITupleFields.SupportsBasicUI].AsBool();
61 + set => this.Set((int)MsiEmbeddedUITupleFields.SupportsBasicUI, value);
62 }
63
64 public int MessageFilter
@@ -67,10 +67,10 @@ namespace WixToolset.Data.Tuples
67 set => this.Set((int)MsiEmbeddedUITupleFields.MessageFilter, value);
68 }
69
70 - public string Data
70 + public string Source
71 {
72 - get => (string)this.Fields[(int)MsiEmbeddedUITupleFields.Data]?.Value;
73 - set => this.Set((int)MsiEmbeddedUITupleFields.Data, value);
72 + get => (string)this.Fields[(int)MsiEmbeddedUITupleFields.Source]?.Value;
73 + set => this.Set((int)MsiEmbeddedUITupleFields.Source, value);
74 }
75 }
76 -}
\ No newline at end of file
76 +}
src/WixToolset.Data/Tuples/MsiServiceConfigFailureActionsTuple.cs
+23 -15
@@ -10,9 +10,10 @@ namespace WixToolset.Data
10 TupleDefinitionType.MsiServiceConfigFailureActions,
11 new[]
12 {
13 - new IntermediateFieldDefinition(nameof(MsiServiceConfigFailureActionsTupleFields.MsiServiceConfigFailureActions), IntermediateFieldType.String),
13 new IntermediateFieldDefinition(nameof(MsiServiceConfigFailureActionsTupleFields.Name), IntermediateFieldType.String),
15 - new IntermediateFieldDefinition(nameof(MsiServiceConfigFailureActionsTupleFields.Event), IntermediateFieldType.Number),
14 + new IntermediateFieldDefinition(nameof(MsiServiceConfigFailureActionsTupleFields.OnInstall), IntermediateFieldType.Bool),
15 + new IntermediateFieldDefinition(nameof(MsiServiceConfigFailureActionsTupleFields.OnReinstall), IntermediateFieldType.Bool),
16 + new IntermediateFieldDefinition(nameof(MsiServiceConfigFailureActionsTupleFields.OnUninstall), IntermediateFieldType.Bool),
17 new IntermediateFieldDefinition(nameof(MsiServiceConfigFailureActionsTupleFields.ResetPeriod), IntermediateFieldType.Number),
18 new IntermediateFieldDefinition(nameof(MsiServiceConfigFailureActionsTupleFields.RebootMessage), IntermediateFieldType.String),
19 new IntermediateFieldDefinition(nameof(MsiServiceConfigFailureActionsTupleFields.Command), IntermediateFieldType.String),
@@ -28,9 +29,10 @@ namespace WixToolset.Data.Tuples
29 {
30 public enum MsiServiceConfigFailureActionsTupleFields
31 {
31 - MsiServiceConfigFailureActions,
32 Name,
33 - Event,
33 + OnInstall,
34 + OnReinstall,
35 + OnUninstall,
36 ResetPeriod,
37 RebootMessage,
38 Command,
@@ -51,27 +53,33 @@ namespace WixToolset.Data.Tuples
53
54 public IntermediateField this[MsiServiceConfigFailureActionsTupleFields index] => this.Fields[(int)index];
55
54 - public string MsiServiceConfigFailureActions
55 - {
56 - get => (string)this.Fields[(int)MsiServiceConfigFailureActionsTupleFields.MsiServiceConfigFailureActions]?.Value;
57 - set => this.Set((int)MsiServiceConfigFailureActionsTupleFields.MsiServiceConfigFailureActions, value);
58 - }
59 -
56 public string Name
57 {
58 get => (string)this.Fields[(int)MsiServiceConfigFailureActionsTupleFields.Name]?.Value;
59 set => this.Set((int)MsiServiceConfigFailureActionsTupleFields.Name, value);
60 }
61
66 - public int Event
62 + public bool OnInstall
63 + {
64 + get => this.Fields[(int)MsiServiceConfigFailureActionsTupleFields.OnInstall].AsBool();
65 + set => this.Set((int)MsiServiceConfigFailureActionsTupleFields.OnInstall, value);
66 + }
67 +
68 + public bool OnReinstall
69 + {
70 + get => this.Fields[(int)MsiServiceConfigFailureActionsTupleFields.OnReinstall].AsBool();
71 + set => this.Set((int)MsiServiceConfigFailureActionsTupleFields.OnReinstall, value);
72 + }
73 +
74 + public bool OnUninstall
75 {
68 - get => (int)this.Fields[(int)MsiServiceConfigFailureActionsTupleFields.Event]?.Value;
69 - set => this.Set((int)MsiServiceConfigFailureActionsTupleFields.Event, value);
76 + get => this.Fields[(int)MsiServiceConfigFailureActionsTupleFields.OnUninstall].AsBool();
77 + set => this.Set((int)MsiServiceConfigFailureActionsTupleFields.OnUninstall, value);
78 }
79
72 - public int ResetPeriod
80 + public int? ResetPeriod
81 {
74 - get => (int)this.Fields[(int)MsiServiceConfigFailureActionsTupleFields.ResetPeriod]?.Value;
82 + get => (int)this.Fields[(int)MsiServiceConfigFailureActionsTupleFields.ResetPeriod].AsNullableNumber();
83 set => this.Set((int)MsiServiceConfigFailureActionsTupleFields.ResetPeriod, value);
84 }
85
src/WixToolset.Data/Tuples/MsiServiceConfigTuple.cs
+33 -15
@@ -10,9 +10,10 @@ namespace WixToolset.Data
10 TupleDefinitionType.MsiServiceConfig,
11 new[]
12 {
13 - new IntermediateFieldDefinition(nameof(MsiServiceConfigTupleFields.MsiServiceConfig), IntermediateFieldType.String),
13 new IntermediateFieldDefinition(nameof(MsiServiceConfigTupleFields.Name), IntermediateFieldType.String),
15 - new IntermediateFieldDefinition(nameof(MsiServiceConfigTupleFields.Event), IntermediateFieldType.Number),
14 + new IntermediateFieldDefinition(nameof(MsiServiceConfigFailureActionsTupleFields.OnInstall), IntermediateFieldType.Bool),
15 + new IntermediateFieldDefinition(nameof(MsiServiceConfigFailureActionsTupleFields.OnReinstall), IntermediateFieldType.Bool),
16 + new IntermediateFieldDefinition(nameof(MsiServiceConfigFailureActionsTupleFields.OnUninstall), IntermediateFieldType.Bool),
17 new IntermediateFieldDefinition(nameof(MsiServiceConfigTupleFields.ConfigType), IntermediateFieldType.Number),
18 new IntermediateFieldDefinition(nameof(MsiServiceConfigTupleFields.Argument), IntermediateFieldType.String),
19 new IntermediateFieldDefinition(nameof(MsiServiceConfigTupleFields.Component_), IntermediateFieldType.String),
@@ -27,12 +28,23 @@ namespace WixToolset.Data.Tuples
28 {
29 MsiServiceConfig,
30 Name,
30 - Event,
31 + OnInstall,
32 + OnReinstall,
33 + OnUninstall,
34 ConfigType,
35 Argument,
36 Component_,
37 }
38
39 + public enum MsiServiceConfigType
40 + {
41 + DelayedAutoStart = 3,
42 + FailureActionsFlag,
43 + ServiceSidInfo,
44 + RequiredPrivilegesInfo,
45 + PreshutdownInfo,
46 + }
47 +
48 public class MsiServiceConfigTuple : IntermediateTuple
49 {
50 public MsiServiceConfigTuple() : base(TupleDefinitions.MsiServiceConfig, null, null)
@@ -45,28 +57,34 @@ namespace WixToolset.Data.Tuples
57
58 public IntermediateField this[MsiServiceConfigTupleFields index] => this.Fields[(int)index];
59
48 - public string MsiServiceConfig
49 - {
50 - get => (string)this.Fields[(int)MsiServiceConfigTupleFields.MsiServiceConfig]?.Value;
51 - set => this.Set((int)MsiServiceConfigTupleFields.MsiServiceConfig, value);
52 - }
53 -
60 public string Name
61 {
62 get => (string)this.Fields[(int)MsiServiceConfigTupleFields.Name]?.Value;
63 set => this.Set((int)MsiServiceConfigTupleFields.Name, value);
64 }
65
60 - public int Event
66 + public bool OnInstall
67 + {
68 + get => this.Fields[(int)MsiServiceConfigTupleFields.OnInstall].AsBool();
69 + set => this.Set((int)MsiServiceConfigTupleFields.OnInstall, value);
70 + }
71 +
72 + public bool OnReinstall
73 + {
74 + get => this.Fields[(int)MsiServiceConfigTupleFields.OnReinstall].AsBool();
75 + set => this.Set((int)MsiServiceConfigTupleFields.OnReinstall, value);
76 + }
77 +
78 + public bool OnUninstall
79 {
62 - get => (int)this.Fields[(int)MsiServiceConfigTupleFields.Event]?.Value;
63 - set => this.Set((int)MsiServiceConfigTupleFields.Event, value);
80 + get => this.Fields[(int)MsiServiceConfigTupleFields.OnUninstall].AsBool();
81 + set => this.Set((int)MsiServiceConfigTupleFields.OnUninstall, value);
82 }
83
66 - public int ConfigType
84 + public MsiServiceConfigType ConfigType
85 {
68 - get => (int)this.Fields[(int)MsiServiceConfigTupleFields.ConfigType]?.Value;
69 - set => this.Set((int)MsiServiceConfigTupleFields.ConfigType, value);
86 + get => (MsiServiceConfigType)this.Fields[(int)MsiServiceConfigTupleFields.ConfigType].AsNumber();
87 + set => this.Set((int)MsiServiceConfigTupleFields.ConfigType, (int)value);
88 }
89
90 public string Argument
src/WixToolset.Data/Tuples/RegistryRootType.cs new
+21
@@ -0,0 +1,21 @@
1 +// Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information.
2 +
3 +namespace WixToolset.Data.Tuples
4 +{
5 + using System;
6 +
7 + /// <summary>
8 + /// Registry root mapping.
9 + /// </summary>
10 + public enum RegistryRootType
11 + {
12 + Unknown = Int32.MaxValue,
13 +
14 + /// <summary>HKLM in a per-machine and HKCU in per-user.</summary>
15 + MachineUser = -1,
16 + ClassesRoot = 0,
17 + CurrentUser = 1,
18 + LocalMachine = 2,
19 + Users = 3
20 + }
21 +}
src/WixToolset.Data/Tuples/RegistryTuple.cs
+36 -12
@@ -10,11 +10,12 @@ namespace WixToolset.Data
10 TupleDefinitionType.Registry,
11 new[]
12 {
13 - new IntermediateFieldDefinition(nameof(RegistryTupleFields.Registry), IntermediateFieldType.String),
13 new IntermediateFieldDefinition(nameof(RegistryTupleFields.Root), IntermediateFieldType.Number),
14 new IntermediateFieldDefinition(nameof(RegistryTupleFields.Key), IntermediateFieldType.String),
15 new IntermediateFieldDefinition(nameof(RegistryTupleFields.Name), IntermediateFieldType.String),
16 new IntermediateFieldDefinition(nameof(RegistryTupleFields.Value), IntermediateFieldType.String),
17 + new IntermediateFieldDefinition(nameof(RegistryTupleFields.ValueType), IntermediateFieldType.Number),
18 + new IntermediateFieldDefinition(nameof(RegistryTupleFields.ValueAction), IntermediateFieldType.Number),
19 new IntermediateFieldDefinition(nameof(RegistryTupleFields.Component_), IntermediateFieldType.String),
20 },
21 typeof(RegistryTuple));
@@ -25,14 +26,31 @@ namespace WixToolset.Data.Tuples
26 {
27 public enum RegistryTupleFields
28 {
28 - Registry,
29 Root,
30 Key,
31 Name,
32 Value,
33 + ValueType,
34 + ValueAction,
35 Component_,
36 }
37
38 + public enum RegistryValueType
39 + {
40 + String,
41 + Binary,
42 + Expandable,
43 + Integer,
44 + MultiString,
45 + }
46 +
47 + public enum RegistryValueActionType
48 + {
49 + Write,
50 + Append,
51 + Prepend,
52 + }
53 +
54 public class RegistryTuple : IntermediateTuple
55 {
56 public RegistryTuple() : base(TupleDefinitions.Registry, null, null)
@@ -45,16 +63,10 @@ namespace WixToolset.Data.Tuples
63
64 public IntermediateField this[RegistryTupleFields index] => this.Fields[(int)index];
65
48 - public string Registry
66 + public RegistryRootType Root
67 {
50 - get => (string)this.Fields[(int)RegistryTupleFields.Registry]?.Value;
51 - set => this.Set((int)RegistryTupleFields.Registry, value);
52 - }
53 -
54 - public int Root
55 - {
56 - get => (int)this.Fields[(int)RegistryTupleFields.Root]?.Value;
57 - set => this.Set((int)RegistryTupleFields.Root, value);
68 + get => (RegistryRootType)this.Fields[(int)RegistryTupleFields.Root].AsNumber();
69 + set => this.Set((int)RegistryTupleFields.Root, (int)value);
70 }
71
72 public string Key
@@ -71,10 +83,22 @@ namespace WixToolset.Data.Tuples
83
84 public string Value
85 {
74 - get => (string)this.Fields[(int)RegistryTupleFields.Value]?.Value;
86 + get => this.Fields[(int)RegistryTupleFields.Value].AsString();
87 set => this.Set((int)RegistryTupleFields.Value, value);
88 }
89
90 + public RegistryValueType ValueType
91 + {
92 + get => (RegistryValueType)this.Fields[(int)RegistryTupleFields.ValueType].AsNumber();
93 + set => this.Set((int)RegistryTupleFields.ValueType, (int)value);
94 + }
95 +
96 + public RegistryValueActionType ValueAction
97 + {
98 + get => (RegistryValueActionType)this.Fields[(int)RegistryTupleFields.ValueAction].AsNumber();
99 + set => this.Set((int)RegistryTupleFields.ValueAction, (int)value);
100 + }
101 +
102 public string Component_
103 {
104 get => (string)this.Fields[(int)RegistryTupleFields.Component_]?.Value;
src/WixToolset.Data/Tuples/RemoveRegistryTuple.cs
+17 -11
@@ -10,10 +10,10 @@ namespace WixToolset.Data
10 TupleDefinitionType.RemoveRegistry,
11 new[]
12 {
13 - new IntermediateFieldDefinition(nameof(RemoveRegistryTupleFields.RemoveRegistry), IntermediateFieldType.String),
13 new IntermediateFieldDefinition(nameof(RemoveRegistryTupleFields.Root), IntermediateFieldType.Number),
14 new IntermediateFieldDefinition(nameof(RemoveRegistryTupleFields.Key), IntermediateFieldType.String),
15 new IntermediateFieldDefinition(nameof(RemoveRegistryTupleFields.Name), IntermediateFieldType.String),
16 + new IntermediateFieldDefinition(nameof(RemoveRegistryTupleFields.Action), IntermediateFieldType.Number),
17 new IntermediateFieldDefinition(nameof(RemoveRegistryTupleFields.Component_), IntermediateFieldType.String),
18 },
19 typeof(RemoveRegistryTuple));
@@ -24,13 +24,19 @@ namespace WixToolset.Data.Tuples
24 {
25 public enum RemoveRegistryTupleFields
26 {
27 - RemoveRegistry,
27 Root,
28 Key,
29 Name,
30 + Action,
31 Component_,
32 }
33
34 + public enum RemoveRegistryActionType
35 + {
36 + RemoveOnInstall,
37 + RemoveOnUninstall
38 + };
39 +
40 public class RemoveRegistryTuple : IntermediateTuple
41 {
42 public RemoveRegistryTuple() : base(TupleDefinitions.RemoveRegistry, null, null)
@@ -43,16 +49,10 @@ namespace WixToolset.Data.Tuples
49
50 public IntermediateField this[RemoveRegistryTupleFields index] => this.Fields[(int)index];
51
46 - public string RemoveRegistry
47 - {
48 - get => (string)this.Fields[(int)RemoveRegistryTupleFields.RemoveRegistry]?.Value;
49 - set => this.Set((int)RemoveRegistryTupleFields.RemoveRegistry, value);
50 - }
51 -
52 - public int Root
52 + public RegistryRootType Root
53 {
54 - get => (int)this.Fields[(int)RemoveRegistryTupleFields.Root]?.Value;
55 - set => this.Set((int)RemoveRegistryTupleFields.Root, value);
54 + get => (RegistryRootType)this.Fields[(int)RemoveRegistryTupleFields.Key]?.AsNumber();
55 + set => this.Set((int)RemoveRegistryTupleFields.Root, (int)value);
56 }
57
58 public string Key
@@ -67,6 +67,12 @@ namespace WixToolset.Data.Tuples
67 set => this.Set((int)RemoveRegistryTupleFields.Name, value);
68 }
69
70 + public RemoveRegistryActionType Action
71 + {
72 + get => (RemoveRegistryActionType)this.Fields[(int)RemoveRegistryTupleFields.Action].AsNumber();
73 + set => this.Set((int)RemoveRegistryTupleFields.Action, (int)value);
74 + }
75 +
76 public string Component_
77 {
78 get => (string)this.Fields[(int)RemoveRegistryTupleFields.Component_]?.Value;
src/WixToolset.Data/Tuples/ServiceControlTuple.cs
+48 -8
@@ -12,9 +12,14 @@ namespace WixToolset.Data
12 {
13 new IntermediateFieldDefinition(nameof(ServiceControlTupleFields.ServiceControl), IntermediateFieldType.String),
14 new IntermediateFieldDefinition(nameof(ServiceControlTupleFields.Name), IntermediateFieldType.String),
15 - new IntermediateFieldDefinition(nameof(ServiceControlTupleFields.Event), IntermediateFieldType.Number),
15 + new IntermediateFieldDefinition(nameof(ServiceControlTupleFields.InstallRemove), IntermediateFieldType.Bool),
16 + new IntermediateFieldDefinition(nameof(ServiceControlTupleFields.UninstallRemove), IntermediateFieldType.Bool),
17 + new IntermediateFieldDefinition(nameof(ServiceControlTupleFields.InstallStart), IntermediateFieldType.Bool),
18 + new IntermediateFieldDefinition(nameof(ServiceControlTupleFields.UninstallStart), IntermediateFieldType.Bool),
19 + new IntermediateFieldDefinition(nameof(ServiceControlTupleFields.InstallStop), IntermediateFieldType.Bool),
20 + new IntermediateFieldDefinition(nameof(ServiceControlTupleFields.UninstallStop), IntermediateFieldType.Bool),
21 new IntermediateFieldDefinition(nameof(ServiceControlTupleFields.Arguments), IntermediateFieldType.String),
17 - new IntermediateFieldDefinition(nameof(ServiceControlTupleFields.Wait), IntermediateFieldType.Number),
22 + new IntermediateFieldDefinition(nameof(ServiceControlTupleFields.Wait), IntermediateFieldType.Bool),
23 new IntermediateFieldDefinition(nameof(ServiceControlTupleFields.Component_), IntermediateFieldType.String),
24 },
25 typeof(ServiceControlTuple));
@@ -27,7 +32,12 @@ namespace WixToolset.Data.Tuples
32 {
33 ServiceControl,
34 Name,
30 - Event,
35 + InstallRemove,
36 + UninstallRemove,
37 + InstallStart,
38 + UninstallStart,
39 + InstallStop,
40 + UninstallStop,
41 Arguments,
42 Wait,
43 Component_,
@@ -57,10 +67,40 @@ namespace WixToolset.Data.Tuples
67 set => this.Set((int)ServiceControlTupleFields.Name, value);
68 }
69
60 - public int Event
70 + public bool InstallRemove
71 {
62 - get => (int)this.Fields[(int)ServiceControlTupleFields.Event]?.Value;
63 - set => this.Set((int)ServiceControlTupleFields.Event, value);
72 + get => this.Fields[(int)ServiceControlTupleFields.InstallRemove].AsBool();
73 + set => this.Set((int)ServiceControlTupleFields.InstallRemove, value);
74 + }
75 +
76 + public bool UninstallRemove
77 + {
78 + get => this.Fields[(int)ServiceControlTupleFields.UninstallRemove].AsBool();
79 + set => this.Set((int)ServiceControlTupleFields.UninstallRemove, value);
80 + }
81 +
82 + public bool InstallStart
83 + {
84 + get => this.Fields[(int)ServiceControlTupleFields.InstallStart].AsBool();
85 + set => this.Set((int)ServiceControlTupleFields.InstallStart, value);
86 + }
87 +
88 + public bool UninstallStart
89 + {
90 + get => this.Fields[(int)ServiceControlTupleFields.UninstallStart].AsBool();
91 + set => this.Set((int)ServiceControlTupleFields.UninstallStart, value);
92 + }
93 +
94 + public bool InstallStop
95 + {
96 + get => this.Fields[(int)ServiceControlTupleFields.InstallStop].AsBool();
97 + set => this.Set((int)ServiceControlTupleFields.InstallStop, value);
98 + }
99 +
100 + public bool UninstallStop
101 + {
102 + get => this.Fields[(int)ServiceControlTupleFields.UninstallStop].AsBool();
103 + set => this.Set((int)ServiceControlTupleFields.UninstallStop, value);
104 }
105
106 public string Arguments
@@ -69,9 +109,9 @@ namespace WixToolset.Data.Tuples
109 set => this.Set((int)ServiceControlTupleFields.Arguments, value);
110 }
111
72 - public int Wait
112 + public bool? Wait
113 {
74 - get => (int)this.Fields[(int)ServiceControlTupleFields.Wait]?.Value;
114 + get => this.Fields[(int)ServiceControlTupleFields.Wait].AsNullableBool();
115 set => this.Set((int)ServiceControlTupleFields.Wait, value);
116 }
117
src/WixToolset.Data/Tuples/ServiceInstallTuple.cs
+50 -17
@@ -10,7 +10,6 @@ namespace WixToolset.Data
10 TupleDefinitionType.ServiceInstall,
11 new[]
12 {
13 - new IntermediateFieldDefinition(nameof(ServiceInstallTupleFields.ServiceInstall), IntermediateFieldType.String),
13 new IntermediateFieldDefinition(nameof(ServiceInstallTupleFields.Name), IntermediateFieldType.String),
14 new IntermediateFieldDefinition(nameof(ServiceInstallTupleFields.DisplayName), IntermediateFieldType.String),
15 new IntermediateFieldDefinition(nameof(ServiceInstallTupleFields.ServiceType), IntermediateFieldType.Number),
@@ -23,6 +22,8 @@ namespace WixToolset.Data
22 new IntermediateFieldDefinition(nameof(ServiceInstallTupleFields.Arguments), IntermediateFieldType.String),
23 new IntermediateFieldDefinition(nameof(ServiceInstallTupleFields.Component_), IntermediateFieldType.String),
24 new IntermediateFieldDefinition(nameof(ServiceInstallTupleFields.Description), IntermediateFieldType.String),
25 + new IntermediateFieldDefinition(nameof(ServiceInstallTupleFields.Interactive), IntermediateFieldType.Bool),
26 + new IntermediateFieldDefinition(nameof(ServiceInstallTupleFields.Vital), IntermediateFieldType.Bool),
27 },
28 typeof(ServiceInstallTuple));
29 }
@@ -32,7 +33,6 @@ namespace WixToolset.Data.Tuples
33 {
34 public enum ServiceInstallTupleFields
35 {
35 - ServiceInstall,
36 Name,
37 DisplayName,
38 ServiceType,
@@ -45,6 +45,33 @@ namespace WixToolset.Data.Tuples
45 Arguments,
46 Component_,
47 Description,
48 + Interactive,
49 + Vital,
50 + }
51 +
52 + public enum ServiceType
53 + {
54 + KernelDriver,
55 + SystemDriver,
56 + OwnProcess = 4,
57 + ShareProcess = 8,
58 + InteractiveProcess = 256,
59 + }
60 +
61 + public enum ServiceStartType
62 + {
63 + Boot,
64 + System,
65 + Auto,
66 + Demand,
67 + Disabled,
68 + }
69 +
70 + public enum ServiceErrorControl
71 + {
72 + Ignore,
73 + Normal,
74 + Critical = 3,
75 }
76
77 public class ServiceInstallTuple : IntermediateTuple
@@ -59,12 +86,6 @@ namespace WixToolset.Data.Tuples
86
87 public IntermediateField this[ServiceInstallTupleFields index] => this.Fields[(int)index];
88
62 - public string ServiceInstall
63 - {
64 - get => (string)this.Fields[(int)ServiceInstallTupleFields.ServiceInstall]?.Value;
65 - set => this.Set((int)ServiceInstallTupleFields.ServiceInstall, value);
66 - }
67 -
89 public string Name
90 {
91 get => (string)this.Fields[(int)ServiceInstallTupleFields.Name]?.Value;
@@ -77,22 +98,22 @@ namespace WixToolset.Data.Tuples
98 set => this.Set((int)ServiceInstallTupleFields.DisplayName, value);
99 }
100
80 - public int ServiceType
101 + public ServiceType ServiceType
102 {
82 - get => (int)this.Fields[(int)ServiceInstallTupleFields.ServiceType]?.Value;
83 - set => this.Set((int)ServiceInstallTupleFields.ServiceType, value);
103 + get => (ServiceType)this.Fields[(int)ServiceInstallTupleFields.ServiceType].AsNumber();
104 + set => this.Set((int)ServiceInstallTupleFields.ServiceType, (int)value);
105 }
106
86 - public int StartType
107 + public ServiceStartType StartType
108 {
88 - get => (int)this.Fields[(int)ServiceInstallTupleFields.StartType]?.Value;
89 - set => this.Set((int)ServiceInstallTupleFields.StartType, value);
109 + get => (ServiceStartType)this.Fields[(int)ServiceInstallTupleFields.StartType].AsNumber();
110 + set => this.Set((int)ServiceInstallTupleFields.StartType, (int)value);
111 }
112
92 - public int ErrorControl
113 + public ServiceErrorControl ErrorControl
114 {
94 - get => (int)this.Fields[(int)ServiceInstallTupleFields.ErrorControl]?.Value;
95 - set => this.Set((int)ServiceInstallTupleFields.ErrorControl, value);
115 + get => (ServiceErrorControl)this.Fields[(int)ServiceInstallTupleFields.ErrorControl].AsNumber();
116 + set => this.Set((int)ServiceInstallTupleFields.ErrorControl, (int)value);
117 }
118
119 public string LoadOrderGroup
@@ -136,5 +157,17 @@ namespace WixToolset.Data.Tuples
157 get => (string)this.Fields[(int)ServiceInstallTupleFields.Description]?.Value;
158 set => this.Set((int)ServiceInstallTupleFields.Description, value);
159 }
160 +
161 + public bool Interactive
162 + {
163 + get => this.Fields[(int)ServiceInstallTupleFields.Interactive].AsBool();
164 + set => this.Set((int)ServiceInstallTupleFields.Interactive, value);
165 + }
166 +
167 + public bool Vital
168 + {
169 + get => this.Fields[(int)ServiceInstallTupleFields.Vital].AsBool();
170 + set => this.Set((int)ServiceInstallTupleFields.Vital, value);
171 + }
172 }
173 }
\ No newline at end of file
src/WixToolset.Data/Tuples/ShortcutTuple.cs
+23 -24
@@ -10,7 +10,6 @@ namespace WixToolset.Data
10 TupleDefinitionType.Shortcut,
11 new[]
12 {
13 - new IntermediateFieldDefinition(nameof(ShortcutTupleFields.Shortcut), IntermediateFieldType.String),
13 new IntermediateFieldDefinition(nameof(ShortcutTupleFields.Directory_), IntermediateFieldType.String),
14 new IntermediateFieldDefinition(nameof(ShortcutTupleFields.Name), IntermediateFieldType.String),
15 new IntermediateFieldDefinition(nameof(ShortcutTupleFields.Component_), IntermediateFieldType.String),
@@ -20,7 +19,7 @@ namespace WixToolset.Data
19 new IntermediateFieldDefinition(nameof(ShortcutTupleFields.Hotkey), IntermediateFieldType.Number),
20 new IntermediateFieldDefinition(nameof(ShortcutTupleFields.Icon_), IntermediateFieldType.String),
21 new IntermediateFieldDefinition(nameof(ShortcutTupleFields.IconIndex), IntermediateFieldType.Number),
23 - new IntermediateFieldDefinition(nameof(ShortcutTupleFields.ShowCmd), IntermediateFieldType.Number),
22 + new IntermediateFieldDefinition(nameof(ShortcutTupleFields.Show), IntermediateFieldType.Number),
23 new IntermediateFieldDefinition(nameof(ShortcutTupleFields.WkDir), IntermediateFieldType.String),
24 new IntermediateFieldDefinition(nameof(ShortcutTupleFields.DisplayResourceDLL), IntermediateFieldType.String),
25 new IntermediateFieldDefinition(nameof(ShortcutTupleFields.DisplayResourceId), IntermediateFieldType.Number),
@@ -35,7 +34,6 @@ namespace WixToolset.Data.Tuples
34 {
35 public enum ShortcutTupleFields
36 {
38 - Shortcut,
37 Directory_,
38 Name,
39 Component_,
@@ -45,7 +43,7 @@ namespace WixToolset.Data.Tuples
43 Hotkey,
44 Icon_,
45 IconIndex,
48 - ShowCmd,
46 + Show,
47 WkDir,
48 DisplayResourceDLL,
49 DisplayResourceId,
@@ -53,6 +51,13 @@ namespace WixToolset.Data.Tuples
51 DescriptionResourceId,
52 }
53
54 + public enum ShortcutShowType
55 + {
56 + Normal = 1,
57 + Maximized = 3,
58 + Minimized = 7
59 + }
60 +
61 public class ShortcutTuple : IntermediateTuple
62 {
63 public ShortcutTuple() : base(TupleDefinitions.Shortcut, null, null)
@@ -65,12 +70,6 @@ namespace WixToolset.Data.Tuples
70
71 public IntermediateField this[ShortcutTupleFields index] => this.Fields[(int)index];
72
68 - public string Shortcut
69 - {
70 - get => (string)this.Fields[(int)ShortcutTupleFields.Shortcut]?.Value;
71 - set => this.Set((int)ShortcutTupleFields.Shortcut, value);
72 - }
73 -
73 public string Directory_
74 {
75 get => (string)this.Fields[(int)ShortcutTupleFields.Directory_]?.Value;
@@ -107,9 +106,9 @@ namespace WixToolset.Data.Tuples
106 set => this.Set((int)ShortcutTupleFields.Description, value);
107 }
108
110 - public int Hotkey
109 + public int? Hotkey
110 {
112 - get => (int)this.Fields[(int)ShortcutTupleFields.Hotkey]?.Value;
111 + get => this.Fields[(int)ShortcutTupleFields.Hotkey].AsNullableNumber();
112 set => this.Set((int)ShortcutTupleFields.Hotkey, value);
113 }
114
@@ -119,45 +118,45 @@ namespace WixToolset.Data.Tuples
118 set => this.Set((int)ShortcutTupleFields.Icon_, value);
119 }
120
122 - public int IconIndex
121 + public int? IconIndex
122 {
124 - get => (int)this.Fields[(int)ShortcutTupleFields.IconIndex]?.Value;
123 + get => this.Fields[(int)ShortcutTupleFields.IconIndex].AsNullableNumber();
124 set => this.Set((int)ShortcutTupleFields.IconIndex, value);
125 }
126
128 - public int ShowCmd
127 + public ShortcutShowType? Show
128 {
130 - get => (int)this.Fields[(int)ShortcutTupleFields.ShowCmd]?.Value;
131 - set => this.Set((int)ShortcutTupleFields.ShowCmd, value);
129 + get => (ShortcutShowType?)this.Fields[(int)ShortcutTupleFields.Show].AsNullableNumber();
130 + set => this.Set((int)ShortcutTupleFields.Show, (int?)value);
131 }
132
134 - public string WkDir
133 + public string WorkingDirectory
134 {
135 get => (string)this.Fields[(int)ShortcutTupleFields.WkDir]?.Value;
136 set => this.Set((int)ShortcutTupleFields.WkDir, value);
137 }
138
140 - public string DisplayResourceDLL
139 + public string DisplayResourceDll
140 {
141 get => (string)this.Fields[(int)ShortcutTupleFields.DisplayResourceDLL]?.Value;
142 set => this.Set((int)ShortcutTupleFields.DisplayResourceDLL, value);
143 }
144
146 - public int DisplayResourceId
145 + public int? DisplayResourceId
146 {
148 - get => (int)this.Fields[(int)ShortcutTupleFields.DisplayResourceId]?.Value;
147 + get => this.Fields[(int)ShortcutTupleFields.DisplayResourceId].AsNullableNumber();
148 set => this.Set((int)ShortcutTupleFields.DisplayResourceId, value);
149 }
150
152 - public string DescriptionResourceDLL
151 + public string DescriptionResourceDll
152 {
153 get => (string)this.Fields[(int)ShortcutTupleFields.DescriptionResourceDLL]?.Value;
154 set => this.Set((int)ShortcutTupleFields.DescriptionResourceDLL, value);
155 }
156
158 - public int DescriptionResourceId
157 + public int? DescriptionResourceId
158 {
160 - get => (int)this.Fields[(int)ShortcutTupleFields.DescriptionResourceId]?.Value;
159 + get => this.Fields[(int)ShortcutTupleFields.DescriptionResourceId].AsNullableNumber();
160 set => this.Set((int)ShortcutTupleFields.DescriptionResourceId, value);
161 }
162 }
src/WixToolset.Data/Tuples/TextStyleTuple.cs
+31 -7
@@ -14,7 +14,10 @@ namespace WixToolset.Data
14 new IntermediateFieldDefinition(nameof(TextStyleTupleFields.FaceName), IntermediateFieldType.String),
15 new IntermediateFieldDefinition(nameof(TextStyleTupleFields.Size), IntermediateFieldType.Number),
16 new IntermediateFieldDefinition(nameof(TextStyleTupleFields.Color), IntermediateFieldType.Number),
17 - new IntermediateFieldDefinition(nameof(TextStyleTupleFields.StyleBits), IntermediateFieldType.Number),
17 + new IntermediateFieldDefinition(nameof(TextStyleTupleFields.Bold), IntermediateFieldType.Bool),
18 + new IntermediateFieldDefinition(nameof(TextStyleTupleFields.Italic), IntermediateFieldType.Bool),
19 + new IntermediateFieldDefinition(nameof(TextStyleTupleFields.Strike), IntermediateFieldType.Bool),
20 + new IntermediateFieldDefinition(nameof(TextStyleTupleFields.Underline), IntermediateFieldType.Bool),
21 },
22 typeof(TextStyleTuple));
23 }
@@ -28,7 +31,10 @@ namespace WixToolset.Data.Tuples
31 FaceName,
32 Size,
33 Color,
31 - StyleBits,
34 + Bold,
35 + Italic,
36 + Strike,
37 + Underline,
38 }
39
40 public class TextStyleTuple : IntermediateTuple
@@ -57,20 +63,38 @@ namespace WixToolset.Data.Tuples
63
64 public int Size
65 {
60 - get => (int)this.Fields[(int)TextStyleTupleFields.Size]?.Value;
66 + get => this.Fields[(int)TextStyleTupleFields.Size].AsNumber();
67 set => this.Set((int)TextStyleTupleFields.Size, value);
68 }
69
70 public int Color
71 {
66 - get => (int)this.Fields[(int)TextStyleTupleFields.Color]?.Value;
72 + get => (int)this.Fields[(int)TextStyleTupleFields.Color].AsNumber();
73 set => this.Set((int)TextStyleTupleFields.Color, value);
74 }
75
70 - public int StyleBits
76 + public bool Bold
77 {
72 - get => (int)this.Fields[(int)TextStyleTupleFields.StyleBits]?.Value;
73 - set => this.Set((int)TextStyleTupleFields.StyleBits, value);
78 + get => this.Fields[(int)TextStyleTupleFields.Bold].AsBool();
79 + set => this.Set((int)TextStyleTupleFields.Bold, value);
80 + }
81 +
82 + public bool Italic
83 + {
84 + get => this.Fields[(int)TextStyleTupleFields.Italic].AsBool();
85 + set => this.Set((int)TextStyleTupleFields.Italic, value);
86 + }
87 +
88 + public bool Strike
89 + {
90 + get => this.Fields[(int)TextStyleTupleFields.Strike].AsBool();
91 + set => this.Set((int)TextStyleTupleFields.Strike, value);
92 + }
93 +
94 + public bool Underline
95 + {
96 + get => this.Fields[(int)TextStyleTupleFields.Underline].AsBool();
97 + set => this.Set((int)TextStyleTupleFields.Underline, value);
98 }
99 }
100 }
\ No newline at end of file
src/WixToolset.Data/Tuples/TupleDefinitions.cs
+1 -8
@@ -3,6 +3,7 @@
3 namespace WixToolset.Data
4 {
5 using System;
6 + using WixToolset.Data.Tuples;
7
8 public enum TupleDefinitionType
9 {
@@ -130,7 +131,6 @@ namespace WixToolset.Data
131 Verb,
132 WixAction,
133 WixApprovedExeForElevation,
133 - WixBBControl,
134 WixBindUpdatedFiles,
135 WixBootstrapperApplication,
136 WixBuildInfo,
@@ -161,7 +161,6 @@ namespace WixToolset.Data
161 WixComplexReference,
162 WixComponentGroup,
163 WixComponentSearch,
164 - WixControl,
164 WixCustomRow,
165 WixCustomTable,
166 WixDeltaPatchFile,
@@ -594,9 +593,6 @@ namespace WixToolset.Data
593 case TupleDefinitionType.WixApprovedExeForElevation:
594 return TupleDefinitions.WixApprovedExeForElevation;
595
597 - case TupleDefinitionType.WixBBControl:
598 - return TupleDefinitions.WixBBControl;
599 -
596 case TupleDefinitionType.WixBindUpdatedFiles:
597 return TupleDefinitions.WixBindUpdatedFiles;
598
@@ -687,9 +683,6 @@ namespace WixToolset.Data
683 case TupleDefinitionType.WixComponentSearch:
684 return TupleDefinitions.WixComponentSearch;
685
690 - case TupleDefinitionType.WixControl:
691 - return TupleDefinitions.WixControl;
692 -
686 case TupleDefinitionType.WixCustomRow:
687 return TupleDefinitions.WixCustomRow;
688
src/WixToolset.Data/Tuples/UpgradeTuple.cs
+45 -5
@@ -14,7 +14,12 @@ namespace WixToolset.Data
14 new IntermediateFieldDefinition(nameof(UpgradeTupleFields.VersionMin), IntermediateFieldType.String),
15 new IntermediateFieldDefinition(nameof(UpgradeTupleFields.VersionMax), IntermediateFieldType.String),
16 new IntermediateFieldDefinition(nameof(UpgradeTupleFields.Language), IntermediateFieldType.String),
17 - new IntermediateFieldDefinition(nameof(UpgradeTupleFields.Attributes), IntermediateFieldType.Number),
17 + new IntermediateFieldDefinition(nameof(UpgradeTupleFields.ExcludeLanguages), IntermediateFieldType.Bool),
18 + new IntermediateFieldDefinition(nameof(UpgradeTupleFields.IgnoreRemoveFailures), IntermediateFieldType.Bool),
19 + new IntermediateFieldDefinition(nameof(UpgradeTupleFields.MigrateFeatures), IntermediateFieldType.Bool),
20 + new IntermediateFieldDefinition(nameof(UpgradeTupleFields.OnlyDetect), IntermediateFieldType.Bool),
21 + new IntermediateFieldDefinition(nameof(UpgradeTupleFields.VersionMaxInclusive), IntermediateFieldType.Bool),
22 + new IntermediateFieldDefinition(nameof(UpgradeTupleFields.VersionMinInclusive), IntermediateFieldType.Bool),
23 new IntermediateFieldDefinition(nameof(UpgradeTupleFields.Remove), IntermediateFieldType.String),
24 new IntermediateFieldDefinition(nameof(UpgradeTupleFields.ActionProperty), IntermediateFieldType.String),
25 },
@@ -30,7 +35,12 @@ namespace WixToolset.Data.Tuples
35 VersionMin,
36 VersionMax,
37 Language,
33 - Attributes,
38 + ExcludeLanguages,
39 + IgnoreRemoveFailures,
40 + MigrateFeatures,
41 + OnlyDetect,
42 + VersionMaxInclusive,
43 + VersionMinInclusive,
44 Remove,
45 ActionProperty,
46 }
@@ -71,10 +81,40 @@ namespace WixToolset.Data.Tuples
81 set => this.Set((int)UpgradeTupleFields.Language, value);
82 }
83
74 - public int Attributes
84 + public bool ExcludeLanguages
85 {
76 - get => (int)this.Fields[(int)UpgradeTupleFields.Attributes]?.Value;
77 - set => this.Set((int)UpgradeTupleFields.Attributes, value);
86 + get => this.Fields[(int)UpgradeTupleFields.ExcludeLanguages].AsBool();
87 + set => this.Set((int)UpgradeTupleFields.ExcludeLanguages, value);
88 + }
89 +
90 + public bool IgnoreRemoveFailures
91 + {
92 + get => this.Fields[(int)UpgradeTupleFields.IgnoreRemoveFailures].AsBool();
93 + set => this.Set((int)UpgradeTupleFields.IgnoreRemoveFailures, value);
94 + }
95 +
96 + public bool MigrateFeatures
97 + {
98 + get => this.Fields[(int)UpgradeTupleFields.MigrateFeatures].AsBool();
99 + set => this.Set((int)UpgradeTupleFields.MigrateFeatures, value);
100 + }
101 +
102 + public bool OnlyDetect
103 + {
104 + get => this.Fields[(int)UpgradeTupleFields.OnlyDetect].AsBool();
105 + set => this.Set((int)UpgradeTupleFields.OnlyDetect, value);
106 + }
107 +
108 + public bool VersionMaxInclusive
109 + {
110 + get => this.Fields[(int)UpgradeTupleFields.VersionMaxInclusive].AsBool();
111 + set => this.Set((int)UpgradeTupleFields.VersionMaxInclusive, value);
112 + }
113 +
114 + public bool VersionMinInclusive
115 + {
116 + get => this.Fields[(int)UpgradeTupleFields.VersionMinInclusive].AsBool();
117 + set => this.Set((int)UpgradeTupleFields.VersionMinInclusive, value);
118 }
119
120 public string Remove
src/WixToolset.Data/Tuples/WixActionTuple.cs
+1 -1
@@ -96,7 +96,7 @@ namespace WixToolset.Data.Tuples
96
97 public bool Overridable
98 {
99 - get => (bool)this.Fields[(int)WixActionTupleFields.Overridable]?.Value;
99 + get => this.Fields[(int)WixActionTupleFields.Overridable].AsBool();
100 set => this.Set((int)WixActionTupleFields.Overridable, value);
101 }
102 }
src/WixToolset.Data/Tuples/WixBBControlTuple.cs deleted
-60
@@ -1,60 +0,0 @@
1 -// Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information.
2 -
3 -namespace WixToolset.Data
4 -{
5 - using WixToolset.Data.Tuples;
6 -
7 - public static partial class TupleDefinitions
8 - {
9 - public static readonly IntermediateTupleDefinition WixBBControl = new IntermediateTupleDefinition(
10 - TupleDefinitionType.WixBBControl,
11 - new[]
12 - {
13 - new IntermediateFieldDefinition(nameof(WixBBControlTupleFields.Billboard_), IntermediateFieldType.String),
14 - new IntermediateFieldDefinition(nameof(WixBBControlTupleFields.BBControl_), IntermediateFieldType.String),
15 - new IntermediateFieldDefinition(nameof(WixBBControlTupleFields.SourceFile), IntermediateFieldType.Path),
16 - },
17 - typeof(WixBBControlTuple));
18 - }
19 -}
20 -
21 -namespace WixToolset.Data.Tuples
22 -{
23 - public enum WixBBControlTupleFields
24 - {
25 - Billboard_,
26 - BBControl_,
27 - SourceFile,
28 - }
29 -
30 - public class WixBBControlTuple : IntermediateTuple
31 - {
32 - public WixBBControlTuple() : base(TupleDefinitions.WixBBControl, null, null)
33 - {
34 - }
35 -
36 - public WixBBControlTuple(SourceLineNumber sourceLineNumber, Identifier id = null) : base(TupleDefinitions.WixBBControl, sourceLineNumber, id)
37 - {
38 - }
39 -
40 - public IntermediateField this[WixBBControlTupleFields index] => this.Fields[(int)index];
41 -
42 - public string Billboard_
43 - {
44 - get => (string)this.Fields[(int)WixBBControlTupleFields.Billboard_]?.Value;
45 - set => this.Set((int)WixBBControlTupleFields.Billboard_, value);
46 - }
47 -
48 - public string BBControl_
49 - {
50 - get => (string)this.Fields[(int)WixBBControlTupleFields.BBControl_]?.Value;
51 - set => this.Set((int)WixBBControlTupleFields.BBControl_, value);
52 - }
53 -
54 - public string SourceFile
55 - {
56 - get => (string)this.Fields[(int)WixBBControlTupleFields.SourceFile]?.Value;
57 - set => this.Set((int)WixBBControlTupleFields.SourceFile, value);
58 - }
59 - }
60 -}
\ No newline at end of file
src/WixToolset.Data/Tuples/WixControlTuple.cs deleted
-60
@@ -1,60 +0,0 @@
1 -// Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information.
2 -
3 -namespace WixToolset.Data
4 -{
5 - using WixToolset.Data.Tuples;
6 -
7 - public static partial class TupleDefinitions
8 - {
9 - public static readonly IntermediateTupleDefinition WixControl = new IntermediateTupleDefinition(
10 - TupleDefinitionType.WixControl,
11 - new[]
12 - {
13 - new IntermediateFieldDefinition(nameof(WixControlTupleFields.Dialog_), IntermediateFieldType.String),
14 - new IntermediateFieldDefinition(nameof(WixControlTupleFields.Control_), IntermediateFieldType.String),
15 - new IntermediateFieldDefinition(nameof(WixControlTupleFields.SourceFile), IntermediateFieldType.Path),
16 - },
17 - typeof(WixControlTuple));
18 - }
19 -}
20 -
21 -namespace WixToolset.Data.Tuples
22 -{
23 - public enum WixControlTupleFields
24 - {
25 - Dialog_,
26 - Control_,
27 - SourceFile,
28 - }
29 -
30 - public class WixControlTuple : IntermediateTuple
31 - {
32 - public WixControlTuple() : base(TupleDefinitions.WixControl, null, null)
33 - {
34 - }
35 -
36 - public WixControlTuple(SourceLineNumber sourceLineNumber, Identifier id = null) : base(TupleDefinitions.WixControl, sourceLineNumber, id)
37 - {
38 - }
39 -
40 - public IntermediateField this[WixControlTupleFields index] => this.Fields[(int)index];
41 -
42 - public string Dialog_
43 - {
44 - get => (string)this.Fields[(int)WixControlTupleFields.Dialog_]?.Value;
45 - set => this.Set((int)WixControlTupleFields.Dialog_, value);
46 - }
47 -
48 - public string Control_
49 - {
50 - get => (string)this.Fields[(int)WixControlTupleFields.Control_]?.Value;
51 - set => this.Set((int)WixControlTupleFields.Control_, value);
52 - }
53 -
54 - public string SourceFile
55 - {
56 - get => (string)this.Fields[(int)WixControlTupleFields.SourceFile]?.Value;
57 - set => this.Set((int)WixControlTupleFields.SourceFile, value);
58 - }
59 - }
60 -}
\ No newline at end of file
src/WixToolset.Data/Tuples/WixRelatedBundleTuple.cs
+16 -8
@@ -10,7 +10,7 @@ namespace WixToolset.Data
10 TupleDefinitionType.WixRelatedBundle,
11 new[]
12 {
13 - new IntermediateFieldDefinition(nameof(WixRelatedBundleTupleFields.Id), IntermediateFieldType.String),
13 + new IntermediateFieldDefinition(nameof(WixRelatedBundleTupleFields.BundleId), IntermediateFieldType.String),
14 new IntermediateFieldDefinition(nameof(WixRelatedBundleTupleFields.Action), IntermediateFieldType.Number),
15 },
16 typeof(WixRelatedBundleTuple));
@@ -21,10 +21,18 @@ namespace WixToolset.Data.Tuples
21 {
22 public enum WixRelatedBundleTupleFields
23 {
24 - Id,
24 + BundleId,
25 Action,
26 }
27
28 + public enum RelatedBundleActionType
29 + {
30 + Detect,
31 + Upgrade,
32 + Addon,
33 + Patch
34 + }
35 +
36 public class WixRelatedBundleTuple : IntermediateTuple
37 {
38 public WixRelatedBundleTuple() : base(TupleDefinitions.WixRelatedBundle, null, null)
@@ -37,16 +45,16 @@ namespace WixToolset.Data.Tuples
45
46 public IntermediateField this[WixRelatedBundleTupleFields index] => this.Fields[(int)index];
47
40 - public string Id
48 + public string BundleId
49 {
42 - get => (string)this.Fields[(int)WixRelatedBundleTupleFields.Id]?.Value;
43 - set => this.Set((int)WixRelatedBundleTupleFields.Id, value);
50 + get => (string)this.Fields[(int)WixRelatedBundleTupleFields.BundleId]?.Value;
51 + set => this.Set((int)WixRelatedBundleTupleFields.BundleId, value);
52 }
53
46 - public int Action
54 + public RelatedBundleActionType Action
55 {
48 - get => (int)this.Fields[(int)WixRelatedBundleTupleFields.Action]?.Value;
49 - set => this.Set((int)WixRelatedBundleTupleFields.Action, value);
56 + get => (RelatedBundleActionType)this.Fields[(int)WixRelatedBundleTupleFields.Action].AsNumber();
57 + set => this.Set((int)WixRelatedBundleTupleFields.Action, (int)value);
58 }
59 }
60 }
\ No newline at end of file
src/WixToolset.Data/WindowsInstaller/Rows/ComponentRow.cs
+24 -26
@@ -2,8 +2,6 @@
2
3 namespace WixToolset.Data.WindowsInstaller.Rows
4 {
5 - using WixToolset.Data.Msi;
6 -
5 /// <summary>
6 /// Specialization of a row for the Component table.
7 /// </summary>
@@ -57,16 +55,16 @@ namespace WixToolset.Data.WindowsInstaller.Rows
55 /// <value>Local only attribute of the component.</value>
56 public bool IsLocalOnly
57 {
60 - get { return MsiInterop.MsidbComponentAttributesLocalOnly == ((int)this.Fields[3].Data & MsiInterop.MsidbComponentAttributesLocalOnly); }
58 + get { return WindowsInstallerConstants.MsidbComponentAttributesLocalOnly == ((int)this.Fields[3].Data & WindowsInstallerConstants.MsidbComponentAttributesLocalOnly); }
59 set
60 {
61 if (value)
62 {
65 - this.Fields[3].Data = (int)this.Fields[3].Data | MsiInterop.MsidbComponentAttributesLocalOnly;
63 + this.Fields[3].Data = (int)this.Fields[3].Data | WindowsInstallerConstants.MsidbComponentAttributesLocalOnly;
64 }
65 else
66 {
69 - this.Fields[3].Data = (int)this.Fields[3].Data & ~MsiInterop.MsidbComponentAttributesLocalOnly;
67 + this.Fields[3].Data = (int)this.Fields[3].Data & ~WindowsInstallerConstants.MsidbComponentAttributesLocalOnly;
68 }
69 }
70 }
@@ -77,16 +75,16 @@ namespace WixToolset.Data.WindowsInstaller.Rows
75 /// <value>Source only attribute of the component.</value>
76 public bool IsSourceOnly
77 {
80 - get { return MsiInterop.MsidbComponentAttributesSourceOnly == ((int)this.Fields[3].Data & MsiInterop.MsidbComponentAttributesSourceOnly); }
78 + get { return WindowsInstallerConstants.MsidbComponentAttributesSourceOnly == ((int)this.Fields[3].Data & WindowsInstallerConstants.MsidbComponentAttributesSourceOnly); }
79 set
80 {
81 if (value)
82 {
85 - this.Fields[3].Data = (int)this.Fields[3].Data | MsiInterop.MsidbComponentAttributesSourceOnly;
83 + this.Fields[3].Data = (int)this.Fields[3].Data | WindowsInstallerConstants.MsidbComponentAttributesSourceOnly;
84 }
85 else
86 {
89 - this.Fields[3].Data = (int)this.Fields[3].Data & ~MsiInterop.MsidbComponentAttributesSourceOnly;
87 + this.Fields[3].Data = (int)this.Fields[3].Data & ~WindowsInstallerConstants.MsidbComponentAttributesSourceOnly;
88 }
89 }
90 }
@@ -97,16 +95,16 @@ namespace WixToolset.Data.WindowsInstaller.Rows
95 /// <value>Optional attribute of the component.</value>
96 public bool IsOptional
97 {
100 - get { return MsiInterop.MsidbComponentAttributesOptional == ((int)this.Fields[3].Data & MsiInterop.MsidbComponentAttributesOptional); }
98 + get { return WindowsInstallerConstants.MsidbComponentAttributesOptional == ((int)this.Fields[3].Data & WindowsInstallerConstants.MsidbComponentAttributesOptional); }
99 set
100 {
101 if (value)
102 {
105 - this.Fields[3].Data = (int)this.Fields[3].Data | MsiInterop.MsidbComponentAttributesOptional;
103 + this.Fields[3].Data = (int)this.Fields[3].Data | WindowsInstallerConstants.MsidbComponentAttributesOptional;
104 }
105 else
106 {
109 - this.Fields[3].Data = (int)this.Fields[3].Data & ~MsiInterop.MsidbComponentAttributesOptional;
107 + this.Fields[3].Data = (int)this.Fields[3].Data & ~WindowsInstallerConstants.MsidbComponentAttributesOptional;
108 }
109 }
110 }
@@ -117,16 +115,16 @@ namespace WixToolset.Data.WindowsInstaller.Rows
115 /// <value>Registry key path attribute of the component.</value>
116 public bool IsRegistryKeyPath
117 {
120 - get { return MsiInterop.MsidbComponentAttributesRegistryKeyPath == ((int)this.Fields[3].Data & MsiInterop.MsidbComponentAttributesRegistryKeyPath); }
118 + get { return WindowsInstallerConstants.MsidbComponentAttributesRegistryKeyPath == ((int)this.Fields[3].Data & WindowsInstallerConstants.MsidbComponentAttributesRegistryKeyPath); }
119 set
120 {
121 if (value)
122 {
125 - this.Fields[3].Data = (int)this.Fields[3].Data | MsiInterop.MsidbComponentAttributesRegistryKeyPath;
123 + this.Fields[3].Data = (int)this.Fields[3].Data | WindowsInstallerConstants.MsidbComponentAttributesRegistryKeyPath;
124 }
125 else
126 {
129 - this.Fields[3].Data = (int)this.Fields[3].Data & ~MsiInterop.MsidbComponentAttributesRegistryKeyPath;
127 + this.Fields[3].Data = (int)this.Fields[3].Data & ~WindowsInstallerConstants.MsidbComponentAttributesRegistryKeyPath;
128 }
129 }
130 }
@@ -137,16 +135,16 @@ namespace WixToolset.Data.WindowsInstaller.Rows
135 /// <value>Shared dll ref countattribute of the component.</value>
136 public bool IsSharedDll
137 {
140 - get { return MsiInterop.MsidbComponentAttributesSharedDllRefCount == ((int)this.Fields[3].Data & MsiInterop.MsidbComponentAttributesSharedDllRefCount); }
138 + get { return WindowsInstallerConstants.MsidbComponentAttributesSharedDllRefCount == ((int)this.Fields[3].Data & WindowsInstallerConstants.MsidbComponentAttributesSharedDllRefCount); }
139 set
140 {
141 if (value)
142 {
145 - this.Fields[3].Data = (int)this.Fields[3].Data | MsiInterop.MsidbComponentAttributesSharedDllRefCount;
143 + this.Fields[3].Data = (int)this.Fields[3].Data | WindowsInstallerConstants.MsidbComponentAttributesSharedDllRefCount;
144 }
145 else
146 {
149 - this.Fields[3].Data = (int)this.Fields[3].Data & ~MsiInterop.MsidbComponentAttributesSharedDllRefCount;
147 + this.Fields[3].Data = (int)this.Fields[3].Data & ~WindowsInstallerConstants.MsidbComponentAttributesSharedDllRefCount;
148 }
149 }
150 }
@@ -157,16 +155,16 @@ namespace WixToolset.Data.WindowsInstaller.Rows
155 /// <value>Permanent attribute of the component.</value>
156 public bool IsPermanent
157 {
160 - get { return MsiInterop.MsidbComponentAttributesPermanent == ((int)this.Fields[3].Data & MsiInterop.MsidbComponentAttributesPermanent); }
158 + get { return WindowsInstallerConstants.MsidbComponentAttributesPermanent == ((int)this.Fields[3].Data & WindowsInstallerConstants.MsidbComponentAttributesPermanent); }
159 set
160 {
161 if (value)
162 {
165 - this.Fields[3].Data = (int)this.Fields[3].Data | MsiInterop.MsidbComponentAttributesPermanent;
163 + this.Fields[3].Data = (int)this.Fields[3].Data | WindowsInstallerConstants.MsidbComponentAttributesPermanent;
164 }
165 else
166 {
169 - this.Fields[3].Data = (int)this.Fields[3].Data & ~MsiInterop.MsidbComponentAttributesPermanent;
167 + this.Fields[3].Data = (int)this.Fields[3].Data & ~WindowsInstallerConstants.MsidbComponentAttributesPermanent;
168 }
169 }
170 }
@@ -177,16 +175,16 @@ namespace WixToolset.Data.WindowsInstaller.Rows
175 /// <value>ODBC data source key path attribute of the component.</value>
176 public bool IsOdbcDataSourceKeyPath
177 {
180 - get { return MsiInterop.MsidbComponentAttributesODBCDataSource == ((int)this.Fields[3].Data & MsiInterop.MsidbComponentAttributesODBCDataSource); }
178 + get { return WindowsInstallerConstants.MsidbComponentAttributesODBCDataSource == ((int)this.Fields[3].Data & WindowsInstallerConstants.MsidbComponentAttributesODBCDataSource); }
179 set
180 {
181 if (value)
182 {
185 - this.Fields[3].Data = (int)this.Fields[3].Data | MsiInterop.MsidbComponentAttributesODBCDataSource;
183 + this.Fields[3].Data = (int)this.Fields[3].Data | WindowsInstallerConstants.MsidbComponentAttributesODBCDataSource;
184 }
185 else
186 {
189 - this.Fields[3].Data = (int)this.Fields[3].Data & ~MsiInterop.MsidbComponentAttributesODBCDataSource;
187 + this.Fields[3].Data = (int)this.Fields[3].Data & ~WindowsInstallerConstants.MsidbComponentAttributesODBCDataSource;
188 }
189 }
190 }
@@ -197,16 +195,16 @@ namespace WixToolset.Data.WindowsInstaller.Rows
195 /// <value>64-bitness of the component.</value>
196 public bool Is64Bit
197 {
200 - get { return MsiInterop.MsidbComponentAttributes64bit == ((int)this.Fields[3].Data & MsiInterop.MsidbComponentAttributes64bit); }
198 + get { return WindowsInstallerConstants.MsidbComponentAttributes64bit == ((int)this.Fields[3].Data & WindowsInstallerConstants.MsidbComponentAttributes64bit); }
199 set
200 {
201 if (value)
202 {
205 - this.Fields[3].Data = (int)this.Fields[3].Data | MsiInterop.MsidbComponentAttributes64bit;
203 + this.Fields[3].Data = (int)this.Fields[3].Data | WindowsInstallerConstants.MsidbComponentAttributes64bit;
204 }
205 else
206 {
209 - this.Fields[3].Data = (int)this.Fields[3].Data & ~MsiInterop.MsidbComponentAttributes64bit;
207 + this.Fields[3].Data = (int)this.Fields[3].Data & ~WindowsInstallerConstants.MsidbComponentAttributes64bit;
208 }
209 }
210 }
src/WixToolset.Data/WindowsInstaller/Rows/FileRow.cs
+8 -9
@@ -5,7 +5,6 @@ namespace WixToolset.Data.WindowsInstaller.Rows
5 using System;
6 using System.Diagnostics;
7 using System.Globalization;
8 - using WixToolset.Data.Msi;
8
9 /// <summary>
10 /// Specialization of a row for the file table.
@@ -174,8 +173,8 @@ namespace WixToolset.Data.WindowsInstaller.Rows
173 {
174 get
175 {
177 - bool compressedFlag = (0 < (this.Attributes & MsiInterop.MsidbFileAttributesCompressed));
178 - bool noncompressedFlag = (0 < (this.Attributes & MsiInterop.MsidbFileAttributesNoncompressed));
176 + bool compressedFlag = (0 < (this.Attributes & WindowsInstallerConstants.MsidbFileAttributesCompressed));
177 + bool noncompressedFlag = (0 < (this.Attributes & WindowsInstallerConstants.MsidbFileAttributesNoncompressed));
178
179 if (compressedFlag && noncompressedFlag)
180 {
@@ -200,22 +199,22 @@ namespace WixToolset.Data.WindowsInstaller.Rows
199 if (YesNoType.Yes == value)
200 {
201 // these are mutually exclusive
203 - this.Attributes |= MsiInterop.MsidbFileAttributesCompressed;
204 - this.Attributes &= ~MsiInterop.MsidbFileAttributesNoncompressed;
202 + this.Attributes |= WindowsInstallerConstants.MsidbFileAttributesCompressed;
203 + this.Attributes &= ~WindowsInstallerConstants.MsidbFileAttributesNoncompressed;
204 }
205 else if (YesNoType.No == value)
206 {
207 // these are mutually exclusive
209 - this.Attributes |= MsiInterop.MsidbFileAttributesNoncompressed;
210 - this.Attributes &= ~MsiInterop.MsidbFileAttributesCompressed;
208 + this.Attributes |= WindowsInstallerConstants.MsidbFileAttributesNoncompressed;
209 + this.Attributes &= ~WindowsInstallerConstants.MsidbFileAttributesCompressed;
210 }
211 else // not specified
212 {
213 Debug.Assert(YesNoType.NotSet == value);
214
215 // clear any compression bits
217 - this.Attributes &= ~MsiInterop.MsidbFileAttributesCompressed;
218 - this.Attributes &= ~MsiInterop.MsidbFileAttributesNoncompressed;
216 + this.Attributes &= ~WindowsInstallerConstants.MsidbFileAttributesCompressed;
217 + this.Attributes &= ~WindowsInstallerConstants.MsidbFileAttributesNoncompressed;
218 }
219 }
220 }
src/WixToolset.Data/WindowsInstaller/WindowsInstallerConstants.cs new
+259
@@ -0,0 +1,259 @@
1 +// Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information.
2 +
3 +namespace WixToolset.Data.WindowsInstaller
4 +{
5 + public static class WindowsInstallerConstants
6 + {
7 + // Component.Attributes
8 + public const int MsidbComponentAttributesLocalOnly = 0;
9 + public const int MsidbComponentAttributesSourceOnly = 1;
10 + public const int MsidbComponentAttributesOptional = 2;
11 + public const int MsidbComponentAttributesRegistryKeyPath = 4;
12 + public const int MsidbComponentAttributesSharedDllRefCount = 8;
13 + public const int MsidbComponentAttributesPermanent = 16;
14 + public const int MsidbComponentAttributesODBCDataSource = 32;
15 + public const int MsidbComponentAttributesTransitive = 64;
16 + public const int MsidbComponentAttributesNeverOverwrite = 128;
17 + public const int MsidbComponentAttributes64bit = 256;
18 + public const int MsidbComponentAttributesDisableRegistryReflection = 512;
19 + public const int MsidbComponentAttributesUninstallOnSupersedence = 1024;
20 + public const int MsidbComponentAttributesShared = 2048;
21 +
22 + // BBControl.Attributes & Control.Attributes
23 + public const int MsidbControlAttributesVisible = 0x00000001;
24 + public const int MsidbControlAttributesEnabled = 0x00000002;
25 + public const int MsidbControlAttributesSunken = 0x00000004;
26 + public const int MsidbControlAttributesIndirect = 0x00000008;
27 + public const int MsidbControlAttributesInteger = 0x00000010;
28 + public const int MsidbControlAttributesRTLRO = 0x00000020;
29 + public const int MsidbControlAttributesRightAligned = 0x00000040;
30 + public const int MsidbControlAttributesLeftScroll = 0x00000080;
31 + public const int MsidbControlAttributesBiDi = MsidbControlAttributesRTLRO | MsidbControlAttributesRightAligned | MsidbControlAttributesLeftScroll;
32 +
33 + // Text controls
34 + public const int MsidbControlAttributesTransparent = 0x00010000;
35 + public const int MsidbControlAttributesNoPrefix = 0x00020000;
36 + public const int MsidbControlAttributesNoWrap = 0x00040000;
37 + public const int MsidbControlAttributesFormatSize = 0x00080000;
38 + public const int MsidbControlAttributesUsersLanguage = 0x00100000;
39 +
40 + // Edit controls
41 + public const int MsidbControlAttributesMultiline = 0x00010000;
42 + public const int MsidbControlAttributesPasswordInput = 0x00200000;
43 +
44 + // ProgressBar controls
45 + public const int MsidbControlAttributesProgress95 = 0x00010000;
46 +
47 + // VolumeSelectCombo and DirectoryCombo controls
48 + public const int MsidbControlAttributesRemovableVolume = 0x00010000;
49 + public const int MsidbControlAttributesFixedVolume = 0x00020000;
50 + public const int MsidbControlAttributesRemoteVolume = 0x00040000;
51 + public const int MsidbControlAttributesCDROMVolume = 0x00080000;
52 + public const int MsidbControlAttributesRAMDiskVolume = 0x00100000;
53 + public const int MsidbControlAttributesFloppyVolume = 0x00200000;
54 +
55 + // VolumeCostList controls
56 + public const int MsidbControlShowRollbackCost = 0x00400000;
57 +
58 + // ListBox and ComboBox controls
59 + public const int MsidbControlAttributesSorted = 0x00010000;
60 + public const int MsidbControlAttributesComboList = 0x00020000;
61 +
62 + // picture button controls
63 + public const int MsidbControlAttributesImageHandle = 0x00010000;
64 + public const int MsidbControlAttributesPushLike = 0x00020000;
65 + public const int MsidbControlAttributesBitmap = 0x00040000;
66 + public const int MsidbControlAttributesIcon = 0x00080000;
67 + public const int MsidbControlAttributesFixedSize = 0x00100000;
68 + public const int MsidbControlAttributesIconSize16 = 0x00200000;
69 + public const int MsidbControlAttributesIconSize32 = 0x00400000;
70 + public const int MsidbControlAttributesIconSize48 = 0x00600000;
71 + public const int MsidbControlAttributesElevationShield = 0x00800000;
72 +
73 + // RadioButton controls
74 + public const int MsidbControlAttributesHasBorder = 0x01000000;
75 +
76 + // CustomAction.Type
77 + // executable types
78 + public const int MsidbCustomActionTypeDll = 0x00000001; // Target = entry point name
79 + public const int MsidbCustomActionTypeExe = 0x00000002; // Target = command line args
80 + public const int MsidbCustomActionTypeTextData = 0x00000003; // Target = text string to be formatted and set into property
81 + public const int MsidbCustomActionTypeJScript = 0x00000005; // Target = entry point name; null if none to call
82 + public const int MsidbCustomActionTypeVBScript = 0x00000006; // Target = entry point name; null if none to call
83 + public const int MsidbCustomActionTypeInstall = 0x00000007; // Target = property list for nested engine initialization
84 + public const int MsidbCustomActionTypeSourceBits = 0x00000030;
85 + public const int MsidbCustomActionTypeTargetBits = 0x00000007;
86 + public const int MsidbCustomActionTypeReturnBits = 0x000000C0;
87 + public const int MsidbCustomActionTypeExecuteBits = 0x00000700;
88 +
89 + // source of code
90 + public const int MsidbCustomActionTypeBinaryData = 0x00000000; // Source = Binary.Name; data stored in stream
91 + public const int MsidbCustomActionTypeSourceFile = 0x00000010; // Source = File.File; file part of installation
92 + public const int MsidbCustomActionTypeDirectory = 0x00000020; // Source = Directory.Directory; folder containing existing file
93 + public const int MsidbCustomActionTypeProperty = 0x00000030; // Source = Property.Property; full path to executable
94 +
95 + // return processing; default is syncronous execution; process return code
96 + public const int MsidbCustomActionTypeContinue = 0x00000040; // ignore action return status; continue running
97 + public const int MsidbCustomActionTypeAsync = 0x00000080; // run asynchronously
98 +
99 + // execution scheduling flags; default is execute whenever sequenced
100 + public const int MsidbCustomActionTypeFirstSequence = 0x00000100; // skip if UI sequence already run
101 + public const int MsidbCustomActionTypeOncePerProcess = 0x00000200; // skip if UI sequence already run in same process
102 + public const int MsidbCustomActionTypeClientRepeat = 0x00000300; // run on client only if UI already run on client
103 + public const int MsidbCustomActionTypeInScript = 0x00000400; // queue for execution within script
104 + public const int MsidbCustomActionTypeRollback = 0x00000100; // in conjunction with InScript: queue in Rollback script
105 + public const int MsidbCustomActionTypeCommit = 0x00000200; // in conjunction with InScript: run Commit ops from script on success
106 +
107 + // security context flag; default to impersonate as user; valid only if InScript
108 + public const int MsidbCustomActionTypeNoImpersonate = 0x00000800; // no impersonation; run in system context
109 + public const int MsidbCustomActionTypeTSAware = 0x00004000; // impersonate for per-machine installs on TS machines
110 + public const int MsidbCustomActionType64BitScript = 0x00001000; // script should run in 64bit process
111 + public const int MsidbCustomActionTypeHideTarget = 0x00002000; // don't record the contents of the Target field in the log file.
112 +
113 + public const int MsidbCustomActionTypePatchUninstall = 0x00008000; // run on patch uninstall
114 +
115 + // Dialog.Attributes
116 + public const int MsidbDialogAttributesVisible = 0x00000001;
117 + public const int MsidbDialogAttributesModal = 0x00000002;
118 + public const int MsidbDialogAttributesMinimize = 0x00000004;
119 + public const int MsidbDialogAttributesSysModal = 0x00000008;
120 + public const int MsidbDialogAttributesKeepModeless = 0x00000010;
121 + public const int MsidbDialogAttributesTrackDiskSpace = 0x00000020;
122 + public const int MsidbDialogAttributesUseCustomPalette = 0x00000040;
123 + public const int MsidbDialogAttributesRTLRO = 0x00000080;
124 + public const int MsidbDialogAttributesRightAligned = 0x00000100;
125 + public const int MsidbDialogAttributesLeftScroll = 0x00000200;
126 + public const int MsidbDialogAttributesBiDi = MsidbDialogAttributesRTLRO | MsidbDialogAttributesRightAligned | MsidbDialogAttributesLeftScroll;
127 + public const int MsidbDialogAttributesError = 0x00010000;
128 + public const int CommonControlAttributesInvert = MsidbControlAttributesVisible + MsidbControlAttributesEnabled;
129 + public const int DialogAttributesInvert = MsidbDialogAttributesVisible + MsidbDialogAttributesModal + MsidbDialogAttributesMinimize;
130 +
131 + // Feature.Attributes
132 + public const int MsidbFeatureAttributesFavorLocal = 0;
133 + public const int MsidbFeatureAttributesFavorSource = 1;
134 + public const int MsidbFeatureAttributesFollowParent = 2;
135 + public const int MsidbFeatureAttributesFavorAdvertise = 4;
136 + public const int MsidbFeatureAttributesDisallowAdvertise = 8;
137 + public const int MsidbFeatureAttributesUIDisallowAbsent = 16;
138 + public const int MsidbFeatureAttributesNoUnsupportedAdvertise = 32;
139 +
140 + // File.Attributes
141 + public const int MsidbFileAttributesReadOnly = 1;
142 + public const int MsidbFileAttributesHidden = 2;
143 + public const int MsidbFileAttributesSystem = 4;
144 + public const int MsidbFileAttributesVital = 512;
145 + public const int MsidbFileAttributesChecksum = 1024;
146 + public const int MsidbFileAttributesPatchAdded = 4096;
147 + public const int MsidbFileAttributesNoncompressed = 8192;
148 + public const int MsidbFileAttributesCompressed = 16384;
149 +
150 + // IniFile.Action & RemoveIniFile.Action
151 + public const int MsidbIniFileActionAddLine = 0;
152 + public const int MsidbIniFileActionCreateLine = 1;
153 + public const int MsidbIniFileActionRemoveLine = 2;
154 + public const int MsidbIniFileActionAddTag = 3;
155 + public const int MsidbIniFileActionRemoveTag = 4;
156 +
157 + // MoveFile.Options
158 + public const int MsidbMoveFileOptionsMove = 1;
159 +
160 + // ServiceInstall.Attributes
161 + public const int MsidbServiceInstallOwnProcess = 0x00000010;
162 + public const int MsidbServiceInstallShareProcess = 0x00000020;
163 + public const int MsidbServiceInstallInteractive = 0x00000100;
164 + public const int MsidbServiceInstallAutoStart = 0x00000002;
165 + public const int MsidbServiceInstallDemandStart = 0x00000003;
166 + public const int MsidbServiceInstallDisabled = 0x00000004;
167 + public const int MsidbServiceInstallErrorIgnore = 0x00000000;
168 + public const int MsidbServiceInstallErrorNormal = 0x00000001;
169 + public const int MsidbServiceInstallErrorCritical = 0x00000003;
170 + public const int MsidbServiceInstallErrorControlVital = 0x00008000;
171 +
172 + // ServiceConfig.Event
173 + public const int MsidbServiceConfigEventInstall = 0x00000001;
174 + public const int MsidbServiceConfigEventUninstall = 0x00000002;
175 + public const int MsidbServiceConfigEventReinstall = 0x00000004;
176 +
177 + // ServiceControl.Attributes
178 + public const int MsidbServiceControlEventStart = 0x00000001;
179 + public const int MsidbServiceControlEventStop = 0x00000002;
180 + public const int MsidbServiceControlEventDelete = 0x00000008;
181 + public const int MsidbServiceControlEventUninstallStart = 0x00000010;
182 + public const int MsidbServiceControlEventUninstallStop = 0x00000020;
183 + public const int MsidbServiceControlEventUninstallDelete = 0x00000080;
184 +
185 + // TextStyle.StyleBits
186 + public const int MsidbTextStyleStyleBitsBold = 1;
187 + public const int MsidbTextStyleStyleBitsItalic = 2;
188 + public const int MsidbTextStyleStyleBitsUnderline = 4;
189 + public const int MsidbTextStyleStyleBitsStrike = 8;
190 +
191 + // Upgrade.Attributes
192 + public const int MsidbUpgradeAttributesMigrateFeatures = 0x00000001;
193 + public const int MsidbUpgradeAttributesOnlyDetect = 0x00000002;
194 + public const int MsidbUpgradeAttributesIgnoreRemoveFailure = 0x00000004;
195 + public const int MsidbUpgradeAttributesVersionMinInclusive = 0x00000100;
196 + public const int MsidbUpgradeAttributesVersionMaxInclusive = 0x00000200;
197 + public const int MsidbUpgradeAttributesLanguagesExclusive = 0x00000400;
198 +
199 + // Registry Hive Roots
200 + public const int MsidbRegistryRootClassesRoot = 0;
201 + public const int MsidbRegistryRootCurrentUser = 1;
202 + public const int MsidbRegistryRootLocalMachine = 2;
203 + public const int MsidbRegistryRootUsers = 3;
204 +
205 + // Locator Types
206 + public const int MsidbLocatorTypeDirectory = 0;
207 + public const int MsidbLocatorTypeFileName = 1;
208 + public const int MsidbLocatorTypeRawValue = 2;
209 + public const int MsidbLocatorType64bit = 16;
210 +
211 + public const int MsidbClassAttributesRelativePath = 1;
212 +
213 + // RemoveFile.InstallMode
214 + public const int MsidbRemoveFileInstallModeOnInstall = 0x00000001;
215 + public const int MsidbRemoveFileInstallModeOnRemove = 0x00000002;
216 + public const int MsidbRemoveFileInstallModeOnBoth = 0x00000003;
217 +
218 + // ODBCDataSource.Registration
219 + public const int MsidbODBCDataSourceRegistrationPerMachine = 0;
220 + public const int MsidbODBCDataSourceRegistrationPerUser = 1;
221 +
222 + // ModuleConfiguration.Format
223 + public const int MsidbModuleConfigurationFormatText = 0;
224 + public const int MsidbModuleConfigurationFormatKey = 1;
225 + public const int MsidbModuleConfigurationFormatInteger = 2;
226 + public const int MsidbModuleConfigurationFormatBitfield = 3;
227 +
228 + // ModuleConfiguration.Attributes
229 + public const int MsidbMsmConfigurableOptionKeyNoOrphan = 1;
230 + public const int MsidbMsmConfigurableOptionNonNullable = 2;
231 +
232 + // ' Windows API function ShowWindow constants - used in Shortcut table
233 + public const int SWSHOWNORMAL = 0x00000001;
234 + public const int SWSHOWMAXIMIZED = 0x00000003;
235 + public const int SWSHOWMINNOACTIVE = 0x00000007;
236 +
237 + public const int MsidbEmbeddedUI = 0x01;
238 + public const int MsidbEmbeddedHandlesBasic = 0x02;
239 +
240 + public const int INSTALLLOGMODE_FATALEXIT = 0x00001;
241 + public const int INSTALLLOGMODE_ERROR = 0x00002;
242 + public const int INSTALLLOGMODE_WARNING = 0x00004;
243 + public const int INSTALLLOGMODE_USER = 0x00008;
244 + public const int INSTALLLOGMODE_INFO = 0x00010;
245 + public const int INSTALLLOGMODE_FILESINUSE = 0x00020;
246 + public const int INSTALLLOGMODE_RESOLVESOURCE = 0x00040;
247 + public const int INSTALLLOGMODE_OUTOFDISKSPACE = 0x00080;
248 + public const int INSTALLLOGMODE_ACTIONSTART = 0x00100;
249 + public const int INSTALLLOGMODE_ACTIONDATA = 0x00200;
250 + public const int INSTALLLOGMODE_PROGRESS = 0x00400;
251 + public const int INSTALLLOGMODE_COMMONDATA = 0x00800;
252 + public const int INSTALLLOGMODE_INITIALIZE = 0x01000;
253 + public const int INSTALLLOGMODE_TERMINATE = 0x02000;
254 + public const int INSTALLLOGMODE_SHOWDIALOG = 0x04000;
255 + public const int INSTALLLOGMODE_RMFILESINUSE = 0x02000000;
256 + public const int INSTALLLOGMODE_INSTALLSTART = 0x04000000;
257 + public const int INSTALLLOGMODE_INSTALLEND = 0x08000000;
258 + }
259 +}
src/WixToolset.Data/WindowsInstaller/WindowsInstallerStandard.cs renamed
+3 -3
@@ -1,11 +1,11 @@
1 -// Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information.
1 +// Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information.
2
3 -namespace WixToolset.Data
3 +namespace WixToolset.Data.WindowsInstaller
4 {
5 using System.Collections.Generic;
6 using WixToolset.Data.Tuples;
7
8 - public class WindowsInstallerStandard
8 + public static class WindowsInstallerStandard
9 {
10 private static readonly HashSet<string> standardActionNames = new HashSet<string>
11 {
src/WixToolset.Data/WixToolset.Data.csproj
+2 -1
@@ -4,6 +4,7 @@
4 <Project Sdk="Microsoft.NET.Sdk">
5 <PropertyGroup>
6 <TargetFramework>netstandard2.0</TargetFramework>
7 + <LangVersion>7.3</LangVersion>
8 <Title>WiX Toolset Data</Title>
9 <Description></Description>
10 <DebugType>embedded</DebugType>
@@ -11,7 +12,7 @@
12 </PropertyGroup>
13
14 <ItemGroup>
14 - <PackageReference Include="Microsoft.SourceLink.GitHub" Version="1.0.0-beta-63102-01" PrivateAssets="All"/>
15 + <PackageReference Include="Microsoft.SourceLink.GitHub" Version="1.0.0-beta2-18618-05" PrivateAssets="All" />
16 <PackageReference Include="Nerdbank.GitVersioning" Version="2.1.65" PrivateAssets="all" />
17 </ItemGroup>
18 </Project>
src/WixToolset.Data/Xsd/wix.xsd deleted
-13035
@@ -1,13035 +0,0 @@
1 -<?xml version="1.0" encoding="utf-8"?>
2 -<!-- Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. -->
3 -
4 -
5 -<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
6 - xmlns:xse=" http://wixtoolset.org/schemas/XmlSchemaExtension"
7 - xmlns:html="http://www.w3.org/1999/xhtml"
8 - targetNamespace="http://wixtoolset.org/schemas/v4/wxs"
9 - xmlns="http://wixtoolset.org/schemas/v4/wxs">
10 - <xs:annotation>
11 - <xs:documentation>
12 - Schema for describing Windows Installer database files (.msi/.msm/.pcp).
13 - </xs:documentation>
14 - <xs:appinfo>
15 - <xse:main />
16 - </xs:appinfo>
17 - </xs:annotation>
18 - <xs:import namespace="http://www.w3.org/1999/xhtml" />
19 - <xs:element name="Wix">
20 - <xs:annotation>
21 - <xs:documentation>
22 - This is the top-level container element for every wxs file. Among the possible children,
23 - the Bundle, Product, Module, Patch, and PatchCreation elements are analogous to the main function in a C program.
24 - There can only be one of these present when linking occurs. Product compiles into an msi file,
25 - Module compiles into an msm file, PatchCreation compiles into a pcp file. The Fragment element
26 - is an atomic unit which ultimately links into either a Product, Module, or PatchCreation. The
27 - Fragment can either be completely included or excluded during linking.
28 - </xs:documentation>
29 - </xs:annotation>
30 - <xs:complexType>
31 - <xs:choice minOccurs="0">
32 - <xs:sequence>
33 - <xs:choice minOccurs="0">
34 - <xs:element ref="Bundle" />
35 - <xs:element ref="Product" />
36 - <xs:element ref="Module" />
37 - <xs:element ref="Patch" />
38 - </xs:choice>
39 - <xs:element ref="Fragment" minOccurs="0" maxOccurs="unbounded" />
40 - </xs:sequence>
41 - <xs:element ref="PatchCreation" />
42 - </xs:choice>
43 - <xs:attribute name="RequiredVersion" type="VersionType">
44 - <xs:annotation>
45 - <xs:documentation>Required version of the WiX toolset to compile this input file.</xs:documentation>
46 - </xs:annotation>
47 - </xs:attribute>
48 - <xs:anyAttribute namespace="##other" processContents="lax">
49 - <xs:annotation>
50 - <xs:documentation>
51 - Extensibility point in the WiX XML Schema. Schema extensions can register additional attributes at this point in the schema.
52 - </xs:documentation>
53 - </xs:annotation>
54 - </xs:anyAttribute>
55 - </xs:complexType>
56 - </xs:element>
57 - <xs:element name="Include">
58 - <xs:annotation>
59 - <xs:documentation>
60 - This is the top-level container element for every wxi file.
61 - </xs:documentation>
62 - </xs:annotation>
63 - <xs:complexType>
64 - <xs:choice minOccurs="0" maxOccurs="unbounded">
65 - <xs:any namespace="##any" processContents="lax" />
66 - </xs:choice>
67 - </xs:complexType>
68 - </xs:element>
69 - <xs:element name="Bundle">
70 - <xs:annotation>
71 - <xs:documentation>The root element for creating bundled packages.</xs:documentation>
72 - </xs:annotation>
73 - <xs:complexType>
74 - <xs:choice minOccurs="0" maxOccurs="unbounded">
75 - <xs:element ref="ApprovedExeForElevation" minOccurs="0" maxOccurs="unbounded" />
76 - <xs:element ref="Log" minOccurs="0" maxOccurs="1" />
77 - <xs:element ref="Catalog" minOccurs="0" maxOccurs="unbounded" />
78 - <xs:element ref="BootstrapperApplication" minOccurs="0" maxOccurs="1" />
79 - <xs:element ref="BootstrapperApplicationRef" minOccurs="0" maxOccurs="1" />
80 - <xs:element ref="OptionalUpdateRegistration" minOccurs="0" maxOccurs="1" />
81 - <xs:element ref="Chain" minOccurs="1" maxOccurs="1" />
82 - <xs:element ref="Container" />
83 - <xs:element ref="ContainerRef" />
84 - <xs:element ref="PayloadGroup" />
85 - <xs:element ref="PayloadGroupRef" />
86 - <xs:element ref="RelatedBundle" />
87 - <xs:element ref="Update" />
88 - <xs:element ref="Variable" />
89 - <xs:element ref="WixVariable" />
90 - <xs:any namespace="##other" processContents="lax">
91 - <xs:annotation>
92 - <xs:documentation>
93 - Extensibility point in the WiX XML Schema. Schema extensions can register additional
94 - elements at this point in the schema.
95 - </xs:documentation>
96 - </xs:annotation>
97 - </xs:any>
98 - </xs:choice>
99 - <xs:attribute name="AboutUrl" type="xs:string">
100 - <xs:annotation>
101 - <xs:documentation>
102 - A URL for more information about the bundle to display in Programs and Features (also
103 - known as Add/Remove Programs).
104 - </xs:documentation>
105 - </xs:annotation>
106 - </xs:attribute>
107 - <xs:attribute name="Copyright" type="xs:string">
108 - <xs:annotation>
109 - <xs:documentation>
110 - The legal copyright found in the version resources of final bundle executable. If
111 - this attribute is not provided the copyright will be set to "Copyright (c) [Bundle/@Manufacturer]. All rights reserved.".
112 - </xs:documentation>
113 - </xs:annotation>
114 - </xs:attribute>
115 - <xs:attribute name="Compressed" type="YesNoDefaultTypeUnion">
116 - <xs:annotation>
117 - <xs:documentation>Whether Packages and Payloads not assigned to a container should be added to the default attached container or if they should be external. The default is yes.</xs:documentation>
118 - </xs:annotation>
119 - </xs:attribute>
120 - <xs:attribute name="DisableModify" type="YesNoButtonTypeUnion">
121 - <xs:annotation>
122 - <xs:documentation>
123 - Determines whether the bundle can be modified via the Programs and Features (also known as
124 - Add/Remove Programs). If the value is "button" then Programs and Features will show a single
125 - "Uninstall/Change" button. If the value is "yes" then Programs and Features will only show
126 - the "Uninstall" button". If the value is "no", the default, then a "Change" button is shown.
127 - See the DisableRemove attribute for information how to not display the bundle in Programs
128 - and Features.
129 - </xs:documentation>
130 - </xs:annotation>
131 - </xs:attribute>
132 - <xs:attribute name="DisableRemove" type="YesNoTypeUnion">
133 - <xs:annotation>
134 - <xs:documentation>
135 - Determines whether the bundle can be removed via the Programs and Features (also
136 - known as Add/Remove Programs). If the value is "yes" then the "Uninstall" button will
137 - not be displayed. The default is "no" which ensures there is an "Uninstall" button to
138 - remove the bundle. If the "DisableModify" attribute is also "yes" or "button" then the
139 - bundle will not be displayed in Progams and Features and another mechanism (such as
140 - registering as a related bundle addon) must be used to ensure the bundle can be removed.
141 - </xs:documentation>
142 - </xs:annotation>
143 - </xs:attribute>
144 - <xs:attribute name="DisableRepair" type="YesNoTypeUnion">
145 - <xs:annotation>
146 - <xs:appinfo>
147 - <xse:deprecated />
148 - </xs:appinfo>
149 - </xs:annotation>
150 - </xs:attribute>
151 - <xs:attribute name="HelpTelephone" type="xs:string">
152 - <xs:annotation>
153 - <xs:documentation>
154 - A telephone number for help to display in Programs and Features (also known as
155 - Add/Remove Programs).
156 - </xs:documentation>
157 - </xs:annotation>
158 - </xs:attribute>
159 - <xs:attribute name="HelpUrl" type="xs:string">
160 - <xs:annotation>
161 - <xs:documentation>
162 - A URL to the help for the bundle to display in Programs and Features (also known as
163 - Add/Remove Programs).
164 - </xs:documentation>
165 - </xs:annotation>
166 - </xs:attribute>
167 - <xs:attribute name="IconSourceFile" type="xs:string">
168 - <xs:annotation>
169 - <xs:documentation>
170 - Path to an icon that will replace the default icon in the final Bundle executable.
171 - This icon will also be displayed in Programs and Features (also known as Add/Remove
172 - Programs).
173 - </xs:documentation>
174 - </xs:annotation>
175 - </xs:attribute>
176 - <xs:attribute name="Manufacturer" type="xs:string">
177 - <xs:annotation>
178 - <xs:documentation>
179 - The publisher of the bundle to display in Programs and Features (also known as
180 - Add/Remove Programs).
181 - </xs:documentation>
182 - </xs:annotation>
183 - </xs:attribute>
184 - <xs:attribute name="Name" type="xs:string">
185 - <xs:annotation>
186 - <xs:documentation>
187 - The name of the bundle to display in Programs and Features (also known as Add/Remove
188 - Programs). This name can be accessed and overwritten by a BootstrapperApplication
189 - using the WixBundleName bundle variable.
190 - </xs:documentation>
191 - </xs:annotation>
192 - </xs:attribute>
193 - <xs:attribute name="ParentName" type="xs:string">
194 - <xs:annotation>
195 - <xs:documentation>
196 - The name of the parent bundle to display in Installed Updates (also known as Add/Remove
197 - Programs). This name is used to nest or group bundles that will appear as updates.
198 - If the parent name does not actually exist, a virtual parent is created automatically.
199 - </xs:documentation>
200 - </xs:annotation>
201 - </xs:attribute>
202 - <xs:attribute name="SplashScreenSourceFile" type="xs:string">
203 - <xs:annotation>
204 - <xs:documentation>Path to a bitmap that will be shown as the bootstrapper application is being loaded. If this attribute is not specified, no splash screen will be displayed.</xs:documentation>
205 - </xs:annotation>
206 - </xs:attribute>
207 - <xs:attribute name="Tag" type="xs:string">
208 - <xs:annotation>
209 - <xs:documentation>Set this string to uniquely identify this bundle to its own BA, and to related bundles. The value of this string only matters to the BA, and its value has no direct effect on engine functionality.</xs:documentation>
210 - </xs:annotation>
211 - </xs:attribute>
212 - <xs:attribute name="UpdateUrl" type="xs:string">
213 - <xs:annotation>
214 - <xs:documentation>
215 - A URL for updates of the bundle to display in Programs and Features (also
216 - known as Add/Remove Programs).
217 - </xs:documentation>
218 - </xs:annotation>
219 - </xs:attribute>
220 - <xs:attribute name="UpgradeCode" type="Guid" use="required">
221 - <xs:annotation>
222 - <xs:documentation>
223 - Unique identifier for a family of bundles. If two bundles have the same UpgradeCode the
224 - bundle with the highest version will be installed.
225 - </xs:documentation>
226 - </xs:annotation>
227 - </xs:attribute>
228 - <xs:attribute name="Version" type="xs:string" use="required">
229 - <xs:annotation>
230 - <xs:documentation>
231 - The version of the bundle. Newer versions upgrade earlier versions of the bundles
232 - with matching UpgradeCodes. If the bundle is registered in Programs and Features
233 - then this attribute will be displayed in the Programs and Features user interface.
234 - </xs:documentation>
235 - </xs:annotation>
236 - </xs:attribute>
237 - <xs:attribute name="Condition" type="xs:string">
238 - <xs:annotation>
239 - <xs:documentation>
240 - The condition of the bundle. If the condition is not met, the bundle will
241 - refuse to run. Conditions are checked before the bootstrapper application is loaded
242 - (before detect), and thus can only reference built-in variables such as
243 - variables which indicate the version of the OS.
244 - </xs:documentation>
245 - </xs:annotation>
246 - </xs:attribute>
247 - <xs:anyAttribute namespace="##other" processContents="lax">
248 - <xs:annotation>
249 - <xs:documentation>
250 - Extensibility point in the WiX XML Schema. Schema extensions can register additional
251 - attributes at this point in the schema.
252 - </xs:documentation>
253 - </xs:annotation>
254 - </xs:anyAttribute>
255 - </xs:complexType>
256 - </xs:element>
257 - <xs:element name="ApprovedExeForElevation">
258 - <xs:annotation>
259 - <xs:documentation>Provides information about an .exe so that the BA can request the engine to run it elevated from any secure location.</xs:documentation>
260 - <xs:appinfo>
261 - <xse:parent namespace="http://schemas.microsoft.com/wix/2006/wi" ref="Bundle" />
262 - </xs:appinfo>
263 - </xs:annotation>
264 - <xs:complexType>
265 - <xs:attribute name="Id" type="xs:string" use="required">
266 - <xs:annotation>
267 - <xs:documentation>The identifier of the ApprovedExeForElevation element.</xs:documentation>
268 - </xs:annotation>
269 - </xs:attribute>
270 - <xs:attribute name="Key" type="xs:string" use="required">
271 - <xs:annotation>
272 - <xs:documentation>
273 - The key path.
274 - For security purposes, the root key will be HKLM and Variables are not supported.
275 - </xs:documentation>
276 - </xs:annotation>
277 - </xs:attribute>
278 - <xs:attribute name="Value" type="xs:string">
279 - <xs:annotation>
280 - <xs:documentation>
281 - The value name.
282 - For security purposes, Variables are not supported.
283 - </xs:documentation>
284 - </xs:annotation>
285 - </xs:attribute>
286 - <xs:attribute name="Win64" type="YesNoTypeUnion">
287 - <xs:annotation>
288 - <xs:documentation>
289 - Instructs the search to look in the 64-bit registry when the value is 'yes'.
290 - When the value is 'no', the search looks in the 32-bit registry.
291 - The default value is 'no'.
292 - </xs:documentation>
293 - </xs:annotation>
294 - </xs:attribute>
295 - </xs:complexType>
296 - </xs:element>
297 - <xs:element name="Log">
298 - <xs:annotation>
299 - <xs:documentation>Overrides the default log settings for a bundle.</xs:documentation>
300 - <xs:appinfo>
301 - <xse:parent namespace="http://wixtoolset.org/schemas/v4/wxs" ref="Bundle" />
302 - </xs:appinfo>
303 - </xs:annotation>
304 - <xs:complexType>
305 - <xs:attribute name="Disable" type="YesNoTypeUnion">
306 - <xs:annotation>
307 - <xs:documentation>
308 - Disables the default logging in the Bundle. The end user can still generate a
309 - log file by specifying the "-l" command-line argument when installing the
310 - Bundle.
311 - </xs:documentation>
312 - </xs:annotation>
313 - </xs:attribute>
314 - <xs:attribute name="PathVariable" type="xs:string">
315 - <xs:annotation>
316 - <xs:documentation>
317 - Name of a Variable that will hold the path to the log file. An empty value
318 - will cause the variable to not be set. The default is "WixBundleLog".
319 - </xs:documentation>
320 - </xs:annotation>
321 - </xs:attribute>
322 - <xs:attribute name="Prefix" type="xs:string">
323 - <xs:annotation>
324 - <xs:documentation>
325 - File name and optionally a relative path to use as the prefix for the log file. The
326 - default is to use the Bundle/@Name or, if Bundle/@Name is not specified, the value
327 - "Setup".
328 - </xs:documentation>
329 - </xs:annotation>
330 - </xs:attribute>
331 - <xs:attribute name="Extension" type="xs:string">
332 - <xs:annotation>
333 - <xs:documentation>The extension to use for the log. The default is ".log".</xs:documentation>
334 - </xs:annotation>
335 - </xs:attribute>
336 - </xs:complexType>
337 - </xs:element>
338 - <xs:element name="Catalog">
339 - <xs:annotation>
340 - <xs:documentation>Specify one or more catalog files that will be used to verify the contents of the bundle.</xs:documentation>
341 - <xs:appinfo>
342 - <xse:parent namespace="http://wixtoolset.org/schemas/v4/wxs" ref="Bundle" />
343 - </xs:appinfo>
344 - </xs:annotation>
345 - <xs:complexType>
346 - <xs:attribute name="Id" type="xs:string">
347 - <xs:annotation>
348 - <xs:documentation>The identifier of the catalog element.</xs:documentation>
349 - </xs:annotation>
350 - </xs:attribute>
351 - <xs:attribute name="SourceFile" type="xs:string">
352 - <xs:annotation>
353 - <xs:documentation>The catalog file</xs:documentation>
354 - </xs:annotation>
355 - </xs:attribute>
356 - </xs:complexType>
357 - </xs:element>
358 - <xs:element name="BootstrapperApplication">
359 - <xs:annotation>
360 - <xs:documentation>Contains all the relevant information about the setup UI.</xs:documentation>
361 - <xs:appinfo>
362 - <xse:parent namespace="http://wixtoolset.org/schemas/v4/wxs" ref="Bundle" />
363 - <xse:parent namespace="http://wixtoolset.org/schemas/v4/wxs" ref="Fragment" />
364 - </xs:appinfo>
365 - </xs:annotation>
366 - <xs:complexType>
367 - <xs:choice minOccurs="0" maxOccurs="unbounded">
368 - <xs:element ref="Payload" />
369 - <xs:element ref="PayloadGroupRef" />
370 - <xs:any namespace="##other" processContents="lax">
371 - <xs:annotation>
372 - <xs:documentation>
373 - Extensibility point in the WiX XML Schema. Schema extensions can register additional
374 - elements at this point in the schema.
375 - </xs:documentation>
376 - </xs:annotation>
377 - </xs:any>
378 - </xs:choice>
379 - <xs:attribute name="Id" type="xs:string">
380 - <xs:annotation>
381 - <xs:documentation>The identifier of the BootstrapperApplication element. Only required if you want to reference this element using a BootstrapperApplicationRef element.</xs:documentation>
382 - </xs:annotation>
383 - </xs:attribute>
384 - <xs:attribute name="SourceFile" type="xs:string">
385 - <xs:annotation>
386 - <xs:documentation>The DLL with the bootstrapper application entry function.</xs:documentation>
387 - </xs:annotation>
388 - </xs:attribute>
389 - <xs:attribute name="Name" type="xs:string">
390 - <xs:annotation>
391 - <xs:documentation>The relative destination path and file name for the bootstrapper application DLL. The default is the source file name. Use this attribute to rename the bootstrapper application DLL or extract it into a subfolder. The use of '..' directories is not allowed.</xs:documentation>
392 - </xs:annotation>
393 - </xs:attribute>
394 - </xs:complexType>
395 - </xs:element>
396 - <xs:element name="BootstrapperApplicationRef">
397 - <xs:annotation>
398 - <xs:documentation>Used to reference a BootstrapperApplication element and optionally add additional payloads to the bootstrapper application.</xs:documentation>
399 - <xs:appinfo>
400 - <xse:parent namespace="http://wixtoolset.org/schemas/v4/wxs" ref="Bundle" />
401 - <xse:parent namespace="http://wixtoolset.org/schemas/v4/wxs" ref="Fragment" />
402 - </xs:appinfo>
403 - </xs:annotation>
404 - <xs:complexType>
405 - <xs:choice minOccurs="0" maxOccurs="unbounded">
406 - <xs:element ref="Payload" />
407 - <xs:element ref="PayloadGroupRef" />
408 - <xs:any namespace="##other" processContents="lax">
409 - <xs:annotation>
410 - <xs:documentation>
411 - Extensibility point in the WiX XML Schema. Schema extensions can register additional
412 - elements at this point in the schema.
413 - </xs:documentation>
414 - </xs:annotation>
415 - </xs:any>
416 - </xs:choice>
417 - <xs:attribute name="Id" type="xs:string" use="required">
418 - <xs:annotation>
419 - <xs:documentation>The identifier of the BootstrapperApplication element to reference.</xs:documentation>
420 - </xs:annotation>
421 - </xs:attribute>
422 - <xs:anyAttribute namespace="##other" processContents="lax">
423 - <xs:annotation>
424 - <xs:documentation>
425 - Extensibility point in the WiX XML Schema. Schema extensions can register additional
426 - attributes at this point in the schema.
427 - </xs:documentation>
428 - </xs:annotation>
429 - </xs:anyAttribute>
430 - </xs:complexType>
431 - </xs:element>
432 - <xs:element name="UX">
433 - <xs:annotation>
434 - <xs:documentation>This element has been deprecated. Use the BootstrapperApplication element instead.</xs:documentation>
435 - <xs:appinfo>
436 - <xse:deprecated ref="BootstrapperApplication" />
437 - <xse:parent namespace="http://wixtoolset.org/schemas/v4/wxs" ref="Bundle" />
438 - <xse:parent namespace="http://wixtoolset.org/schemas/v4/wxs" ref="Fragment" />
439 - </xs:appinfo>
440 - </xs:annotation>
441 - <xs:complexType>
442 - <xs:choice minOccurs="0" maxOccurs="unbounded">
443 - <xs:element ref="Payload" />
444 - <xs:element ref="PayloadGroupRef" />
445 - </xs:choice>
446 - <xs:attribute name="SourceFile" type="xs:string">
447 - <xs:annotation>
448 - <xs:documentation>See the BootstrapperApplication instead.</xs:documentation>
449 - </xs:annotation>
450 - </xs:attribute>
451 - <xs:attribute name="Name" type="xs:string">
452 - <xs:annotation>
453 - <xs:documentation>See the BootstrapperApplication instead.</xs:documentation>
454 - </xs:annotation>
455 - </xs:attribute>
456 - <xs:attribute name="SplashScreenSourceFile" type="xs:string">
457 - <xs:annotation>
458 - <xs:documentation>See the BootstrapperApplication instead.</xs:documentation>
459 - </xs:annotation>
460 - </xs:attribute>
461 - </xs:complexType>
462 - </xs:element>
463 - <xs:element name="OptionalUpdateRegistration">
464 - <xs:annotation>
465 - <xs:documentation>Writes additional information to the Windows registry that can be used to detect the bundle.
466 - This registration is intended primarily for update to an existing product.</xs:documentation>
467 - <xs:appinfo>
468 - <xse:remarks>
469 - <html:p>The attributes are used to write the following registry values to the key:
470 - <html:code>SOFTWARE\[Manufacturer]\Updates\[ProductFamily]\[Name]</html:code></html:p>
471 - <html:ul>
472 - <html:li>ThisVersionInstalled: Y</html:li>
473 - <html:li>PackageName: &gt;bundle name&lt;</html:li>
474 - <html:li>PackageVersion: &gt;bundle version&lt;</html:li>
475 - <html:li>Publisher: [Manufacturer]</html:li>
476 - <html:li>PublishingGroup: [Department]</html:li>
477 - <html:li>ReleaseType: [Classification]</html:li>
478 - <html:li>InstalledBy: [LogonUser]</html:li>
479 - <html:li>InstalledDate: [Date]</html:li>
480 - <html:li>InstallerName: &gt;installer name&lt;</html:li>
481 - <html:li>InstallerVersion: &gt;installer version&lt;</html:li>
482 - </html:ul>
483 - </xse:remarks>
484 - </xs:appinfo>
485 - </xs:annotation>
486 - <xs:complexType>
487 - <xs:attribute name="Manufacturer" type="xs:string">
488 - <xs:annotation>
489 - <xs:documentation>The name of the manufacturer. The default is the Bundle/@Manufacturer attribute,
490 - but may also be a short form, ex: Acme instead of Acme Corporation.
491 - An error is generated at build time if neither attribute is specified.</xs:documentation>
492 - </xs:annotation>
493 - </xs:attribute>
494 - <xs:attribute name="Department" type="xs:string">
495 - <xs:annotation>
496 - <xs:documentation>The name of the department or division publishing the update bundle.
497 - The PublishingGroup registry value is not written if this attribute is not specified.</xs:documentation>
498 - </xs:annotation>
499 - </xs:attribute>
500 - <xs:attribute name="ProductFamily" type="xs:string">
501 - <xs:annotation>
502 - <xs:documentation>The name of the family of products being updated. The default is the Bundle/@ParentName attribute.
503 - The corresponding registry key is not created if neither attribute is specified.</xs:documentation>
504 - </xs:annotation>
505 - </xs:attribute>
506 - <xs:attribute name="Name" type="xs:string">
507 - <xs:annotation>
508 - <xs:documentation>The name of the bundle. The default is the Bundle/@Name attribute,
509 - but may also be a short form, ex: KB12345 instead of Update to Product (KB12345).
510 - An error is generated at build time if neither attribute is specified.</xs:documentation>
511 - </xs:annotation>
512 - </xs:attribute>
513 - <xs:attribute name="Classification" type="xs:string" default="Update">
514 - <xs:annotation>
515 - <xs:documentation>The release type of the update bundle, such as Update, Security Update, Service Pack, etc.
516 - The default value is Update.</xs:documentation>
517 - </xs:annotation>
518 - </xs:attribute>
519 - </xs:complexType>
520 - </xs:element>
521 - <xs:element name="Chain">
522 - <xs:annotation>
523 - <xs:documentation>Contains the chain of packages to install.</xs:documentation>
524 - <xs:appinfo>
525 - <xse:parent namespace="http://wixtoolset.org/schemas/v4/wxs" ref="Bundle" />
526 - </xs:appinfo>
527 - </xs:annotation>
528 - <xs:complexType>
529 - <xs:choice minOccurs="0" maxOccurs="unbounded">
530 - <xs:element ref="MsiPackage" />
531 - <xs:element ref="MspPackage" />
532 - <xs:element ref="MsuPackage" />
533 - <xs:element ref="ExePackage" />
534 - <xs:element ref="RollbackBoundary" />
535 - <xs:element ref="PackageGroupRef" />
536 - </xs:choice>
537 - <xs:attribute name="DisableRollback" type="YesNoTypeUnion">
538 - <xs:annotation>
539 - <xs:documentation>
540 - Specifies whether the bundle will attempt to rollback packages
541 - executed in the chain. If "yes" is specified then when a vital
542 - package fails to install only that package will rollback and the
543 - chain will stop with the error. The default is "no" which
544 - indicates all packages executed during the chain will be
545 - rolledback to their previous state when a vital package fails.
546 - </xs:documentation>
547 - </xs:annotation>
548 - </xs:attribute>
549 - <xs:attribute name="DisableSystemRestore" type="YesNoTypeUnion">
550 - <xs:annotation>
551 - <xs:documentation>
552 - Specifies whether the bundle will attempt to create a system
553 - restore point when executing the chain. If "yes" is specified then
554 - a system restore point will not be created. The default is "no" which
555 - indicates a system restore point will be created when the bundle is
556 - installed, uninstalled, repaired, modified, etc. If the system restore
557 - point cannot be created, the bundle will log the issue and continue.
558 - </xs:documentation>
559 - </xs:annotation>
560 - </xs:attribute>
561 - <xs:attribute name="ParallelCache" type="YesNoTypeUnion">
562 - <xs:annotation>
563 - <xs:documentation>
564 - Specifies whether the bundle will start installing packages
565 - while other packages are still being cached. If "yes",
566 - packages will start executing when a rollback boundary is
567 - encountered. The default is "no" which dictates all packages
568 - must be cached before any packages will start to be installed.
569 - </xs:documentation>
570 - </xs:annotation>
571 - </xs:attribute>
572 - </xs:complexType>
573 - </xs:element>
574 - <xs:element name="MsiPackage">
575 - <xs:annotation>
576 - <xs:documentation>Describes a single msi package to install.</xs:documentation>
577 - <xs:appinfo>
578 - <xse:parent namespace="http://wixtoolset.org/schemas/v4/wxs" ref="Chain" />
579 - <xse:parent namespace="http://wixtoolset.org/schemas/v4/wxs" ref="PackageGroup" />
580 - </xs:appinfo>
581 - </xs:annotation>
582 - <xs:complexType>
583 - <xs:choice minOccurs="0" maxOccurs="unbounded">
584 - <xs:element ref="MsiProperty" />
585 - <xs:element ref="SlipstreamMsp" />
586 - <xs:element ref="Payload" />
587 - <xs:element ref="PayloadGroupRef" />
588 - <xs:any namespace="##other" processContents="lax">
589 - <xs:annotation>
590 - <xs:documentation>
591 - Extensibility point in the WiX XML Schema. Schema extensions can register additional
592 - elements at this point in the schema. The extension's
593 - <html:code><html:nobr>CompilerExtension.ParseElement()</html:nobr></html:code>
594 - method will be called with the package identifier as the first value in
595 - <html:code>contextValues</html:code>.
596 - </xs:documentation>
597 - </xs:annotation>
598 - </xs:any>
599 - </xs:choice>
600 - <xs:attributeGroup ref="ChainPackageCommonAttributes" />
601 - <xs:attribute name="DisplayInternalUI" type="YesNoTypeUnion">
602 - <xs:annotation>
603 - <xs:documentation>
604 - Specifies whether the bundle will show the UI authored into the msi package. The default is "no"
605 - which means all information is routed to the bootstrapper application to provide a unified installation
606 - experience. If "yes" is specified the UI authored into the msi package will be displayed on top of
607 - any bootstrapper application UI.
608 - </xs:documentation>
609 - </xs:annotation>
610 - </xs:attribute>
611 - <xs:attribute name="EnableFeatureSelection" type="YesNoTypeUnion">
612 - <xs:annotation>
613 - <xs:documentation>
614 - Specifies whether the bundle will allow individual control over the installation state of Features inside
615 - the msi package. Managing feature selection requires special care to ensure the install, modify, update and
616 - uninstall behavior of the package is always correct. The default is "no".
617 - </xs:documentation>
618 - </xs:annotation>
619 - </xs:attribute>
620 - <xs:attribute name="ForcePerMachine" type="YesNoTypeUnion">
621 - <xs:annotation>
622 - <xs:documentation>
623 - Override the automatic per-machine detection of MSI packages and force the package to be per-machine.
624 - The default is "no", which allows the tools to detect the expected value.
625 - </xs:documentation>
626 - </xs:annotation>
627 - </xs:attribute>
628 - <xs:attribute name="SuppressLooseFilePayloadGeneration" type="YesNoTypeUnion">
629 - <xs:annotation>
630 - <xs:documentation>
631 - This attribute has been deprecated. When the value is "yes", the Binder will not read the MSI package
632 - to detect uncompressed files that would otherwise be automatically included in the Bundle as Payloads.
633 - The resulting Bundle may not be able to install the MSI package correctly. The default is "no".
634 - </xs:documentation>
635 - </xs:annotation>
636 - </xs:attribute>
637 - <xs:attribute name="Visible" type="YesNoTypeUnion">
638 - <xs:annotation>
639 - <xs:documentation>
640 - Specifies whether the MSI will be displayed in Programs and Features (also known as Add/Remove Programs). If "yes" is
641 - specified the MSI package information will be displayed in Programs and Features. The default "no" indicates the MSI
642 - will not be displayed.
643 - </xs:documentation>
644 - </xs:annotation>
645 - </xs:attribute>
646 - </xs:complexType>
647 - </xs:element>
648 - <xs:element name="MspPackage">
649 - <xs:annotation>
650 - <xs:documentation>Describes a single msp package to install.</xs:documentation>
651 - <xs:appinfo>
652 - <xse:seeAlso ref="SlipstreamMsp" />
653 - <xse:parent namespace="http://wixtoolset.org/schemas/v4/wxs" ref="Chain" />
654 - <xse:parent namespace="http://wixtoolset.org/schemas/v4/wxs" ref="PackageGroup" />
655 - </xs:appinfo>
656 - </xs:annotation>
657 - <xs:complexType>
658 - <xs:choice minOccurs="0" maxOccurs="unbounded">
659 - <xs:element ref="MsiProperty" />
660 - <xs:element ref="Payload" />
661 - <xs:element ref="PayloadGroupRef" />
662 - <xs:any namespace="##other" processContents="lax">
663 - <xs:annotation>
664 - <xs:documentation>
665 - Extensibility point in the WiX XML Schema. Schema extensions can register additional
666 - elements at this point in the schema. The extension's
667 - <html:code><html:nobr>CompilerExtension.ParseElement()</html:nobr></html:code>
668 - method will be called with the package identifier as the first value in
669 - <html:code>contextValues</html:code>.
670 - </xs:documentation>
671 - </xs:annotation>
672 - </xs:any>
673 - </xs:choice>
674 - <xs:attributeGroup ref="ChainPackageCommonAttributes" />
675 - <xs:attribute name="DisplayInternalUI" type="YesNoTypeUnion">
676 - <xs:annotation>
677 - <xs:documentation>
678 - Specifies whether the bundle will show the UI authored into the msp package. The default is "no"
679 - which means all information is routed to the bootstrapper application to provide a unified installation
680 - experience. If "yes" is specified the UI authored into the msp package will be displayed on top of
681 - any bootstrapper application UI.
682 - </xs:documentation>
683 - </xs:annotation>
684 - </xs:attribute>
685 - <xs:attribute name="PerMachine" type="YesNoDefaultTypeUnion">
686 - <xs:annotation>
687 - <xs:documentation>Indicates the package must be executed elevated. The default is "no".</xs:documentation>
688 - </xs:annotation>
689 - </xs:attribute>
690 - <xs:attribute name="Slipstream" type="YesNoTypeUnion">
691 - <xs:annotation>
692 - <xs:documentation>
693 - Specifies whether to automatically slipstream the patch for any target msi packages in the chain. The default is "no".
694 - Even when the value is "no", you can still author the SlipstreamMsp element under MsiPackage elements as desired.
695 - </xs:documentation>
696 - </xs:annotation>
697 - </xs:attribute>
698 - </xs:complexType>
699 - </xs:element>
700 - <xs:element name="MsuPackage">
701 - <xs:annotation>
702 - <xs:documentation>Describes a single msu package to install.</xs:documentation>
703 - <xs:appinfo>
704 - <xse:parent namespace="http://wixtoolset.org/schemas/v4/wxs" ref="Chain" />
705 - <xse:parent namespace="http://wixtoolset.org/schemas/v4/wxs" ref="PackageGroup" />
706 - </xs:appinfo>
707 - </xs:annotation>
708 - <xs:complexType>
709 - <xs:choice minOccurs="0" maxOccurs="unbounded">
710 - <xs:element ref="Payload" />
711 - <xs:element ref="PayloadGroupRef" />
712 - <xs:element ref="RemotePayload" />
713 - <xs:any namespace="##other" processContents="lax">
714 - <xs:annotation>
715 - <xs:documentation>
716 - Extensibility point in the WiX XML Schema. Schema extensions can register additional
717 - elements at this point in the schema. The extension's
718 - <html:code><html:nobr>CompilerExtension.ParseElement()</html:nobr></html:code>
719 - method will be called with the package identifier as the first value in
720 - <html:code>contextValues</html:code>.
721 - </xs:documentation>
722 - </xs:annotation>
723 - </xs:any>
724 - </xs:choice>
725 - <xs:attributeGroup ref="ChainPackageCommonAttributes" />
726 - <xs:attribute name="DetectCondition" type="xs:string">
727 - <xs:annotation>
728 - <xs:documentation>
729 - A condition that determines if the package is present on the target system. This condition can use built-in
730 - variables and variables returned by searches. This condition is necessary because Windows doesn't provide a
731 - method to detect the presence of an MsuPackage. Burn uses this condition to determine how to treat this
732 - package during a bundle action; for example, if this condition is false or omitted and the bundle is being
733 - installed, Burn will install this package.
734 - </xs:documentation>
735 - </xs:annotation>
736 - </xs:attribute>
737 - <xs:attribute name="KB" type="xs:string">
738 - <xs:annotation>
739 - <xs:documentation>
740 - The knowledge base identifier for the MSU. The KB attribute must be specified to enable the MSU package to
741 - be uninstalled. Even then MSU uninstallation is only supported on Windows 7 and later. When the KB attribute
742 - is specified, the Permanent attribute will the control whether the package is uninstalled.
743 - </xs:documentation>
744 - </xs:annotation>
745 - </xs:attribute>
746 - </xs:complexType>
747 - </xs:element>
748 - <xs:element name="ExePackage">
749 - <xs:annotation>
750 - <xs:documentation>Describes a single exe package to install.</xs:documentation>
751 - <xs:appinfo>
752 - <xse:parent namespace="http://wixtoolset.org/schemas/v4/wxs" ref="Chain" />
753 - <xse:parent namespace="http://wixtoolset.org/schemas/v4/wxs" ref="PackageGroup" />
754 - </xs:appinfo>
755 - </xs:annotation>
756 - <xs:complexType>
757 - <xs:choice minOccurs="0" maxOccurs="unbounded">
758 - <xs:element ref="Payload" />
759 - <xs:element ref="PayloadGroupRef" />
760 - <xs:element ref="RemotePayload" />
761 - <xs:element ref="ExitCode" />
762 - <xs:element ref="CommandLine" />
763 - <xs:any namespace="##other" processContents="lax">
764 - <xs:annotation>
765 - <xs:documentation>
766 - Extensibility point in the WiX XML Schema. Schema extensions can register additional
767 - elements at this point in the schema. The extension's
768 - <html:code><html:nobr>CompilerExtension.ParseElement()</html:nobr></html:code>
769 - method will be called with the package identifier as the first value in
770 - <html:code>contextValues</html:code>.
771 - </xs:documentation>
772 - </xs:annotation>
773 - </xs:any>
774 - </xs:choice>
775 - <xs:attributeGroup ref="ChainPackageCommonAttributes" />
776 - <xs:attribute name="DetectCondition" type="xs:string">
777 - <xs:annotation>
778 - <xs:documentation>
779 - A condition that determines if the package is present on the target system. This condition can use built-in
780 - variables and variables returned by searches. This condition is necessary because Windows doesn't provide a
781 - method to detect the presence of an ExePackage. Burn uses this condition to determine how to treat this
782 - package during a bundle action; for example, if this condition is false or omitted and the bundle is being
783 - installed, Burn will install this package.
784 - </xs:documentation>
785 - </xs:annotation>
786 - </xs:attribute>
787 - <xs:attribute name="InstallCommand" type="xs:string">
788 - <xs:annotation>
789 - <xs:documentation>The command-line arguments provided to the ExePackage during install. If this attribute is absent the executable will be launched with no command-line arguments.</xs:documentation>
790 - </xs:annotation>
791 - </xs:attribute>
792 - <xs:attribute name="RepairCommand" type="xs:string">
793 - <xs:annotation>
794 - <xs:documentation>
795 - The command-line arguments to specify to indicate a repair. If the executable package can be repaired but
796 - does not require any special command-line arguments to do so then set the attribute's value to blank. To
797 - indicate that the package does not support repair, omit this attribute.
798 - </xs:documentation>
799 - </xs:annotation>
800 - </xs:attribute>
801 - <xs:attribute name="UninstallCommand" type="xs:string">
802 - <xs:annotation>
803 - <xs:documentation>The command-line arguments provided to the ExePackage during uninstall. If this attribute is absent the executable will be launched with no command-line arguments. To prevent an ExePackage from being uninstalled set the Permanent attribute to "yes".</xs:documentation>
804 - </xs:annotation>
805 - </xs:attribute>
806 - <xs:attribute name="PerMachine" type="YesNoDefaultTypeUnion">
807 - <xs:annotation>
808 - <xs:documentation>Indicates the package must be executed elevated. The default is "no".</xs:documentation>
809 - </xs:annotation>
810 - </xs:attribute>
811 - <xs:attribute name="Protocol" type="BurnExeProtocolType">
812 - <xs:annotation>
813 - <xs:documentation>Indicates the communication protocol the package supports for extended progress and error reporting. The default is "none".</xs:documentation>
814 - </xs:annotation>
815 - </xs:attribute>
816 - </xs:complexType>
817 - </xs:element>
818 - <xs:element name="RollbackBoundary">
819 - <xs:annotation>
820 - <xs:documentation>Describes a rollback boundary in the chain.</xs:documentation>
821 - <xs:appinfo>
822 - <xse:parent namespace="http://wixtoolset.org/schemas/v4/wxs" ref="Chain" />
823 - <xse:parent namespace="http://wixtoolset.org/schemas/v4/wxs" ref="PackageGroup" />
824 - </xs:appinfo>
825 - </xs:annotation>
826 - <xs:complexType>
827 - <xs:choice minOccurs="0" maxOccurs="unbounded">
828 - <xs:any namespace="##other" processContents="lax">
829 - <xs:annotation>
830 - <xs:documentation>
831 - Extensibility point in the WiX XML Schema. Schema extensions can register additional
832 - elements at this point in the schema. The extension's
833 - <html:code><html:nobr>CompilerExtension.ParseElement()</html:nobr></html:code>
834 - method will be called with the rollback boundary identifier as the 'RollbackBoundaryId' key in
835 - <html:code>contextValues</html:code>.
836 - </xs:documentation>
837 - </xs:annotation>
838 - </xs:any>
839 - </xs:choice>
840 - <xs:attribute name="Id" type="xs:string">
841 - <xs:annotation>
842 - <xs:documentation>
843 - Identifier for this rollback boundary, for ordering and cross-referencing. If this attribute is
844 - not provided a stable identifier will be generated.
845 - </xs:documentation>
846 - </xs:annotation>
847 - </xs:attribute>
848 - <xs:attribute name="Vital" type="YesNoTypeUnion">
849 - <xs:annotation>
850 - <xs:documentation>
851 - Specifies whether the rollback boundary aborts the chain. The default "yes" indicates that if
852 - the rollback boundary is encountered then the chain will fail and rollback or stop. If "no"
853 - is specified then the chain should continue successfuly at the next rollback boundary.
854 - </xs:documentation>
855 - </xs:annotation>
856 - </xs:attribute>
857 - <xs:attribute name="Transaction" type="YesNoTypeUnion">
858 - <xs:annotation>
859 - <xs:documentation>
860 - Specifies whether the rollback boundary is wrapped in an MSI transaction. The default is "no"
861 - </xs:documentation>
862 - </xs:annotation>
863 - </xs:attribute>
864 - </xs:complexType>
865 - </xs:element>
866 - <xs:attributeGroup name="ChainPackageCommonAttributes">
867 - <xs:attribute name="SourceFile" type="xs:string">
868 - <xs:annotation>
869 - <xs:documentation>
870 - Location of the package to add to the bundle. The default value is the Name attribute, if provided.
871 - At a minimum, the SourceFile or Name attribute must be specified.
872 - </xs:documentation>
873 - </xs:annotation>
874 - </xs:attribute>
875 - <xs:attribute name="Name" type="xs:string">
876 - <xs:annotation>
877 - <xs:documentation>
878 - The destination path and file name for this chain payload. Use this attribute to rename the
879 - chain entry point or extract it into a subfolder. The default value is the file name from the
880 - SourceFile attribute, if provided. At a minimum, the Name or SourceFile attribute must be specified.
881 - The use of '..' directories is not allowed.
882 - </xs:documentation>
883 - </xs:annotation>
884 - </xs:attribute>
885 - <xs:attribute name="DownloadUrl" type="xs:string">
886 - <xs:annotation>
887 - <xs:documentation>
888 - <html:p>The URL to use to download the package. The following substitutions are supported:</html:p>
889 - <html:ul>
890 - <html:li>{0} is replaced by the package Id.</html:li>
891 - <html:li>{1} is replaced by the payload Id.</html:li>
892 - <html:li>{2} is replaced by the payload file name.</html:li>
893 - </html:ul>
894 - </xs:documentation>
895 - </xs:annotation>
896 - </xs:attribute>
897 - <xs:attribute name="Id" type="xs:string">
898 - <xs:annotation>
899 - <xs:documentation>
900 - Identifier for this package, for ordering and cross-referencing. The default is the Name attribute
901 - modified to be suitable as an identifier (i.e. invalid characters are replaced with underscores).
902 - </xs:documentation>
903 - </xs:annotation>
904 - </xs:attribute>
905 - <xs:attribute name="After" type="xs:string">
906 - <xs:annotation>
907 - <xs:documentation>
908 - The identifier of another package that this one should be installed after. By default the After
909 - attribute is set to the previous sibling package in the Chain or PackageGroup element. If this
910 - attribute is specified ensure that a cycle is not created explicitly or implicitly.
911 - </xs:documentation>
912 - </xs:annotation>
913 - </xs:attribute>
914 - <xs:attribute name="InstallSize" type="xs:string">
915 - <xs:annotation>
916 - <xs:documentation>
917 - The size this package will take on disk in bytes after it is installed. By default, the binder will
918 - calculate the install size by scanning the package (File table for MSIs, Payloads for EXEs)
919 - and use the total for the install size of the package.
920 - </xs:documentation>
921 - </xs:annotation>
922 - </xs:attribute>
923 - <xs:attribute name="InstallCondition" type="xs:string">
924 - <xs:annotation>
925 - <xs:documentation>A condition to evaluate before installing the package. The package will only be installed if the condition evaluates to true. If the condition evaluates to false and the bundle is being installed, repaired, or modified, the package will be uninstalled.</xs:documentation>
926 - </xs:annotation>
927 - </xs:attribute>
928 - <xs:attribute name="Cache" type="YesNoAlwaysTypeUnion">
929 - <xs:annotation>
930 - <xs:documentation>Whether to cache the package. The default is "yes".</xs:documentation>
931 - </xs:annotation>
932 - </xs:attribute>
933 - <xs:attribute name="CacheId" type="xs:string">
934 - <xs:annotation>
935 - <xs:documentation>The identifier to use when caching the package.</xs:documentation>
936 - </xs:annotation>
937 - </xs:attribute>
938 - <xs:attribute name="DisplayName" type="xs:string">
939 - <xs:annotation>
940 - <xs:documentation>
941 - Specifies the display name to place in the bootstrapper application data manifest for the package. By default, ExePackages
942 - use the ProductName field from the version information, MsiPackages use the ProductName property, and MspPackages use
943 - the DisplayName patch metadata property. Other package types must use this attribute to define a display name in the
944 - bootstrapper application data manifest.
945 - </xs:documentation>
946 - </xs:annotation>
947 - </xs:attribute>
948 - <xs:attribute name="Description" type="xs:string">
949 - <xs:annotation>
950 - <xs:documentation>
951 - Specifies the description to place in the bootstrapper application data manifest for the package. By default, ExePackages
952 - use the FileName field from the version information, MsiPackages use the ARPCOMMENTS property, and MspPackages use
953 - the Description patch metadata property. Other package types must use this attribute to define a description in the
954 - bootstrapper application data manifest.
955 - </xs:documentation>
956 - </xs:annotation>
957 - </xs:attribute>
958 - <xs:attribute name="LogPathVariable" type="xs:string">
959 - <xs:annotation>
960 - <xs:documentation>
961 - Name of a Variable that will hold the path to the log file. An empty value will cause the variable to not
962 - be set. The default is "WixBundleLog_[PackageId]" except for MSU packages which default to no logging.
963 - </xs:documentation>
964 - </xs:annotation>
965 - </xs:attribute>
966 - <xs:attribute name="RollbackLogPathVariable" type="xs:string">
967 - <xs:annotation>
968 - <xs:documentation>
969 - Name of a Variable that will hold the path to the log file used during rollback. An empty value will cause
970 - the variable to not be set. The default is "WixBundleRollbackLog_[PackageId]" except for MSU packages which
971 - default to no logging.
972 - </xs:documentation>
973 - </xs:annotation>
974 - </xs:attribute>
975 - <xs:attribute name="Permanent" type="YesNoTypeUnion">
976 - <xs:annotation>
977 - <xs:documentation>
978 - Specifies whether the package can be uninstalled. The default is "no".
979 - </xs:documentation>
980 - </xs:annotation>
981 - </xs:attribute>
982 - <xs:attribute name="Vital" type="YesNoTypeUnion">
983 - <xs:annotation>
984 - <xs:documentation>
985 - Specifies whether the package must succeed for the chain to continue. The default "yes"
986 - indicates that if the package fails then the chain will fail and rollback or stop. If
987 - "no" is specified then the chain will continue even if the package reports failure.
988 - </xs:documentation>
989 - </xs:annotation>
990 - </xs:attribute>
991 - <xs:attribute name="Compressed" type="YesNoDefaultTypeUnion">
992 - <xs:annotation>
993 - <xs:documentation>Whether the package payload should be embedded in a container or left as an external payload.</xs:documentation>
994 - </xs:annotation>
995 - </xs:attribute>
996 - <xs:attribute name="EnableSignatureVerification" type="YesNoTypeUnion">
997 - <xs:annotation>
998 - <xs:documentation>
999 - By default, a Bundle will use the hash of a package to verify its contents. If this attribute is set to "yes"
1000 - and the package is signed with an Authenticode signature the Bundle will verify the contents of the package using the
1001 - signature instead. Beware that there are many real world issues with Windows verifying Authenticode signatures.
1002 - Since the Authenticode signatures are no more secure than hashing the packages directly, the default is "no".
1003 - </xs:documentation>
1004 - </xs:annotation>
1005 - </xs:attribute>
1006 - <xs:anyAttribute namespace="##other" processContents="lax">
1007 - <xs:annotation>
1008 - <xs:documentation>
1009 - Extensibility point in the WiX XML Schema. Schema extensions can register additional
1010 - attributes at this point in the schema. The extension's
1011 - <html:code><html:nobr>CompilerExtension.ParseAttribute()</html:nobr></html:code>
1012 - method will be called with the package identifier in
1013 - <html:code><html:nobr>contextValues["PackageId"]</html:nobr></html:code>.
1014 - </xs:documentation>
1015 - </xs:annotation>
1016 - </xs:anyAttribute>
1017 - </xs:attributeGroup>
1018 - <xs:element name="PackageGroup">
1019 - <xs:annotation>
1020 - <xs:documentation>Describes a package group to a bootstrapper.</xs:documentation>
1021 - <xs:appinfo>
1022 - <xse:parent namespace="http://wixtoolset.org/schemas/v4/wxs" ref="Fragment" />
1023 - </xs:appinfo>
1024 - </xs:annotation>
1025 - <xs:complexType>
1026 - <xs:choice minOccurs="0" maxOccurs="unbounded">
1027 - <xs:element ref="MsiPackage" />
1028 - <xs:element ref="MspPackage" />
1029 - <xs:element ref="MsuPackage" />
1030 - <xs:element ref="ExePackage" />
1031 - <xs:element ref="RollbackBoundary" />
1032 - <xs:element ref="PackageGroupRef" />
1033 - </xs:choice>
1034 - <xs:attribute name="Id" type="xs:string" use="required">
1035 - <xs:annotation>
1036 - <xs:documentation>Identifier for package group.</xs:documentation>
1037 - </xs:annotation>
1038 - </xs:attribute>
1039 - </xs:complexType>
1040 - </xs:element>
1041 - <xs:element name="PackageGroupRef">
1042 - <xs:annotation>
1043 - <xs:documentation>Create a reference to PackageGroup element that exists inside a Bundle or Fragment element.</xs:documentation>
1044 - <xs:appinfo>
1045 - <xse:seeAlso ref="PackageGroup" />
1046 - <xse:parent namespace="http://wixtoolset.org/schemas/v4/wxs" ref="Chain" />
1047 - <xse:parent namespace="http://wixtoolset.org/schemas/v4/wxs" ref="Container" />
1048 - <xse:parent namespace="http://wixtoolset.org/schemas/v4/wxs" ref="PackageGroup" />
1049 - </xs:appinfo>
1050 - </xs:annotation>
1051 - <xs:complexType>
1052 - <xs:attribute name="Id" type="xs:string" use="required">
1053 - <xs:annotation>
1054 - <xs:documentation>The identifier of the PackageGroup element to reference.</xs:documentation>
1055 - </xs:annotation>
1056 - </xs:attribute>
1057 - <xs:attribute name="After" type="xs:string">
1058 - <xs:annotation>
1059 - <xs:documentation>The identifier of a package that this group should be installed after.</xs:documentation>
1060 - </xs:annotation>
1061 - </xs:attribute>
1062 - </xs:complexType>
1063 - </xs:element>
1064 - <xs:element name="MsiProperty">
1065 - <xs:annotation>
1066 - <xs:documentation>Allows an MSI property to be set based on the value of a burn engine expression.</xs:documentation>
1067 - <xs:appinfo>
1068 - <xse:parent namespace="http://wixtoolset.org/schemas/v4/wxs" ref="MsiPackage" />
1069 - </xs:appinfo>
1070 - </xs:annotation>
1071 - <xs:complexType>
1072 - <xs:attribute name="Name" type="xs:string" use="required">
1073 - <xs:annotation>
1074 - <xs:documentation>The name of the MSI property to set. Burn controls the follow MSI properties so they cannot be set with MsiProperty: ACTION, ALLUSERS, REBOOT, REINSTALL, REINSTALLMODE</xs:documentation>
1075 - </xs:annotation>
1076 - </xs:attribute>
1077 - <xs:attribute name="Value" type="xs:string" use="required">
1078 - <xs:annotation>
1079 - <xs:documentation>The value to set the property to. This string is evaluated by the burn engine and can be as simple as a burn engine variable reference or as complex as a full expression.</xs:documentation>
1080 - </xs:annotation>
1081 - </xs:attribute>
1082 - </xs:complexType>
1083 - </xs:element>
1084 - <xs:element name="SlipstreamMsp">
1085 - <xs:annotation>
1086 - <xs:documentation>Specifies a patch included in the same bundle that is installed when the parent MSI package is installed.</xs:documentation>
1087 - <xs:appinfo>
1088 - <xse:seeAlso ref="MspPackage" />
1089 - <xse:parent namespace="http://wixtoolset.org/schemas/v4/wxs" ref="MsiPackage" />
1090 - <xse:remarks>
1091 - <html:p>You can also specify that any MspPackage elements in the chain are automatically slipstreamed by setting the Slipstream attribute of an MspPackage to "yes". This will reduce the amount of authoring you need to write and will determine which msi packages can slipstream patches when building a bundle.</html:p>
1092 - </xse:remarks>
1093 - </xs:appinfo>
1094 - </xs:annotation>
1095 - <xs:complexType>
1096 - <xs:attribute name="Id" type="xs:string" use="required">
1097 - <xs:annotation>
1098 - <xs:documentation>The identifier for a MspPackage in the bundle.</xs:documentation>
1099 - </xs:annotation>
1100 - </xs:attribute>
1101 - </xs:complexType>
1102 - </xs:element>
1103 - <xs:element name="Variable">
1104 - <xs:annotation>
1105 - <xs:documentation>Describes a burn engine variable to define.</xs:documentation>
1106 - <xs:appinfo>
1107 - <xse:parent namespace="http://wixtoolset.org/schemas/v4/wxs" ref="Bundle" />
1108 - <xse:parent namespace="http://wixtoolset.org/schemas/v4/wxs" ref="Fragment" />
1109 - </xs:appinfo>
1110 - </xs:annotation>
1111 - <xs:complexType>
1112 - <xs:attribute name="Hidden" type="YesNoTypeUnion">
1113 - <xs:annotation>
1114 - <xs:documentation>Whether the value of the variable should be hidden.</xs:documentation>
1115 - </xs:annotation>
1116 - </xs:attribute>
1117 - <xs:attribute name="Name" type="xs:string" use="required">
1118 - <xs:annotation>
1119 - <xs:documentation>The name for the variable.</xs:documentation>
1120 - </xs:annotation>
1121 - </xs:attribute>
1122 - <xs:attribute name="Persisted" type="YesNoTypeUnion">
1123 - <xs:annotation>
1124 - <xs:documentation>Whether the variable should be persisted.</xs:documentation>
1125 - </xs:annotation>
1126 - </xs:attribute>
1127 - <xs:attribute name="Value" type="xs:string">
1128 - <xs:annotation>
1129 - <xs:documentation>Starting value for the variable.</xs:documentation>
1130 - </xs:annotation>
1131 - </xs:attribute>
1132 - <xs:attribute name="Type">
1133 - <xs:annotation>
1134 - <xs:documentation>Type of the variable, inferred from the value if not specified.</xs:documentation>
1135 - </xs:annotation>
1136 - <xs:simpleType>
1137 - <xs:restriction base="xs:string">
1138 - <xs:enumeration value="string" />
1139 - <xs:enumeration value="numeric" />
1140 - <xs:enumeration value="version" />
1141 - </xs:restriction>
1142 - </xs:simpleType>
1143 - </xs:attribute>
1144 - <xs:anyAttribute namespace="##other" processContents="lax">
1145 - <xs:annotation>
1146 - <xs:documentation>
1147 - Extensibility point in the WiX XML Schema. Schema extensions can register additional
1148 - attributes at this point in the schema.
1149 - </xs:documentation>
1150 - </xs:annotation>
1151 - </xs:anyAttribute>
1152 - </xs:complexType>
1153 - </xs:element>
1154 - <xs:element name="Container">
1155 - <xs:annotation>
1156 - <xs:documentation>Representation of a file that contains one or more files.</xs:documentation>
1157 - <xs:appinfo>
1158 - <xse:parent namespace="http://wixtoolset.org/schemas/v4/wxs" ref="Bundle" />
1159 - </xs:appinfo>
1160 - </xs:annotation>
1161 - <xs:complexType>
1162 - <xs:choice minOccurs="0" maxOccurs="unbounded">
1163 - <xs:element ref="PackageGroupRef" />
1164 - </xs:choice>
1165 - <xs:attribute name="DownloadUrl" type="xs:string">
1166 - <xs:annotation>
1167 - <xs:documentation>
1168 - <html:p>The URL to use to download the container. This attribute is only valid when the container is detached. The
1169 - following substitutions are supported:</html:p>
1170 - <html:ul>
1171 - <html:li>{0} is always null.</html:li>
1172 - <html:li>{1} is replaced by the container Id.</html:li>
1173 - <html:li>{2} is replaced by the container file name.</html:li>
1174 - </html:ul>
1175 - </xs:documentation>
1176 - </xs:annotation>
1177 - </xs:attribute>
1178 - <xs:attribute name="Id" type="xs:string">
1179 - <xs:annotation>
1180 - <xs:documentation>The unique identifier for the container. If this attribute is not specified the Name attribute will be used.</xs:documentation>
1181 - </xs:annotation>
1182 - </xs:attribute>
1183 - <xs:attribute name="Name" type="xs:string">
1184 - <xs:annotation>
1185 - <xs:documentation>The file name for this container. A relative path may be provided to place the container in a sub-folder of the bundle.</xs:documentation>
1186 - </xs:annotation>
1187 - </xs:attribute>
1188 - <xs:attribute name="Type" type="BurnContainerType">
1189 - <xs:annotation>
1190 - <xs:documentation>
1191 - Indicates whether the container is "attached" to the bundle executable or placed external to the bundle extecutable as "detached". If
1192 - this attribute is not specified, the default is to create a detached container.
1193 - </xs:documentation>
1194 - </xs:annotation>
1195 - </xs:attribute>
1196 - </xs:complexType>
1197 - </xs:element>
1198 - <xs:element name="ContainerRef">
1199 - <xs:annotation>
1200 - <xs:documentation>Create a reference to an existing Container element.</xs:documentation>
1201 - <xs:appinfo>
1202 - <xse:seeAlso ref="Container" />
1203 - <xse:parent namespace="http://wixtoolset.org/schemas/v4/wxs" ref="Bundle" />
1204 - </xs:appinfo>
1205 - </xs:annotation>
1206 - <xs:complexType>
1207 - <xs:attribute name="Id" type="xs:string" use="required">
1208 - <xs:annotation>
1209 - <xs:documentation>The identifier of Container element to reference.</xs:documentation>
1210 - </xs:annotation>
1211 - </xs:attribute>
1212 - </xs:complexType>
1213 - </xs:element>
1214 - <xs:element name="ExitCode">
1215 - <xs:annotation>
1216 - <xs:documentation>Describes map of exit code returned from executable package to a bootstrapper behavior.</xs:documentation>
1217 - <xs:appinfo>
1218 - <xse:parent namespace="http://wixtoolset.org/schemas/v4/wxs" ref="ExePackage" />
1219 - </xs:appinfo>
1220 - </xs:annotation>
1221 - <xs:complexType>
1222 - <xs:attribute name="Value" type="xs:integer">
1223 - <xs:annotation>
1224 - <xs:documentation>Exit code returned from executable package. If no value is provided it means all values not explicitly set default to this behavior.</xs:documentation>
1225 - </xs:annotation>
1226 - </xs:attribute>
1227 - <xs:attribute name="Behavior" use="required">
1228 - <xs:annotation>
1229 - <xs:documentation>Choose one of the supported behaviors error codes: success, error, scheduleReboot, forceReboot.</xs:documentation>
1230 - </xs:annotation>
1231 - <xs:simpleType>
1232 - <xs:restriction base="xs:string">
1233 - <xs:enumeration value="success" />
1234 - <xs:enumeration value="error" />
1235 - <xs:enumeration value="scheduleReboot" />
1236 - <xs:enumeration value="forceReboot" />
1237 - </xs:restriction>
1238 - </xs:simpleType>
1239 - </xs:attribute>
1240 - </xs:complexType>
1241 - </xs:element>
1242 - <xs:element name="CommandLine">
1243 - <xs:annotation>
1244 - <xs:documentation>Describes additional, conditional command-line arguments for an ExePackage.</xs:documentation>
1245 - </xs:annotation>
1246 - <xs:complexType>
1247 - <xs:attribute name="InstallArgument" type="xs:string">
1248 - <xs:annotation>
1249 - <xs:documentation>Additional command-line arguments to apply during package installation if Condition is true.</xs:documentation>
1250 - </xs:annotation>
1251 - </xs:attribute>
1252 - <xs:attribute name="UninstallArgument" type="xs:string">
1253 - <xs:annotation>
1254 - <xs:documentation>Additional command-line arguments to apply during package uninstallation if Condition is true.</xs:documentation>
1255 - </xs:annotation>
1256 - </xs:attribute>
1257 - <xs:attribute name="RepairArgument" type="xs:string">
1258 - <xs:annotation>
1259 - <xs:documentation>Additional command-line arguments to apply during package repair if Condition is true.</xs:documentation>
1260 - </xs:annotation>
1261 - </xs:attribute>
1262 - <xs:attribute name="Condition" type="xs:string">
1263 - <xs:annotation>
1264 - <xs:documentation>
1265 - The condition that controls whether the command-line arguments specified in the
1266 - InstallArgument, UninstallArgument, or RepairArgument attributes are appended to the
1267 - command line passed to the ExePackage. Which attribute is used depends on the
1268 - action being applied to the ExePackage. For example, when the ExePackage is
1269 - being installed, the InstallArgument attribute value is appended to the command
1270 - line when the ExePackage is executed.
1271 - </xs:documentation>
1272 - </xs:annotation>
1273 - </xs:attribute>
1274 - </xs:complexType>
1275 - </xs:element>
1276 - <xs:element name="Payload">
1277 - <xs:annotation>
1278 - <xs:documentation>Describes a payload to a bootstrapper.</xs:documentation>
1279 - <xs:appinfo>
1280 - <xse:parent namespace="http://wixtoolset.org/schemas/v4/wxs" ref="BootstrapperApplication" />
1281 - <xse:parent namespace="http://wixtoolset.org/schemas/v4/wxs" ref="ExePackage" />
1282 - <xse:parent namespace="http://wixtoolset.org/schemas/v4/wxs" ref="MsiPackage" />
1283 - <xse:parent namespace="http://wixtoolset.org/schemas/v4/wxs" ref="MspPackage" />
1284 - <xse:parent namespace="http://wixtoolset.org/schemas/v4/wxs" ref="MsuPackage" />
1285 - <xse:parent namespace="http://wixtoolset.org/schemas/v4/wxs" ref="UX" />
1286 - </xs:appinfo>
1287 - </xs:annotation>
1288 - <xs:complexType>
1289 - <xs:attribute name="Id" type="xs:string">
1290 - <xs:annotation>
1291 - <xs:documentation>The identifier of Payload element.</xs:documentation>
1292 - </xs:annotation>
1293 - </xs:attribute>
1294 - <xs:attribute name="Compressed" type="YesNoDefaultTypeUnion">
1295 - <xs:annotation>
1296 - <xs:documentation>Whether the payload should be embedded in a container or left as an external payload.</xs:documentation>
1297 - </xs:annotation>
1298 - </xs:attribute>
1299 - <xs:attribute name="SourceFile" type="xs:string" use="required">
1300 - <xs:annotation>
1301 - <xs:documentation>Location of the source file.</xs:documentation>
1302 - </xs:annotation>
1303 - </xs:attribute>
1304 - <xs:attribute name="Name" type="xs:string">
1305 - <xs:annotation>
1306 - <xs:documentation>The destination path and file name for this payload. The default is the source file name. The use of '..' directories is not allowed.</xs:documentation>
1307 - </xs:annotation>
1308 - </xs:attribute>
1309 - <xs:attribute name="DownloadUrl" type="xs:string">
1310 - <xs:annotation>
1311 - <xs:documentation>
1312 - <html:p>The URL to use to download the package. The following substitutions are supported:</html:p>
1313 - <html:ul>
1314 - <html:li>{0} is replaced by the package Id.</html:li>
1315 - <html:li>{1} is replaced by the payload Id.</html:li>
1316 - <html:li>{2} is replaced by the payload file name.</html:li>
1317 - </html:ul>
1318 - </xs:documentation>
1319 - </xs:annotation>
1320 - </xs:attribute>
1321 - <xs:attribute name="EnableSignatureVerification" type="YesNoTypeUnion">
1322 - <xs:annotation>
1323 - <xs:documentation>
1324 - By default, a Bundle will use the hash of a package to verify its contents. If this attribute is set to "yes"
1325 - and the package is signed with an Authenticode signature the Bundle will verify the contents of the package using the
1326 - signature instead. Beware that there are many real world issues with Windows verifying Authenticode signatures.
1327 - Since the Authenticode signatures are no more secure than hashing the packages directly, the default is "no".
1328 - </xs:documentation>
1329 - </xs:annotation>
1330 - </xs:attribute>
1331 - </xs:complexType>
1332 - </xs:element>
1333 - <xs:element name="PayloadGroup">
1334 - <xs:annotation>
1335 - <xs:documentation>Describes a payload group to a bootstrapper. PayloadGroups referenced from within a Bundle are tied to the Bundle.
1336 - PayloadGroups referenced from a Fragment are tied to the context of whatever references them such as an ExePackage or MsiPackage.
1337 - It is possible to share a PayloadGroup between multiple Packages and/or a Bundle by creating multiple references to it.</xs:documentation>
1338 - <xs:appinfo>
1339 - <xse:parent namespace="http://wixtoolset.org/schemas/v4/wxs" ref="Fragment" />
1340 - </xs:appinfo>
1341 - </xs:annotation>
1342 - <xs:complexType>
1343 - <xs:choice minOccurs="0" maxOccurs="unbounded">
1344 - <xs:element ref="Payload" />
1345 - <xs:element ref="PayloadGroupRef" />
1346 - </xs:choice>
1347 - <xs:attribute name="Id" type="xs:string" use="required">
1348 - <xs:annotation>
1349 - <xs:documentation>Identifier for payload group.</xs:documentation>
1350 - </xs:annotation>
1351 - </xs:attribute>
1352 - </xs:complexType>
1353 - </xs:element>
1354 - <xs:element name="PayloadGroupRef">
1355 - <xs:annotation>
1356 - <xs:documentation>Create a reference to PayloadGroup element that exists inside a Bundle or Fragment element.</xs:documentation>
1357 - <xs:appinfo>
1358 - <xse:seeAlso ref="PayloadGroup" />
1359 - <xse:parent namespace="http://wixtoolset.org/schemas/v4/wxs" ref="BootstrapperApplication" />
1360 - <xse:parent namespace="http://wixtoolset.org/schemas/v4/wxs" ref="UX" />
1361 - <xse:parent namespace="http://wixtoolset.org/schemas/v4/wxs" ref="PayloadGroup" />
1362 - </xs:appinfo>
1363 - </xs:annotation>
1364 - <xs:complexType>
1365 - <xs:attribute name="Id" type="xs:string" use="required">
1366 - <xs:annotation>
1367 - <xs:documentation>The identifier of the PayloadGroup element to reference.</xs:documentation>
1368 - </xs:annotation>
1369 - </xs:attribute>
1370 - </xs:complexType>
1371 - </xs:element>
1372 - <xs:element name="RemotePayload">
1373 - <xs:annotation>
1374 - <xs:documentation>Describes information about a remote file payload that is not available at the time of building the bundle.
1375 - The parent must specify DownloadUrl and must not specify SourceFile when using this element.</xs:documentation>
1376 - <xs:appinfo>
1377 - <xse:parent namespace="http://schemas.microsoft.com/wix/2006/wi" ref="ExePackage" />
1378 - <xse:parent namespace="http://schemas.microsoft.com/wix/2006/wi" ref="MsuPackage" />
1379 - </xs:appinfo>
1380 - </xs:annotation>
1381 - <xs:complexType>
1382 - <xs:attribute name="CertificatePublicKey" type="HexType">
1383 - <xs:annotation>
1384 - <xs:documentation>Public key of the authenticode certificate used to sign the RemotePayload. Include this attribute if the remote file is signed.</xs:documentation>
1385 - </xs:annotation>
1386 - </xs:attribute>
1387 - <xs:attribute name="CertificateThumbprint" type="HexType">
1388 - <xs:annotation>
1389 - <xs:documentation>Thumbprint of the authenticode certificate used to sign the RemotePayload. Include this attribute if the remote file is signed.</xs:documentation>
1390 - </xs:annotation>
1391 - </xs:attribute>
1392 - <xs:attribute name="Description" type="xs:string" use="required">
1393 - <xs:annotation>
1394 - <xs:documentation>Description of the file from version resources.</xs:documentation>
1395 - </xs:annotation>
1396 - </xs:attribute>
1397 - <xs:attribute name="Hash" type="HexType" use="required">
1398 - <xs:annotation>
1399 - <xs:documentation>SHA-1 hash of the RemotePayload. Include this attribute if the remote file is unsigned or SuppressSignatureVerification is set to Yes.</xs:documentation>
1400 - </xs:annotation>
1401 - </xs:attribute>
1402 - <xs:attribute name="ProductName" type="xs:string" use="required">
1403 - <xs:annotation>
1404 - <xs:documentation>Product name of the file from version resouces.</xs:documentation>
1405 - </xs:annotation>
1406 - </xs:attribute>
1407 - <xs:attribute name="Size" type="xs:integer" use="required">
1408 - <xs:annotation>
1409 - <xs:documentation>Size of the remote file in bytes.</xs:documentation>
1410 - </xs:annotation>
1411 - </xs:attribute>
1412 - <xs:attribute name="Version" type="VersionType" use="required">
1413 - <xs:annotation>
1414 - <xs:documentation>Version of the remote file</xs:documentation>
1415 - </xs:annotation>
1416 - </xs:attribute>
1417 - </xs:complexType>
1418 - </xs:element>
1419 - <xs:element name="RelatedBundle">
1420 - <xs:annotation>
1421 - <xs:documentation>Create a RelatedBundle element.</xs:documentation>
1422 - <xs:appinfo>
1423 - <xse:parent namespace="http://wixtoolset.org/schemas/v4/wxs" ref="Bundle" />
1424 - <xse:parent namespace="http://wixtoolset.org/schemas/v4/wxs" ref="Fragment" />
1425 - </xs:appinfo>
1426 - </xs:annotation>
1427 - <xs:complexType>
1428 - <xs:attribute name="Id" type="Guid" use="required">
1429 - <xs:annotation>
1430 - <xs:documentation>The identifier of the RelatedBundle group.</xs:documentation>
1431 - </xs:annotation>
1432 - </xs:attribute>
1433 - <xs:attribute name="Action" use="optional">
1434 - <xs:annotation>
1435 - <xs:documentation>The action to take on bundles related to this one. Detect is the default.</xs:documentation>
1436 - </xs:annotation>
1437 - <xs:simpleType>
1438 - <xs:restriction base="xs:string">
1439 - <xs:enumeration value="Detect" />
1440 - <xs:enumeration value="Upgrade" />
1441 - <xs:enumeration value="Addon" />
1442 - <xs:enumeration value="Patch" />
1443 - </xs:restriction>
1444 - </xs:simpleType>
1445 - </xs:attribute>
1446 - </xs:complexType>
1447 - </xs:element>
1448 - <xs:element name="Update">
1449 - <xs:annotation>
1450 - <xs:documentation>Defines the update for a Bundle.</xs:documentation>
1451 - <xs:appinfo>
1452 - <xse:parent namespace="http://wixtoolset.org/schemas/v4/wxs" ref="Bundle" />
1453 - <xse:parent namespace="http://wixtoolset.org/schemas/v4/wxs" ref="Fragment" />
1454 - </xs:appinfo>
1455 - </xs:annotation>
1456 - <xs:complexType>
1457 - <xs:attribute name="Location" type="xs:string" use="required">
1458 - <xs:annotation>
1459 - <xs:documentation>
1460 - The absolute path or URL to check for an update bundle. Currently the engine provides this value
1461 - in the IBootstrapperApplication::OnDetectUpdateBegin() and otherwise ignores the value. In the
1462 - future the engine will be able to acquire an update bundle from the location and determine if it
1463 - is newer than the current executing bundle.
1464 - </xs:documentation>
1465 - </xs:annotation>
1466 - </xs:attribute>
1467 - </xs:complexType>
1468 - </xs:element>
1469 - <xs:element name="Product">
1470 - <xs:annotation>
1471 - <xs:documentation>
1472 - The Product element is analogous to the main function in a C program. When linking, only one Product section
1473 - can be given to the linker to produce a successful result. Using this element creates an msi file.
1474 - </xs:documentation>
1475 - <xs:appinfo>
1476 - <xse:remarks>
1477 - <html:p>You can specify any valid Windows code page by integer like 1252, or by web name like Windows-1252. See <html:a href="~/overview/codepage.html">Code Pages</html:a> for more information.</html:p>
1478 - </xse:remarks>
1479 - </xs:appinfo>
1480 - </xs:annotation>
1481 - <xs:complexType>
1482 - <xs:sequence>
1483 - <xs:element ref="Package" />
1484 - <xs:choice minOccurs="0" maxOccurs="unbounded">
1485 - <xs:element ref="AppId" />
1486 - <xs:element ref="Binary" />
1487 - <xs:element ref="ComplianceCheck" />
1488 - <xs:element ref="Component" />
1489 - <xs:element ref="ComponentGroup" />
1490 - <xs:element ref="Condition" />
1491 - <xs:element ref="CustomAction" />
1492 - <xs:element ref="CustomActionRef" />
1493 - <xs:element ref="CustomTable" />
1494 - <xs:element ref="Directory" />
1495 - <xs:element ref="DirectoryRef" />
1496 - <xs:element ref="EmbeddedChainer" />
1497 - <xs:element ref="EmbeddedChainerRef" />
1498 - <xs:element ref="EnsureTable" />
1499 - <xs:element ref="Feature" />
1500 - <xs:element ref="FeatureRef" />
1501 - <xs:element ref="FeatureGroupRef" />
1502 - <xs:element ref="Icon" />
1503 - <xs:element ref="InstanceTransforms" />
1504 - <xs:element ref="MajorUpgrade" />
1505 - <xs:element ref="Media" />
1506 - <xs:element ref="MediaTemplate" />
1507 - <xs:element ref="PackageCertificates" />
1508 - <xs:element ref="PatchCertificates" />
1509 - <xs:element ref="Property" />
1510 - <xs:element ref="PropertyRef" />
1511 - <xs:element ref="SetDirectory" />
1512 - <xs:element ref="SetProperty" />
1513 - <xs:element ref="SFPCatalog" />
1514 - <xs:element ref="SymbolPath" />
1515 - <xs:element ref="UI" />
1516 - <xs:element ref="UIRef" />
1517 - <xs:element ref="Upgrade" />
1518 - <xs:element ref="WixVariable" />
1519 - <xs:sequence>
1520 - <xs:element ref="InstallExecuteSequence" minOccurs="0" />
1521 - <xs:element ref="InstallUISequence" minOccurs="0" />
1522 - <xs:element ref="AdminExecuteSequence" minOccurs="0" />
1523 - <xs:element ref="AdminUISequence" minOccurs="0" />
1524 - <xs:element ref="AdvertiseExecuteSequence" minOccurs="0" />
1525 - </xs:sequence>
1526 - <xs:any namespace="##other" processContents="lax">
1527 - <xs:annotation>
1528 - <xs:documentation>
1529 - Extensibility point in the WiX XML Schema. Schema extensions can register additional
1530 - elements at this point in the schema.
1531 - </xs:documentation>
1532 - </xs:annotation>
1533 - </xs:any>
1534 - </xs:choice>
1535 - </xs:sequence>
1536 - <xs:attribute name="Id" type="AutogenGuid" use="required">
1537 - <xs:annotation>
1538 - <xs:documentation>The product code GUID for the product.</xs:documentation>
1539 - </xs:annotation>
1540 - </xs:attribute>
1541 - <xs:attribute name="Codepage" type="xs:string">
1542 - <xs:annotation>
1543 - <xs:documentation>The code page integer value or web name for the resulting MSI. See remarks for more information.</xs:documentation>
1544 - </xs:annotation>
1545 - </xs:attribute>
1546 - <xs:attribute name="Language" type="LocalizableInteger" use="required">
1547 - <xs:annotation>
1548 - <xs:documentation>The decimal language ID (LCID) for the product.</xs:documentation>
1549 - </xs:annotation>
1550 - </xs:attribute>
1551 - <xs:attribute name="Manufacturer" type="xs:string" use="required">
1552 - <xs:annotation>
1553 - <xs:documentation>The manufacturer of the product.</xs:documentation>
1554 - </xs:annotation>
1555 - </xs:attribute>
1556 - <xs:attribute name="Name" type="xs:string" use="required">
1557 - <xs:annotation>
1558 - <xs:documentation>The descriptive name of the product.</xs:documentation>
1559 - </xs:annotation>
1560 - </xs:attribute>
1561 - <xs:attribute name="UpgradeCode" type="Guid">
1562 - <xs:annotation>
1563 - <xs:documentation>The upgrade code GUID for the product.</xs:documentation>
1564 - </xs:annotation>
1565 - </xs:attribute>
1566 - <xs:attribute name="Version" type="xs:string" use="required">
1567 - <xs:annotation>
1568 - <xs:documentation>The product's version string.</xs:documentation>
1569 - </xs:annotation>
1570 - </xs:attribute>
1571 - <xs:anyAttribute namespace="##other" processContents="lax">
1572 - <xs:annotation>
1573 - <xs:documentation>
1574 - Extensibility point in the WiX XML Schema. Schema extensions can register additional
1575 - attributes at this point in the schema.
1576 - </xs:documentation>
1577 - </xs:annotation>
1578 - </xs:anyAttribute>
1579 - </xs:complexType>
1580 - </xs:element>
1581 - <xs:element name="Module">
1582 - <xs:annotation>
1583 - <xs:documentation>
1584 - The Module element is analogous to the main function in a C program. When linking, only
1585 - one Module section can be given to the linker to produce a successful result. Using this
1586 - element creates an msm file.
1587 - </xs:documentation>
1588 - <xs:appinfo>
1589 - <xse:remarks>
1590 - <html:p>You can specify any valid Windows code by by integer like 1252, or by web name like Windows-1252. See <html:a href="~/overview/codepage.html">Code Pages</html:a> for more information.</html:p>
1591 - </xse:remarks>
1592 - </xs:appinfo>
1593 - </xs:annotation>
1594 - <xs:complexType>
1595 - <xs:sequence>
1596 - <xs:element ref="Package" />
1597 - <xs:choice minOccurs="0" maxOccurs="unbounded">
1598 - <xs:element ref="AppId" />
1599 - <xs:element ref="Binary" />
1600 - <xs:element ref="Component" />
1601 - <xs:element ref="ComponentGroupRef" />
1602 - <xs:element ref="ComponentRef" />
1603 - <xs:element ref="Configuration" />
1604 - <xs:element ref="CustomAction" />
1605 - <xs:element ref="CustomActionRef" />
1606 - <xs:element ref="CustomTable" />
1607 - <xs:element ref="Dependency" />
1608 - <xs:element ref="Directory" />
1609 - <xs:element ref="DirectoryRef" />
1610 - <xs:element ref="EmbeddedChainer" />
1611 - <xs:element ref="EmbeddedChainerRef" />
1612 - <xs:element ref="EnsureTable" />
1613 - <xs:element ref="Exclusion" />
1614 - <xs:element ref="Icon" />
1615 - <xs:element ref="IgnoreModularization" />
1616 - <xs:element ref="IgnoreTable" />
1617 - <xs:element ref="Property" />
1618 - <xs:element ref="PropertyRef" />
1619 - <xs:element ref="SetDirectory" />
1620 - <xs:element ref="SetProperty" />
1621 - <xs:element ref="SFPCatalog" />
1622 - <xs:element ref="Substitution" />
1623 - <xs:element ref="UI" />
1624 - <xs:element ref="UIRef" />
1625 - <xs:element ref="WixVariable" />
1626 - <xs:sequence>
1627 - <xs:element ref="InstallExecuteSequence" minOccurs="0" />
1628 - <xs:element ref="InstallUISequence" minOccurs="0" />
1629 - <xs:element ref="AdminExecuteSequence" minOccurs="0" />
1630 - <xs:element ref="AdminUISequence" minOccurs="0" />
1631 - <xs:element ref="AdvertiseExecuteSequence" minOccurs="0" />
1632 - </xs:sequence>
1633 - <xs:any namespace="##other" processContents="lax">
1634 - <xs:annotation>
1635 - <xs:documentation>
1636 - Extensibility point in the WiX XML Schema. Schema extensions can register additional
1637 - elements at this point in the schema.
1638 - </xs:documentation>
1639 - </xs:annotation>
1640 - </xs:any>
1641 - </xs:choice>
1642 - </xs:sequence>
1643 - <xs:attribute name="Id" type="xs:string" use="required">
1644 - <xs:annotation>
1645 - <xs:documentation>The name of the merge module (not the file name).</xs:documentation>
1646 - </xs:annotation>
1647 - </xs:attribute>
1648 - <xs:attribute name="Codepage" type="xs:string">
1649 - <xs:annotation>
1650 - <xs:documentation>The code page integer value or web name for the resulting MSM. See remarks for more information.</xs:documentation>
1651 - </xs:annotation>
1652 - </xs:attribute>
1653 - <xs:attribute name="Guid" type="Guid">
1654 - <xs:annotation>
1655 - <xs:documentation>This attribute is deprecated. Use the Package/@Id attribute instead.</xs:documentation>
1656 - </xs:annotation>
1657 - </xs:attribute>
1658 - <xs:attribute name="Language" type="LocalizableInteger" use="required">
1659 - <xs:annotation>
1660 - <xs:documentation>The decimal language ID (LCID) of the merge module.</xs:documentation>
1661 - </xs:annotation>
1662 - </xs:attribute>
1663 - <xs:attribute name="Version" type="xs:string" use="required">
1664 - <xs:annotation>
1665 - <xs:documentation>The major and minor versions of the merge module.</xs:documentation>
1666 - </xs:annotation>
1667 - </xs:attribute>
1668 - </xs:complexType>
1669 - </xs:element>
1670 - <xs:element name="Dependency">
1671 - <xs:annotation>
1672 - <xs:documentation>Declares a dependency on another merge module.</xs:documentation>
1673 - </xs:annotation>
1674 - <xs:complexType>
1675 - <xs:attribute name="RequiredId" type="xs:string" use="required">
1676 - <xs:annotation>
1677 - <xs:documentation>Identifier of the merge module required by the merge module.</xs:documentation>
1678 - </xs:annotation>
1679 - </xs:attribute>
1680 - <xs:attribute name="RequiredLanguage" type="xs:integer" use="required">
1681 - <xs:annotation>
1682 - <xs:documentation>Numeric language ID of the merge module in RequiredID.</xs:documentation>
1683 - </xs:annotation>
1684 - </xs:attribute>
1685 - <xs:attribute name="RequiredVersion" type="xs:string">
1686 - <xs:annotation>
1687 - <xs:documentation>Version of the merge module in RequiredID.</xs:documentation>
1688 - </xs:annotation>
1689 - </xs:attribute>
1690 - </xs:complexType>
1691 - </xs:element>
1692 - <xs:element name="Exclusion">
1693 - <xs:annotation>
1694 - <xs:documentation>Declares a merge module with which this merge module is incompatible.</xs:documentation>
1695 - </xs:annotation>
1696 - <xs:complexType>
1697 - <xs:attribute name="ExcludedId" type="xs:string" use="required">
1698 - <xs:annotation>
1699 - <xs:documentation>Identifier of the merge module that is incompatible.</xs:documentation>
1700 - </xs:annotation>
1701 - </xs:attribute>
1702 - <xs:attribute name="ExcludeExceptLanguage" type="xs:integer">
1703 - <xs:annotation>
1704 - <xs:documentation>Numeric language ID of the merge module in ExcludedID. All except this language will be excluded. Only one of ExcludeExceptLanguage and ExcludeLanguage may be specified.</xs:documentation>
1705 - </xs:annotation>
1706 - </xs:attribute>
1707 - <xs:attribute name="ExcludeLanguage" type="xs:integer">
1708 - <xs:annotation>
1709 - <xs:documentation>Numeric language ID of the merge module in ExcludedID. The specified language will be excluded. Only one of ExcludeExceptLanguage and ExcludeLanguage may be specified.</xs:documentation>
1710 - </xs:annotation>
1711 - </xs:attribute>
1712 - <xs:attribute name="ExcludedMinVersion" type="xs:string">
1713 - <xs:annotation>
1714 - <xs:documentation>Minimum version excluded from a range. If not set, all versions before max are excluded. If neither max nor min, no exclusion based on version.</xs:documentation>
1715 - </xs:annotation>
1716 - </xs:attribute>
1717 - <xs:attribute name="ExcludedMaxVersion" type="xs:string">
1718 - <xs:annotation>
1719 - <xs:documentation>Maximum version excluded from a range. If not set, all versions after min are excluded. If neither max nor min, no exclusion based on version.</xs:documentation>
1720 - </xs:annotation>
1721 - </xs:attribute>
1722 - </xs:complexType>
1723 - </xs:element>
1724 - <xs:element name="Configuration">
1725 - <xs:annotation>
1726 - <xs:documentation>Defines the configurable attributes of merge module.</xs:documentation>
1727 - </xs:annotation>
1728 - <xs:complexType>
1729 - <xs:attribute name="Name" type="xs:string" use="required">
1730 - <xs:annotation>
1731 - <xs:documentation>Defines the name of the configurable item.</xs:documentation>
1732 - </xs:annotation>
1733 - </xs:attribute>
1734 - <xs:attribute name="Format" use="required">
1735 - <xs:annotation>
1736 - <xs:documentation>Specifies the format of the data being changed.</xs:documentation>
1737 - </xs:annotation>
1738 - <xs:simpleType>
1739 - <xs:restriction base="xs:string">
1740 - <xs:enumeration value="Text" />
1741 - <xs:enumeration value="Key" />
1742 - <xs:enumeration value="Integer" />
1743 - <xs:enumeration value="Bitfield" />
1744 - </xs:restriction>
1745 - </xs:simpleType>
1746 - </xs:attribute>
1747 - <xs:attribute name="Type" type="xs:string">
1748 - <xs:annotation>
1749 - <xs:documentation>Specifies the type of the data being changed.</xs:documentation>
1750 - </xs:annotation>
1751 - </xs:attribute>
1752 - <xs:attribute name="ContextData" type="xs:string">
1753 - <xs:annotation>
1754 - <xs:documentation>Specifies a semantic context for the requested data.</xs:documentation>
1755 - </xs:annotation>
1756 - </xs:attribute>
1757 - <xs:attribute name="DefaultValue" type="xs:string">
1758 - <xs:annotation>
1759 - <xs:documentation>Specifies a default value for the item in this record if the merge tool declines to provide a value.</xs:documentation>
1760 - </xs:annotation>
1761 - </xs:attribute>
1762 - <xs:attribute name="KeyNoOrphan" type="YesNoTypeUnion">
1763 - <xs:annotation>
1764 - <xs:documentation>Does not merge rule according to rules in MSI SDK.</xs:documentation>
1765 - </xs:annotation>
1766 - </xs:attribute>
1767 - <xs:attribute name="NonNullable" type="YesNoTypeUnion">
1768 - <xs:annotation>
1769 - <xs:documentation>If yes, null is not a valid entry.</xs:documentation>
1770 - </xs:annotation>
1771 - </xs:attribute>
1772 - <xs:attribute name="DisplayName" type="xs:string">
1773 - <xs:annotation>
1774 - <xs:documentation>Display name for authoring.</xs:documentation>
1775 - </xs:annotation>
1776 - </xs:attribute>
1777 - <xs:attribute name="Description" type="xs:string">
1778 - <xs:annotation>
1779 - <xs:documentation>Description for authoring.</xs:documentation>
1780 - </xs:annotation>
1781 - </xs:attribute>
1782 - <xs:attribute name="HelpLocation" type="xs:string">
1783 - <xs:annotation>
1784 - <xs:documentation>Location of chm file for authoring.</xs:documentation>
1785 - </xs:annotation>
1786 - </xs:attribute>
1787 - <xs:attribute name="HelpKeyword" type="xs:string">
1788 - <xs:annotation>
1789 - <xs:documentation>Keyword into chm file for authoring.</xs:documentation>
1790 - </xs:annotation>
1791 - </xs:attribute>
1792 - </xs:complexType>
1793 - </xs:element>
1794 - <xs:element name="Substitution">
1795 - <xs:annotation>
1796 - <xs:documentation>Specifies the configurable fields of a module database and provides a template for the configuration of each field.</xs:documentation>
1797 - </xs:annotation>
1798 - <xs:complexType>
1799 - <xs:attribute name="Table" type="xs:string" use="required">
1800 - <xs:annotation>
1801 - <xs:documentation>Specifies the name of the table being modified in the module database.</xs:documentation>
1802 - </xs:annotation>
1803 - </xs:attribute>
1804 - <xs:attribute name="Row" type="xs:string" use="required">
1805 - <xs:annotation>
1806 - <xs:documentation>Specifies the primary keys of the target row in the table named in the Table column. If multiple keys, separated by semicolons.</xs:documentation>
1807 - </xs:annotation>
1808 - </xs:attribute>
1809 - <xs:attribute name="Column" type="xs:string" use="required">
1810 - <xs:annotation>
1811 - <xs:documentation>Specifies the target column in the row named in the Row column.</xs:documentation>
1812 - </xs:annotation>
1813 - </xs:attribute>
1814 - <xs:attribute name="Value" type="xs:string">
1815 - <xs:annotation>
1816 - <xs:documentation>Provides a formatting template for the data being substituted into the target field specified by Table, Row, and Column.</xs:documentation>
1817 - </xs:annotation>
1818 - </xs:attribute>
1819 - </xs:complexType>
1820 - </xs:element>
1821 - <xs:element name="IgnoreTable">
1822 - <xs:annotation>
1823 - <xs:documentation>
1824 - Specifies a table from the merge module that is not merged into an .msi file.
1825 - If the table already exists in an .msi file, it is not modified by the merge.
1826 - The specified table can therefore contain data that is unneeded after the merge.
1827 - To minimize the size of the .msm file, it is recommended that developers remove
1828 - unused tables from modules intended for redistribution rather than creating
1829 - IgnoreTable elements for those tables.
1830 - </xs:documentation>
1831 - </xs:annotation>
1832 - <xs:complexType>
1833 - <xs:attribute name="Id" type="xs:string" use="required">
1834 - <xs:annotation>
1835 - <xs:documentation>
1836 - The name of the table in the merge module that is not to be merged into the .msi file.
1837 - </xs:documentation>
1838 - </xs:annotation>
1839 - </xs:attribute>
1840 - </xs:complexType>
1841 - </xs:element>
1842 - <xs:element name="Fragment">
1843 - <xs:annotation>
1844 - <xs:documentation>
1845 - The Fragment element is the building block of creating an installer database in WiX. Once defined,
1846 - the Fragment becomes an immutable, atomic unit which can either be completely included or excluded
1847 - from a product. The contents of a Fragment element can be linked into a product by utilizing one
1848 - of the many *Ref elements. When linking in a Fragment, it will be necessary to link in all of its
1849 - individual units. For instance, if a given Fragment contains two Component elements, you must link
1850 - both under features using ComponentRef for each linked Component. Otherwise, you will get a linker
1851 - warning and have a floating Component that does not appear under any Feature.
1852 - </xs:documentation>
1853 - </xs:annotation>
1854 - <xs:complexType>
1855 - <xs:choice minOccurs="0" maxOccurs="unbounded">
1856 - <xs:element ref="AppId" />
1857 - <xs:element ref="Binary" />
1858 - <xs:element ref="BootstrapperApplication" />
1859 - <xs:element ref="BootstrapperApplicationRef" />
1860 - <xs:element ref="ComplianceCheck" />
1861 - <xs:element ref="Component" />
1862 - <xs:element ref="ComponentGroup" />
1863 - <xs:element ref="Condition" />
1864 - <xs:element ref="Container" />
1865 - <xs:element ref="CustomAction" />
1866 - <xs:element ref="CustomActionRef" />
1867 - <xs:element ref="CustomTable" />
1868 - <xs:element ref="Directory" />
1869 - <xs:element ref="DirectoryRef" />
1870 - <xs:element ref="EmbeddedChainer" />
1871 - <xs:element ref="EmbeddedChainerRef" />
1872 - <xs:element ref="EnsureTable" />
1873 - <xs:element ref="Feature" />
1874 - <xs:element ref="FeatureGroup" />
1875 - <xs:element ref="FeatureRef" />
1876 - <xs:element ref="Icon" />
1877 - <xs:element ref="IgnoreModularization" />
1878 - <xs:element ref="Media" />
1879 - <xs:element ref="MediaTemplate" />
1880 - <xs:element ref="PackageGroup" />
1881 - <xs:element ref="PackageCertificates" />
1882 - <xs:element ref="PatchCertificates" />
1883 - <xs:element ref="PatchFamily" />
1884 - <xs:element ref="PatchFamilyGroup"/>
1885 - <xs:element ref="PayloadGroup" />
1886 - <xs:element ref="Property" />
1887 - <xs:element ref="PropertyRef" />
1888 - <xs:element ref="RelatedBundle" />
1889 - <xs:element ref="SetDirectory" />
1890 - <xs:element ref="SetProperty" />
1891 - <xs:element ref="SFPCatalog" />
1892 - <xs:element ref="UI" />
1893 - <xs:element ref="UIRef" />
1894 - <xs:element ref="Upgrade" />
1895 - <xs:element ref="Variable" />
1896 - <xs:element ref="WixVariable" />
1897 - <xs:sequence>
1898 - <xs:element ref="InstallExecuteSequence" minOccurs="0" />
1899 - <xs:element ref="InstallUISequence" minOccurs="0" />
1900 - <xs:element ref="AdminExecuteSequence" minOccurs="0" />
1901 - <xs:element ref="AdminUISequence" minOccurs="0" />
1902 - <xs:element ref="AdvertiseExecuteSequence" minOccurs="0" />
1903 - </xs:sequence>
1904 - <xs:any namespace="##other" processContents="lax">
1905 - <xs:annotation>
1906 - <xs:documentation>
1907 - Extensibility point in the WiX XML Schema. Schema extensions can register additional
1908 - elements at this point in the schema.
1909 - </xs:documentation>
1910 - </xs:annotation>
1911 - </xs:any>
1912 - </xs:choice>
1913 - <xs:attribute name="Id" type="xs:string">
1914 - <xs:annotation>
1915 - <xs:documentation>
1916 - Optional identifier for a Fragment. Should only be set by advanced users to tag sections.
1917 - </xs:documentation>
1918 - </xs:annotation>
1919 - </xs:attribute>
1920 - </xs:complexType>
1921 - </xs:element>
1922 - <xs:element name="Patch">
1923 - <xs:annotation>
1924 - <xs:documentation>
1925 - The Patch element is analogous to the main function in a C program. When linking, only one Patch section
1926 - can be given to the linker to produce a successful result. Using this element creates an MSP file.
1927 - </xs:documentation>
1928 - <xs:appinfo>
1929 - <xse:remarks>
1930 - <html:p>You can specify any valid Windows code by by integer like 1252, or by web name like Windows-1252. See <html:a href="~/overview/codepage.html">Code Pages</html:a> for more information.</html:p>
1931 - <html:p>The ClientPatchId attribute allows you to specify an easily referenced identity that you can use in product authoring. This identity prefixes properties added by WiX to a patch transform, such as <html:i>ClientPatchId</html:i>.PatchCode and <html:i>ClientPatchId</html:i>.AllowRemoval. If the patch code GUID is auto-generated you could not reference any properties using this auto-generated prefix.</html:p>
1932 - <html:p>For example, if you were planning to ship a patch referred to as "QFE1" and needed to write your own registry values for Add/Remove Programs in product authoring such as the UninstallString for this patch, you could author a RegistryValue with the name UninstallString and the value <html:code><html:nobr>[SystemFolder]msiexec.exe</html:nobr> /package [ProductCode] /uninstall [QFE1.PatchCode]</html:code>. In your patch authoring you would then set ClientPatchId to "QFE1" and WiX will add the QFE1.PatchCode property to the patch transform when the patch is created. If the Id attribute specified the patch code to be generated automatically, you could not reference the <html:i>prefix</html:i>.PatchCode property as shown above.</html:p>
1933 - <html:p>The summary information is automatically populated from attribute values of the Patch element including the code page. If you want to override some of these summary information properties or use a different code page for the summary information itself, author the PatchInformation element.</html:p>
1934 - </xse:remarks>
1935 - </xs:appinfo>
1936 - </xs:annotation>
1937 - <xs:complexType>
1938 - <xs:sequence>
1939 - <xs:choice minOccurs="0" maxOccurs="unbounded">
1940 - <xs:element ref="PatchInformation" minOccurs="0" maxOccurs="1">
1941 - <xs:annotation>
1942 - <xs:documentation>Optional element that allows overriding summary information properties.</xs:documentation>
1943 - </xs:annotation>
1944 - </xs:element>
1945 - <xs:element ref="Media" minOccurs="1" maxOccurs="unbounded" />
1946 - <xs:element ref="OptimizeCustomActions" minOccurs="0" maxOccurs="1">
1947 - <xs:annotation>
1948 - <xs:documentation>Indicates whether custom actions can be skipped when applying the patch.</xs:documentation>
1949 - </xs:annotation>
1950 - </xs:element>
1951 - <xs:element ref="PatchFamily" minOccurs="1" maxOccurs="unbounded" />
1952 - <xs:element ref="PatchFamilyRef" minOccurs="0" maxOccurs="unbounded" />
1953 - <xs:element ref="PatchFamilyGroup" minOccurs="1" maxOccurs="unbounded"/>
1954 - <xs:element ref="PatchFamilyGroupRef" minOccurs="0" maxOccurs="unbounded"/>
1955 - <xs:element ref="PatchProperty" />
1956 - <xs:element ref="TargetProductCodes" />
1957 - <xs:any namespace="##other" processContents="lax">
1958 - <xs:annotation>
1959 - <xs:documentation>
1960 - Extensibility point in the WiX XML Schema. Schema extensions can register additional
1961 - elements at this point in the schema.
1962 - </xs:documentation>
1963 - </xs:annotation>
1964 - </xs:any>
1965 - </xs:choice>
1966 - </xs:sequence>
1967 - <xs:attribute name="Id" type="AutogenGuid">
1968 - <xs:annotation>
1969 - <xs:documentation>Patch code for this patch.</xs:documentation>
1970 - </xs:annotation>
1971 - </xs:attribute>
1972 - <xs:attribute name="Codepage" type="xs:string">
1973 - <xs:annotation>
1974 - <xs:documentation>The code page integer value or web name for the resulting MSP. See remarks for more information.</xs:documentation>
1975 - </xs:annotation>
1976 - </xs:attribute>
1977 - <xs:attribute name="AllowRemoval" type="YesNoTypeUnion">
1978 - <xs:annotation>
1979 - <xs:documentation>Whether this is an uninstallable patch.</xs:documentation>
1980 - </xs:annotation>
1981 - </xs:attribute>
1982 - <xs:attribute name="Classification" type="xs:string" use="required">
1983 - <xs:annotation>
1984 - <xs:documentation>Category of updates. Recommended values are Critical Update, Hotfix, Security Rollup, Security Update, Service Pack, Update, Update Rollup.</xs:documentation>
1985 - </xs:annotation>
1986 - </xs:attribute>
1987 - <xs:attribute name="ClientPatchId" type="xs:string">
1988 - <xs:annotation>
1989 - <xs:documentation>An easily referenced identity unique to a patch that can be used in product authoring. See remarks for more information.</xs:documentation>
1990 - </xs:annotation>
1991 - </xs:attribute>
1992 - <xs:attribute name="ApiPatchingSymbolNoImagehlpFlag" type="YesNoTypeUnion">
1993 - <xs:annotation>
1994 - <xs:documentation>Flag used when creating a binary file patch. Default is "no". Don't use imagehlp.dll.</xs:documentation>
1995 - </xs:annotation>
1996 - </xs:attribute>
1997 - <xs:attribute name="ApiPatchingSymbolNoFailuresFlag" type="YesNoTypeUnion">
1998 - <xs:annotation>
1999 - <xs:documentation>Flag used when creating a binary file patch. Default is "no". Don't fail patch due to imagehlp failures.</xs:documentation>
2000 - </xs:annotation>
2001 - </xs:attribute>
2002 - <xs:attribute name="ApiPatchingSymbolUndecoratedTooFlag" type="YesNoTypeUnion">
2003 - <xs:annotation>
2004 - <xs:documentation>Flag used when creating a binary file patch. Default is "no". After matching decorated symbols, try to match remaining by undecorated names.</xs:documentation>
2005 - </xs:annotation>
2006 - </xs:attribute>
2007 - <xs:attribute name="Description" type="xs:string" use="required">
2008 - <xs:annotation>
2009 - <xs:documentation>Description of the patch.</xs:documentation>
2010 - </xs:annotation>
2011 - </xs:attribute>
2012 - <xs:attribute name="DisplayName" type="xs:string" use="required">
2013 - <xs:annotation>
2014 - <xs:documentation>A title for the patch that is suitable for public display. In Add/Remove Programs from XP SP2 on.</xs:documentation>
2015 - </xs:annotation>
2016 - </xs:attribute>
2017 - <xs:attribute name="Comments" type="xs:string">
2018 - <xs:annotation>
2019 - <xs:documentation>Optional comments for browsing.</xs:documentation>
2020 - </xs:annotation>
2021 - </xs:attribute>
2022 - <xs:attribute name="Manufacturer" type="xs:string">
2023 - <xs:annotation>
2024 - <xs:documentation>Vendor releasing the package</xs:documentation>
2025 - </xs:annotation>
2026 - </xs:attribute>
2027 - <xs:attribute name="MinorUpdateTargetRTM" type="YesNoTypeUnion">
2028 - <xs:annotation>
2029 - <xs:documentation>
2030 - Indicates that the patch targets the RTM version of the product or the most recent major
2031 - upgrade patch. Author this optional property in minor update patches that contain sequencing
2032 - information to indicate that the patch removes all patches up to the RTM version of the
2033 - product, or up to the most recent major upgrade patch. This property is available beginning
2034 - with Windows Installer 3.1.
2035 - </xs:documentation>
2036 - </xs:annotation>
2037 - </xs:attribute>
2038 - <xs:attribute name="MoreInfoURL" type="xs:string">
2039 - <xs:annotation>
2040 - <xs:documentation>A URL that provides information specific to this patch. In Add/Remove Programs from XP SP2 on.</xs:documentation>
2041 - </xs:annotation>
2042 - </xs:attribute>
2043 - <xs:attribute name="OptimizedInstallMode" type="YesNoTypeUnion">
2044 - <xs:annotation>
2045 - <xs:documentation>
2046 - If this attribute is set to 'yes' in all the patches to be applied in a transaction, the
2047 - application of the patch is optimized if possible. Available beginning with Windows Installer 3.1.
2048 - </xs:documentation>
2049 - </xs:annotation>
2050 - </xs:attribute>
2051 - <xs:attribute name="TargetProductName" type="xs:string">
2052 - <xs:annotation>
2053 - <xs:documentation>Name of the application or target product suite.</xs:documentation>
2054 - </xs:annotation>
2055 - </xs:attribute>
2056 - <xs:attribute name="OptimizePatchSizeForLargeFiles" type="YesNoTypeUnion">
2057 - <xs:annotation>
2058 - <xs:documentation>When this attribute is set, patches for files greater than approximately 4 MB in size may be made smaller.</xs:documentation>
2059 - </xs:annotation>
2060 - </xs:attribute>
2061 - </xs:complexType>
2062 - </xs:element>
2063 - <xs:element name="Validate">
2064 - <xs:annotation>
2065 - <xs:documentation>Sets information in the patch transform that determines if the transform applies to an installed product and what errors should be ignored when applying the patch transform.</xs:documentation>
2066 - <xs:appinfo>
2067 - <xse:remarks>
2068 - <html:p>A transform contains the differences between the target product and the upgraded product. When a transform or a patch (which contains transforms) is applied, the following properties of the installed product are validated against the properties of the target product stored in a transform.</html:p>
2069 - <html:ul>
2070 - <html:li>ProductCode</html:li>
2071 - <html:li>ProductLanguage</html:li>
2072 - <html:li>ProductVersion</html:li>
2073 - <html:li>UpgradeCode</html:li>
2074 - </html:ul>
2075 - <html:p>Windows Installer simply validates that the ProductCode, ProductLanguage, and UpgradeCode of an installed product are equivalent to those propeties of the target product used to create the transform; however, the ProductVersion can be validated with a greater range of comparisons.</html:p>
2076 - <html:p>You can compare up to the first three fields of the ProductVersion. Changes to the fourth field are not validated and are useful for small updates. You can also choose how to compare the target ProductVersion used to create the transform with the installed ProductVersion. For example, while the default value of 'Equals' is recommended, if you wanted a minor upgrade patch to apply to the target ProductVersion and all older products with the same ProductCode, you would use 'LesserOrEqual'.</html:p>
2077 - </xse:remarks>
2078 - </xs:appinfo>
2079 - </xs:annotation>
2080 - <xs:complexType>
2081 - <xs:attribute name="ProductId" type="YesNoTypeUnion" default="yes">
2082 - <xs:annotation>
2083 - <xs:documentation>Requires that the installed ProductCode match the target ProductCode used to create the transform. The default is 'yes'.</xs:documentation>
2084 - </xs:annotation>
2085 - </xs:attribute>
2086 - <xs:attribute name="ProductLanguage" type="YesNoTypeUnion" default="no">
2087 - <xs:annotation>
2088 - <xs:documentation>Requires that the installed ProductLanguage match the target ProductLanguage used to create the transform. The default is 'no'.</xs:documentation>
2089 - </xs:annotation>
2090 - </xs:attribute>
2091 - <xs:attribute name="ProductVersion" default="Update">
2092 - <xs:annotation>
2093 - <xs:documentation>Determines how many fields of the installed ProductVersion to compare. See remarks for more information. The default is 'Update'.</xs:documentation>
2094 - </xs:annotation>
2095 - <xs:simpleType>
2096 - <xs:restriction base="xs:NMTOKEN">
2097 - <xs:enumeration value="Major">
2098 - <xs:annotation>
2099 - <xs:documentation>Checks the major version.</xs:documentation>
2100 - </xs:annotation>
2101 - </xs:enumeration>
2102 - <xs:enumeration value="Minor">
2103 - <xs:annotation>
2104 - <xs:documentation>Checks the major and minor versions.</xs:documentation>
2105 - </xs:annotation>
2106 - </xs:enumeration>
2107 - <xs:enumeration value="Update">
2108 - <xs:annotation>
2109 - <xs:documentation>Checks the major, minor, and update versions.</xs:documentation>
2110 - </xs:annotation>
2111 - </xs:enumeration>
2112 - </xs:restriction>
2113 - </xs:simpleType>
2114 - </xs:attribute>
2115 - <xs:attribute name="ProductVersionOperator" default="Equal">
2116 - <xs:annotation>
2117 - <xs:documentation>Determines how the installed ProductVersion is compared to the target ProductVersion used to create the transform. See remarks for more information. The default is 'Equal'.</xs:documentation>
2118 - </xs:annotation>
2119 - <xs:simpleType>
2120 - <xs:restriction base="xs:NMTOKEN">
2121 - <xs:enumeration value="Lesser">
2122 - <xs:annotation>
2123 - <xs:documentation>Installed ProductVersion &lt; target ProductVersion.</xs:documentation>
2124 - </xs:annotation>
2125 - </xs:enumeration>
2126 - <xs:enumeration value="LesserOrEqual">
2127 - <xs:annotation>
2128 - <xs:documentation>Installed ProductVersion &lt;= target ProductVersion.</xs:documentation>
2129 - </xs:annotation>
2130 - </xs:enumeration>
2131 - <xs:enumeration value="Equal">
2132 - <xs:annotation>
2133 - <xs:documentation>Installed ProductVersion = target ProductVersion.</xs:documentation>
2134 - </xs:annotation>
2135 - </xs:enumeration>
2136 - <xs:enumeration value="GreaterOrEqual">
2137 - <xs:annotation>
2138 - <xs:documentation>Installed ProductVersion &gt;= target ProductVersion.</xs:documentation>
2139 - </xs:annotation>
2140 - </xs:enumeration>
2141 - <xs:enumeration value="Greater">
2142 - <xs:annotation>
2143 - <xs:documentation>Installed ProductVersion &gt; target ProductVersion.</xs:documentation>
2144 - </xs:annotation>
2145 - </xs:enumeration>
2146 - </xs:restriction>
2147 - </xs:simpleType>
2148 - </xs:attribute>
2149 - <xs:attribute name="UpgradeCode" type="YesNoTypeUnion" default="yes">
2150 - <xs:annotation>
2151 - <xs:documentation>Requires that the installed UpgradeCode match the target UpgradeCode used to create the transform. The default is 'yes'.</xs:documentation>
2152 - </xs:annotation>
2153 - </xs:attribute>
2154 - <xs:attribute name="IgnoreAddExistingRow" type="YesNoTypeUnion" default="yes">
2155 - <xs:annotation>
2156 - <xs:documentation>Ignore errors when adding existing rows. The default is 'yes'.</xs:documentation>
2157 - </xs:annotation>
2158 - </xs:attribute>
2159 - <xs:attribute name="IgnoreAddExistingTable" type="YesNoTypeUnion" default="yes">
2160 - <xs:annotation>
2161 - <xs:documentation>Ignore errors when adding existing tables. The default is 'yes'.</xs:documentation>
2162 - </xs:annotation>
2163 - </xs:attribute>
2164 - <xs:attribute name="IgnoreDeleteMissingRow" type="YesNoTypeUnion" default="yes">
2165 - <xs:annotation>
2166 - <xs:documentation>Ignore errors when deleting missing rows. The default is 'yes'.</xs:documentation>
2167 - </xs:annotation>
2168 - </xs:attribute>
2169 - <xs:attribute name="IgnoreDeleteMissingTable" type="YesNoTypeUnion" default="yes">
2170 - <xs:annotation>
2171 - <xs:documentation>Ignore errors when deleting missing tables. The default is 'yes'.</xs:documentation>
2172 - </xs:annotation>
2173 - </xs:attribute>
2174 - <xs:attribute name="IgnoreUpdateMissingRow" type="YesNoTypeUnion" default="yes">
2175 - <xs:annotation>
2176 - <xs:documentation>Ignore errors when updating missing rows. The default is 'yes'.</xs:documentation>
2177 - </xs:annotation>
2178 - </xs:attribute>
2179 - <xs:attribute name="IgnoreChangingCodePage" type="YesNoTypeUnion" default="no">
2180 - <xs:annotation>
2181 - <xs:documentation>Ignore errors when changing the database code page. The default is 'no'.</xs:documentation>
2182 - </xs:annotation>
2183 - </xs:attribute>
2184 - </xs:complexType>
2185 - </xs:element>
2186 - <xs:element name="OptimizeCustomActions">
2187 - <xs:annotation>
2188 - <xs:documentation>Indicates whether custom actions can be skipped when applying the patch.</xs:documentation>
2189 - <xs:appinfo>
2190 - <xse:msiRef table="MsiPatchMetadata" href="http://msdn.microsoft.com/library/aa370344.aspx" />
2191 - </xs:appinfo>
2192 - </xs:annotation>
2193 - <xs:complexType>
2194 - <xs:attribute name="SkipAssignment" type="YesNoTypeUnion">
2195 - <xs:annotation>
2196 - <xs:documentation>Skip property (type 51) and directory (type 35) assignment custom actions.</xs:documentation>
2197 - </xs:annotation>
2198 - </xs:attribute>
2199 - <xs:attribute name="SkipImmediate" type="YesNoTypeUnion">
2200 - <xs:annotation>
2201 - <xs:documentation>Skip immediate custom actions that are not property or directory assignment custom actions.</xs:documentation>
2202 - </xs:annotation>
2203 - </xs:attribute>
2204 - <xs:attribute name="SkipDeferred" type="YesNoTypeUnion">
2205 - <xs:annotation>
2206 - <xs:documentation>Skip custom actions that run within the script.</xs:documentation>
2207 - </xs:annotation>
2208 - </xs:attribute>
2209 - </xs:complexType>
2210 - </xs:element>
2211 - <xs:element name="PatchBaseline">
2212 - <xs:annotation>
2213 - <xs:documentation>Identifies a set of product versions.</xs:documentation>
2214 - </xs:annotation>
2215 - <xs:complexType>
2216 - <xs:choice minOccurs="0">
2217 - <xs:element ref="Validate" minOccurs="0" />
2218 - </xs:choice>
2219 - <xs:attribute name="Id" type="xs:string" use="required">
2220 - <xs:annotation>
2221 - <xs:documentation>Identifier for a set of product versions.</xs:documentation>
2222 - </xs:annotation>
2223 - </xs:attribute>
2224 - </xs:complexType>
2225 - </xs:element>
2226 - <xs:element name="PatchFamily">
2227 - <xs:annotation>
2228 - <xs:documentation>Collection of items that should be kept from the differences between two products.</xs:documentation>
2229 - </xs:annotation>
2230 - <xs:complexType>
2231 - <xs:sequence>
2232 - <xs:choice minOccurs="0" maxOccurs="unbounded">
2233 - <xs:element ref="All" minOccurs="0" />
2234 - <xs:element ref="BinaryRef" minOccurs="0" maxOccurs="unbounded" />
2235 - <xs:element ref="ComponentRef" minOccurs="0" maxOccurs="unbounded" />
2236 - <xs:element ref="CustomActionRef" minOccurs="0" maxOccurs="unbounded" />
2237 - <xs:element ref="DigitalCertificateRef" minOccurs="0" maxOccurs="unbounded" />
2238 - <xs:element ref="DirectoryRef" minOccurs="0" maxOccurs="unbounded" />
2239 - <xs:element ref="FeatureRef" minOccurs="0" maxOccurs="unbounded" />
2240 - <xs:element ref="IconRef" minOccurs="0" maxOccurs="unbounded" />
2241 - <xs:element ref="PropertyRef" minOccurs="0" maxOccurs="unbounded" />
2242 - <xs:element ref="UIRef" minOccurs="0" maxOccurs="unbounded" />
2243 - <xs:any namespace="##other" processContents="lax">
2244 - <xs:annotation>
2245 - <xs:documentation>
2246 - Extensibility point in the WiX XML Schema. Schema extensions can register additional
2247 - elements at this point in the schema.
2248 - </xs:documentation>
2249 - </xs:annotation>
2250 - </xs:any>
2251 - </xs:choice>
2252 - </xs:sequence>
2253 - <xs:attribute name="Id" type="xs:string" use="required">
2254 - <xs:annotation>
2255 - <xs:documentation>Identifier which indicates a sequence family to which this patch belongs.</xs:documentation>
2256 - </xs:annotation>
2257 - </xs:attribute>
2258 - <xs:attribute name="ProductCode" type="Guid">
2259 - <xs:annotation>
2260 - <xs:documentation>
2261 - Specifies the ProductCode of the product that this family applies to.
2262 - </xs:documentation>
2263 - </xs:annotation>
2264 - </xs:attribute>
2265 - <xs:attribute name="Version" type="xs:string" use="required">
2266 - <xs:annotation>
2267 - <xs:documentation>Used to populate the sequence column of the MsiPatchSequence table in the final MSP file. Specified in x.x.x.x format. See documentation for Sequence column of MsiPatchSequence table in MSI SDK.</xs:documentation>
2268 - </xs:annotation>
2269 - </xs:attribute>
2270 - <xs:attribute name="Supersede" type="YesNoTypeUnion">
2271 - <xs:annotation>
2272 - <xs:documentation>
2273 - Set this value to 'yes' to indicate that this patch will supersede all previous patches in this patch family.
2274 - The default value is 'no'.
2275 - </xs:documentation>
2276 - </xs:annotation>
2277 - </xs:attribute>
2278 - </xs:complexType>
2279 - </xs:element>
2280 - <xs:element name="PatchFamilyGroup">
2281 - <xs:annotation>
2282 - <xs:documentation>
2283 - Groups together multiple patch families to be used in other locations.
2284 - </xs:documentation>
2285 - <xs:appinfo>
2286 - <xse:seeAlso ref="PatchFamilyGroupRef"/>
2287 - </xs:appinfo>
2288 - </xs:annotation>
2289 - <xs:complexType>
2290 - <xs:choice minOccurs="0" maxOccurs="unbounded">
2291 - <xs:element ref="PatchFamily"/>
2292 - <xs:element ref="PatchFamilyRef"/>
2293 - <xs:element ref="PatchFamilyGroupRef"/>
2294 - <xs:any namespace="##other" processContents="lax">
2295 - <xs:annotation>
2296 - <xs:documentation>
2297 - Extensibility point in the WiX XML Schema. Schema extensions can register additional
2298 - elements at this point in the schema.
2299 - </xs:documentation>
2300 - </xs:annotation>
2301 - </xs:any>
2302 - </xs:choice>
2303 - <xs:attribute name="Id" type="xs:string" use="required">
2304 - <xs:annotation>
2305 - <xs:documentation>Identifier for the PatchFamilyGroup.</xs:documentation>
2306 - </xs:annotation>
2307 - </xs:attribute>
2308 - <xs:anyAttribute namespace="##other" processContents="lax">
2309 - <xs:annotation>
2310 - <xs:documentation>
2311 - Extensibility point in the WiX XML Schema. Schema extensions can register additional
2312 - attributes at this point in the schema.
2313 - </xs:documentation>
2314 - </xs:annotation>
2315 - </xs:anyAttribute>
2316 - </xs:complexType>
2317 -</xs:element>
2318 -<xs:element name="PatchFamilyGroupRef">
2319 - <xs:annotation>
2320 - <xs:documentation>Create a reference to a PatchFamilyGroup in another Fragment.</xs:documentation>
2321 - <xs:appinfo>
2322 - <xse:seeAlso ref="PatchFamilyGroupRef"/>
2323 - </xs:appinfo>
2324 - </xs:annotation>
2325 - <xs:complexType>
2326 - <xs:attribute name="Id" type="xs:string" use="required">
2327 - <xs:annotation>
2328 - <xs:documentation>The identifier of the PatchFamilyGroup to reference.</xs:documentation>
2329 - </xs:annotation>
2330 - </xs:attribute>
2331 - <xs:anyAttribute namespace="##other" processContents="lax">
2332 - <xs:annotation>
2333 - <xs:documentation>
2334 - Extensibility point in the WiX XML Schema. Schema extensions can register additional
2335 - attributes at this point in the schema.
2336 - </xs:documentation>
2337 - </xs:annotation>
2338 - </xs:anyAttribute>
2339 - </xs:complexType>
2340 -</xs:element>
2341 - <xs:element name="PatchCreation">
2342 - <xs:annotation>
2343 - <xs:documentation>
2344 - The PatchCreation element is analogous to the main function in a C program. When linking, only one PatchCreation section
2345 - can be given to the linker to produce a successful result. Using this element creates a pcp file.
2346 - </xs:documentation>
2347 - <xs:appinfo>
2348 - <xse:remarks>
2349 - <html:p>You can specify any valid Windows code by by integer like 1252, or by web name like Windows-1252. See <html:a href="~/overview/codepage.html">Code Pages</html:a> for more information.</html:p>
2350 - </xse:remarks>
2351 - </xs:appinfo>
2352 - </xs:annotation>
2353 - <xs:complexType>
2354 - <xs:sequence>
2355 - <xs:element ref="PatchInformation" />
2356 - <xs:element ref="PatchMetadata" minOccurs="0" />
2357 - <xs:element ref="Family" maxOccurs="unbounded" />
2358 - <xs:choice minOccurs="0" maxOccurs="unbounded">
2359 - <xs:element ref="PatchProperty" />
2360 - <xs:element ref="PatchSequence" />
2361 - <xs:element ref="ReplacePatch" />
2362 - <xs:element ref="TargetProductCode" />
2363 - </xs:choice>
2364 - </xs:sequence>
2365 - <xs:attribute name="Id" type="Guid" use="required">
2366 - <xs:annotation>
2367 - <xs:documentation>PatchCreation identifier; this is the primary key for identifying patches.</xs:documentation>
2368 - </xs:annotation>
2369 - </xs:attribute>
2370 - <xs:attribute name="AllowMajorVersionMismatches" type="YesNoTypeUnion">
2371 - <xs:annotation>
2372 - <xs:documentation>Use this to set whether the major versions between the upgrade and target images match. See <html:a href="http://msdn.microsoft.com/library/aa370890.aspx" target="_blank">AllowProductVersionMajorMismatches</html:a> for more information.</xs:documentation>
2373 - </xs:annotation>
2374 - </xs:attribute>
2375 - <xs:attribute name="AllowProductCodeMismatches" type="YesNoTypeUnion">
2376 - <xs:annotation>
2377 - <xs:documentation>Use this to set whether the product code between the upgrade and target images match. See <html:a href="http://msdn.microsoft.com/library/aa370890.aspx" target="_blank">AllowProductCodeMismatches</html:a> for more information.</xs:documentation>
2378 - </xs:annotation>
2379 - </xs:attribute>
2380 - <xs:attribute name="CleanWorkingFolder" type="YesNoTypeUnion">
2381 - <xs:annotation>
2382 - <xs:documentation>Use this to set whether Patchwiz should clean the temp folder when finished. See <html:a href="http://msdn.microsoft.com/library/aa370890.aspx" target="_blank">DontRemoveTempFolderWhenFinished</html:a> for more information. </xs:documentation>
2383 - </xs:annotation>
2384 - </xs:attribute>
2385 - <xs:attribute name="Codepage" type="xs:string">
2386 - <xs:annotation>
2387 - <xs:documentation>The code page integer value or web name for the resulting PCP. See remarks for more information.</xs:documentation>
2388 - </xs:annotation>
2389 - </xs:attribute>
2390 - <xs:attribute name="OutputPath" type="xs:string">
2391 - <xs:annotation>
2392 - <xs:documentation>The full path, including file name, of the patch package file that is to be generated. See <html:a href="http://msdn.microsoft.com/library/aa370890.aspx" target="_blank">PatchOutputPath</html:a> for more information.</xs:documentation>
2393 - </xs:annotation>
2394 - </xs:attribute>
2395 - <xs:attribute name="SourceList" type="xs:string">
2396 - <xs:annotation>
2397 - <xs:documentation>Used to locate the .msp file for the patch if the cached copy is unavailable. See <html:a href="http://msdn.microsoft.com/library/aa370890.aspx" target="_blank">PatchSourceList</html:a> for more information.</xs:documentation>
2398 - </xs:annotation>
2399 - </xs:attribute>
2400 - <xs:attribute name="SymbolFlags" type="xs:int">
2401 - <xs:annotation>
2402 - <xs:documentation>An 8-digit hex integer representing the combination of patch symbol usage flags to use when creating a binary file patch. See <html:a href="http://msdn.microsoft.com/library/aa370890.aspx" target="_blank">ApiPatchingSymbolFlags</html:a> for more information.</xs:documentation>
2403 - </xs:annotation>
2404 - </xs:attribute>
2405 - <xs:attribute name="WholeFilesOnly" type="YesNoTypeUnion">
2406 - <xs:annotation>
2407 - <xs:documentation>Use this to set whether changing files should be included in their entirety. See <html:a href="http://msdn.microsoft.com/library/aa370890.aspx" target="_blank">IncludeWholeFilesOnly</html:a> for more information.</xs:documentation>
2408 - </xs:annotation>
2409 - </xs:attribute>
2410 - </xs:complexType>
2411 - </xs:element>
2412 - <xs:element name="PatchInformation">
2413 - <xs:annotation>
2414 - <xs:documentation>Properties about the patch to be placed in the Summary Information Stream. These are visible from COM through the IStream interface, and these properties can be seen on the package in Explorer.</xs:documentation>
2415 - <xs:appinfo>
2416 - <xse:remarks>
2417 - <html:p>You can specify any valid Windows code by by integer like 1252, or by web name like Windows-1252. See <html:a href="~/overview/codepage.html">Code Pages</html:a> for more information.</html:p>
2418 - </xse:remarks>
2419 - </xs:appinfo>
2420 - </xs:annotation>
2421 - <xs:complexType>
2422 - <xs:attribute name="Description" type="xs:string">
2423 - <xs:annotation>
2424 - <xs:documentation>A short description of the patch that includes the name of the product.</xs:documentation>
2425 - </xs:annotation>
2426 - </xs:attribute>
2427 - <xs:attribute name="Platforms" type="xs:string">
2428 - <xs:annotation>
2429 - <xs:appinfo>
2430 - <xse:deprecated />
2431 - </xs:appinfo>
2432 - </xs:annotation>
2433 - </xs:attribute>
2434 - <xs:attribute name="Languages" type="xs:string">
2435 - <xs:annotation>
2436 - <xs:appinfo>
2437 - <xse:deprecated />
2438 - </xs:appinfo>
2439 - </xs:annotation>
2440 - </xs:attribute>
2441 - <xs:attribute name="Manufacturer" type="xs:string">
2442 - <xs:annotation>
2443 - <xs:documentation>The name of the manufacturer of the patch package.</xs:documentation>
2444 - </xs:annotation>
2445 - </xs:attribute>
2446 - <xs:attribute name="Keywords" type="xs:string">
2447 - <xs:annotation>
2448 - <xs:documentation>A semicolon-delimited list of network or URL locations for alternate sources of the patch. The default is "Installer,Patching,PCP,Database".</xs:documentation>
2449 - </xs:annotation>
2450 - </xs:attribute>
2451 - <xs:attribute name="Comments" type="xs:string">
2452 - <xs:annotation>
2453 - <xs:documentation>General purpose of the patch package. For example, "This patch contains the logic and data required to install <html:i>&lt;product&gt;</html:i>."</xs:documentation>
2454 - </xs:annotation>
2455 - </xs:attribute>
2456 - <xs:attribute name="ReadOnly" type="YesNoDefaultTypeUnion">
2457 - <xs:annotation>
2458 - <xs:documentation>
2459 - The value of this attribute conveys whether the package should be opened as read-only.
2460 - A database editing tool should not modify a read-only enforced database and should
2461 - issue a warning at attempts to modify a read-only recommended database.
2462 - </xs:documentation>
2463 - </xs:annotation>
2464 - </xs:attribute>
2465 - <xs:attribute name="SummaryCodepage" type="xs:string">
2466 - <xs:annotation>
2467 - <xs:documentation>The code page integer value or web name for summary info strings only. The default is 1252. See remarks for more information.</xs:documentation>
2468 - </xs:annotation>
2469 - </xs:attribute>
2470 - <xs:attribute name="ShortNames" type="YesNoTypeUnion">
2471 - <xs:annotation>
2472 - <xs:appinfo>
2473 - <xse:deprecated />
2474 - </xs:appinfo>
2475 - </xs:annotation>
2476 - </xs:attribute>
2477 - <xs:attribute name="Compressed" type="YesNoTypeUnion">
2478 - <xs:annotation>
2479 - <xs:appinfo>
2480 - <xse:deprecated />
2481 - </xs:appinfo>
2482 - </xs:annotation>
2483 - </xs:attribute>
2484 - <xs:attribute name="AdminImage" type="YesNoTypeUnion">
2485 - <xs:annotation>
2486 - <xs:appinfo>
2487 - <xse:deprecated />
2488 - </xs:appinfo>
2489 - </xs:annotation>
2490 - </xs:attribute>
2491 - </xs:complexType>
2492 - </xs:element>
2493 - <xs:element name="PatchMetadata">
2494 - <xs:annotation>
2495 - <xs:documentation>Properties about the patch to be placed in the PatchMetadata table.</xs:documentation>
2496 - <xs:appinfo>
2497 - <xse:msiRef table="MsiPatchMetadata" href="http://msdn.microsoft.com/library/aa370344.aspx" />
2498 - </xs:appinfo>
2499 - </xs:annotation>
2500 - <xs:complexType>
2501 - <xs:sequence>
2502 - <xs:choice minOccurs="0" maxOccurs="unbounded">
2503 - <xs:element ref="CustomProperty" minOccurs="0">
2504 - <xs:annotation>
2505 - <xs:documentation>A custom property that extends the standard set.</xs:documentation>
2506 - </xs:annotation>
2507 - </xs:element>
2508 - <xs:element ref="OptimizeCustomActions" minOccurs="0" maxOccurs="1">
2509 - <xs:annotation>
2510 - <xs:documentation>Indicates whether custom actions can be skipped when applying the patch.</xs:documentation>
2511 - </xs:annotation>
2512 - </xs:element>
2513 - </xs:choice>
2514 - </xs:sequence>
2515 - <xs:attribute name="AllowRemoval" type="YesNoTypeUnion" use="required">
2516 - <xs:annotation>
2517 - <xs:documentation>Whether this is an uninstallable patch.</xs:documentation>
2518 - </xs:annotation>
2519 - </xs:attribute>
2520 - <xs:attribute name="Classification" type="xs:string" use="required">
2521 - <xs:annotation>
2522 - <xs:documentation>Category of updates. Recommended values are Critical Update, Hotfix, Security Rollup, Security Update, Service Pack, Update, Update Rollup.</xs:documentation>
2523 - </xs:annotation>
2524 - </xs:attribute>
2525 - <xs:attribute name="CreationTimeUTC" type="xs:string">
2526 - <xs:annotation>
2527 - <xs:documentation>Creation time of the .msp file in the form mm-dd-yy HH:MM (month-day-year hour:minute).</xs:documentation>
2528 - </xs:annotation>
2529 - </xs:attribute>
2530 - <xs:attribute name="Description" type="xs:string" use="required">
2531 - <xs:annotation>
2532 - <xs:documentation>Description of the patch.</xs:documentation>
2533 - </xs:annotation>
2534 - </xs:attribute>
2535 - <xs:attribute name="DisplayName" type="xs:string" use="required">
2536 - <xs:annotation>
2537 - <xs:documentation>A title for the patch that is suitable for public display. In Add/Remove Programs from XP SP2 on.</xs:documentation>
2538 - </xs:annotation>
2539 - </xs:attribute>
2540 - <xs:attribute name="ManufacturerName" type="xs:string" use="required">
2541 - <xs:annotation>
2542 - <xs:documentation>Name of the manufacturer.</xs:documentation>
2543 - </xs:annotation>
2544 - </xs:attribute>
2545 - <xs:attribute name="MinorUpdateTargetRTM" type="xs:string">
2546 - <xs:annotation>
2547 - <xs:documentation>
2548 - Indicates that the patch targets the RTM version of the product or the most recent major
2549 - upgrade patch. Author this optional property in minor update patches that contain sequencing
2550 - information to indicate that the patch removes all patches up to the RTM version of the
2551 - product, or up to the most recent major upgrade patch. This property is available beginning
2552 - with Windows Installer 3.1.
2553 - </xs:documentation>
2554 - </xs:annotation>
2555 - </xs:attribute>
2556 - <xs:attribute name="MoreInfoURL" type="xs:string" use="required">
2557 - <xs:annotation>
2558 - <xs:documentation>A URL that provides information specific to this patch. In Add/Remove Programs from XP SP2 on.</xs:documentation>
2559 - </xs:annotation>
2560 - </xs:attribute>
2561 - <xs:attribute name="OptimizedInstallMode" type="YesNoTypeUnion">
2562 - <xs:annotation>
2563 - <xs:documentation>
2564 - If this attribute is set to 'yes' in all the patches to be applied in a transaction, the
2565 - application of the patch is optimized if possible. Available beginning with Windows Installer 3.1.
2566 - </xs:documentation>
2567 - </xs:annotation>
2568 - </xs:attribute>
2569 - <xs:attribute name="TargetProductName" type="xs:string" use="required">
2570 - <xs:annotation>
2571 - <xs:documentation>Name of the application or target product suite.</xs:documentation>
2572 - </xs:annotation>
2573 - </xs:attribute>
2574 - </xs:complexType>
2575 - </xs:element>
2576 - <xs:element name="CustomProperty">
2577 - <xs:annotation>
2578 - <xs:documentation>A custom property for the PatchMetadata table.</xs:documentation>
2579 - </xs:annotation>
2580 - <xs:complexType>
2581 - <xs:attribute name="Company" type="xs:string" use="required">
2582 - <xs:annotation>
2583 - <xs:documentation>The name of the company.</xs:documentation>
2584 - </xs:annotation>
2585 - </xs:attribute>
2586 - <xs:attribute name="Property" type="xs:string" use="required">
2587 - <xs:annotation>
2588 - <xs:documentation>The name of the metadata property.</xs:documentation>
2589 - </xs:annotation>
2590 - </xs:attribute>
2591 - <xs:attribute name="Value" type="xs:string" use="required">
2592 - <xs:annotation>
2593 - <xs:documentation>Value of the metadata property.</xs:documentation>
2594 - </xs:annotation>
2595 - </xs:attribute>
2596 - </xs:complexType>
2597 - </xs:element>
2598 - <xs:element name="ReplacePatch">
2599 - <xs:annotation>
2600 - <xs:documentation>A patch that is deprecated by this patch.</xs:documentation>
2601 - </xs:annotation>
2602 - <xs:complexType>
2603 - <xs:attribute name="Id" type="Guid" use="required">
2604 - <xs:annotation>
2605 - <xs:documentation>Patch GUID to be unregistered if it exists on the machine targeted by this patch.</xs:documentation>
2606 - </xs:annotation>
2607 - </xs:attribute>
2608 - </xs:complexType>
2609 - </xs:element>
2610 - <xs:element name="TargetProductCodes">
2611 - <xs:annotation>
2612 - <xs:documentation>
2613 - The product codes for products that can accept the patch.
2614 - </xs:documentation>
2615 - </xs:annotation>
2616 - <xs:complexType>
2617 - <xs:choice maxOccurs="unbounded">
2618 - <xs:element ref="TargetProductCode" />
2619 - </xs:choice>
2620 - <xs:attribute name="Replace" type="YesNoTypeUnion">
2621 - <xs:annotation>
2622 - <xs:documentation>Whether to replace the product codes that can accept the patch from the target packages with the child elements.</xs:documentation>
2623 - </xs:annotation>
2624 - </xs:attribute>
2625 - </xs:complexType>
2626 - </xs:element>
2627 - <xs:element name="TargetProductCode">
2628 - <xs:annotation>
2629 - <xs:documentation>
2630 - A product code for a product that can accept the patch.
2631 - </xs:documentation>
2632 - <xs:appinfo>
2633 - <xse:remarks>
2634 - <html:p>When using the PatchCreation element, if the Id attribute value is '*' or this element is not authored, the product codes of all products referenced by the TargetImages element are used.</html:p>
2635 - <html:p>When using the Patch element, the Id attribute value must not be '*'. Use the TargetProductCodes/@Replace attribute instead.</html:p>
2636 - </xse:remarks>
2637 - </xs:appinfo>
2638 - </xs:annotation>
2639 - <xs:complexType>
2640 - <xs:attribute name="Id" type="xs:string" use="required">
2641 - <xs:annotation>
2642 - <xs:documentation>
2643 - The product code for a product that can accept the patch. This can be '*'. See remarks for more information.
2644 - </xs:documentation>
2645 - </xs:annotation>
2646 - </xs:attribute>
2647 - </xs:complexType>
2648 - </xs:element>
2649 - <xs:element name="PatchProperty">
2650 - <xs:annotation>
2651 - <xs:documentation>A property for this patch database.</xs:documentation>
2652 - <xs:appinfo>
2653 - <xse:msiRef table="MsiPatchMetadata" href="http://msdn.microsoft.com/library/aa370344.aspx" />
2654 - <xse:remarks>
2655 - <html:p>When authored under the Patch element, the PatchProperty defines entries in the MsiPatchMetadata table.</html:p>
2656 - </xse:remarks>
2657 - </xs:appinfo>
2658 - </xs:annotation>
2659 - <xs:complexType>
2660 - <xs:attribute name="Company" type="xs:string">
2661 - <xs:annotation>
2662 - <xs:documentation>Name of the company for a custom metadata property.</xs:documentation>
2663 - </xs:annotation>
2664 - </xs:attribute>
2665 - <xs:attribute name="Name" type="xs:string" use="required">
2666 - <xs:annotation>
2667 - <xs:documentation>Name of the patch property.</xs:documentation>
2668 - </xs:annotation>
2669 - </xs:attribute>
2670 - <xs:attribute name="Value" type="xs:string" use="required">
2671 - <xs:annotation>
2672 - <xs:documentation>Value of the patch property.</xs:documentation>
2673 - </xs:annotation>
2674 - </xs:attribute>
2675 - </xs:complexType>
2676 - </xs:element>
2677 - <xs:element name="PatchSequence">
2678 - <xs:annotation>
2679 - <xs:documentation>Sequence information for this patch database. Sequence information is generated automatically in most cases, and rarely needs to be set explicitly.</xs:documentation>
2680 - <xs:appinfo>
2681 - <xse:msiRef table="MsiPatchSequence" href="http://msdn.microsoft.com/library/aa370350.aspx" />
2682 - </xs:appinfo>
2683 - </xs:annotation>
2684 - <xs:complexType>
2685 - <xs:attribute name="PatchFamily" type="xs:string" use="required">
2686 - <xs:annotation>
2687 - <xs:documentation>Identifier which indicates a sequence family to which this patch belongs.</xs:documentation>
2688 - </xs:annotation>
2689 - </xs:attribute>
2690 - <xs:attribute name="ProductCode" type="Guid">
2691 - <xs:annotation>
2692 - <xs:documentation>
2693 - Specifies the ProductCode of the product that this family applies to.
2694 - This attribute cannot the specified if the TargetImage attribute is specified.
2695 - </xs:documentation>
2696 - </xs:annotation>
2697 - </xs:attribute>
2698 - <xs:attribute name="Sequence" type="xs:string">
2699 - <xs:annotation>
2700 - <xs:documentation>Used to populate the sequence column of the MsiPatchSequence table in the final MSP file. Specified in x.x.x.x format. See documentation for Sequence column of MsiPatchSequence table in MSI SDK.</xs:documentation>
2701 - </xs:annotation>
2702 - </xs:attribute>
2703 - <xs:attribute name="Supersede" type="YesNoTypeUnion">
2704 - <xs:annotation>
2705 - <xs:documentation>
2706 - Set this value to 'yes' to indicate that this patch will supersede all previous patches in this patch family.
2707 - The default value is 'no'.
2708 - </xs:documentation>
2709 - </xs:annotation>
2710 - </xs:attribute>
2711 - <xs:attribute name="Target" type="xs:string">
2712 - <xs:annotation>
2713 - <xs:appinfo>
2714 - <xse:deprecated ref="TargetImage" />
2715 - </xs:appinfo>
2716 - </xs:annotation>
2717 - </xs:attribute>
2718 - <xs:attribute name="TargetImage" type="xs:string">
2719 - <xs:annotation>
2720 - <xs:documentation>
2721 - Specifies the TargetImage that this family applies to.
2722 - This attribute cannot the specified if the ProductCode attribute is specified.
2723 - </xs:documentation>
2724 - </xs:annotation>
2725 - </xs:attribute>
2726 - </xs:complexType>
2727 - </xs:element>
2728 - <xs:element name="Family">
2729 - <xs:annotation>
2730 - <xs:documentation>Group of one or more upgraded images of a product.</xs:documentation>
2731 - </xs:annotation>
2732 - <xs:complexType>
2733 - <xs:sequence>
2734 - <xs:element ref="UpgradeImage" maxOccurs="unbounded" />
2735 - <xs:choice minOccurs="0" maxOccurs="unbounded">
2736 - <xs:element ref="ExternalFile" />
2737 - <xs:element ref="ProtectFile" />
2738 - </xs:choice>
2739 - </xs:sequence>
2740 - <xs:attribute name="DiskId" type="DiskIdType">
2741 - <xs:annotation>
2742 - <xs:documentation>Entered into the DiskId field of the new Media table record.</xs:documentation>
2743 - </xs:annotation>
2744 - </xs:attribute>
2745 - <xs:attribute name="DiskPrompt" type="xs:string">
2746 - <xs:annotation>
2747 - <xs:documentation>Value to display in the "[1]" of the DiskPrompt Property. Using this attribute will require you to define a DiskPrompt Property.</xs:documentation>
2748 - </xs:annotation>
2749 - </xs:attribute>
2750 - <xs:attribute name="MediaSrcProp" type="xs:string">
2751 - <xs:annotation>
2752 - <xs:documentation>Entered into the Source field of the new Media table entry of the upgraded image.</xs:documentation>
2753 - </xs:annotation>
2754 - </xs:attribute>
2755 - <xs:attribute name="Name" type="xs:string" use="required">
2756 - <xs:annotation>
2757 - <xs:documentation>Identifier for the family.</xs:documentation>
2758 - </xs:annotation>
2759 - </xs:attribute>
2760 - <xs:attribute name="SequenceStart" type="xs:int">
2761 - <xs:annotation>
2762 - <xs:documentation>Sequence number for the starting file.</xs:documentation>
2763 - </xs:annotation>
2764 - </xs:attribute>
2765 - <xs:attribute name="VolumeLabel" type="xs:string">
2766 - <xs:annotation>
2767 - <xs:documentation>Entered into the VolumeLabel field of the new Media table record.</xs:documentation>
2768 - </xs:annotation>
2769 - </xs:attribute>
2770 - </xs:complexType>
2771 - </xs:element>
2772 - <xs:element name="UpgradeImage">
2773 - <xs:annotation>
2774 - <xs:documentation>Contains information about the upgraded images of the product.</xs:documentation>
2775 - </xs:annotation>
2776 - <xs:complexType>
2777 - <xs:sequence>
2778 - <xs:element ref="TargetImage" maxOccurs="unbounded" />
2779 - <xs:choice minOccurs="0" maxOccurs="unbounded">
2780 - <xs:element ref="SymbolPath" />
2781 - <xs:element ref="UpgradeFile" />
2782 - </xs:choice>
2783 - </xs:sequence>
2784 - <xs:attribute name="Id" type="xs:string" use="required">
2785 - <xs:annotation>
2786 - <xs:documentation>Identifier to connect target images with upgraded image.</xs:documentation>
2787 - </xs:annotation>
2788 - </xs:attribute>
2789 - <xs:attribute name="SourceFile" type="xs:string">
2790 - <xs:annotation>
2791 - <xs:documentation>Full path to location of msi file for upgraded image.</xs:documentation>
2792 - </xs:annotation>
2793 - </xs:attribute>
2794 - <xs:attribute name="src" type="xs:string">
2795 - <xs:annotation>
2796 - <xs:appinfo>
2797 - <xse:deprecated ref="SourceFile" />
2798 - </xs:appinfo>
2799 - </xs:annotation>
2800 - </xs:attribute>
2801 - <xs:attribute name="SourcePatch" type="xs:string">
2802 - <xs:annotation>
2803 - <xs:documentation>Modified copy of the upgraded installation database that contains additional authoring specific to patching.</xs:documentation>
2804 - </xs:annotation>
2805 - </xs:attribute>
2806 - <xs:attribute name="srcPatch" type="xs:string">
2807 - <xs:annotation>
2808 - <xs:appinfo>
2809 - <xse:deprecated ref="SourcePatch" />
2810 - </xs:appinfo>
2811 - </xs:annotation>
2812 - </xs:attribute>
2813 - </xs:complexType>
2814 - </xs:element>
2815 - <xs:element name="TargetImage">
2816 - <xs:annotation>
2817 - <xs:documentation>Contains information about the target images of the product.</xs:documentation>
2818 - </xs:annotation>
2819 - <xs:complexType>
2820 - <xs:choice minOccurs="0" maxOccurs="unbounded">
2821 - <xs:element ref="SymbolPath" />
2822 - <xs:element ref="TargetFile" />
2823 - </xs:choice>
2824 - <xs:attribute name="Id" type="xs:string" use="required">
2825 - <xs:annotation>
2826 - <xs:documentation>Identifier for the target image.</xs:documentation>
2827 - </xs:annotation>
2828 - </xs:attribute>
2829 - <xs:attribute name="SourceFile" type="xs:string">
2830 - <xs:annotation>
2831 - <xs:documentation>Full path to the location of the msi file for the target image.</xs:documentation>
2832 - </xs:annotation>
2833 - </xs:attribute>
2834 - <xs:attribute name="src" type="xs:string">
2835 - <xs:annotation>
2836 - <xs:appinfo>
2837 - <xse:deprecated ref="SourceFile" />
2838 - </xs:appinfo>
2839 - </xs:annotation>
2840 - </xs:attribute>
2841 - <xs:attribute name="Order" type="xs:int" use="required">
2842 - <xs:annotation>
2843 - <xs:documentation>Relative order of the target image.</xs:documentation>
2844 - </xs:annotation>
2845 - </xs:attribute>
2846 - <xs:attribute name="Validation" type="xs:string">
2847 - <xs:annotation>
2848 - <xs:documentation>Product checking to avoid applying irrelevant transforms.</xs:documentation>
2849 - </xs:annotation>
2850 - </xs:attribute>
2851 - <xs:attribute name="IgnoreMissingFiles" type="YesNoTypeUnion">
2852 - <xs:annotation>
2853 - <xs:documentation>Files missing from the target image are ignored by the installer.</xs:documentation>
2854 - </xs:annotation>
2855 - </xs:attribute>
2856 - </xs:complexType>
2857 - </xs:element>
2858 - <xs:element name="TargetFile">
2859 - <xs:annotation>
2860 - <xs:documentation>Information about specific files in a target image.</xs:documentation>
2861 - </xs:annotation>
2862 - <xs:complexType>
2863 - <xs:sequence>
2864 - <xs:element ref="SymbolPath" minOccurs="0" />
2865 - <xs:choice minOccurs="0" maxOccurs="unbounded">
2866 - <xs:element ref="IgnoreRange" />
2867 - <xs:element ref="ProtectRange" />
2868 - </xs:choice>
2869 - </xs:sequence>
2870 - <xs:attribute name="Id" type="xs:string" use="required">
2871 - <xs:annotation>
2872 - <xs:documentation>Foreign key into the File table.</xs:documentation>
2873 - </xs:annotation>
2874 - </xs:attribute>
2875 - </xs:complexType>
2876 - </xs:element>
2877 - <xs:element name="IgnoreRange">
2878 - <xs:annotation>
2879 - <xs:documentation>Specifies part of a file that is to be ignored during patching.</xs:documentation>
2880 - </xs:annotation>
2881 - <xs:complexType>
2882 - <xs:attribute name="Offset" type="xs:int" use="required">
2883 - <xs:annotation>
2884 - <xs:documentation>Offset of the start of the range.</xs:documentation>
2885 - </xs:annotation>
2886 - </xs:attribute>
2887 - <xs:attribute name="Length" type="xs:int" use="required">
2888 - <xs:annotation>
2889 - <xs:documentation>Length of the range.</xs:documentation>
2890 - </xs:annotation>
2891 - </xs:attribute>
2892 - </xs:complexType>
2893 - </xs:element>
2894 - <xs:element name="ProtectRange">
2895 - <xs:annotation>
2896 - <xs:documentation>Specifies part of a file that cannot be overwritten during patching.</xs:documentation>
2897 - </xs:annotation>
2898 - <xs:complexType>
2899 - <xs:attribute name="Offset" type="xs:int" use="required">
2900 - <xs:annotation>
2901 - <xs:documentation>Offset of the start of the range.</xs:documentation>
2902 - </xs:annotation>
2903 - </xs:attribute>
2904 - <xs:attribute name="Length" type="xs:int" use="required">
2905 - <xs:annotation>
2906 - <xs:documentation>Length of the range.</xs:documentation>
2907 - </xs:annotation>
2908 - </xs:attribute>
2909 - </xs:complexType>
2910 - </xs:element>
2911 - <xs:element name="ProtectFile">
2912 - <xs:annotation>
2913 - <xs:documentation>Specifies a file to be protected.</xs:documentation>
2914 - </xs:annotation>
2915 - <xs:complexType>
2916 - <xs:choice maxOccurs="unbounded">
2917 - <xs:element ref="ProtectRange" />
2918 - </xs:choice>
2919 - <xs:attribute name="File" type="xs:string" use="required">
2920 - <xs:annotation>
2921 - <xs:documentation>Foreign key into the File table.</xs:documentation>
2922 - </xs:annotation>
2923 - </xs:attribute>
2924 - </xs:complexType>
2925 - </xs:element>
2926 - <xs:element name="ExternalFile">
2927 - <xs:annotation>
2928 - <xs:documentation>Contains information about specific files that are not part of a regular target image.</xs:documentation>
2929 - </xs:annotation>
2930 - <xs:complexType>
2931 - <xs:sequence>
2932 - <xs:element ref="ProtectRange" maxOccurs="unbounded" />
2933 - <xs:element ref="SymbolPath" maxOccurs="unbounded" />
2934 - <xs:choice minOccurs="0" maxOccurs="unbounded">
2935 - <xs:element ref="IgnoreRange" />
2936 - </xs:choice>
2937 - </xs:sequence>
2938 - <xs:attribute name="File" type="xs:string" use="required">
2939 - <xs:annotation>
2940 - <xs:documentation>Foreign key into the File table.</xs:documentation>
2941 - </xs:annotation>
2942 - </xs:attribute>
2943 - <xs:attribute name="Source" type="xs:string">
2944 - <xs:annotation>
2945 - <xs:documentation>Full path of the external file.</xs:documentation>
2946 - </xs:annotation>
2947 - </xs:attribute>
2948 - <xs:attribute name="src" type="xs:string">
2949 - <xs:annotation>
2950 - <xs:appinfo>
2951 - <xse:deprecated ref="Source" />
2952 - </xs:appinfo>
2953 - </xs:annotation>
2954 - </xs:attribute>
2955 - <xs:attribute name="Order" type="xs:int" use="required">
2956 - <xs:annotation>
2957 - <xs:documentation>Specifies the order of the external files to use when creating the patch.</xs:documentation>
2958 - </xs:annotation>
2959 - </xs:attribute>
2960 - </xs:complexType>
2961 - </xs:element>
2962 - <xs:element name="UpgradeFile">
2963 - <xs:annotation>
2964 - <xs:documentation>Specifies files to either ignore or to specify optional data about a file.</xs:documentation>
2965 - </xs:annotation>
2966 - <xs:complexType>
2967 - <xs:choice minOccurs="0" maxOccurs="unbounded">
2968 - <xs:element ref="SymbolPath" />
2969 - </xs:choice>
2970 - <xs:attribute name="File" type="xs:string" use="required">
2971 - <xs:annotation>
2972 - <xs:documentation>Foreign key into the File table.</xs:documentation>
2973 - </xs:annotation>
2974 - </xs:attribute>
2975 - <xs:attribute name="Ignore" type="YesNoTypeUnion" use="required">
2976 - <xs:annotation>
2977 - <xs:documentation>If yes, the file is ignored during patching, and the next two attributes are ignored.</xs:documentation>
2978 - </xs:annotation>
2979 - </xs:attribute>
2980 - <xs:attribute name="AllowIgnoreOnError" type="YesNoTypeUnion">
2981 - <xs:annotation>
2982 - <xs:documentation>Specifies whether patching this file is vital.</xs:documentation>
2983 - </xs:annotation>
2984 - </xs:attribute>
2985 - <xs:attribute name="WholeFile" type="YesNoTypeUnion">
2986 - <xs:annotation>
2987 - <xs:documentation>Whether the whole file should be installed, rather than creating a binary patch.</xs:documentation>
2988 - </xs:annotation>
2989 - </xs:attribute>
2990 - </xs:complexType>
2991 - </xs:element>
2992 - <xs:element name="SymbolPath">
2993 - <xs:annotation>
2994 - <xs:documentation>A path to symbols.</xs:documentation>
2995 - </xs:annotation>
2996 - <xs:complexType>
2997 - <xs:attribute name="Path" type="xs:string" use="required">
2998 - <xs:annotation>
2999 - <xs:documentation>The path.</xs:documentation>
3000 - </xs:annotation>
3001 - </xs:attribute>
3002 - </xs:complexType>
3003 - </xs:element>
3004 - <xs:element name="Package">
3005 - <xs:annotation>
3006 - <xs:documentation>
3007 - Properties about the package to be placed in the Summary Information Stream. These are
3008 - visible from COM through the IStream interface, and these properties can be seen on the package in Explorer.
3009 - </xs:documentation>
3010 - <xs:appinfo>
3011 - <xse:remarks>
3012 - <html:p>You can specify any valid Windows code by by integer like 1252, or by web name like Windows-1252. See <html:a href="~/overview/codepage.html">Code Pages</html:a> for more information.</html:p>
3013 - </xse:remarks>
3014 - </xs:appinfo>
3015 - </xs:annotation>
3016 - <xs:complexType>
3017 - <xs:attribute name="Id" type="AutogenGuid">
3018 - <xs:annotation>
3019 - <xs:documentation>
3020 - The package code GUID for a product or merge module.
3021 - When compiling a product, this attribute should not be set in order to allow the package
3022 - code to be generated for each build.
3023 - When compiling a merge module, this attribute must be set to the modularization guid.
3024 - </xs:documentation>
3025 - </xs:annotation>
3026 - </xs:attribute>
3027 - <xs:attribute name="AdminImage" type="YesNoTypeUnion">
3028 - <xs:annotation>
3029 - <xs:documentation>Set to 'yes' if the source is an admin image.</xs:documentation>
3030 - </xs:annotation>
3031 - </xs:attribute>
3032 - <xs:attribute name="Comments" type="xs:string">
3033 - <xs:annotation>
3034 - <xs:documentation>Optional comments for browsing.</xs:documentation>
3035 - </xs:annotation>
3036 - </xs:attribute>
3037 - <xs:attribute name="Compressed" type="YesNoTypeUnion">
3038 - <xs:annotation>
3039 - <xs:documentation>
3040 - Set to 'yes' to have compressed files in the source.
3041 - This attribute cannot be set for merge modules.
3042 - </xs:documentation>
3043 - </xs:annotation>
3044 - </xs:attribute>
3045 - <xs:attribute name="Description" type="xs:string">
3046 - <xs:annotation>
3047 - <xs:documentation>The product full name or description.</xs:documentation>
3048 - </xs:annotation>
3049 - </xs:attribute>
3050 - <xs:attribute name="InstallPrivileges">
3051 - <xs:annotation>
3052 - <xs:documentation>Use this attribute to specify the priviliges required to install the package on Windows Vista and above.</xs:documentation>
3053 - </xs:annotation>
3054 - <xs:simpleType>
3055 - <xs:restriction base="xs:NMTOKEN">
3056 - <xs:enumeration value="limited">
3057 - <xs:annotation>
3058 - <xs:documentation>
3059 - Set this value to declare that the package does not require elevated privileges to install.
3060 - </xs:documentation>
3061 - </xs:annotation>
3062 - </xs:enumeration>
3063 - <xs:enumeration value="elevated">
3064 - <xs:annotation>
3065 - <xs:documentation>
3066 - Set this value to declare that the package requires elevated privileges to install.
3067 - This is the default value.
3068 - </xs:documentation>
3069 - </xs:annotation>
3070 - </xs:enumeration>
3071 - </xs:restriction>
3072 - </xs:simpleType>
3073 - </xs:attribute>
3074 - <xs:attribute name="InstallScope">
3075 - <xs:annotation>
3076 - <xs:documentation>Use this attribute to specify the installation scope of this package: per-machine or per-user.</xs:documentation>
3077 - </xs:annotation>
3078 - <xs:simpleType>
3079 - <xs:restriction base="xs:NMTOKEN">
3080 - <xs:enumeration value="perMachine">
3081 - <xs:annotation>
3082 - <xs:documentation>
3083 - Set this value to declare that the package is a per-machine installation and requires elevated privileges to install.
3084 - Sets the ALLUSERS property to 1.
3085 - </xs:documentation>
3086 - </xs:annotation>
3087 - </xs:enumeration>
3088 - <xs:enumeration value="perUser">
3089 - <xs:annotation>
3090 - <xs:documentation>
3091 - Set this value to declare that the package is a per-user installation and does not require elevated privileges to install.
3092 - Sets the package's InstallPrivileges attribute to "limited."
3093 - </xs:documentation>
3094 - </xs:annotation>
3095 - </xs:enumeration>
3096 - </xs:restriction>
3097 - </xs:simpleType>
3098 - </xs:attribute>
3099 - <xs:attribute name="InstallerVersion" type="xs:integer">
3100 - <xs:annotation>
3101 - <xs:documentation>
3102 - The minimum version of the Windows Installer required to install this package. Take the major version of the required Windows Installer
3103 - and multiply by a 100 then add the minor version of the Windows Installer. For example, "200" would represent Windows Installer 2.0 and
3104 - "405" would represent Windows Installer 4.5. For 64-bit Windows Installer packages, this property is set to 200 by default as
3105 - Windows Installer 2.0 was the first version to support 64-bit packages.
3106 - </xs:documentation>
3107 - </xs:annotation>
3108 - </xs:attribute>
3109 - <xs:attribute name="Keywords" type="xs:string">
3110 - <xs:annotation>
3111 - <xs:documentation>Optional keywords for browsing.</xs:documentation>
3112 - </xs:annotation>
3113 - </xs:attribute>
3114 - <xs:attribute name="Languages" type="xs:string">
3115 - <xs:annotation>
3116 - <xs:documentation>The list of language IDs (LCIDs) supported in the package.</xs:documentation>
3117 - </xs:annotation>
3118 - </xs:attribute>
3119 - <xs:attribute name="Manufacturer" type="xs:string">
3120 - <xs:annotation>
3121 - <xs:documentation>The vendor releasing the package.</xs:documentation>
3122 - </xs:annotation>
3123 - </xs:attribute>
3124 - <xs:attribute name="Platforms" type="xs:string">
3125 - <xs:annotation>
3126 - <xs:documentation>
3127 - The list of platforms supported by the package. This attribute has been deprecated.
3128 - Specify the -arch switch at the candle.exe command line or the InstallerPlatform
3129 - property in a .wixproj MSBuild project.
3130 - </xs:documentation>
3131 - </xs:annotation>
3132 - </xs:attribute>
3133 - <xs:attribute name="Platform">
3134 - <xs:annotation>
3135 - <xs:documentation>
3136 - The platform supported by the package. Use of this attribute is discouraged; instead,
3137 - specify the -arch switch at the candle.exe command line or the InstallerPlatform
3138 - property in a .wixproj MSBuild project.
3139 - </xs:documentation>
3140 - </xs:annotation>
3141 - <xs:simpleType>
3142 - <xs:restriction base="xs:NMTOKEN">
3143 - <xs:enumeration value="x86">
3144 - <xs:annotation>
3145 - <xs:documentation>
3146 - Set this value to declare that the package is an x86 package.
3147 - </xs:documentation>
3148 - </xs:annotation>
3149 - </xs:enumeration>
3150 - <xs:enumeration value="ia64">
3151 - <xs:annotation>
3152 - <xs:documentation>
3153 - Set this value to declare that the package is an ia64 package.
3154 - This value requires that the InstallerVersion property be set to 200 or greater.
3155 - </xs:documentation>
3156 - </xs:annotation>
3157 - </xs:enumeration>
3158 - <xs:enumeration value="x64">
3159 - <xs:annotation>
3160 - <xs:documentation>
3161 - Set this value to declare that the package is an x64 package.
3162 - This value requires that the InstallerVersion property be set to 200 or greater.
3163 - </xs:documentation>
3164 - </xs:annotation>
3165 - </xs:enumeration>
3166 - <xs:enumeration value="arm">
3167 - <xs:annotation>
3168 - <xs:documentation>
3169 - Set this value to declare that the package is an arm package.
3170 - This value requires that the InstallerVersion property be set to 500 or greater.
3171 - </xs:documentation>
3172 - </xs:annotation>
3173 - </xs:enumeration>
3174 - <xs:enumeration value="intel">
3175 - <xs:annotation>
3176 - <xs:documentation>
3177 - This value has been deprecated. Use "x86" instead.
3178 - </xs:documentation>
3179 - </xs:annotation>
3180 - </xs:enumeration>
3181 - <xs:enumeration value="intel64">
3182 - <xs:annotation>
3183 - <xs:documentation>
3184 - This value has been deprecated. Use "ia64" instead.
3185 - </xs:documentation>
3186 - </xs:annotation>
3187 - </xs:enumeration>
3188 - </xs:restriction>
3189 - </xs:simpleType>
3190 - </xs:attribute>
3191 - <xs:attribute name="ReadOnly" type="YesNoDefaultTypeUnion">
3192 - <xs:annotation>
3193 - <xs:documentation>
3194 - The value of this attribute conveys whether the package should be opened as read-only.
3195 - A database editing tool should not modify a read-only enforced database and should
3196 - issue a warning at attempts to modify a read-only recommended database.
3197 - </xs:documentation>
3198 - </xs:annotation>
3199 - </xs:attribute>
3200 - <xs:attribute name="ShortNames" type="YesNoTypeUnion">
3201 - <xs:annotation>
3202 - <xs:documentation>Set to 'yes' to have short filenames in the source.</xs:documentation>
3203 - </xs:annotation>
3204 - </xs:attribute>
3205 - <xs:attribute name="SummaryCodepage" type="xs:string">
3206 - <xs:annotation>
3207 - <xs:documentation>The code page integer value or web name for summary info strings only. See remarks for more information.</xs:documentation>
3208 - </xs:annotation>
3209 - </xs:attribute>
3210 - </xs:complexType>
3211 - </xs:element>
3212 - <xs:element name="AssemblyName">
3213 - <xs:annotation>
3214 - <xs:documentation>
3215 - The MsiAssemblyName table specifies the schema for the elements of a strong assembly cache name for a .NET Framework or Win32 assembly.
3216 - Consider using the Assembly attribute on File element to have the toolset populate these entries automatically.
3217 - </xs:documentation>
3218 - <xs:appinfo>
3219 - <xse:msiRef table="MsiAssemblyName" href="http://msdn.microsoft.com/library/aa370062.aspx" />
3220 - </xs:appinfo>
3221 - </xs:annotation>
3222 - <xs:complexType>
3223 - <xs:attribute name="Id" use="required" type="xs:string">
3224 - <xs:annotation>
3225 - <xs:documentation>Name of the attribute associated with the value specified in the Value column.</xs:documentation>
3226 - </xs:annotation>
3227 - </xs:attribute>
3228 - <xs:attribute name="Value" type="xs:string">
3229 - <xs:annotation>
3230 - <xs:documentation>Value associated with the name specified in the Name column.</xs:documentation>
3231 - </xs:annotation>
3232 - </xs:attribute>
3233 - </xs:complexType>
3234 - </xs:element>
3235 - <xs:element name="PatchCertificates">
3236 - <xs:annotation>
3237 - <xs:documentation>
3238 - Identifies the possible signer certificates used to digitally sign patches.
3239 - </xs:documentation>
3240 - <xs:appinfo>
3241 - <xse:msiRef table="MsiPatchCertificate" href="http://msdn.microsoft.com/library/aa370342.aspx" />
3242 - </xs:appinfo>
3243 - </xs:annotation>
3244 - <xs:complexType>
3245 - <xs:choice maxOccurs="unbounded">
3246 - <xs:element ref="DigitalCertificate" />
3247 - </xs:choice>
3248 - </xs:complexType>
3249 - </xs:element>
3250 - <xs:element name="PackageCertificates">
3251 - <xs:annotation>
3252 - <xs:documentation>
3253 - Digital signatures that identify installation packages in a multi-product transaction.
3254 - </xs:documentation>
3255 - <xs:appinfo>
3256 - <xse:msiRef table="MsiPackageCertificate" href="http://msdn.microsoft.com/library/cc542575.aspx" />
3257 - </xs:appinfo>
3258 - </xs:annotation>
3259 - <xs:complexType>
3260 - <xs:choice maxOccurs="unbounded">
3261 - <xs:element ref="DigitalCertificate" />
3262 - </xs:choice>
3263 - </xs:complexType>
3264 - </xs:element>
3265 - <xs:element name="DigitalCertificate">
3266 - <xs:annotation>
3267 - <xs:documentation>
3268 - Adds a digital certificate.
3269 - </xs:documentation>
3270 - <xs:appinfo>
3271 - <xse:msiRef table="MsiDigitalCertificate" href="http://msdn.microsoft.com/library/aa370086.aspx" />
3272 - </xs:appinfo>
3273 - </xs:annotation>
3274 - <xs:complexType>
3275 - <xs:attribute name="Id" type="xs:string" use="required">
3276 - <xs:annotation>
3277 - <xs:documentation>Identifier for a certificate file.</xs:documentation>
3278 - </xs:annotation>
3279 - </xs:attribute>
3280 - <xs:attribute name="SourceFile" type="xs:string" use="required">
3281 - <xs:annotation>
3282 - <xs:documentation>The path to the certificate file.</xs:documentation>
3283 - </xs:annotation>
3284 - </xs:attribute>
3285 - </xs:complexType>
3286 - </xs:element>
3287 - <xs:element name="DigitalCertificateRef">
3288 - <xs:annotation>
3289 - <xs:documentation>
3290 - Reference to a DigitalCertificate element. This will force the entire referenced Fragment's contents
3291 - to be included in the installer database. This is only used for references when patching.
3292 - </xs:documentation>
3293 - </xs:annotation>
3294 - <xs:complexType>
3295 - <xs:attribute name="Id" type="xs:string" use="required" />
3296 - <xs:anyAttribute namespace="##other" processContents="lax">
3297 - <xs:annotation>
3298 - <xs:documentation>
3299 - Extensibility point in the WiX XML Schema. Schema extensions can register additional
3300 - attributes at this point in the schema.
3301 - </xs:documentation>
3302 - </xs:annotation>
3303 - </xs:anyAttribute>
3304 - </xs:complexType>
3305 - </xs:element>
3306 - <xs:element name="DigitalSignature">
3307 - <xs:annotation>
3308 - <xs:documentation>
3309 - Adds a digital signature.
3310 - </xs:documentation>
3311 - <xs:appinfo>
3312 - <xse:msiRef table="MsiDigitalSignature" href="http://msdn.microsoft.com/library/aa370087.aspx" />
3313 - </xs:appinfo>
3314 - </xs:annotation>
3315 - <xs:complexType>
3316 - <xs:choice>
3317 - <xs:element ref="DigitalCertificate" />
3318 - </xs:choice>
3319 - <xs:attribute name="SourceFile" type="xs:string">
3320 - <xs:annotation>
3321 - <xs:documentation>The path to signature's optional hash file.</xs:documentation>
3322 - </xs:annotation>
3323 - </xs:attribute>
3324 - </xs:complexType>
3325 - </xs:element>
3326 - <xs:element name="SFPCatalog">
3327 - <xs:annotation>
3328 - <xs:documentation>
3329 - Adds a system file protection update catalog file
3330 - </xs:documentation>
3331 - <xs:appinfo>
3332 - <xse:msiRef table="SFPCatalog" href="http://msdn.microsoft.com/library/aa371833.aspx" />
3333 - </xs:appinfo>
3334 - </xs:annotation>
3335 - <xs:complexType>
3336 - <xs:choice minOccurs="0" maxOccurs="unbounded">
3337 - <xs:element ref="SFPCatalog" minOccurs="0" maxOccurs="unbounded" />
3338 - <xs:element ref="SFPFile" minOccurs="0" maxOccurs="unbounded">
3339 - <xs:annotation>
3340 - <xs:documentation>Primary Key to File Table.</xs:documentation>
3341 - </xs:annotation>
3342 - </xs:element>
3343 - </xs:choice>
3344 - <xs:attribute name="Name" type="xs:string">
3345 - <xs:annotation>
3346 - <xs:documentation>Filename for catalog file when installed.</xs:documentation>
3347 - </xs:annotation>
3348 - </xs:attribute>
3349 - <xs:attribute name="Dependency" type="xs:string">
3350 - <xs:annotation>
3351 - <xs:documentation>Used to define dependency outside of the package.</xs:documentation>
3352 - </xs:annotation>
3353 - </xs:attribute>
3354 - <xs:attribute name="SourceFile" type="xs:string">
3355 - <xs:annotation>
3356 - <xs:documentation>Path to catalog file in binary.</xs:documentation>
3357 - </xs:annotation>
3358 - </xs:attribute>
3359 - </xs:complexType>
3360 - </xs:element>
3361 - <xs:element name="SFPFile">
3362 - <xs:annotation>
3363 - <xs:documentation>
3364 - Provides a many-to-many mapping from the SFPCatalog table to the File table
3365 - </xs:documentation>
3366 - <xs:appinfo>
3367 - <xse:msiRef table="FileSFPCatalog" href="http://msdn.microsoft.com/library/aa368591.aspx" />
3368 - </xs:appinfo>
3369 - </xs:annotation>
3370 - <xs:complexType>
3371 - <xs:attribute name="Id" use="required" type="xs:string">
3372 - <xs:annotation>
3373 - <xs:documentation>Primary Key to File Table.</xs:documentation>
3374 - </xs:annotation>
3375 - </xs:attribute>
3376 - </xs:complexType>
3377 - </xs:element>
3378 - <xs:element name="IniFile">
3379 - <xs:annotation>
3380 - <xs:documentation>
3381 - Adds or removes .ini file entries.
3382 - </xs:documentation>
3383 - <xs:appinfo>
3384 - <xse:msiRef table="IniFile" href="http://msdn.microsoft.com/library/aa369282.aspx" />
3385 - <xse:msiRef table="RemoveIniFile" href="http://msdn.microsoft.com/library/aa371204.aspx" />
3386 - </xs:appinfo>
3387 - </xs:annotation>
3388 - <xs:complexType>
3389 - <xs:attribute name="Id" use="required" type="xs:string">
3390 - <xs:annotation>
3391 - <xs:documentation>Identifier for ini file.</xs:documentation>
3392 - </xs:annotation>
3393 - </xs:attribute>
3394 - <xs:attribute name="Action" use="required">
3395 - <xs:annotation>
3396 - <xs:documentation>The type of modification to be made.</xs:documentation>
3397 - </xs:annotation>
3398 - <xs:simpleType>
3399 - <xs:restriction base="xs:NMTOKEN">
3400 - <xs:enumeration value="addLine">
3401 - <xs:annotation>
3402 - <xs:documentation>Creates or updates an .ini entry.</xs:documentation>
3403 - </xs:annotation>
3404 - </xs:enumeration>
3405 - <xs:enumeration value="addTag">
3406 - <xs:annotation>
3407 - <xs:documentation>Creates a new entry or appends a new comma-separated value to an existing entry.</xs:documentation>
3408 - </xs:annotation>
3409 - </xs:enumeration>
3410 - <xs:enumeration value="createLine">
3411 - <xs:annotation>
3412 - <xs:documentation>Creates an .ini entry only if the entry does no already exist.</xs:documentation>
3413 - </xs:annotation>
3414 - </xs:enumeration>
3415 - <xs:enumeration value="removeLine">
3416 - <xs:annotation>
3417 - <xs:documentation>Removes an .ini entry.</xs:documentation>
3418 - </xs:annotation>
3419 - </xs:enumeration>
3420 - <xs:enumeration value="removeTag">
3421 - <xs:annotation>
3422 - <xs:documentation>Removes a tag from an .ini entry.</xs:documentation>
3423 - </xs:annotation>
3424 - </xs:enumeration>
3425 - </xs:restriction>
3426 - </xs:simpleType>
3427 - </xs:attribute>
3428 - <xs:attribute name="Directory" type="xs:string">
3429 - <xs:annotation>
3430 - <xs:documentation>Name of a property, the value of which is the full path of the folder containing the .ini file. Can be name of a directory in the Directory table, a property set by the AppSearch table, or any other property representing a full path.</xs:documentation>
3431 - </xs:annotation>
3432 - </xs:attribute>
3433 - <xs:attribute name="Key" use="required" type="xs:string">
3434 - <xs:annotation>
3435 - <xs:documentation>The localizable .ini file key within the section.</xs:documentation>
3436 - </xs:annotation>
3437 - </xs:attribute>
3438 - <xs:attribute name="Name" type="LongFileNameType" use="required">
3439 - <xs:annotation>
3440 - <xs:documentation>
3441 - In prior versions of the WiX toolset, this attribute specified the short name.
3442 - This attribute's value may now be either a short or long name.
3443 - If a short name is specified, the ShortName attribute may not be specified.
3444 - Also, if this value is a long name, the ShortName attribute may be omitted to
3445 - allow WiX to attempt to generate a unique short name.
3446 - However, if this name collides with another file or you wish to manually specify
3447 - the short name, then the ShortName attribute may be specified.
3448 - </xs:documentation>
3449 - </xs:annotation>
3450 - </xs:attribute>
3451 - <xs:attribute name="Section" use="required" type="xs:string">
3452 - <xs:annotation>
3453 - <xs:documentation>The localizable .ini file section.</xs:documentation>
3454 - </xs:annotation>
3455 - </xs:attribute>
3456 - <xs:attribute name="ShortName" type="ShortFileNameType">
3457 - <xs:annotation>
3458 - <xs:documentation>
3459 - The short name of the in 8.3 format.
3460 - This attribute should only be set if there is a conflict between generated short names
3461 - or the user wants to manually specify the short name.
3462 - </xs:documentation>
3463 - </xs:annotation>
3464 - </xs:attribute>
3465 - <xs:attribute name="Value" type="xs:string">
3466 - <xs:annotation>
3467 - <xs:documentation>
3468 - The localizable value to be written or deleted. This attribute must be set if
3469 - the Action attribute's value is "addLine", "addTag", or "createLine".
3470 - </xs:documentation>
3471 - </xs:annotation>
3472 - </xs:attribute>
3473 - </xs:complexType>
3474 - </xs:element>
3475 - <xs:element name="ODBCDataSource">
3476 - <xs:annotation>
3477 - <xs:documentation>
3478 - ODBCDataSource for a Component
3479 - </xs:documentation>
3480 - <xs:appinfo>
3481 - <xse:msiRef table="ODBCDataSource" href="http://msdn.microsoft.com/library/aa370546.aspx" />
3482 - </xs:appinfo>
3483 - </xs:annotation>
3484 - <xs:complexType>
3485 - <xs:sequence>
3486 - <xs:element ref="Property" minOccurs="0" maxOccurs="unbounded">
3487 - <xs:annotation>
3488 - <xs:documentation>Translates into ODBCSourceAttributes</xs:documentation>
3489 - </xs:annotation>
3490 - </xs:element>
3491 - </xs:sequence>
3492 - <xs:attribute name="Id" use="required" type="xs:string">
3493 - <xs:annotation>
3494 - <xs:documentation>Identifier of the data source.</xs:documentation>
3495 - </xs:annotation>
3496 - </xs:attribute>
3497 - <xs:attribute name="Name" use="required" type="xs:string">
3498 - <xs:annotation>
3499 - <xs:documentation>Name for the data source.</xs:documentation>
3500 - </xs:annotation>
3501 - </xs:attribute>
3502 - <xs:attribute name="DriverName" type="xs:string">
3503 - <xs:annotation>
3504 - <xs:documentation>Required if not found as child of ODBCDriver element</xs:documentation>
3505 - </xs:annotation>
3506 - </xs:attribute>
3507 - <xs:attribute name="Registration" use="required">
3508 - <xs:annotation>
3509 - <xs:documentation>Scope for which the data source should be registered.</xs:documentation>
3510 - </xs:annotation>
3511 - <xs:simpleType>
3512 - <xs:restriction base="xs:NMTOKEN">
3513 - <xs:enumeration value="machine">
3514 - <xs:annotation>
3515 - <xs:documentation>
3516 - Data source is registered per machine.
3517 - </xs:documentation>
3518 - </xs:annotation>
3519 - </xs:enumeration>
3520 - <xs:enumeration value="user">
3521 - <xs:annotation>
3522 - <xs:documentation>
3523 - Data source is registered per user.
3524 - </xs:documentation>
3525 - </xs:annotation>
3526 - </xs:enumeration>
3527 - </xs:restriction>
3528 - </xs:simpleType>
3529 - </xs:attribute>
3530 - <xs:attribute name="KeyPath" type="YesNoTypeUnion">
3531 - <xs:annotation>
3532 - <xs:documentation>Set 'yes' to force this file to be key path for parent Component</xs:documentation>
3533 - </xs:annotation>
3534 - </xs:attribute>
3535 - </xs:complexType>
3536 - </xs:element>
3537 - <xs:element name="ODBCDriver">
3538 - <xs:annotation>
3539 - <xs:documentation>
3540 - ODBCDriver for a Component
3541 - </xs:documentation>
3542 - <xs:appinfo>
3543 - <xse:msiRef table="ODBCDriver" href="http://msdn.microsoft.com/library/aa370547.aspx" />
3544 - </xs:appinfo>
3545 - </xs:annotation>
3546 - <xs:complexType>
3547 - <xs:sequence>
3548 - <xs:element ref="Property" minOccurs="0" maxOccurs="unbounded">
3549 - <xs:annotation>
3550 - <xs:documentation>Translates into ODBCSourceAttributes</xs:documentation>
3551 - </xs:annotation>
3552 - </xs:element>
3553 - <xs:element ref="ODBCDataSource" minOccurs="0" maxOccurs="unbounded" />
3554 - </xs:sequence>
3555 - <xs:attribute name="Id" use="required" type="xs:string">
3556 - <xs:annotation>
3557 - <xs:documentation>Identifier for the driver.</xs:documentation>
3558 - </xs:annotation>
3559 - </xs:attribute>
3560 - <xs:attribute name="Name" use="required" type="xs:string">
3561 - <xs:annotation>
3562 - <xs:documentation>Name for the driver.</xs:documentation>
3563 - </xs:annotation>
3564 - </xs:attribute>
3565 - <xs:attribute name="File" type="xs:string">
3566 - <xs:annotation>
3567 - <xs:documentation>Required if not found as child of File element</xs:documentation>
3568 - </xs:annotation>
3569 - </xs:attribute>
3570 - <xs:attribute name="SetupFile" type="xs:string">
3571 - <xs:annotation>
3572 - <xs:documentation>Required if not found as child of File element or different from File attribute above</xs:documentation>
3573 - </xs:annotation>
3574 - </xs:attribute>
3575 - </xs:complexType>
3576 - </xs:element>
3577 - <xs:element name="ODBCTranslator">
3578 - <xs:annotation>
3579 - <xs:documentation>
3580 - ODBCTranslator for a Component
3581 - </xs:documentation>
3582 - <xs:appinfo>
3583 - <xse:msiRef table="ODBCTranslator" href="http://msdn.microsoft.com/library/aa370549.aspx" />
3584 - </xs:appinfo>
3585 - </xs:annotation>
3586 - <xs:complexType>
3587 - <xs:attribute name="Id" use="required" type="xs:string">
3588 - <xs:annotation>
3589 - <xs:documentation>Identifier for the translator.</xs:documentation>
3590 - </xs:annotation>
3591 - </xs:attribute>
3592 - <xs:attribute name="Name" use="required" type="xs:string">
3593 - <xs:annotation>
3594 - <xs:documentation>Name for the translator.</xs:documentation>
3595 - </xs:annotation>
3596 - </xs:attribute>
3597 - <xs:attribute name="File" type="xs:string">
3598 - <xs:annotation>
3599 - <xs:documentation>Required if not found as child of File element</xs:documentation>
3600 - </xs:annotation>
3601 - </xs:attribute>
3602 - <xs:attribute name="SetupFile" type="xs:string">
3603 - <xs:annotation>
3604 - <xs:documentation>Required if not found as child of File element or different from File attribute above</xs:documentation>
3605 - </xs:annotation>
3606 - </xs:attribute>
3607 - </xs:complexType>
3608 - </xs:element>
3609 - <xs:element name="FileSearch">
3610 - <xs:annotation>
3611 - <xs:appinfo>
3612 - <xse:seeAlso ref="ComponentSearch" />
3613 - <xse:seeAlso ref="DirectorySearch" />
3614 - <xse:seeAlso ref="DirectorySearchRef" />
3615 - <xse:seeAlso ref="FileSearchRef" />
3616 - <xse:seeAlso ref="IniFileSearch" />
3617 - <xse:seeAlso ref="RegistrySearch" />
3618 - <xse:msiRef table="DrLocator" href="http://msdn.microsoft.com/library/aa368331.aspx" />
3619 - <xse:msiRef table="Signature" href="http://msdn.microsoft.com/library/aa371853.aspx" />
3620 - <xse:howtoRef href="files_and_registry/check_the_version_number.html">How To: Check the version number of a file during installation</xse:howtoRef>
3621 - <xse:remarks>
3622 - <html:a>When the parent DirectorySearch/@Depth attribute is greater than 0, the FileSearch/@Id attribute must be absent or the same as the parent DirectorySearch/@Id attribute value, unless the parent DirectorySearch/@AssignToProperty attribute value is 'yes'.</html:a>
3623 - </xse:remarks>
3624 - </xs:appinfo>
3625 - <xs:documentation>Searches for file and assigns to fullpath value of parent Property</xs:documentation>
3626 - </xs:annotation>
3627 - <xs:complexType>
3628 - <xs:attribute name="Id" type="xs:string">
3629 - <xs:annotation>
3630 - <xs:documentation>Unique identifier for the file search and external key into the Signature table. If this attribute value is not set then the parent element's @Id attribute is used.</xs:documentation>
3631 - </xs:annotation>
3632 - </xs:attribute>
3633 - <xs:attribute name="Name" type="LongFileNameType">
3634 - <xs:annotation>
3635 - <xs:documentation>
3636 - In prior versions of the WiX toolset, this attribute specified the short file name.
3637 - This attribute's value may now be either a short or long file name.
3638 - If a short file name is specified, the ShortName attribute may not be specified.
3639 - If you wish to manually specify the short file name, then the ShortName
3640 - attribute may be specified.
3641 - </xs:documentation>
3642 - </xs:annotation>
3643 - </xs:attribute>
3644 - <xs:attribute name="ShortName" type="ShortFileNameType">
3645 - <xs:annotation>
3646 - <xs:documentation>
3647 - The short file name of the file in 8.3 format.
3648 - There is a Windows Installer bug which prevents the FileSearch functionality from working
3649 - if both a short and long file name are specified. Since the Name attribute allows either
3650 - a short or long name to be specified, it is the only attribute related to file names which
3651 - should be specified.
3652 - </xs:documentation>
3653 - </xs:annotation>
3654 - </xs:attribute>
3655 - <xs:attribute name="MinSize" type="xs:int">
3656 - <xs:annotation>
3657 - <xs:documentation>The minimum size of the file.</xs:documentation>
3658 - </xs:annotation>
3659 - </xs:attribute>
3660 - <xs:attribute name="MaxSize" type="xs:int">
3661 - <xs:annotation>
3662 - <xs:documentation>The maximum size of the file.</xs:documentation>
3663 - </xs:annotation>
3664 - </xs:attribute>
3665 - <xs:attribute name="MinVersion" type="xs:string">
3666 - <xs:annotation>
3667 - <xs:documentation>The minimum version of the file.</xs:documentation>
3668 - </xs:annotation>
3669 - </xs:attribute>
3670 - <xs:attribute name="MaxVersion" type="xs:string">
3671 - <xs:annotation>
3672 - <xs:documentation>The maximum version of the file.</xs:documentation>
3673 - </xs:annotation>
3674 - </xs:attribute>
3675 - <xs:attribute name="MinDate" type="xs:dateTime">
3676 - <xs:annotation>
3677 - <xs:documentation>The minimum modification date and time of the file. Formatted as YYYY-MM-DDTHH:mm:ss, where YYYY is the year, MM is month, DD is day, 'T' is literal, HH is hour, mm is minute and ss is second.</xs:documentation>
3678 - </xs:annotation>
3679 - </xs:attribute>
3680 - <xs:attribute name="MaxDate" type="xs:dateTime">
3681 - <xs:annotation>
3682 - <xs:documentation>The maximum modification date and time of the file. Formatted as YYYY-MM-DDTHH:mm:ss, where YYYY is the year, MM is month, DD is day, 'T' is literal, HH is hour, mm is minute and ss is second.</xs:documentation>
3683 - </xs:annotation>
3684 - </xs:attribute>
3685 - <xs:attribute name="Languages" type="xs:string">
3686 - <xs:annotation>
3687 - <xs:documentation>The languages supported by the file.</xs:documentation>
3688 - </xs:annotation>
3689 - </xs:attribute>
3690 - </xs:complexType>
3691 - </xs:element>
3692 - <xs:element name="FileSearchRef">
3693 - <xs:annotation>
3694 - <xs:appinfo>
3695 - <xse:seeAlso ref="FileSearch" />
3696 - <xse:remarks>
3697 - <html:p>A reference to another FileSearch element must reference the same Id and the same Parent Id. If any of these attribute values are different you must instead use a FileSearch element.</html:p>
3698 - </xse:remarks>
3699 - </xs:appinfo>
3700 - <xs:documentation>References an existing FileSearch element.</xs:documentation>
3701 - </xs:annotation>
3702 - <xs:complexType>
3703 - <xs:attribute name="Id" use="required" type="xs:string">
3704 - <xs:annotation>
3705 - <xs:documentation>Specify the Id to the FileSearch to reference.</xs:documentation>
3706 - </xs:annotation>
3707 - </xs:attribute>
3708 - </xs:complexType>
3709 - </xs:element>
3710 - <xs:element name="DirectorySearch">
3711 - <xs:annotation>
3712 - <xs:appinfo>
3713 - <xse:seeAlso ref="ComponentSearch" />
3714 - <xse:seeAlso ref="IniFileSearch" />
3715 - <xse:seeAlso ref="RegistrySearch" />
3716 - <xse:msiRef table="DrLocator" href="http://msdn.microsoft.com/library/aa368331.aspx" />
3717 - <xse:msiRef table="Signature" href="http://msdn.microsoft.com/library/aa371853.aspx" />
3718 - <xse:howtoRef href="files_and_registry/check_the_version_number.html">How To: Check the version number of a file during installation</xse:howtoRef>
3719 - <xse:howtoRef href="files_and_registry/directorysearchref.html">How To: Reference another DirectorySearch element</xse:howtoRef>
3720 - <xse:howtoRef href="files_and_registry/parentdirectorysearch.html">How To: Get the parent directory of a file search</xse:howtoRef>
3721 - <xse:remarks>
3722 - <html:p>Use the AssignToProperty attribute to search for a file but set the outer property to the directory containing the file. When this attribute is set to 'yes', you may only nest a FileSearch element with a unique Id or define no child element.</html:p>
3723 - <html:a>When the parent DirectorySearch/@Depth attribute is greater than 0, the FileSearch/@Id attribute must be absent or the same as the parent DirectorySearch/@Id attribute value, unless the parent DirectorySearch/@AssignToProperty attribute value is 'yes'.</html:a>
3724 - </xse:remarks>
3725 - </xs:appinfo>
3726 - <xs:documentation>Searches for directory and assigns to value of parent Property.</xs:documentation>
3727 - </xs:annotation>
3728 - <xs:complexType>
3729 - <xs:choice minOccurs="0">
3730 - <xs:element ref="DirectorySearch" />
3731 - <xs:element ref="DirectorySearchRef" />
3732 - <xs:element ref="FileSearch" />
3733 - <xs:element ref="FileSearchRef" />
3734 - </xs:choice>
3735 - <xs:attribute name="Id" use="required" type="xs:string">
3736 - <xs:annotation>
3737 - <xs:documentation>Unique identifier for the directory search.</xs:documentation>
3738 - </xs:annotation>
3739 - </xs:attribute>
3740 - <xs:attribute name="Path" type="xs:string">
3741 - <xs:annotation>
3742 - <xs:documentation>Path on the user's system. Either absolute, or relative to containing directories.</xs:documentation>
3743 - </xs:annotation>
3744 - </xs:attribute>
3745 - <xs:attribute name="Depth" type="xs:integer">
3746 - <xs:annotation>
3747 - <xs:documentation>
3748 - Depth below the path that the installer searches for the file or directory specified by the search. See remarks for more information.
3749 - </xs:documentation>
3750 - </xs:annotation>
3751 - </xs:attribute>
3752 - <xs:attribute name="AssignToProperty" type="YesNoTypeUnion">
3753 - <xs:annotation>
3754 - <xs:documentation>Set the value of the outer Property to the result of this search. See remarks for more information.</xs:documentation>
3755 - </xs:annotation>
3756 - </xs:attribute>
3757 - </xs:complexType>
3758 - </xs:element>
3759 - <xs:element name="DirectorySearchRef">
3760 - <xs:annotation>
3761 - <xs:appinfo>
3762 - <xse:seeAlso ref="ComponentSearch" />
3763 - <xse:seeAlso ref="IniFileSearch" />
3764 - <xse:seeAlso ref="RegistrySearch" />
3765 - <xse:howtoRef href="files_and_registry/directorysearchref.html">How To: Reference another DirectorySearch element</xse:howtoRef>
3766 - <xse:remarks>
3767 - <html:p>A reference to another DirectorySearch element must reference the same Id, the same Parent Id, and the same Path. If any of these attribute values are different you must instead use a DirectorySearch element.</html:p>
3768 - </xse:remarks>
3769 - </xs:appinfo>
3770 - <xs:documentation>References an existing DirectorySearch element.</xs:documentation>
3771 - </xs:annotation>
3772 - <xs:complexType>
3773 - <xs:choice minOccurs="0">
3774 - <xs:element ref="DirectorySearch" />
3775 - <xs:element ref="DirectorySearchRef" />
3776 - <xs:element ref="FileSearch" />
3777 - <xs:element ref="FileSearchRef" />
3778 - </xs:choice>
3779 - <xs:attribute name="Id" use="required" type="xs:string">
3780 - <xs:annotation>
3781 - <xs:documentation>Id of the search being referred to.</xs:documentation>
3782 - </xs:annotation>
3783 - </xs:attribute>
3784 - <xs:attribute name="Parent" type="xs:string">
3785 - <xs:annotation>
3786 - <xs:documentation>This attribute is the signature of the parent directory of the file or directory in the Signature_ column. If this field is null, and the Path column does not expand to a full path, then all the fixed drives of the user's system are searched by using the Path. This field is a key into one of the following tables: the RegLocator, the IniLocator, the CompLocator, or the DrLocator tables.</xs:documentation>
3787 - </xs:annotation>
3788 - </xs:attribute>
3789 - <xs:attribute name="Path" type="xs:string">
3790 - <xs:annotation>
3791 - <xs:documentation>Path on the user's system. Either absolute, or relative to containing directories.</xs:documentation>
3792 - </xs:annotation>
3793 - </xs:attribute>
3794 - </xs:complexType>
3795 - </xs:element>
3796 - <xs:element name="ComponentSearch">
3797 - <xs:annotation>
3798 - <xs:appinfo>
3799 - <xse:seeAlso ref="IniFileSearch" />
3800 - <xse:seeAlso ref="RegistrySearch" />
3801 - <xse:msiRef table="CompLocator" href="http://msdn.microsoft.com/library/aa368001.aspx" />
3802 - <xse:msiRef table="Signature" href="http://msdn.microsoft.com/library/aa371853.aspx" />
3803 - </xs:appinfo>
3804 - <xs:documentation>Searches for file or directory and assigns to value of parent Property.</xs:documentation>
3805 - </xs:annotation>
3806 - <xs:complexType>
3807 - <xs:choice minOccurs="0">
3808 - <xs:element ref="DirectorySearch" />
3809 - <xs:element ref="DirectorySearchRef" />
3810 - <xs:element ref="FileSearch" />
3811 - <xs:element ref="FileSearchRef" />
3812 - </xs:choice>
3813 - <xs:attribute name="Id" use="required" type="xs:string" />
3814 - <xs:attribute name="Guid" type="Guid">
3815 - <xs:annotation>
3816 - <xs:documentation>The component ID of the component whose key path is to be used for the search.</xs:documentation>
3817 - </xs:annotation>
3818 - </xs:attribute>
3819 - <xs:attribute name="Type">
3820 - <xs:annotation>
3821 - <xs:documentation>Must be file if last child is FileSearch element and must be directory if last child is DirectorySearch element.</xs:documentation>
3822 - </xs:annotation>
3823 - <xs:simpleType>
3824 - <xs:restriction base="xs:NMTOKEN">
3825 - <xs:enumeration value="directory">
3826 - <xs:annotation>
3827 - <xs:documentation>
3828 - The key path of the component is a directory.
3829 - </xs:documentation>
3830 - </xs:annotation>
3831 - </xs:enumeration>
3832 - <xs:enumeration value="file">
3833 - <xs:annotation>
3834 - <xs:documentation>
3835 - The key path of the component is a file. This is the default value.
3836 - </xs:documentation>
3837 - </xs:annotation>
3838 - </xs:enumeration>
3839 - </xs:restriction>
3840 - </xs:simpleType>
3841 - </xs:attribute>
3842 - </xs:complexType>
3843 - </xs:element>
3844 - <xs:element name="IniFileSearch">
3845 - <xs:annotation>
3846 - <xs:appinfo>
3847 - <xse:seeAlso ref="ComponentSearch" />
3848 - <xse:seeAlso ref="RegistrySearch" />
3849 - <xse:msiRef table="IniLocator" href="http://msdn.microsoft.com/library/aa369283.aspx" />
3850 - <xse:msiRef table="Signature" href="http://msdn.microsoft.com/library/aa371853.aspx" />
3851 - </xs:appinfo>
3852 - <xs:documentation>Searches for file, directory or registry key and assigns to value of parent Property</xs:documentation>
3853 - </xs:annotation>
3854 - <xs:complexType>
3855 - <xs:choice minOccurs="0">
3856 - <xs:element ref="DirectorySearch" />
3857 - <xs:element ref="DirectorySearchRef" />
3858 - <xs:element ref="FileSearch" />
3859 - <xs:element ref="FileSearchRef" />
3860 - </xs:choice>
3861 - <xs:attribute name="Id" use="required" type="xs:string">
3862 - <xs:annotation>
3863 - <xs:documentation>External key into the Signature table.</xs:documentation>
3864 - </xs:annotation>
3865 - </xs:attribute>
3866 - <xs:attribute name="Field" type="xs:integer">
3867 - <xs:annotation>
3868 - <xs:documentation>The field in the .ini line. If field is Null or 0, the entire line is read.</xs:documentation>
3869 - </xs:annotation>
3870 - </xs:attribute>
3871 - <xs:attribute name="Key" use="required" type="xs:string">
3872 - <xs:annotation>
3873 - <xs:documentation>The key value within the section.</xs:documentation>
3874 - </xs:annotation>
3875 - </xs:attribute>
3876 - <xs:attribute name="Name" type="LongFileNameType" use="required">
3877 - <xs:annotation>
3878 - <xs:documentation>
3879 - In prior versions of the WiX toolset, this attribute specified the short name.
3880 - This attribute's value may now be either a short or long name.
3881 - If a short name is specified, the ShortName attribute may not be specified.
3882 - Also, if this value is a long name, the ShortName attribute may be omitted to
3883 - allow WiX to attempt to generate a unique short name.
3884 - However, if you wish to manually specify the short name, then the ShortName
3885 - attribute may be specified.
3886 - </xs:documentation>
3887 - </xs:annotation>
3888 - </xs:attribute>
3889 - <xs:attribute name="Section" use="required" type="xs:string">
3890 - <xs:annotation>
3891 - <xs:documentation>The localizable .ini file section.</xs:documentation>
3892 - </xs:annotation>
3893 - </xs:attribute>
3894 - <xs:attribute name="ShortName" type="ShortFileNameType">
3895 - <xs:annotation>
3896 - <xs:documentation>
3897 - The short name of the file in 8.3 format.
3898 - This attribute should only be set if the user wants to manually specify the short name.
3899 - </xs:documentation>
3900 - </xs:annotation>
3901 - </xs:attribute>
3902 - <xs:attribute name="Type">
3903 - <xs:annotation>
3904 - <xs:documentation>Must be file if last child is FileSearch element and must be directory if last child is DirectorySearch element.</xs:documentation>
3905 - </xs:annotation>
3906 - <xs:simpleType>
3907 - <xs:restriction base="xs:NMTOKEN">
3908 - <xs:enumeration value="directory">
3909 - <xs:annotation>
3910 - <xs:documentation>A directory location.</xs:documentation>
3911 - </xs:annotation>
3912 - </xs:enumeration>
3913 - <xs:enumeration value="file">
3914 - <xs:annotation>
3915 - <xs:documentation>A file location. This is the default value.</xs:documentation>
3916 - </xs:annotation>
3917 - </xs:enumeration>
3918 - <xs:enumeration value="raw">
3919 - <xs:annotation>
3920 - <xs:documentation>A raw .ini value.</xs:documentation>
3921 - </xs:annotation>
3922 - </xs:enumeration>
3923 - </xs:restriction>
3924 - </xs:simpleType>
3925 - </xs:attribute>
3926 - </xs:complexType>
3927 - </xs:element>
3928 - <xs:element name="RegistrySearch">
3929 - <xs:annotation>
3930 - <xs:appinfo>
3931 - <xse:seeAlso ref="ComponentSearch" />
3932 - <xse:seeAlso ref="IniFileSearch" />
3933 - <xse:msiRef table="RegLocator" href="http://msdn.microsoft.com/library/aa371171.aspx" />
3934 - <xse:msiRef table="Signature" href="http://msdn.microsoft.com/library/aa371853.aspx" />
3935 - <xse:howtoRef href="files_and_registry/read_a_registry_entry.html">How To: Read a registry entry during installation</xse:howtoRef>
3936 - <xse:remarks>
3937 - <html:p>
3938 - When the Type attribute value is 'directory' the registry value must specify the path to a directory excluding the file name.
3939 - When the Type attribute value is 'file' the registry value must specify the path to a file including the file name;
3940 - however, if there is no child FileSearch element the parent directory of the file is returned. The FileSearch element requires
3941 - that you author the name of the file you are searching for. If you do not know the file name
3942 - you must set the Type attribute to 'raw' to return the full file path including the file name.
3943 - </html:p>
3944 - </xse:remarks>
3945 - </xs:appinfo>
3946 - <xs:documentation>Searches for file, directory or registry key and assigns to value of parent Property</xs:documentation>
3947 - </xs:annotation>
3948 - <xs:complexType>
3949 - <xs:choice minOccurs="0">
3950 - <xs:element ref="DirectorySearch" />
3951 - <xs:element ref="DirectorySearchRef" />
3952 - <xs:element ref="FileSearch" />
3953 - <xs:element ref="FileSearchRef" />
3954 - </xs:choice>
3955 - <xs:attribute name="Id" use="required" type="xs:string">
3956 - <xs:annotation>
3957 - <xs:documentation>Signature to be used for the file, directory or registry key being searched for.</xs:documentation>
3958 - </xs:annotation>
3959 - </xs:attribute>
3960 - <xs:attribute name="Root" use="required">
3961 - <xs:annotation>
3962 - <xs:documentation>Root key for the registry value.</xs:documentation>
3963 - </xs:annotation>
3964 - <xs:simpleType>
3965 - <xs:restriction base="xs:NMTOKEN">
3966 - <xs:enumeration value="HKCR">
3967 - <xs:annotation>
3968 - <xs:documentation>
3969 - HKEY_CLASSES_ROOT
3970 - </xs:documentation>
3971 - </xs:annotation>
3972 - </xs:enumeration>
3973 - <xs:enumeration value="HKCU">
3974 - <xs:annotation>
3975 - <xs:documentation>
3976 - HKEY_CURRENT_USER
3977 - </xs:documentation>
3978 - </xs:annotation>
3979 - </xs:enumeration>
3980 - <xs:enumeration value="HKLM">
3981 - <xs:annotation>
3982 - <xs:documentation>
3983 - HKEY_LOCAL_MACHINE
3984 - </xs:documentation>
3985 - </xs:annotation>
3986 - </xs:enumeration>
3987 - <xs:enumeration value="HKU">
3988 - <xs:annotation>
3989 - <xs:documentation>
3990 - HKEY_USERS
3991 - </xs:documentation>
3992 - </xs:annotation>
3993 - </xs:enumeration>
3994 - </xs:restriction>
3995 - </xs:simpleType>
3996 - </xs:attribute>
3997 - <xs:attribute name="Key" use="required" type="xs:string">
3998 - <xs:annotation>
3999 - <xs:documentation>Key for the registry value.</xs:documentation>
4000 - </xs:annotation>
4001 - </xs:attribute>
4002 - <xs:attribute name="Name" type="xs:string">
4003 - <xs:annotation>
4004 - <xs:documentation>Registry value name. If this value is null, then the value from the key's unnamed or default value, if any, is retrieved.</xs:documentation>
4005 - </xs:annotation>
4006 - </xs:attribute>
4007 - <xs:attribute name="Type" use="required">
4008 - <xs:annotation>
4009 - <xs:documentation>
4010 - The value must be 'file' if the child is a FileSearch element, and must be 'directory' if child is a DirectorySearch element.
4011 - </xs:documentation>
4012 - </xs:annotation>
4013 - <xs:simpleType>
4014 - <xs:restriction base="xs:NMTOKEN">
4015 - <xs:enumeration value="directory">
4016 - <xs:annotation>
4017 - <xs:documentation>
4018 - The registry value contains the path to a directory.
4019 - </xs:documentation>
4020 - </xs:annotation>
4021 - </xs:enumeration>
4022 - <xs:enumeration value="file">
4023 - <xs:annotation>
4024 - <xs:documentation>
4025 - The registry value contains the path to a file. To return the full file path you must add a FileSearch element as a child of this element; otherwise, the parent directory of the file path is returned.
4026 - </xs:documentation>
4027 - </xs:annotation>
4028 - </xs:enumeration>
4029 - <xs:enumeration value="raw">
4030 - <xs:annotation>
4031 - <xs:documentation>
4032 - Sets the raw value from the registry value. Please note that this value will contain a prefix as follows:<html:br /><html:br /><html:dl><html:dt>DWORD</html:dt><html:dd>Starts with '#' optionally followed by '+' or '-'.</html:dd><html:dt>REG_BINARY</html:dt><html:dd>Starts with '#x' and the installer converts and saves each hexadecimal digit (nibble) as an ASCII character prefixed by '#x'.</html:dd><html:dt>REG_EXPAND_SZ</html:dt><html:dd>Starts with '#%'.</html:dd><html:dt>REG_MULTI_SZ</html:dt><html:dd>Starts with '[~]' and ends with '[~]'.</html:dd><html:dt>REG_SZ</html:dt><html:dd>No prefix, but if the first character of the registry value is '#', the installer escapes the character by prefixing it with another '#'.</html:dd></html:dl></xs:documentation>
4033 - </xs:annotation>
4034 - </xs:enumeration>
4035 - </xs:restriction>
4036 - </xs:simpleType>
4037 - </xs:attribute>
4038 - <xs:attribute name="Win64" type="YesNoTypeUnion">
4039 - <xs:annotation>
4040 - <xs:documentation>Instructs the search to look in the 64-bit registry when the value is 'yes'. When the value is 'no', the search looks in the 32-bit registry.
4041 - The default value is based on the platform set by the -arch switch to candle.exe
4042 - or the InstallerPlatform property in a .wixproj MSBuild project:
4043 - For x86 and ARM, the default value is 'no'.
4044 - For x64 and IA64, the default value is 'yes'.
4045 - </xs:documentation>
4046 - </xs:annotation>
4047 - </xs:attribute>
4048 - </xs:complexType>
4049 - </xs:element>
4050 - <xs:element name="RegistrySearchRef">
4051 - <xs:annotation>
4052 - <xs:appinfo>
4053 - <xse:seeAlso ref="RegistrySearch" />
4054 - </xs:appinfo>
4055 - <xs:documentation>References an existing RegistrySearch element.</xs:documentation>
4056 - </xs:annotation>
4057 - <xs:complexType>
4058 - <xs:attribute name="Id" type="xs:string" use="required">
4059 - <xs:annotation>
4060 - <xs:documentation>Specify the Id of the RegistrySearch to reference.</xs:documentation>
4061 - </xs:annotation>
4062 - </xs:attribute>
4063 - </xs:complexType>
4064 - </xs:element>
4065 - <xs:element name="ComplianceDrive">
4066 - <xs:annotation>
4067 - <xs:documentation>Sets the parent of a nested DirectorySearch element to CCP_DRIVE.</xs:documentation>
4068 - </xs:annotation>
4069 - <xs:complexType>
4070 - <xs:choice>
4071 - <xs:element ref="DirectorySearch" />
4072 - <xs:element ref="DirectorySearchRef" />
4073 - </xs:choice>
4074 - </xs:complexType>
4075 - </xs:element>
4076 - <xs:element name="ComplianceCheck">
4077 - <xs:annotation>
4078 - <xs:appinfo>
4079 - <xse:seeAlso ref="Property" />
4080 - <xse:msiRef table="CCPSearch" href="http://msdn.microsoft.com/library/aa367846.aspx" />
4081 - <xse:msiRef table="Signature" href="http://msdn.microsoft.com/library/aa371853.aspx" />
4082 - </xs:appinfo>
4083 - <xs:documentation>Adds a row to the CCPSearch table.</xs:documentation>
4084 - </xs:annotation>
4085 - <xs:complexType>
4086 - <xs:choice minOccurs="0" maxOccurs="unbounded">
4087 - <xs:sequence>
4088 - <xs:element ref="ComplianceDrive" minOccurs="0">
4089 - <xs:annotation>
4090 - <xs:documentation>Starts searches from the CCP_DRIVE.</xs:documentation>
4091 - </xs:annotation>
4092 - </xs:element>
4093 - <xs:element ref="ComponentSearch" minOccurs="0" maxOccurs="unbounded" />
4094 - <xs:element ref="RegistrySearch" minOccurs="0" maxOccurs="unbounded" />
4095 - <xs:element ref="IniFileSearch" minOccurs="0" maxOccurs="unbounded" />
4096 - <xs:element ref="DirectorySearch" minOccurs="0" maxOccurs="unbounded" />
4097 - </xs:sequence>
4098 - <xs:any namespace="##other" processContents="lax">
4099 - <xs:annotation>
4100 - <xs:documentation>
4101 - Extensibility point in the WiX XML Schema. Schema extensions can register additional
4102 - elements at this point in the schema.
4103 - </xs:documentation>
4104 - </xs:annotation>
4105 - </xs:any>
4106 - </xs:choice>
4107 - <xs:anyAttribute namespace="##other" processContents="lax">
4108 - <xs:annotation>
4109 - <xs:documentation>
4110 - Extensibility point in the WiX XML Schema. Schema extensions can register additional
4111 - attributes at this point in the schema.
4112 - </xs:documentation>
4113 - </xs:annotation>
4114 - </xs:anyAttribute>
4115 - </xs:complexType>
4116 - </xs:element>
4117 - <xs:element name="Property">
4118 - <xs:annotation>
4119 - <xs:appinfo>
4120 - <xse:seeAlso ref="PropertyRef" />
4121 - <xse:msiRef table="Property" href="http://msdn.microsoft.com/library/aa370908.aspx" />
4122 - <xse:howtoRef href="files_and_registry/check_the_version_number.html">How To: Check the version number of a file during installation</xse:howtoRef>
4123 - </xs:appinfo>
4124 - <xs:documentation>Property value for a Product or Module.</xs:documentation>
4125 - </xs:annotation>
4126 - <xs:complexType mixed="true">
4127 - <xs:choice minOccurs="0" maxOccurs="unbounded">
4128 - <xs:sequence>
4129 - <xs:element ref="ComplianceDrive" minOccurs="0">
4130 - <xs:annotation>
4131 - <xs:documentation>Starts searches from the CCP_DRIVE.</xs:documentation>
4132 - </xs:annotation>
4133 - </xs:element>
4134 - <xs:element ref="ComponentSearch" minOccurs="0" maxOccurs="unbounded" />
4135 - <xs:element ref="RegistrySearch" minOccurs="0" maxOccurs="unbounded" />
4136 - <xs:element ref="RegistrySearchRef" minOccurs="0" maxOccurs="unbounded" />
4137 - <xs:element ref="IniFileSearch" minOccurs="0" maxOccurs="unbounded" />
4138 - <xs:element ref="DirectorySearch" minOccurs="0" maxOccurs="unbounded" />
4139 - <xs:element ref="DirectorySearchRef" minOccurs="0" maxOccurs="unbounded" />
4140 - <xs:element ref="ProductSearch" minOccurs="0" maxOccurs="unbounded" />
4141 - </xs:sequence>
4142 - <xs:any namespace="##other" processContents="lax">
4143 - <xs:annotation>
4144 - <xs:documentation>
4145 - Extensibility point in the WiX XML Schema. Schema extensions can register additional
4146 - elements at this point in the schema.
4147 - </xs:documentation>
4148 - </xs:annotation>
4149 - </xs:any>
4150 - </xs:choice>
4151 - <xs:attribute name="Id" type="xs:string" use="required">
4152 - <xs:annotation>
4153 - <xs:documentation>Unique identifier for Property.</xs:documentation>
4154 - </xs:annotation>
4155 - </xs:attribute>
4156 - <xs:attribute name="Value" type="xs:string">
4157 - <xs:annotation>
4158 - <xs:documentation>Sets a default value for the property. The value will be overwritten if the Property is used for a search.</xs:documentation>
4159 - </xs:annotation>
4160 - </xs:attribute>
4161 - <xs:attribute name="ComplianceCheck" type="YesNoTypeUnion">
4162 - <xs:annotation>
4163 - <xs:documentation>Adds a row to the CCPSearch table. This attribute is only valid when this Property contains a search element.</xs:documentation>
4164 - </xs:annotation>
4165 - </xs:attribute>
4166 - <xs:attribute name="Admin" type="YesNoTypeUnion">
4167 - <xs:annotation>
4168 - <xs:documentation>Denotes that the Property is saved during <html:a href="http://msdn.microsoft.com/library/aa367541.aspx" target="_blank">admininistrative installation</html:a>. See the <html:a href="http://msdn.microsoft.com/library/aa367542.aspx" target="_blank">AdminProperties Property</html:a> for more information.</xs:documentation>
4169 - </xs:annotation>
4170 - </xs:attribute>
4171 - <xs:attribute name="Secure" type="YesNoTypeUnion">
4172 - <xs:annotation>
4173 - <xs:documentation>Denotes that the Property can be passed to the server side when doing a managed installation with elevated privileges. See the <html:a href="http://msdn.microsoft.com/library/aa371571.aspx" target="_blank">SecureCustomProperties Property</html:a> for more information.</xs:documentation>
4174 - </xs:annotation>
4175 - </xs:attribute>
4176 - <xs:attribute name="Hidden" type="YesNoTypeUnion">
4177 - <xs:annotation>
4178 - <xs:documentation>Denotes that the Property is not logged during installation. See the <html:a href="http://msdn.microsoft.com/library/aa370308.aspx" target="_blank">MsiHiddenProperties Property</html:a> for more information.</xs:documentation>
4179 - </xs:annotation>
4180 - </xs:attribute>
4181 - <xs:attribute name="SuppressModularization" type="YesNoTypeUnion">
4182 - <xs:annotation>
4183 - <xs:documentation>
4184 - Use to suppress modularization of this property identifier in merge modules.
4185 - Using this functionality is strongly discouraged; it should only be
4186 - necessary as a workaround of last resort in rare scenarios.
4187 - </xs:documentation>
4188 - </xs:annotation>
4189 - </xs:attribute>
4190 - <xs:anyAttribute namespace="##other" processContents="lax">
4191 - <xs:annotation>
4192 - <xs:documentation>
4193 - Extensibility point in the WiX XML Schema. Schema extensions can register additional
4194 - attributes at this point in the schema.
4195 - </xs:documentation>
4196 - </xs:annotation>
4197 - </xs:anyAttribute>
4198 - </xs:complexType>
4199 - </xs:element>
4200 - <xs:element name="PropertyRef">
4201 - <xs:annotation>
4202 - <xs:appinfo>
4203 - <xse:seeAlso ref="Property" />
4204 - <xse:howtoRef href="redistributables_and_install_checks/check_for_dotnet.html">How To: Check for .NET Framework versions</xse:howtoRef>
4205 - </xs:appinfo>
4206 - <xs:documentation>Reference to a Property value.</xs:documentation>
4207 - </xs:annotation>
4208 - <xs:complexType>
4209 - <xs:attribute name="Id" type="xs:string" use="required">
4210 - <xs:annotation>
4211 - <xs:documentation>Identifier of Property to reference.</xs:documentation>
4212 - </xs:annotation>
4213 - </xs:attribute>
4214 - <xs:anyAttribute namespace="##other" processContents="lax">
4215 - <xs:annotation>
4216 - <xs:documentation>
4217 - Extensibility point in the WiX XML Schema. Schema extensions can register additional
4218 - attributes at this point in the schema.
4219 - </xs:documentation>
4220 - </xs:annotation>
4221 - </xs:anyAttribute>
4222 - </xs:complexType>
4223 - </xs:element>
4224 - <xs:element name="Shortcut">
4225 - <xs:annotation>
4226 - <xs:documentation>
4227 - Shortcut, default target is parent File, CreateFolder, or Component's Directory
4228 - </xs:documentation>
4229 - <xs:appinfo>
4230 - <xse:msiRef table="Shortcut" href="http://msdn.microsoft.com/library/aa371847.aspx" />
4231 - <xse:howtoRef href="files_and_registry/create_start_menu_shortcut.html">How To: Create a shortcut on the Start Menu</xse:howtoRef>
4232 - </xs:appinfo>
4233 - </xs:annotation>
4234 - <xs:complexType>
4235 - <xs:choice minOccurs="0" maxOccurs="unbounded">
4236 - <xs:element ref="Icon" minOccurs="0" />
4237 - <xs:element ref="ShortcutProperty" minOccurs="0" />
4238 - </xs:choice>
4239 - <xs:attribute name="Id" type="xs:string" use="required">
4240 - <xs:annotation>
4241 - <xs:documentation>Unique identifier for the shortcut. This value will serve as the primary key for the row.</xs:documentation>
4242 - </xs:annotation>
4243 - </xs:attribute>
4244 - <xs:attribute name="Directory" type="xs:string">
4245 - <xs:annotation>
4246 - <xs:documentation>Identifier reference to Directory element where shortcut is to be created. When nested under a Component element, this attribute's value will default to the parent directory. Otherwise, this attribute is required.</xs:documentation>
4247 - </xs:annotation>
4248 - </xs:attribute>
4249 - <xs:attribute name="Name" type="LongFileNameType" use="required">
4250 - <xs:annotation>
4251 - <xs:documentation>
4252 - In prior versions of the WiX toolset, this attribute specified the short name.
4253 - This attribute's value may now be either a short or long name.
4254 - If a short name is specified, the ShortName attribute may not be specified.
4255 - Also, if this value is a long name, the ShortName attribute may be omitted to
4256 - allow WiX to attempt to generate a unique short name.
4257 - However, if this name collides with another shortcut or you wish to manually specify
4258 - the short name, then the ShortName attribute may be specified.
4259 - </xs:documentation>
4260 - </xs:annotation>
4261 - </xs:attribute>
4262 - <xs:attribute name="ShortName" type="ShortFileNameType">
4263 - <xs:annotation>
4264 - <xs:documentation>
4265 - The short name of the shortcut in 8.3 format.
4266 - This attribute should only be set if there is a conflict between generated short names
4267 - or the user wants to manually specify the short name.
4268 - </xs:documentation>
4269 - </xs:annotation>
4270 - </xs:attribute>
4271 - <xs:attribute name="Target" type="xs:string">
4272 - <xs:annotation>
4273 - <xs:documentation>
4274 - This attribute can only be set if this Shortcut element is nested under a Component element.
4275 - When nested under a Component element, this attribute's value will default to the parent directory.
4276 - This attribute's value is the target for a non-advertised shortcut.
4277 - This attribute is not valid for advertised shortcuts.
4278 - If you specify this value, its value should be a property identifier enclosed by square brackets ([ ]), that is expanded into the file or a folder pointed to by the shortcut.
4279 - </xs:documentation>
4280 - </xs:annotation>
4281 - </xs:attribute>
4282 - <xs:attribute name="Description" type="xs:string">
4283 - <xs:annotation>
4284 - <xs:documentation>The localizable description for the shortcut.</xs:documentation>
4285 - </xs:annotation>
4286 - </xs:attribute>
4287 - <xs:attribute name="Arguments" type="xs:string">
4288 - <xs:annotation>
4289 - <xs:documentation>The command-line arguments for the shortcut. Note that the resolution of properties
4290 - in the Arguments field is limited. A property formatted as [Property] in this field can only be resolved if the
4291 - property already has the intended value when the component owning the shortcut is installed. For example, for the
4292 - argument "[#MyDoc.doc]" to resolve to the correct value, the same process must be installing the file MyDoc.doc and
4293 - the component that owns the shortcut.</xs:documentation>
4294 - </xs:annotation>
4295 - </xs:attribute>
4296 - <xs:attribute name="Hotkey" type="xs:integer">
4297 - <xs:annotation>
4298 - <xs:documentation>The hotkey for the shortcut. The low-order byte contains the virtual-key code for
4299 - the key, and the high-order byte contains modifier flags. This must be a non-negative number. Authors of
4300 - installation packages are generally recommend not to set this option, because this can add duplicate hotkeys to a
4301 - users desktop. In addition, the practice of assigning hotkeys to shortcuts can be problematic for users using hotkeys
4302 - for accessibility.</xs:documentation>
4303 - </xs:annotation>
4304 - </xs:attribute>
4305 - <xs:attribute name="Icon" type="xs:string">
4306 - <xs:annotation>
4307 - <xs:documentation>Identifier reference to Icon element. The Icon identifier should have the same extension
4308 - as the file that it points at. For example, a shortcut to an executable (e.g. "my.exe") should reference an Icon with identifier
4309 - like "MyIcon.exe"</xs:documentation>
4310 - </xs:annotation>
4311 - </xs:attribute>
4312 - <xs:attribute name="IconIndex" type="xs:integer">
4313 - <xs:annotation>
4314 - <xs:documentation>Identifier reference to Icon element.</xs:documentation>
4315 - </xs:annotation>
4316 - </xs:attribute>
4317 - <xs:attribute name="Show">
4318 - <xs:simpleType>
4319 - <xs:restriction base="xs:NMTOKEN">
4320 - <xs:enumeration value="normal">
4321 - <xs:annotation>
4322 - <xs:documentation>
4323 - The shortcut target will be displayed using the SW_SHOWNORMAL attribute.
4324 - </xs:documentation>
4325 - </xs:annotation>
4326 - </xs:enumeration>
4327 - <xs:enumeration value="minimized">
4328 - <xs:annotation>
4329 - <xs:documentation>
4330 - The shortcut target will be displayed using the SW_SHOWMINNOACTIVE attribute.
4331 - </xs:documentation>
4332 - </xs:annotation>
4333 - </xs:enumeration>
4334 - <xs:enumeration value="maximized">
4335 - <xs:annotation>
4336 - <xs:documentation>
4337 - The shortcut target will be displayed using the SW_SHOWMAXIMIZED attribute.
4338 - </xs:documentation>
4339 - </xs:annotation>
4340 - </xs:enumeration>
4341 - </xs:restriction>
4342 - </xs:simpleType>
4343 - </xs:attribute>
4344 - <xs:attribute name="WorkingDirectory" type="xs:string">
4345 - <xs:annotation>
4346 - <xs:documentation>Directory identifier (or Property identifier that resolves to a directory) that resolves
4347 - to the path of the working directory for the shortcut.</xs:documentation>
4348 - </xs:annotation>
4349 - </xs:attribute>
4350 - <xs:attribute name="Advertise" type="YesNoTypeUnion">
4351 - <xs:annotation>
4352 - <xs:documentation>Specifies if the shortcut should be advertised or not. Note that advertised shortcuts
4353 - always point at a particular application, identified by a ProductCode, and should not be shared between applications.
4354 - Advertised shortcuts only work for the most recently installed application, and are removed when that application is
4355 - removed. The default value is 'no'.</xs:documentation>
4356 - </xs:annotation>
4357 - </xs:attribute>
4358 - <xs:attribute name="DisplayResourceDll" type="xs:string">
4359 - <xs:annotation>
4360 - <xs:documentation>
4361 - The Formatted string providing the full path to the language neutral file containing the MUI Manifest. Generally
4362 - authored using [#filekey] form. When this attribute is specified, the DisplayResourceId attribute must also
4363 - be provided.
4364 -
4365 - This attribute is only used on Windows Vista and above. If this attribute is not populated and the install
4366 - is running on Vista and above, the value in the Name attribute is used. If this attribute is populated and
4367 - the install is running on Vista and above, the value in the Name attribute is ignored.
4368 - </xs:documentation>
4369 - </xs:annotation>
4370 - </xs:attribute>
4371 - <xs:attribute name="DisplayResourceId" type="xs:integer">
4372 - <xs:annotation>
4373 - <xs:documentation>
4374 - The display name index for the shortcut. This must be a non-negative number. When this attribute is specified, the
4375 - DisplayResourceDll attribute must also be provided.
4376 -
4377 - This attribute is only used on Windows Vista and above. If this attribute is not specified and the install
4378 - is running on Vista and above, the value in the Name attribute is used. If this attribute is specified and
4379 - the install is running on Vista and above, the value in the Name attribute is ignored.
4380 - </xs:documentation>
4381 - </xs:annotation>
4382 - </xs:attribute>
4383 - <xs:attribute name="DescriptionResourceDll" type="xs:string">
4384 - <xs:annotation>
4385 - <xs:documentation>
4386 - The Formatted string providing the full path to the language neutral file containing the MUI Manifest. Generally
4387 - authored using [#filekey] form. When this attribute is specified, the DescriptionResourceId attribute must also
4388 - be provided.
4389 -
4390 - This attribute is only used on Windows Vista and above. If this attribute is not specified and the install
4391 - is running on Vista and above, the value in the Name attribute is used. If this attribute is provided and
4392 - the install is running on Vista and above, the value in the Name attribute is ignored.
4393 - </xs:documentation>
4394 - </xs:annotation>
4395 - </xs:attribute>
4396 - <xs:attribute name="DescriptionResourceId" type="xs:integer">
4397 - <xs:annotation>
4398 - <xs:documentation>
4399 - The description name index for the shortcut. This must be a non-negative number. When this attribute is specified,
4400 - the DescriptionResourceDll attribute must also be populated.
4401 -
4402 - This attribute is only used on Windows Vista and above. If this attribute is not specified and the install
4403 - is running on Vista and above, the value in the Name attribute is used. If this attribute is populated and the
4404 - install is running on Vista and above, the value in the Name attribute is ignored.
4405 - </xs:documentation>
4406 - </xs:annotation>
4407 - </xs:attribute>
4408 - </xs:complexType>
4409 - </xs:element>
4410 - <xs:element name="ShortcutProperty">
4411 - <xs:annotation>
4412 - <xs:appinfo>
4413 - <xse:seeAlso ref="Shortcut" />
4414 - <xse:msiRef table="MsiShortcutProperty" />
4415 - </xs:appinfo>
4416 - <xs:documentation>Property values for a shortcut. This element's functionality is available starting with MSI 5.0.</xs:documentation>
4417 - </xs:annotation>
4418 - <xs:complexType mixed="true">
4419 - <xs:attribute name="Id" type="xs:string">
4420 - <xs:annotation>
4421 - <xs:documentation>Unique identifier for MsiShortcutProperty table. If omitted, a stable identifier will be generated from the parent shortcut identifier and Key value.</xs:documentation>
4422 - </xs:annotation>
4423 - </xs:attribute>
4424 - <xs:attribute name="Key" type="xs:string" use="required">
4425 - <xs:annotation>
4426 - <xs:documentation>A formatted string identifying the property to be set.</xs:documentation>
4427 - </xs:annotation>
4428 - </xs:attribute>
4429 - <xs:attribute name="Value" type="xs:string">
4430 - <xs:annotation>
4431 - <xs:documentation>A formatted string supplying the value of the property.</xs:documentation>
4432 - </xs:annotation>
4433 - </xs:attribute>
4434 - </xs:complexType>
4435 - </xs:element>
4436 - <xs:element name="Permission">
4437 - <xs:annotation>
4438 - <xs:documentation>
4439 - Sets ACLs on File, Registry, or CreateFolder. When under a Registry element, this cannot be used
4440 - if the Action attribute's value is remove or removeKeyOnInstall. This element has no Id attribute.
4441 - The table and key are taken from the parent element.
4442 - </xs:documentation>
4443 - <xs:appinfo>
4444 - <xse:msiRef table="LockPermissions" href="http://msdn.microsoft.com/library/aa369774.aspx" />
4445 - </xs:appinfo>
4446 - </xs:annotation>
4447 - <xs:complexType>
4448 - <xs:attribute name="Domain" type="xs:string"></xs:attribute>
4449 - <xs:attribute name="User" use="required" type="xs:string"></xs:attribute>
4450 - <!-- Common ACLs -->
4451 - <xs:attribute name="Read" type="YesNoTypeUnion"></xs:attribute>
4452 - <xs:attribute name="Delete" type="YesNoTypeUnion"></xs:attribute>
4453 - <xs:attribute name="ReadPermission" type="YesNoTypeUnion"></xs:attribute>
4454 - <xs:attribute name="ChangePermission" type="YesNoTypeUnion"></xs:attribute>
4455 - <xs:attribute name="TakeOwnership" type="YesNoTypeUnion"></xs:attribute>
4456 - <xs:attribute name="SpecificRightsAll" type="YesNoTypeUnion">
4457 - <xs:annotation>
4458 - <xs:documentation>Bit mask for SPECIFIC_RIGHTS_ALL from WinNT.h (0x0000FFFF).</xs:documentation>
4459 - </xs:annotation>
4460 - </xs:attribute>
4461 - <!-- Folder and File ACLs -->
4462 - <xs:attribute name="ReadAttributes" type="YesNoTypeUnion"></xs:attribute>
4463 - <xs:attribute name="WriteAttributes" type="YesNoTypeUnion"></xs:attribute>
4464 - <xs:attribute name="ReadExtendedAttributes" type="YesNoTypeUnion"></xs:attribute>
4465 - <xs:attribute name="WriteExtendedAttributes" type="YesNoTypeUnion"></xs:attribute>
4466 - <xs:attribute name="Synchronize" type="YesNoTypeUnion"></xs:attribute>
4467 - <!-- Folder only ACLs -->
4468 - <xs:attribute name="CreateFile" type="YesNoTypeUnion">
4469 - <xs:annotation>
4470 - <xs:documentation>For a directory, the right to create a file in the directory. Only valid under a 'CreateFolder' parent.</xs:documentation>
4471 - </xs:annotation>
4472 - </xs:attribute>
4473 - <xs:attribute name="CreateChild" type="YesNoTypeUnion">
4474 - <xs:annotation>
4475 - <xs:documentation>For a directory, the right to create a subdirectory. Only valid under a 'CreateFolder' parent.</xs:documentation>
4476 - </xs:annotation>
4477 - </xs:attribute>
4478 - <xs:attribute name="DeleteChild" type="YesNoTypeUnion">
4479 - <xs:annotation>
4480 - <xs:documentation>For a directory, the right to delete a directory and all the files it contains, including read-only files. Only valid under a 'CreateFolder' parent.</xs:documentation>
4481 - </xs:annotation>
4482 - </xs:attribute>
4483 - <xs:attribute name="Traverse" type="YesNoTypeUnion">
4484 - <xs:annotation>
4485 - <xs:documentation>For a directory, the right to traverse the directory. By default, users are assigned the BYPASS_TRAVERSE_CHECKING privilege, which ignores the FILE_TRAVERSE access right. Only valid under a 'CreateFolder' parent.</xs:documentation>
4486 - </xs:annotation>
4487 - </xs:attribute>
4488 - <!-- File only ACLs -->
4489 - <xs:attribute name="Append" type="YesNoTypeUnion"></xs:attribute>
4490 - <xs:attribute name="Execute" type="YesNoTypeUnion"></xs:attribute>
4491 - <xs:attribute name="FileAllRights" type="YesNoTypeUnion">
4492 - <xs:annotation>
4493 - <xs:documentation>Bit mask for FILE_ALL_ACCESS from WinNT.h (0x001F01FF).</xs:documentation>
4494 - </xs:annotation>
4495 - </xs:attribute>
4496 - <!-- File and Registry ACLs -->
4497 - <xs:attribute name="Write" type="YesNoTypeUnion"></xs:attribute>
4498 - <!-- Registry only ACLs -->
4499 - <xs:attribute name="CreateSubkeys" type="YesNoTypeUnion"></xs:attribute>
4500 - <xs:attribute name="EnumerateSubkeys" type="YesNoTypeUnion"></xs:attribute>
4501 - <xs:attribute name="Notify" type="YesNoTypeUnion"></xs:attribute>
4502 - <xs:attribute name="CreateLink" type="YesNoTypeUnion"></xs:attribute>
4503 - <!-- Generic ACLs, mapped by system to appropriate permissions -->
4504 - <xs:attribute name="GenericAll" type="YesNoTypeUnion"></xs:attribute>
4505 - <xs:attribute name="GenericExecute" type="YesNoTypeUnion"></xs:attribute>
4506 - <xs:attribute name="GenericWrite" type="YesNoTypeUnion"></xs:attribute>
4507 - <xs:attribute name="GenericRead" type="YesNoTypeUnion">
4508 - <xs:annotation>
4509 - <xs:documentation>specifying this will fail to grant read access</xs:documentation>
4510 - </xs:annotation>
4511 - </xs:attribute>
4512 - </xs:complexType>
4513 - </xs:element>
4514 - <xs:element name="PermissionEx">
4515 - <xs:annotation>
4516 - <xs:documentation>
4517 - Sets ACLs on File, Registry, or CreateFolder. When under a Registry element, this cannot be used
4518 - if the Action attribute's value is remove or removeKeyOnInstall. This element is only available
4519 - when installing with MSI 5.0. For downlevel support, see the PermissionEx element from the
4520 - WixUtilExtension.
4521 - </xs:documentation>
4522 - <xs:appinfo>
4523 - <xse:msiRef table="MsiLockPermissionsEx" href="http://msdn.microsoft.com/library/aa369774.aspx" />
4524 - </xs:appinfo>
4525 - </xs:annotation>
4526 - <xs:complexType>
4527 - <xs:sequence>
4528 - <xs:element ref="Condition" minOccurs="0">
4529 - <xs:annotation>
4530 - <xs:documentation>
4531 - Optional condition that controls whether the permissions are applied.
4532 - </xs:documentation>
4533 - </xs:annotation>
4534 - </xs:element>
4535 - </xs:sequence>
4536 - <xs:attribute name="Id" type="xs:string">
4537 - <xs:annotation>
4538 - <xs:documentation>
4539 - Primary key used to identify this particular entry. If this is not specified the parent element's Id attribute
4540 - will be used instead.
4541 - </xs:documentation>
4542 - </xs:annotation>
4543 - </xs:attribute>
4544 - <xs:attribute name="Sddl" type="xs:string" use="required">
4545 - <xs:annotation>
4546 - <xs:documentation>
4547 - Security descriptor to apply to parent object.
4548 - </xs:documentation>
4549 - </xs:annotation>
4550 - </xs:attribute>
4551 - </xs:complexType>
4552 - </xs:element>
4553 - <xs:element name="CopyFile">
4554 - <xs:annotation>
4555 - <xs:appinfo>
4556 - <xse:seeAlso ref="RemoveFile" />
4557 - <xse:msiRef table="DuplicateFile" href="http://msdn.microsoft.com/library/aa368335.aspx" />
4558 - <xse:msiRef table="MoveFile" href="http://msdn.microsoft.com/library/aa370055.aspx" />
4559 - </xs:appinfo>
4560 - <xs:documentation>
4561 - Copy or move an existing file on the target machine, or copy a file that is being installed, to another destination. When
4562 - this element is nested under a File element, the parent file will be installed, then copied to the specified destination
4563 - if the parent component of the file is selected for installation or removal. When this element is nested under
4564 - a Component element and no FileId attribute is specified, the file to copy or move must already be on the target machine.
4565 - When this element is nested under a Component element and the FileId attribute is specified, the specified file is installed,
4566 - then copied to the specified destination if the parent component is selected for installation or removal (use
4567 - this option to control the copy of a file in a different component by the parent component's installation state). If the
4568 - specified destination directory is the same as the directory containing the original file and the name for the proposed source
4569 - file is the same as the original, then no action takes place.
4570 - </xs:documentation>
4571 - </xs:annotation>
4572 - <xs:complexType>
4573 - <xs:attribute name="Id" type="xs:string" use="required">
4574 - <xs:annotation>
4575 - <xs:documentation>Primary key used to identify this particular entry.</xs:documentation>
4576 - </xs:annotation>
4577 - </xs:attribute>
4578 - <xs:attribute name="FileId" type="xs:string">
4579 - <xs:annotation>
4580 - <xs:documentation>
4581 - This attribute cannot be specified if the element is nested under a File element. Set this attribute's value to the identifier
4582 - of a file from a different component to copy it based on the install state of the parent component.
4583 - </xs:documentation>
4584 - </xs:annotation>
4585 - </xs:attribute>
4586 - <xs:attribute name="SourceDirectory" type="xs:string">
4587 - <xs:annotation>
4588 - <xs:documentation>
4589 - This attribute cannot be specified if the element is nested under a File element or the FileId attribute is specified. Set
4590 - this value to the source directory from which to copy or move an existing file on the target machine. This Directory must
4591 - exist in the installer database at creation time. This attribute cannot be specified in conjunction with SourceProperty.
4592 - </xs:documentation>
4593 - </xs:annotation>
4594 - </xs:attribute>
4595 - <xs:attribute name="SourceProperty" type="xs:string">
4596 - <xs:annotation>
4597 - <xs:documentation>
4598 - This attribute cannot be specified if the element is nested under a File element or the FileId attribute is specified. Set
4599 - this value to a property that will have a value that resolves to the full path of the source directory (or full path
4600 - including file name if SourceName is not specified). The property does not have to exist in the installer database at
4601 - creation time; it could be created at installation time by a custom action, on the command line, etc. This attribute
4602 - cannot be specified in conjunction with SourceDirectory.
4603 - </xs:documentation>
4604 - </xs:annotation>
4605 - </xs:attribute>
4606 - <xs:attribute name="SourceName" type="WildCardLongFileNameType">
4607 - <xs:annotation>
4608 - <xs:documentation>
4609 - This attribute cannot be specified if the element is nested under a File element or the FileId attribute is specified. Set
4610 - this value to the localizable name of the file(s) to be copied or moved. All of the files that
4611 - match the wild card will be removed from the specified directory. The value is a filename that may also
4612 - contain the wild card characters "?" for any single character or "*" for zero or more occurrences of any character. If this
4613 - attribute is not specified (and this element is not nested under a File element or specify a FileId attribute) then the
4614 - SourceProperty attribute should be set to the name of a property that will resolve to the full path of the source filename.
4615 - If the value of this attribute contains a "*" wildcard and the DestinationName attribute is specified, all moved or copied
4616 - files retain the file names from their sources.
4617 - </xs:documentation>
4618 - </xs:annotation>
4619 - </xs:attribute>
4620 - <xs:attribute name="DestinationDirectory" type="xs:string">
4621 - <xs:annotation>
4622 - <xs:documentation>
4623 - Set this value to the destination directory where an existing file on the target machine should be moved or copied to. This
4624 - Directory must exist in the installer database at creation time. This attribute cannot be specified in conjunction with
4625 - DestinationProperty.
4626 - </xs:documentation>
4627 - </xs:annotation>
4628 - </xs:attribute>
4629 - <xs:attribute name="DestinationProperty" type="xs:string">
4630 - <xs:annotation>
4631 - <xs:documentation>
4632 - Set this value to a property that will have a value that resolves to the full path of the destination directory. The property
4633 - does not have to exist in the installer database at creation time; it could be created at installation time by a custom
4634 - action, on the command line, etc. This attribute cannot be specified in conjunction with DestinationDirectory.
4635 - </xs:documentation>
4636 - </xs:annotation>
4637 - </xs:attribute>
4638 - <xs:attribute name="DestinationName" type="LongFileNameType">
4639 - <xs:annotation>
4640 - <xs:documentation>
4641 - In prior versions of the WiX toolset, this attribute specified the short file name.
4642 - Now set this value to the localizable name to be given to the original file after it is moved or copied.
4643 - If this attribute is not specified, then the destination file is given the same name as the source file.
4644 - If a short file name is specified, the DestinationShortName attribute may not be specified.
4645 - Also, if this value is a long file name, the DestinationShortName attribute may be omitted to
4646 - allow WiX to attempt to generate a unique short file name.
4647 - However, if this name collides with another file or you wish to manually specify
4648 - the short file name, then the DestinationShortName attribute may be specified.
4649 - </xs:documentation>
4650 - </xs:annotation>
4651 - </xs:attribute>
4652 - <xs:attribute name="DestinationShortName" type="ShortFileNameType">
4653 - <xs:annotation>
4654 - <xs:documentation>
4655 - The short file name of the file in 8.3 format.
4656 - This attribute should only be set if there is a conflict between generated short file names
4657 - or you wish to manually specify the short file name.
4658 - </xs:documentation>
4659 - </xs:annotation>
4660 - </xs:attribute>
4661 - <xs:attribute name="Delete" type="YesNoTypeUnion">
4662 - <xs:annotation>
4663 - <xs:documentation>
4664 - This attribute cannot be specified if the element is nested under a File element or the FileId attribute is specified. In other
4665 - cases, if the attribute is not specified, the default value is "no" and the file is copied, not moved. Set the value to "yes"
4666 - in order to move the file (thus deleting the source file) instead of copying it.
4667 - </xs:documentation>
4668 - </xs:annotation>
4669 - </xs:attribute>
4670 - </xs:complexType>
4671 - </xs:element>
4672 - <xs:element name="File">
4673 - <xs:annotation>
4674 - <xs:documentation>
4675 - File specification for File table, must be child node of Component.
4676 - </xs:documentation>
4677 - <xs:appinfo>
4678 - <xse:msiRef table="File" href="http://msdn.microsoft.com/library/aa368596.aspx" />
4679 - <xse:howtoRef href="files_and_registry/add_a_file.html">How To: Add a file to your installer</xse:howtoRef>
4680 - </xs:appinfo>
4681 - </xs:annotation>
4682 - <xs:complexType>
4683 - <xs:choice minOccurs="0" maxOccurs="unbounded">
4684 - <xs:element ref="AssemblyName" />
4685 - <xs:element ref="Permission">
4686 - <xs:annotation>
4687 - <xs:documentation>Used to configure the ACLs for this file.</xs:documentation>
4688 - </xs:annotation>
4689 - </xs:element>
4690 - <xs:element ref="PermissionEx">
4691 - <xs:annotation>
4692 - <xs:documentation>Can also configure the ACLs for this file.</xs:documentation>
4693 - </xs:annotation>
4694 - </xs:element>
4695 - <xs:element ref="CopyFile">
4696 - <xs:annotation>
4697 - <xs:documentation>Used to create a duplicate of this file elsewhere.</xs:documentation>
4698 - </xs:annotation>
4699 - </xs:element>
4700 - <xs:element ref="Shortcut">
4701 - <xs:annotation>
4702 - <xs:documentation>Target of the shortcut will be set to this file.</xs:documentation>
4703 - </xs:annotation>
4704 - </xs:element>
4705 - <xs:element ref="ODBCDriver" />
4706 - <xs:element ref="ODBCTranslator" />
4707 - <xs:element ref="SymbolPath" />
4708 - <xs:element ref="Class" />
4709 - <xs:element ref="AppId" />
4710 - <xs:element ref="TypeLib" />
4711 - <xs:any namespace="##other" processContents="lax">
4712 - <xs:annotation>
4713 - <xs:documentation>
4714 - Extensibility point in the WiX XML Schema. Schema extensions can register additional
4715 - elements at this point in the schema.
4716 - </xs:documentation>
4717 - </xs:annotation>
4718 - </xs:any>
4719 - </xs:choice>
4720 - <xs:attribute name="Id" type="xs:string">
4721 - <xs:annotation>
4722 - <xs:documentation>
4723 - The unique identifier for this File element. If you omit Id, it defaults to the file name portion of the Source attribute, if specified. May be referenced as a Property by specifying [#value].
4724 - </xs:documentation>
4725 - </xs:annotation>
4726 - </xs:attribute>
4727 - <xs:attribute name="CompanionFile" type="xs:string">
4728 - <xs:annotation>
4729 - <xs:documentation>Set this attribute to make this file a companion child of another file. The installation
4730 - state of a companion file depends not on its own file versioning information, but on the versioning of its
4731 - companion parent. A file that is the key path for its component can not be a companion file (that means
4732 - this attribute cannot be set if KeyPath="yes" for this file). The Version attribute cannot be set along
4733 - with this attribute since companion files are not installed based on their own version.</xs:documentation>
4734 - </xs:annotation>
4735 - </xs:attribute>
4736 - <xs:attribute name="Name" type="LongFileNameType">
4737 - <xs:annotation>
4738 - <xs:documentation>
4739 - In prior versions of the WiX toolset, this attribute specified the short file name.
4740 - This attribute's value may now be either a short or long file name.
4741 - If a short file name is specified, the ShortName attribute may not be specified.
4742 - Also, if this value is a long file name, the ShortName attribute may be omitted to
4743 - allow WiX to attempt to generate a unique short file name.
4744 - However, if this name collides with another file or you wish to manually specify
4745 - the short file name, then the ShortName attribute may be specified.
4746 - Finally, if this attribute is omitted then its default value is the file name portion
4747 - of the Source attribute, if one is specified, or the value of the Id attribute, if
4748 - the Source attribute is omitted or doesn't contain a file name.
4749 - </xs:documentation>
4750 - </xs:annotation>
4751 - </xs:attribute>
4752 - <xs:attribute name="KeyPath" type="YesNoTypeUnion">
4753 - <xs:annotation>
4754 - <xs:documentation>Set to yes in order to force this file to be the key path for the parent component.</xs:documentation>
4755 - </xs:annotation>
4756 - </xs:attribute>
4757 - <xs:attribute name="ShortName" type="ShortFileNameType">
4758 - <xs:annotation>
4759 - <xs:documentation>
4760 - The short file name of the file in 8.3 format.
4761 - This attribute should only be set if there is a conflict between generated short file names
4762 - or the user wants to manually specify the short file name.
4763 - </xs:documentation>
4764 - </xs:annotation>
4765 - </xs:attribute>
4766 - <!-- 'Attributes' column integer value generated from XML attributes below -->
4767 - <xs:attribute name="ReadOnly" type="YesNoTypeUnion">
4768 - <xs:annotation>
4769 - <xs:documentation>Set to yes in order to have the file's read-only attribute set when it is installed on the target machine.</xs:documentation>
4770 - </xs:annotation>
4771 - </xs:attribute>
4772 - <xs:attribute name="Hidden" type="YesNoTypeUnion">
4773 - <xs:annotation>
4774 - <xs:documentation>Set to yes in order to have the file's hidden attribute set when it is installed on the target machine.</xs:documentation>
4775 - </xs:annotation>
4776 - </xs:attribute>
4777 - <xs:attribute name="System" type="YesNoTypeUnion">
4778 - <xs:annotation>
4779 - <xs:documentation>Set to yes in order to have the file's system attribute set when it is installed on the target machine.</xs:documentation>
4780 - </xs:annotation>
4781 - </xs:attribute>
4782 - <xs:attribute name="Vital" type="YesNoTypeUnion">
4783 - <xs:annotation>
4784 - <xs:documentation>If a file is vital, then installation cannot proceed unless the file is successfully installed. The user will have no option to ignore an error installing this file. If an error occurs, they can merely retry to install the file or abort the installation. The default is "yes," unless the -sfdvital switch (candle.exe) or SuppressFileDefaultVital property (.wixproj) is used.</xs:documentation>
4785 - </xs:annotation>
4786 - </xs:attribute>
4787 - <xs:attribute name="Checksum" type="YesNoTypeUnion">
4788 - <xs:annotation>
4789 - <xs:documentation>This attribute should be set to "yes" for every executable file in the installation that has a valid checksum stored in the Portable Executable (PE) file header. Only those files that have this attribute set will be verified for valid checksum during a reinstall.</xs:documentation>
4790 - </xs:annotation>
4791 - </xs:attribute>
4792 - <xs:attribute name="Compressed" type="YesNoDefaultTypeUnion">
4793 - <xs:annotation>
4794 - <xs:documentation>Sets the file's source type compression. A setting of "yes" or "no" will override the setting in the Word Count Summary Property.</xs:documentation>
4795 - </xs:annotation>
4796 - </xs:attribute>
4797 - <xs:attribute name="BindPath" type="xs:string">
4798 - <xs:annotation>
4799 - <xs:documentation>A list of paths, separated by semicolons, that represent the paths to be searched to find the imported DLLs. The list is usually a list of properties, with each property enclosed inside square brackets. The value may be set to an empty string. Including this attribute will cause an entry to be generated for the file in the BindImage table.</xs:documentation>
4800 - </xs:annotation>
4801 - </xs:attribute>
4802 - <xs:attribute name="SelfRegCost" type="xs:integer">
4803 - <xs:annotation>
4804 - <xs:documentation>The cost of registering the file in bytes. This must be a non-negative number. Including this attribute will cause an entry to be generated for the file in the SelfReg table.</xs:documentation>
4805 - </xs:annotation>
4806 - </xs:attribute>
4807 - <xs:attribute name="TrueType" type="YesNoTypeUnion">
4808 - <xs:annotation>
4809 - <xs:documentation>Causes an entry to be generated for the file in the Font table with no FontTitle specified. This attribute is intended to be used to register the file as a TrueType font.</xs:documentation>
4810 - </xs:annotation>
4811 - </xs:attribute>
4812 - <xs:attribute name="FontTitle" type="xs:string">
4813 - <xs:annotation>
4814 - <xs:documentation>Causes an entry to be generated for the file in the Font table with the specified FontTitle. This attribute is intended to be used to register the file as a non-TrueType font.</xs:documentation>
4815 - </xs:annotation>
4816 - </xs:attribute>
4817 - <xs:attribute name="DefaultLanguage" type="xs:string">
4818 - <xs:annotation>
4819 - <xs:documentation>This is the default language of this file. The linker will replace this value from the value in the file if the suppress files option is not used.</xs:documentation>
4820 - </xs:annotation>
4821 - </xs:attribute>
4822 - <xs:attribute name="DefaultSize" type="xs:integer">
4823 - <xs:annotation>
4824 - <xs:documentation>This is the default size of this file. The linker will replace this value from the value in the file if the suppress files option is not used.</xs:documentation>
4825 - </xs:annotation>
4826 - </xs:attribute>
4827 - <xs:attribute name="DefaultVersion" type="xs:string">
4828 - <xs:annotation>
4829 - <xs:documentation>This is the default version of this file. The linker will replace this value from the value in the file if the suppress files option is not used.</xs:documentation>
4830 - </xs:annotation>
4831 - </xs:attribute>
4832 - <!-- assembly information -->
4833 - <xs:attribute name="Assembly">
4834 - <xs:annotation>
4835 - <xs:documentation>
4836 - Specifies if this File is a Win32 Assembly or .NET Assembly that needs to be installed into the
4837 - Global Assembly Cache (GAC). If the value is '.net' or 'win32', this file must also be the key path of the Component.
4838 - </xs:documentation>
4839 - </xs:annotation>
4840 - <xs:simpleType>
4841 - <xs:restriction base="xs:NMTOKEN">
4842 - <xs:enumeration value=".net">
4843 - <xs:annotation>
4844 - <xs:documentation>
4845 - The file is a .NET Framework assembly.
4846 - </xs:documentation>
4847 - </xs:annotation>
4848 - </xs:enumeration>
4849 - <xs:enumeration value="no">
4850 - <xs:annotation>
4851 - <xs:documentation>
4852 - The file is not a .NET Framework or Win32 assembly. This is the default value.
4853 - </xs:documentation>
4854 - </xs:annotation>
4855 - </xs:enumeration>
4856 - <xs:enumeration value="win32">
4857 - <xs:annotation>
4858 - <xs:documentation>
4859 - The file is a Win32 assembly.
4860 - </xs:documentation>
4861 - </xs:annotation>
4862 - </xs:enumeration>
4863 - </xs:restriction>
4864 - </xs:simpleType>
4865 - </xs:attribute>
4866 - <xs:attribute name="AssemblyManifest" type="xs:string">
4867 - <xs:annotation>
4868 - <xs:documentation>
4869 - Specifies the file identifier of the manifest file that describes this assembly.
4870 - The manifest file should be in the same component as the assembly it describes.
4871 - This attribute may only be specified if the Assembly attribute is set to '.net' or 'win32'.
4872 - </xs:documentation>
4873 - </xs:annotation>
4874 - </xs:attribute>
4875 - <xs:attribute name="AssemblyApplication" type="xs:string">
4876 - <xs:annotation>
4877 - <xs:documentation>
4878 - Specifies the file identifier of the application file. This assembly will be isolated
4879 - to the same directory as the application file.
4880 - If this attribute is absent, the assembly will be installed to the Global Assembly Cache (GAC).
4881 - This attribute may only be specified if the Assembly attribute is set to '.net' or 'win32'.
4882 - </xs:documentation>
4883 - </xs:annotation>
4884 - </xs:attribute>
4885 - <xs:attribute name="ProcessorArchitecture">
4886 - <xs:annotation>
4887 - <xs:documentation>Specifies the architecture for this assembly. This attribute should only be used on .NET Framework 2.0 or higher assemblies.</xs:documentation>
4888 - </xs:annotation>
4889 - <xs:simpleType>
4890 - <xs:restriction base="xs:NMTOKEN">
4891 - <xs:enumeration value="msil">
4892 - <xs:annotation>
4893 - <xs:documentation>
4894 - The file is a .NET Framework assembly that is processor-neutral.
4895 - </xs:documentation>
4896 - </xs:annotation>
4897 - </xs:enumeration>
4898 - <xs:enumeration value="x86">
4899 - <xs:annotation>
4900 - <xs:documentation>
4901 - The file is a .NET Framework assembly for the x86 processor.
4902 - </xs:documentation>
4903 - </xs:annotation>
4904 - </xs:enumeration>
4905 - <xs:enumeration value="x64">
4906 - <xs:annotation>
4907 - <xs:documentation>
4908 - The file is a .NET Framework assembly for the x64 processor.
4909 - </xs:documentation>
4910 - </xs:annotation>
4911 - </xs:enumeration>
4912 - <xs:enumeration value="ia64">
4913 - <xs:annotation>
4914 - <xs:documentation>
4915 - The file is a .NET Framework assembly for the ia64 processor.
4916 - </xs:documentation>
4917 - </xs:annotation>
4918 - </xs:enumeration>
4919 - </xs:restriction>
4920 - </xs:simpleType>
4921 - </xs:attribute>
4922 - <xs:attribute name="DiskId" type="DiskIdType">
4923 - <xs:annotation>
4924 - <xs:documentation>
4925 - The value of this attribute should correspond to the Id attribute of a Media
4926 - element authored elsewhere. By creating this connection between a file and
4927 - its media, you set the packaging options to the values specified in the Media
4928 - element (values such as compression level, cab embedding, etc...). Specifying
4929 - the DiskId attribute on the File element overrides the default DiskId attribute
4930 - from the parent Component element. If no DiskId attribute is specified,
4931 - the default is "1". This DiskId attribute is ignored when creating a merge module
4932 - because merge modules do not have media.
4933 - </xs:documentation>
4934 - </xs:annotation>
4935 - </xs:attribute>
4936 - <xs:attribute name="Source" type="xs:string">
4937 - <xs:annotation>
4938 - <xs:documentation>Specifies the path to the File in the build process. Overrides default source path set by parent directories and Name attribute. This attribute must be set if no source information can be gathered from parent directories. For more information, see <html:a href="~/howtos/general/specifying_source_files.html">Specifying source files</html:a>.</xs:documentation>
4939 - </xs:annotation>
4940 - </xs:attribute>
4941 - <xs:attribute name="src" type="xs:string">
4942 - <xs:annotation>
4943 - <xs:appinfo>
4944 - <xse:deprecated ref="Source" />
4945 - </xs:appinfo>
4946 - </xs:annotation>
4947 - </xs:attribute>
4948 - <xs:attribute name="PatchGroup" type="xs:integer">
4949 - <xs:annotation>
4950 - <xs:documentation>
4951 - This attribute must be set for patch-added files. Each patch should be assigned a different patch group number. Patch groups
4952 - numbers must be greater 0 and should be assigned consecutively. For example, the first patch should use PatchGroup='1', the
4953 - second patch will have PatchGroup='2', etc...
4954 - </xs:documentation>
4955 - </xs:annotation>
4956 - </xs:attribute>
4957 - <xs:attribute name="PatchIgnore" type="YesNoTypeUnion">
4958 - <xs:annotation>
4959 - <xs:documentation>Prevents the updating of the file that is in fact changed in the upgraded image relative to the target images.</xs:documentation>
4960 - </xs:annotation>
4961 - </xs:attribute>
4962 - <xs:attribute name="PatchAllowIgnoreOnError" type="YesNoTypeUnion">
4963 - <xs:annotation>
4964 - <xs:documentation>Set to indicate that the patch is non-vital.</xs:documentation>
4965 - </xs:annotation>
4966 - </xs:attribute>
4967 - <xs:attribute name="PatchWholeFile" type="YesNoTypeUnion">
4968 - <xs:annotation>
4969 - <xs:documentation>Set if the entire file should be installed rather than creating a binary patch.</xs:documentation>
4970 - </xs:annotation>
4971 - </xs:attribute>
4972 - <xs:anyAttribute namespace="##other" processContents="lax">
4973 - <xs:annotation>
4974 - <xs:documentation>
4975 - Extensibility point in the WiX XML Schema. Schema extensions can register additional
4976 - attributes at this point in the schema.
4977 - </xs:documentation>
4978 - </xs:annotation>
4979 - </xs:anyAttribute>
4980 - </xs:complexType>
4981 - </xs:element>
4982 - <xs:element name="MultiStringValue">
4983 - <xs:annotation>
4984 - <xs:documentation>
4985 - Use several of these elements to specify each registry value in a multiString registry value. This element
4986 - cannot be used if the Value attribute is specified unless the Type attribute is set to 'multiString'. The
4987 - values should go in the text area of the MultiStringValue element.
4988 - </xs:documentation>
4989 - <xs:appinfo>
4990 - <xse:msiRef table="Registry" href="http://msdn.microsoft.com/library/aa371168.aspx" />
4991 - </xs:appinfo>
4992 - </xs:annotation>
4993 - </xs:element>
4994 - <xs:element name="RegistryKey">
4995 - <xs:annotation>
4996 - <xs:documentation>
4997 - Used for organization of child RegistryValue elements or to create a registry key
4998 - (and optionally remove it during uninstallation).
4999 - </xs:documentation>

This file is too large to show in full.

src/WixToolset.Data/Xsd/wixloc.xsd deleted
-134
@@ -1,134 +0,0 @@
1 -<?xml version="1.0" encoding="utf-8"?>
2 -<!-- Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. -->
3 -
4 -
5 -<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
6 - xmlns:xse=" http://wixtoolset.org/schemas/XmlSchemaExtension"
7 - xmlns:html="http://www.w3.org/1999/xhtml"
8 - targetNamespace="http://wixtoolset.org/schemas/v4/wxl"
9 - xmlns="http://wixtoolset.org/schemas/v4/wxl">
10 - <xs:annotation>
11 - <xs:documentation>
12 - Schema for describing WiX Localization files (.wxl).
13 - </xs:documentation>
14 - </xs:annotation>
15 -
16 - <xs:element name="WixLocalization">
17 - <xs:annotation>
18 - <xs:appinfo>
19 - <xse:remarks>
20 - <html:p>You can specify any valid Windows code page by integer like 1252, or by web name like Windows-1252 or iso-8859-1. See <a href="~/overview/codepage.html">Code Pages</a> for more information.</html:p>
21 - </xse:remarks>
22 - <xse:howtoRef href="ui_and_localization/build_a_localized_version.html">How To: Build a localized version of your installer</xse:howtoRef>
23 - <xse:howtoRef href="ui_and_localization/make_installer_localizable.html">How To: Make your installer localizable</xse:howtoRef>
24 - </xs:appinfo>
25 - </xs:annotation>
26 - <xs:complexType>
27 - <xs:choice minOccurs="0" maxOccurs="unbounded">
28 - <xs:element ref="String" />
29 - <xs:element ref="UI" />
30 - </xs:choice>
31 - <xs:attribute name="Codepage" type="xs:string">
32 - <xs:annotation>
33 - <xs:documentation>The code page integer value or web name for the resulting database. You can also specify -1 which will not reset the database code page. See remarks for more information.</xs:documentation>
34 - </xs:annotation>
35 - </xs:attribute>
36 - <xs:attribute name="Culture" type="xs:string">
37 - <xs:annotation>
38 - <xs:documentation>Culture of the localization strings.</xs:documentation>
39 - </xs:annotation>
40 - </xs:attribute>
41 - <xs:attribute name="Language" type="xs:integer">
42 - <xs:annotation>
43 - <xs:documentation>The decimal language ID (LCID) for the culture.</xs:documentation>
44 - </xs:annotation>
45 - </xs:attribute>
46 - </xs:complexType>
47 - </xs:element>
48 -
49 - <xs:element name="String">
50 - <xs:annotation>
51 - <xs:appinfo>
52 - <xse:howtoRef href="ui_and_localization/build_a_localized_version.html">How To: Build a localized version of your installer</xse:howtoRef>
53 - <xse:howtoRef href="ui_and_localization/make_installer_localizable.html">How To: Make your installer localizable</xse:howtoRef>
54 - </xs:appinfo>
55 - </xs:annotation>
56 - <xs:complexType mixed="true">
57 - <xs:attribute name="Id" type="xs:string" use="required">
58 - <xs:annotation>
59 - <xs:documentation>Identity of the resource.</xs:documentation>
60 - </xs:annotation>
61 - </xs:attribute>
62 - <xs:attribute name="Overridable" type="LocalizationYesNoType">
63 - <xs:annotation>
64 - <xs:documentation>Determines if the localized string may be overridden.</xs:documentation>
65 - </xs:annotation>
66 - </xs:attribute>
67 - <xs:attribute name="Localizable" type="LocalizationYesNoType">
68 - <xs:annotation>
69 - <xs:documentation>Indicates whether the string is localizable text or a non-localizable string that must be unique per locale. No WiX tools are affected by the value of this attribute; it used as documentation for localizers to ignore things like GUIDs or identifiers that look like text.</xs:documentation>
70 - </xs:annotation>
71 - </xs:attribute>
72 - </xs:complexType>
73 - </xs:element>
74 -
75 - <xs:element name="UI">
76 - <xs:annotation>
77 - <xs:documentation>Allows a localization to override the position, size, and text of dialogs and controls. Override the text by specifying the replacement text in the inner text of the UI element.</xs:documentation>
78 - </xs:annotation>
79 - <xs:complexType mixed="true">
80 - <xs:attribute name="Dialog" type="xs:string">
81 - <xs:annotation>
82 - <xs:documentation>Identifies the dialog to localize or the dialog that a control to localize is in.</xs:documentation>
83 - </xs:annotation>
84 - </xs:attribute>
85 - <xs:attribute name="Control" type="xs:string">
86 - <xs:annotation>
87 - <xs:documentation>Combined with the Dialog attribute, identifies the control to localize.</xs:documentation>
88 - </xs:annotation>
89 - </xs:attribute>
90 - <xs:attribute name="X" type="xs:integer">
91 - <xs:annotation>
92 - <xs:documentation>For a dialog, overrides the authored horizontal centering. For a control, overrides the authored horizontal coordinate of the upper-left corner of the rectangular boundary. This must be a non-negative number.</xs:documentation>
93 - </xs:annotation>
94 - </xs:attribute>
95 - <xs:attribute name="Y" type="xs:integer">
96 - <xs:annotation>
97 - <xs:documentation>For a dialog, overrides the authored vertical centering. For a control, overrides the authored vertical coordinate of the upper-left corner of the rectangular boundary of the control. This must be a non-negative number.</xs:documentation>
98 - </xs:annotation>
99 - </xs:attribute>
100 - <xs:attribute name="Width" type="xs:integer">
101 - <xs:annotation>
102 - <xs:documentation>For a dialog, overrides the authored width in dialog units. For a control, overrides the authored width of the rectangular boundary of the control. This must be a non-negative number.</xs:documentation>
103 - </xs:annotation>
104 - </xs:attribute>
105 - <xs:attribute name="Height" type="xs:integer">
106 - <xs:annotation>
107 - <xs:documentation>For a dialog, overrides the authored height in dialog units. For a control, overrides the authored height of the rectangular boundary of the control. This must be a non-negative number.</xs:documentation>
108 - </xs:annotation>
109 - </xs:attribute>
110 - <xs:attribute name="RightToLeft" type="LocalizationYesNoType">
111 - <xs:annotation>
112 - <xs:documentation>Set this attribute to "yes" to cause the Control to display from right to left. Not valid for a dialog.</xs:documentation>
113 - </xs:annotation>
114 - </xs:attribute>
115 - <xs:attribute name="RightAligned" type="LocalizationYesNoType">
116 - <xs:annotation>
117 - <xs:documentation>Set this attribute to "yes" to cause the Control to be right aligned. Not valid for a dialog.</xs:documentation>
118 - </xs:annotation>
119 - </xs:attribute>
120 - <xs:attribute name="LeftScroll" type="LocalizationYesNoType">
121 - <xs:annotation>
122 - <xs:documentation>Set this attribute to "yes" to cause the scroll bar to display on the left side of the Control. Not valid for a dialog.</xs:documentation>
123 - </xs:annotation>
124 - </xs:attribute>
125 - </xs:complexType>
126 - </xs:element>
127 -
128 - <xs:simpleType name="LocalizationYesNoType">
129 - <xs:restriction base="xs:NMTOKEN">
130 - <xs:enumeration value="no" />
131 - <xs:enumeration value="yes" />
132 - </xs:restriction>
133 - </xs:simpleType>
134 -</xs:schema>
src/test/WixToolsetTest.Data/SerializeFixture.cs
+5 -5
@@ -23,7 +23,7 @@ namespace WixToolsetTest.Data
23 {
24 ComponentId = new Guid(1, 0, 0, new byte[8]).ToString("B"),
25 Directory_ = "TestFolder",
26 - Attributes = 2,
26 + Location = ComponentLocation.Either,
27 });
28
29 var intermediate = new Intermediate("TestIntermediate", new[] { section }, null, null);
@@ -38,7 +38,7 @@ namespace WixToolsetTest.Data
38 Assert.Equal("TestComponent", tuple.Id.Id);
39 Assert.Equal(AccessModifier.Public, tuple.Id.Access);
40 Assert.Equal("TestFolder", tuple.Directory_);
41 - Assert.Equal(2, tuple.Attributes);
41 + Assert.Equal(ComponentLocation.Either, tuple.Location);
42 }
43
44 [Fact]
@@ -178,8 +178,8 @@ namespace WixToolsetTest.Data
178
179 var controls = new[]
180 {
181 - new LocalizedControl("TestDlg1", "TestControl1", 10, 10, 100, 100, 0, null),
182 - new LocalizedControl("TestDlg1", "TestControl2", 100, 90, 50, 70, 0, "localized"),
181 + new LocalizedControl("TestDlg1", "TestControl1", 10, 10, 100, 100, false, false, false, null),
182 + new LocalizedControl("TestDlg1", "TestControl2", 100, 90, 50, 70, false, false, false, "localized"),
183 };
184
185 var localizations = new[]
@@ -193,7 +193,7 @@ namespace WixToolsetTest.Data
193 {
194 ComponentId = new Guid(1, 0, 0, new byte[8]).ToString("B"),
195 Directory_ = "TestFolder",
196 - Attributes = 2,
196 + Location = ComponentLocation.Either,
197 });
198
199 var intermediate = new Intermediate("TestIntermediate", new[] { section }, localizations.ToDictionary(l => l.Culture), null);
src/test/WixToolsetTest.Data/WixToolsetTest.Data.csproj
+2 -2
@@ -12,8 +12,8 @@
12
13 <ItemGroup>
14 <PackageReference Include="Microsoft.NET.Test.Sdk" Version="15.8.0" />
15 - <PackageReference Include="xunit" Version="2.4.0" />
16 - <PackageReference Include="xunit.runner.visualstudio" Version="2.4.0" />
15 + <PackageReference Include="xunit" Version="2.4.1" />
16 + <PackageReference Include="xunit.runner.visualstudio" Version="2.4.1" PrivateAssets="All" />
17 </ItemGroup>
18
19 </Project>