Alexandre Julliard : setupapi: Create fakedlls before copying files.
Module: wine Branch: master Commit: 1244b501455b4dac8f4ec9c65067e06f87729b72 URL: https://source.winehq.org/git/wine.git/?a=commit;h=1244b501455b4dac8f4ec9c65... Author: Alexandre Julliard <julliard(a)winehq.org> Date: Thu Mar 18 11:40:13 2021 +0100 setupapi: Create fakedlls before copying files. Some files may come from dll resources. Signed-off-by: Alexandre Julliard <julliard(a)winehq.org> --- dlls/setupapi/install.c | 26 +++++++++----------------- 1 file changed, 9 insertions(+), 17 deletions(-) diff --git a/dlls/setupapi/install.c b/dlls/setupapi/install.c index 56a9d4f36c3..23f0fbdd4f1 100644 --- a/dlls/setupapi/install.c +++ b/dlls/setupapi/install.c @@ -1085,6 +1085,13 @@ BOOL WINAPI SetupInstallFromInfSectionW( HWND owner, HINF hinf, PCWSTR section, if (!iterate_section_fields( hinf, section, L"WinePreInstall", registry_callback, &info )) return FALSE; } + if (flags & SPINST_REGSVR) + { + if (iterate_section_fields( hinf, section, L"WineFakeDlls", fake_dlls_callback, NULL )) + cleanup_fake_dlls(); + else + return FALSE; + } if (flags & SPINST_FILES) { struct files_callback_info info; @@ -1121,24 +1128,14 @@ BOOL WINAPI SetupInstallFromInfSectionW( HWND owner, HINF hinf, PCWSTR section, } if (flags & SPINST_REGSVR) { - struct register_dll_info info; + struct register_dll_info info = { .unregister = FALSE }; HRESULT hr; - info.unregister = FALSE; - info.modules_size = 0; - info.modules_count = 0; - info.modules = NULL; if (flags & SPINST_REGISTERCALLBACKAWARE) { info.callback = callback; info.callback_context = context; } - else info.callback = NULL; - - if (iterate_section_fields( hinf, section, L"WineFakeDlls", fake_dlls_callback, NULL )) - cleanup_fake_dlls(); - else - return FALSE; hr = CoInitialize(NULL); @@ -1153,19 +1150,14 @@ BOOL WINAPI SetupInstallFromInfSectionW( HWND owner, HINF hinf, PCWSTR section, } if (flags & SPINST_UNREGSVR) { - struct register_dll_info info; + struct register_dll_info info = { .unregister = TRUE }; HRESULT hr; - info.unregister = TRUE; - info.modules_size = 0; - info.modules_count = 0; - info.modules = NULL; if (flags & SPINST_REGISTERCALLBACKAWARE) { info.callback = callback; info.callback_context = context; } - else info.callback = NULL; hr = CoInitialize(NULL);
participants (1)
-
Alexandre Julliard