* msi.h: Add features for _WIN32_MSI 400, and 450. git-svn-id: svn+ssh://svn.code.sf.net/p/mingw-w64/code/trunk@5595 4407c894-4637-0410-b4f5-ada5f102cad1
diff --git a/mingw-w64-headers/include/ChangeLog b/mingw-w64-headers/include/ChangeLog index 5eebbce..cc9dbab 100644 --- a/mingw-w64-headers/include/ChangeLog +++ b/mingw-w64-headers/include/ChangeLog
@@ -1,3 +1,7 @@ +2013-02-19 Kai Tietz <ktietz@redhat.com> + + * msi.h: Add features for _WIN32_MSI 400, and 450. + 2013-01-08 Jean-Baptiste Kempf <jb@videolan.org> Kai Tietz <ktietz@redhat.com>
diff --git a/mingw-w64-headers/include/msi.h b/mingw-w64-headers/include/msi.h index 9abb505..d778e4b 100644 --- a/mingw-w64-headers/include/msi.h +++ b/mingw-w64-headers/include/msi.h
@@ -20,21 +20,33 @@ #ifndef NTDDI_WS03SP1 #define NTDDI_WS03SP1 0x05020100 #endif +#ifndef NTDDI_VISTA +#define NTDDI_VISTA 0x06000000 +#endif +#ifndef NTDDI_VISTASP1 +#define NTDDI_VISTASP1 0x06000100 +#endif #ifndef _WIN32_MSI -#if (defined(NTDDI_VERSION) && NTDDI_VERSION >= NTDDI_WS03SP1) +#if defined(NTDDI_VERSION) && NTDDI_VERSION >= NTDDI_VISTASP1 +#define _WIN32_MSI 450 +#elif defined(NTDDI_VERSION) && NTDDI_VERSION >= NTDDI_VISTA +#define _WIN32_MSI 400 +#elif defined(NTDDI_VERSION) && NTDDI_VERSION >= NTDDI_WS03SP1 #define _WIN32_MSI 310 -#elif (defined(NTDDI_VERSION) && NTDDI_VERSION >= NTDDI_WINXPSP2) +#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" +#ifndef MAX_GUID_CHARS +#define MAX_GUID_CHARS 38 #endif + +#if _WIN32_MSI >= 150 && !defined (_MSI_NO_CRYPTO) +#include "wincrypt.h" #endif typedef unsigned __LONG32 MSIHANDLE; @@ -55,11 +67,11 @@ 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;} + 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 @@ -69,11 +81,17 @@ INSTALLMESSAGE_OUTOFDISKSPACE = 0x07000000,INSTALLMESSAGE_ACTIONSTART = 0x08000000,INSTALLMESSAGE_ACTIONDATA = 0x09000000, INSTALLMESSAGE_PROGRESS = 0x0A000000,INSTALLMESSAGE_COMMONDATA = 0x0B000000,INSTALLMESSAGE_INITIALIZE = 0x0C000000, INSTALLMESSAGE_TERMINATE = 0x0D000000,INSTALLMESSAGE_SHOWDIALOG = 0x0E000000 +#if _WIN32_MSI >= 400 + ,INSTALLMESSAGE_RMFILESINUSE = 0x19000000 +#endif +#if _WIN32_MSI >= 450 + ,INSTALLMESSAGE_INSTALLSTART = 0x1A000000 + ,INSTALLMESSAGE_INSTALLEND = 0x1B000000 +#endif } INSTALLMESSAGE; typedef int (WINAPI *INSTALLUI_HANDLERA)(LPVOID pvContext,UINT iMessageType,LPCSTR szMessage); typedef int (WINAPI *INSTALLUI_HANDLERW)(LPVOID pvContext,UINT iMessageType,LPCWSTR szMessage); - #define INSTALLUI_HANDLER __MINGW_NAME_AW(INSTALLUI_HANDLER) #if (_WIN32_MSI >= 310) @@ -94,11 +112,12 @@ } INSTALLSTATE; typedef enum tagUSERINFOSTATE { - USERINFOSTATE_MOREDATA = -3,USERINFOSTATE_INVALIDARG = -2,USERINFOSTATE_UNKNOWN = -1,USERINFOSTATE_ABSENT = 0,USERINFOSTATE_PRESENT = 1 + 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_DEFAULT = 0,INSTALLLEVEL_MINIMUM = 1,INSTALLLEVEL_MAXIMUM = 0xffff } INSTALLLEVEL; typedef enum tagREINSTALLMODE { @@ -119,6 +138,13 @@ 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)) +#if _WIN32_MSI >= 400 + ,INSTALLLOGMODE_RMFILESINUSE = (1 << (INSTALLMESSAGE_RMFILESINUSE >> 24)) +#endif +#if _WIN32_MSI >= 450 + ,INSTALLLOGMODE_INSTALLSTART = (1 << (INSTALLMESSAGE_INSTALLSTART >> 24)) + ,INSTALLLOGMODE_INSTALLEND = (1 << (INSTALLMESSAGE_INSTALLEND >> 24)) +#endif } INSTALLLOGMODE; typedef enum tagINSTALLLOGATTRIBUTES { @@ -248,7 +274,7 @@ #if (_WIN32_MSI >= 150) typedef struct _MSIFILEHASHINFO { ULONG dwFileHashInfoSize; - ULONG dwData [4 ]; + ULONG dwData [4]; } MSIFILEHASHINFO,*PMSIFILEHASHINFO; typedef enum tagMSIARCHITECTUREFLAGS { @@ -272,6 +298,18 @@ typedef enum tagMSICODE { MSICODE_PRODUCT = 0x00000000,MSICODE_PATCH = 0x40000000 } MSICODE; + +#if _WIN32_MSI >= 450 +typedef enum tagMSITRANSACTION { + MSITRANSACTION_CHAIN_EMBEDDEDUI = 0x00000001, + MSITRANSACTION_JOIN_EXISTING_EMBEDDEDUI = 0x00000002 +} MSITRANSACTION; + +typedef enum tagMSITRANSACTIONSTATE { + MSITRANSACTIONSTATE_ROLLBACK = 0x00000000, + MSITRANSACTIONSTATE_COMMIT = 0x00000001 +} MSITRANSACTIONSTATE; +#endif #endif #ifdef __cplusplus @@ -281,7 +319,6 @@ 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); - #define MsiSetExternalUI __MINGW_NAME_AW(MsiSetExternalUI) #if (_WIN32_MSI >= 310) @@ -290,224 +327,179 @@ UINT WINAPI MsiEnableLogA(DWORD dwLogMode,LPCSTR szLogFile,DWORD dwLogAttributes); UINT WINAPI MsiEnableLogW(DWORD dwLogMode,LPCWSTR szLogFile,DWORD dwLogAttributes); - #define MsiEnableLog __MINGW_NAME_AW(MsiEnableLog) INSTALLSTATE WINAPI MsiQueryProductStateA(LPCSTR szProduct); INSTALLSTATE WINAPI MsiQueryProductStateW(LPCWSTR szProduct); - #define MsiQueryProductState __MINGW_NAME_AW(MsiQueryProductState) UINT WINAPI MsiGetProductInfoA(LPCSTR szProduct,LPCSTR szAttribute,LPSTR lpValueBuf,DWORD *pcchValueBuf); UINT WINAPI MsiGetProductInfoW(LPCWSTR szProduct,LPCWSTR szAttribute,LPWSTR lpValueBuf,DWORD *pcchValueBuf); - #define MsiGetProductInfo __MINGW_NAME_AW(MsiGetProductInfo) #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); - #define MsiGetProductInfoEx __MINGW_NAME_AW(MsiGetProductInfoEx) #endif UINT WINAPI MsiInstallProductA(LPCSTR szPackagePath,LPCSTR szCommandLine); UINT WINAPI MsiInstallProductW(LPCWSTR szPackagePath,LPCWSTR szCommandLine); - #define MsiInstallProduct __MINGW_NAME_AW(MsiInstallProduct) UINT WINAPI MsiConfigureProductA(LPCSTR szProduct,int iInstallLevel,INSTALLSTATE eInstallState); UINT WINAPI MsiConfigureProductW(LPCWSTR szProduct,int iInstallLevel,INSTALLSTATE eInstallState); - #define MsiConfigureProduct __MINGW_NAME_AW(MsiConfigureProduct) UINT WINAPI MsiConfigureProductExA(LPCSTR szProduct,int iInstallLevel,INSTALLSTATE eInstallState,LPCSTR szCommandLine); UINT WINAPI MsiConfigureProductExW(LPCWSTR szProduct,int iInstallLevel,INSTALLSTATE eInstallState,LPCWSTR szCommandLine); - #define MsiConfigureProductEx __MINGW_NAME_AW(MsiConfigureProductEx) UINT WINAPI MsiReinstallProductA(LPCSTR szProduct,DWORD szReinstallMode); UINT WINAPI MsiReinstallProductW(LPCWSTR szProduct,DWORD szReinstallMode); - #define MsiReinstallProduct __MINGW_NAME_AW(MsiReinstallProduct) #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); - #define MsiAdvertiseProductEx __MINGW_NAME_AW(MsiAdvertiseProductEx) #endif UINT WINAPI MsiAdvertiseProductA(LPCSTR szPackagePath,LPCSTR szScriptfilePath,LPCSTR szTransforms,LANGID lgidLanguage); UINT WINAPI MsiAdvertiseProductW(LPCWSTR szPackagePath,LPCWSTR szScriptfilePath,LPCWSTR szTransforms,LANGID lgidLanguage); - #define MsiAdvertiseProduct __MINGW_NAME_AW(MsiAdvertiseProduct) #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); - #define MsiProcessAdvertiseScript __MINGW_NAME_AW(MsiProcessAdvertiseScript) #endif UINT WINAPI MsiAdvertiseScriptA(LPCSTR szScriptFile,DWORD dwFlags,PHKEY phRegData,WINBOOL fRemoveItems); UINT WINAPI MsiAdvertiseScriptW(LPCWSTR szScriptFile,DWORD dwFlags,PHKEY phRegData,WINBOOL fRemoveItems); - #define MsiAdvertiseScript __MINGW_NAME_AW(MsiAdvertiseScript) 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); - #define MsiGetProductInfoFromScript __MINGW_NAME_AW(MsiGetProductInfoFromScript) UINT WINAPI MsiGetProductCodeA(LPCSTR szComponent,LPSTR lpBuf39); UINT WINAPI MsiGetProductCodeW(LPCWSTR szComponent,LPWSTR lpBuf39); - #define MsiGetProductCode __MINGW_NAME_AW(MsiGetProductCode) 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); - #define MsiGetUserInfo __MINGW_NAME_AW(MsiGetUserInfo) UINT WINAPI MsiCollectUserInfoA(LPCSTR szProduct); UINT WINAPI MsiCollectUserInfoW(LPCWSTR szProduct); - #define MsiCollectUserInfo __MINGW_NAME_AW(MsiCollectUserInfo) UINT WINAPI MsiApplyPatchA(LPCSTR szPatchPackage,LPCSTR szInstallPackage,INSTALLTYPE eInstallType,LPCSTR szCommandLine); UINT WINAPI MsiApplyPatchW(LPCWSTR szPatchPackage,LPCWSTR szInstallPackage,INSTALLTYPE eInstallType,LPCWSTR szCommandLine); - #define MsiApplyPatch __MINGW_NAME_AW(MsiApplyPatch) UINT WINAPI MsiGetPatchInfoA(LPCSTR szPatch,LPCSTR szAttribute,LPSTR lpValueBuf,DWORD *pcchValueBuf); UINT WINAPI MsiGetPatchInfoW(LPCWSTR szPatch,LPCWSTR szAttribute,LPWSTR lpValueBuf,DWORD *pcchValueBuf); - #define MsiGetPatchInfo __MINGW_NAME_AW(MsiGetPatchInfo) 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); - #define MsiEnumPatches __MINGW_NAME_AW(MsiEnumPatches) #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); - #define MsiRemovePatches __MINGW_NAME_AW(MsiRemovePatches) UINT WINAPI MsiExtractPatchXMLDataA(LPCSTR szPatchPath,DWORD dwReserved,LPSTR szXMLData,DWORD *pcchXMLData); UINT WINAPI MsiExtractPatchXMLDataW(LPCWSTR szPatchPath,DWORD dwReserved,LPWSTR szXMLData,DWORD *pcchXMLData); - #define MsiExtractPatchXMLData __MINGW_NAME_AW(MsiExtractPatchXMLData) 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); - #define MsiGetPatchInfoEx __MINGW_NAME_AW(MsiGetPatchInfoEx) UINT WINAPI MsiApplyMultiplePatchesA(LPCSTR szPatchPackages,LPCSTR szProductCode,LPCSTR szPropertiesList); UINT WINAPI MsiApplyMultiplePatchesW(LPCWSTR szPatchPackages,LPCWSTR szProductCode,LPCWSTR szPropertiesList); - #define MsiApplyMultiplePatches __MINGW_NAME_AW(MsiApplyMultiplePatches) 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); - #define MsiDeterminePatchSequence __MINGW_NAME_AW(MsiDeterminePatchSequence) UINT WINAPI MsiDetermineApplicablePatchesA(LPCSTR szProductPackagePath,DWORD cPatchInfo,PMSIPATCHSEQUENCEINFOA pPatchInfo); UINT WINAPI MsiDetermineApplicablePatchesW(LPCWSTR szProductPackagePath,DWORD cPatchInfo,PMSIPATCHSEQUENCEINFOW pPatchInfo); - #define MsiDetermineApplicablePatches __MINGW_NAME_AW(MsiDetermineApplicablePatches) 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); - #define MsiEnumPatchesEx __MINGW_NAME_AW(MsiEnumPatchesEx) #endif INSTALLSTATE WINAPI MsiQueryFeatureStateA(LPCSTR szProduct,LPCSTR szFeature); INSTALLSTATE WINAPI MsiQueryFeatureStateW(LPCWSTR szProduct,LPCWSTR szFeature); - #define MsiQueryFeatureState __MINGW_NAME_AW(MsiQueryFeatureState) #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); - #define MsiQueryFeatureStateEx __MINGW_NAME_AW(MsiQueryFeatureStateEx) #endif INSTALLSTATE WINAPI MsiUseFeatureA(LPCSTR szProduct,LPCSTR szFeature); INSTALLSTATE WINAPI MsiUseFeatureW(LPCWSTR szProduct,LPCWSTR szFeature); - #define MsiUseFeature __MINGW_NAME_AW(MsiUseFeature) INSTALLSTATE WINAPI MsiUseFeatureExA(LPCSTR szProduct,LPCSTR szFeature,DWORD dwInstallMode,DWORD dwReserved); INSTALLSTATE WINAPI MsiUseFeatureExW(LPCWSTR szProduct,LPCWSTR szFeature,DWORD dwInstallMode,DWORD dwReserved); - #define MsiUseFeatureEx __MINGW_NAME_AW(MsiUseFeatureEx) UINT WINAPI MsiGetFeatureUsageA(LPCSTR szProduct,LPCSTR szFeature,DWORD *pdwUseCount,WORD *pwDateUsed); UINT WINAPI MsiGetFeatureUsageW(LPCWSTR szProduct,LPCWSTR szFeature,DWORD *pdwUseCount,WORD *pwDateUsed); - #define MsiGetFeatureUsage __MINGW_NAME_AW(MsiGetFeatureUsage) UINT WINAPI MsiConfigureFeatureA(LPCSTR szProduct,LPCSTR szFeature,INSTALLSTATE eInstallState); UINT WINAPI MsiConfigureFeatureW(LPCWSTR szProduct,LPCWSTR szFeature,INSTALLSTATE eInstallState); - #define MsiConfigureFeature __MINGW_NAME_AW(MsiConfigureFeature) UINT WINAPI MsiReinstallFeatureA(LPCSTR szProduct,LPCSTR szFeature,DWORD dwReinstallMode); UINT WINAPI MsiReinstallFeatureW(LPCWSTR szProduct,LPCWSTR szFeature,DWORD dwReinstallMode); - #define MsiReinstallFeature __MINGW_NAME_AW(MsiReinstallFeature) 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); - #define MsiProvideComponent __MINGW_NAME_AW(MsiProvideComponent) 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); - #define MsiProvideQualifiedComponent __MINGW_NAME_AW(MsiProvideQualifiedComponent) 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); - #define MsiProvideQualifiedComponentEx __MINGW_NAME_AW(MsiProvideQualifiedComponentEx) INSTALLSTATE WINAPI MsiGetComponentPathA(LPCSTR szProduct,LPCSTR szComponent,LPSTR lpPathBuf,DWORD *pcchBuf); INSTALLSTATE WINAPI MsiGetComponentPathW(LPCWSTR szProduct,LPCWSTR szComponent,LPWSTR lpPathBuf,DWORD *pcchBuf); - #define MsiGetComponentPath __MINGW_NAME_AW(MsiGetComponentPath) #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); - #define MsiProvideAssembly __MINGW_NAME_AW(MsiProvideAssembly) #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); - #define MsiQueryComponentState __MINGW_NAME_AW(MsiQueryComponentState) #endif UINT WINAPI MsiEnumProductsA(DWORD iProductIndex,LPSTR lpProductBuf); UINT WINAPI MsiEnumProductsW(DWORD iProductIndex,LPWSTR lpProductBuf); - #define MsiEnumProducts __MINGW_NAME_AW(MsiEnumProducts) #if (_WIN32_MSI >= 300) @@ -520,164 +512,137 @@ #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); - #define MsiEnumRelatedProducts __MINGW_NAME_AW(MsiEnumRelatedProducts) #endif UINT WINAPI MsiEnumFeaturesA(LPCSTR szProduct,DWORD iFeatureIndex,LPSTR lpFeatureBuf,LPSTR lpParentBuf); UINT WINAPI MsiEnumFeaturesW(LPCWSTR szProduct,DWORD iFeatureIndex,LPWSTR lpFeatureBuf,LPWSTR lpParentBuf); - #define MsiEnumFeatures __MINGW_NAME_AW(MsiEnumFeatures) UINT WINAPI MsiEnumComponentsA(DWORD iComponentIndex,LPSTR lpComponentBuf); UINT WINAPI MsiEnumComponentsW(DWORD iComponentIndex,LPWSTR lpComponentBuf); - #define MsiEnumComponents __MINGW_NAME_AW(MsiEnumComponents) UINT WINAPI MsiEnumClientsA(LPCSTR szComponent,DWORD iProductIndex,LPSTR lpProductBuf); UINT WINAPI MsiEnumClientsW(LPCWSTR szComponent,DWORD iProductIndex,LPWSTR lpProductBuf); - #define MsiEnumClients __MINGW_NAME_AW(MsiEnumClients) 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); - #define MsiEnumComponentQualifiers __MINGW_NAME_AW(MsiEnumComponentQualifiers) UINT WINAPI MsiOpenProductA(LPCSTR szProduct,MSIHANDLE *hProduct); UINT WINAPI MsiOpenProductW(LPCWSTR szProduct,MSIHANDLE *hProduct); - #define MsiOpenProduct __MINGW_NAME_AW(MsiOpenProduct) UINT WINAPI MsiOpenPackageA(LPCSTR szPackagePath,MSIHANDLE *hProduct); UINT WINAPI MsiOpenPackageW(LPCWSTR szPackagePath,MSIHANDLE *hProduct); - #define MsiOpenPackage __MINGW_NAME_AW(MsiOpenPackage) #if (_WIN32_MSI >= 150) UINT WINAPI MsiOpenPackageExA(LPCSTR szPackagePath,DWORD dwOptions,MSIHANDLE *hProduct); UINT WINAPI MsiOpenPackageExW(LPCWSTR szPackagePath,DWORD dwOptions,MSIHANDLE *hProduct); - #define MsiOpenPackageEx __MINGW_NAME_AW(MsiOpenPackageEx) + +#if _WIN32_MSI >= 400 +UINT WINAPI MsiGetPatchFileListA(LPCSTR szProductCode, LPCSTR szPatchPackages, LPDWORD pcFiles, MSIHANDLE **pphFileRecords); +UINT WINAPI MsiGetPatchFileListW(LPCWSTR szProductCode, LPCWSTR szPatchPackages, LPDWORD pcFiles, MSIHANDLE **pphFileRecords); +#define MsiGetPatchFileList __MINGW_NAME_AW(MsiGetPatchFileList) +#endif #endif UINT WINAPI MsiGetProductPropertyA(MSIHANDLE hProduct,LPCSTR szProperty,LPSTR lpValueBuf,DWORD *pcchValueBuf); UINT WINAPI MsiGetProductPropertyW(MSIHANDLE hProduct,LPCWSTR szProperty,LPWSTR lpValueBuf,DWORD *pcchValueBuf); - #define MsiGetProductProperty __MINGW_NAME_AW(MsiGetProductProperty) UINT WINAPI MsiVerifyPackageA(LPCSTR szPackagePath); UINT WINAPI MsiVerifyPackageW(LPCWSTR szPackagePath); - #define MsiVerifyPackage __MINGW_NAME_AW(MsiVerifyPackage) 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); - #define MsiGetFeatureInfo __MINGW_NAME_AW(MsiGetFeatureInfo) UINT WINAPI MsiInstallMissingComponentA(LPCSTR szProduct,LPCSTR szComponent,INSTALLSTATE eInstallState); UINT WINAPI MsiInstallMissingComponentW(LPCWSTR szProduct,LPCWSTR szComponent,INSTALLSTATE eInstallState); - #define MsiInstallMissingComponent __MINGW_NAME_AW(MsiInstallMissingComponent) UINT WINAPI MsiInstallMissingFileA(LPCSTR szProduct,LPCSTR szFile); UINT WINAPI MsiInstallMissingFileW(LPCWSTR szProduct,LPCWSTR szFile); - #define MsiInstallMissingFile __MINGW_NAME_AW(MsiInstallMissingFile) INSTALLSTATE WINAPI MsiLocateComponentA(LPCSTR szComponent,LPSTR lpPathBuf,DWORD *pcchBuf); INSTALLSTATE WINAPI MsiLocateComponentW(LPCWSTR szComponent,LPWSTR lpPathBuf,DWORD *pcchBuf); - #define MsiLocateComponent __MINGW_NAME_AW(MsiLocateComponent) #if (_WIN32_MSI >= 110) UINT WINAPI MsiSourceListClearAllA(LPCSTR szProduct,LPCSTR szUserName,DWORD dwReserved); UINT WINAPI MsiSourceListClearAllW(LPCWSTR szProduct,LPCWSTR szUserName,DWORD dwReserved); - #define MsiSourceListClearAll __MINGW_NAME_AW(MsiSourceListClearAll) UINT WINAPI MsiSourceListAddSourceA(LPCSTR szProduct,LPCSTR szUserName,DWORD dwReserved,LPCSTR szSource); UINT WINAPI MsiSourceListAddSourceW(LPCWSTR szProduct,LPCWSTR szUserName,DWORD dwReserved,LPCWSTR szSource); - #define MsiSourceListAddSource __MINGW_NAME_AW(MsiSourceListAddSource) UINT WINAPI MsiSourceListForceResolutionA(LPCSTR szProduct,LPCSTR szUserName,DWORD dwReserved); UINT WINAPI MsiSourceListForceResolutionW(LPCWSTR szProduct,LPCWSTR szUserName,DWORD dwReserved); - #define MsiSourceListForceResolution __MINGW_NAME_AW(MsiSourceListForceResolution) #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); - #define MsiSourceListAddSourceEx __MINGW_NAME_AW(MsiSourceListAddSourceEx) 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); - #define MsiSourceListAddMediaDisk __MINGW_NAME_AW(MsiSourceListAddMediaDisk) 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); - #define MsiSourceListClearSource __MINGW_NAME_AW(MsiSourceListClearSource) 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); - #define MsiSourceListClearMediaDisk __MINGW_NAME_AW(MsiSourceListClearMediaDisk) UINT WINAPI MsiSourceListClearAllExA(LPCSTR szProductCodeOrPatchCode,LPCSTR szUserSid,MSIINSTALLCONTEXT dwContext,DWORD dwOptions); UINT WINAPI MsiSourceListClearAllExW(LPCWSTR szProductCodeOrPatchCode,LPCWSTR szUserSid,MSIINSTALLCONTEXT dwContext,DWORD dwOptions); - #define MsiSourceListClearAllEx __MINGW_NAME_AW(MsiSourceListClearAllEx) UINT WINAPI MsiSourceListForceResolutionExA(LPCSTR szProductCodeOrPatchCode,LPCSTR szUserSid,MSIINSTALLCONTEXT dwContext,DWORD dwOptions); UINT WINAPI MsiSourceListForceResolutionExW(LPCWSTR szProductCodeOrPatchCode,LPCWSTR szUserSid,MSIINSTALLCONTEXT dwContext,DWORD dwOptions); - #define MsiSourceListForceResolutionEx __MINGW_NAME_AW(MsiSourceListForceResolutionEx) 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); - #define MsiSourceListSetInfo __MINGW_NAME_AW(MsiSourceListSetInfo) 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); - #define MsiSourceListGetInfo __MINGW_NAME_AW(MsiSourceListGetInfo) 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); - #define MsiSourceListEnumSources __MINGW_NAME_AW(MsiSourceListEnumSources) 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); - #define MsiSourceListEnumMediaDisks __MINGW_NAME_AW(MsiSourceListEnumMediaDisks) #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); - #define MsiGetFileVersion __MINGW_NAME_AW(MsiGetFileVersion) #if (_WIN32_MSI >= 150) UINT WINAPI MsiGetFileHashA(LPCSTR szFilePath,DWORD dwOptions,PMSIFILEHASHINFO pHash); UINT WINAPI MsiGetFileHashW(LPCWSTR szFilePath,DWORD dwOptions,PMSIFILEHASHINFO pHash); - #define MsiGetFileHash __MINGW_NAME_AW(MsiGetFileHash) -#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); - #define MsiGetFileSignatureInformation __MINGW_NAME_AW(MsiGetFileSignatureInformation) #define MSI_INVALID_HASH_IS_FATAL 0x1 @@ -687,22 +652,26 @@ #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); - #define MsiGetShortcutTarget __MINGW_NAME_AW(MsiGetShortcutTarget) -#endif -#if (_WIN32_MSI >= 110) UINT WINAPI MsiIsProductElevatedA(LPCSTR szProduct,WINBOOL *pfElevated); UINT WINAPI MsiIsProductElevatedW(LPCWSTR szProduct,WINBOOL *pfElevated); - #define MsiIsProductElevated __MINGW_NAME_AW(MsiIsProductElevated) #endif #if (_WIN32_MSI >= 310) UINT WINAPI MsiNotifySidChangeA(LPCSTR pOldSid,LPCSTR pNewSid); UINT WINAPI MsiNotifySidChangeW(LPCWSTR pOldSid,LPCWSTR pNewSid); - #define MsiNotifySidChange __MINGW_NAME_AW(MsiNotifySidChange) + +#if _WIN32_MSI >= 450 +UINT WINAPI MsiBeginTransactionA(LPCSTR szName, DWORD dwTransactionAttributes, MSIHANDLE *phTransactionHandle, HANDLE *phChangeOfOwnerEvent); +UINT WINAPI MsiBeginTransactionW(LPCWSTR szName, DWORD dwTransactionAttributes, MSIHANDLE *phTransactionHandle, HANDLE *phChangeOfOwnerEvent); +#define MsiBeginTransaction __MINGW_NAME_AW(MsiBeginTransaction) + +UINT WINAPI MsiEndTransaction(DWORD dwTransactionState); +UINT WINAPI MsiJoinTransaction(MSIHANDLE hTransactionHandle, DWORD dwTransactionAttributes, HANDLE *phChangeOfOwnerEvent); +#endif #endif #ifdef __cplusplus @@ -829,4 +798,13 @@ #ifndef ERROR_PATCH_MANAGED_ADVERTISED_PRODUCT #define ERROR_PATCH_MANAGED_ADVERTISED_PRODUCT __MSABI_LONG(1651) #endif + +#ifndef ERROR_INSTALL_SERVICE_SAFEBOOT +#define ERROR_INSTALL_SERVICE_SAFEBOOT __MSABI_LONG(1652) +#endif + +#ifndef ERROR_ROLLBACK_DISABLED +#define ERROR_ROLLBACK_DISABLED __MSABI_LONG(1653) +#endif + #endif