[PATCH] setupapi: Implement installing catalog files
Maarten Lankhorst
maarten at codeweavers.com
Tue Oct 14 15:31:15 CDT 2008
---
dlls/setupapi/Makefile.in | 2 +-
dlls/setupapi/misc.c | 32 +++++++++++++++++++++++++++-----
2 files changed, 28 insertions(+), 6 deletions(-)
diff --git a/dlls/setupapi/Makefile.in b/dlls/setupapi/Makefile.in
index 3145003..1f633a4 100644
--- a/dlls/setupapi/Makefile.in
+++ b/dlls/setupapi/Makefile.in
@@ -6,7 +6,7 @@ VPATH = @srcdir@
MODULE = setupapi.dll
IMPORTLIB = setupapi
IMPORTS = uuid user32 version advapi32 rpcrt4 kernel32 ntdll
-DELAYIMPORTS = shell32
+DELAYIMPORTS = shell32 wintrust
C_SRCS = \
devinst.c \
diff --git a/dlls/setupapi/misc.c b/dlls/setupapi/misc.c
index 62abc85..7109be9 100644
--- a/dlls/setupapi/misc.c
+++ b/dlls/setupapi/misc.c
@@ -28,13 +28,14 @@
#include "winreg.h"
#include "setupapi.h"
#include "lzexpand.h"
+#include "softpub.h"
+#include "mscat.h"
#include "wine/unicode.h"
#include "wine/debug.h"
#include "setupapi_private.h"
-
WINE_DEFAULT_DEBUG_CHANNEL(setupapi);
/* arbitrary limit not related to what native actually uses */
@@ -1052,17 +1053,38 @@ BOOL WINAPI SetupCopyOEMInfW( PCWSTR source, PCWSTR location,
sizeof(catalog_file)/sizeof(catalog_file[0]), NULL ))
{
WCHAR source_cat[MAX_PATH];
- strcpyW( source_cat, source );
+ HCATADMIN handle;
+ HCATINFO cat;
+ GUID msguid = DRIVER_ACTION_VERIFY;
+ SetupCloseInfFile( hinf );
+
+ strcpyW( source_cat, source );
p = strrchrW( source_cat, '\\' );
if (p) p++;
else p = source_cat;
-
strcpyW( p, catalog_file );
- FIXME("install catalog file %s\n", debugstr_w( source_cat ));
+ TRACE("installing catalog file %s\n", debugstr_w( source_cat ));
+
+ if (!CryptCATAdminAcquireContext(&handle, &msguid, 0))
+ {
+ ERR("Could not acquire security context\n");
+ return FALSE;
+ }
+
+ if (!(cat = CryptCATAdminAddCatalog(handle, source_cat, catalog_file, 0)))
+ {
+ ERR("Could not add catalog\n");
+ CryptCATAdminReleaseContext(handle, 0);
+ return FALSE;
+ }
+
+ CryptCATAdminReleaseCatalogContext(handle, cat, 0);
+ CryptCATAdminReleaseContext(handle, 0);
}
- SetupCloseInfFile( hinf );
+ else
+ SetupCloseInfFile( hinf );
if (!(ret = CopyFileW( source, target, (style & SP_COPY_NOOVERWRITE) != 0 )))
return ret;
--
1.5.6.5
--------------070805070802080203090507--
More information about the wine-patches
mailing list