aboutsummaryrefslogtreecommitdiff
path: root/src/WixToolset.Data/Msi/MsiInterop.cs
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--src/WixToolset.Data/Msi/MsiInterop.cs313
1 files changed, 313 insertions, 0 deletions
diff --git a/src/WixToolset.Data/Msi/MsiInterop.cs b/src/WixToolset.Data/Msi/MsiInterop.cs
new file mode 100644
index 00000000..1a8ebbf0
--- /dev/null
+++ b/src/WixToolset.Data/Msi/MsiInterop.cs
@@ -0,0 +1,313 @@
1// Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information.
2
3namespace WixToolset.Data.Msi
4{
5 class MsiInterop
6 {
7 // Patching constants
8 internal const int MsiMaxStreamNameLength = 62; // http://msdn2.microsoft.com/library/aa370551.aspx
9
10 // Component.Attributes
11 internal const int MsidbComponentAttributesLocalOnly = 0;
12 internal const int MsidbComponentAttributesSourceOnly = 1;
13 internal const int MsidbComponentAttributesOptional = 2;
14 internal const int MsidbComponentAttributesRegistryKeyPath = 4;
15 internal const int MsidbComponentAttributesSharedDllRefCount = 8;
16 internal const int MsidbComponentAttributesPermanent = 16;
17 internal const int MsidbComponentAttributesODBCDataSource = 32;
18 internal const int MsidbComponentAttributesTransitive = 64;
19 internal const int MsidbComponentAttributesNeverOverwrite = 128;
20 internal const int MsidbComponentAttributes64bit = 256;
21 internal const int MsidbComponentAttributesDisableRegistryReflection = 512;
22 internal const int MsidbComponentAttributesUninstallOnSupersedence = 1024;
23 internal 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 internal const int MsidbFileAttributesReadOnly = 1;
145 internal const int MsidbFileAttributesHidden = 2;
146 internal const int MsidbFileAttributesSystem = 4;
147 internal const int MsidbFileAttributesVital = 512;
148 internal const int MsidbFileAttributesChecksum = 1024;
149 internal const int MsidbFileAttributesPatchAdded = 4096;
150 internal const int MsidbFileAttributesNoncompressed = 8192;
151 internal 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}