diff --git a/dlls/msi/msi.c b/dlls/msi/msi.c index 7432aee..9f3d9b3 100644 --- a/dlls/msi/msi.c +++ b/dlls/msi/msi.c @@ -3033,3 +3033,23 @@ UINT WINAPI MsiSetExternalUIRecord( INSTALLUI_HANDLER_RECORD puiHandler, ppuiPrevHandler); return ERROR_CALL_NOT_IMPLEMENTED; } + +/*********************************************************************** + * MsiDetermineApplicablePatchesA [MSI.@] + */ +UINT WINAPI MsiDetermineApplicablePatchesA(LPCSTR szProductPackagePath, + DWORD cPatchInfo, PMSIPATCHSEQUENCEINFOA pPatchInfo) +{ + FIXME("%s %d %p\n", debugstr_a(szProductPackagePath), cPatchInfo, pPatchInfo); + return ERROR_CALL_NOT_IMPLEMENTED; +} + +/*********************************************************************** + * MsiDetermineApplicablePatchesW [MSI.@] + */ +UINT WINAPI MsiDetermineApplicablePatchesW(LPCWSTR szProductPackagePath, + DWORD cPatchInfo, PMSIPATCHSEQUENCEINFOW pPatchInfo) +{ + FIXME("%s %d %p\n", debugstr_w(szProductPackagePath), cPatchInfo, pPatchInfo); + return ERROR_CALL_NOT_IMPLEMENTED; +} diff --git a/dlls/msi/msi.spec b/dlls/msi/msi.spec index 4ab0bb1..c2a0cd0 100644 --- a/dlls/msi/msi.spec +++ b/dlls/msi/msi.spec @@ -270,8 +270,8 @@ 274 stdcall MsiSourceListAddMediaDiskW(wstr wstr long long long wstr wstr) 275 stub MsiSourceListClearMediaDiskA 276 stub MsiSourceListClearMediaDiskW -277 stub MsiDetermineApplicablePatchesA -278 stub MsiDetermineApplicablePatchesW +277 stdcall MsiDetermineApplicablePatchesA(str long ptr) +278 stdcall MsiDetermineApplicablePatchesW(wstr long ptr) 279 stub MsiMessageBoxExA 280 stub MsiMessageBoxExW 281 stdcall MsiSetExternalUIRecord(ptr long ptr ptr) diff --git a/include/msi.h b/include/msi.h index c4f5e0d..4917782 100644 --- a/include/msi.h +++ b/include/msi.h @@ -196,11 +196,37 @@ typedef enum tagMSICODE MSICODE_PATCH = 0x40000000L } MSICODE; +typedef enum tagMSIPATCHDATATYPE +{ + MSIPATCH_DATATYPE_PATCHFILE = 0, + MSIPATCH_DATATYPE_XMLPATH = 1, + MSIPATCH_DATATYPE_XMLBLOB =2, +} MSIPATCHDATATYPE, *PMSIPATCHDATATYPE; + typedef struct _MSIFILEHASHINFO { ULONG dwFileHashInfoSize; ULONG dwData[4]; } MSIFILEHASHINFO, *PMSIFILEHASHINFO; +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; + +DECL_WINELIB_TYPE_AW(MSIPATCHSEQUENCEINFO) +DECL_WINELIB_TYPE_AW(PMSIPATCHSEQUENCEINFO) + #define MAX_FEATURE_CHARS 38 /* Strings defined in msi.h */ @@ -599,6 +625,10 @@ UINT WINAPI MsiIsProductElevatedA(LPCSTR, BOOL *); UINT WINAPI MsiIsProductElevatedW(LPCWSTR, BOOL *); #define MsiIsProductElevated WINELIB_NAME_AW(MsiIsProductElevated) +UINT WINAPI MsiDetermineApplicablePatchesA(LPCSTR, DWORD, PMSIPATCHSEQUENCEINFOA); +UINT WINAPI MsiDetermineApplicablePatchesW(LPCWSTR, DWORD, PMSIPATCHSEQUENCEINFOW); +#define MsiDetermineApplicablePatches WINELIB_NAME_AW(MsiDetermineApplicablePatches) + /* Non Unicode */ UINT WINAPI MsiCloseHandle(MSIHANDLE); UINT WINAPI MsiCloseAllHandles(void);