Mercurial > games > semicongine
diff fuhtark_test/include/winapi/msi.h @ 1500:91c8c3b7cbf0
add: futhark tests for generating vulkan api
| author | sam <sam@basx.dev> |
|---|---|
| date | Wed, 26 Nov 2025 21:36:48 +0700 |
| parents | |
| children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/fuhtark_test/include/winapi/msi.h Wed Nov 26 21:36:48 2025 +0700 @@ -0,0 +1,1069 @@ +/** + * This file has no copyright assigned and is placed in the Public Domain. + * This file is part of the w64 mingw-runtime package. + * No warranty is given; refer to the file DISCLAIMER within this package. + */ +#ifndef _MSI_H_ +#define _MSI_H_ + +#ifndef NTDDI_WIN2K +#define NTDDI_WIN2K 0x05000000 +#endif +#ifndef NTDDI_WINXP +#define NTDDI_WINXP 0x05010000 +#endif +#ifndef NTDDI_WINXPSP2 +#define NTDDI_WINXPSP2 0x05010200 +#endif +#ifndef NTDDI_WS03SP1 +#define NTDDI_WS03SP1 0x05020100 +#endif + +#ifndef _WIN32_MSI +#if (defined(NTDDI_VERSION) && NTDDI_VERSION >= NTDDI_WS03SP1) +#define _WIN32_MSI 310 +#elif (defined(NTDDI_VERSION) && NTDDI_VERSION >= NTDDI_WINXPSP2) +#define _WIN32_MSI 300 +#else +#define _WIN32_MSI 200 +#endif +#endif + +#if (_WIN32_MSI >= 150) +#ifndef _MSI_NO_CRYPTO +#include "wincrypt.h" +#endif +#endif + +typedef unsigned long MSIHANDLE; + +#ifdef __cplusplus +extern "C" { +#endif + + UINT WINAPI MsiCloseHandle(MSIHANDLE hAny); + UINT WINAPI MsiCloseAllHandles(); + +#ifdef __cplusplus +} +#endif + +#ifdef __cplusplus +class PMSIHANDLE { + MSIHANDLE m_h; +public: + PMSIHANDLE():m_h(0){} + PMSIHANDLE(MSIHANDLE h):m_h(h){} + ~PMSIHANDLE(){if (m_h!=0) MsiCloseHandle(m_h);} + void operator =(MSIHANDLE h) {if (m_h) MsiCloseHandle(m_h); m_h=h;} + operator MSIHANDLE() {return m_h;} + MSIHANDLE *operator &() {if (m_h) MsiCloseHandle(m_h); m_h = 0; return &m_h;} +}; +#endif + +typedef enum tagINSTALLMESSAGE { + INSTALLMESSAGE_FATALEXIT = 0x00000000L,INSTALLMESSAGE_ERROR = 0x01000000L,INSTALLMESSAGE_WARNING = 0x02000000L,INSTALLMESSAGE_USER = 0x03000000L, + INSTALLMESSAGE_INFO = 0x04000000L,INSTALLMESSAGE_FILESINUSE = 0x05000000L,INSTALLMESSAGE_RESOLVESOURCE = 0x06000000L, + INSTALLMESSAGE_OUTOFDISKSPACE = 0x07000000L,INSTALLMESSAGE_ACTIONSTART = 0x08000000L,INSTALLMESSAGE_ACTIONDATA = 0x09000000L, + INSTALLMESSAGE_PROGRESS = 0x0A000000L,INSTALLMESSAGE_COMMONDATA = 0x0B000000L,INSTALLMESSAGE_INITIALIZE = 0x0C000000L, + INSTALLMESSAGE_TERMINATE = 0x0D000000L,INSTALLMESSAGE_SHOWDIALOG = 0x0E000000L +} INSTALLMESSAGE; + +typedef int (WINAPI *INSTALLUI_HANDLERA)(LPVOID pvContext,UINT iMessageType,LPCSTR szMessage); +typedef int (WINAPI *INSTALLUI_HANDLERW)(LPVOID pvContext,UINT iMessageType,LPCWSTR szMessage); +#ifdef UNICODE +#define INSTALLUI_HANDLER INSTALLUI_HANDLERW +#else +#define INSTALLUI_HANDLER INSTALLUI_HANDLERA +#endif +#if (_WIN32_MSI >= 310) +typedef int (WINAPI *INSTALLUI_HANDLER_RECORD)(LPVOID pvContext,UINT iMessageType,MSIHANDLE hRecord); +typedef INSTALLUI_HANDLER_RECORD *PINSTALLUI_HANDLER_RECORD; +#endif + +typedef enum tagINSTALLUILEVEL { + INSTALLUILEVEL_NOCHANGE = 0,INSTALLUILEVEL_DEFAULT = 1,INSTALLUILEVEL_NONE = 2,INSTALLUILEVEL_BASIC = 3,INSTALLUILEVEL_REDUCED = 4, + INSTALLUILEVEL_FULL = 5,INSTALLUILEVEL_ENDDIALOG = 0x80,INSTALLUILEVEL_PROGRESSONLY = 0x40,INSTALLUILEVEL_HIDECANCEL = 0x20, + INSTALLUILEVEL_SOURCERESONLY = 0x100 +} INSTALLUILEVEL; + +typedef enum tagINSTALLSTATE { + INSTALLSTATE_NOTUSED = -7,INSTALLSTATE_BADCONFIG = -6,INSTALLSTATE_INCOMPLETE = -5,INSTALLSTATE_SOURCEABSENT = -4,INSTALLSTATE_MOREDATA = -3, + INSTALLSTATE_INVALIDARG = -2,INSTALLSTATE_UNKNOWN = -1,INSTALLSTATE_BROKEN = 0,INSTALLSTATE_ADVERTISED = 1,INSTALLSTATE_REMOVED = 1, + INSTALLSTATE_ABSENT = 2,INSTALLSTATE_LOCAL = 3,INSTALLSTATE_SOURCE = 4,INSTALLSTATE_DEFAULT = 5 +} INSTALLSTATE; + +typedef enum tagUSERINFOSTATE { + USERINFOSTATE_MOREDATA = -3,USERINFOSTATE_INVALIDARG = -2,USERINFOSTATE_UNKNOWN = -1,USERINFOSTATE_ABSENT = 0,USERINFOSTATE_PRESENT = 1 +} USERINFOSTATE; + +typedef enum tagINSTALLLEVEL { + INSTALLLEVEL_DEFAULT = 0,INSTALLLEVEL_MINIMUM = 1,INSTALLLEVEL_MAXIMUM = 0xFFFF +} INSTALLLEVEL; + +typedef enum tagREINSTALLMODE { + REINSTALLMODE_REPAIR = 0x00000001,REINSTALLMODE_FILEMISSING = 0x00000002,REINSTALLMODE_FILEOLDERVERSION = 0x00000004, + REINSTALLMODE_FILEEQUALVERSION = 0x00000008,REINSTALLMODE_FILEEXACT = 0x00000010,REINSTALLMODE_FILEVERIFY = 0x00000020, + REINSTALLMODE_FILEREPLACE = 0x00000040,REINSTALLMODE_MACHINEDATA = 0x00000080,REINSTALLMODE_USERDATA = 0x00000100, + REINSTALLMODE_SHORTCUT = 0x00000200,REINSTALLMODE_PACKAGE = 0x00000400 +} REINSTALLMODE; + +typedef enum tagINSTALLOGMODE { + INSTALLLOGMODE_FATALEXIT = (1 << (INSTALLMESSAGE_FATALEXIT >> 24)),INSTALLLOGMODE_ERROR = (1 << (INSTALLMESSAGE_ERROR >> 24)), + INSTALLLOGMODE_WARNING = (1 << (INSTALLMESSAGE_WARNING >> 24)),INSTALLLOGMODE_USER = (1 << (INSTALLMESSAGE_USER >> 24)), + INSTALLLOGMODE_INFO = (1 << (INSTALLMESSAGE_INFO >> 24)),INSTALLLOGMODE_RESOLVESOURCE = (1 << (INSTALLMESSAGE_RESOLVESOURCE >> 24)), + INSTALLLOGMODE_OUTOFDISKSPACE = (1 << (INSTALLMESSAGE_OUTOFDISKSPACE >> 24)),INSTALLLOGMODE_ACTIONSTART = (1 << (INSTALLMESSAGE_ACTIONSTART >> 24)), + INSTALLLOGMODE_ACTIONDATA = (1 << (INSTALLMESSAGE_ACTIONDATA >> 24)),INSTALLLOGMODE_COMMONDATA = (1 << (INSTALLMESSAGE_COMMONDATA >> 24)), + INSTALLLOGMODE_PROPERTYDUMP = (1 << (INSTALLMESSAGE_PROGRESS >> 24)),INSTALLLOGMODE_VERBOSE = (1 << (INSTALLMESSAGE_INITIALIZE >> 24)), + INSTALLLOGMODE_EXTRADEBUG = (1 << (INSTALLMESSAGE_TERMINATE >> 24)),INSTALLLOGMODE_LOGONLYONERROR = (1 << (INSTALLMESSAGE_SHOWDIALOG >> 24)), + INSTALLLOGMODE_PROGRESS = (1 << (INSTALLMESSAGE_PROGRESS >> 24)),INSTALLLOGMODE_INITIALIZE = (1 << (INSTALLMESSAGE_INITIALIZE >> 24)), + INSTALLLOGMODE_TERMINATE = (1 << (INSTALLMESSAGE_TERMINATE >> 24)),INSTALLLOGMODE_SHOWDIALOG = (1 << (INSTALLMESSAGE_SHOWDIALOG >> 24)), + INSTALLLOGMODE_FILESINUSE = (1 << (INSTALLMESSAGE_FILESINUSE >> 24)) +} INSTALLLOGMODE; + +typedef enum tagINSTALLLOGATTRIBUTES { + INSTALLLOGATTRIBUTES_APPEND = (1 << 0),INSTALLLOGATTRIBUTES_FLUSHEACHLINE = (1 << 1) +} INSTALLLOGATTRIBUTES; + +typedef enum tagINSTALLFEATUREATTRIBUTE { + INSTALLFEATUREATTRIBUTE_FAVORLOCAL = 1 << 0,INSTALLFEATUREATTRIBUTE_FAVORSOURCE = 1 << 1, + INSTALLFEATUREATTRIBUTE_FOLLOWPARENT = 1 << 2,INSTALLFEATUREATTRIBUTE_FAVORADVERTISE = 1 << 3, + INSTALLFEATUREATTRIBUTE_DISALLOWADVERTISE = 1 << 4,INSTALLFEATUREATTRIBUTE_NOUNSUPPORTEDADVERTISE = 1 << 5 +} INSTALLFEATUREATTRIBUTE; + +typedef enum tagINSTALLMODE { +#if (_WIN32_MSI >= 150) + INSTALLMODE_NODETECTION_ANY = -4, +#endif + INSTALLMODE_NOSOURCERESOLUTION = -3,INSTALLMODE_NODETECTION = -2,INSTALLMODE_EXISTING = -1,INSTALLMODE_DEFAULT = 0 +} INSTALLMODE; + +#if (_WIN32_MSI >= 300) +typedef enum tagMSIPATCHSTATE { + MSIPATCHSTATE_INVALID = 0,MSIPATCHSTATE_APPLIED = 1,MSIPATCHSTATE_SUPERSEDED = 2,MSIPATCHSTATE_OBSOLETED = 4,MSIPATCHSTATE_REGISTERED = 8, + MSIPATCHSTATE_ALL = (MSIPATCHSTATE_APPLIED | MSIPATCHSTATE_SUPERSEDED | MSIPATCHSTATE_OBSOLETED | MSIPATCHSTATE_REGISTERED) +} MSIPATCHSTATE; + +typedef enum tagMSIINSTALLCONTEXT { + MSIINSTALLCONTEXT_FIRSTVISIBLE = 0,MSIINSTALLCONTEXT_NONE = 0,MSIINSTALLCONTEXT_USERMANAGED = 1,MSIINSTALLCONTEXT_USERUNMANAGED = 2, + MSIINSTALLCONTEXT_MACHINE = 4, + MSIINSTALLCONTEXT_ALL = (MSIINSTALLCONTEXT_USERMANAGED | MSIINSTALLCONTEXT_USERUNMANAGED | MSIINSTALLCONTEXT_MACHINE), + MSIINSTALLCONTEXT_ALLUSERMANAGED = 8 +} MSIINSTALLCONTEXT; + +typedef enum tagMSIPATCHDATATYPE { + MSIPATCH_DATATYPE_PATCHFILE = 0,MSIPATCH_DATATYPE_XMLPATH = 1,MSIPATCH_DATATYPE_XMLBLOB = 2 +} MSIPATCHDATATYPE,*PMSIPATCHDATATYPE; + +typedef struct tagMSIPATCHSEQUENCEINFOA { + LPCSTR szPatchData; + MSIPATCHDATATYPE ePatchDataType; + DWORD dwOrder; + UINT uStatus; +} MSIPATCHSEQUENCEINFOA,*PMSIPATCHSEQUENCEINFOA; + +typedef struct tagMSIPATCHSEQUENCEINFOW { + LPCWSTR szPatchData; + MSIPATCHDATATYPE ePatchDataType; + DWORD dwOrder; + UINT uStatus; +} MSIPATCHSEQUENCEINFOW,*PMSIPATCHSEQUENCEINFOW; +#ifdef UNICODE +typedef MSIPATCHSEQUENCEINFOW MSIPATCHSEQUENCEINFO; +typedef PMSIPATCHSEQUENCEINFOW PMSIPATCHSEQUENCEINFO; +#else +typedef MSIPATCHSEQUENCEINFOA MSIPATCHSEQUENCEINFO; +typedef PMSIPATCHSEQUENCEINFOA PMSIPATCHSEQUENCEINFO; +#endif +#endif + +#define MAX_FEATURE_CHARS 38 + +#define INSTALLPROPERTY_PACKAGENAME __TEXT("PackageName") +#define INSTALLPROPERTY_TRANSFORMS __TEXT("Transforms") +#define INSTALLPROPERTY_LANGUAGE __TEXT("Language") +#define INSTALLPROPERTY_PRODUCTNAME __TEXT("ProductName") +#define INSTALLPROPERTY_ASSIGNMENTTYPE __TEXT("AssignmentType") +#if (_WIN32_MSI >= 150) +#define INSTALLPROPERTY_INSTANCETYPE __TEXT("InstanceType") +#endif +#if (_WIN32_MSI >= 300) +#define INSTALLPROPERTY_AUTHORIZED_LUA_APP __TEXT("AuthorizedLUAApp") +#endif + +#define INSTALLPROPERTY_PACKAGECODE __TEXT("PackageCode") +#define INSTALLPROPERTY_VERSION __TEXT("Version") +#if (_WIN32_MSI >= 110) +#define INSTALLPROPERTY_PRODUCTICON __TEXT("ProductIcon") +#endif + +#define INSTALLPROPERTY_INSTALLEDPRODUCTNAME __TEXT("InstalledProductName") +#define INSTALLPROPERTY_VERSIONSTRING __TEXT("VersionString") +#define INSTALLPROPERTY_HELPLINK __TEXT("HelpLink") +#define INSTALLPROPERTY_HELPTELEPHONE __TEXT("HelpTelephone") +#define INSTALLPROPERTY_INSTALLLOCATION __TEXT("InstallLocation") +#define INSTALLPROPERTY_INSTALLSOURCE __TEXT("InstallSource") +#define INSTALLPROPERTY_INSTALLDATE __TEXT("InstallDate") +#define INSTALLPROPERTY_PUBLISHER __TEXT("Publisher") +#define INSTALLPROPERTY_LOCALPACKAGE __TEXT("LocalPackage") +#define INSTALLPROPERTY_URLINFOABOUT __TEXT("URLInfoAbout") +#define INSTALLPROPERTY_URLUPDATEINFO __TEXT("URLUpdateInfo") +#define INSTALLPROPERTY_VERSIONMINOR __TEXT("VersionMinor") +#define INSTALLPROPERTY_VERSIONMAJOR __TEXT("VersionMajor") +#define INSTALLPROPERTY_PRODUCTID __TEXT("ProductID") +#define INSTALLPROPERTY_REGCOMPANY __TEXT("RegCompany") +#define INSTALLPROPERTY_REGOWNER __TEXT("RegOwner") + +#if (_WIN32_MSI >= 300) +#define INSTALLPROPERTY_UNINSTALLABLE __TEXT("Uninstallable") +#define INSTALLPROPERTY_PRODUCTSTATE __TEXT("State") +#define INSTALLPROPERTY_PATCHSTATE __TEXT("State") +#define INSTALLPROPERTY_PATCHTYPE __TEXT("PatchType") +#define INSTALLPROPERTY_LUAENABLED __TEXT("LUAEnabled") +#define INSTALLPROPERTY_DISPLAYNAME __TEXT("DisplayName") +#define INSTALLPROPERTY_MOREINFOURL __TEXT("MoreInfoURL") + +#define INSTALLPROPERTY_LASTUSEDSOURCE __TEXT("LastUsedSource") +#define INSTALLPROPERTY_LASTUSEDTYPE __TEXT("LastUsedType") +#define INSTALLPROPERTY_MEDIAPACKAGEPATH __TEXT("MediaPackagePath") +#define INSTALLPROPERTY_DISKPROMPT __TEXT("DiskPrompt") +#endif + +typedef enum tagSCRIPTFLAGS { + SCRIPTFLAGS_CACHEINFO = 0x00000001L,SCRIPTFLAGS_SHORTCUTS = 0x00000004L,SCRIPTFLAGS_MACHINEASSIGN = 0x00000008L, + SCRIPTFLAGS_REGDATA_CNFGINFO = 0x00000020L,SCRIPTFLAGS_VALIDATE_TRANSFORMS_LIST = 0x00000040L, +#if (_WIN32_MSI >= 110) + SCRIPTFLAGS_REGDATA_CLASSINFO = 0x00000080L,SCRIPTFLAGS_REGDATA_EXTENSIONINFO = 0x00000100L, + SCRIPTFLAGS_REGDATA_APPINFO = SCRIPTFLAGS_REGDATA_CLASSINFO | SCRIPTFLAGS_REGDATA_EXTENSIONINFO, +#else + SCRIPTFLAGS_REGDATA_APPINFO = 0x00000010L, +#endif + SCRIPTFLAGS_REGDATA = SCRIPTFLAGS_REGDATA_APPINFO | SCRIPTFLAGS_REGDATA_CNFGINFO +} SCRIPTFLAGS; + +typedef enum tagADVERTISEFLAGS { + ADVERTISEFLAGS_MACHINEASSIGN = 0,ADVERTISEFLAGS_USERASSIGN = 1 +} ADVERTISEFLAGS; + +typedef enum tagINSTALLTYPE { + INSTALLTYPE_DEFAULT = 0,INSTALLTYPE_NETWORK_IMAGE = 1,INSTALLTYPE_SINGLE_INSTANCE = 2 +} INSTALLTYPE; + +#if (_WIN32_MSI >= 150) +typedef struct _MSIFILEHASHINFO { + ULONG dwFileHashInfoSize; + ULONG dwData [4 ]; +} MSIFILEHASHINFO,*PMSIFILEHASHINFO; + +typedef enum tagMSIARCHITECTUREFLAGS { + MSIARCHITECTUREFLAGS_X86 = 0x00000001L,MSIARCHITECTUREFLAGS_IA64 = 0x00000002L,MSIARCHITECTUREFLAGS_AMD64 = 0x00000004L +} MSIARCHITECTUREFLAGS; + +typedef enum tagMSIOPENPACKAGEFLAGS { + MSIOPENPACKAGEFLAGS_IGNOREMACHINESTATE = 0x00000001L +} MSIOPENPACKAGEFLAGS; + +typedef enum tagMSIADVERTISEOPTIONFLAGS { + MSIADVERTISEOPTIONFLAGS_INSTANCE = 0x00000001L +} MSIADVERTISEOPTIONFLAGS; +#endif + +#if (_WIN32_MSI >= 300) +typedef enum tagMSISOURCETYPE { + MSISOURCETYPE_UNKNOWN = 0x00000000L,MSISOURCETYPE_NETWORK = 0x00000001L,MSISOURCETYPE_URL = 0x00000002L,MSISOURCETYPE_MEDIA = 0x00000004L +} MSISOURCETYPE; + +typedef enum tagMSICODE { + MSICODE_PRODUCT = 0x00000000L,MSICODE_PATCH = 0x40000000L +} MSICODE; +#endif + +#ifdef __cplusplus +extern "C" { +#endif + + INSTALLUILEVEL WINAPI MsiSetInternalUI(INSTALLUILEVEL dwUILevel,HWND *phWnd); + INSTALLUI_HANDLERA WINAPI MsiSetExternalUIA(INSTALLUI_HANDLERA puiHandler,DWORD dwMessageFilter,LPVOID pvContext); + INSTALLUI_HANDLERW WINAPI MsiSetExternalUIW(INSTALLUI_HANDLERW puiHandler,DWORD dwMessageFilter,LPVOID pvContext); +#ifdef UNICODE +#define MsiSetExternalUI MsiSetExternalUIW +#else +#define MsiSetExternalUI MsiSetExternalUIA +#endif + +#if (_WIN32_MSI >= 310) + UINT WINAPI MsiSetExternalUIRecord(INSTALLUI_HANDLER_RECORD puiHandler,DWORD dwMessageFilter,LPVOID pvContext,PINSTALLUI_HANDLER_RECORD ppuiPrevHandler); +#endif + + UINT WINAPI MsiEnableLogA(DWORD dwLogMode,LPCSTR szLogFile,DWORD dwLogAttributes); + UINT WINAPI MsiEnableLogW(DWORD dwLogMode,LPCWSTR szLogFile,DWORD dwLogAttributes); +#ifdef UNICODE +#define MsiEnableLog MsiEnableLogW +#else +#define MsiEnableLog MsiEnableLogA +#endif + + INSTALLSTATE WINAPI MsiQueryProductStateA(LPCSTR szProduct); + INSTALLSTATE WINAPI MsiQueryProductStateW(LPCWSTR szProduct); +#ifdef UNICODE +#define MsiQueryProductState MsiQueryProductStateW +#else +#define MsiQueryProductState MsiQueryProductStateA +#endif + + UINT WINAPI MsiGetProductInfoA(LPCSTR szProduct,LPCSTR szAttribute,LPSTR lpValueBuf,DWORD *pcchValueBuf); + UINT WINAPI MsiGetProductInfoW(LPCWSTR szProduct,LPCWSTR szAttribute,LPWSTR lpValueBuf,DWORD *pcchValueBuf); +#ifdef UNICODE +#define MsiGetProductInfo MsiGetProductInfoW +#else +#define MsiGetProductInfo MsiGetProductInfoA +#endif + +#if (_WIN32_MSI >= 300) + + UINT WINAPI MsiGetProductInfoExA(LPCSTR szProductCode,LPCSTR szUserSid,MSIINSTALLCONTEXT dwContext,LPCSTR szProperty,LPSTR szValue,LPDWORD pcchValue); + UINT WINAPI MsiGetProductInfoExW(LPCWSTR szProductCode,LPCWSTR szUserSid,MSIINSTALLCONTEXT dwContext,LPCWSTR szProperty,LPWSTR szValue,LPDWORD pcchValue); +#ifdef UNICODE +#define MsiGetProductInfoEx MsiGetProductInfoExW +#else +#define MsiGetProductInfoEx MsiGetProductInfoExA +#endif +#endif + + UINT WINAPI MsiInstallProductA(LPCSTR szPackagePath,LPCSTR szCommandLine); + UINT WINAPI MsiInstallProductW(LPCWSTR szPackagePath,LPCWSTR szCommandLine); +#ifdef UNICODE +#define MsiInstallProduct MsiInstallProductW +#else +#define MsiInstallProduct MsiInstallProductA +#endif + + UINT WINAPI MsiConfigureProductA(LPCSTR szProduct,int iInstallLevel,INSTALLSTATE eInstallState); + UINT WINAPI MsiConfigureProductW(LPCWSTR szProduct,int iInstallLevel,INSTALLSTATE eInstallState); +#ifdef UNICODE +#define MsiConfigureProduct MsiConfigureProductW +#else +#define MsiConfigureProduct MsiConfigureProductA +#endif + + UINT WINAPI MsiConfigureProductExA(LPCSTR szProduct,int iInstallLevel,INSTALLSTATE eInstallState,LPCSTR szCommandLine); + UINT WINAPI MsiConfigureProductExW(LPCWSTR szProduct,int iInstallLevel,INSTALLSTATE eInstallState,LPCWSTR szCommandLine); +#ifdef UNICODE +#define MsiConfigureProductEx MsiConfigureProductExW +#else +#define MsiConfigureProductEx MsiConfigureProductExA +#endif + + UINT WINAPI MsiReinstallProductA(LPCSTR szProduct,DWORD szReinstallMode); + UINT WINAPI MsiReinstallProductW(LPCWSTR szProduct,DWORD szReinstallMode); +#ifdef UNICODE +#define MsiReinstallProduct MsiReinstallProductW +#else +#define MsiReinstallProduct MsiReinstallProductA +#endif + +#if (_WIN32_MSI >= 150) + + UINT WINAPI MsiAdvertiseProductExA(LPCSTR szPackagePath,LPCSTR szScriptfilePath,LPCSTR szTransforms,LANGID lgidLanguage,DWORD dwPlatform,DWORD dwOptions); + UINT WINAPI MsiAdvertiseProductExW(LPCWSTR szPackagePath,LPCWSTR szScriptfilePath,LPCWSTR szTransforms,LANGID lgidLanguage,DWORD dwPlatform,DWORD dwOptions); +#ifdef UNICODE +#define MsiAdvertiseProductEx MsiAdvertiseProductExW +#else +#define MsiAdvertiseProductEx MsiAdvertiseProductExA +#endif +#endif + + UINT WINAPI MsiAdvertiseProductA(LPCSTR szPackagePath,LPCSTR szScriptfilePath,LPCSTR szTransforms,LANGID lgidLanguage); + UINT WINAPI MsiAdvertiseProductW(LPCWSTR szPackagePath,LPCWSTR szScriptfilePath,LPCWSTR szTransforms,LANGID lgidLanguage); +#ifdef UNICODE +#define MsiAdvertiseProduct MsiAdvertiseProductW +#else +#define MsiAdvertiseProduct MsiAdvertiseProductA +#endif + +#if (_WIN32_MSI >= 150) + + UINT WINAPI MsiProcessAdvertiseScriptA(LPCSTR szScriptFile,LPCSTR szIconFolder,HKEY hRegData,WINBOOL fShortcuts,WINBOOL fRemoveItems); + UINT WINAPI MsiProcessAdvertiseScriptW(LPCWSTR szScriptFile,LPCWSTR szIconFolder,HKEY hRegData,WINBOOL fShortcuts,WINBOOL fRemoveItems); +#ifdef UNICODE +#define MsiProcessAdvertiseScript MsiProcessAdvertiseScriptW +#else +#define MsiProcessAdvertiseScript MsiProcessAdvertiseScriptA +#endif +#endif + + UINT WINAPI MsiAdvertiseScriptA(LPCSTR szScriptFile,DWORD dwFlags,PHKEY phRegData,WINBOOL fRemoveItems); + UINT WINAPI MsiAdvertiseScriptW(LPCWSTR szScriptFile,DWORD dwFlags,PHKEY phRegData,WINBOOL fRemoveItems); +#ifdef UNICODE +#define MsiAdvertiseScript MsiAdvertiseScriptW +#else +#define MsiAdvertiseScript MsiAdvertiseScriptA +#endif + + UINT WINAPI MsiGetProductInfoFromScriptA(LPCSTR szScriptFile,LPSTR lpProductBuf39,LANGID *plgidLanguage,DWORD *pdwVersion,LPSTR lpNameBuf,DWORD *pcchNameBuf,LPSTR lpPackageBuf,DWORD *pcchPackageBuf); + UINT WINAPI MsiGetProductInfoFromScriptW(LPCWSTR szScriptFile,LPWSTR lpProductBuf39,LANGID *plgidLanguage,DWORD *pdwVersion,LPWSTR lpNameBuf,DWORD *pcchNameBuf,LPWSTR lpPackageBuf,DWORD *pcchPackageBuf); +#ifdef UNICODE +#define MsiGetProductInfoFromScript MsiGetProductInfoFromScriptW +#else +#define MsiGetProductInfoFromScript MsiGetProductInfoFromScriptA +#endif + + UINT WINAPI MsiGetProductCodeA(LPCSTR szComponent,LPSTR lpBuf39); + UINT WINAPI MsiGetProductCodeW(LPCWSTR szComponent,LPWSTR lpBuf39); +#ifdef UNICODE +#define MsiGetProductCode MsiGetProductCodeW +#else +#define MsiGetProductCode MsiGetProductCodeA +#endif + + USERINFOSTATE WINAPI MsiGetUserInfoA(LPCSTR szProduct,LPSTR lpUserNameBuf,DWORD *pcchUserNameBuf,LPSTR lpOrgNameBuf,DWORD *pcchOrgNameBuf,LPSTR lpSerialBuf,DWORD *pcchSerialBuf); + USERINFOSTATE WINAPI MsiGetUserInfoW(LPCWSTR szProduct,LPWSTR lpUserNameBuf,DWORD *pcchUserNameBuf,LPWSTR lpOrgNameBuf,DWORD *pcchOrgNameBuf,LPWSTR lpSerialBuf,DWORD *pcchSerialBuf); +#ifdef UNICODE +#define MsiGetUserInfo MsiGetUserInfoW +#else +#define MsiGetUserInfo MsiGetUserInfoA +#endif + + UINT WINAPI MsiCollectUserInfoA(LPCSTR szProduct); + UINT WINAPI MsiCollectUserInfoW(LPCWSTR szProduct); +#ifdef UNICODE +#define MsiCollectUserInfo MsiCollectUserInfoW +#else +#define MsiCollectUserInfo MsiCollectUserInfoA +#endif + + UINT WINAPI MsiApplyPatchA(LPCSTR szPatchPackage,LPCSTR szInstallPackage,INSTALLTYPE eInstallType,LPCSTR szCommandLine); + UINT WINAPI MsiApplyPatchW(LPCWSTR szPatchPackage,LPCWSTR szInstallPackage,INSTALLTYPE eInstallType,LPCWSTR szCommandLine); +#ifdef UNICODE +#define MsiApplyPatch MsiApplyPatchW +#else +#define MsiApplyPatch MsiApplyPatchA +#endif + + UINT WINAPI MsiGetPatchInfoA(LPCSTR szPatch,LPCSTR szAttribute,LPSTR lpValueBuf,DWORD *pcchValueBuf); + UINT WINAPI MsiGetPatchInfoW(LPCWSTR szPatch,LPCWSTR szAttribute,LPWSTR lpValueBuf,DWORD *pcchValueBuf); +#ifdef UNICODE +#define MsiGetPatchInfo MsiGetPatchInfoW +#else +#define MsiGetPatchInfo MsiGetPatchInfoA +#endif + + UINT WINAPI MsiEnumPatchesA(LPCSTR szProduct,DWORD iPatchIndex,LPSTR lpPatchBuf,LPSTR lpTransformsBuf,DWORD *pcchTransformsBuf); + UINT WINAPI MsiEnumPatchesW(LPCWSTR szProduct,DWORD iPatchIndex,LPWSTR lpPatchBuf,LPWSTR lpTransformsBuf,DWORD *pcchTransformsBuf); +#ifdef UNICODE +#define MsiEnumPatches MsiEnumPatchesW +#else +#define MsiEnumPatches MsiEnumPatchesA +#endif + +#if (_WIN32_MSI >= 300) + + UINT WINAPI MsiRemovePatchesA(LPCSTR szPatchList,LPCSTR szProductCode,INSTALLTYPE eUninstallType,LPCSTR szPropertyList); + UINT WINAPI MsiRemovePatchesW(LPCWSTR szPatchList,LPCWSTR szProductCode,INSTALLTYPE eUninstallType,LPCWSTR szPropertyList); +#ifdef UNICODE +#define MsiRemovePatches MsiRemovePatchesW +#else +#define MsiRemovePatches MsiRemovePatchesA +#endif + + UINT WINAPI MsiExtractPatchXMLDataA(LPCSTR szPatchPath,DWORD dwReserved,LPSTR szXMLData,DWORD *pcchXMLData); + UINT WINAPI MsiExtractPatchXMLDataW(LPCWSTR szPatchPath,DWORD dwReserved,LPWSTR szXMLData,DWORD *pcchXMLData); +#ifdef UNICODE +#define MsiExtractPatchXMLData MsiExtractPatchXMLDataW +#else +#define MsiExtractPatchXMLData MsiExtractPatchXMLDataA +#endif + + UINT WINAPI MsiGetPatchInfoExA(LPCSTR szPatchCode,LPCSTR szProductCode,LPCSTR szUserSid,MSIINSTALLCONTEXT dwContext,LPCSTR szProperty,LPSTR lpValue,DWORD *pcchValue); + UINT WINAPI MsiGetPatchInfoExW(LPCWSTR szPatchCode,LPCWSTR szProductCode,LPCWSTR szUserSid,MSIINSTALLCONTEXT dwContext,LPCWSTR szProperty,LPWSTR lpValue,DWORD *pcchValue); +#ifdef UNICODE +#define MsiGetPatchInfoEx MsiGetPatchInfoExW +#else +#define MsiGetPatchInfoEx MsiGetPatchInfoExA +#endif + + UINT WINAPI MsiApplyMultiplePatchesA(LPCSTR szPatchPackages,LPCSTR szProductCode,LPCSTR szPropertiesList); + UINT WINAPI MsiApplyMultiplePatchesW(LPCWSTR szPatchPackages,LPCWSTR szProductCode,LPCWSTR szPropertiesList); +#ifdef UNICODE +#define MsiApplyMultiplePatches MsiApplyMultiplePatchesW +#else +#define MsiApplyMultiplePatches MsiApplyMultiplePatchesA +#endif + + UINT WINAPI MsiDeterminePatchSequenceA(LPCSTR szProductCode,LPCSTR szUserSid,MSIINSTALLCONTEXT dwContext,DWORD cPatchInfo,PMSIPATCHSEQUENCEINFOA pPatchInfo); + UINT WINAPI MsiDeterminePatchSequenceW(LPCWSTR szProductCode,LPCWSTR szUserSid,MSIINSTALLCONTEXT dwContext,DWORD cPatchInfo,PMSIPATCHSEQUENCEINFOW pPatchInfo); +#ifdef UNICODE +#define MsiDeterminePatchSequence MsiDeterminePatchSequenceW +#else +#define MsiDeterminePatchSequence MsiDeterminePatchSequenceA +#endif + + UINT WINAPI MsiDetermineApplicablePatchesA(LPCSTR szProductPackagePath,DWORD cPatchInfo,PMSIPATCHSEQUENCEINFOA pPatchInfo); + UINT WINAPI MsiDetermineApplicablePatchesW(LPCWSTR szProductPackagePath,DWORD cPatchInfo,PMSIPATCHSEQUENCEINFOW pPatchInfo); +#ifdef UNICODE +#define MsiDetermineApplicablePatches MsiDetermineApplicablePatchesW +#else +#define MsiDetermineApplicablePatches MsiDetermineApplicablePatchesA +#endif + + 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); + 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); +#ifdef UNICODE +#define MsiEnumPatchesEx MsiEnumPatchesExW +#else +#define MsiEnumPatchesEx MsiEnumPatchesExA +#endif +#endif + + INSTALLSTATE WINAPI MsiQueryFeatureStateA(LPCSTR szProduct,LPCSTR szFeature); + INSTALLSTATE WINAPI MsiQueryFeatureStateW(LPCWSTR szProduct,LPCWSTR szFeature); +#ifdef UNICODE +#define MsiQueryFeatureState MsiQueryFeatureStateW +#else +#define MsiQueryFeatureState MsiQueryFeatureStateA +#endif + +#if (_WIN32_MSI >= 300) + + UINT WINAPI MsiQueryFeatureStateExA(LPCSTR szProductCode,LPCSTR szUserSid,MSIINSTALLCONTEXT dwContext,LPCSTR szFeature,INSTALLSTATE *pdwState); + UINT WINAPI MsiQueryFeatureStateExW(LPCWSTR szProductCode,LPCWSTR szUserSid,MSIINSTALLCONTEXT dwContext,LPCWSTR szFeature,INSTALLSTATE *pdwState); +#ifdef UNICODE +#define MsiQueryFeatureStateEx MsiQueryFeatureStateExW +#else +#define MsiQueryFeatureStateEx MsiQueryFeatureStateExA +#endif +#endif + + INSTALLSTATE WINAPI MsiUseFeatureA(LPCSTR szProduct,LPCSTR szFeature); + INSTALLSTATE WINAPI MsiUseFeatureW(LPCWSTR szProduct,LPCWSTR szFeature); +#ifdef UNICODE +#define MsiUseFeature MsiUseFeatureW +#else +#define MsiUseFeature MsiUseFeatureA +#endif + + INSTALLSTATE WINAPI MsiUseFeatureExA(LPCSTR szProduct,LPCSTR szFeature,DWORD dwInstallMode,DWORD dwReserved); + INSTALLSTATE WINAPI MsiUseFeatureExW(LPCWSTR szProduct,LPCWSTR szFeature,DWORD dwInstallMode,DWORD dwReserved); +#ifdef UNICODE +#define MsiUseFeatureEx MsiUseFeatureExW +#else +#define MsiUseFeatureEx MsiUseFeatureExA +#endif + + UINT WINAPI MsiGetFeatureUsageA(LPCSTR szProduct,LPCSTR szFeature,DWORD *pdwUseCount,WORD *pwDateUsed); + UINT WINAPI MsiGetFeatureUsageW(LPCWSTR szProduct,LPCWSTR szFeature,DWORD *pdwUseCount,WORD *pwDateUsed); +#ifdef UNICODE +#define MsiGetFeatureUsage MsiGetFeatureUsageW +#else +#define MsiGetFeatureUsage MsiGetFeatureUsageA +#endif + + UINT WINAPI MsiConfigureFeatureA(LPCSTR szProduct,LPCSTR szFeature,INSTALLSTATE eInstallState); + UINT WINAPI MsiConfigureFeatureW(LPCWSTR szProduct,LPCWSTR szFeature,INSTALLSTATE eInstallState); +#ifdef UNICODE +#define MsiConfigureFeature MsiConfigureFeatureW +#else +#define MsiConfigureFeature MsiConfigureFeatureA +#endif + + UINT WINAPI MsiReinstallFeatureA(LPCSTR szProduct,LPCSTR szFeature,DWORD dwReinstallMode); + UINT WINAPI MsiReinstallFeatureW(LPCWSTR szProduct,LPCWSTR szFeature,DWORD dwReinstallMode); +#ifdef UNICODE +#define MsiReinstallFeature MsiReinstallFeatureW +#else +#define MsiReinstallFeature MsiReinstallFeatureA +#endif + + UINT WINAPI MsiProvideComponentA(LPCSTR szProduct,LPCSTR szFeature,LPCSTR szComponent,DWORD dwInstallMode,LPSTR lpPathBuf,DWORD *pcchPathBuf); + UINT WINAPI MsiProvideComponentW(LPCWSTR szProduct,LPCWSTR szFeature,LPCWSTR szComponent,DWORD dwInstallMode,LPWSTR lpPathBuf,DWORD *pcchPathBuf); +#ifdef UNICODE +#define MsiProvideComponent MsiProvideComponentW +#else +#define MsiProvideComponent MsiProvideComponentA +#endif + + UINT WINAPI MsiProvideQualifiedComponentA(LPCSTR szCategory,LPCSTR szQualifier,DWORD dwInstallMode,LPSTR lpPathBuf,DWORD *pcchPathBuf); + UINT WINAPI MsiProvideQualifiedComponentW(LPCWSTR szCategory,LPCWSTR szQualifier,DWORD dwInstallMode,LPWSTR lpPathBuf,DWORD *pcchPathBuf); +#ifdef UNICODE +#define MsiProvideQualifiedComponent MsiProvideQualifiedComponentW +#else +#define MsiProvideQualifiedComponent MsiProvideQualifiedComponentA +#endif + + UINT WINAPI MsiProvideQualifiedComponentExA(LPCSTR szCategory,LPCSTR szQualifier,DWORD dwInstallMode,LPCSTR szProduct,DWORD dwUnused1,DWORD dwUnused2,LPSTR lpPathBuf,DWORD *pcchPathBuf); + UINT WINAPI MsiProvideQualifiedComponentExW(LPCWSTR szCategory,LPCWSTR szQualifier,DWORD dwInstallMode,LPCWSTR szProduct,DWORD dwUnused1,DWORD dwUnused2,LPWSTR lpPathBuf,DWORD *pcchPathBuf); +#ifdef UNICODE +#define MsiProvideQualifiedComponentEx MsiProvideQualifiedComponentExW +#else +#define MsiProvideQualifiedComponentEx MsiProvideQualifiedComponentExA +#endif + + INSTALLSTATE WINAPI MsiGetComponentPathA(LPCSTR szProduct,LPCSTR szComponent,LPSTR lpPathBuf,DWORD *pcchBuf); + INSTALLSTATE WINAPI MsiGetComponentPathW(LPCWSTR szProduct,LPCWSTR szComponent,LPWSTR lpPathBuf,DWORD *pcchBuf); +#ifdef UNICODE +#define MsiGetComponentPath MsiGetComponentPathW +#else +#define MsiGetComponentPath MsiGetComponentPathA +#endif + +#if (_WIN32_MSI >= 150) + +#define MSIASSEMBLYINFO_NETASSEMBLY 0 +#define MSIASSEMBLYINFO_WIN32ASSEMBLY 1 + + UINT WINAPI MsiProvideAssemblyA(LPCSTR szAssemblyName,LPCSTR szAppContext,DWORD dwInstallMode,DWORD dwAssemblyInfo,LPSTR lpPathBuf,DWORD *pcchPathBuf); + UINT WINAPI MsiProvideAssemblyW(LPCWSTR szAssemblyName,LPCWSTR szAppContext,DWORD dwInstallMode,DWORD dwAssemblyInfo,LPWSTR lpPathBuf,DWORD *pcchPathBuf); +#ifdef UNICODE +#define MsiProvideAssembly MsiProvideAssemblyW +#else +#define MsiProvideAssembly MsiProvideAssemblyA +#endif +#endif + +#if (_WIN32_MSI >= 300) + + UINT WINAPI MsiQueryComponentStateA(LPCSTR szProductCode,LPCSTR szUserSid,MSIINSTALLCONTEXT dwContext,LPCSTR szComponentCode,INSTALLSTATE *pdwState); + UINT WINAPI MsiQueryComponentStateW(LPCWSTR szProductCode,LPCWSTR szUserSid,MSIINSTALLCONTEXT dwContext,LPCWSTR szComponentCode,INSTALLSTATE *pdwState); +#ifdef UNICODE +#define MsiQueryComponentState MsiQueryComponentStateW +#else +#define MsiQueryComponentState MsiQueryComponentStateA +#endif +#endif + + UINT WINAPI MsiEnumProductsA(DWORD iProductIndex,LPSTR lpProductBuf); + UINT WINAPI MsiEnumProductsW(DWORD iProductIndex,LPWSTR lpProductBuf); +#ifdef UNICODE +#define MsiEnumProducts MsiEnumProductsW +#else +#define MsiEnumProducts MsiEnumProductsA +#endif + +#if (_WIN32_MSI >= 300) + UINT WINAPI MsiEnumProductsExA(LPCSTR szProductCode,LPCSTR szUserSid,DWORD dwContext,DWORD dwIndex,CHAR szInstalledProductCode[39],MSIINSTALLCONTEXT *pdwInstalledContext,LPSTR szSid,LPDWORD pcchSid); + UINT WINAPI MsiEnumProductsExW(LPCWSTR szProductCode,LPCWSTR szUserSid,DWORD dwContext,DWORD dwIndex,WCHAR szInstalledProductCode[39],MSIINSTALLCONTEXT *pdwInstalledContext,LPWSTR szSid,LPDWORD pcchSid); +#ifdef UNICODE +#define MsiEnumProductsEx MsiEnumProductsExW +#else +#define MsiEnumProductsEx MsiEnumProductsExA +#endif +#endif + +#if (_WIN32_MSI >= 110) + UINT WINAPI MsiEnumRelatedProductsA(LPCSTR lpUpgradeCode,DWORD dwReserved,DWORD iProductIndex,LPSTR lpProductBuf); + UINT WINAPI MsiEnumRelatedProductsW(LPCWSTR lpUpgradeCode,DWORD dwReserved,DWORD iProductIndex,LPWSTR lpProductBuf); +#ifdef UNICODE +#define MsiEnumRelatedProducts MsiEnumRelatedProductsW +#else +#define MsiEnumRelatedProducts MsiEnumRelatedProductsA +#endif +#endif + + UINT WINAPI MsiEnumFeaturesA(LPCSTR szProduct,DWORD iFeatureIndex,LPSTR lpFeatureBuf,LPSTR lpParentBuf); + UINT WINAPI MsiEnumFeaturesW(LPCWSTR szProduct,DWORD iFeatureIndex,LPWSTR lpFeatureBuf,LPWSTR lpParentBuf); +#ifdef UNICODE +#define MsiEnumFeatures MsiEnumFeaturesW +#else +#define MsiEnumFeatures MsiEnumFeaturesA +#endif + + UINT WINAPI MsiEnumComponentsA(DWORD iComponentIndex,LPSTR lpComponentBuf); + UINT WINAPI MsiEnumComponentsW(DWORD iComponentIndex,LPWSTR lpComponentBuf); +#ifdef UNICODE +#define MsiEnumComponents MsiEnumComponentsW +#else +#define MsiEnumComponents MsiEnumComponentsA +#endif + + UINT WINAPI MsiEnumClientsA(LPCSTR szComponent,DWORD iProductIndex,LPSTR lpProductBuf); + UINT WINAPI MsiEnumClientsW(LPCWSTR szComponent,DWORD iProductIndex,LPWSTR lpProductBuf); +#ifdef UNICODE +#define MsiEnumClients MsiEnumClientsW +#else +#define MsiEnumClients MsiEnumClientsA +#endif + + UINT WINAPI MsiEnumComponentQualifiersA(LPCSTR szComponent,DWORD iIndex,LPSTR lpQualifierBuf,DWORD *pcchQualifierBuf,LPSTR lpApplicationDataBuf,DWORD *pcchApplicationDataBuf); + UINT WINAPI MsiEnumComponentQualifiersW(LPCWSTR szComponent,DWORD iIndex,LPWSTR lpQualifierBuf,DWORD *pcchQualifierBuf,LPWSTR lpApplicationDataBuf,DWORD *pcchApplicationDataBuf); +#ifdef UNICODE +#define MsiEnumComponentQualifiers MsiEnumComponentQualifiersW +#else +#define MsiEnumComponentQualifiers MsiEnumComponentQualifiersA +#endif + + UINT WINAPI MsiOpenProductA(LPCSTR szProduct,MSIHANDLE *hProduct); + UINT WINAPI MsiOpenProductW(LPCWSTR szProduct,MSIHANDLE *hProduct); +#ifdef UNICODE +#define MsiOpenProduct MsiOpenProductW +#else +#define MsiOpenProduct MsiOpenProductA +#endif + + UINT WINAPI MsiOpenPackageA(LPCSTR szPackagePath,MSIHANDLE *hProduct); + UINT WINAPI MsiOpenPackageW(LPCWSTR szPackagePath,MSIHANDLE *hProduct); +#ifdef UNICODE +#define MsiOpenPackage MsiOpenPackageW +#else +#define MsiOpenPackage MsiOpenPackageA +#endif + +#if (_WIN32_MSI >= 150) + + UINT WINAPI MsiOpenPackageExA(LPCSTR szPackagePath,DWORD dwOptions,MSIHANDLE *hProduct); + UINT WINAPI MsiOpenPackageExW(LPCWSTR szPackagePath,DWORD dwOptions,MSIHANDLE *hProduct); +#ifdef UNICODE +#define MsiOpenPackageEx MsiOpenPackageExW +#else +#define MsiOpenPackageEx MsiOpenPackageExA +#endif +#endif + + UINT WINAPI MsiGetProductPropertyA(MSIHANDLE hProduct,LPCSTR szProperty,LPSTR lpValueBuf,DWORD *pcchValueBuf); + UINT WINAPI MsiGetProductPropertyW(MSIHANDLE hProduct,LPCWSTR szProperty,LPWSTR lpValueBuf,DWORD *pcchValueBuf); +#ifdef UNICODE +#define MsiGetProductProperty MsiGetProductPropertyW +#else +#define MsiGetProductProperty MsiGetProductPropertyA +#endif + + UINT WINAPI MsiVerifyPackageA(LPCSTR szPackagePath); + UINT WINAPI MsiVerifyPackageW(LPCWSTR szPackagePath); +#ifdef UNICODE +#define MsiVerifyPackage MsiVerifyPackageW +#else +#define MsiVerifyPackage MsiVerifyPackageA +#endif + + UINT WINAPI MsiGetFeatureInfoA(MSIHANDLE hProduct,LPCSTR szFeature,DWORD *lpAttributes,LPSTR lpTitleBuf,DWORD *pcchTitleBuf,LPSTR lpHelpBuf,DWORD *pcchHelpBuf); + UINT WINAPI MsiGetFeatureInfoW(MSIHANDLE hProduct,LPCWSTR szFeature,DWORD *lpAttributes,LPWSTR lpTitleBuf,DWORD *pcchTitleBuf,LPWSTR lpHelpBuf,DWORD *pcchHelpBuf); +#ifdef UNICODE +#define MsiGetFeatureInfo MsiGetFeatureInfoW +#else +#define MsiGetFeatureInfo MsiGetFeatureInfoA +#endif + + UINT WINAPI MsiInstallMissingComponentA(LPCSTR szProduct,LPCSTR szComponent,INSTALLSTATE eInstallState); + UINT WINAPI MsiInstallMissingComponentW(LPCWSTR szProduct,LPCWSTR szComponent,INSTALLSTATE eInstallState); +#ifdef UNICODE +#define MsiInstallMissingComponent MsiInstallMissingComponentW +#else +#define MsiInstallMissingComponent MsiInstallMissingComponentA +#endif + + UINT WINAPI MsiInstallMissingFileA(LPCSTR szProduct,LPCSTR szFile); + UINT WINAPI MsiInstallMissingFileW(LPCWSTR szProduct,LPCWSTR szFile); +#ifdef UNICODE +#define MsiInstallMissingFile MsiInstallMissingFileW +#else +#define MsiInstallMissingFile MsiInstallMissingFileA +#endif + + INSTALLSTATE WINAPI MsiLocateComponentA(LPCSTR szComponent,LPSTR lpPathBuf,DWORD *pcchBuf); + INSTALLSTATE WINAPI MsiLocateComponentW(LPCWSTR szComponent,LPWSTR lpPathBuf,DWORD *pcchBuf); +#ifdef UNICODE +#define MsiLocateComponent MsiLocateComponentW +#else +#define MsiLocateComponent MsiLocateComponentA +#endif + +#if (_WIN32_MSI >= 110) + + UINT WINAPI MsiSourceListClearAllA(LPCSTR szProduct,LPCSTR szUserName,DWORD dwReserved); + UINT WINAPI MsiSourceListClearAllW(LPCWSTR szProduct,LPCWSTR szUserName,DWORD dwReserved); +#ifdef UNICODE +#define MsiSourceListClearAll MsiSourceListClearAllW +#else +#define MsiSourceListClearAll MsiSourceListClearAllA +#endif + + UINT WINAPI MsiSourceListAddSourceA(LPCSTR szProduct,LPCSTR szUserName,DWORD dwReserved,LPCSTR szSource); + UINT WINAPI MsiSourceListAddSourceW(LPCWSTR szProduct,LPCWSTR szUserName,DWORD dwReserved,LPCWSTR szSource); +#ifdef UNICODE +#define MsiSourceListAddSource MsiSourceListAddSourceW +#else +#define MsiSourceListAddSource MsiSourceListAddSourceA +#endif + + UINT WINAPI MsiSourceListForceResolutionA(LPCSTR szProduct,LPCSTR szUserName,DWORD dwReserved); + UINT WINAPI MsiSourceListForceResolutionW(LPCWSTR szProduct,LPCWSTR szUserName,DWORD dwReserved); +#ifdef UNICODE +#define MsiSourceListForceResolution MsiSourceListForceResolutionW +#else +#define MsiSourceListForceResolution MsiSourceListForceResolutionA +#endif +#endif + +#if (_WIN32_MSI >= 300) + + UINT WINAPI MsiSourceListAddSourceExA(LPCSTR szProductCodeOrPatchCode,LPCSTR szUserSid,MSIINSTALLCONTEXT dwContext,DWORD dwOptions,LPCSTR szSource,DWORD dwIndex); + UINT WINAPI MsiSourceListAddSourceExW(LPCWSTR szProductCodeOrPatchCode,LPCWSTR szUserSid,MSIINSTALLCONTEXT dwContext,DWORD dwOptions,LPCWSTR szSource,DWORD dwIndex); +#ifdef UNICODE +#define MsiSourceListAddSourceEx MsiSourceListAddSourceExW +#else +#define MsiSourceListAddSourceEx MsiSourceListAddSourceExA +#endif + + UINT WINAPI MsiSourceListAddMediaDiskA(LPCSTR szProductCodeOrPatchCode,LPCSTR szUserSid,MSIINSTALLCONTEXT dwContext,DWORD dwOptions,DWORD dwDiskId,LPCSTR szVolumeLabel,LPCSTR szDiskPrompt); + UINT WINAPI MsiSourceListAddMediaDiskW(LPCWSTR szProductCodeOrPatchCode,LPCWSTR szUserSid,MSIINSTALLCONTEXT dwContext,DWORD dwOptions,DWORD dwDiskId,LPCWSTR szVolumeLabel,LPCWSTR szDiskPrompt); +#ifdef UNICODE +#define MsiSourceListAddMediaDisk MsiSourceListAddMediaDiskW +#else +#define MsiSourceListAddMediaDisk MsiSourceListAddMediaDiskA +#endif + + UINT WINAPI MsiSourceListClearSourceA(LPCSTR szProductCodeOrPatchCode,LPCSTR szUserSid,MSIINSTALLCONTEXT dwContext,DWORD dwOptions,LPCSTR szSource); + UINT WINAPI MsiSourceListClearSourceW(LPCWSTR szProductCodeOrPatchCode,LPCWSTR szUserSid,MSIINSTALLCONTEXT dwContext,DWORD dwOptions,LPCWSTR szSource); +#ifdef UNICODE +#define MsiSourceListClearSource MsiSourceListClearSourceW +#else +#define MsiSourceListClearSource MsiSourceListClearSourceA +#endif + + UINT WINAPI MsiSourceListClearMediaDiskA(LPCSTR szProductCodeOrPatchCode,LPCSTR szUserSid,MSIINSTALLCONTEXT dwContext,DWORD dwOptions,DWORD dwDiskId); + UINT WINAPI MsiSourceListClearMediaDiskW(LPCWSTR szProductCodeOrPatchCode,LPCWSTR szUserSid,MSIINSTALLCONTEXT dwContext,DWORD dwOptions,DWORD dwDiskId); +#ifdef UNICODE +#define MsiSourceListClearMediaDisk MsiSourceListClearMediaDiskW +#else +#define MsiSourceListClearMediaDisk MsiSourceListClearMediaDiskA +#endif + + UINT WINAPI MsiSourceListClearAllExA(LPCSTR szProductCodeOrPatchCode,LPCSTR szUserSid,MSIINSTALLCONTEXT dwContext,DWORD dwOptions); + UINT WINAPI MsiSourceListClearAllExW(LPCWSTR szProductCodeOrPatchCode,LPCWSTR szUserSid,MSIINSTALLCONTEXT dwContext,DWORD dwOptions); +#ifdef UNICODE +#define MsiSourceListClearAllEx MsiSourceListClearAllExW +#else +#define MsiSourceListClearAllEx MsiSourceListClearAllExA +#endif + + UINT WINAPI MsiSourceListForceResolutionExA(LPCSTR szProductCodeOrPatchCode,LPCSTR szUserSid,MSIINSTALLCONTEXT dwContext,DWORD dwOptions); + UINT WINAPI MsiSourceListForceResolutionExW(LPCWSTR szProductCodeOrPatchCode,LPCWSTR szUserSid,MSIINSTALLCONTEXT dwContext,DWORD dwOptions); +#ifdef UNICODE +#define MsiSourceListForceResolutionEx MsiSourceListForceResolutionExW +#else +#define MsiSourceListForceResolutionEx MsiSourceListForceResolutionExA +#endif + + UINT WINAPI MsiSourceListSetInfoA(LPCSTR szProductCodeOrPatchCode,LPCSTR szUserSid,MSIINSTALLCONTEXT dwContext,DWORD dwOptions,LPCSTR szProperty,LPCSTR szValue); + UINT WINAPI MsiSourceListSetInfoW(LPCWSTR szProductCodeOrPatchCode,LPCWSTR szUserSid,MSIINSTALLCONTEXT dwContext,DWORD dwOptions,LPCWSTR szProperty,LPCWSTR szValue); +#ifdef UNICODE +#define MsiSourceListSetInfo MsiSourceListSetInfoW +#else +#define MsiSourceListSetInfo MsiSourceListSetInfoA +#endif + + UINT WINAPI MsiSourceListGetInfoA(LPCSTR szProductCodeOrPatchCode,LPCSTR szUserSid,MSIINSTALLCONTEXT dwContext,DWORD dwOptions,LPCSTR szProperty,LPSTR szValue,LPDWORD pcchValue); + UINT WINAPI MsiSourceListGetInfoW(LPCWSTR szProductCodeOrPatchCode,LPCWSTR szUserSid,MSIINSTALLCONTEXT dwContext,DWORD dwOptions,LPCWSTR szProperty,LPWSTR szValue,LPDWORD pcchValue); +#ifdef UNICODE +#define MsiSourceListGetInfo MsiSourceListGetInfoW +#else +#define MsiSourceListGetInfo MsiSourceListGetInfoA +#endif + + UINT WINAPI MsiSourceListEnumSourcesA(LPCSTR szProductCodeOrPatchCode,LPCSTR szUserSid,MSIINSTALLCONTEXT dwContext,DWORD dwOptions,DWORD dwIndex,LPSTR szSource,LPDWORD pcchSource); + UINT WINAPI MsiSourceListEnumSourcesW(LPCWSTR szProductCodeOrPatchCode,LPCWSTR szUserSid,MSIINSTALLCONTEXT dwContext,DWORD dwOptions,DWORD dwIndex,LPWSTR szSource,LPDWORD pcchSource); +#ifdef UNICODE +#define MsiSourceListEnumSources MsiSourceListEnumSourcesW +#else +#define MsiSourceListEnumSources MsiSourceListEnumSourcesA +#endif + + UINT WINAPI MsiSourceListEnumMediaDisksA(LPCSTR szProductCodeOrPatchCode,LPCSTR szUserSid,MSIINSTALLCONTEXT dwContext,DWORD dwOptions,DWORD dwIndex,LPDWORD pdwDiskId,LPSTR szVolumeLabel,LPDWORD pcchVolumeLabel,LPSTR szDiskPrompt,LPDWORD pcchDiskPrompt); + UINT WINAPI MsiSourceListEnumMediaDisksW(LPCWSTR szProductCodeOrPatchCode,LPCWSTR szUserSid,MSIINSTALLCONTEXT dwContext,DWORD dwOptions,DWORD dwIndex,LPDWORD pdwDiskId,LPWSTR szVolumeLabel,LPDWORD pcchVolumeLabel,LPWSTR szDiskPrompt,LPDWORD pcchDiskPrompt); +#ifdef UNICODE +#define MsiSourceListEnumMediaDisks MsiSourceListEnumMediaDisksW +#else +#define MsiSourceListEnumMediaDisks MsiSourceListEnumMediaDisksA +#endif +#endif + + UINT WINAPI MsiGetFileVersionA(LPCSTR szFilePath,LPSTR lpVersionBuf,DWORD *pcchVersionBuf,LPSTR lpLangBuf,DWORD *pcchLangBuf); + UINT WINAPI MsiGetFileVersionW(LPCWSTR szFilePath,LPWSTR lpVersionBuf,DWORD *pcchVersionBuf,LPWSTR lpLangBuf,DWORD *pcchLangBuf); +#ifdef UNICODE +#define MsiGetFileVersion MsiGetFileVersionW +#else +#define MsiGetFileVersion MsiGetFileVersionA +#endif + +#if (_WIN32_MSI >= 150) + + UINT WINAPI MsiGetFileHashA(LPCSTR szFilePath,DWORD dwOptions,PMSIFILEHASHINFO pHash); + UINT WINAPI MsiGetFileHashW(LPCWSTR szFilePath,DWORD dwOptions,PMSIFILEHASHINFO pHash); +#ifdef UNICODE +#define MsiGetFileHash MsiGetFileHashW +#else +#define MsiGetFileHash MsiGetFileHashA +#endif +#endif + +#if (_WIN32_MSI >= 150) +#ifndef _MSI_NO_CRYPTO + + HRESULT WINAPI MsiGetFileSignatureInformationA(LPCSTR szSignedObjectPath,DWORD dwFlags,PCCERT_CONTEXT *ppcCertContext,BYTE *pbHashData,DWORD *pcbHashData); + HRESULT WINAPI MsiGetFileSignatureInformationW(LPCWSTR szSignedObjectPath,DWORD dwFlags,PCCERT_CONTEXT *ppcCertContext,BYTE *pbHashData,DWORD *pcbHashData); +#ifdef UNICODE +#define MsiGetFileSignatureInformation MsiGetFileSignatureInformationW +#else +#define MsiGetFileSignatureInformation MsiGetFileSignatureInformationA +#endif + +#define MSI_INVALID_HASH_IS_FATAL 0x1 +#endif +#endif + +#if (_WIN32_MSI >= 110) + + UINT WINAPI MsiGetShortcutTargetA(LPCSTR szShortcutPath,LPSTR szProductCode,LPSTR szFeatureId,LPSTR szComponentCode); + UINT WINAPI MsiGetShortcutTargetW(LPCWSTR szShortcutPath,LPWSTR szProductCode,LPWSTR szFeatureId,LPWSTR szComponentCode); +#ifdef UNICODE +#define MsiGetShortcutTarget MsiGetShortcutTargetW +#else +#define MsiGetShortcutTarget MsiGetShortcutTargetA +#endif +#endif + +#if (_WIN32_MSI >= 110) + UINT WINAPI MsiIsProductElevatedA(LPCSTR szProduct,WINBOOL *pfElevated); + UINT WINAPI MsiIsProductElevatedW(LPCWSTR szProduct,WINBOOL *pfElevated); +#ifdef UNICODE +#define MsiIsProductElevated MsiIsProductElevatedW +#else +#define MsiIsProductElevated MsiIsProductElevatedA +#endif +#endif + +#if (_WIN32_MSI >= 310) + + UINT WINAPI MsiNotifySidChangeA(LPCSTR pOldSid,LPCSTR pNewSid); + UINT WINAPI MsiNotifySidChangeW(LPCWSTR pOldSid,LPCWSTR pNewSid); +#ifdef UNICODE +#define MsiNotifySidChange MsiNotifySidChangeW +#else +#define MsiNotifySidChange MsiNotifySidChangeA +#endif +#endif + +#ifdef __cplusplus +} +#endif + +#ifndef ERROR_INSTALL_FAILURE +#define ERROR_INSTALL_USEREXIT 1602L +#define ERROR_INSTALL_FAILURE 1603L +#define ERROR_INSTALL_SUSPEND 1604L + +#define ERROR_UNKNOWN_PRODUCT 1605L + +#define ERROR_UNKNOWN_FEATURE 1606L +#define ERROR_UNKNOWN_COMPONENT 1607L +#define ERROR_UNKNOWN_PROPERTY 1608L +#define ERROR_INVALID_HANDLE_STATE 1609L + +#define ERROR_BAD_CONFIGURATION 1610L + +#define ERROR_INDEX_ABSENT 1611L + +#define ERROR_INSTALL_SOURCE_ABSENT 1612L + +#define ERROR_PRODUCT_UNINSTALLED 1614L +#define ERROR_BAD_QUERY_SYNTAX 1615L +#define ERROR_INVALID_FIELD 1616L +#endif + +#ifndef ERROR_INSTALL_SERVICE_FAILURE +#define ERROR_INSTALL_SERVICE_FAILURE 1601L +#define ERROR_INSTALL_PACKAGE_VERSION 1613L +#define ERROR_INSTALL_ALREADY_RUNNING 1618L +#define ERROR_INSTALL_PACKAGE_OPEN_FAILED 1619L +#define ERROR_INSTALL_PACKAGE_INVALID 1620L +#define ERROR_INSTALL_UI_FAILURE 1621L +#define ERROR_INSTALL_LOG_FAILURE 1622L +#define ERROR_INSTALL_LANGUAGE_UNSUPPORTED 1623L +#define ERROR_INSTALL_PACKAGE_REJECTED 1625L + +#define ERROR_FUNCTION_NOT_CALLED 1626L +#define ERROR_FUNCTION_FAILED 1627L +#define ERROR_INVALID_TABLE 1628L +#define ERROR_DATATYPE_MISMATCH 1629L +#define ERROR_UNSUPPORTED_TYPE 1630L + +#define ERROR_CREATE_FAILED 1631L +#endif + +#ifndef ERROR_INSTALL_TEMP_UNWRITABLE +#define ERROR_INSTALL_TEMP_UNWRITABLE 1632L +#endif + +#ifndef ERROR_INSTALL_PLATFORM_UNSUPPORTED +#define ERROR_INSTALL_PLATFORM_UNSUPPORTED 1633L +#endif + +#ifndef ERROR_INSTALL_NOTUSED +#define ERROR_INSTALL_NOTUSED 1634L +#endif + +#ifndef ERROR_INSTALL_TRANSFORM_FAILURE +#define ERROR_INSTALL_TRANSFORM_FAILURE 1624L +#endif + +#ifndef ERROR_PATCH_PACKAGE_OPEN_FAILED +#define ERROR_PATCH_PACKAGE_OPEN_FAILED 1635L +#define ERROR_PATCH_PACKAGE_INVALID 1636L +#define ERROR_PATCH_PACKAGE_UNSUPPORTED 1637L +#endif + +#ifndef ERROR_PRODUCT_VERSION +#define ERROR_PRODUCT_VERSION 1638L +#endif + +#ifndef ERROR_INVALID_COMMAND_LINE +#define ERROR_INVALID_COMMAND_LINE 1639L +#endif + +#ifndef ERROR_INSTALL_REMOTE_DISALLOWED +#define ERROR_INSTALL_REMOTE_DISALLOWED 1640L +#endif + +#ifndef ERROR_SUCCESS_REBOOT_INITIATED +#define ERROR_SUCCESS_REBOOT_INITIATED 1641L +#endif + +#ifndef ERROR_PATCH_TARGET_NOT_FOUND +#define ERROR_PATCH_TARGET_NOT_FOUND 1642L +#endif + +#ifndef ERROR_PATCH_PACKAGE_REJECTED +#define ERROR_PATCH_PACKAGE_REJECTED 1643L +#endif + +#ifndef ERROR_INSTALL_TRANSFORM_REJECTED +#define ERROR_INSTALL_TRANSFORM_REJECTED 1644L +#endif + +#ifndef ERROR_INSTALL_REMOTE_PROHIBITED +#define ERROR_INSTALL_REMOTE_PROHIBITED 1645L +#endif + +#ifndef ERROR_PATCH_REMOVAL_UNSUPPORTED +#define ERROR_PATCH_REMOVAL_UNSUPPORTED 1646L +#endif + +#ifndef ERROR_UNKNOWN_PATCH +#define ERROR_UNKNOWN_PATCH 1647L +#endif + +#ifndef ERROR_PATCH_NO_SEQUENCE +#define ERROR_PATCH_NO_SEQUENCE 1648L +#endif + +#ifndef ERROR_PATCH_REMOVAL_DISALLOWED +#define ERROR_PATCH_REMOVAL_DISALLOWED 1649L +#endif + +#ifndef ERROR_INVALID_PATCH_XML +#define ERROR_INVALID_PATCH_XML 1650L +#endif + +#ifndef ERROR_PATCH_MANAGED_ADVERTISED_PRODUCT +#define ERROR_PATCH_MANAGED_ADVERTISED_PRODUCT 1651L +#endif +#endif
