Module: wine Branch: refs/heads/master Commit: 401becab3ebc24808f983407d2992ee02a0641b5 URL: http://source.winehq.org/git/?p=wine.git;a=commit;h=401becab3ebc24808f983407...
Author: James Hawkins truiken@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; }