Commit 5cbd491b authored by Aric Stewart's avatar Aric Stewart Committed by Alexandre Julliard

Use MsiDecomposeDescriptorW in MsiProvideQualifiedComponentExW.

parent 104f2e8e
...@@ -1491,6 +1491,9 @@ end: ...@@ -1491,6 +1491,9 @@ end:
return ret; return ret;
} }
/***********************************************************************
* MsiProvideQualifiedComponentExW [MSI.@]
*/
UINT WINAPI MsiProvideQualifiedComponentExW(LPCWSTR szComponent, UINT WINAPI MsiProvideQualifiedComponentExW(LPCWSTR szComponent,
LPCWSTR szQualifier, DWORD dwInstallMode, LPWSTR szProduct, LPCWSTR szQualifier, DWORD dwInstallMode, LPWSTR szProduct,
DWORD Unused1, DWORD Unused2, LPWSTR lpPathBuf, DWORD Unused1, DWORD Unused2, LPWSTR lpPathBuf,
...@@ -1500,10 +1503,9 @@ UINT WINAPI MsiProvideQualifiedComponentExW(LPCWSTR szComponent, ...@@ -1500,10 +1503,9 @@ UINT WINAPI MsiProvideQualifiedComponentExW(LPCWSTR szComponent,
UINT rc; UINT rc;
LPWSTR info; LPWSTR info;
DWORD sz; DWORD sz;
LPWSTR product = NULL; WCHAR product[MAX_FEATURE_CHARS+1];
LPWSTR component = NULL; WCHAR component[MAX_FEATURE_CHARS+1];
LPWSTR ptr; WCHAR feature[MAX_FEATURE_CHARS+1];
GUID clsid;
TRACE("%s %s %li %s %li %li %p %p\n", debugstr_w(szComponent), TRACE("%s %s %li %s %li %li %p %p\n", debugstr_w(szComponent),
debugstr_w(szQualifier), dwInstallMode, debugstr_w(szProduct), debugstr_w(szQualifier), dwInstallMode, debugstr_w(szProduct),
...@@ -1530,25 +1532,8 @@ UINT WINAPI MsiProvideQualifiedComponentExW(LPCWSTR szComponent, ...@@ -1530,25 +1532,8 @@ UINT WINAPI MsiProvideQualifiedComponentExW(LPCWSTR szComponent,
return ERROR_INDEX_ABSENT; return ERROR_INDEX_ABSENT;
} }
/* find the component */ MsiDecomposeDescriptorW(info, product, feature, component, &sz);
ptr = strchrW(&info[20],'>');
if (ptr)
ptr++;
else
{
RegCloseKey(hkey);
msi_free(info);
return ERROR_INDEX_ABSENT;
}
if (!szProduct)
{
decode_base85_guid(info,&clsid);
StringFromCLSID(&clsid, &product);
}
decode_base85_guid(ptr,&clsid);
StringFromCLSID(&clsid, &component);
if (!szProduct) if (!szProduct)
rc = MsiGetComponentPathW(product, component, lpPathBuf, pcchPathBuf); rc = MsiGetComponentPathW(product, component, lpPathBuf, pcchPathBuf);
else else
...@@ -1556,8 +1541,6 @@ UINT WINAPI MsiProvideQualifiedComponentExW(LPCWSTR szComponent, ...@@ -1556,8 +1541,6 @@ UINT WINAPI MsiProvideQualifiedComponentExW(LPCWSTR szComponent,
RegCloseKey(hkey); RegCloseKey(hkey);
msi_free(info); msi_free(info);
msi_free(product);
msi_free(component);
if (rc == INSTALLSTATE_LOCAL) if (rc == INSTALLSTATE_LOCAL)
return ERROR_SUCCESS; return ERROR_SUCCESS;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment