From 3b60c2c0d1eaa2634cbf32a49df2f32f8e36eb9c Mon Sep 17 00:00:00 2001 From: Nikolay Sivov Date: Tue, 17 Jan 2012 23:46:16 +0300 Subject: [PATCH] msi: Support test for aplicable patch of MSIPATCH_DATATYPE_XMLPATH type. --- dlls/msi/msi.c | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/dlls/msi/msi.c b/dlls/msi/msi.c index 941a5478e72..cc83e39cf3b 100644 --- a/dlls/msi/msi.c +++ b/dlls/msi/msi.c @@ -651,6 +651,7 @@ static UINT determine_patch_sequence( MSIPACKAGE *package, DWORD count, MSIPATCH } break; } + case MSIPATCH_DATATYPE_XMLPATH: case MSIPATCH_DATATYPE_XMLBLOB: { VARIANT_BOOL b; @@ -669,7 +670,16 @@ static UINT determine_patch_sequence( MSIPACKAGE *package, DWORD count, MSIPATCH } s = SysAllocString( info[i].szPatchData ); - hr = IXMLDOMDocument_loadXML( desc, s, &b ); + if (info[i].ePatchDataType == MSIPATCH_DATATYPE_XMLPATH) + { + VARIANT src; + + V_VT(&src) = VT_BSTR; + V_BSTR(&src) = s; + hr = IXMLDOMDocument_load( desc, src, &b ); + } + else + hr = IXMLDOMDocument_loadXML( desc, s, &b ); SysFreeString( s ); if ( hr != S_OK ) { @@ -692,7 +702,7 @@ static UINT determine_patch_sequence( MSIPACKAGE *package, DWORD count, MSIPATCH } default: { - FIXME("patch data type %u not supported\n", info[i].ePatchDataType); + FIXME("unknown patch data type %u\n", info[i].ePatchDataType); info[i].dwOrder = i; info[i].uStatus = ERROR_SUCCESS; break;