From 4f62bf79dcd31989dfbe8875692e0b7b4e1c7308 Mon Sep 17 00:00:00 2001
From: Hans Leidekker <hans@it.vu.nl>
Date: Mon, 29 May 2006 12:51:00 +0200
Subject: [PATCH] msi: Implement MsiLocateComponent{A,W}.

---
 dlls/msi/msi.c | 20 ++++++++++++++++----
 1 file changed, 16 insertions(+), 4 deletions(-)

diff --git a/dlls/msi/msi.c b/dlls/msi/msi.c
index 53efaee0af9..05d93807325 100644
--- a/dlls/msi/msi.c
+++ b/dlls/msi/msi.c
@@ -835,15 +835,27 @@ LANGID WINAPI MsiLoadStringA( MSIHANDLE handle, UINT id, LPSTR lpBuffer,
 INSTALLSTATE WINAPI MsiLocateComponentA(LPCSTR szComponent, LPSTR lpPathBuf,
                 DWORD *pcchBuf)
 {
-    FIXME("%s %p %p\n", debugstr_a(szComponent), lpPathBuf, pcchBuf);
-    return INSTALLSTATE_UNKNOWN;
+    char szProduct[GUID_SIZE];
+
+    TRACE("%s %p %p\n", debugstr_a(szComponent), lpPathBuf, pcchBuf);
+
+    if (MsiGetProductCodeA( szComponent, szProduct ) != ERROR_SUCCESS)
+        return INSTALLSTATE_UNKNOWN;
+
+    return MsiGetComponentPathA( szProduct, szComponent, lpPathBuf, pcchBuf );
 }
 
 INSTALLSTATE WINAPI MsiLocateComponentW(LPCWSTR szComponent, LPWSTR lpPathBuf,
                 DWORD *pcchBuf)
 {
-    FIXME("%s %p %p\n", debugstr_w(szComponent), lpPathBuf, pcchBuf);
-    return INSTALLSTATE_UNKNOWN;
+    WCHAR szProduct[GUID_SIZE];
+
+    TRACE("%s %p %p\n", debugstr_w(szComponent), lpPathBuf, pcchBuf);
+
+    if (MsiGetProductCodeW( szComponent, szProduct ) != ERROR_SUCCESS)
+        return INSTALLSTATE_UNKNOWN;
+
+    return MsiGetComponentPathW( szProduct, szComponent, lpPathBuf, pcchBuf );
 }
 
 UINT WINAPI MsiMessageBoxA(HWND hWnd, LPCSTR lpText, LPCSTR lpCaption, UINT uType,
-- 
GitLab