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