Add simple implementation of advpack.DoInfInstall.
authorDmitry Timoshkov <dmitry@codeweavers.com>
Mon, 1 Nov 2004 21:07:53 +0000 (21:07 +0000)
committerAlexandre Julliard <julliard@winehq.org>
Mon, 1 Nov 2004 21:07:53 +0000 (21:07 +0000)
dlls/advpack/advpack.c
dlls/advpack/advpack.spec

index 7b79a0ff66b025c9acdf846438147a987942eca0..dfa77fdf0df29fe13ac24356c9ad1a296724d730 100644 (file)
  */
 
 #include <stdarg.h>
+
 #include "windef.h"
 #include "winbase.h"
+#include "winuser.h"
+#include "setupapi.h"
+#include "advpub.h"
 #include "wine/debug.h"
 
 WINE_DEFAULT_DEBUG_CHANNEL(advpack);
@@ -51,3 +55,40 @@ void WINAPI LaunchINFSectionEx( HWND hWnd, HINSTANCE hInst, LPCSTR cmdline, INT
 {
     FIXME("%p %p %s %d\n", hWnd, hInst, debugstr_a(cmdline), show );
 }
+
+/* this structure very closely resembles parameters of RunSetupCommand() */
+typedef struct
+{
+    HWND hwnd;
+    LPCSTR title;
+    LPCSTR inf_name;
+    LPCSTR dir;
+    LPCSTR section_name;
+} SETUPCOMMAND_PARAMS;
+
+/***********************************************************************
+ *             DoInfInstall  (ADVPACK.@)
+ */
+BOOL WINAPI DoInfInstall(const SETUPCOMMAND_PARAMS *setup)
+{
+    BOOL ret;
+    HINF hinf;
+    void *callback_context;
+
+    TRACE("%p %s %s %s %s\n", setup->hwnd, debugstr_a(setup->title),
+          debugstr_a(setup->inf_name), debugstr_a(setup->dir),
+          debugstr_a(setup->section_name));
+
+    hinf = SetupOpenInfFileA(setup->inf_name, NULL, INF_STYLE_WIN4, NULL);
+    if (hinf == INVALID_HANDLE_VALUE) return FALSE;
+
+    callback_context = SetupInitDefaultQueueCallback(setup->hwnd);
+
+    ret = SetupInstallFromInfSectionA(NULL, hinf, setup->section_name, SPINST_ALL,
+                                      NULL, NULL, 0, SetupDefaultQueueCallbackA,
+                                      callback_context, NULL, NULL);
+    SetupTermDefaultQueueCallback(callback_context);
+    SetupCloseInfFile(hinf);
+
+    return ret;
+}
index a71b3783f0a2546a4ba5a13ae23c803db7f38d29..2a882593eba34bfafb6f16cf6e1076895d7a05a6 100644 (file)
@@ -4,7 +4,7 @@
 @ stub DelNode
 @ stub DelNodeRunDLL32
 @ stub DllMain
-@ stub DoInfInstall
+@ stdcall DoInfInstall(ptr)
 @ stub ExecuteCab
 @ stub ExtractFiles
 @ stub FileSaveMarkNotExist