msi.h 41 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810
  1. /**
  2. * This file has no copyright assigned and is placed in the Public Domain.
  3. * This file is part of the mingw-w64 runtime package.
  4. * No warranty is given; refer to the file DISCLAIMER.PD within this package.
  5. */
  6. #ifndef _MSI_H_
  7. #define _MSI_H_
  8. #include <_mingw_unicode.h>
  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. #ifndef NTDDI_VISTA
  22. #define NTDDI_VISTA 0x06000000
  23. #endif
  24. #ifndef NTDDI_VISTASP1
  25. #define NTDDI_VISTASP1 0x06000100
  26. #endif
  27. #ifndef _WIN32_MSI
  28. #if defined(NTDDI_VERSION) && NTDDI_VERSION >= NTDDI_VISTASP1
  29. #define _WIN32_MSI 450
  30. #elif defined(NTDDI_VERSION) && NTDDI_VERSION >= NTDDI_VISTA
  31. #define _WIN32_MSI 400
  32. #elif defined(NTDDI_VERSION) && NTDDI_VERSION >= NTDDI_WS03SP1
  33. #define _WIN32_MSI 310
  34. #elif defined(NTDDI_VERSION) && NTDDI_VERSION >= NTDDI_WINXPSP2
  35. #define _WIN32_MSI 300
  36. #else
  37. #define _WIN32_MSI 200
  38. #endif
  39. #endif
  40. #ifndef MAX_GUID_CHARS
  41. #define MAX_GUID_CHARS 38
  42. #endif
  43. #if _WIN32_MSI >= 150 && !defined (_MSI_NO_CRYPTO)
  44. #include "wincrypt.h"
  45. #endif
  46. typedef unsigned __LONG32 MSIHANDLE;
  47. #ifdef __cplusplus
  48. extern "C" {
  49. #endif
  50. UINT WINAPI MsiCloseHandle(MSIHANDLE hAny);
  51. UINT WINAPI MsiCloseAllHandles();
  52. #ifdef __cplusplus
  53. }
  54. #endif
  55. #ifdef __cplusplus
  56. class PMSIHANDLE {
  57. MSIHANDLE m_h;
  58. public:
  59. PMSIHANDLE():m_h(0){}
  60. PMSIHANDLE(MSIHANDLE h):m_h(h) { }
  61. ~PMSIHANDLE() { if (m_h!=0) MsiCloseHandle (m_h); }
  62. void operator =(MSIHANDLE h) { if (m_h) MsiCloseHandle (m_h); m_h=h; }
  63. operator MSIHANDLE() { return m_h; }
  64. MSIHANDLE *operator &() { if (m_h) MsiCloseHandle (m_h); m_h = 0; return &m_h; }
  65. };
  66. #endif
  67. typedef enum tagINSTALLMESSAGE {
  68. INSTALLMESSAGE_FATALEXIT = 0x00000000,INSTALLMESSAGE_ERROR = 0x01000000,INSTALLMESSAGE_WARNING = 0x02000000,INSTALLMESSAGE_USER = 0x03000000,
  69. INSTALLMESSAGE_INFO = 0x04000000,INSTALLMESSAGE_FILESINUSE = 0x05000000,INSTALLMESSAGE_RESOLVESOURCE = 0x06000000,
  70. INSTALLMESSAGE_OUTOFDISKSPACE = 0x07000000,INSTALLMESSAGE_ACTIONSTART = 0x08000000,INSTALLMESSAGE_ACTIONDATA = 0x09000000,
  71. INSTALLMESSAGE_PROGRESS = 0x0A000000,INSTALLMESSAGE_COMMONDATA = 0x0B000000,INSTALLMESSAGE_INITIALIZE = 0x0C000000,
  72. INSTALLMESSAGE_TERMINATE = 0x0D000000,INSTALLMESSAGE_SHOWDIALOG = 0x0E000000
  73. #if _WIN32_MSI >= 400
  74. ,INSTALLMESSAGE_RMFILESINUSE = 0x19000000
  75. #endif
  76. #if _WIN32_MSI >= 450
  77. ,INSTALLMESSAGE_INSTALLSTART = 0x1A000000
  78. ,INSTALLMESSAGE_INSTALLEND = 0x1B000000
  79. #endif
  80. } INSTALLMESSAGE;
  81. typedef int (WINAPI *INSTALLUI_HANDLERA)(LPVOID pvContext,UINT iMessageType,LPCSTR szMessage);
  82. typedef int (WINAPI *INSTALLUI_HANDLERW)(LPVOID pvContext,UINT iMessageType,LPCWSTR szMessage);
  83. #define INSTALLUI_HANDLER __MINGW_NAME_AW(INSTALLUI_HANDLER)
  84. #if (_WIN32_MSI >= 310)
  85. typedef int (WINAPI *INSTALLUI_HANDLER_RECORD)(LPVOID pvContext,UINT iMessageType,MSIHANDLE hRecord);
  86. typedef INSTALLUI_HANDLER_RECORD *PINSTALLUI_HANDLER_RECORD;
  87. #endif
  88. typedef enum tagINSTALLUILEVEL {
  89. INSTALLUILEVEL_NOCHANGE = 0,INSTALLUILEVEL_DEFAULT = 1,INSTALLUILEVEL_NONE = 2,INSTALLUILEVEL_BASIC = 3,INSTALLUILEVEL_REDUCED = 4,
  90. INSTALLUILEVEL_FULL = 5,INSTALLUILEVEL_ENDDIALOG = 0x80,INSTALLUILEVEL_PROGRESSONLY = 0x40,INSTALLUILEVEL_HIDECANCEL = 0x20,
  91. INSTALLUILEVEL_SOURCERESONLY = 0x100
  92. } INSTALLUILEVEL;
  93. typedef enum tagINSTALLSTATE {
  94. INSTALLSTATE_NOTUSED = -7,INSTALLSTATE_BADCONFIG = -6,INSTALLSTATE_INCOMPLETE = -5,INSTALLSTATE_SOURCEABSENT = -4,INSTALLSTATE_MOREDATA = -3,
  95. INSTALLSTATE_INVALIDARG = -2,INSTALLSTATE_UNKNOWN = -1,INSTALLSTATE_BROKEN = 0,INSTALLSTATE_ADVERTISED = 1,INSTALLSTATE_REMOVED = 1,
  96. INSTALLSTATE_ABSENT = 2,INSTALLSTATE_LOCAL = 3,INSTALLSTATE_SOURCE = 4,INSTALLSTATE_DEFAULT = 5
  97. } INSTALLSTATE;
  98. typedef enum tagUSERINFOSTATE {
  99. USERINFOSTATE_MOREDATA = -3,USERINFOSTATE_INVALIDARG = -2,USERINFOSTATE_UNKNOWN = -1,USERINFOSTATE_ABSENT = 0,
  100. USERINFOSTATE_PRESENT = 1
  101. } USERINFOSTATE;
  102. typedef enum tagINSTALLLEVEL {
  103. INSTALLLEVEL_DEFAULT = 0,INSTALLLEVEL_MINIMUM = 1,INSTALLLEVEL_MAXIMUM = 0xffff
  104. } INSTALLLEVEL;
  105. typedef enum tagREINSTALLMODE {
  106. REINSTALLMODE_REPAIR = 0x00000001,REINSTALLMODE_FILEMISSING = 0x00000002,REINSTALLMODE_FILEOLDERVERSION = 0x00000004,
  107. REINSTALLMODE_FILEEQUALVERSION = 0x00000008,REINSTALLMODE_FILEEXACT = 0x00000010,REINSTALLMODE_FILEVERIFY = 0x00000020,
  108. REINSTALLMODE_FILEREPLACE = 0x00000040,REINSTALLMODE_MACHINEDATA = 0x00000080,REINSTALLMODE_USERDATA = 0x00000100,
  109. REINSTALLMODE_SHORTCUT = 0x00000200,REINSTALLMODE_PACKAGE = 0x00000400
  110. } REINSTALLMODE;
  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. #if _WIN32_MSI >= 400
  123. ,INSTALLLOGMODE_RMFILESINUSE = (1 << (INSTALLMESSAGE_RMFILESINUSE >> 24))
  124. #endif
  125. #if _WIN32_MSI >= 450
  126. ,INSTALLLOGMODE_INSTALLSTART = (1 << (INSTALLMESSAGE_INSTALLSTART >> 24))
  127. ,INSTALLLOGMODE_INSTALLEND = (1 << (INSTALLMESSAGE_INSTALLEND >> 24))
  128. #endif
  129. } INSTALLLOGMODE;
  130. typedef enum tagINSTALLLOGATTRIBUTES {
  131. INSTALLLOGATTRIBUTES_APPEND = (1 << 0),INSTALLLOGATTRIBUTES_FLUSHEACHLINE = (1 << 1)
  132. } INSTALLLOGATTRIBUTES;
  133. typedef enum tagINSTALLFEATUREATTRIBUTE {
  134. INSTALLFEATUREATTRIBUTE_FAVORLOCAL = 1 << 0,INSTALLFEATUREATTRIBUTE_FAVORSOURCE = 1 << 1,
  135. INSTALLFEATUREATTRIBUTE_FOLLOWPARENT = 1 << 2,INSTALLFEATUREATTRIBUTE_FAVORADVERTISE = 1 << 3,
  136. INSTALLFEATUREATTRIBUTE_DISALLOWADVERTISE = 1 << 4,INSTALLFEATUREATTRIBUTE_NOUNSUPPORTEDADVERTISE = 1 << 5
  137. } INSTALLFEATUREATTRIBUTE;
  138. typedef enum tagINSTALLMODE {
  139. #if (_WIN32_MSI >= 150)
  140. INSTALLMODE_NODETECTION_ANY = -4,
  141. #endif
  142. INSTALLMODE_NOSOURCERESOLUTION = -3,INSTALLMODE_NODETECTION = -2,INSTALLMODE_EXISTING = -1,INSTALLMODE_DEFAULT = 0
  143. } INSTALLMODE;
  144. #if (_WIN32_MSI >= 300)
  145. typedef enum tagMSIPATCHSTATE {
  146. MSIPATCHSTATE_INVALID = 0,MSIPATCHSTATE_APPLIED = 1,MSIPATCHSTATE_SUPERSEDED = 2,MSIPATCHSTATE_OBSOLETED = 4,MSIPATCHSTATE_REGISTERED = 8,
  147. MSIPATCHSTATE_ALL = (MSIPATCHSTATE_APPLIED | MSIPATCHSTATE_SUPERSEDED | MSIPATCHSTATE_OBSOLETED | MSIPATCHSTATE_REGISTERED)
  148. } MSIPATCHSTATE;
  149. typedef enum tagMSIINSTALLCONTEXT {
  150. MSIINSTALLCONTEXT_FIRSTVISIBLE = 0,MSIINSTALLCONTEXT_NONE = 0,MSIINSTALLCONTEXT_USERMANAGED = 1,MSIINSTALLCONTEXT_USERUNMANAGED = 2,
  151. MSIINSTALLCONTEXT_MACHINE = 4,
  152. MSIINSTALLCONTEXT_ALL = (MSIINSTALLCONTEXT_USERMANAGED | MSIINSTALLCONTEXT_USERUNMANAGED | MSIINSTALLCONTEXT_MACHINE),
  153. MSIINSTALLCONTEXT_ALLUSERMANAGED = 8
  154. } MSIINSTALLCONTEXT;
  155. typedef enum tagMSIPATCHDATATYPE {
  156. MSIPATCH_DATATYPE_PATCHFILE = 0,MSIPATCH_DATATYPE_XMLPATH = 1,MSIPATCH_DATATYPE_XMLBLOB = 2
  157. } MSIPATCHDATATYPE,*PMSIPATCHDATATYPE;
  158. typedef struct tagMSIPATCHSEQUENCEINFOA {
  159. LPCSTR szPatchData;
  160. MSIPATCHDATATYPE ePatchDataType;
  161. DWORD dwOrder;
  162. UINT uStatus;
  163. } MSIPATCHSEQUENCEINFOA,*PMSIPATCHSEQUENCEINFOA;
  164. typedef struct tagMSIPATCHSEQUENCEINFOW {
  165. LPCWSTR szPatchData;
  166. MSIPATCHDATATYPE ePatchDataType;
  167. DWORD dwOrder;
  168. UINT uStatus;
  169. } MSIPATCHSEQUENCEINFOW,*PMSIPATCHSEQUENCEINFOW;
  170. __MINGW_TYPEDEF_AW(MSIPATCHSEQUENCEINFO)
  171. __MINGW_TYPEDEF_AW(PMSIPATCHSEQUENCEINFO)
  172. #endif
  173. #define MAX_FEATURE_CHARS 38
  174. #define INSTALLPROPERTY_PACKAGENAME __TEXT("PackageName")
  175. #define INSTALLPROPERTY_TRANSFORMS __TEXT("Transforms")
  176. #define INSTALLPROPERTY_LANGUAGE __TEXT("Language")
  177. #define INSTALLPROPERTY_PRODUCTNAME __TEXT("ProductName")
  178. #define INSTALLPROPERTY_ASSIGNMENTTYPE __TEXT("AssignmentType")
  179. #if (_WIN32_MSI >= 150)
  180. #define INSTALLPROPERTY_INSTANCETYPE __TEXT("InstanceType")
  181. #endif
  182. #if (_WIN32_MSI >= 300)
  183. #define INSTALLPROPERTY_AUTHORIZED_LUA_APP __TEXT("AuthorizedLUAApp")
  184. #endif
  185. #define INSTALLPROPERTY_PACKAGECODE __TEXT("PackageCode")
  186. #define INSTALLPROPERTY_VERSION __TEXT("Version")
  187. #if (_WIN32_MSI >= 110)
  188. #define INSTALLPROPERTY_PRODUCTICON __TEXT("ProductIcon")
  189. #endif
  190. #define INSTALLPROPERTY_INSTALLEDPRODUCTNAME __TEXT("InstalledProductName")
  191. #define INSTALLPROPERTY_VERSIONSTRING __TEXT("VersionString")
  192. #define INSTALLPROPERTY_HELPLINK __TEXT("HelpLink")
  193. #define INSTALLPROPERTY_HELPTELEPHONE __TEXT("HelpTelephone")
  194. #define INSTALLPROPERTY_INSTALLLOCATION __TEXT("InstallLocation")
  195. #define INSTALLPROPERTY_INSTALLSOURCE __TEXT("InstallSource")
  196. #define INSTALLPROPERTY_INSTALLDATE __TEXT("InstallDate")
  197. #define INSTALLPROPERTY_PUBLISHER __TEXT("Publisher")
  198. #define INSTALLPROPERTY_LOCALPACKAGE __TEXT("LocalPackage")
  199. #define INSTALLPROPERTY_URLINFOABOUT __TEXT("URLInfoAbout")
  200. #define INSTALLPROPERTY_URLUPDATEINFO __TEXT("URLUpdateInfo")
  201. #define INSTALLPROPERTY_VERSIONMINOR __TEXT("VersionMinor")
  202. #define INSTALLPROPERTY_VERSIONMAJOR __TEXT("VersionMajor")
  203. #define INSTALLPROPERTY_PRODUCTID __TEXT("ProductID")
  204. #define INSTALLPROPERTY_REGCOMPANY __TEXT("RegCompany")
  205. #define INSTALLPROPERTY_REGOWNER __TEXT("RegOwner")
  206. #if (_WIN32_MSI >= 300)
  207. #define INSTALLPROPERTY_UNINSTALLABLE __TEXT("Uninstallable")
  208. #define INSTALLPROPERTY_PRODUCTSTATE __TEXT("State")
  209. #define INSTALLPROPERTY_PATCHSTATE __TEXT("State")
  210. #define INSTALLPROPERTY_PATCHTYPE __TEXT("PatchType")
  211. #define INSTALLPROPERTY_LUAENABLED __TEXT("LUAEnabled")
  212. #define INSTALLPROPERTY_DISPLAYNAME __TEXT("DisplayName")
  213. #define INSTALLPROPERTY_MOREINFOURL __TEXT("MoreInfoURL")
  214. #define INSTALLPROPERTY_LASTUSEDSOURCE __TEXT("LastUsedSource")
  215. #define INSTALLPROPERTY_LASTUSEDTYPE __TEXT("LastUsedType")
  216. #define INSTALLPROPERTY_MEDIAPACKAGEPATH __TEXT("MediaPackagePath")
  217. #define INSTALLPROPERTY_DISKPROMPT __TEXT("DiskPrompt")
  218. #endif
  219. typedef enum tagSCRIPTFLAGS {
  220. SCRIPTFLAGS_CACHEINFO = 0x00000001,SCRIPTFLAGS_SHORTCUTS = 0x00000004,SCRIPTFLAGS_MACHINEASSIGN = 0x00000008,
  221. SCRIPTFLAGS_REGDATA_CNFGINFO = 0x00000020,SCRIPTFLAGS_VALIDATE_TRANSFORMS_LIST = 0x00000040,
  222. #if (_WIN32_MSI >= 110)
  223. SCRIPTFLAGS_REGDATA_CLASSINFO = 0x00000080,SCRIPTFLAGS_REGDATA_EXTENSIONINFO = 0x00000100,
  224. SCRIPTFLAGS_REGDATA_APPINFO = SCRIPTFLAGS_REGDATA_CLASSINFO | SCRIPTFLAGS_REGDATA_EXTENSIONINFO,
  225. #else
  226. SCRIPTFLAGS_REGDATA_APPINFO = 0x00000010,
  227. #endif
  228. SCRIPTFLAGS_REGDATA = SCRIPTFLAGS_REGDATA_APPINFO | SCRIPTFLAGS_REGDATA_CNFGINFO
  229. } SCRIPTFLAGS;
  230. typedef enum tagADVERTISEFLAGS {
  231. ADVERTISEFLAGS_MACHINEASSIGN = 0,ADVERTISEFLAGS_USERASSIGN = 1
  232. } ADVERTISEFLAGS;
  233. typedef enum tagINSTALLTYPE {
  234. INSTALLTYPE_DEFAULT = 0,INSTALLTYPE_NETWORK_IMAGE = 1,INSTALLTYPE_SINGLE_INSTANCE = 2
  235. } INSTALLTYPE;
  236. #if (_WIN32_MSI >= 150)
  237. typedef struct _MSIFILEHASHINFO {
  238. ULONG dwFileHashInfoSize;
  239. ULONG dwData [4];
  240. } MSIFILEHASHINFO,*PMSIFILEHASHINFO;
  241. typedef enum tagMSIARCHITECTUREFLAGS {
  242. MSIARCHITECTUREFLAGS_X86 = 0x00000001,MSIARCHITECTUREFLAGS_IA64 = 0x00000002,MSIARCHITECTUREFLAGS_AMD64 = 0x00000004
  243. } MSIARCHITECTUREFLAGS;
  244. typedef enum tagMSIOPENPACKAGEFLAGS {
  245. MSIOPENPACKAGEFLAGS_IGNOREMACHINESTATE = 0x00000001
  246. } MSIOPENPACKAGEFLAGS;
  247. typedef enum tagMSIADVERTISEOPTIONFLAGS {
  248. MSIADVERTISEOPTIONFLAGS_INSTANCE = 0x00000001
  249. } MSIADVERTISEOPTIONFLAGS;
  250. #endif
  251. #if (_WIN32_MSI >= 300)
  252. typedef enum tagMSISOURCETYPE {
  253. MSISOURCETYPE_UNKNOWN = 0x00000000,MSISOURCETYPE_NETWORK = 0x00000001,MSISOURCETYPE_URL = 0x00000002,MSISOURCETYPE_MEDIA = 0x00000004
  254. } MSISOURCETYPE;
  255. typedef enum tagMSICODE {
  256. MSICODE_PRODUCT = 0x00000000,MSICODE_PATCH = 0x40000000
  257. } MSICODE;
  258. #if _WIN32_MSI >= 450
  259. typedef enum tagMSITRANSACTION {
  260. MSITRANSACTION_CHAIN_EMBEDDEDUI = 0x00000001,
  261. MSITRANSACTION_JOIN_EXISTING_EMBEDDEDUI = 0x00000002
  262. } MSITRANSACTION;
  263. typedef enum tagMSITRANSACTIONSTATE {
  264. MSITRANSACTIONSTATE_ROLLBACK = 0x00000000,
  265. MSITRANSACTIONSTATE_COMMIT = 0x00000001
  266. } MSITRANSACTIONSTATE;
  267. #endif
  268. #endif
  269. #ifdef __cplusplus
  270. extern "C" {
  271. #endif
  272. INSTALLUILEVEL WINAPI MsiSetInternalUI(INSTALLUILEVEL dwUILevel,HWND *phWnd);
  273. INSTALLUI_HANDLERA WINAPI MsiSetExternalUIA(INSTALLUI_HANDLERA puiHandler,DWORD dwMessageFilter,LPVOID pvContext);
  274. INSTALLUI_HANDLERW WINAPI MsiSetExternalUIW(INSTALLUI_HANDLERW puiHandler,DWORD dwMessageFilter,LPVOID pvContext);
  275. #define MsiSetExternalUI __MINGW_NAME_AW(MsiSetExternalUI)
  276. #if (_WIN32_MSI >= 310)
  277. UINT WINAPI MsiSetExternalUIRecord(INSTALLUI_HANDLER_RECORD puiHandler,DWORD dwMessageFilter,LPVOID pvContext,PINSTALLUI_HANDLER_RECORD ppuiPrevHandler);
  278. #endif
  279. UINT WINAPI MsiEnableLogA(DWORD dwLogMode,LPCSTR szLogFile,DWORD dwLogAttributes);
  280. UINT WINAPI MsiEnableLogW(DWORD dwLogMode,LPCWSTR szLogFile,DWORD dwLogAttributes);
  281. #define MsiEnableLog __MINGW_NAME_AW(MsiEnableLog)
  282. INSTALLSTATE WINAPI MsiQueryProductStateA(LPCSTR szProduct);
  283. INSTALLSTATE WINAPI MsiQueryProductStateW(LPCWSTR szProduct);
  284. #define MsiQueryProductState __MINGW_NAME_AW(MsiQueryProductState)
  285. UINT WINAPI MsiGetProductInfoA(LPCSTR szProduct,LPCSTR szAttribute,LPSTR lpValueBuf,DWORD *pcchValueBuf);
  286. UINT WINAPI MsiGetProductInfoW(LPCWSTR szProduct,LPCWSTR szAttribute,LPWSTR lpValueBuf,DWORD *pcchValueBuf);
  287. #define MsiGetProductInfo __MINGW_NAME_AW(MsiGetProductInfo)
  288. #if (_WIN32_MSI >= 300)
  289. UINT WINAPI MsiGetProductInfoExA(LPCSTR szProductCode,LPCSTR szUserSid,MSIINSTALLCONTEXT dwContext,LPCSTR szProperty,LPSTR szValue,LPDWORD pcchValue);
  290. UINT WINAPI MsiGetProductInfoExW(LPCWSTR szProductCode,LPCWSTR szUserSid,MSIINSTALLCONTEXT dwContext,LPCWSTR szProperty,LPWSTR szValue,LPDWORD pcchValue);
  291. #define MsiGetProductInfoEx __MINGW_NAME_AW(MsiGetProductInfoEx)
  292. #endif
  293. UINT WINAPI MsiInstallProductA(LPCSTR szPackagePath,LPCSTR szCommandLine);
  294. UINT WINAPI MsiInstallProductW(LPCWSTR szPackagePath,LPCWSTR szCommandLine);
  295. #define MsiInstallProduct __MINGW_NAME_AW(MsiInstallProduct)
  296. UINT WINAPI MsiConfigureProductA(LPCSTR szProduct,int iInstallLevel,INSTALLSTATE eInstallState);
  297. UINT WINAPI MsiConfigureProductW(LPCWSTR szProduct,int iInstallLevel,INSTALLSTATE eInstallState);
  298. #define MsiConfigureProduct __MINGW_NAME_AW(MsiConfigureProduct)
  299. UINT WINAPI MsiConfigureProductExA(LPCSTR szProduct,int iInstallLevel,INSTALLSTATE eInstallState,LPCSTR szCommandLine);
  300. UINT WINAPI MsiConfigureProductExW(LPCWSTR szProduct,int iInstallLevel,INSTALLSTATE eInstallState,LPCWSTR szCommandLine);
  301. #define MsiConfigureProductEx __MINGW_NAME_AW(MsiConfigureProductEx)
  302. UINT WINAPI MsiReinstallProductA(LPCSTR szProduct,DWORD szReinstallMode);
  303. UINT WINAPI MsiReinstallProductW(LPCWSTR szProduct,DWORD szReinstallMode);
  304. #define MsiReinstallProduct __MINGW_NAME_AW(MsiReinstallProduct)
  305. #if (_WIN32_MSI >= 150)
  306. UINT WINAPI MsiAdvertiseProductExA(LPCSTR szPackagePath,LPCSTR szScriptfilePath,LPCSTR szTransforms,LANGID lgidLanguage,DWORD dwPlatform,DWORD dwOptions);
  307. UINT WINAPI MsiAdvertiseProductExW(LPCWSTR szPackagePath,LPCWSTR szScriptfilePath,LPCWSTR szTransforms,LANGID lgidLanguage,DWORD dwPlatform,DWORD dwOptions);
  308. #define MsiAdvertiseProductEx __MINGW_NAME_AW(MsiAdvertiseProductEx)
  309. #endif
  310. UINT WINAPI MsiAdvertiseProductA(LPCSTR szPackagePath,LPCSTR szScriptfilePath,LPCSTR szTransforms,LANGID lgidLanguage);
  311. UINT WINAPI MsiAdvertiseProductW(LPCWSTR szPackagePath,LPCWSTR szScriptfilePath,LPCWSTR szTransforms,LANGID lgidLanguage);
  312. #define MsiAdvertiseProduct __MINGW_NAME_AW(MsiAdvertiseProduct)
  313. #if (_WIN32_MSI >= 150)
  314. UINT WINAPI MsiProcessAdvertiseScriptA(LPCSTR szScriptFile,LPCSTR szIconFolder,HKEY hRegData,WINBOOL fShortcuts,WINBOOL fRemoveItems);
  315. UINT WINAPI MsiProcessAdvertiseScriptW(LPCWSTR szScriptFile,LPCWSTR szIconFolder,HKEY hRegData,WINBOOL fShortcuts,WINBOOL fRemoveItems);
  316. #define MsiProcessAdvertiseScript __MINGW_NAME_AW(MsiProcessAdvertiseScript)
  317. #endif
  318. UINT WINAPI MsiAdvertiseScriptA(LPCSTR szScriptFile,DWORD dwFlags,PHKEY phRegData,WINBOOL fRemoveItems);
  319. UINT WINAPI MsiAdvertiseScriptW(LPCWSTR szScriptFile,DWORD dwFlags,PHKEY phRegData,WINBOOL fRemoveItems);
  320. #define MsiAdvertiseScript __MINGW_NAME_AW(MsiAdvertiseScript)
  321. UINT WINAPI MsiGetProductInfoFromScriptA(LPCSTR szScriptFile,LPSTR lpProductBuf39,LANGID *plgidLanguage,DWORD *pdwVersion,LPSTR lpNameBuf,DWORD *pcchNameBuf,LPSTR lpPackageBuf,DWORD *pcchPackageBuf);
  322. UINT WINAPI MsiGetProductInfoFromScriptW(LPCWSTR szScriptFile,LPWSTR lpProductBuf39,LANGID *plgidLanguage,DWORD *pdwVersion,LPWSTR lpNameBuf,DWORD *pcchNameBuf,LPWSTR lpPackageBuf,DWORD *pcchPackageBuf);
  323. #define MsiGetProductInfoFromScript __MINGW_NAME_AW(MsiGetProductInfoFromScript)
  324. UINT WINAPI MsiGetProductCodeA(LPCSTR szComponent,LPSTR lpBuf39);
  325. UINT WINAPI MsiGetProductCodeW(LPCWSTR szComponent,LPWSTR lpBuf39);
  326. #define MsiGetProductCode __MINGW_NAME_AW(MsiGetProductCode)
  327. USERINFOSTATE WINAPI MsiGetUserInfoA(LPCSTR szProduct,LPSTR lpUserNameBuf,DWORD *pcchUserNameBuf,LPSTR lpOrgNameBuf,DWORD *pcchOrgNameBuf,LPSTR lpSerialBuf,DWORD *pcchSerialBuf);
  328. USERINFOSTATE WINAPI MsiGetUserInfoW(LPCWSTR szProduct,LPWSTR lpUserNameBuf,DWORD *pcchUserNameBuf,LPWSTR lpOrgNameBuf,DWORD *pcchOrgNameBuf,LPWSTR lpSerialBuf,DWORD *pcchSerialBuf);
  329. #define MsiGetUserInfo __MINGW_NAME_AW(MsiGetUserInfo)
  330. UINT WINAPI MsiCollectUserInfoA(LPCSTR szProduct);
  331. UINT WINAPI MsiCollectUserInfoW(LPCWSTR szProduct);
  332. #define MsiCollectUserInfo __MINGW_NAME_AW(MsiCollectUserInfo)
  333. UINT WINAPI MsiApplyPatchA(LPCSTR szPatchPackage,LPCSTR szInstallPackage,INSTALLTYPE eInstallType,LPCSTR szCommandLine);
  334. UINT WINAPI MsiApplyPatchW(LPCWSTR szPatchPackage,LPCWSTR szInstallPackage,INSTALLTYPE eInstallType,LPCWSTR szCommandLine);
  335. #define MsiApplyPatch __MINGW_NAME_AW(MsiApplyPatch)
  336. UINT WINAPI MsiGetPatchInfoA(LPCSTR szPatch,LPCSTR szAttribute,LPSTR lpValueBuf,DWORD *pcchValueBuf);
  337. UINT WINAPI MsiGetPatchInfoW(LPCWSTR szPatch,LPCWSTR szAttribute,LPWSTR lpValueBuf,DWORD *pcchValueBuf);
  338. #define MsiGetPatchInfo __MINGW_NAME_AW(MsiGetPatchInfo)
  339. UINT WINAPI MsiEnumPatchesA(LPCSTR szProduct,DWORD iPatchIndex,LPSTR lpPatchBuf,LPSTR lpTransformsBuf,DWORD *pcchTransformsBuf);
  340. UINT WINAPI MsiEnumPatchesW(LPCWSTR szProduct,DWORD iPatchIndex,LPWSTR lpPatchBuf,LPWSTR lpTransformsBuf,DWORD *pcchTransformsBuf);
  341. #define MsiEnumPatches __MINGW_NAME_AW(MsiEnumPatches)
  342. #if (_WIN32_MSI >= 300)
  343. UINT WINAPI MsiRemovePatchesA(LPCSTR szPatchList,LPCSTR szProductCode,INSTALLTYPE eUninstallType,LPCSTR szPropertyList);
  344. UINT WINAPI MsiRemovePatchesW(LPCWSTR szPatchList,LPCWSTR szProductCode,INSTALLTYPE eUninstallType,LPCWSTR szPropertyList);
  345. #define MsiRemovePatches __MINGW_NAME_AW(MsiRemovePatches)
  346. UINT WINAPI MsiExtractPatchXMLDataA(LPCSTR szPatchPath,DWORD dwReserved,LPSTR szXMLData,DWORD *pcchXMLData);
  347. UINT WINAPI MsiExtractPatchXMLDataW(LPCWSTR szPatchPath,DWORD dwReserved,LPWSTR szXMLData,DWORD *pcchXMLData);
  348. #define MsiExtractPatchXMLData __MINGW_NAME_AW(MsiExtractPatchXMLData)
  349. UINT WINAPI MsiGetPatchInfoExA(LPCSTR szPatchCode,LPCSTR szProductCode,LPCSTR szUserSid,MSIINSTALLCONTEXT dwContext,LPCSTR szProperty,LPSTR lpValue,DWORD *pcchValue);
  350. UINT WINAPI MsiGetPatchInfoExW(LPCWSTR szPatchCode,LPCWSTR szProductCode,LPCWSTR szUserSid,MSIINSTALLCONTEXT dwContext,LPCWSTR szProperty,LPWSTR lpValue,DWORD *pcchValue);
  351. #define MsiGetPatchInfoEx __MINGW_NAME_AW(MsiGetPatchInfoEx)
  352. UINT WINAPI MsiApplyMultiplePatchesA(LPCSTR szPatchPackages,LPCSTR szProductCode,LPCSTR szPropertiesList);
  353. UINT WINAPI MsiApplyMultiplePatchesW(LPCWSTR szPatchPackages,LPCWSTR szProductCode,LPCWSTR szPropertiesList);
  354. #define MsiApplyMultiplePatches __MINGW_NAME_AW(MsiApplyMultiplePatches)
  355. UINT WINAPI MsiDeterminePatchSequenceA(LPCSTR szProductCode,LPCSTR szUserSid,MSIINSTALLCONTEXT dwContext,DWORD cPatchInfo,PMSIPATCHSEQUENCEINFOA pPatchInfo);
  356. UINT WINAPI MsiDeterminePatchSequenceW(LPCWSTR szProductCode,LPCWSTR szUserSid,MSIINSTALLCONTEXT dwContext,DWORD cPatchInfo,PMSIPATCHSEQUENCEINFOW pPatchInfo);
  357. #define MsiDeterminePatchSequence __MINGW_NAME_AW(MsiDeterminePatchSequence)
  358. UINT WINAPI MsiDetermineApplicablePatchesA(LPCSTR szProductPackagePath,DWORD cPatchInfo,PMSIPATCHSEQUENCEINFOA pPatchInfo);
  359. UINT WINAPI MsiDetermineApplicablePatchesW(LPCWSTR szProductPackagePath,DWORD cPatchInfo,PMSIPATCHSEQUENCEINFOW pPatchInfo);
  360. #define MsiDetermineApplicablePatches __MINGW_NAME_AW(MsiDetermineApplicablePatches)
  361. 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);
  362. 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);
  363. #define MsiEnumPatchesEx __MINGW_NAME_AW(MsiEnumPatchesEx)
  364. #endif
  365. INSTALLSTATE WINAPI MsiQueryFeatureStateA(LPCSTR szProduct,LPCSTR szFeature);
  366. INSTALLSTATE WINAPI MsiQueryFeatureStateW(LPCWSTR szProduct,LPCWSTR szFeature);
  367. #define MsiQueryFeatureState __MINGW_NAME_AW(MsiQueryFeatureState)
  368. #if (_WIN32_MSI >= 300)
  369. UINT WINAPI MsiQueryFeatureStateExA(LPCSTR szProductCode,LPCSTR szUserSid,MSIINSTALLCONTEXT dwContext,LPCSTR szFeature,INSTALLSTATE *pdwState);
  370. UINT WINAPI MsiQueryFeatureStateExW(LPCWSTR szProductCode,LPCWSTR szUserSid,MSIINSTALLCONTEXT dwContext,LPCWSTR szFeature,INSTALLSTATE *pdwState);
  371. #define MsiQueryFeatureStateEx __MINGW_NAME_AW(MsiQueryFeatureStateEx)
  372. #endif
  373. INSTALLSTATE WINAPI MsiUseFeatureA(LPCSTR szProduct,LPCSTR szFeature);
  374. INSTALLSTATE WINAPI MsiUseFeatureW(LPCWSTR szProduct,LPCWSTR szFeature);
  375. #define MsiUseFeature __MINGW_NAME_AW(MsiUseFeature)
  376. INSTALLSTATE WINAPI MsiUseFeatureExA(LPCSTR szProduct,LPCSTR szFeature,DWORD dwInstallMode,DWORD dwReserved);
  377. INSTALLSTATE WINAPI MsiUseFeatureExW(LPCWSTR szProduct,LPCWSTR szFeature,DWORD dwInstallMode,DWORD dwReserved);
  378. #define MsiUseFeatureEx __MINGW_NAME_AW(MsiUseFeatureEx)
  379. UINT WINAPI MsiGetFeatureUsageA(LPCSTR szProduct,LPCSTR szFeature,DWORD *pdwUseCount,WORD *pwDateUsed);
  380. UINT WINAPI MsiGetFeatureUsageW(LPCWSTR szProduct,LPCWSTR szFeature,DWORD *pdwUseCount,WORD *pwDateUsed);
  381. #define MsiGetFeatureUsage __MINGW_NAME_AW(MsiGetFeatureUsage)
  382. UINT WINAPI MsiConfigureFeatureA(LPCSTR szProduct,LPCSTR szFeature,INSTALLSTATE eInstallState);
  383. UINT WINAPI MsiConfigureFeatureW(LPCWSTR szProduct,LPCWSTR szFeature,INSTALLSTATE eInstallState);
  384. #define MsiConfigureFeature __MINGW_NAME_AW(MsiConfigureFeature)
  385. UINT WINAPI MsiReinstallFeatureA(LPCSTR szProduct,LPCSTR szFeature,DWORD dwReinstallMode);
  386. UINT WINAPI MsiReinstallFeatureW(LPCWSTR szProduct,LPCWSTR szFeature,DWORD dwReinstallMode);
  387. #define MsiReinstallFeature __MINGW_NAME_AW(MsiReinstallFeature)
  388. UINT WINAPI MsiProvideComponentA(LPCSTR szProduct,LPCSTR szFeature,LPCSTR szComponent,DWORD dwInstallMode,LPSTR lpPathBuf,DWORD *pcchPathBuf);
  389. UINT WINAPI MsiProvideComponentW(LPCWSTR szProduct,LPCWSTR szFeature,LPCWSTR szComponent,DWORD dwInstallMode,LPWSTR lpPathBuf,DWORD *pcchPathBuf);
  390. #define MsiProvideComponent __MINGW_NAME_AW(MsiProvideComponent)
  391. UINT WINAPI MsiProvideQualifiedComponentA(LPCSTR szCategory,LPCSTR szQualifier,DWORD dwInstallMode,LPSTR lpPathBuf,DWORD *pcchPathBuf);
  392. UINT WINAPI MsiProvideQualifiedComponentW(LPCWSTR szCategory,LPCWSTR szQualifier,DWORD dwInstallMode,LPWSTR lpPathBuf,DWORD *pcchPathBuf);
  393. #define MsiProvideQualifiedComponent __MINGW_NAME_AW(MsiProvideQualifiedComponent)
  394. UINT WINAPI MsiProvideQualifiedComponentExA(LPCSTR szCategory,LPCSTR szQualifier,DWORD dwInstallMode,LPCSTR szProduct,DWORD dwUnused1,DWORD dwUnused2,LPSTR lpPathBuf,DWORD *pcchPathBuf);
  395. UINT WINAPI MsiProvideQualifiedComponentExW(LPCWSTR szCategory,LPCWSTR szQualifier,DWORD dwInstallMode,LPCWSTR szProduct,DWORD dwUnused1,DWORD dwUnused2,LPWSTR lpPathBuf,DWORD *pcchPathBuf);
  396. #define MsiProvideQualifiedComponentEx __MINGW_NAME_AW(MsiProvideQualifiedComponentEx)
  397. INSTALLSTATE WINAPI MsiGetComponentPathA(LPCSTR szProduct,LPCSTR szComponent,LPSTR lpPathBuf,DWORD *pcchBuf);
  398. INSTALLSTATE WINAPI MsiGetComponentPathW(LPCWSTR szProduct,LPCWSTR szComponent,LPWSTR lpPathBuf,DWORD *pcchBuf);
  399. #define MsiGetComponentPath __MINGW_NAME_AW(MsiGetComponentPath)
  400. #if (_WIN32_MSI >= 150)
  401. #define MSIASSEMBLYINFO_NETASSEMBLY 0
  402. #define MSIASSEMBLYINFO_WIN32ASSEMBLY 1
  403. UINT WINAPI MsiProvideAssemblyA(LPCSTR szAssemblyName,LPCSTR szAppContext,DWORD dwInstallMode,DWORD dwAssemblyInfo,LPSTR lpPathBuf,DWORD *pcchPathBuf);
  404. UINT WINAPI MsiProvideAssemblyW(LPCWSTR szAssemblyName,LPCWSTR szAppContext,DWORD dwInstallMode,DWORD dwAssemblyInfo,LPWSTR lpPathBuf,DWORD *pcchPathBuf);
  405. #define MsiProvideAssembly __MINGW_NAME_AW(MsiProvideAssembly)
  406. #endif
  407. #if (_WIN32_MSI >= 300)
  408. UINT WINAPI MsiQueryComponentStateA(LPCSTR szProductCode,LPCSTR szUserSid,MSIINSTALLCONTEXT dwContext,LPCSTR szComponentCode,INSTALLSTATE *pdwState);
  409. UINT WINAPI MsiQueryComponentStateW(LPCWSTR szProductCode,LPCWSTR szUserSid,MSIINSTALLCONTEXT dwContext,LPCWSTR szComponentCode,INSTALLSTATE *pdwState);
  410. #define MsiQueryComponentState __MINGW_NAME_AW(MsiQueryComponentState)
  411. #endif
  412. UINT WINAPI MsiEnumProductsA(DWORD iProductIndex,LPSTR lpProductBuf);
  413. UINT WINAPI MsiEnumProductsW(DWORD iProductIndex,LPWSTR lpProductBuf);
  414. #define MsiEnumProducts __MINGW_NAME_AW(MsiEnumProducts)
  415. #if (_WIN32_MSI >= 300)
  416. UINT WINAPI MsiEnumProductsExA(LPCSTR szProductCode,LPCSTR szUserSid,DWORD dwContext,DWORD dwIndex,CHAR szInstalledProductCode[39],MSIINSTALLCONTEXT *pdwInstalledContext,LPSTR szSid,LPDWORD pcchSid);
  417. UINT WINAPI MsiEnumProductsExW(LPCWSTR szProductCode,LPCWSTR szUserSid,DWORD dwContext,DWORD dwIndex,WCHAR szInstalledProductCode[39],MSIINSTALLCONTEXT *pdwInstalledContext,LPWSTR szSid,LPDWORD pcchSid);
  418. #define MsiEnumProductsEx __MINGW_NAME_AW(MsiEnumProductsEx)
  419. #endif
  420. #if (_WIN32_MSI >= 110)
  421. UINT WINAPI MsiEnumRelatedProductsA(LPCSTR lpUpgradeCode,DWORD dwReserved,DWORD iProductIndex,LPSTR lpProductBuf);
  422. UINT WINAPI MsiEnumRelatedProductsW(LPCWSTR lpUpgradeCode,DWORD dwReserved,DWORD iProductIndex,LPWSTR lpProductBuf);
  423. #define MsiEnumRelatedProducts __MINGW_NAME_AW(MsiEnumRelatedProducts)
  424. #endif
  425. UINT WINAPI MsiEnumFeaturesA(LPCSTR szProduct,DWORD iFeatureIndex,LPSTR lpFeatureBuf,LPSTR lpParentBuf);
  426. UINT WINAPI MsiEnumFeaturesW(LPCWSTR szProduct,DWORD iFeatureIndex,LPWSTR lpFeatureBuf,LPWSTR lpParentBuf);
  427. #define MsiEnumFeatures __MINGW_NAME_AW(MsiEnumFeatures)
  428. UINT WINAPI MsiEnumComponentsA(DWORD iComponentIndex,LPSTR lpComponentBuf);
  429. UINT WINAPI MsiEnumComponentsW(DWORD iComponentIndex,LPWSTR lpComponentBuf);
  430. #define MsiEnumComponents __MINGW_NAME_AW(MsiEnumComponents)
  431. UINT WINAPI MsiEnumClientsA(LPCSTR szComponent,DWORD iProductIndex,LPSTR lpProductBuf);
  432. UINT WINAPI MsiEnumClientsW(LPCWSTR szComponent,DWORD iProductIndex,LPWSTR lpProductBuf);
  433. #define MsiEnumClients __MINGW_NAME_AW(MsiEnumClients)
  434. UINT WINAPI MsiEnumComponentQualifiersA(LPCSTR szComponent,DWORD iIndex,LPSTR lpQualifierBuf,DWORD *pcchQualifierBuf,LPSTR lpApplicationDataBuf,DWORD *pcchApplicationDataBuf);
  435. UINT WINAPI MsiEnumComponentQualifiersW(LPCWSTR szComponent,DWORD iIndex,LPWSTR lpQualifierBuf,DWORD *pcchQualifierBuf,LPWSTR lpApplicationDataBuf,DWORD *pcchApplicationDataBuf);
  436. #define MsiEnumComponentQualifiers __MINGW_NAME_AW(MsiEnumComponentQualifiers)
  437. UINT WINAPI MsiOpenProductA(LPCSTR szProduct,MSIHANDLE *hProduct);
  438. UINT WINAPI MsiOpenProductW(LPCWSTR szProduct,MSIHANDLE *hProduct);
  439. #define MsiOpenProduct __MINGW_NAME_AW(MsiOpenProduct)
  440. UINT WINAPI MsiOpenPackageA(LPCSTR szPackagePath,MSIHANDLE *hProduct);
  441. UINT WINAPI MsiOpenPackageW(LPCWSTR szPackagePath,MSIHANDLE *hProduct);
  442. #define MsiOpenPackage __MINGW_NAME_AW(MsiOpenPackage)
  443. #if (_WIN32_MSI >= 150)
  444. UINT WINAPI MsiOpenPackageExA(LPCSTR szPackagePath,DWORD dwOptions,MSIHANDLE *hProduct);
  445. UINT WINAPI MsiOpenPackageExW(LPCWSTR szPackagePath,DWORD dwOptions,MSIHANDLE *hProduct);
  446. #define MsiOpenPackageEx __MINGW_NAME_AW(MsiOpenPackageEx)
  447. #if _WIN32_MSI >= 400
  448. UINT WINAPI MsiGetPatchFileListA(LPCSTR szProductCode, LPCSTR szPatchPackages, LPDWORD pcFiles, MSIHANDLE **pphFileRecords);
  449. UINT WINAPI MsiGetPatchFileListW(LPCWSTR szProductCode, LPCWSTR szPatchPackages, LPDWORD pcFiles, MSIHANDLE **pphFileRecords);
  450. #define MsiGetPatchFileList __MINGW_NAME_AW(MsiGetPatchFileList)
  451. #endif
  452. #endif
  453. UINT WINAPI MsiGetProductPropertyA(MSIHANDLE hProduct,LPCSTR szProperty,LPSTR lpValueBuf,DWORD *pcchValueBuf);
  454. UINT WINAPI MsiGetProductPropertyW(MSIHANDLE hProduct,LPCWSTR szProperty,LPWSTR lpValueBuf,DWORD *pcchValueBuf);
  455. #define MsiGetProductProperty __MINGW_NAME_AW(MsiGetProductProperty)
  456. UINT WINAPI MsiVerifyPackageA(LPCSTR szPackagePath);
  457. UINT WINAPI MsiVerifyPackageW(LPCWSTR szPackagePath);
  458. #define MsiVerifyPackage __MINGW_NAME_AW(MsiVerifyPackage)
  459. UINT WINAPI MsiGetFeatureInfoA(MSIHANDLE hProduct,LPCSTR szFeature,DWORD *lpAttributes,LPSTR lpTitleBuf,DWORD *pcchTitleBuf,LPSTR lpHelpBuf,DWORD *pcchHelpBuf);
  460. UINT WINAPI MsiGetFeatureInfoW(MSIHANDLE hProduct,LPCWSTR szFeature,DWORD *lpAttributes,LPWSTR lpTitleBuf,DWORD *pcchTitleBuf,LPWSTR lpHelpBuf,DWORD *pcchHelpBuf);
  461. #define MsiGetFeatureInfo __MINGW_NAME_AW(MsiGetFeatureInfo)
  462. UINT WINAPI MsiInstallMissingComponentA(LPCSTR szProduct,LPCSTR szComponent,INSTALLSTATE eInstallState);
  463. UINT WINAPI MsiInstallMissingComponentW(LPCWSTR szProduct,LPCWSTR szComponent,INSTALLSTATE eInstallState);
  464. #define MsiInstallMissingComponent __MINGW_NAME_AW(MsiInstallMissingComponent)
  465. UINT WINAPI MsiInstallMissingFileA(LPCSTR szProduct,LPCSTR szFile);
  466. UINT WINAPI MsiInstallMissingFileW(LPCWSTR szProduct,LPCWSTR szFile);
  467. #define MsiInstallMissingFile __MINGW_NAME_AW(MsiInstallMissingFile)
  468. INSTALLSTATE WINAPI MsiLocateComponentA(LPCSTR szComponent,LPSTR lpPathBuf,DWORD *pcchBuf);
  469. INSTALLSTATE WINAPI MsiLocateComponentW(LPCWSTR szComponent,LPWSTR lpPathBuf,DWORD *pcchBuf);
  470. #define MsiLocateComponent __MINGW_NAME_AW(MsiLocateComponent)
  471. #if (_WIN32_MSI >= 110)
  472. UINT WINAPI MsiSourceListClearAllA(LPCSTR szProduct,LPCSTR szUserName,DWORD dwReserved);
  473. UINT WINAPI MsiSourceListClearAllW(LPCWSTR szProduct,LPCWSTR szUserName,DWORD dwReserved);
  474. #define MsiSourceListClearAll __MINGW_NAME_AW(MsiSourceListClearAll)
  475. UINT WINAPI MsiSourceListAddSourceA(LPCSTR szProduct,LPCSTR szUserName,DWORD dwReserved,LPCSTR szSource);
  476. UINT WINAPI MsiSourceListAddSourceW(LPCWSTR szProduct,LPCWSTR szUserName,DWORD dwReserved,LPCWSTR szSource);
  477. #define MsiSourceListAddSource __MINGW_NAME_AW(MsiSourceListAddSource)
  478. UINT WINAPI MsiSourceListForceResolutionA(LPCSTR szProduct,LPCSTR szUserName,DWORD dwReserved);
  479. UINT WINAPI MsiSourceListForceResolutionW(LPCWSTR szProduct,LPCWSTR szUserName,DWORD dwReserved);
  480. #define MsiSourceListForceResolution __MINGW_NAME_AW(MsiSourceListForceResolution)
  481. #endif
  482. #if (_WIN32_MSI >= 300)
  483. UINT WINAPI MsiSourceListAddSourceExA(LPCSTR szProductCodeOrPatchCode,LPCSTR szUserSid,MSIINSTALLCONTEXT dwContext,DWORD dwOptions,LPCSTR szSource,DWORD dwIndex);
  484. UINT WINAPI MsiSourceListAddSourceExW(LPCWSTR szProductCodeOrPatchCode,LPCWSTR szUserSid,MSIINSTALLCONTEXT dwContext,DWORD dwOptions,LPCWSTR szSource,DWORD dwIndex);
  485. #define MsiSourceListAddSourceEx __MINGW_NAME_AW(MsiSourceListAddSourceEx)
  486. UINT WINAPI MsiSourceListAddMediaDiskA(LPCSTR szProductCodeOrPatchCode,LPCSTR szUserSid,MSIINSTALLCONTEXT dwContext,DWORD dwOptions,DWORD dwDiskId,LPCSTR szVolumeLabel,LPCSTR szDiskPrompt);
  487. UINT WINAPI MsiSourceListAddMediaDiskW(LPCWSTR szProductCodeOrPatchCode,LPCWSTR szUserSid,MSIINSTALLCONTEXT dwContext,DWORD dwOptions,DWORD dwDiskId,LPCWSTR szVolumeLabel,LPCWSTR szDiskPrompt);
  488. #define MsiSourceListAddMediaDisk __MINGW_NAME_AW(MsiSourceListAddMediaDisk)
  489. UINT WINAPI MsiSourceListClearSourceA(LPCSTR szProductCodeOrPatchCode,LPCSTR szUserSid,MSIINSTALLCONTEXT dwContext,DWORD dwOptions,LPCSTR szSource);
  490. UINT WINAPI MsiSourceListClearSourceW(LPCWSTR szProductCodeOrPatchCode,LPCWSTR szUserSid,MSIINSTALLCONTEXT dwContext,DWORD dwOptions,LPCWSTR szSource);
  491. #define MsiSourceListClearSource __MINGW_NAME_AW(MsiSourceListClearSource)
  492. UINT WINAPI MsiSourceListClearMediaDiskA(LPCSTR szProductCodeOrPatchCode,LPCSTR szUserSid,MSIINSTALLCONTEXT dwContext,DWORD dwOptions,DWORD dwDiskId);
  493. UINT WINAPI MsiSourceListClearMediaDiskW(LPCWSTR szProductCodeOrPatchCode,LPCWSTR szUserSid,MSIINSTALLCONTEXT dwContext,DWORD dwOptions,DWORD dwDiskId);
  494. #define MsiSourceListClearMediaDisk __MINGW_NAME_AW(MsiSourceListClearMediaDisk)
  495. UINT WINAPI MsiSourceListClearAllExA(LPCSTR szProductCodeOrPatchCode,LPCSTR szUserSid,MSIINSTALLCONTEXT dwContext,DWORD dwOptions);
  496. UINT WINAPI MsiSourceListClearAllExW(LPCWSTR szProductCodeOrPatchCode,LPCWSTR szUserSid,MSIINSTALLCONTEXT dwContext,DWORD dwOptions);
  497. #define MsiSourceListClearAllEx __MINGW_NAME_AW(MsiSourceListClearAllEx)
  498. UINT WINAPI MsiSourceListForceResolutionExA(LPCSTR szProductCodeOrPatchCode,LPCSTR szUserSid,MSIINSTALLCONTEXT dwContext,DWORD dwOptions);
  499. UINT WINAPI MsiSourceListForceResolutionExW(LPCWSTR szProductCodeOrPatchCode,LPCWSTR szUserSid,MSIINSTALLCONTEXT dwContext,DWORD dwOptions);
  500. #define MsiSourceListForceResolutionEx __MINGW_NAME_AW(MsiSourceListForceResolutionEx)
  501. UINT WINAPI MsiSourceListSetInfoA(LPCSTR szProductCodeOrPatchCode,LPCSTR szUserSid,MSIINSTALLCONTEXT dwContext,DWORD dwOptions,LPCSTR szProperty,LPCSTR szValue);
  502. UINT WINAPI MsiSourceListSetInfoW(LPCWSTR szProductCodeOrPatchCode,LPCWSTR szUserSid,MSIINSTALLCONTEXT dwContext,DWORD dwOptions,LPCWSTR szProperty,LPCWSTR szValue);
  503. #define MsiSourceListSetInfo __MINGW_NAME_AW(MsiSourceListSetInfo)
  504. UINT WINAPI MsiSourceListGetInfoA(LPCSTR szProductCodeOrPatchCode,LPCSTR szUserSid,MSIINSTALLCONTEXT dwContext,DWORD dwOptions,LPCSTR szProperty,LPSTR szValue,LPDWORD pcchValue);
  505. UINT WINAPI MsiSourceListGetInfoW(LPCWSTR szProductCodeOrPatchCode,LPCWSTR szUserSid,MSIINSTALLCONTEXT dwContext,DWORD dwOptions,LPCWSTR szProperty,LPWSTR szValue,LPDWORD pcchValue);
  506. #define MsiSourceListGetInfo __MINGW_NAME_AW(MsiSourceListGetInfo)
  507. UINT WINAPI MsiSourceListEnumSourcesA(LPCSTR szProductCodeOrPatchCode,LPCSTR szUserSid,MSIINSTALLCONTEXT dwContext,DWORD dwOptions,DWORD dwIndex,LPSTR szSource,LPDWORD pcchSource);
  508. UINT WINAPI MsiSourceListEnumSourcesW(LPCWSTR szProductCodeOrPatchCode,LPCWSTR szUserSid,MSIINSTALLCONTEXT dwContext,DWORD dwOptions,DWORD dwIndex,LPWSTR szSource,LPDWORD pcchSource);
  509. #define MsiSourceListEnumSources __MINGW_NAME_AW(MsiSourceListEnumSources)
  510. UINT WINAPI MsiSourceListEnumMediaDisksA(LPCSTR szProductCodeOrPatchCode,LPCSTR szUserSid,MSIINSTALLCONTEXT dwContext,DWORD dwOptions,DWORD dwIndex,LPDWORD pdwDiskId,LPSTR szVolumeLabel,LPDWORD pcchVolumeLabel,LPSTR szDiskPrompt,LPDWORD pcchDiskPrompt);
  511. UINT WINAPI MsiSourceListEnumMediaDisksW(LPCWSTR szProductCodeOrPatchCode,LPCWSTR szUserSid,MSIINSTALLCONTEXT dwContext,DWORD dwOptions,DWORD dwIndex,LPDWORD pdwDiskId,LPWSTR szVolumeLabel,LPDWORD pcchVolumeLabel,LPWSTR szDiskPrompt,LPDWORD pcchDiskPrompt);
  512. #define MsiSourceListEnumMediaDisks __MINGW_NAME_AW(MsiSourceListEnumMediaDisks)
  513. #endif
  514. UINT WINAPI MsiGetFileVersionA(LPCSTR szFilePath,LPSTR lpVersionBuf,DWORD *pcchVersionBuf,LPSTR lpLangBuf,DWORD *pcchLangBuf);
  515. UINT WINAPI MsiGetFileVersionW(LPCWSTR szFilePath,LPWSTR lpVersionBuf,DWORD *pcchVersionBuf,LPWSTR lpLangBuf,DWORD *pcchLangBuf);
  516. #define MsiGetFileVersion __MINGW_NAME_AW(MsiGetFileVersion)
  517. #if (_WIN32_MSI >= 150)
  518. UINT WINAPI MsiGetFileHashA(LPCSTR szFilePath,DWORD dwOptions,PMSIFILEHASHINFO pHash);
  519. UINT WINAPI MsiGetFileHashW(LPCWSTR szFilePath,DWORD dwOptions,PMSIFILEHASHINFO pHash);
  520. #define MsiGetFileHash __MINGW_NAME_AW(MsiGetFileHash)
  521. #ifndef _MSI_NO_CRYPTO
  522. HRESULT WINAPI MsiGetFileSignatureInformationA(LPCSTR szSignedObjectPath,DWORD dwFlags,PCCERT_CONTEXT *ppcCertContext,BYTE *pbHashData,DWORD *pcbHashData);
  523. HRESULT WINAPI MsiGetFileSignatureInformationW(LPCWSTR szSignedObjectPath,DWORD dwFlags,PCCERT_CONTEXT *ppcCertContext,BYTE *pbHashData,DWORD *pcbHashData);
  524. #define MsiGetFileSignatureInformation __MINGW_NAME_AW(MsiGetFileSignatureInformation)
  525. #define MSI_INVALID_HASH_IS_FATAL 0x1
  526. #endif
  527. #endif
  528. #if (_WIN32_MSI >= 110)
  529. UINT WINAPI MsiGetShortcutTargetA(LPCSTR szShortcutPath,LPSTR szProductCode,LPSTR szFeatureId,LPSTR szComponentCode);
  530. UINT WINAPI MsiGetShortcutTargetW(LPCWSTR szShortcutPath,LPWSTR szProductCode,LPWSTR szFeatureId,LPWSTR szComponentCode);
  531. #define MsiGetShortcutTarget __MINGW_NAME_AW(MsiGetShortcutTarget)
  532. UINT WINAPI MsiIsProductElevatedA(LPCSTR szProduct,WINBOOL *pfElevated);
  533. UINT WINAPI MsiIsProductElevatedW(LPCWSTR szProduct,WINBOOL *pfElevated);
  534. #define MsiIsProductElevated __MINGW_NAME_AW(MsiIsProductElevated)
  535. #endif
  536. #if (_WIN32_MSI >= 310)
  537. UINT WINAPI MsiNotifySidChangeA(LPCSTR pOldSid,LPCSTR pNewSid);
  538. UINT WINAPI MsiNotifySidChangeW(LPCWSTR pOldSid,LPCWSTR pNewSid);
  539. #define MsiNotifySidChange __MINGW_NAME_AW(MsiNotifySidChange)
  540. #if _WIN32_MSI >= 450
  541. UINT WINAPI MsiBeginTransactionA(LPCSTR szName, DWORD dwTransactionAttributes, MSIHANDLE *phTransactionHandle, HANDLE *phChangeOfOwnerEvent);
  542. UINT WINAPI MsiBeginTransactionW(LPCWSTR szName, DWORD dwTransactionAttributes, MSIHANDLE *phTransactionHandle, HANDLE *phChangeOfOwnerEvent);
  543. #define MsiBeginTransaction __MINGW_NAME_AW(MsiBeginTransaction)
  544. UINT WINAPI MsiEndTransaction(DWORD dwTransactionState);
  545. UINT WINAPI MsiJoinTransaction(MSIHANDLE hTransactionHandle, DWORD dwTransactionAttributes, HANDLE *phChangeOfOwnerEvent);
  546. #endif
  547. #endif
  548. #ifdef __cplusplus
  549. }
  550. #endif
  551. #ifndef ERROR_INSTALL_FAILURE
  552. #define ERROR_INSTALL_USEREXIT __MSABI_LONG(1602)
  553. #define ERROR_INSTALL_FAILURE __MSABI_LONG(1603)
  554. #define ERROR_INSTALL_SUSPEND __MSABI_LONG(1604)
  555. #define ERROR_UNKNOWN_PRODUCT __MSABI_LONG(1605)
  556. #define ERROR_UNKNOWN_FEATURE __MSABI_LONG(1606)
  557. #define ERROR_UNKNOWN_COMPONENT __MSABI_LONG(1607)
  558. #define ERROR_UNKNOWN_PROPERTY __MSABI_LONG(1608)
  559. #define ERROR_INVALID_HANDLE_STATE __MSABI_LONG(1609)
  560. #define ERROR_BAD_CONFIGURATION __MSABI_LONG(1610)
  561. #define ERROR_INDEX_ABSENT __MSABI_LONG(1611)
  562. #define ERROR_INSTALL_SOURCE_ABSENT __MSABI_LONG(1612)
  563. #define ERROR_PRODUCT_UNINSTALLED __MSABI_LONG(1614)
  564. #define ERROR_BAD_QUERY_SYNTAX __MSABI_LONG(1615)
  565. #define ERROR_INVALID_FIELD __MSABI_LONG(1616)
  566. #endif
  567. #ifndef ERROR_INSTALL_SERVICE_FAILURE
  568. #define ERROR_INSTALL_SERVICE_FAILURE __MSABI_LONG(1601)
  569. #define ERROR_INSTALL_PACKAGE_VERSION __MSABI_LONG(1613)
  570. #define ERROR_INSTALL_ALREADY_RUNNING __MSABI_LONG(1618)
  571. #define ERROR_INSTALL_PACKAGE_OPEN_FAILED __MSABI_LONG(1619)
  572. #define ERROR_INSTALL_PACKAGE_INVALID __MSABI_LONG(1620)
  573. #define ERROR_INSTALL_UI_FAILURE __MSABI_LONG(1621)
  574. #define ERROR_INSTALL_LOG_FAILURE __MSABI_LONG(1622)
  575. #define ERROR_INSTALL_LANGUAGE_UNSUPPORTED __MSABI_LONG(1623)
  576. #define ERROR_INSTALL_PACKAGE_REJECTED __MSABI_LONG(1625)
  577. #define ERROR_FUNCTION_NOT_CALLED __MSABI_LONG(1626)
  578. #define ERROR_FUNCTION_FAILED __MSABI_LONG(1627)
  579. #define ERROR_INVALID_TABLE __MSABI_LONG(1628)
  580. #define ERROR_DATATYPE_MISMATCH __MSABI_LONG(1629)
  581. #define ERROR_UNSUPPORTED_TYPE __MSABI_LONG(1630)
  582. #define ERROR_CREATE_FAILED __MSABI_LONG(1631)
  583. #endif
  584. #ifndef ERROR_INSTALL_TEMP_UNWRITABLE
  585. #define ERROR_INSTALL_TEMP_UNWRITABLE __MSABI_LONG(1632)
  586. #endif
  587. #ifndef ERROR_INSTALL_PLATFORM_UNSUPPORTED
  588. #define ERROR_INSTALL_PLATFORM_UNSUPPORTED __MSABI_LONG(1633)
  589. #endif
  590. #ifndef ERROR_INSTALL_NOTUSED
  591. #define ERROR_INSTALL_NOTUSED __MSABI_LONG(1634)
  592. #endif
  593. #ifndef ERROR_INSTALL_TRANSFORM_FAILURE
  594. #define ERROR_INSTALL_TRANSFORM_FAILURE __MSABI_LONG(1624)
  595. #endif
  596. #ifndef ERROR_PATCH_PACKAGE_OPEN_FAILED
  597. #define ERROR_PATCH_PACKAGE_OPEN_FAILED __MSABI_LONG(1635)
  598. #define ERROR_PATCH_PACKAGE_INVALID __MSABI_LONG(1636)
  599. #define ERROR_PATCH_PACKAGE_UNSUPPORTED __MSABI_LONG(1637)
  600. #endif
  601. #ifndef ERROR_PRODUCT_VERSION
  602. #define ERROR_PRODUCT_VERSION __MSABI_LONG(1638)
  603. #endif
  604. #ifndef ERROR_INVALID_COMMAND_LINE
  605. #define ERROR_INVALID_COMMAND_LINE __MSABI_LONG(1639)
  606. #endif
  607. #ifndef ERROR_INSTALL_REMOTE_DISALLOWED
  608. #define ERROR_INSTALL_REMOTE_DISALLOWED __MSABI_LONG(1640)
  609. #endif
  610. #ifndef ERROR_SUCCESS_REBOOT_INITIATED
  611. #define ERROR_SUCCESS_REBOOT_INITIATED __MSABI_LONG(1641)
  612. #endif
  613. #ifndef ERROR_PATCH_TARGET_NOT_FOUND
  614. #define ERROR_PATCH_TARGET_NOT_FOUND __MSABI_LONG(1642)
  615. #endif
  616. #ifndef ERROR_PATCH_PACKAGE_REJECTED
  617. #define ERROR_PATCH_PACKAGE_REJECTED __MSABI_LONG(1643)
  618. #endif
  619. #ifndef ERROR_INSTALL_TRANSFORM_REJECTED
  620. #define ERROR_INSTALL_TRANSFORM_REJECTED __MSABI_LONG(1644)
  621. #endif
  622. #ifndef ERROR_INSTALL_REMOTE_PROHIBITED
  623. #define ERROR_INSTALL_REMOTE_PROHIBITED __MSABI_LONG(1645)
  624. #endif
  625. #ifndef ERROR_PATCH_REMOVAL_UNSUPPORTED
  626. #define ERROR_PATCH_REMOVAL_UNSUPPORTED __MSABI_LONG(1646)
  627. #endif
  628. #ifndef ERROR_UNKNOWN_PATCH
  629. #define ERROR_UNKNOWN_PATCH __MSABI_LONG(1647)
  630. #endif
  631. #ifndef ERROR_PATCH_NO_SEQUENCE
  632. #define ERROR_PATCH_NO_SEQUENCE __MSABI_LONG(1648)
  633. #endif
  634. #ifndef ERROR_PATCH_REMOVAL_DISALLOWED
  635. #define ERROR_PATCH_REMOVAL_DISALLOWED __MSABI_LONG(1649)
  636. #endif
  637. #ifndef ERROR_INVALID_PATCH_XML
  638. #define ERROR_INVALID_PATCH_XML __MSABI_LONG(1650)
  639. #endif
  640. #ifndef ERROR_PATCH_MANAGED_ADVERTISED_PRODUCT
  641. #define ERROR_PATCH_MANAGED_ADVERTISED_PRODUCT __MSABI_LONG(1651)
  642. #endif
  643. #ifndef ERROR_INSTALL_SERVICE_SAFEBOOT
  644. #define ERROR_INSTALL_SERVICE_SAFEBOOT __MSABI_LONG(1652)
  645. #endif
  646. #ifndef ERROR_ROLLBACK_DISABLED
  647. #define ERROR_ROLLBACK_DISABLED __MSABI_LONG(1653)
  648. #endif
  649. #endif