/** * 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.PD 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