xref: /reactos/sdk/include/psdk/msi.h (revision c2c66aff)
1 /*
2  * Copyright (C) 2002,2003 Mike McCormack
3  *
4  * This library is free software; you can redistribute it and/or
5  * modify it under the terms of the GNU Lesser General Public
6  * License as published by the Free Software Foundation; either
7  * version 2.1 of the License, or (at your option) any later version.
8  *
9  * This library is distributed in the hope that it will be useful,
10  * but WITHOUT ANY WARRANTY; without even the implied warranty of
11  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
12  * Lesser General Public License for more details.
13  *
14  * You should have received a copy of the GNU Lesser General Public
15  * License along with this library; if not, write to the Free Software
16  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
17  */
18 
19 #ifndef __WINE_MSI_H
20 #define __WINE_MSI_H
21 
22 #ifndef _MSI_NO_CRYPTO
23 #include <wincrypt.h>
24 #endif
25 
26 #define MAX_GUID_CHARS 38
27 
28 #ifdef __cplusplus
29 extern "C" {
30 #endif
31 
32 typedef ULONG MSIHANDLE;
33 
34 typedef enum tagINSTALLSTATE
35 {
36     INSTALLSTATE_NOTUSED = -7,
37     INSTALLSTATE_BADCONFIG = -6,
38     INSTALLSTATE_INCOMPLETE = -5,
39     INSTALLSTATE_SOURCEABSENT = -4,
40     INSTALLSTATE_MOREDATA = -3,
41     INSTALLSTATE_INVALIDARG = -2,
42     INSTALLSTATE_UNKNOWN = -1,
43     INSTALLSTATE_BROKEN = 0,
44     INSTALLSTATE_ADVERTISED = 1,
45     INSTALLSTATE_ABSENT = 2,
46     INSTALLSTATE_LOCAL = 3,
47     INSTALLSTATE_SOURCE = 4,
48     INSTALLSTATE_DEFAULT = 5
49 } INSTALLSTATE;
50 
51 typedef enum tagMSIPATCHSTATE
52 {
53     MSIPATCHSTATE_INVALID = 0,
54     MSIPATCHSTATE_APPLIED = 1,
55     MSIPATCHSTATE_SUPERSEDED = 2,
56     MSIPATCHSTATE_OBSOLETED = 4,
57     MSIPATCHSTATE_REGISTERED = 8,
58     MSIPATCHSTATE_ALL = (MSIPATCHSTATE_APPLIED | MSIPATCHSTATE_SUPERSEDED |
59                          MSIPATCHSTATE_OBSOLETED | MSIPATCHSTATE_REGISTERED)
60 } MSIPATCHSTATE;
61 
62 typedef enum tagINSTALLUILEVEL
63 {
64     INSTALLUILEVEL_NOCHANGE = 0,
65     INSTALLUILEVEL_DEFAULT = 1,
66     INSTALLUILEVEL_NONE = 2,
67     INSTALLUILEVEL_BASIC = 3,
68     INSTALLUILEVEL_REDUCED = 4,
69     INSTALLUILEVEL_FULL = 5,
70     INSTALLUILEVEL_HIDECANCEL = 0x20,
71     INSTALLUILEVEL_PROGRESSONLY = 0x40,
72     INSTALLUILEVEL_ENDDIALOG = 0x80,
73     INSTALLUILEVEL_SOURCERESONLY = 0x100
74 } INSTALLUILEVEL;
75 
76 typedef enum tagUSERINFOSTATE
77 {
78     USERINFOSTATE_MOREDATA = -3,
79     USERINFOSTATE_INVALIDARG = -2,
80     USERINFOSTATE_UNKNOWN = -1,
81     USERINFOSTATE_ABSENT = 0,
82     USERINFOSTATE_PRESENT = 1,
83 } USERINFOSTATE;
84 
85 typedef enum tagINSTALLLEVEL
86 {
87     INSTALLLEVEL_DEFAULT = 0,
88     INSTALLLEVEL_MINIMUM = 1,
89     INSTALLLEVEL_MAXIMUM = 0xFFFF
90 } INSTALLLEVEL;
91 
92 typedef enum tagINSTALLMESSAGE
93 {
94     INSTALLMESSAGE_FATALEXIT = 0,
95     INSTALLMESSAGE_ERROR = 0x01000000,
96     INSTALLMESSAGE_WARNING = 0x02000000,
97     INSTALLMESSAGE_USER = 0x03000000,
98     INSTALLMESSAGE_INFO = 0x04000000,
99     INSTALLMESSAGE_FILESINUSE = 0x05000000,
100     INSTALLMESSAGE_RESOLVESOURCE = 0x06000000,
101     INSTALLMESSAGE_OUTOFDISKSPACE = 0x07000000,
102     INSTALLMESSAGE_ACTIONSTART = 0x08000000,
103     INSTALLMESSAGE_ACTIONDATA = 0x09000000,
104     INSTALLMESSAGE_PROGRESS = 0x0a000000,
105     INSTALLMESSAGE_COMMONDATA = 0x0b000000,
106     INSTALLMESSAGE_INITIALIZE = 0x0c000000,
107     INSTALLMESSAGE_TERMINATE = 0x0d000000,
108     INSTALLMESSAGE_SHOWDIALOG = 0x0e000000
109 } INSTALLMESSAGE;
110 
111 typedef enum tagREINSTALLMODE
112 {
113     REINSTALLMODE_REPAIR = 0x00000001,
114     REINSTALLMODE_FILEMISSING = 0x00000002,
115     REINSTALLMODE_FILEOLDERVERSION = 0x00000004,
116     REINSTALLMODE_FILEEQUALVERSION = 0x00000008,
117     REINSTALLMODE_FILEEXACT = 0x00000010,
118     REINSTALLMODE_FILEVERIFY = 0x00000020,
119     REINSTALLMODE_FILEREPLACE = 0x00000040,
120     REINSTALLMODE_MACHINEDATA = 0x00000080,
121     REINSTALLMODE_USERDATA = 0x00000100,
122     REINSTALLMODE_SHORTCUT = 0x00000200,
123     REINSTALLMODE_PACKAGE = 0x00000400
124 } REINSTALLMODE;
125 
126 typedef enum tagINSTALLLOGMODE
127 {
128     INSTALLLOGMODE_FATALEXIT      = (1 << (INSTALLMESSAGE_FATALEXIT >> 24)),
129     INSTALLLOGMODE_ERROR          = (1 << (INSTALLMESSAGE_ERROR >> 24)),
130     INSTALLLOGMODE_WARNING        = (1 << (INSTALLMESSAGE_WARNING >> 24)),
131     INSTALLLOGMODE_USER           = (1 << (INSTALLMESSAGE_USER >> 24)),
132     INSTALLLOGMODE_INFO           = (1 << (INSTALLMESSAGE_INFO >> 24)),
133     INSTALLLOGMODE_RESOLVESOURCE  = (1 << (INSTALLMESSAGE_RESOLVESOURCE >> 24)),
134     INSTALLLOGMODE_OUTOFDISKSPACE = (1 << (INSTALLMESSAGE_OUTOFDISKSPACE >> 24)),
135     INSTALLLOGMODE_ACTIONSTART    = (1 << (INSTALLMESSAGE_ACTIONSTART >> 24)),
136     INSTALLLOGMODE_ACTIONDATA     = (1 << (INSTALLMESSAGE_ACTIONDATA >> 24)),
137     INSTALLLOGMODE_COMMONDATA     = (1 << (INSTALLMESSAGE_COMMONDATA >> 24)),
138     INSTALLLOGMODE_PROPERTYDUMP   = (1 << (INSTALLMESSAGE_PROGRESS >> 24)),
139     INSTALLLOGMODE_VERBOSE        = (1 << (INSTALLMESSAGE_INITIALIZE >> 24)),
140     INSTALLLOGMODE_EXTRADEBUG     = (1 << (INSTALLMESSAGE_TERMINATE >> 24)),
141     INSTALLLOGMODE_PROGRESS       = (1 << (INSTALLMESSAGE_PROGRESS >> 24)),
142     INSTALLLOGMODE_INITIALIZE     = (1 << (INSTALLMESSAGE_INITIALIZE >> 24)),
143     INSTALLLOGMODE_TERMINATE      = (1 << (INSTALLMESSAGE_TERMINATE >> 24)),
144     INSTALLLOGMODE_SHOWDIALOG     = (1 << (INSTALLMESSAGE_SHOWDIALOG >> 24))
145 } INSTALLLOGMODE;
146 
147 typedef enum tagINSTALLLOGATTRIBUTES
148 {
149     INSTALLLOGATTRIBUTES_APPEND = 0x00000001,
150     INSTALLLOGATTRIBUTES_FLUSHEACHLINE = 0x00000002
151 } INSTALLLOGATTRIBUTES;
152 
153 typedef enum tagINSTALLMODE
154 {
155     INSTALLMODE_NODETECTION_ANY     = -4,
156     INSTALLMODE_NOSOURCERESOLUTION  = -3,
157     INSTALLMODE_NODETECTION         = -2,
158     INSTALLMODE_EXISTING            = -1,
159     INSTALLMODE_DEFAULT             = 0
160 } INSTALLMODE;
161 
162 typedef enum tagADVERTISEFLAGS
163 {
164     ADVERTISEFLAGS_MACHINEASSIGN = 0,
165     ADVERTISEFLAGS_USERASSIGN = 1
166 } ADVERTISEFLAGS;
167 
168 typedef enum tagSCRIPTFLAGS
169 {
170     SCRIPTFLAGS_CACHEINFO = 1,
171     SCRIPTFLAGS_SHORTCUTS = 4,
172     SCRIPTFLAGS_MACHINEASSIGN = 8,
173     SCRIPTFLAGS_REGDATA_APPINFO = 0x10,
174     SCRIPTFLAGS_REGDATA_CNFGINFO = 0x20,
175     SCRIPTFLAGS_VALIDATE_TRANSFORMS_LIST = 0x40,
176     SCRIPTFLAGS_REGDATA_CLASSINFO = 0x80,
177     SCRIPTFLAGS_REGDATA_EXTENSIONINFO = 0x100,
178 } SCRIPTFLAGS;
179 
180 typedef enum tagINSTALLTYPE
181 {
182     INSTALLTYPE_DEFAULT = 0,
183     INSTALLTYPE_NETWORK_IMAGE = 1,
184     INSTALLTYPE_SINGLE_INSTANCE = 2,
185 } INSTALLTYPE;
186 
187 typedef enum tagMSIINSTALLCONTEXT
188 {
189     MSIINSTALLCONTEXT_FIRSTVISIBLE  =   0,
190     MSIINSTALLCONTEXT_NONE          =   0,
191     MSIINSTALLCONTEXT_USERMANAGED   =   1,
192     MSIINSTALLCONTEXT_USERUNMANAGED =   2,
193     MSIINSTALLCONTEXT_MACHINE       =   4,
194     MSIINSTALLCONTEXT_ALL           = (MSIINSTALLCONTEXT_USERMANAGED | MSIINSTALLCONTEXT_USERUNMANAGED | MSIINSTALLCONTEXT_MACHINE),
195     MSIINSTALLCONTEXT_ALLUSERMANAGED=   8,
196 } MSIINSTALLCONTEXT;
197 
198 typedef enum tagMSISOURCETYPE
199 {
200     MSISOURCETYPE_UNKNOWN = 0x00000000L,
201     MSISOURCETYPE_NETWORK = 0x00000001L,
202     MSISOURCETYPE_URL     = 0x00000002L,
203     MSISOURCETYPE_MEDIA   = 0x00000004L
204 } MSISOURCETYPE;
205 
206 typedef enum tagMSICODE
207 {
208     MSICODE_PRODUCT = 0x00000000L,
209     MSICODE_PATCH   = 0x40000000L
210 } MSICODE;
211 
212 typedef enum tagINSTALLFEATUREATTRIBUTE
213 {
214     INSTALLFEATUREATTRIBUTE_FAVORLOCAL             = 1 << 0,
215     INSTALLFEATUREATTRIBUTE_FAVORSOURCE            = 1 << 1,
216     INSTALLFEATUREATTRIBUTE_FOLLOWPARENT           = 1 << 2,
217     INSTALLFEATUREATTRIBUTE_FAVORADVERTISE         = 1 << 3,
218     INSTALLFEATUREATTRIBUTE_DISALLOWADVERTISE      = 1 << 4,
219     INSTALLFEATUREATTRIBUTE_NOUNSUPPORTEDADVERTISE = 1 << 5
220 } INSTALLFEATUREATTRIBUTE;
221 
222 typedef struct _MSIFILEHASHINFO {
223     ULONG dwFileHashInfoSize;
224     ULONG dwData[4];
225 } MSIFILEHASHINFO, *PMSIFILEHASHINFO;
226 
227 typedef enum tagMSIPATCHDATATYPE
228 {
229     MSIPATCH_DATATYPE_PATCHFILE = 0,
230     MSIPATCH_DATATYPE_XMLPATH = 1,
231     MSIPATCH_DATATYPE_XMLBLOB = 2,
232 } MSIPATCHDATATYPE, *PMSIPATCHDATATYPE;
233 
234 typedef struct tagMSIPATCHSEQUENCEINFOA
235 {
236     LPCSTR szPatchData;
237     MSIPATCHDATATYPE ePatchDataType;
238     DWORD dwOrder;
239     UINT uStatus;
240 } MSIPATCHSEQUENCEINFOA, *PMSIPATCHSEQUENCEINFOA;
241 
242 typedef struct tagMSIPATCHSEQUENCEINFOW
243 {
244     LPCWSTR szPatchData;
245     MSIPATCHDATATYPE ePatchDataType;
246     DWORD dwOrder;
247     UINT uStatus;
248 } MSIPATCHSEQUENCEINFOW, *PMSIPATCHSEQUENCEINFOW;
249 
250 #define MAX_FEATURE_CHARS 38
251 
252 #define ERROR_PATCH_TARGET_NOT_FOUND        1642
253 
254 /* Strings defined in msi.h */
255 /* Advertised Information */
256 
257 #define INSTALLPROPERTY_PACKAGENAMEA "PackageName"
258 static const WCHAR INSTALLPROPERTY_PACKAGENAMEW[] = {'P','a','c','k','a','g','e','N','a','m','e',0};
259 #define INSTALLPROPERTY_PACKAGENAME WINELIB_NAME_AW(INSTALLPROPERTY_PACKAGENAME)
260 
261 #define INSTALLPROPERTY_TRANSFORMSA "Transforms"
262 static const WCHAR INSTALLPROPERTY_TRANSFORMSW[] = {'T','r','a','n','s','f','o','r','m','s',0};
263 #define INSTALLPROPERTY_TRANSFORMS WINELIB_NAME_AW(INSTALLPROPERTY_TRANSFORMS)
264 
265 #define INSTALLPROPERTY_LANGUAGEA "Language"
266 static const WCHAR INSTALLPROPERTY_LANGUAGEW[] = {'L','a','n','g','u','a','g','e',0};
267 #define INSTALLPROPERTY_LANGUAGE WINELIB_NAME_AW(INSTALLPROPERTY_LANGUAGE)
268 
269 #define INSTALLPROPERTY_PRODUCTNAMEA "ProductName"
270 static const WCHAR INSTALLPROPERTY_PRODUCTNAMEW[] = {'P','r','o','d','u','c','t','N','a','m','e',0};
271 #define INSTALLPROPERTY_PRODUCTNAME WINELIB_NAME_AW(INSTALLPROPERTY_PRODUCTNAME)
272 
273 #define INSTALLPROPERTY_ASSIGNMENTTYPEA "AssignmentType"
274 static const WCHAR INSTALLPROPERTY_ASSIGNMENTTYPEW[] = {'A','s','s','i','g','n','m','e','n','t','T','y','p','e',0};
275 #define INSTALLPROPERTY_ASSIGNMENTTYPE WINELIB_NAME_AW(INSTALLPROPERTY_ASSIGNMENTTYPE)
276 
277 #define INSTALLPROPERTY_PACKAGECODEA "PackageCode"
278 static const WCHAR INSTALLPROPERTY_PACKAGECODEW[] = {'P','a','c','k','a','g','e','C','o','d','e',0};
279 #define INSTALLPROPERTY_PACKAGECODE WINELIB_NAME_AW(INSTALLPROPERTY_PACKAGECODE)
280 
281 #define INSTALLPROPERTY_VERSIONA "Version"
282 static const WCHAR INSTALLPROPERTY_VERSIONW[]= {'V','e','r','s','i','o','n',0};
283 #define INSTALLPROPERTY_VERSION WINELIB_NAME_AW(INSTALLPROPERTY_VERSION)
284 
285 /* MSI version 1.1 and above */
286 
287 #define INSTALLPROPERTY_PRODUCTICONA "ProductIcon"
288 static const WCHAR INSTALLPROPERTY_PRODUCTICONW[]  = {'P','r','o','d','u','c','t','I','c','o','n',0};
289 #define INSTALLPROPERTY_PRODUCTICON WINELIB_NAME_AW(INSTALLPROPERTY_PRODUCTICON)
290 
291 /* MSI version 1.5 and above */
292 #define INSTALLPROPERTY_INSTANCETYPEA "InstanceType"
293 static const WCHAR INSTALLPROPERTY_INSTANCETYPEW[] = {'I','n','s','t','a','n','c','e','T','y','p','e',0};
294 #define INSTALLPROPERTY_INSTANCETYPE WINELIB_NAME_AW(INSTALLPROPERTY_INSTANCETYPE)
295 
296 /* MSI version 3 and above */
297 #define INSTALLPROPERTY_AUTHORIZED_LUA_APPA "AuthorizedLUAApp"
298 static const WCHAR INSTALLPROPERTY_AUTHORIZED_LUA_APPW[] = {'A','u','t','h','o','r','i','z','e','d','L','U','A','A','p','p',0};
299 #define INSTALLPROPERTY_AUTHORIZED_LUA_APP WINELIB_NAME_AW(INSTALLPROPERTY_AUTHORIZED_LUA_APP)
300 
301 
302 /* Installed Information */
303 #define INSTALLPROPERTY_INSTALLEDPRODUCTNAMEA "InstalledProductName"
304 static const WCHAR INSTALLPROPERTY_INSTALLEDPRODUCTNAMEW[] = {'I','n','s','t','a','l','l','e','d','P','r','o','d','u','c','t','N','a','m','e',0};
305 #define INSTALLPROPERTY_INSTALLEDPRODUCTNAME WINELIB_NAME_AW(INSTALLPROPERTY_INSTALLEDPRODUCTNAME)
306 
307 #define INSTALLPROPERTY_VERSIONSTRINGA "VersionString"
308 static const WCHAR INSTALLPROPERTY_VERSIONSTRINGW[] = {'V','e','r','s','i','o','n','S','t','r','i','n','g',0};
309 #define INSTALLPROPERTY_VERSIONSTRING WINELIB_NAME_AW(INSTALLPROPERTY_VERSIONSTRING)
310 
311 #define INSTALLPROPERTY_HELPLINKA "HelpLink"
312 static const WCHAR INSTALLPROPERTY_HELPLINKW[] = {'H','e','l','p','L','i','n','k',0};
313 #define INSTALLPROPERTY_HELPLINK WINELIB_NAME_AW(INSTALLPROPERTY_HELPLINK)
314 
315 #define INSTALLPROPERTY_HELPTELEPHONEA "HelpTelephone"
316 static const WCHAR INSTALLPROPERTY_HELPTELEPHONEW[] = {'H','e','l','p','T','e','l','e','p','h','o','n','e',0};
317 #define INSTALLPROPERTY_HELPTELEPHONE WINELIB_NAME_AW(INSTALLPROPERTY_HELPTELEPHONE)
318 
319 #define INSTALLPROPERTY_INSTALLLOCATIONA "InstallLocation"
320 static const WCHAR INSTALLPROPERTY_INSTALLLOCATIONW[] = {'I','n','s','t','a','l','l','L','o','c','a','t','i','o','n',0};
321 #define INSTALLPROPERTY_INSTALLLOCATION WINELIB_NAME_AW(INSTALLPROPERTY_INSTALLLOCATION)
322 
323 #define INSTALLPROPERTY_INSTALLSOURCEA "InstallSource"
324 static const WCHAR INSTALLPROPERTY_INSTALLSOURCEW[] = {'I','n','s','t','a','l','l','S','o','u','r','c','e',0};
325 #define INSTALLPROPERTY_INSTALLSOURCE WINELIB_NAME_AW(INSTALLPROPERTY_INSTALLSOURCE)
326 
327 #define INSTALLPROPERTY_INSTALLDATEA "InstallDate"
328 static const WCHAR INSTALLPROPERTY_INSTALLDATEW[] = {'I','n','s','t','a','l','l','D','a','t','e',0};
329 #define INSTALLPROPERTY_INSTALLDATE WINELIB_NAME_AW(INSTALLPROPERTY_INSTALLDATE)
330 
331 #define INSTALLPROPERTY_PUBLISHERA "Publisher"
332 static const WCHAR INSTALLPROPERTY_PUBLISHERW[] ={'P','u','b','l','i','s','h','e','r',0};
333 #define INSTALLPROPERTY_PUBLISHER WINELIB_NAME_AW(INSTALLPROPERTY_PUBLISHER)
334 
335 #define INSTALLPROPERTY_LOCALPACKAGEA "LocalPackage"
336 static const WCHAR INSTALLPROPERTY_LOCALPACKAGEW[] = {'L','o','c','a','l','P','a','c','k','a','g','e',0};
337 #define INSTALLPROPERTY_LOCALPACKAGE WINELIB_NAME_AW(INSTALLPROPERTY_LOCALPACKAGE)
338 
339 #define INSTALLPROPERTY_URLINFOABOUTA "URLInfoAbout"
340 static const WCHAR INSTALLPROPERTY_URLINFOABOUTW[] = {'U','R','L','I','n','f','o','A','b','o','u','t',0};
341 #define INSTALLPROPERTY_URLINFOABOUT WINELIB_NAME_AW(INSTALLPROPERTY_URLINFOABOUT)
342 
343 #define INSTALLPROPERTY_URLUPDATEINFOA "URLUpdateInfo"
344 static const WCHAR INSTALLPROPERTY_URLUPDATEINFOW[] = {'U','R','L','U','p','d','a','t','e','I','n','f','o',0};
345 #define INSTALLPROPERTY_URLUPDATEINFO WINELIB_NAME_AW(INSTALLPROPERTY_URLUPDATEINFO)
346 
347 #define INSTALLPROPERTY_VERSIONMINORA "VersionMinor"
348 static const WCHAR INSTALLPROPERTY_VERSIONMINORW[] = {'V','e','r','s','i','o','n','M','i','n','o','r',0};
349 #define INSTALLPROPERTY_VERSIONMINOR WINELIB_NAME_AW(INSTALLPROPERTY_VERSIONMINOR)
350 
351 #define INSTALLPROPERTY_VERSIONMAJORA "VersionMajor"
352 static const WCHAR INSTALLPROPERTY_VERSIONMAJORW[] = {'V','e','r','s','i','o','n','M','a','j','o','r',0};
353 #define INSTALLPROPERTY_VERSIONMAJOR WINELIB_NAME_AW(INSTALLPROPERTY_VERSIONMAJOR)
354 
355 #define INSTALLPROPERTY_PRODUCTIDA "ProductID"
356 static const WCHAR INSTALLPROPERTY_PRODUCTIDW[] = {'P','r','o','d','u','c','t','I','D',0};
357 #define INSTALLPROPERTY_PRODUCTID WINELIB_NAME_AW(INSTALLPROPERTY_PRODUCTID)
358 
359 #define INSTALLPROPERTY_REGCOMPANYA "RegCompany"
360 static const WCHAR INSTALLPROPERTY_REGCOMPANYW[] = {'R','e','g','C','o','m','p','a','n','y',0};
361 #define INSTALLPROPERTY_REGCOMPANY WINELIB_NAME_AW(INSTALLPROPERTY_REGCOMPANY)
362 
363 #define INSTALLPROPERTY_REGOWNERA "RegOwner"
364 static const WCHAR INSTALLPROPERTY_REGOWNERW[] = {'R','e','g','O','w','n','e','r',0};
365 #define INSTALLPROPERTY_REGOWNER WINELIB_NAME_AW(INSTALLPROPERTY_REGOWNER)
366 
367 /* MSI Version 3.0 and greater */
368 #define INSTALLPROPERTY_UNINSTALLABLEA "Uninstallable"
369 static const WCHAR INSTALLPROPERTY_UNINSTALLABLEW[] = {'U','n','i','n','s','t','a','l','l','a','b','l','e',0};
370 #define INSTALLPROPERTY_UNINSTALLABLE WINELIB_NAME_AW(INSTALLPROPERTY_UNINSTALLABLE)
371 
372 #define INSTALLPROPERTY_PRODUCTSTATEA "State"
373 static const WCHAR INSTALLPROPERTY_PRODUCTSTATEW[] = {'S','t','a','t','e',0};
374 #define INSTALLPROPERTY_PRODUCTSTATE WINELIB_NAME_AW(INSTALLPROPERTY_PRODUCTSTATE)
375 
376 #define INSTALLPROPERTY_PATCHSTATEA "State"
377 static const WCHAR INSTALLPROPERTY_PATCHSTATEW[] ={'S','t','a','t','e',0};
378 #define INSTALLPROPERTY_PATCHSTATE WINELIB_NAME_AW(INSTALLPROPERTY_PATCHSTATE)
379 
380 #define INSTALLPROPERTY_PATCHTYPEA "PatchType"
381 static const WCHAR INSTALLPROPERTY_PATCHTYPEW[] = {'P','a','t','c','h','T','y','p','e',0};
382 #define INSTALLPROPERTY_PATCHTYPE WINELIB_NAME_AW(INSTALLPROPERTY_PATCHTYPE)
383 
384 #define INSTALLPROPERTY_LUAENABLEDA "LUAEnabled"
385 static const WCHAR INSTALLPROPERTY_LUAENABLEDW[] = {'L','U','A','E','n','a','b','l','e','d',0};
386 #define INSTALLPROPERTY_LUAENABLED WINELIB_NAME_AW(INSTALLPROPERTY_LUAENABLED)
387 
388 #define INSTALLPROPERTY_DISPLAYNAMEA "DisplayName"
389 static const WCHAR INSTALLPROPERTY_DISPLAYNAMEW[] = {'D','i','s','p','l','a','y','N','a','m','e',0};
390 #define INSTALLPROPERTY_DISPLAYNAME WINELIB_NAME_AW(INSTALLPROPERTY_DISPLAYNAME)
391 
392 #define INSTALLPROPERTY_MOREINFOURLA "MoreInfoURL"
393 static const WCHAR INSTALLPROPERTY_MOREINFOURLW[] = {'M','o','r','e','I','n','f','o','U','R','L',0};
394 #define INSTALLPROPERTY_MOREINFOURL WINELIB_NAME_AW(INSTALLPROPERTY_MOREINFOURL)
395 
396 /* Source List Info */
397 #define INSTALLPROPERTY_LASTUSEDSOURCEA "LastUsedSource"
398 static const WCHAR INSTALLPROPERTY_LASTUSEDSOURCEW[] = {'L','a','s','t','U','s','e','d','S','o','u','r','c','e',0};
399 #define INSTALLPROPERTY_LASTUSEDSOURCE WINELIB_NAME_AW(INSTALLPROPERTY_LASTUSEDSOURCE)
400 
401 #define INSTALLPROPERTY_LASTUSEDTYPEA "LastUsedType"
402 static const WCHAR INSTALLPROPERTY_LASTUSEDTYPEW[] = {'L','a','s','t','U','s','e','d','T','y','p','e',0};
403 #define INSTALLPROPERTY_LASTUSEDTYPE WINELIB_NAME_AW(INSTALLPROPERTY_LASTUSEDTYPE)
404 
405 #define INSTALLPROPERTY_MEDIAPACKAGEPATHA "MediaPackagePath"
406 static const WCHAR INSTALLPROPERTY_MEDIAPACKAGEPATHW[] = {'M','e','d','i','a','P','a','c','k','a','g','e','P','a','t','h',0};
407 #define INSTALLPROPERTY_MEDIAPACKAGEPATH WINELIB_NAME_AW(INSTALLPROPERTY_MEDIAPACKAGEPATH)
408 
409 #define INSTALLPROPERTY_DISKPROMPTA "DiskPrompt"
410 static const WCHAR INSTALLPROPERTY_DISKPROMPTW[] = {'D','i','s','k','P','r','o','m','p','t',0};
411 #define INSTALLPROPERTY_DISKPROMPT WINELIB_NAME_AW(INSTALLPROPERTY_DISKPROMPT)
412 
413 typedef INT (CALLBACK *INSTALLUI_HANDLERA)(LPVOID, UINT, LPCSTR);
414 typedef INT (CALLBACK *INSTALLUI_HANDLERW)(LPVOID, UINT, LPCWSTR);
415 typedef INT (CALLBACK *INSTALLUI_HANDLER_RECORD)(LPVOID, UINT, MSIHANDLE);
416 typedef INSTALLUI_HANDLER_RECORD* PINSTALLUI_HANDLER_RECORD;
417 
418 UINT
419 WINAPI
420 MsiAdvertiseProductA(
421   _In_ LPCSTR,
422   _In_opt_ LPCSTR,
423   _In_opt_ LPCSTR,
424   _In_ LANGID);
425 
426 UINT
427 WINAPI
428 MsiAdvertiseProductW(
429   _In_ LPCWSTR,
430   _In_opt_ LPCWSTR,
431   _In_opt_ LPCWSTR,
432   _In_ LANGID);
433 
434 #define     MsiAdvertiseProduct WINELIB_NAME_AW(MsiAdvertiseProduct)
435 
436 UINT
437 WINAPI
438 MsiAdvertiseProductExA(
439   _In_ LPCSTR,
440   _In_opt_ LPCSTR,
441   _In_opt_ LPCSTR,
442   _In_ LANGID,
443   _In_ DWORD,
444   _In_ DWORD);
445 
446 UINT
447 WINAPI
448 MsiAdvertiseProductExW(
449   _In_ LPCWSTR,
450   _In_opt_ LPCWSTR,
451   _In_opt_ LPCWSTR,
452   _In_ LANGID,
453   _In_ DWORD,
454   _In_ DWORD);
455 
456 #define     MsiAdvertiseProductEx WINELIB_NAME_AW(MsiAdvertiseProductEx)
457 
458 UINT WINAPI MsiInstallProductA(_In_ LPCSTR, _In_opt_ LPCSTR);
459 UINT WINAPI MsiInstallProductW(_In_ LPCWSTR, _In_opt_ LPCWSTR);
460 #define     MsiInstallProduct WINELIB_NAME_AW(MsiInstallProduct)
461 
462 UINT WINAPI MsiReinstallProductA(_In_ LPCSTR, _In_ DWORD);
463 UINT WINAPI MsiReinstallProductW(_In_ LPCWSTR, _In_ DWORD);
464 #define     MsiReinstallProduct WINELIB_NAME_AW(MsiReinstallProduct)
465 
466 UINT
467 WINAPI
468 MsiApplyPatchA(
469   _In_ LPCSTR,
470   _In_opt_ LPCSTR,
471   _In_ INSTALLTYPE,
472   _In_opt_ LPCSTR);
473 
474 UINT
475 WINAPI
476 MsiApplyPatchW(
477   _In_ LPCWSTR,
478   _In_opt_ LPCWSTR,
479   _In_ INSTALLTYPE,
480   _In_opt_ LPCWSTR);
481 
482 #define     MsiApplyPatch WINELIB_NAME_AW(MsiApplyPatch)
483 
484 UINT WINAPI MsiEnumComponentCostsA(MSIHANDLE, LPCSTR, DWORD, INSTALLSTATE, LPSTR, LPDWORD, LPINT, LPINT);
485 UINT WINAPI MsiEnumComponentCostsW(MSIHANDLE, LPCWSTR, DWORD, INSTALLSTATE, LPWSTR, LPDWORD, LPINT, LPINT);
486 #define     MsiEnumComponentCosts WINELIB_NAME_AW(MsiEnumComponentCosts)
487 
488 UINT
489 WINAPI
490 MsiEnumProductsA(
491   _In_ DWORD,
492   _Out_writes_(MAX_GUID_CHARS + 1) LPSTR);
493 
494 UINT
495 WINAPI
496 MsiEnumProductsW(
497   _In_ DWORD,
498   _Out_writes_(MAX_GUID_CHARS + 1) LPWSTR);
499 
500 #define     MsiEnumProducts WINELIB_NAME_AW(MsiEnumProducts)
501 
502 UINT
503 WINAPI
504 MsiEnumProductsExA(
505   _In_opt_ LPCSTR,
506   _In_opt_ LPCSTR,
507   _In_ DWORD,
508   _In_ DWORD,
509   _Out_writes_opt_(MAX_GUID_CHARS + 1) CHAR[39],
510   _Out_opt_ MSIINSTALLCONTEXT*,
511   _Out_writes_opt_(*pcchSid) LPSTR,
512   _Inout_opt_ LPDWORD pcchSid);
513 
514 UINT
515 WINAPI
516 MsiEnumProductsExW(
517   _In_opt_ LPCWSTR,
518   _In_opt_ LPCWSTR,
519   _In_ DWORD,
520   _In_ DWORD,
521   _Out_writes_opt_(MAX_GUID_CHARS + 1) WCHAR[39],
522   _Out_opt_ MSIINSTALLCONTEXT*,
523   _Out_writes_opt_(*pcchSid) LPWSTR,
524   _Inout_opt_ LPDWORD pcchSid);
525 
526 #define     MsiEnumProductsEx WINELIB_NAME_AW(MsiEnumProductsEx)
527 
528 UINT
529 WINAPI
530 MsiEnumFeaturesA(
531   _In_ LPCSTR,
532   _In_ DWORD,
533   _Out_writes_(MAX_FEATURE_CHARS + 1) LPSTR,
534   _Out_writes_opt_(MAX_FEATURE_CHARS + 1) LPSTR);
535 
536 UINT
537 WINAPI
538 MsiEnumFeaturesW(
539   _In_ LPCWSTR,
540   _In_ DWORD,
541   _Out_writes_(MAX_FEATURE_CHARS + 1) LPWSTR,
542   _Out_writes_opt_(MAX_FEATURE_CHARS + 1) LPWSTR);
543 
544 #define     MsiEnumFeatures WINELIB_NAME_AW(MsiEnumFeatures)
545 
546 UINT
547 WINAPI
548 MsiEnumComponentsA(
549   _In_ DWORD,
550   _Out_writes_(MAX_GUID_CHARS + 1) LPSTR);
551 
552 UINT
553 WINAPI
554 MsiEnumComponentsW(
555   _In_ DWORD,
556   _Out_writes_(MAX_GUID_CHARS + 1) LPWSTR);
557 
558 #define     MsiEnumComponents WINELIB_NAME_AW(MsiEnumComponents)
559 
560 UINT
561 WINAPI
562 MsiEnumComponentsExA(
563   _In_opt_ LPCSTR,
564   _In_ DWORD,
565   _In_ DWORD,
566   _Out_writes_opt_(MAX_GUID_CHARS + 1) CHAR[39],
567   _Out_opt_ MSIINSTALLCONTEXT *,
568   _Out_writes_opt_(*pcchSid) LPSTR,
569   _Inout_opt_ LPDWORD pcchSid);
570 
571 UINT
572 WINAPI
573 MsiEnumComponentsExW(
574   _In_opt_ LPCWSTR,
575   _In_ DWORD,
576   _In_ DWORD,
577   _Out_writes_opt_(MAX_GUID_CHARS + 1) WCHAR[39],
578   _Out_opt_ MSIINSTALLCONTEXT *,
579   _Out_writes_opt_(*pcchSid) LPWSTR,
580   _Inout_opt_ LPDWORD pcchSid);
581 
582 #define     MsiEnumComponentsEx WINELIB_NAME_AW(MsiEnumComponentsEx)
583 
584 UINT
585 WINAPI
586 MsiEnumClientsA(
587   _In_ LPCSTR,
588   _In_ DWORD,
589   _Out_writes_(MAX_GUID_CHARS + 1) LPSTR);
590 
591 UINT
592 WINAPI
593 MsiEnumClientsW(
594   _In_ LPCWSTR,
595   _In_ DWORD,
596   _Out_writes_(MAX_GUID_CHARS + 1) LPWSTR);
597 
598 #define     MsiEnumClients WINELIB_NAME_AW(MsiEnumClients)
599 
600 UINT WINAPI MsiOpenPackageA(_In_ LPCSTR, _Out_ MSIHANDLE*);
601 UINT WINAPI MsiOpenPackageW(_In_ LPCWSTR, _Out_ MSIHANDLE*);
602 #define     MsiOpenPackage WINELIB_NAME_AW(MsiOpenPackage)
603 
604 UINT WINAPI MsiOpenPackageExA(_In_ LPCSTR, _In_ DWORD, _Out_ MSIHANDLE*);
605 UINT WINAPI MsiOpenPackageExW(_In_ LPCWSTR, _In_ DWORD, _Out_ MSIHANDLE*);
606 #define     MsiOpenPackageEx WINELIB_NAME_AW(MsiOpenPackageEx)
607 
608 UINT WINAPI MsiOpenProductA(_In_ LPCSTR, _Out_ MSIHANDLE*);
609 UINT WINAPI MsiOpenProductW(_In_ LPCWSTR, _Out_ MSIHANDLE*);
610 #define     MsiOpenProduct WINELIB_NAME_AW(MsiOpenProduct)
611 
612 UINT
613 WINAPI
614 MsiGetProductPropertyA(
615   _In_ MSIHANDLE,
616   _In_ LPCSTR,
617   _Out_writes_opt_(*pcchValueBuf) LPSTR,
618   _Inout_opt_ LPDWORD pcchValueBuf);
619 
620 UINT
621 WINAPI
622 MsiGetProductPropertyW(
623   _In_ MSIHANDLE,
624   _In_ LPCWSTR,
625   _Out_writes_opt_(*pcchValueBuf) LPWSTR,
626   _Inout_opt_ LPDWORD pcchValueBuf);
627 
628 #define     MsiGetProductProperty WINELIB_NAME_AW(MsiGetProductProperty)
629 
630 UINT WINAPI MsiVerifyPackageA(_In_ LPCSTR);
631 UINT WINAPI MsiVerifyPackageW(_In_ LPCWSTR);
632 #define     MsiVerifyPackage WINELIB_NAME_AW(MsiVerifyPackage)
633 
634 UINT
635 WINAPI
636 MsiQueryComponentStateA(
637   _In_ LPCSTR,
638   _In_opt_ LPCSTR,
639   _In_ MSIINSTALLCONTEXT,
640   _In_ LPCSTR,
641   _Out_opt_ INSTALLSTATE*);
642 
643 UINT
644 WINAPI
645 MsiQueryComponentStateW(
646   _In_ LPCWSTR,
647   _In_opt_ LPCWSTR,
648   _In_ MSIINSTALLCONTEXT,
649   _In_ LPCWSTR,
650   _Out_opt_ INSTALLSTATE*);
651 
652 #define     MsiQueryComponentState WINELIB_NAME_AW(MsiQueryComponentState)
653 
654 INSTALLSTATE WINAPI MsiQueryProductStateA(_In_ LPCSTR);
655 INSTALLSTATE WINAPI MsiQueryProductStateW(_In_ LPCWSTR);
656 #define      MsiQueryProductState WINELIB_NAME_AW(MsiQueryProductState)
657 
658 UINT WINAPI MsiConfigureProductA(_In_ LPCSTR, _In_ int, _In_ INSTALLSTATE);
659 UINT WINAPI MsiConfigureProductW(_In_ LPCWSTR, _In_ int, _In_ INSTALLSTATE);
660 #define     MsiConfigureProduct WINELIB_NAME_AW(MsiConfigureProduct)
661 
662 UINT
663 WINAPI
664 MsiConfigureProductExA(
665   _In_ LPCSTR,
666   _In_ int,
667   _In_ INSTALLSTATE,
668   _In_opt_ LPCSTR);
669 
670 UINT
671 WINAPI
672 MsiConfigureProductExW(
673   _In_ LPCWSTR,
674   _In_ int,
675   _In_ INSTALLSTATE,
676   _In_opt_ LPCWSTR);
677 
678 #define     MsiConfigureProductEx WINELIB_NAME_AW(MsiConfigureProductEx)
679 
680 UINT
681 WINAPI
682 MsiConfigureFeatureA(
683   _In_ LPCSTR,
684   _In_ LPCSTR,
685   _In_ INSTALLSTATE);
686 
687 UINT
688 WINAPI
689 MsiConfigureFeatureW(
690   _In_ LPCWSTR,
691   _In_ LPCWSTR,
692   _In_ INSTALLSTATE);
693 
694 #define     MsiConfigureFeature WINELIB_NAME_AW(MsiConfigureFeature)
695 
696 UINT
697 WINAPI
698 MsiGetProductCodeA(
699   _In_ LPCSTR,
700   _Out_writes_(MAX_GUID_CHARS + 1) LPSTR);
701 
702 UINT
703 WINAPI
704 MsiGetProductCodeW(
705   _In_ LPCWSTR,
706   _Out_writes_(MAX_GUID_CHARS + 1) LPWSTR);
707 
708 #define     MsiGetProductCode WINELIB_NAME_AW(MsiGetProductCode)
709 
710 UINT
711 WINAPI
712 MsiGetProductInfoA(
713   _In_ LPCSTR,
714   _In_ LPCSTR,
715   _Out_writes_opt_(*pcchValueBuf) LPSTR,
716   _Inout_opt_ LPDWORD pcchValueBuf);
717 
718 UINT
719 WINAPI
720 MsiGetProductInfoW(
721   _In_ LPCWSTR,
722   _In_ LPCWSTR,
723   _Out_writes_opt_(*pcchValueBuf) LPWSTR,
724   _Inout_opt_ LPDWORD pcchValueBuf);
725 
726 #define     MsiGetProductInfo WINELIB_NAME_AW(MsiGetProductInfo)
727 
728 UINT
729 WINAPI
730 MsiGetProductInfoExA(
731   _In_ LPCSTR,
732   _In_opt_ LPCSTR,
733   _In_ MSIINSTALLCONTEXT,
734   _In_ LPCSTR,
735   _Out_writes_opt_(*pcchValue) LPSTR,
736   _Inout_opt_ LPDWORD pcchValue);
737 
738 UINT
739 WINAPI
740 MsiGetProductInfoExW(
741   _In_ LPCWSTR,
742   _In_opt_ LPCWSTR,
743   _In_ MSIINSTALLCONTEXT,
744   _In_ LPCWSTR,
745   _Out_writes_opt_(*pcchValue) LPWSTR,
746   _Inout_opt_ LPDWORD pcchValue);
747 
748 #define     MsiGetProductInfoEx WINELIB_NAME_AW(MsiGetProductInfoEx)
749 
750 UINT
751 WINAPI
752 MsiGetPatchInfoExA(
753   _In_ LPCSTR,
754   _In_ LPCSTR,
755   _In_opt_ LPCSTR,
756   _In_ MSIINSTALLCONTEXT,
757   _In_ LPCSTR,
758   _Out_writes_opt_(*pcchValue) LPSTR,
759   _Inout_opt_ LPDWORD pcchValue);
760 
761 UINT
762 WINAPI
763 MsiGetPatchInfoExW(
764   _In_ LPCWSTR,
765   _In_ LPCWSTR,
766   _In_opt_ LPCWSTR,
767   _In_ MSIINSTALLCONTEXT,
768   _In_ LPCWSTR,
769   _Out_writes_opt_(*pcchValue) LPWSTR,
770   _Inout_opt_ LPDWORD pcchValue);
771 
772 #define     MsiGetPatchInfoEx WINELIB_NAME_AW(MsiGetPatchInfoEx)
773 
774 UINT
775 WINAPI
776 MsiGetPatchInfoA(
777   _In_ LPCSTR,
778   _In_ LPCSTR,
779   _Out_writes_opt_(*pcchValueBuf) LPSTR,
780   _Inout_opt_ LPDWORD pcchValueBuf);
781 
782 UINT
783 WINAPI
784 MsiGetPatchInfoW(
785   _In_ LPCWSTR,
786   _In_ LPCWSTR,
787   _Out_writes_opt_(*pcchValueBuf) LPWSTR,
788   _Inout_opt_ LPDWORD pcchValueBuf);
789 
790 #define     MsiGetPatchInfo WINELIB_NAME_AW(MsiGetPatchInfo)
791 
792 UINT WINAPI MsiEnableLogA(_In_ DWORD, _In_opt_ LPCSTR, _In_ DWORD);
793 UINT WINAPI MsiEnableLogW(_In_ DWORD, _In_opt_ LPCWSTR, _In_ DWORD);
794 #define     MsiEnableLog WINELIB_NAME_AW(MsiEnableLog)
795 
796 INSTALLUI_HANDLERA
797 WINAPI
798 MsiSetExternalUIA(
799   _In_opt_ INSTALLUI_HANDLERA,
800   _In_ DWORD,
801   _In_opt_ LPVOID);
802 
803 INSTALLUI_HANDLERW
804 WINAPI
805 MsiSetExternalUIW(
806   _In_opt_ INSTALLUI_HANDLERW,
807   _In_ DWORD,
808   _In_opt_ LPVOID);
809 
810 #define MsiSetExternalUI WINELIB_NAME_AW(MsiSetExternalUI)
811 
812 INSTALLSTATE
813 WINAPI
814 MsiGetComponentPathA(
815   _In_ LPCSTR,
816   _In_ LPCSTR,
817   _Out_writes_opt_(*pcchBuf) LPSTR,
818   _Inout_opt_ LPDWORD pcchBuf);
819 
820 INSTALLSTATE
821 WINAPI
822 MsiGetComponentPathW(
823   _In_ LPCWSTR,
824   _In_ LPCWSTR,
825   _Out_writes_opt_(*pcchBuf) LPWSTR,
826   _Inout_opt_ LPDWORD pcchBuf);
827 
828 #define MsiGetComponentPath WINELIB_NAME_AW(MsiGetComponentPath)
829 
830 INSTALLSTATE WINAPI MsiQueryFeatureStateA(_In_ LPCSTR, _In_ LPCSTR);
831 INSTALLSTATE WINAPI MsiQueryFeatureStateW(_In_ LPCWSTR, _In_ LPCWSTR);
832 #define MsiQueryFeatureState WINELIB_NAME_AW(MsiQueryFeatureState)
833 
834 UINT
835 WINAPI
836 MsiQueryFeatureStateExA(
837   _In_ LPCSTR,
838   _In_opt_ LPCSTR,
839   _In_ MSIINSTALLCONTEXT,
840   _In_ LPCSTR,
841   _Out_opt_ INSTALLSTATE*);
842 
843 UINT
844 WINAPI
845 MsiQueryFeatureStateExW(
846   _In_ LPCWSTR,
847   _In_opt_ LPCWSTR,
848   _In_ MSIINSTALLCONTEXT,
849   _In_ LPCWSTR,
850   _Out_opt_ INSTALLSTATE*);
851 
852 #define     MsiQueryFeatureStateEx WINELIB_NAME_AW(MsiQueryFeatureStateEx)
853 
854 UINT
855 WINAPI
856 MsiGetFeatureInfoA(
857   _In_ MSIHANDLE,
858   _In_ LPCSTR,
859   _Out_opt_ LPDWORD,
860   _Out_writes_opt_(*pcchTitleBuf) LPSTR,
861   _Inout_opt_ LPDWORD pcchTitleBuf,
862   _Out_writes_opt_(*pcchHelpBuf) LPSTR,
863   _Inout_opt_ LPDWORD pcchHelpBuf);
864 
865 UINT
866 WINAPI
867 MsiGetFeatureInfoW(
868   _In_ MSIHANDLE,
869   _In_ LPCWSTR,
870   _Out_opt_ LPDWORD,
871   _Out_writes_opt_(*pcchTitleBuf) LPWSTR,
872   _Inout_opt_ LPDWORD pcchTitleBuf,
873   _Out_writes_opt_(*pcchHelpBuf) LPWSTR,
874   _Inout_opt_ LPDWORD pcchHelpBuf);
875 
876 #define MsiGetFeatureInfo WINELIB_NAME_AW(MsiGetFeatureInfo)
877 
878 UINT
879 WINAPI
880 MsiGetFeatureUsageA(
881   _In_ LPCSTR,
882   _In_ LPCSTR,
883   _Out_opt_ LPDWORD,
884   _Out_opt_ LPWORD);
885 
886 UINT
887 WINAPI
888 MsiGetFeatureUsageW(
889   _In_ LPCWSTR,
890   _In_ LPCWSTR,
891   _Out_opt_ LPDWORD,
892   _Out_opt_ LPWORD);
893 
894 #define MsiGetFeatureUsage WINELIB_NAME_AW(MsiGetFeatureUsage)
895 
896 UINT
897 WINAPI
898 MsiEnumRelatedProductsA(
899   _In_ LPCSTR,
900   _Reserved_ DWORD,
901   _In_ DWORD,
902   _Out_writes_(MAX_GUID_CHARS + 1) LPSTR);
903 
904 UINT
905 WINAPI
906 MsiEnumRelatedProductsW(
907   _In_ LPCWSTR,
908   _Reserved_ DWORD,
909   _In_ DWORD,
910   _Out_writes_(MAX_GUID_CHARS + 1) LPWSTR);
911 
912 #define MsiEnumRelatedProducts WINELIB_NAME_AW(MsiEnumRelatedProducts)
913 
914 UINT
915 WINAPI
916 MsiProvideAssemblyA(
917   _In_ LPCSTR,
918   _In_opt_ LPCSTR,
919   _In_ DWORD,
920   _In_ DWORD,
921   _Out_writes_opt_(*pcchPathBuf) LPSTR,
922   _Inout_opt_ LPDWORD pcchPathBuf);
923 
924 UINT
925 WINAPI
926 MsiProvideAssemblyW(
927   _In_ LPCWSTR,
928   _In_opt_ LPCWSTR,
929   _In_ DWORD,
930   _In_ DWORD,
931   _Out_writes_opt_(*pcchPathBuf) LPWSTR,
932   _Inout_opt_ LPDWORD pcchPathBuf);
933 
934 #define MsiProvideAssembly WINELIB_NAME_AW(MsiProvideAssembly)
935 
936 UINT
937 WINAPI
938 MsiEnumComponentQualifiersA(
939   _In_ LPCSTR,
940   _In_ DWORD,
941   _Out_writes_(*pcchQualifierBuf) LPSTR,
942   _Inout_ LPDWORD pcchQualifierBuf,
943   _Out_writes_opt_(*pcchApplicationDataBuf) LPSTR,
944   _Inout_opt_ LPDWORD pcchApplicationDataBuf);
945 
946 UINT
947 WINAPI
948 MsiEnumComponentQualifiersW(
949   _In_ LPCWSTR,
950   _In_ DWORD,
951   _Out_writes_(*pcchQualifierBuf) LPWSTR,
952   _Inout_ LPDWORD pcchQualifierBuf,
953   _Out_writes_opt_(*pcchApplicationDataBuf) LPWSTR,
954   _Inout_opt_ LPDWORD pcchApplicationDataBuf);
955 
956 #define MsiEnumComponentQualifiers WINELIB_NAME_AW(MsiEnumComponentQualifiers)
957 
958 UINT
959 WINAPI
960 MsiGetFileVersionA(
961   _In_ LPCSTR,
962   _Out_writes_opt_(*pcchVersionBuf) LPSTR,
963   _Inout_opt_ LPDWORD pcchVersionBuf,
964   _Out_writes_opt_(*pcchLangBuf) LPSTR,
965   _Inout_opt_ LPDWORD pcchLangBuf);
966 
967 UINT
968 WINAPI
969 MsiGetFileVersionW(
970   _In_ LPCWSTR,
971   _Out_writes_opt_(*pcchVersionBuf) LPWSTR,
972   _Inout_opt_ LPDWORD pcchVersionBuf,
973   _Out_writes_opt_(*pcchLangBuf) LPWSTR,
974   _Inout_opt_ LPDWORD pcchLangBuf);
975 
976 #define MsiGetFileVersion WINELIB_NAME_AW(MsiGetFileVersion)
977 
978 UINT WINAPI MsiMessageBoxA(HWND, LPCSTR, LPCSTR, UINT, WORD, DWORD);
979 UINT WINAPI MsiMessageBoxW(HWND, LPCWSTR, LPCWSTR, UINT, WORD, DWORD);
980 #define MsiMessageBox WINELIB_NAME_AW(MsiMessageBox)
981 
982 UINT
983 WINAPI
984 MsiProvideQualifiedComponentExA(
985   _In_ LPCSTR,
986   _In_ LPCSTR,
987   _In_ DWORD,
988   _In_opt_ LPCSTR,
989   _Reserved_ DWORD,
990   _Reserved_ DWORD,
991   _Out_writes_opt_(*pcchPathBuf) LPSTR,
992   _Inout_opt_ LPDWORD pcchPathBuf);
993 
994 UINT
995 WINAPI
996 MsiProvideQualifiedComponentExW(
997   _In_ LPCWSTR,
998   _In_ LPCWSTR,
999   _In_ DWORD,
1000   _In_opt_ LPCWSTR,
1001   _Reserved_ DWORD,
1002   _Reserved_ DWORD,
1003   _Out_writes_opt_(*pcchPathBuf) LPWSTR,
1004   _Inout_opt_ LPDWORD pcchPathBuf);
1005 
1006 #define MsiProvideQualifiedComponentEx WINELIB_NAME_AW(MsiProvideQualifiedComponentEx)
1007 
1008 UINT
1009 WINAPI
1010 MsiProvideQualifiedComponentA(
1011   _In_ LPCSTR,
1012   _In_ LPCSTR,
1013   _In_ DWORD,
1014   _Out_writes_opt_(*pcchPathBuf) LPSTR,
1015   _Inout_opt_ LPDWORD pcchPathBuf);
1016 
1017 UINT
1018 WINAPI
1019 MsiProvideQualifiedComponentW(
1020   _In_ LPCWSTR,
1021   _In_ LPCWSTR,
1022   _In_ DWORD,
1023   _Out_writes_opt_(*pcchPathBuf) LPWSTR,
1024   _Inout_opt_ LPDWORD pcchPathBuf);
1025 
1026 #define MsiProvideQualifiedComponent WINELIB_NAME_AW(MsiProvideQualifiedComponent)
1027 
1028 USERINFOSTATE
1029 WINAPI
1030 MsiGetUserInfoA(
1031   _In_ LPCSTR,
1032   _Out_writes_opt_(*pcchUserNameBuf) LPSTR,
1033   _Inout_opt_ LPDWORD pcchUserNameBuf,
1034   _Out_writes_opt_(*pcchOrgNameBuf) LPSTR,
1035   _Inout_opt_ LPDWORD pcchOrgNameBuf,
1036   _Out_writes_opt_(*pcchSerialBuf) LPSTR,
1037   _Inout_opt_ LPDWORD pcchSerialBuf);
1038 
1039 USERINFOSTATE
1040 WINAPI
1041 MsiGetUserInfoW(
1042   _In_ LPCWSTR,
1043   _Out_writes_opt_(*pcchUserNameBuf) LPWSTR,
1044   _Inout_opt_ LPDWORD pcchUserNameBuf,
1045   _Out_writes_opt_(*pcchOrgNameBuf) LPWSTR,
1046   _Inout_opt_ LPDWORD pcchOrgNameBuf,
1047   _Out_writes_opt_(*pcchSerialBuf) LPWSTR,
1048   _Inout_opt_ LPDWORD pcchSerialBuf);
1049 
1050 #define MsiGetUserInfo WINELIB_NAME_AW(MsiGetUserInfo)
1051 
1052 UINT WINAPI MsiProvidedComponentA(LPCSTR, LPCSTR, LPCSTR, DWORD, LPSTR, LPDWORD);
1053 UINT WINAPI MsiProvideComponentW(LPCWSTR, LPCWSTR, LPCWSTR, DWORD, LPWSTR, LPDWORD);
1054 #define MsiProvideComponent WINELIB_NAME_AW(MsiProvideComponent)
1055 
1056 UINT WINAPI MsiCollectUserInfoA(_In_ LPCSTR);
1057 UINT WINAPI MsiCollectUserInfoW(_In_ LPCWSTR);
1058 #define MsiCollectUserInfo WINELIB_NAME_AW(MsiCollectUserInfo)
1059 
1060 UINT WINAPI MsiReinstallFeatureA(_In_ LPCSTR, _In_ LPCSTR, _In_ DWORD);
1061 UINT WINAPI MsiReinstallFeatureW(_In_ LPCWSTR, _In_ LPCWSTR, _In_ DWORD);
1062 #define MsiReinstallFeature WINELIB_NAME_AW(MsiReinstallFeature)
1063 
1064 UINT
1065 WINAPI
1066 MsiGetShortcutTargetA(
1067   _In_ LPCSTR,
1068   _Out_writes_opt_(MAX_GUID_CHARS + 1) LPSTR,
1069   _Out_writes_opt_(MAX_FEATURE_CHARS + 1) LPSTR,
1070   _Out_writes_opt_(MAX_GUID_CHARS + 1) LPSTR);
1071 
1072 UINT
1073 WINAPI
1074 MsiGetShortcutTargetW(
1075   _In_ LPCWSTR,
1076   _Out_writes_opt_(MAX_GUID_CHARS + 1) LPWSTR,
1077   _Out_writes_opt_(MAX_FEATURE_CHARS + 1) LPWSTR,
1078   _Out_writes_opt_(MAX_GUID_CHARS + 1) LPWSTR);
1079 
1080 #define MsiGetShortcutTarget WINELIB_NAME_AW(MsiGetShortcutTarget)
1081 
1082 INSTALLSTATE WINAPI MsiUseFeatureW(_In_ LPCWSTR, _In_ LPCWSTR);
1083 INSTALLSTATE WINAPI MsiUseFeatureA(_In_ LPCSTR, _In_ LPCSTR);
1084 #define MsiUseFeature WINELIB_NAME_AW(MsiUseFeature)
1085 
1086 INSTALLSTATE
1087 WINAPI
1088 MsiUseFeatureExW(
1089   _In_ LPCWSTR,
1090   _In_ LPCWSTR,
1091   _In_ DWORD,
1092   _Reserved_ DWORD);
1093 
1094 INSTALLSTATE
1095 WINAPI
1096 MsiUseFeatureExA(
1097   _In_ LPCSTR,
1098   _In_ LPCSTR,
1099   _In_ DWORD,
1100   _Reserved_ DWORD);
1101 
1102 #define MsiUseFeatureEx WINELIB_NAME_AW(MsiUseFeatureEx)
1103 
1104 HRESULT
1105 WINAPI
1106 MsiGetFileSignatureInformationA(
1107   _In_ LPCSTR,
1108   _In_ DWORD,
1109   _Outptr_ PCCERT_CONTEXT*,
1110   _Out_writes_bytes_opt_(*pcbHashData) LPBYTE,
1111   _Inout_opt_ LPDWORD pcbHashData);
1112 
1113 HRESULT
1114 WINAPI
1115 MsiGetFileSignatureInformationW(
1116   _In_ LPCWSTR,
1117   _In_ DWORD,
1118   _Outptr_ PCCERT_CONTEXT*,
1119   _Out_writes_bytes_opt_(*pcbHashData) LPBYTE,
1120   _Inout_opt_ LPDWORD pcbHashData);
1121 
1122 #define MsiGetFileSignatureInformation WINELIB_NAME_AW(MsiGetFileSignatureInformation)
1123 
1124 INSTALLSTATE
1125 WINAPI
1126 MsiLocateComponentA(
1127   _In_ LPCSTR,
1128   _Out_writes_opt_(*pcchBuf) LPSTR,
1129   _Inout_opt_ LPDWORD pcchBuf);
1130 
1131 INSTALLSTATE
1132 WINAPI
1133 MsiLocateComponentW(
1134   _In_ LPCWSTR,
1135   _Out_writes_opt_(*pcchBuf) LPWSTR,
1136   _Inout_opt_ LPDWORD pcchBuf);
1137 
1138 #define  MsiLocateComponent WINELIB_NAME_AW(MsiLocateComponent)
1139 
1140 UINT
1141 WINAPI
1142 MsiSourceListAddSourceA(
1143   _In_ LPCSTR,
1144   _In_opt_ LPCSTR,
1145   _Reserved_ DWORD,
1146   _In_ LPCSTR);
1147 
1148 UINT
1149 WINAPI
1150 MsiSourceListAddSourceW(
1151   _In_ LPCWSTR,
1152   _In_opt_ LPCWSTR,
1153   _Reserved_ DWORD,
1154   _In_ LPCWSTR);
1155 
1156 #define     MsiSourceListAddSource WINELIB_NAME_AW(MsiSourceListAddSource)
1157 
1158 UINT
1159 WINAPI
1160 MsiSourceListEnumMediaDisksA(
1161   _In_ LPCSTR,
1162   _In_opt_ LPCSTR,
1163   _In_ MSIINSTALLCONTEXT,
1164   _In_ DWORD,
1165   _In_ DWORD,
1166   _Out_opt_ LPDWORD,
1167   _Out_writes_opt_(*pcchVolumeLabel) LPSTR,
1168   _Inout_opt_ LPDWORD pcchVolumeLabel,
1169   _Out_writes_opt_(*pcchDiskPrompt) LPSTR,
1170   _Inout_opt_ LPDWORD pcchDiskPrompt);
1171 
1172 UINT
1173 WINAPI
1174 MsiSourceListEnumMediaDisksW(
1175   _In_ LPCWSTR,
1176   _In_opt_ LPCWSTR,
1177   _In_ MSIINSTALLCONTEXT,
1178   _In_ DWORD,
1179   _In_ DWORD,
1180   _Out_opt_ LPDWORD,
1181   _Out_writes_opt_(*pcchVolumeLabel) LPWSTR,
1182   _Inout_opt_ LPDWORD pcchVolumeLabel,
1183   _Out_writes_opt_(*pcchDiskPrompt) LPWSTR,
1184   _Inout_opt_ LPDWORD pcchDiskPrompt);
1185 
1186 #define     MsiSourceListEnumMediaDisks WINELIB_NAME_AW(MsiSourceListEnumMediaDisks)
1187 
1188 UINT
1189 WINAPI
1190 MsiSourceListEnumSourcesA(
1191   _In_ LPCSTR,
1192   _In_opt_ LPCSTR,
1193   _In_ MSIINSTALLCONTEXT,
1194   _In_ DWORD,
1195   _In_ DWORD,
1196   _Out_writes_opt_(*pcchSource) LPSTR,
1197   _Inout_opt_ LPDWORD pcchSource);
1198 
1199 UINT
1200 WINAPI
1201 MsiSourceListEnumSourcesW(
1202   _In_ LPCWSTR,
1203   _In_opt_ LPCWSTR,
1204   _In_ MSIINSTALLCONTEXT,
1205   _In_ DWORD,
1206   _In_ DWORD,
1207   _Out_writes_opt_(*pcchSource) LPWSTR,
1208   _Inout_opt_ LPDWORD pcchSource);
1209 
1210 #define     MsiSourceListEnumSources WINELIB_NAME_AW(MsiSourceListEnumSources)
1211 
1212 UINT
1213 WINAPI
1214 MsiSourceListClearSourceA(
1215   _In_ LPCSTR,
1216   _In_opt_ LPCSTR,
1217   _In_ MSIINSTALLCONTEXT,
1218   _In_ DWORD,
1219   _In_ LPCSTR);
1220 
1221 UINT
1222 WINAPI
1223 MsiSourceListClearSourceW(
1224   _In_ LPCWSTR,
1225   _In_opt_ LPCWSTR,
1226   _In_ MSIINSTALLCONTEXT,
1227   _In_ DWORD,
1228   _In_ LPCWSTR);
1229 
1230 #define     MsiSourceListClearSource WINELIB_NAME_AW(MsiSourceListClearSource)
1231 
1232 UINT
1233 WINAPI
1234 MsiSourceListClearAllA(
1235   _In_ LPCSTR,
1236   _In_opt_ LPCSTR,
1237   _Reserved_ DWORD);
1238 
1239 UINT
1240 WINAPI
1241 MsiSourceListClearAllW(
1242   _In_ LPCWSTR,
1243   _In_opt_ LPCWSTR,
1244   _Reserved_ DWORD);
1245 
1246 #define     MsiSourceListClearAll WINELIB_NAME_AW(MsiSourceListClearAll)
1247 
1248 UINT
1249 WINAPI
1250 MsiSourceListGetInfoA(
1251   _In_ LPCSTR,
1252   _In_opt_ LPCSTR,
1253   _In_ MSIINSTALLCONTEXT,
1254   _In_ DWORD,
1255   _In_ LPCSTR,
1256   _Out_writes_opt_(*pcchValue) LPSTR,
1257   _Inout_opt_ LPDWORD pcchValue);
1258 
1259 UINT
1260 WINAPI
1261 MsiSourceListGetInfoW(
1262   _In_ LPCWSTR,
1263   _In_opt_ LPCWSTR,
1264   _In_ MSIINSTALLCONTEXT,
1265   _In_ DWORD,
1266   _In_ LPCWSTR,
1267   _Out_writes_opt_(*pcchValue) LPWSTR,
1268   _Inout_opt_ LPDWORD pcchValue);
1269 
1270 #define     MsiSourceListGetInfo WINELIB_NAME_AW(MsiSourceListGetInfo)
1271 
1272 UINT
1273 WINAPI
1274 MsiSourceListSetInfoA(
1275   _In_ LPCSTR,
1276   _In_opt_ LPCSTR,
1277   _In_ MSIINSTALLCONTEXT,
1278   _In_ DWORD,
1279   _In_ LPCSTR,
1280   _In_ LPCSTR);
1281 
1282 UINT
1283 WINAPI
1284 MsiSourceListSetInfoW(
1285   _In_ LPCWSTR,
1286   _In_opt_ LPCWSTR,
1287   _In_ MSIINSTALLCONTEXT,
1288   _In_ DWORD,
1289   _In_ LPCWSTR,
1290   _In_ LPCWSTR);
1291 
1292 #define     MsiSourceListSetInfo WINELIB_NAME_AW(MsiSourceListSetInfo)
1293 
1294 UINT
1295 WINAPI
1296 MsiSourceListAddSourceExA(
1297   _In_ LPCSTR,
1298   _In_opt_ LPCSTR,
1299   _In_ MSIINSTALLCONTEXT,
1300   _In_ DWORD,
1301   _In_ LPCSTR,
1302   _In_ DWORD);
1303 
1304 UINT
1305 WINAPI
1306 MsiSourceListAddSourceExW(
1307   _In_ LPCWSTR,
1308   _In_opt_ LPCWSTR,
1309   _In_ MSIINSTALLCONTEXT,
1310   _In_ DWORD,
1311   _In_ LPCWSTR,
1312   _In_ DWORD);
1313 
1314 #define     MsiSourceListAddSourceEx WINELIB_NAME_AW(MsiSourceListAddSourceEx)
1315 
1316 UINT
1317 WINAPI
1318 MsiSourceListAddMediaDiskA(
1319   _In_ LPCSTR,
1320   _In_opt_ LPCSTR,
1321   _In_ MSIINSTALLCONTEXT,
1322   _In_ DWORD,
1323   _In_ DWORD,
1324   _In_opt_ LPCSTR,
1325   _In_opt_ LPCSTR);
1326 
1327 UINT
1328 WINAPI
1329 MsiSourceListAddMediaDiskW(
1330   _In_ LPCWSTR,
1331   _In_opt_ LPCWSTR,
1332   _In_ MSIINSTALLCONTEXT,
1333   _In_ DWORD,
1334   _In_ DWORD,
1335   _In_opt_ LPCWSTR,
1336   _In_opt_ LPCWSTR);
1337 
1338 #define     MsiSourceListAddMediaDisk WINELIB_NAME_AW(MsiSourceListAddMediaDisk)
1339 
1340 UINT
1341 WINAPI
1342 MsiEnumPatchesA(
1343   _In_ LPCSTR,
1344   _In_ DWORD,
1345   _Out_writes_(MAX_GUID_CHARS + 1) LPSTR,
1346   _Out_writes_(*pcchTransformsBuf) LPSTR,
1347   _Inout_ LPDWORD pcchTransformsBuf);
1348 
1349 UINT
1350 WINAPI
1351 MsiEnumPatchesW(
1352   _In_ LPCWSTR,
1353   _In_ DWORD,
1354   _Out_writes_(MAX_GUID_CHARS + 1) LPWSTR,
1355   _Out_writes_(*pcchTransformsBuf) LPWSTR,
1356   _Inout_ LPDWORD pcchTransformsBuf);
1357 
1358 #define     MsiEnumPatches WINELIB_NAME_AW(MsiEnumPatches)
1359 
1360 UINT
1361 WINAPI
1362 MsiEnumPatchesExA(
1363   _In_opt_ LPCSTR,
1364   _In_opt_ LPCSTR,
1365   _In_ DWORD,
1366   _In_ DWORD,
1367   _In_ DWORD,
1368   _Out_writes_opt_(MAX_GUID_CHARS + 1) LPSTR,
1369   _Out_writes_opt_(MAX_GUID_CHARS + 1) LPSTR,
1370   _Out_opt_ MSIINSTALLCONTEXT*,
1371   _Out_writes_opt_(*pcchTargetUserSid) LPSTR,
1372   _Inout_opt_ LPDWORD pcchTargetUserSid);
1373 
1374 UINT
1375 WINAPI
1376 MsiEnumPatchesExW(
1377   _In_opt_ LPCWSTR,
1378   _In_opt_ LPCWSTR,
1379   _In_ DWORD,
1380   _In_ DWORD,
1381   _In_ DWORD,
1382   _Out_writes_opt_(MAX_GUID_CHARS + 1) LPWSTR,
1383   _Out_writes_opt_(MAX_GUID_CHARS + 1) LPWSTR,
1384   _Out_opt_ MSIINSTALLCONTEXT*,
1385   _Out_writes_opt_(*pcchTargetUserSid) LPWSTR,
1386   _Inout_opt_ LPDWORD pcchTargetUserSid);
1387 
1388 #define     MsiEnumPatchesEx WINELIB_NAME_AW(MsiEnumPatchesEx)
1389 
1390 UINT
1391 WINAPI
1392 MsiGetFileHashA(
1393   _In_ LPCSTR,
1394   _In_ DWORD,
1395   _Inout_ PMSIFILEHASHINFO);
1396 
1397 UINT
1398 WINAPI
1399 MsiGetFileHashW(
1400   _In_ LPCWSTR,
1401   _In_ DWORD,
1402   _Inout_ PMSIFILEHASHINFO);
1403 
1404 #define     MsiGetFileHash WINELIB_NAME_AW(MsiGetFileHash)
1405 
1406 UINT
1407 WINAPI
1408 MsiAdvertiseScriptA(
1409   _In_ LPCSTR,
1410   _In_ DWORD,
1411   _In_opt_ PHKEY,
1412   _In_ BOOL);
1413 
1414 UINT
1415 WINAPI
1416 MsiAdvertiseScriptW(
1417   _In_ LPCWSTR,
1418   _In_ DWORD,
1419   _In_opt_ PHKEY,
1420   _In_ BOOL);
1421 
1422 #define     MsiAdvertiseScript WINELIB_NAME_AW(MsiAdvertiseScript)
1423 
1424 UINT WINAPI MsiIsProductElevatedA(_In_ LPCSTR, _Out_ BOOL *);
1425 UINT WINAPI MsiIsProductElevatedW(_In_ LPCWSTR, _Out_ BOOL *);
1426 #define     MsiIsProductElevated WINELIB_NAME_AW(MsiIsProductElevated)
1427 
1428 UINT WINAPI MsiDatabaseMergeA(MSIHANDLE, MSIHANDLE, LPCSTR);
1429 UINT WINAPI MsiDatabaseMergeW(MSIHANDLE, MSIHANDLE, LPCWSTR);
1430 #define     MsiDatabaseMerge WINELIB_NAME_AW(MsiDatabaseMerge)
1431 
1432 UINT
1433 WINAPI
1434 MsiInstallMissingComponentA(
1435   _In_ LPCSTR,
1436   _In_ LPCSTR,
1437   _In_ INSTALLSTATE);
1438 
1439 UINT
1440 WINAPI
1441 MsiInstallMissingComponentW(
1442   _In_ LPCWSTR,
1443   _In_ LPCWSTR,
1444   _In_ INSTALLSTATE);
1445 
1446 #define     MsiInstallMissingComponent WINELIB_NAME_AW(MsiInstallMissingComponent)
1447 
1448 UINT
1449 WINAPI
1450 MsiDetermineApplicablePatchesA(
1451   _In_ LPCSTR,
1452   _In_ DWORD cPatchInfo,
1453   _Inout_updates_(cPatchInfo) PMSIPATCHSEQUENCEINFOA);
1454 
1455 UINT
1456 WINAPI
1457 MsiDetermineApplicablePatchesW(
1458   _In_ LPCWSTR,
1459   _In_ DWORD cPatchInfo,
1460   _Inout_updates_(cPatchInfo) PMSIPATCHSEQUENCEINFOW);
1461 
1462 #define     MsiDetermineApplicablePatches WINELIB_NAME_AW(MsiDetermineApplicablePatches)
1463 
1464 UINT
1465 WINAPI
1466 MsiDeterminePatchSequenceA(
1467   _In_ LPCSTR,
1468   _In_opt_ LPCSTR,
1469   _In_ MSIINSTALLCONTEXT,
1470   _In_ DWORD cPatchInfo,
1471   _Inout_updates_(cPatchInfo) PMSIPATCHSEQUENCEINFOA);
1472 
1473 UINT
1474 WINAPI
1475 MsiDeterminePatchSequenceW(
1476   _In_ LPCWSTR,
1477   _In_opt_ LPCWSTR,
1478   _In_ MSIINSTALLCONTEXT,
1479   _In_ DWORD cPatchInfo,
1480   _Inout_updates_(cPatchInfo) PMSIPATCHSEQUENCEINFOW);
1481 
1482 #define     MsiDeterminePatchSequence WINELIB_NAME_AW(MsiDeterminePatchSequence)
1483 
1484 UINT
1485 WINAPI
1486 MsiApplyMultiplePatchesA(
1487   _In_ LPCSTR,
1488   _In_opt_ LPCSTR,
1489   _In_opt_ LPCSTR);
1490 
1491 UINT
1492 WINAPI
1493 MsiApplyMultiplePatchesW(
1494   _In_ LPCWSTR,
1495   _In_opt_ LPCWSTR,
1496   _In_opt_ LPCWSTR);
1497 
1498 #define     MsiApplyMultiplePatches WINELIB_NAME_AW(MsiApplyMultiplePatches)
1499 
1500 UINT
1501 WINAPI
1502 MsiBeginTransactionA(
1503   _In_ LPCSTR,
1504   _In_ DWORD,
1505   _Out_ MSIHANDLE *,
1506   _Out_ HANDLE *);
1507 
1508 UINT
1509 WINAPI
1510 MsiBeginTransactionW(
1511   _In_ LPCWSTR,
1512   _In_ DWORD,
1513   _Out_ MSIHANDLE *,
1514   _Out_ HANDLE *);
1515 
1516 #define     MsiBeginTransaction WINELIB_NAME_AW(MsiBeginTransaction)
1517 
1518 UINT WINAPI MsiEndTransaction(_In_ DWORD);
1519 
1520 /* Non Unicode */
1521 UINT WINAPI MsiCloseHandle(MSIHANDLE);
1522 UINT WINAPI MsiCloseAllHandles(void);
1523 INSTALLUILEVEL WINAPI MsiSetInternalUI(_In_ INSTALLUILEVEL, _Inout_opt_ HWND*);
1524 
1525 UINT
1526 WINAPI
1527 MsiSetExternalUIRecord(
1528   _In_opt_ INSTALLUI_HANDLER_RECORD,
1529   _In_ DWORD,
1530   _In_opt_ LPVOID,
1531   _Out_opt_ PINSTALLUI_HANDLER_RECORD);
1532 
1533 #ifdef __cplusplus
1534 }
1535 #endif
1536 
1537 #endif /* __WINE_MSI_H */
1538