comparison fuhtark_test/include/winapi/msi.h @ 1500:91c8c3b7cbf0

add: futhark tests for generating vulkan api
author sam <sam@basx.dev>
date Wed, 26 Nov 2025 21:36:48 +0700
parents
children
comparison
equal deleted inserted replaced
1499:1f58458b7ef7 1500:91c8c3b7cbf0
1 /**
2 * This file has no copyright assigned and is placed in the Public Domain.
3 * This file is part of the w64 mingw-runtime package.
4 * No warranty is given; refer to the file DISCLAIMER within this package.
5 */
6 #ifndef _MSI_H_
7 #define _MSI_H_
8
9 #ifndef NTDDI_WIN2K
10 #define NTDDI_WIN2K 0x05000000
11 #endif
12 #ifndef NTDDI_WINXP
13 #define NTDDI_WINXP 0x05010000
14 #endif
15 #ifndef NTDDI_WINXPSP2
16 #define NTDDI_WINXPSP2 0x05010200
17 #endif
18 #ifndef NTDDI_WS03SP1
19 #define NTDDI_WS03SP1 0x05020100
20 #endif
21
22 #ifndef _WIN32_MSI
23 #if (defined(NTDDI_VERSION) && NTDDI_VERSION >= NTDDI_WS03SP1)
24 #define _WIN32_MSI 310
25 #elif (defined(NTDDI_VERSION) && NTDDI_VERSION >= NTDDI_WINXPSP2)
26 #define _WIN32_MSI 300
27 #else
28 #define _WIN32_MSI 200
29 #endif
30 #endif
31
32 #if (_WIN32_MSI >= 150)
33 #ifndef _MSI_NO_CRYPTO
34 #include "wincrypt.h"
35 #endif
36 #endif
37
38 typedef unsigned long MSIHANDLE;
39
40 #ifdef __cplusplus
41 extern "C" {
42 #endif
43
44 UINT WINAPI MsiCloseHandle(MSIHANDLE hAny);
45 UINT WINAPI MsiCloseAllHandles();
46
47 #ifdef __cplusplus
48 }
49 #endif
50
51 #ifdef __cplusplus
52 class PMSIHANDLE {
53 MSIHANDLE m_h;
54 public:
55 PMSIHANDLE():m_h(0){}
56 PMSIHANDLE(MSIHANDLE h):m_h(h){}
57 ~PMSIHANDLE(){if (m_h!=0) MsiCloseHandle(m_h);}
58 void operator =(MSIHANDLE h) {if (m_h) MsiCloseHandle(m_h); m_h=h;}
59 operator MSIHANDLE() {return m_h;}
60 MSIHANDLE *operator &() {if (m_h) MsiCloseHandle(m_h); m_h = 0; return &m_h;}
61 };
62 #endif
63
64 typedef enum tagINSTALLMESSAGE {
65 INSTALLMESSAGE_FATALEXIT = 0x00000000L,INSTALLMESSAGE_ERROR = 0x01000000L,INSTALLMESSAGE_WARNING = 0x02000000L,INSTALLMESSAGE_USER = 0x03000000L,
66 INSTALLMESSAGE_INFO = 0x04000000L,INSTALLMESSAGE_FILESINUSE = 0x05000000L,INSTALLMESSAGE_RESOLVESOURCE = 0x06000000L,
67 INSTALLMESSAGE_OUTOFDISKSPACE = 0x07000000L,INSTALLMESSAGE_ACTIONSTART = 0x08000000L,INSTALLMESSAGE_ACTIONDATA = 0x09000000L,
68 INSTALLMESSAGE_PROGRESS = 0x0A000000L,INSTALLMESSAGE_COMMONDATA = 0x0B000000L,INSTALLMESSAGE_INITIALIZE = 0x0C000000L,
69 INSTALLMESSAGE_TERMINATE = 0x0D000000L,INSTALLMESSAGE_SHOWDIALOG = 0x0E000000L
70 } INSTALLMESSAGE;
71
72 typedef int (WINAPI *INSTALLUI_HANDLERA)(LPVOID pvContext,UINT iMessageType,LPCSTR szMessage);
73 typedef int (WINAPI *INSTALLUI_HANDLERW)(LPVOID pvContext,UINT iMessageType,LPCWSTR szMessage);
74 #ifdef UNICODE
75 #define INSTALLUI_HANDLER INSTALLUI_HANDLERW
76 #else
77 #define INSTALLUI_HANDLER INSTALLUI_HANDLERA
78 #endif
79 #if (_WIN32_MSI >= 310)
80 typedef int (WINAPI *INSTALLUI_HANDLER_RECORD)(LPVOID pvContext,UINT iMessageType,MSIHANDLE hRecord);
81 typedef INSTALLUI_HANDLER_RECORD *PINSTALLUI_HANDLER_RECORD;
82 #endif
83
84 typedef enum tagINSTALLUILEVEL {
85 INSTALLUILEVEL_NOCHANGE = 0,INSTALLUILEVEL_DEFAULT = 1,INSTALLUILEVEL_NONE = 2,INSTALLUILEVEL_BASIC = 3,INSTALLUILEVEL_REDUCED = 4,
86 INSTALLUILEVEL_FULL = 5,INSTALLUILEVEL_ENDDIALOG = 0x80,INSTALLUILEVEL_PROGRESSONLY = 0x40,INSTALLUILEVEL_HIDECANCEL = 0x20,
87 INSTALLUILEVEL_SOURCERESONLY = 0x100
88 } INSTALLUILEVEL;
89
90 typedef enum tagINSTALLSTATE {
91 INSTALLSTATE_NOTUSED = -7,INSTALLSTATE_BADCONFIG = -6,INSTALLSTATE_INCOMPLETE = -5,INSTALLSTATE_SOURCEABSENT = -4,INSTALLSTATE_MOREDATA = -3,
92 INSTALLSTATE_INVALIDARG = -2,INSTALLSTATE_UNKNOWN = -1,INSTALLSTATE_BROKEN = 0,INSTALLSTATE_ADVERTISED = 1,INSTALLSTATE_REMOVED = 1,
93 INSTALLSTATE_ABSENT = 2,INSTALLSTATE_LOCAL = 3,INSTALLSTATE_SOURCE = 4,INSTALLSTATE_DEFAULT = 5
94 } INSTALLSTATE;
95
96 typedef enum tagUSERINFOSTATE {
97 USERINFOSTATE_MOREDATA = -3,USERINFOSTATE_INVALIDARG = -2,USERINFOSTATE_UNKNOWN = -1,USERINFOSTATE_ABSENT = 0,USERINFOSTATE_PRESENT = 1
98 } USERINFOSTATE;
99
100 typedef enum tagINSTALLLEVEL {
101 INSTALLLEVEL_DEFAULT = 0,INSTALLLEVEL_MINIMUM = 1,INSTALLLEVEL_MAXIMUM = 0xFFFF
102 } INSTALLLEVEL;
103
104 typedef enum tagREINSTALLMODE {
105 REINSTALLMODE_REPAIR = 0x00000001,REINSTALLMODE_FILEMISSING = 0x00000002,REINSTALLMODE_FILEOLDERVERSION = 0x00000004,
106 REINSTALLMODE_FILEEQUALVERSION = 0x00000008,REINSTALLMODE_FILEEXACT = 0x00000010,REINSTALLMODE_FILEVERIFY = 0x00000020,
107 REINSTALLMODE_FILEREPLACE = 0x00000040,REINSTALLMODE_MACHINEDATA = 0x00000080,REINSTALLMODE_USERDATA = 0x00000100,
108 REINSTALLMODE_SHORTCUT = 0x00000200,REINSTALLMODE_PACKAGE = 0x00000400
109 } REINSTALLMODE;
110
111 typedef enum tagINSTALLOGMODE {
112 INSTALLLOGMODE_FATALEXIT = (1 << (INSTALLMESSAGE_FATALEXIT >> 24)),INSTALLLOGMODE_ERROR = (1 << (INSTALLMESSAGE_ERROR >> 24)),
113 INSTALLLOGMODE_WARNING = (1 << (INSTALLMESSAGE_WARNING >> 24)),INSTALLLOGMODE_USER = (1 << (INSTALLMESSAGE_USER >> 24)),
114 INSTALLLOGMODE_INFO = (1 << (INSTALLMESSAGE_INFO >> 24)),INSTALLLOGMODE_RESOLVESOURCE = (1 << (INSTALLMESSAGE_RESOLVESOURCE >> 24)),
115 INSTALLLOGMODE_OUTOFDISKSPACE = (1 << (INSTALLMESSAGE_OUTOFDISKSPACE >> 24)),INSTALLLOGMODE_ACTIONSTART = (1 << (INSTALLMESSAGE_ACTIONSTART >> 24)),
116 INSTALLLOGMODE_ACTIONDATA = (1 << (INSTALLMESSAGE_ACTIONDATA >> 24)),INSTALLLOGMODE_COMMONDATA = (1 << (INSTALLMESSAGE_COMMONDATA >> 24)),
117 INSTALLLOGMODE_PROPERTYDUMP = (1 << (INSTALLMESSAGE_PROGRESS >> 24)),INSTALLLOGMODE_VERBOSE = (1 << (INSTALLMESSAGE_INITIALIZE >> 24)),
118 INSTALLLOGMODE_EXTRADEBUG = (1 << (INSTALLMESSAGE_TERMINATE >> 24)),INSTALLLOGMODE_LOGONLYONERROR = (1 << (INSTALLMESSAGE_SHOWDIALOG >> 24)),
119 INSTALLLOGMODE_PROGRESS = (1 << (INSTALLMESSAGE_PROGRESS >> 24)),INSTALLLOGMODE_INITIALIZE = (1 << (INSTALLMESSAGE_INITIALIZE >> 24)),
120 INSTALLLOGMODE_TERMINATE = (1 << (INSTALLMESSAGE_TERMINATE >> 24)),INSTALLLOGMODE_SHOWDIALOG = (1 << (INSTALLMESSAGE_SHOWDIALOG >> 24)),
121 INSTALLLOGMODE_FILESINUSE = (1 << (INSTALLMESSAGE_FILESINUSE >> 24))
122 } INSTALLLOGMODE;
123
124 typedef enum tagINSTALLLOGATTRIBUTES {
125 INSTALLLOGATTRIBUTES_APPEND = (1 << 0),INSTALLLOGATTRIBUTES_FLUSHEACHLINE = (1 << 1)
126 } INSTALLLOGATTRIBUTES;
127
128 typedef enum tagINSTALLFEATUREATTRIBUTE {
129 INSTALLFEATUREATTRIBUTE_FAVORLOCAL = 1 << 0,INSTALLFEATUREATTRIBUTE_FAVORSOURCE = 1 << 1,
130 INSTALLFEATUREATTRIBUTE_FOLLOWPARENT = 1 << 2,INSTALLFEATUREATTRIBUTE_FAVORADVERTISE = 1 << 3,
131 INSTALLFEATUREATTRIBUTE_DISALLOWADVERTISE = 1 << 4,INSTALLFEATUREATTRIBUTE_NOUNSUPPORTEDADVERTISE = 1 << 5
132 } INSTALLFEATUREATTRIBUTE;
133
134 typedef enum tagINSTALLMODE {
135 #if (_WIN32_MSI >= 150)
136 INSTALLMODE_NODETECTION_ANY = -4,
137 #endif
138 INSTALLMODE_NOSOURCERESOLUTION = -3,INSTALLMODE_NODETECTION = -2,INSTALLMODE_EXISTING = -1,INSTALLMODE_DEFAULT = 0
139 } INSTALLMODE;
140
141 #if (_WIN32_MSI >= 300)
142 typedef enum tagMSIPATCHSTATE {
143 MSIPATCHSTATE_INVALID = 0,MSIPATCHSTATE_APPLIED = 1,MSIPATCHSTATE_SUPERSEDED = 2,MSIPATCHSTATE_OBSOLETED = 4,MSIPATCHSTATE_REGISTERED = 8,
144 MSIPATCHSTATE_ALL = (MSIPATCHSTATE_APPLIED | MSIPATCHSTATE_SUPERSEDED | MSIPATCHSTATE_OBSOLETED | MSIPATCHSTATE_REGISTERED)
145 } MSIPATCHSTATE;
146
147 typedef enum tagMSIINSTALLCONTEXT {
148 MSIINSTALLCONTEXT_FIRSTVISIBLE = 0,MSIINSTALLCONTEXT_NONE = 0,MSIINSTALLCONTEXT_USERMANAGED = 1,MSIINSTALLCONTEXT_USERUNMANAGED = 2,
149 MSIINSTALLCONTEXT_MACHINE = 4,
150 MSIINSTALLCONTEXT_ALL = (MSIINSTALLCONTEXT_USERMANAGED | MSIINSTALLCONTEXT_USERUNMANAGED | MSIINSTALLCONTEXT_MACHINE),
151 MSIINSTALLCONTEXT_ALLUSERMANAGED = 8
152 } MSIINSTALLCONTEXT;
153
154 typedef enum tagMSIPATCHDATATYPE {
155 MSIPATCH_DATATYPE_PATCHFILE = 0,MSIPATCH_DATATYPE_XMLPATH = 1,MSIPATCH_DATATYPE_XMLBLOB = 2
156 } MSIPATCHDATATYPE,*PMSIPATCHDATATYPE;
157
158 typedef struct tagMSIPATCHSEQUENCEINFOA {
159 LPCSTR szPatchData;
160 MSIPATCHDATATYPE ePatchDataType;
161 DWORD dwOrder;
162 UINT uStatus;
163 } MSIPATCHSEQUENCEINFOA,*PMSIPATCHSEQUENCEINFOA;
164
165 typedef struct tagMSIPATCHSEQUENCEINFOW {
166 LPCWSTR szPatchData;
167 MSIPATCHDATATYPE ePatchDataType;
168 DWORD dwOrder;
169 UINT uStatus;
170 } MSIPATCHSEQUENCEINFOW,*PMSIPATCHSEQUENCEINFOW;
171 #ifdef UNICODE
172 typedef MSIPATCHSEQUENCEINFOW MSIPATCHSEQUENCEINFO;
173 typedef PMSIPATCHSEQUENCEINFOW PMSIPATCHSEQUENCEINFO;
174 #else
175 typedef MSIPATCHSEQUENCEINFOA MSIPATCHSEQUENCEINFO;
176 typedef PMSIPATCHSEQUENCEINFOA PMSIPATCHSEQUENCEINFO;
177 #endif
178 #endif
179
180 #define MAX_FEATURE_CHARS 38
181
182 #define INSTALLPROPERTY_PACKAGENAME __TEXT("PackageName")
183 #define INSTALLPROPERTY_TRANSFORMS __TEXT("Transforms")
184 #define INSTALLPROPERTY_LANGUAGE __TEXT("Language")
185 #define INSTALLPROPERTY_PRODUCTNAME __TEXT("ProductName")
186 #define INSTALLPROPERTY_ASSIGNMENTTYPE __TEXT("AssignmentType")
187 #if (_WIN32_MSI >= 150)
188 #define INSTALLPROPERTY_INSTANCETYPE __TEXT("InstanceType")
189 #endif
190 #if (_WIN32_MSI >= 300)
191 #define INSTALLPROPERTY_AUTHORIZED_LUA_APP __TEXT("AuthorizedLUAApp")
192 #endif
193
194 #define INSTALLPROPERTY_PACKAGECODE __TEXT("PackageCode")
195 #define INSTALLPROPERTY_VERSION __TEXT("Version")
196 #if (_WIN32_MSI >= 110)
197 #define INSTALLPROPERTY_PRODUCTICON __TEXT("ProductIcon")
198 #endif
199
200 #define INSTALLPROPERTY_INSTALLEDPRODUCTNAME __TEXT("InstalledProductName")
201 #define INSTALLPROPERTY_VERSIONSTRING __TEXT("VersionString")
202 #define INSTALLPROPERTY_HELPLINK __TEXT("HelpLink")
203 #define INSTALLPROPERTY_HELPTELEPHONE __TEXT("HelpTelephone")
204 #define INSTALLPROPERTY_INSTALLLOCATION __TEXT("InstallLocation")
205 #define INSTALLPROPERTY_INSTALLSOURCE __TEXT("InstallSource")
206 #define INSTALLPROPERTY_INSTALLDATE __TEXT("InstallDate")
207 #define INSTALLPROPERTY_PUBLISHER __TEXT("Publisher")
208 #define INSTALLPROPERTY_LOCALPACKAGE __TEXT("LocalPackage")
209 #define INSTALLPROPERTY_URLINFOABOUT __TEXT("URLInfoAbout")
210 #define INSTALLPROPERTY_URLUPDATEINFO __TEXT("URLUpdateInfo")
211 #define INSTALLPROPERTY_VERSIONMINOR __TEXT("VersionMinor")
212 #define INSTALLPROPERTY_VERSIONMAJOR __TEXT("VersionMajor")
213 #define INSTALLPROPERTY_PRODUCTID __TEXT("ProductID")
214 #define INSTALLPROPERTY_REGCOMPANY __TEXT("RegCompany")
215 #define INSTALLPROPERTY_REGOWNER __TEXT("RegOwner")
216
217 #if (_WIN32_MSI >= 300)
218 #define INSTALLPROPERTY_UNINSTALLABLE __TEXT("Uninstallable")
219 #define INSTALLPROPERTY_PRODUCTSTATE __TEXT("State")
220 #define INSTALLPROPERTY_PATCHSTATE __TEXT("State")
221 #define INSTALLPROPERTY_PATCHTYPE __TEXT("PatchType")
222 #define INSTALLPROPERTY_LUAENABLED __TEXT("LUAEnabled")
223 #define INSTALLPROPERTY_DISPLAYNAME __TEXT("DisplayName")
224 #define INSTALLPROPERTY_MOREINFOURL __TEXT("MoreInfoURL")
225
226 #define INSTALLPROPERTY_LASTUSEDSOURCE __TEXT("LastUsedSource")
227 #define INSTALLPROPERTY_LASTUSEDTYPE __TEXT("LastUsedType")
228 #define INSTALLPROPERTY_MEDIAPACKAGEPATH __TEXT("MediaPackagePath")
229 #define INSTALLPROPERTY_DISKPROMPT __TEXT("DiskPrompt")
230 #endif
231
232 typedef enum tagSCRIPTFLAGS {
233 SCRIPTFLAGS_CACHEINFO = 0x00000001L,SCRIPTFLAGS_SHORTCUTS = 0x00000004L,SCRIPTFLAGS_MACHINEASSIGN = 0x00000008L,
234 SCRIPTFLAGS_REGDATA_CNFGINFO = 0x00000020L,SCRIPTFLAGS_VALIDATE_TRANSFORMS_LIST = 0x00000040L,
235 #if (_WIN32_MSI >= 110)
236 SCRIPTFLAGS_REGDATA_CLASSINFO = 0x00000080L,SCRIPTFLAGS_REGDATA_EXTENSIONINFO = 0x00000100L,
237 SCRIPTFLAGS_REGDATA_APPINFO = SCRIPTFLAGS_REGDATA_CLASSINFO | SCRIPTFLAGS_REGDATA_EXTENSIONINFO,
238 #else
239 SCRIPTFLAGS_REGDATA_APPINFO = 0x00000010L,
240 #endif
241 SCRIPTFLAGS_REGDATA = SCRIPTFLAGS_REGDATA_APPINFO | SCRIPTFLAGS_REGDATA_CNFGINFO
242 } SCRIPTFLAGS;
243
244 typedef enum tagADVERTISEFLAGS {
245 ADVERTISEFLAGS_MACHINEASSIGN = 0,ADVERTISEFLAGS_USERASSIGN = 1
246 } ADVERTISEFLAGS;
247
248 typedef enum tagINSTALLTYPE {
249 INSTALLTYPE_DEFAULT = 0,INSTALLTYPE_NETWORK_IMAGE = 1,INSTALLTYPE_SINGLE_INSTANCE = 2
250 } INSTALLTYPE;
251
252 #if (_WIN32_MSI >= 150)
253 typedef struct _MSIFILEHASHINFO {
254 ULONG dwFileHashInfoSize;
255 ULONG dwData [4 ];
256 } MSIFILEHASHINFO,*PMSIFILEHASHINFO;
257
258 typedef enum tagMSIARCHITECTUREFLAGS {
259 MSIARCHITECTUREFLAGS_X86 = 0x00000001L,MSIARCHITECTUREFLAGS_IA64 = 0x00000002L,MSIARCHITECTUREFLAGS_AMD64 = 0x00000004L
260 } MSIARCHITECTUREFLAGS;
261
262 typedef enum tagMSIOPENPACKAGEFLAGS {
263 MSIOPENPACKAGEFLAGS_IGNOREMACHINESTATE = 0x00000001L
264 } MSIOPENPACKAGEFLAGS;
265
266 typedef enum tagMSIADVERTISEOPTIONFLAGS {
267 MSIADVERTISEOPTIONFLAGS_INSTANCE = 0x00000001L
268 } MSIADVERTISEOPTIONFLAGS;
269 #endif
270
271 #if (_WIN32_MSI >= 300)
272 typedef enum tagMSISOURCETYPE {
273 MSISOURCETYPE_UNKNOWN = 0x00000000L,MSISOURCETYPE_NETWORK = 0x00000001L,MSISOURCETYPE_URL = 0x00000002L,MSISOURCETYPE_MEDIA = 0x00000004L
274 } MSISOURCETYPE;
275
276 typedef enum tagMSICODE {
277 MSICODE_PRODUCT = 0x00000000L,MSICODE_PATCH = 0x40000000L
278 } MSICODE;
279 #endif
280
281 #ifdef __cplusplus
282 extern "C" {
283 #endif
284
285 INSTALLUILEVEL WINAPI MsiSetInternalUI(INSTALLUILEVEL dwUILevel,HWND *phWnd);
286 INSTALLUI_HANDLERA WINAPI MsiSetExternalUIA(INSTALLUI_HANDLERA puiHandler,DWORD dwMessageFilter,LPVOID pvContext);
287 INSTALLUI_HANDLERW WINAPI MsiSetExternalUIW(INSTALLUI_HANDLERW puiHandler,DWORD dwMessageFilter,LPVOID pvContext);
288 #ifdef UNICODE
289 #define MsiSetExternalUI MsiSetExternalUIW
290 #else
291 #define MsiSetExternalUI MsiSetExternalUIA
292 #endif
293
294 #if (_WIN32_MSI >= 310)
295 UINT WINAPI MsiSetExternalUIRecord(INSTALLUI_HANDLER_RECORD puiHandler,DWORD dwMessageFilter,LPVOID pvContext,PINSTALLUI_HANDLER_RECORD ppuiPrevHandler);
296 #endif
297
298 UINT WINAPI MsiEnableLogA(DWORD dwLogMode,LPCSTR szLogFile,DWORD dwLogAttributes);
299 UINT WINAPI MsiEnableLogW(DWORD dwLogMode,LPCWSTR szLogFile,DWORD dwLogAttributes);
300 #ifdef UNICODE
301 #define MsiEnableLog MsiEnableLogW
302 #else
303 #define MsiEnableLog MsiEnableLogA
304 #endif
305
306 INSTALLSTATE WINAPI MsiQueryProductStateA(LPCSTR szProduct);
307 INSTALLSTATE WINAPI MsiQueryProductStateW(LPCWSTR szProduct);
308 #ifdef UNICODE
309 #define MsiQueryProductState MsiQueryProductStateW
310 #else
311 #define MsiQueryProductState MsiQueryProductStateA
312 #endif
313
314 UINT WINAPI MsiGetProductInfoA(LPCSTR szProduct,LPCSTR szAttribute,LPSTR lpValueBuf,DWORD *pcchValueBuf);
315 UINT WINAPI MsiGetProductInfoW(LPCWSTR szProduct,LPCWSTR szAttribute,LPWSTR lpValueBuf,DWORD *pcchValueBuf);
316 #ifdef UNICODE
317 #define MsiGetProductInfo MsiGetProductInfoW
318 #else
319 #define MsiGetProductInfo MsiGetProductInfoA
320 #endif
321
322 #if (_WIN32_MSI >= 300)
323
324 UINT WINAPI MsiGetProductInfoExA(LPCSTR szProductCode,LPCSTR szUserSid,MSIINSTALLCONTEXT dwContext,LPCSTR szProperty,LPSTR szValue,LPDWORD pcchValue);
325 UINT WINAPI MsiGetProductInfoExW(LPCWSTR szProductCode,LPCWSTR szUserSid,MSIINSTALLCONTEXT dwContext,LPCWSTR szProperty,LPWSTR szValue,LPDWORD pcchValue);
326 #ifdef UNICODE
327 #define MsiGetProductInfoEx MsiGetProductInfoExW
328 #else
329 #define MsiGetProductInfoEx MsiGetProductInfoExA
330 #endif
331 #endif
332
333 UINT WINAPI MsiInstallProductA(LPCSTR szPackagePath,LPCSTR szCommandLine);
334 UINT WINAPI MsiInstallProductW(LPCWSTR szPackagePath,LPCWSTR szCommandLine);
335 #ifdef UNICODE
336 #define MsiInstallProduct MsiInstallProductW
337 #else
338 #define MsiInstallProduct MsiInstallProductA
339 #endif
340
341 UINT WINAPI MsiConfigureProductA(LPCSTR szProduct,int iInstallLevel,INSTALLSTATE eInstallState);
342 UINT WINAPI MsiConfigureProductW(LPCWSTR szProduct,int iInstallLevel,INSTALLSTATE eInstallState);
343 #ifdef UNICODE
344 #define MsiConfigureProduct MsiConfigureProductW
345 #else
346 #define MsiConfigureProduct MsiConfigureProductA
347 #endif
348
349 UINT WINAPI MsiConfigureProductExA(LPCSTR szProduct,int iInstallLevel,INSTALLSTATE eInstallState,LPCSTR szCommandLine);
350 UINT WINAPI MsiConfigureProductExW(LPCWSTR szProduct,int iInstallLevel,INSTALLSTATE eInstallState,LPCWSTR szCommandLine);
351 #ifdef UNICODE
352 #define MsiConfigureProductEx MsiConfigureProductExW
353 #else
354 #define MsiConfigureProductEx MsiConfigureProductExA
355 #endif
356
357 UINT WINAPI MsiReinstallProductA(LPCSTR szProduct,DWORD szReinstallMode);
358 UINT WINAPI MsiReinstallProductW(LPCWSTR szProduct,DWORD szReinstallMode);
359 #ifdef UNICODE
360 #define MsiReinstallProduct MsiReinstallProductW
361 #else
362 #define MsiReinstallProduct MsiReinstallProductA
363 #endif
364
365 #if (_WIN32_MSI >= 150)
366
367 UINT WINAPI MsiAdvertiseProductExA(LPCSTR szPackagePath,LPCSTR szScriptfilePath,LPCSTR szTransforms,LANGID lgidLanguage,DWORD dwPlatform,DWORD dwOptions);
368 UINT WINAPI MsiAdvertiseProductExW(LPCWSTR szPackagePath,LPCWSTR szScriptfilePath,LPCWSTR szTransforms,LANGID lgidLanguage,DWORD dwPlatform,DWORD dwOptions);
369 #ifdef UNICODE
370 #define MsiAdvertiseProductEx MsiAdvertiseProductExW
371 #else
372 #define MsiAdvertiseProductEx MsiAdvertiseProductExA
373 #endif
374 #endif
375
376 UINT WINAPI MsiAdvertiseProductA(LPCSTR szPackagePath,LPCSTR szScriptfilePath,LPCSTR szTransforms,LANGID lgidLanguage);
377 UINT WINAPI MsiAdvertiseProductW(LPCWSTR szPackagePath,LPCWSTR szScriptfilePath,LPCWSTR szTransforms,LANGID lgidLanguage);
378 #ifdef UNICODE
379 #define MsiAdvertiseProduct MsiAdvertiseProductW
380 #else
381 #define MsiAdvertiseProduct MsiAdvertiseProductA
382 #endif
383
384 #if (_WIN32_MSI >= 150)
385
386 UINT WINAPI MsiProcessAdvertiseScriptA(LPCSTR szScriptFile,LPCSTR szIconFolder,HKEY hRegData,WINBOOL fShortcuts,WINBOOL fRemoveItems);
387 UINT WINAPI MsiProcessAdvertiseScriptW(LPCWSTR szScriptFile,LPCWSTR szIconFolder,HKEY hRegData,WINBOOL fShortcuts,WINBOOL fRemoveItems);
388 #ifdef UNICODE
389 #define MsiProcessAdvertiseScript MsiProcessAdvertiseScriptW
390 #else
391 #define MsiProcessAdvertiseScript MsiProcessAdvertiseScriptA
392 #endif
393 #endif
394
395 UINT WINAPI MsiAdvertiseScriptA(LPCSTR szScriptFile,DWORD dwFlags,PHKEY phRegData,WINBOOL fRemoveItems);
396 UINT WINAPI MsiAdvertiseScriptW(LPCWSTR szScriptFile,DWORD dwFlags,PHKEY phRegData,WINBOOL fRemoveItems);
397 #ifdef UNICODE
398 #define MsiAdvertiseScript MsiAdvertiseScriptW
399 #else
400 #define MsiAdvertiseScript MsiAdvertiseScriptA
401 #endif
402
403 UINT WINAPI MsiGetProductInfoFromScriptA(LPCSTR szScriptFile,LPSTR lpProductBuf39,LANGID *plgidLanguage,DWORD *pdwVersion,LPSTR lpNameBuf,DWORD *pcchNameBuf,LPSTR lpPackageBuf,DWORD *pcchPackageBuf);
404 UINT WINAPI MsiGetProductInfoFromScriptW(LPCWSTR szScriptFile,LPWSTR lpProductBuf39,LANGID *plgidLanguage,DWORD *pdwVersion,LPWSTR lpNameBuf,DWORD *pcchNameBuf,LPWSTR lpPackageBuf,DWORD *pcchPackageBuf);
405 #ifdef UNICODE
406 #define MsiGetProductInfoFromScript MsiGetProductInfoFromScriptW
407 #else
408 #define MsiGetProductInfoFromScript MsiGetProductInfoFromScriptA
409 #endif
410
411 UINT WINAPI MsiGetProductCodeA(LPCSTR szComponent,LPSTR lpBuf39);
412 UINT WINAPI MsiGetProductCodeW(LPCWSTR szComponent,LPWSTR lpBuf39);
413 #ifdef UNICODE
414 #define MsiGetProductCode MsiGetProductCodeW
415 #else
416 #define MsiGetProductCode MsiGetProductCodeA
417 #endif
418
419 USERINFOSTATE WINAPI MsiGetUserInfoA(LPCSTR szProduct,LPSTR lpUserNameBuf,DWORD *pcchUserNameBuf,LPSTR lpOrgNameBuf,DWORD *pcchOrgNameBuf,LPSTR lpSerialBuf,DWORD *pcchSerialBuf);
420 USERINFOSTATE WINAPI MsiGetUserInfoW(LPCWSTR szProduct,LPWSTR lpUserNameBuf,DWORD *pcchUserNameBuf,LPWSTR lpOrgNameBuf,DWORD *pcchOrgNameBuf,LPWSTR lpSerialBuf,DWORD *pcchSerialBuf);
421 #ifdef UNICODE
422 #define MsiGetUserInfo MsiGetUserInfoW
423 #else
424 #define MsiGetUserInfo MsiGetUserInfoA
425 #endif
426
427 UINT WINAPI MsiCollectUserInfoA(LPCSTR szProduct);
428 UINT WINAPI MsiCollectUserInfoW(LPCWSTR szProduct);
429 #ifdef UNICODE
430 #define MsiCollectUserInfo MsiCollectUserInfoW
431 #else
432 #define MsiCollectUserInfo MsiCollectUserInfoA
433 #endif
434
435 UINT WINAPI MsiApplyPatchA(LPCSTR szPatchPackage,LPCSTR szInstallPackage,INSTALLTYPE eInstallType,LPCSTR szCommandLine);
436 UINT WINAPI MsiApplyPatchW(LPCWSTR szPatchPackage,LPCWSTR szInstallPackage,INSTALLTYPE eInstallType,LPCWSTR szCommandLine);
437 #ifdef UNICODE
438 #define MsiApplyPatch MsiApplyPatchW
439 #else
440 #define MsiApplyPatch MsiApplyPatchA
441 #endif
442
443 UINT WINAPI MsiGetPatchInfoA(LPCSTR szPatch,LPCSTR szAttribute,LPSTR lpValueBuf,DWORD *pcchValueBuf);
444 UINT WINAPI MsiGetPatchInfoW(LPCWSTR szPatch,LPCWSTR szAttribute,LPWSTR lpValueBuf,DWORD *pcchValueBuf);
445 #ifdef UNICODE
446 #define MsiGetPatchInfo MsiGetPatchInfoW
447 #else
448 #define MsiGetPatchInfo MsiGetPatchInfoA
449 #endif
450
451 UINT WINAPI MsiEnumPatchesA(LPCSTR szProduct,DWORD iPatchIndex,LPSTR lpPatchBuf,LPSTR lpTransformsBuf,DWORD *pcchTransformsBuf);
452 UINT WINAPI MsiEnumPatchesW(LPCWSTR szProduct,DWORD iPatchIndex,LPWSTR lpPatchBuf,LPWSTR lpTransformsBuf,DWORD *pcchTransformsBuf);
453 #ifdef UNICODE
454 #define MsiEnumPatches MsiEnumPatchesW
455 #else
456 #define MsiEnumPatches MsiEnumPatchesA
457 #endif
458
459 #if (_WIN32_MSI >= 300)
460
461 UINT WINAPI MsiRemovePatchesA(LPCSTR szPatchList,LPCSTR szProductCode,INSTALLTYPE eUninstallType,LPCSTR szPropertyList);
462 UINT WINAPI MsiRemovePatchesW(LPCWSTR szPatchList,LPCWSTR szProductCode,INSTALLTYPE eUninstallType,LPCWSTR szPropertyList);
463 #ifdef UNICODE
464 #define MsiRemovePatches MsiRemovePatchesW
465 #else
466 #define MsiRemovePatches MsiRemovePatchesA
467 #endif
468
469 UINT WINAPI MsiExtractPatchXMLDataA(LPCSTR szPatchPath,DWORD dwReserved,LPSTR szXMLData,DWORD *pcchXMLData);
470 UINT WINAPI MsiExtractPatchXMLDataW(LPCWSTR szPatchPath,DWORD dwReserved,LPWSTR szXMLData,DWORD *pcchXMLData);
471 #ifdef UNICODE
472 #define MsiExtractPatchXMLData MsiExtractPatchXMLDataW
473 #else
474 #define MsiExtractPatchXMLData MsiExtractPatchXMLDataA
475 #endif
476
477 UINT WINAPI MsiGetPatchInfoExA(LPCSTR szPatchCode,LPCSTR szProductCode,LPCSTR szUserSid,MSIINSTALLCONTEXT dwContext,LPCSTR szProperty,LPSTR lpValue,DWORD *pcchValue);
478 UINT WINAPI MsiGetPatchInfoExW(LPCWSTR szPatchCode,LPCWSTR szProductCode,LPCWSTR szUserSid,MSIINSTALLCONTEXT dwContext,LPCWSTR szProperty,LPWSTR lpValue,DWORD *pcchValue);
479 #ifdef UNICODE
480 #define MsiGetPatchInfoEx MsiGetPatchInfoExW
481 #else
482 #define MsiGetPatchInfoEx MsiGetPatchInfoExA
483 #endif
484
485 UINT WINAPI MsiApplyMultiplePatchesA(LPCSTR szPatchPackages,LPCSTR szProductCode,LPCSTR szPropertiesList);
486 UINT WINAPI MsiApplyMultiplePatchesW(LPCWSTR szPatchPackages,LPCWSTR szProductCode,LPCWSTR szPropertiesList);
487 #ifdef UNICODE
488 #define MsiApplyMultiplePatches MsiApplyMultiplePatchesW
489 #else
490 #define MsiApplyMultiplePatches MsiApplyMultiplePatchesA
491 #endif
492
493 UINT WINAPI MsiDeterminePatchSequenceA(LPCSTR szProductCode,LPCSTR szUserSid,MSIINSTALLCONTEXT dwContext,DWORD cPatchInfo,PMSIPATCHSEQUENCEINFOA pPatchInfo);
494 UINT WINAPI MsiDeterminePatchSequenceW(LPCWSTR szProductCode,LPCWSTR szUserSid,MSIINSTALLCONTEXT dwContext,DWORD cPatchInfo,PMSIPATCHSEQUENCEINFOW pPatchInfo);
495 #ifdef UNICODE
496 #define MsiDeterminePatchSequence MsiDeterminePatchSequenceW
497 #else
498 #define MsiDeterminePatchSequence MsiDeterminePatchSequenceA
499 #endif
500
501 UINT WINAPI MsiDetermineApplicablePatchesA(LPCSTR szProductPackagePath,DWORD cPatchInfo,PMSIPATCHSEQUENCEINFOA pPatchInfo);
502 UINT WINAPI MsiDetermineApplicablePatchesW(LPCWSTR szProductPackagePath,DWORD cPatchInfo,PMSIPATCHSEQUENCEINFOW pPatchInfo);
503 #ifdef UNICODE
504 #define MsiDetermineApplicablePatches MsiDetermineApplicablePatchesW
505 #else
506 #define MsiDetermineApplicablePatches MsiDetermineApplicablePatchesA
507 #endif
508
509 UINT WINAPI MsiEnumPatchesExA(LPCSTR szProductCode,LPCSTR szUserSid,DWORD dwContext,DWORD dwFilter,DWORD dwIndex,CHAR szPatchCode[39],CHAR szTargetProductCode[39],MSIINSTALLCONTEXT *pdwTargetProductContext,LPSTR szTargetUserSid,LPDWORD pcchTargetUserSid);
510 UINT WINAPI MsiEnumPatchesExW(LPCWSTR szProductCode,LPCWSTR szUserSid,DWORD dwContext,DWORD dwFilter,DWORD dwIndex,WCHAR szPatchCode[39],WCHAR szTargetProductCode[39],MSIINSTALLCONTEXT *pdwTargetProductContext,LPWSTR szTargetUserSid,LPDWORD pcchTargetUserSid);
511 #ifdef UNICODE
512 #define MsiEnumPatchesEx MsiEnumPatchesExW
513 #else
514 #define MsiEnumPatchesEx MsiEnumPatchesExA
515 #endif
516 #endif
517
518 INSTALLSTATE WINAPI MsiQueryFeatureStateA(LPCSTR szProduct,LPCSTR szFeature);
519 INSTALLSTATE WINAPI MsiQueryFeatureStateW(LPCWSTR szProduct,LPCWSTR szFeature);
520 #ifdef UNICODE
521 #define MsiQueryFeatureState MsiQueryFeatureStateW
522 #else
523 #define MsiQueryFeatureState MsiQueryFeatureStateA
524 #endif
525
526 #if (_WIN32_MSI >= 300)
527
528 UINT WINAPI MsiQueryFeatureStateExA(LPCSTR szProductCode,LPCSTR szUserSid,MSIINSTALLCONTEXT dwContext,LPCSTR szFeature,INSTALLSTATE *pdwState);
529 UINT WINAPI MsiQueryFeatureStateExW(LPCWSTR szProductCode,LPCWSTR szUserSid,MSIINSTALLCONTEXT dwContext,LPCWSTR szFeature,INSTALLSTATE *pdwState);
530 #ifdef UNICODE
531 #define MsiQueryFeatureStateEx MsiQueryFeatureStateExW
532 #else
533 #define MsiQueryFeatureStateEx MsiQueryFeatureStateExA
534 #endif
535 #endif
536
537 INSTALLSTATE WINAPI MsiUseFeatureA(LPCSTR szProduct,LPCSTR szFeature);
538 INSTALLSTATE WINAPI MsiUseFeatureW(LPCWSTR szProduct,LPCWSTR szFeature);
539 #ifdef UNICODE
540 #define MsiUseFeature MsiUseFeatureW
541 #else
542 #define MsiUseFeature MsiUseFeatureA
543 #endif
544
545 INSTALLSTATE WINAPI MsiUseFeatureExA(LPCSTR szProduct,LPCSTR szFeature,DWORD dwInstallMode,DWORD dwReserved);
546 INSTALLSTATE WINAPI MsiUseFeatureExW(LPCWSTR szProduct,LPCWSTR szFeature,DWORD dwInstallMode,DWORD dwReserved);
547 #ifdef UNICODE
548 #define MsiUseFeatureEx MsiUseFeatureExW
549 #else
550 #define MsiUseFeatureEx MsiUseFeatureExA
551 #endif
552
553 UINT WINAPI MsiGetFeatureUsageA(LPCSTR szProduct,LPCSTR szFeature,DWORD *pdwUseCount,WORD *pwDateUsed);
554 UINT WINAPI MsiGetFeatureUsageW(LPCWSTR szProduct,LPCWSTR szFeature,DWORD *pdwUseCount,WORD *pwDateUsed);
555 #ifdef UNICODE
556 #define MsiGetFeatureUsage MsiGetFeatureUsageW
557 #else
558 #define MsiGetFeatureUsage MsiGetFeatureUsageA
559 #endif
560
561 UINT WINAPI MsiConfigureFeatureA(LPCSTR szProduct,LPCSTR szFeature,INSTALLSTATE eInstallState);
562 UINT WINAPI MsiConfigureFeatureW(LPCWSTR szProduct,LPCWSTR szFeature,INSTALLSTATE eInstallState);
563 #ifdef UNICODE
564 #define MsiConfigureFeature MsiConfigureFeatureW
565 #else
566 #define MsiConfigureFeature MsiConfigureFeatureA
567 #endif
568
569 UINT WINAPI MsiReinstallFeatureA(LPCSTR szProduct,LPCSTR szFeature,DWORD dwReinstallMode);
570 UINT WINAPI MsiReinstallFeatureW(LPCWSTR szProduct,LPCWSTR szFeature,DWORD dwReinstallMode);
571 #ifdef UNICODE
572 #define MsiReinstallFeature MsiReinstallFeatureW
573 #else
574 #define MsiReinstallFeature MsiReinstallFeatureA
575 #endif
576
577 UINT WINAPI MsiProvideComponentA(LPCSTR szProduct,LPCSTR szFeature,LPCSTR szComponent,DWORD dwInstallMode,LPSTR lpPathBuf,DWORD *pcchPathBuf);
578 UINT WINAPI MsiProvideComponentW(LPCWSTR szProduct,LPCWSTR szFeature,LPCWSTR szComponent,DWORD dwInstallMode,LPWSTR lpPathBuf,DWORD *pcchPathBuf);
579 #ifdef UNICODE
580 #define MsiProvideComponent MsiProvideComponentW
581 #else
582 #define MsiProvideComponent MsiProvideComponentA
583 #endif
584
585 UINT WINAPI MsiProvideQualifiedComponentA(LPCSTR szCategory,LPCSTR szQualifier,DWORD dwInstallMode,LPSTR lpPathBuf,DWORD *pcchPathBuf);
586 UINT WINAPI MsiProvideQualifiedComponentW(LPCWSTR szCategory,LPCWSTR szQualifier,DWORD dwInstallMode,LPWSTR lpPathBuf,DWORD *pcchPathBuf);
587 #ifdef UNICODE
588 #define MsiProvideQualifiedComponent MsiProvideQualifiedComponentW
589 #else
590 #define MsiProvideQualifiedComponent MsiProvideQualifiedComponentA
591 #endif
592
593 UINT WINAPI MsiProvideQualifiedComponentExA(LPCSTR szCategory,LPCSTR szQualifier,DWORD dwInstallMode,LPCSTR szProduct,DWORD dwUnused1,DWORD dwUnused2,LPSTR lpPathBuf,DWORD *pcchPathBuf);
594 UINT WINAPI MsiProvideQualifiedComponentExW(LPCWSTR szCategory,LPCWSTR szQualifier,DWORD dwInstallMode,LPCWSTR szProduct,DWORD dwUnused1,DWORD dwUnused2,LPWSTR lpPathBuf,DWORD *pcchPathBuf);
595 #ifdef UNICODE
596 #define MsiProvideQualifiedComponentEx MsiProvideQualifiedComponentExW
597 #else
598 #define MsiProvideQualifiedComponentEx MsiProvideQualifiedComponentExA
599 #endif
600
601 INSTALLSTATE WINAPI MsiGetComponentPathA(LPCSTR szProduct,LPCSTR szComponent,LPSTR lpPathBuf,DWORD *pcchBuf);
602 INSTALLSTATE WINAPI MsiGetComponentPathW(LPCWSTR szProduct,LPCWSTR szComponent,LPWSTR lpPathBuf,DWORD *pcchBuf);
603 #ifdef UNICODE
604 #define MsiGetComponentPath MsiGetComponentPathW
605 #else
606 #define MsiGetComponentPath MsiGetComponentPathA
607 #endif
608
609 #if (_WIN32_MSI >= 150)
610
611 #define MSIASSEMBLYINFO_NETASSEMBLY 0
612 #define MSIASSEMBLYINFO_WIN32ASSEMBLY 1
613
614 UINT WINAPI MsiProvideAssemblyA(LPCSTR szAssemblyName,LPCSTR szAppContext,DWORD dwInstallMode,DWORD dwAssemblyInfo,LPSTR lpPathBuf,DWORD *pcchPathBuf);
615 UINT WINAPI MsiProvideAssemblyW(LPCWSTR szAssemblyName,LPCWSTR szAppContext,DWORD dwInstallMode,DWORD dwAssemblyInfo,LPWSTR lpPathBuf,DWORD *pcchPathBuf);
616 #ifdef UNICODE
617 #define MsiProvideAssembly MsiProvideAssemblyW
618 #else
619 #define MsiProvideAssembly MsiProvideAssemblyA
620 #endif
621 #endif
622
623 #if (_WIN32_MSI >= 300)
624
625 UINT WINAPI MsiQueryComponentStateA(LPCSTR szProductCode,LPCSTR szUserSid,MSIINSTALLCONTEXT dwContext,LPCSTR szComponentCode,INSTALLSTATE *pdwState);
626 UINT WINAPI MsiQueryComponentStateW(LPCWSTR szProductCode,LPCWSTR szUserSid,MSIINSTALLCONTEXT dwContext,LPCWSTR szComponentCode,INSTALLSTATE *pdwState);
627 #ifdef UNICODE
628 #define MsiQueryComponentState MsiQueryComponentStateW
629 #else
630 #define MsiQueryComponentState MsiQueryComponentStateA
631 #endif
632 #endif
633
634 UINT WINAPI MsiEnumProductsA(DWORD iProductIndex,LPSTR lpProductBuf);
635 UINT WINAPI MsiEnumProductsW(DWORD iProductIndex,LPWSTR lpProductBuf);
636 #ifdef UNICODE
637 #define MsiEnumProducts MsiEnumProductsW
638 #else
639 #define MsiEnumProducts MsiEnumProductsA
640 #endif
641
642 #if (_WIN32_MSI >= 300)
643 UINT WINAPI MsiEnumProductsExA(LPCSTR szProductCode,LPCSTR szUserSid,DWORD dwContext,DWORD dwIndex,CHAR szInstalledProductCode[39],MSIINSTALLCONTEXT *pdwInstalledContext,LPSTR szSid,LPDWORD pcchSid);
644 UINT WINAPI MsiEnumProductsExW(LPCWSTR szProductCode,LPCWSTR szUserSid,DWORD dwContext,DWORD dwIndex,WCHAR szInstalledProductCode[39],MSIINSTALLCONTEXT *pdwInstalledContext,LPWSTR szSid,LPDWORD pcchSid);
645 #ifdef UNICODE
646 #define MsiEnumProductsEx MsiEnumProductsExW
647 #else
648 #define MsiEnumProductsEx MsiEnumProductsExA
649 #endif
650 #endif
651
652 #if (_WIN32_MSI >= 110)
653 UINT WINAPI MsiEnumRelatedProductsA(LPCSTR lpUpgradeCode,DWORD dwReserved,DWORD iProductIndex,LPSTR lpProductBuf);
654 UINT WINAPI MsiEnumRelatedProductsW(LPCWSTR lpUpgradeCode,DWORD dwReserved,DWORD iProductIndex,LPWSTR lpProductBuf);
655 #ifdef UNICODE
656 #define MsiEnumRelatedProducts MsiEnumRelatedProductsW
657 #else
658 #define MsiEnumRelatedProducts MsiEnumRelatedProductsA
659 #endif
660 #endif
661
662 UINT WINAPI MsiEnumFeaturesA(LPCSTR szProduct,DWORD iFeatureIndex,LPSTR lpFeatureBuf,LPSTR lpParentBuf);
663 UINT WINAPI MsiEnumFeaturesW(LPCWSTR szProduct,DWORD iFeatureIndex,LPWSTR lpFeatureBuf,LPWSTR lpParentBuf);
664 #ifdef UNICODE
665 #define MsiEnumFeatures MsiEnumFeaturesW
666 #else
667 #define MsiEnumFeatures MsiEnumFeaturesA
668 #endif
669
670 UINT WINAPI MsiEnumComponentsA(DWORD iComponentIndex,LPSTR lpComponentBuf);
671 UINT WINAPI MsiEnumComponentsW(DWORD iComponentIndex,LPWSTR lpComponentBuf);
672 #ifdef UNICODE
673 #define MsiEnumComponents MsiEnumComponentsW
674 #else
675 #define MsiEnumComponents MsiEnumComponentsA
676 #endif
677
678 UINT WINAPI MsiEnumClientsA(LPCSTR szComponent,DWORD iProductIndex,LPSTR lpProductBuf);
679 UINT WINAPI MsiEnumClientsW(LPCWSTR szComponent,DWORD iProductIndex,LPWSTR lpProductBuf);
680 #ifdef UNICODE
681 #define MsiEnumClients MsiEnumClientsW
682 #else
683 #define MsiEnumClients MsiEnumClientsA
684 #endif
685
686 UINT WINAPI MsiEnumComponentQualifiersA(LPCSTR szComponent,DWORD iIndex,LPSTR lpQualifierBuf,DWORD *pcchQualifierBuf,LPSTR lpApplicationDataBuf,DWORD *pcchApplicationDataBuf);
687 UINT WINAPI MsiEnumComponentQualifiersW(LPCWSTR szComponent,DWORD iIndex,LPWSTR lpQualifierBuf,DWORD *pcchQualifierBuf,LPWSTR lpApplicationDataBuf,DWORD *pcchApplicationDataBuf);
688 #ifdef UNICODE
689 #define MsiEnumComponentQualifiers MsiEnumComponentQualifiersW
690 #else
691 #define MsiEnumComponentQualifiers MsiEnumComponentQualifiersA
692 #endif
693
694 UINT WINAPI MsiOpenProductA(LPCSTR szProduct,MSIHANDLE *hProduct);
695 UINT WINAPI MsiOpenProductW(LPCWSTR szProduct,MSIHANDLE *hProduct);
696 #ifdef UNICODE
697 #define MsiOpenProduct MsiOpenProductW
698 #else
699 #define MsiOpenProduct MsiOpenProductA
700 #endif
701
702 UINT WINAPI MsiOpenPackageA(LPCSTR szPackagePath,MSIHANDLE *hProduct);
703 UINT WINAPI MsiOpenPackageW(LPCWSTR szPackagePath,MSIHANDLE *hProduct);
704 #ifdef UNICODE
705 #define MsiOpenPackage MsiOpenPackageW
706 #else
707 #define MsiOpenPackage MsiOpenPackageA
708 #endif
709
710 #if (_WIN32_MSI >= 150)
711
712 UINT WINAPI MsiOpenPackageExA(LPCSTR szPackagePath,DWORD dwOptions,MSIHANDLE *hProduct);
713 UINT WINAPI MsiOpenPackageExW(LPCWSTR szPackagePath,DWORD dwOptions,MSIHANDLE *hProduct);
714 #ifdef UNICODE
715 #define MsiOpenPackageEx MsiOpenPackageExW
716 #else
717 #define MsiOpenPackageEx MsiOpenPackageExA
718 #endif
719 #endif
720
721 UINT WINAPI MsiGetProductPropertyA(MSIHANDLE hProduct,LPCSTR szProperty,LPSTR lpValueBuf,DWORD *pcchValueBuf);
722 UINT WINAPI MsiGetProductPropertyW(MSIHANDLE hProduct,LPCWSTR szProperty,LPWSTR lpValueBuf,DWORD *pcchValueBuf);
723 #ifdef UNICODE
724 #define MsiGetProductProperty MsiGetProductPropertyW
725 #else
726 #define MsiGetProductProperty MsiGetProductPropertyA
727 #endif
728
729 UINT WINAPI MsiVerifyPackageA(LPCSTR szPackagePath);
730 UINT WINAPI MsiVerifyPackageW(LPCWSTR szPackagePath);
731 #ifdef UNICODE
732 #define MsiVerifyPackage MsiVerifyPackageW
733 #else
734 #define MsiVerifyPackage MsiVerifyPackageA
735 #endif
736
737 UINT WINAPI MsiGetFeatureInfoA(MSIHANDLE hProduct,LPCSTR szFeature,DWORD *lpAttributes,LPSTR lpTitleBuf,DWORD *pcchTitleBuf,LPSTR lpHelpBuf,DWORD *pcchHelpBuf);
738 UINT WINAPI MsiGetFeatureInfoW(MSIHANDLE hProduct,LPCWSTR szFeature,DWORD *lpAttributes,LPWSTR lpTitleBuf,DWORD *pcchTitleBuf,LPWSTR lpHelpBuf,DWORD *pcchHelpBuf);
739 #ifdef UNICODE
740 #define MsiGetFeatureInfo MsiGetFeatureInfoW
741 #else
742 #define MsiGetFeatureInfo MsiGetFeatureInfoA
743 #endif
744
745 UINT WINAPI MsiInstallMissingComponentA(LPCSTR szProduct,LPCSTR szComponent,INSTALLSTATE eInstallState);
746 UINT WINAPI MsiInstallMissingComponentW(LPCWSTR szProduct,LPCWSTR szComponent,INSTALLSTATE eInstallState);
747 #ifdef UNICODE
748 #define MsiInstallMissingComponent MsiInstallMissingComponentW
749 #else
750 #define MsiInstallMissingComponent MsiInstallMissingComponentA
751 #endif
752
753 UINT WINAPI MsiInstallMissingFileA(LPCSTR szProduct,LPCSTR szFile);
754 UINT WINAPI MsiInstallMissingFileW(LPCWSTR szProduct,LPCWSTR szFile);
755 #ifdef UNICODE
756 #define MsiInstallMissingFile MsiInstallMissingFileW
757 #else
758 #define MsiInstallMissingFile MsiInstallMissingFileA
759 #endif
760
761 INSTALLSTATE WINAPI MsiLocateComponentA(LPCSTR szComponent,LPSTR lpPathBuf,DWORD *pcchBuf);
762 INSTALLSTATE WINAPI MsiLocateComponentW(LPCWSTR szComponent,LPWSTR lpPathBuf,DWORD *pcchBuf);
763 #ifdef UNICODE
764 #define MsiLocateComponent MsiLocateComponentW
765 #else
766 #define MsiLocateComponent MsiLocateComponentA
767 #endif
768
769 #if (_WIN32_MSI >= 110)
770
771 UINT WINAPI MsiSourceListClearAllA(LPCSTR szProduct,LPCSTR szUserName,DWORD dwReserved);
772 UINT WINAPI MsiSourceListClearAllW(LPCWSTR szProduct,LPCWSTR szUserName,DWORD dwReserved);
773 #ifdef UNICODE
774 #define MsiSourceListClearAll MsiSourceListClearAllW
775 #else
776 #define MsiSourceListClearAll MsiSourceListClearAllA
777 #endif
778
779 UINT WINAPI MsiSourceListAddSourceA(LPCSTR szProduct,LPCSTR szUserName,DWORD dwReserved,LPCSTR szSource);
780 UINT WINAPI MsiSourceListAddSourceW(LPCWSTR szProduct,LPCWSTR szUserName,DWORD dwReserved,LPCWSTR szSource);
781 #ifdef UNICODE
782 #define MsiSourceListAddSource MsiSourceListAddSourceW
783 #else
784 #define MsiSourceListAddSource MsiSourceListAddSourceA
785 #endif
786
787 UINT WINAPI MsiSourceListForceResolutionA(LPCSTR szProduct,LPCSTR szUserName,DWORD dwReserved);
788 UINT WINAPI MsiSourceListForceResolutionW(LPCWSTR szProduct,LPCWSTR szUserName,DWORD dwReserved);
789 #ifdef UNICODE
790 #define MsiSourceListForceResolution MsiSourceListForceResolutionW
791 #else
792 #define MsiSourceListForceResolution MsiSourceListForceResolutionA
793 #endif
794 #endif
795
796 #if (_WIN32_MSI >= 300)
797
798 UINT WINAPI MsiSourceListAddSourceExA(LPCSTR szProductCodeOrPatchCode,LPCSTR szUserSid,MSIINSTALLCONTEXT dwContext,DWORD dwOptions,LPCSTR szSource,DWORD dwIndex);
799 UINT WINAPI MsiSourceListAddSourceExW(LPCWSTR szProductCodeOrPatchCode,LPCWSTR szUserSid,MSIINSTALLCONTEXT dwContext,DWORD dwOptions,LPCWSTR szSource,DWORD dwIndex);
800 #ifdef UNICODE
801 #define MsiSourceListAddSourceEx MsiSourceListAddSourceExW
802 #else
803 #define MsiSourceListAddSourceEx MsiSourceListAddSourceExA
804 #endif
805
806 UINT WINAPI MsiSourceListAddMediaDiskA(LPCSTR szProductCodeOrPatchCode,LPCSTR szUserSid,MSIINSTALLCONTEXT dwContext,DWORD dwOptions,DWORD dwDiskId,LPCSTR szVolumeLabel,LPCSTR szDiskPrompt);
807 UINT WINAPI MsiSourceListAddMediaDiskW(LPCWSTR szProductCodeOrPatchCode,LPCWSTR szUserSid,MSIINSTALLCONTEXT dwContext,DWORD dwOptions,DWORD dwDiskId,LPCWSTR szVolumeLabel,LPCWSTR szDiskPrompt);
808 #ifdef UNICODE
809 #define MsiSourceListAddMediaDisk MsiSourceListAddMediaDiskW
810 #else
811 #define MsiSourceListAddMediaDisk MsiSourceListAddMediaDiskA
812 #endif
813
814 UINT WINAPI MsiSourceListClearSourceA(LPCSTR szProductCodeOrPatchCode,LPCSTR szUserSid,MSIINSTALLCONTEXT dwContext,DWORD dwOptions,LPCSTR szSource);
815 UINT WINAPI MsiSourceListClearSourceW(LPCWSTR szProductCodeOrPatchCode,LPCWSTR szUserSid,MSIINSTALLCONTEXT dwContext,DWORD dwOptions,LPCWSTR szSource);
816 #ifdef UNICODE
817 #define MsiSourceListClearSource MsiSourceListClearSourceW
818 #else
819 #define MsiSourceListClearSource MsiSourceListClearSourceA
820 #endif
821
822 UINT WINAPI MsiSourceListClearMediaDiskA(LPCSTR szProductCodeOrPatchCode,LPCSTR szUserSid,MSIINSTALLCONTEXT dwContext,DWORD dwOptions,DWORD dwDiskId);
823 UINT WINAPI MsiSourceListClearMediaDiskW(LPCWSTR szProductCodeOrPatchCode,LPCWSTR szUserSid,MSIINSTALLCONTEXT dwContext,DWORD dwOptions,DWORD dwDiskId);
824 #ifdef UNICODE
825 #define MsiSourceListClearMediaDisk MsiSourceListClearMediaDiskW
826 #else
827 #define MsiSourceListClearMediaDisk MsiSourceListClearMediaDiskA
828 #endif
829
830 UINT WINAPI MsiSourceListClearAllExA(LPCSTR szProductCodeOrPatchCode,LPCSTR szUserSid,MSIINSTALLCONTEXT dwContext,DWORD dwOptions);
831 UINT WINAPI MsiSourceListClearAllExW(LPCWSTR szProductCodeOrPatchCode,LPCWSTR szUserSid,MSIINSTALLCONTEXT dwContext,DWORD dwOptions);
832 #ifdef UNICODE
833 #define MsiSourceListClearAllEx MsiSourceListClearAllExW
834 #else
835 #define MsiSourceListClearAllEx MsiSourceListClearAllExA
836 #endif
837
838 UINT WINAPI MsiSourceListForceResolutionExA(LPCSTR szProductCodeOrPatchCode,LPCSTR szUserSid,MSIINSTALLCONTEXT dwContext,DWORD dwOptions);
839 UINT WINAPI MsiSourceListForceResolutionExW(LPCWSTR szProductCodeOrPatchCode,LPCWSTR szUserSid,MSIINSTALLCONTEXT dwContext,DWORD dwOptions);
840 #ifdef UNICODE
841 #define MsiSourceListForceResolutionEx MsiSourceListForceResolutionExW
842 #else
843 #define MsiSourceListForceResolutionEx MsiSourceListForceResolutionExA
844 #endif
845
846 UINT WINAPI MsiSourceListSetInfoA(LPCSTR szProductCodeOrPatchCode,LPCSTR szUserSid,MSIINSTALLCONTEXT dwContext,DWORD dwOptions,LPCSTR szProperty,LPCSTR szValue);
847 UINT WINAPI MsiSourceListSetInfoW(LPCWSTR szProductCodeOrPatchCode,LPCWSTR szUserSid,MSIINSTALLCONTEXT dwContext,DWORD dwOptions,LPCWSTR szProperty,LPCWSTR szValue);
848 #ifdef UNICODE
849 #define MsiSourceListSetInfo MsiSourceListSetInfoW
850 #else
851 #define MsiSourceListSetInfo MsiSourceListSetInfoA
852 #endif
853
854 UINT WINAPI MsiSourceListGetInfoA(LPCSTR szProductCodeOrPatchCode,LPCSTR szUserSid,MSIINSTALLCONTEXT dwContext,DWORD dwOptions,LPCSTR szProperty,LPSTR szValue,LPDWORD pcchValue);
855 UINT WINAPI MsiSourceListGetInfoW(LPCWSTR szProductCodeOrPatchCode,LPCWSTR szUserSid,MSIINSTALLCONTEXT dwContext,DWORD dwOptions,LPCWSTR szProperty,LPWSTR szValue,LPDWORD pcchValue);
856 #ifdef UNICODE
857 #define MsiSourceListGetInfo MsiSourceListGetInfoW
858 #else
859 #define MsiSourceListGetInfo MsiSourceListGetInfoA
860 #endif
861
862 UINT WINAPI MsiSourceListEnumSourcesA(LPCSTR szProductCodeOrPatchCode,LPCSTR szUserSid,MSIINSTALLCONTEXT dwContext,DWORD dwOptions,DWORD dwIndex,LPSTR szSource,LPDWORD pcchSource);
863 UINT WINAPI MsiSourceListEnumSourcesW(LPCWSTR szProductCodeOrPatchCode,LPCWSTR szUserSid,MSIINSTALLCONTEXT dwContext,DWORD dwOptions,DWORD dwIndex,LPWSTR szSource,LPDWORD pcchSource);
864 #ifdef UNICODE
865 #define MsiSourceListEnumSources MsiSourceListEnumSourcesW
866 #else
867 #define MsiSourceListEnumSources MsiSourceListEnumSourcesA
868 #endif
869
870 UINT WINAPI MsiSourceListEnumMediaDisksA(LPCSTR szProductCodeOrPatchCode,LPCSTR szUserSid,MSIINSTALLCONTEXT dwContext,DWORD dwOptions,DWORD dwIndex,LPDWORD pdwDiskId,LPSTR szVolumeLabel,LPDWORD pcchVolumeLabel,LPSTR szDiskPrompt,LPDWORD pcchDiskPrompt);
871 UINT WINAPI MsiSourceListEnumMediaDisksW(LPCWSTR szProductCodeOrPatchCode,LPCWSTR szUserSid,MSIINSTALLCONTEXT dwContext,DWORD dwOptions,DWORD dwIndex,LPDWORD pdwDiskId,LPWSTR szVolumeLabel,LPDWORD pcchVolumeLabel,LPWSTR szDiskPrompt,LPDWORD pcchDiskPrompt);
872 #ifdef UNICODE
873 #define MsiSourceListEnumMediaDisks MsiSourceListEnumMediaDisksW
874 #else
875 #define MsiSourceListEnumMediaDisks MsiSourceListEnumMediaDisksA
876 #endif
877 #endif
878
879 UINT WINAPI MsiGetFileVersionA(LPCSTR szFilePath,LPSTR lpVersionBuf,DWORD *pcchVersionBuf,LPSTR lpLangBuf,DWORD *pcchLangBuf);
880 UINT WINAPI MsiGetFileVersionW(LPCWSTR szFilePath,LPWSTR lpVersionBuf,DWORD *pcchVersionBuf,LPWSTR lpLangBuf,DWORD *pcchLangBuf);
881 #ifdef UNICODE
882 #define MsiGetFileVersion MsiGetFileVersionW
883 #else
884 #define MsiGetFileVersion MsiGetFileVersionA
885 #endif
886
887 #if (_WIN32_MSI >= 150)
888
889 UINT WINAPI MsiGetFileHashA(LPCSTR szFilePath,DWORD dwOptions,PMSIFILEHASHINFO pHash);
890 UINT WINAPI MsiGetFileHashW(LPCWSTR szFilePath,DWORD dwOptions,PMSIFILEHASHINFO pHash);
891 #ifdef UNICODE
892 #define MsiGetFileHash MsiGetFileHashW
893 #else
894 #define MsiGetFileHash MsiGetFileHashA
895 #endif
896 #endif
897
898 #if (_WIN32_MSI >= 150)
899 #ifndef _MSI_NO_CRYPTO
900
901 HRESULT WINAPI MsiGetFileSignatureInformationA(LPCSTR szSignedObjectPath,DWORD dwFlags,PCCERT_CONTEXT *ppcCertContext,BYTE *pbHashData,DWORD *pcbHashData);
902 HRESULT WINAPI MsiGetFileSignatureInformationW(LPCWSTR szSignedObjectPath,DWORD dwFlags,PCCERT_CONTEXT *ppcCertContext,BYTE *pbHashData,DWORD *pcbHashData);
903 #ifdef UNICODE
904 #define MsiGetFileSignatureInformation MsiGetFileSignatureInformationW
905 #else
906 #define MsiGetFileSignatureInformation MsiGetFileSignatureInformationA
907 #endif
908
909 #define MSI_INVALID_HASH_IS_FATAL 0x1
910 #endif
911 #endif
912
913 #if (_WIN32_MSI >= 110)
914
915 UINT WINAPI MsiGetShortcutTargetA(LPCSTR szShortcutPath,LPSTR szProductCode,LPSTR szFeatureId,LPSTR szComponentCode);
916 UINT WINAPI MsiGetShortcutTargetW(LPCWSTR szShortcutPath,LPWSTR szProductCode,LPWSTR szFeatureId,LPWSTR szComponentCode);
917 #ifdef UNICODE
918 #define MsiGetShortcutTarget MsiGetShortcutTargetW
919 #else
920 #define MsiGetShortcutTarget MsiGetShortcutTargetA
921 #endif
922 #endif
923
924 #if (_WIN32_MSI >= 110)
925 UINT WINAPI MsiIsProductElevatedA(LPCSTR szProduct,WINBOOL *pfElevated);
926 UINT WINAPI MsiIsProductElevatedW(LPCWSTR szProduct,WINBOOL *pfElevated);
927 #ifdef UNICODE
928 #define MsiIsProductElevated MsiIsProductElevatedW
929 #else
930 #define MsiIsProductElevated MsiIsProductElevatedA
931 #endif
932 #endif
933
934 #if (_WIN32_MSI >= 310)
935
936 UINT WINAPI MsiNotifySidChangeA(LPCSTR pOldSid,LPCSTR pNewSid);
937 UINT WINAPI MsiNotifySidChangeW(LPCWSTR pOldSid,LPCWSTR pNewSid);
938 #ifdef UNICODE
939 #define MsiNotifySidChange MsiNotifySidChangeW
940 #else
941 #define MsiNotifySidChange MsiNotifySidChangeA
942 #endif
943 #endif
944
945 #ifdef __cplusplus
946 }
947 #endif
948
949 #ifndef ERROR_INSTALL_FAILURE
950 #define ERROR_INSTALL_USEREXIT 1602L
951 #define ERROR_INSTALL_FAILURE 1603L
952 #define ERROR_INSTALL_SUSPEND 1604L
953
954 #define ERROR_UNKNOWN_PRODUCT 1605L
955
956 #define ERROR_UNKNOWN_FEATURE 1606L
957 #define ERROR_UNKNOWN_COMPONENT 1607L
958 #define ERROR_UNKNOWN_PROPERTY 1608L
959 #define ERROR_INVALID_HANDLE_STATE 1609L
960
961 #define ERROR_BAD_CONFIGURATION 1610L
962
963 #define ERROR_INDEX_ABSENT 1611L
964
965 #define ERROR_INSTALL_SOURCE_ABSENT 1612L
966
967 #define ERROR_PRODUCT_UNINSTALLED 1614L
968 #define ERROR_BAD_QUERY_SYNTAX 1615L
969 #define ERROR_INVALID_FIELD 1616L
970 #endif
971
972 #ifndef ERROR_INSTALL_SERVICE_FAILURE
973 #define ERROR_INSTALL_SERVICE_FAILURE 1601L
974 #define ERROR_INSTALL_PACKAGE_VERSION 1613L
975 #define ERROR_INSTALL_ALREADY_RUNNING 1618L
976 #define ERROR_INSTALL_PACKAGE_OPEN_FAILED 1619L
977 #define ERROR_INSTALL_PACKAGE_INVALID 1620L
978 #define ERROR_INSTALL_UI_FAILURE 1621L
979 #define ERROR_INSTALL_LOG_FAILURE 1622L
980 #define ERROR_INSTALL_LANGUAGE_UNSUPPORTED 1623L
981 #define ERROR_INSTALL_PACKAGE_REJECTED 1625L
982
983 #define ERROR_FUNCTION_NOT_CALLED 1626L
984 #define ERROR_FUNCTION_FAILED 1627L
985 #define ERROR_INVALID_TABLE 1628L
986 #define ERROR_DATATYPE_MISMATCH 1629L
987 #define ERROR_UNSUPPORTED_TYPE 1630L
988
989 #define ERROR_CREATE_FAILED 1631L
990 #endif
991
992 #ifndef ERROR_INSTALL_TEMP_UNWRITABLE
993 #define ERROR_INSTALL_TEMP_UNWRITABLE 1632L
994 #endif
995
996 #ifndef ERROR_INSTALL_PLATFORM_UNSUPPORTED
997 #define ERROR_INSTALL_PLATFORM_UNSUPPORTED 1633L
998 #endif
999
1000 #ifndef ERROR_INSTALL_NOTUSED
1001 #define ERROR_INSTALL_NOTUSED 1634L
1002 #endif
1003
1004 #ifndef ERROR_INSTALL_TRANSFORM_FAILURE
1005 #define ERROR_INSTALL_TRANSFORM_FAILURE 1624L
1006 #endif
1007
1008 #ifndef ERROR_PATCH_PACKAGE_OPEN_FAILED
1009 #define ERROR_PATCH_PACKAGE_OPEN_FAILED 1635L
1010 #define ERROR_PATCH_PACKAGE_INVALID 1636L
1011 #define ERROR_PATCH_PACKAGE_UNSUPPORTED 1637L
1012 #endif
1013
1014 #ifndef ERROR_PRODUCT_VERSION
1015 #define ERROR_PRODUCT_VERSION 1638L
1016 #endif
1017
1018 #ifndef ERROR_INVALID_COMMAND_LINE
1019 #define ERROR_INVALID_COMMAND_LINE 1639L
1020 #endif
1021
1022 #ifndef ERROR_INSTALL_REMOTE_DISALLOWED
1023 #define ERROR_INSTALL_REMOTE_DISALLOWED 1640L
1024 #endif
1025
1026 #ifndef ERROR_SUCCESS_REBOOT_INITIATED
1027 #define ERROR_SUCCESS_REBOOT_INITIATED 1641L
1028 #endif
1029
1030 #ifndef ERROR_PATCH_TARGET_NOT_FOUND
1031 #define ERROR_PATCH_TARGET_NOT_FOUND 1642L
1032 #endif
1033
1034 #ifndef ERROR_PATCH_PACKAGE_REJECTED
1035 #define ERROR_PATCH_PACKAGE_REJECTED 1643L
1036 #endif
1037
1038 #ifndef ERROR_INSTALL_TRANSFORM_REJECTED
1039 #define ERROR_INSTALL_TRANSFORM_REJECTED 1644L
1040 #endif
1041
1042 #ifndef ERROR_INSTALL_REMOTE_PROHIBITED
1043 #define ERROR_INSTALL_REMOTE_PROHIBITED 1645L
1044 #endif
1045
1046 #ifndef ERROR_PATCH_REMOVAL_UNSUPPORTED
1047 #define ERROR_PATCH_REMOVAL_UNSUPPORTED 1646L
1048 #endif
1049
1050 #ifndef ERROR_UNKNOWN_PATCH
1051 #define ERROR_UNKNOWN_PATCH 1647L
1052 #endif
1053
1054 #ifndef ERROR_PATCH_NO_SEQUENCE
1055 #define ERROR_PATCH_NO_SEQUENCE 1648L
1056 #endif
1057
1058 #ifndef ERROR_PATCH_REMOVAL_DISALLOWED
1059 #define ERROR_PATCH_REMOVAL_DISALLOWED 1649L
1060 #endif
1061
1062 #ifndef ERROR_INVALID_PATCH_XML
1063 #define ERROR_INVALID_PATCH_XML 1650L
1064 #endif
1065
1066 #ifndef ERROR_PATCH_MANAGED_ADVERTISED_PRODUCT
1067 #define ERROR_PATCH_MANAGED_ADVERTISED_PRODUCT 1651L
1068 #endif
1069 #endif