qmgr: Dynamically link to advpack.dll.
authorRob Shearman <rob@codeweavers.com>
Sat, 12 Apr 2008 09:06:56 +0000 (10:06 +0100)
committerAlexandre Julliard <julliard@winehq.org>
Mon, 14 Apr 2008 10:40:22 +0000 (12:40 +0200)
Use RegInstall instead of RegInstallA as RegInstallA isn't available in
some native versions of advpack commonly installed by programs.

dlls/qmgr/Makefile.in
dlls/qmgr/qmgr_main.c

index de636dbfe8db05b5128f7847b475b290a56a4977..57609ca23c9afdba62ff4a10fda6c866f412f7aa 100644 (file)
@@ -3,7 +3,7 @@ TOPOBJDIR = ../..
 SRCDIR    = @srcdir@
 VPATH     = @srcdir@
 MODULE    = qmgr.dll
-IMPORTS   = advpack wininet urlmon ole32 advapi32 kernel32
+IMPORTS   = wininet urlmon ole32 advapi32 kernel32
 EXTRALIBS = -luuid
 
 C_SRCS = \
index 2a21a2803eae3659ef21cc376c82b88cd4335a78..5094874dab158ceafb8ef9f4a54c14b9ebeb2c99 100644 (file)
@@ -141,6 +141,9 @@ static HRESULT register_server(BOOL do_register)
 {
     HRESULT hr;
     STRTABLEA strtable;
+    HMODULE hAdvpack;
+    HRESULT (WINAPI *pRegInstall)(HMODULE hm, LPCSTR pszSection, const STRTABLEA* pstTable);
+    static const WCHAR wszAdvpack[] = {'a','d','v','p','a','c','k','.','d','l','l',0};
 
     TRACE("(%x)\n", do_register);
 
@@ -150,9 +153,12 @@ static HRESULT register_server(BOOL do_register)
         return hr;
     }
 
+    hAdvpack = LoadLibraryW(wszAdvpack);
+    pRegInstall = (void *)GetProcAddress(hAdvpack, "RegInstall");
+
     hr = init_register_strtable(&strtable);
     if (SUCCEEDED(hr))
-        hr = RegInstallA(hInst, do_register ? "RegisterDll" : "UnregisterDll",
+        hr = pRegInstall(hInst, do_register ? "RegisterDll" : "UnregisterDll",
                          &strtable);
     cleanup_register_strtable(&strtable);