Rob Shearman : qmgr: Dynamically link to advpack.dll.

Alexandre Julliard julliard at winehq.org
Mon Apr 14 07:14:08 CDT 2008


Module: wine
Branch: master
Commit: b2603687ccac5a6ce51132a1da9a7111cf5e2326
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=b2603687ccac5a6ce51132a1da9a7111cf5e2326

Author: Rob Shearman <rob at codeweavers.com>
Date:   Sat Apr 12 10:06:56 2008 +0100

qmgr: Dynamically link to advpack.dll.

Use RegInstall instead of RegInstallA as RegInstallA isn't available in
some native versions of advpack commonly installed by programs.

---

 dlls/qmgr/Makefile.in |    2 +-
 dlls/qmgr/qmgr_main.c |    8 +++++++-
 2 files changed, 8 insertions(+), 2 deletions(-)

diff --git a/dlls/qmgr/Makefile.in b/dlls/qmgr/Makefile.in
index de636db..57609ca 100644
--- a/dlls/qmgr/Makefile.in
+++ b/dlls/qmgr/Makefile.in
@@ -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 = \
diff --git a/dlls/qmgr/qmgr_main.c b/dlls/qmgr/qmgr_main.c
index 2a21a28..5094874 100644
--- a/dlls/qmgr/qmgr_main.c
+++ b/dlls/qmgr/qmgr_main.c
@@ -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);
 




More information about the wine-cvs mailing list