diff --git a/README.md b/README.md index 00b3e2de..fb94896f 100644 --- a/README.md +++ b/README.md @@ -42,6 +42,7 @@ Wine-Compholio contains fixes for the following Wine bugs: * Support for process ACLs ([Wine Bug #22006](http://bugs.winehq.org/show_bug.cgi?id=22006 "OpenProcess does not enforce ACL")) * Support for stored file ACLs ([Wine Bug #31858](http://bugs.winehq.org/show_bug.cgi?id=31858 "Netflix on Firefox fails with Internet Connection Problem when loading bar is at 99%")) * Support for ws2_32.inet_pton ([Wine Bug #36713](http://bugs.winehq.org/show_bug.cgi?id=36713 "Watch_Dogs requires ws2_32.inet_pton")) +* Use manual relay for RunDLL_CallEntry16 in shell32 ([Wine Bug #23033](http://bugs.winehq.org/show_bug.cgi?id=23033 "Tages Protection v5.x: games report \"DLL not found shell.dll16.dll\" (Runaway 2: The Dream Of The Turtle, ...)")) * Workaround for TransactNamedPipe not being supported ([Wine Bug #17273](http://bugs.winehq.org/show_bug.cgi?id=17273 "Many apps and games need SetNamedPipeHandleState implementation (support for named pipe message mode)(FireFox+Flash, Win8/NET 4.x SDK/vcrun2012, WiX installers)")) Besides that the following additional changes are included: diff --git a/patches/Makefile b/patches/Makefile index 115c512b..0063d229 100644 --- a/patches/Makefile +++ b/patches/Makefile @@ -29,6 +29,7 @@ PATCHLIST := Miscellaneous.ok \ server-Stored_ACLs.ok \ shell32-Default_Folder_ACLs.ok \ shell32-Icons.ok \ + shell32-RunDLL_CallEntry16.ok \ shell32-SHCreateSessionKey.ok \ shlwapi-UrlCombine.ok \ strmbase-Lock_Race_Conditions.ok \ @@ -522,6 +523,24 @@ shell32-Icons.ok: echo '+ { "shell32-Icons", "Michael Müller", "Add support for extra large and jumbo icon lists in shell32." },'; \ ) > shell32-Icons.ok +# Patchset shell32-RunDLL_CallEntry16 +# | +# | Included patches: +# | * Manually relay RunDLL_CallEntry16 to make Tages Protection v5 happy. [by Michael Müller] +# | +# | This patchset fixes the following Wine bugs: +# | * [#23033] Tages Protection v5.x: games report "DLL not found shell.dll16.dll" (Runaway 2: The Dream Of The Turtle, ...) +# | +# | Modified files: +# | * dlls/shell32/control.c, dlls/shell32/shell32.spec +# | +.INTERMEDIATE: shell32-RunDLL_CallEntry16.ok +shell32-RunDLL_CallEntry16.ok: + $(PATCH) < shell32-RunDLL_CallEntry16/0001-shell32-Use-manual-redirection-for-RunDLL_CallEntry1.patch + @( \ + echo '+ { "shell32-RunDLL_CallEntry16", "Michael Müller", "Manually relay RunDLL_CallEntry16 to make Tages Protection v5 happy." },'; \ + ) > shell32-RunDLL_CallEntry16.ok + # Patchset shell32-SHCreateSessionKey # | # | Included patches: diff --git a/patches/shell32-RunDLL_CallEntry16/0001-shell32-Use-manual-redirection-for-RunDLL_CallEntry1.patch b/patches/shell32-RunDLL_CallEntry16/0001-shell32-Use-manual-redirection-for-RunDLL_CallEntry1.patch new file mode 100644 index 00000000..88aaac09 --- /dev/null +++ b/patches/shell32-RunDLL_CallEntry16/0001-shell32-Use-manual-redirection-for-RunDLL_CallEntry1.patch @@ -0,0 +1,56 @@ +From f83364d68291cd94bc0e20fee08fd08ff1e8f35d Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Michael=20M=C3=BCller?= +Date: Mon, 4 Aug 2014 23:04:34 +0200 +Subject: shell32: Use manual redirection for RunDLL_CallEntry16 + +--- + dlls/shell32/control.c | 22 ++++++++++++++++++++++ + dlls/shell32/shell32.spec | 2 +- + 2 files changed, 23 insertions(+), 1 deletion(-) + +diff --git a/dlls/shell32/control.c b/dlls/shell32/control.c +index b393154..2ddf8b0 100644 +--- a/dlls/shell32/control.c ++++ b/dlls/shell32/control.c +@@ -883,3 +883,25 @@ DWORD WINAPI CallCPLEntry16(HMODULE hMod, FARPROC pFunc, DWORD dw3, DWORD dw4, D + FIXME("(%p, %p, %08x, %08x, %08x, %08x): stub.\n", hMod, pFunc, dw3, dw4, dw5, dw6); + return 0x0deadbee; + } ++ ++/************************************************************************* ++ * RunDLL_CallEntry16 [SHELL32.122] ++ * Manually relay this function to make Tages Protection v5 happy ++ */ ++void WINAPI RunDLL_CallEntry16( DWORD proc, HWND hwnd, HINSTANCE inst, ++ LPCSTR cmdline, INT cmdshow ) ++{ ++ static HMODULE shell16 = NULL; ++ static void (WINAPI *pRunDLL_CallEntry16)( DWORD proc, HWND hwnd, HINSTANCE inst, ++ LPCSTR cmdline, INT cmdshow ) = NULL; ++ ++ if (!pRunDLL_CallEntry16) ++ { ++ if (!shell16 && !(shell16 = LoadLibraryA( "shell.dll16" ))) ++ return; ++ if (!(pRunDLL_CallEntry16 = (void *)GetProcAddress( shell16, "RunDLL_CallEntry16" ))) ++ return; ++ } ++ ++ pRunDLL_CallEntry16( proc, hwnd, inst, cmdline, cmdshow ); ++} +diff --git a/dlls/shell32/shell32.spec b/dlls/shell32/shell32.spec +index d73dcbb..e559587 100644 +--- a/dlls/shell32/shell32.spec ++++ b/dlls/shell32/shell32.spec +@@ -114,7 +114,7 @@ + 119 stdcall -ordinal IsLFNDrive(ptr) IsLFNDriveAW + 120 stdcall -noname FileMenu_AbortInitMenu() + 121 stdcall -noname SHFlushClipboard() +- 122 stdcall -private @(long long ptr str long) shell.dll16.RunDLL_CallEntry16 ++ 122 stdcall -noname RunDLL_CallEntry16(long long long str long) + 123 stdcall -noname SHFreeUnusedLibraries() + 124 stdcall -noname FileMenu_AppendFilesForPidl(long ptr long) + 125 stdcall -noname FileMenu_AddFilesForPidl(long long long ptr long long ptr) +-- +1.8.3.2 + diff --git a/patches/shell32-RunDLL_CallEntry16/definition b/patches/shell32-RunDLL_CallEntry16/definition new file mode 100644 index 00000000..dceb1395 --- /dev/null +++ b/patches/shell32-RunDLL_CallEntry16/definition @@ -0,0 +1,4 @@ +Author: Michael Müller +Subject: Manually relay RunDLL_CallEntry16 to make Tages Protection v5 happy. +Revision: 1 +Fixes: [23033] Use manual relay for RunDLL_CallEntry16 in shell32