James Hawkins : advpack: Implement the RunPostSetupCommands callback.

Alexandre Julliard julliard at wine.codeweavers.com
Thu Apr 20 13:19:47 CDT 2006


Module: wine
Branch: refs/heads/master
Commit: 401becab3ebc24808f983407d2992ee02a0641b5
URL:    http://source.winehq.org/git/?p=wine.git;a=commit;h=401becab3ebc24808f983407d2992ee02a0641b5

Author: James Hawkins <truiken at gmail.com>
Date:   Thu Apr 20 10:09:00 2006 -0500

advpack: Implement the RunPostSetupCommands callback.

---

 dlls/advpack/install.c |   34 ++++++++++++++++++++++++++++++++++
 1 files changed, 34 insertions(+), 0 deletions(-)

diff --git a/dlls/advpack/install.c b/dlls/advpack/install.c
index e7911ca..6bab9c0 100644
--- a/dlls/advpack/install.c
+++ b/dlls/advpack/install.c
@@ -58,6 +58,9 @@ typedef HRESULT (*iterate_fields_func)(H
 
 /* Advanced INF commands */
 static const WCHAR RegisterOCXs[] = {'R','e','g','i','s','t','e','r','O','C','X','s',0};
+static const WCHAR RunPostSetupCommands[] = {
+    'R','u','n','P','o','s','t','S','e','t','u','p','C','o','m','m','a','n','d','s',0
+};
 
 /* Advanced INF callbacks */
 static HRESULT register_ocxs_callback(HINF hinf, PCWSTR field, void *arg)
@@ -93,6 +96,30 @@ static HRESULT register_ocxs_callback(HI
     return hr;
 }
 
+static HRESULT run_post_setup_commands_callback(HINF hinf, PCWSTR field, void *arg)
+{
+    ADVInfo *info = (ADVInfo *)arg;
+    INFCONTEXT context;
+    HRESULT hr = S_OK;
+    DWORD size;
+
+    BOOL ok = SetupFindFirstLineW(hinf, field, NULL, &context);
+
+    for (; ok; ok = SetupFindNextLine(&context, &context))
+    {
+        WCHAR buffer[MAX_INF_STRING_LENGTH];
+
+        if (!SetupGetLineTextW(&context, NULL, NULL, NULL, buffer,
+                               MAX_INF_STRING_LENGTH, &size))
+            continue;
+
+        if (launch_exe(buffer, info->working_dir, NULL))
+            hr = E_FAIL;
+    }
+
+    return hr;
+}
+
 /* sequentially returns pointers to parameters in a parameter list
  * returns NULL if the parameter is empty, e.g. one,,three  */
 LPWSTR get_parameter(LPWSTR *params, WCHAR separator)
@@ -222,6 +249,13 @@ static HRESULT adv_install(ADVInfo *info
 
     hr = iterate_section_fields(info->hinf, info->install_sec,
                                 RegisterOCXs, register_ocxs_callback, NULL);
+    if (hr != S_OK)
+        return hr;
+
+    hr = iterate_section_fields(info->hinf, info->install_sec, RunPostSetupCommands,
+                                run_post_setup_commands_callback, info);
+    if (hr != S_OK)
+        return hr;
 
     return hr;
 }




More information about the wine-cvs mailing list