http://bugs.winehq.org/show_bug.cgi?id=18710
--- Comment #8 from Anastasius Focht focht@gmx.net 2009-06-01 07:02:38 --- Hello,
this is indeed a valid Wine bug exposed by patch installer, though not related to PunkBuster itself ;-) When the vise installer tells you about Punkbuster, a message box is to be shown and this fails silenty:
--- snip --- ... 0009:Call user32.MessageBoxExA(00050036,0032d9c0 "Would you like to install PunkBuster along with the Point Release? (We recommend you do)",0032d8bc "Install Punkbuster?",00050004,00000009) ret=1004bcaf 0009:Call ntdll.RtlCreateUnicodeStringFromAsciiz(0032d770,0032d9c0 "Would you like to install PunkBuster along with the Point Release? (We recommend you do)") ret=75416e83 0009:Ret ntdll.RtlCreateUnicodeStringFromAsciiz() retval=00000001 ret=75416e83 0009:Call ntdll.RtlCreateUnicodeStringFromAsciiz(0032d768,0032d8bc "Install Punkbuster?") ret=75416eb4 0009:Ret ntdll.RtlCreateUnicodeStringFromAsciiz() retval=00000001 ret=75416eb4 0009:Call KERNEL32.FindResourceExW(75380000,00000005,754669b2 L"MSGBOX",00000009) ret=75417001 0009:Call ntdll.RtlCreateUnicodeString(0032d5ec,754669b2 L"MSGBOX") ret=7b88a5e9 0009:Ret ntdll.RtlCreateUnicodeString() retval=00000001 ret=7b88a5e9 0009:Call ntdll.RtlUpcaseUnicodeString(0032d5ec,0032d5ec,00000000) ret=7b88a606 0009:Ret ntdll.RtlUpcaseUnicodeString() retval=00000000 ret=7b88a606 0009:Call ntdll.LdrFindResource_U(75380000,0032d5d8,00000003,0032d5d4) ret=7b88ac82 0009:Ret ntdll.LdrFindResource_U() retval=c0000204 ret=7b88ac82 0009:Call ntdll.RtlNtStatusToDosError(c0000204) ret=7b88ac9f 0009:Ret ntdll.RtlNtStatusToDosError() retval=00000717 ret=7b88ac9f 0009:Call ntdll.NtCurrentTeb() ret=7b851d95 0009:Ret ntdll.NtCurrentTeb() retval=7ffd8000 ret=7b851d95 0009:Call ntdll.RtlFreeHeap(00110000,00000000,00153ed0) ret=7b851e05 0009:Ret ntdll.RtlFreeHeap() retval=00000001 ret=7b851e05 0009:Ret KERNEL32.FindResourceExW() retval=00000000 ret=75417001 0009:Call ntdll.RtlFreeUnicodeString(0032d770) ret=75416f81 0009:Ret ntdll.RtlFreeUnicodeString() retval=0032d770 ret=75416f81 0009:Call ntdll.RtlFreeUnicodeString(0032d768) ret=75416f9a 0009:Ret ntdll.RtlFreeUnicodeString() retval=0032d768 ret=75416f9a 0009:Ret user32.MessageBoxExA() retval=00000000 ret=1004bcaf ... --- snip ---
The problem is the language id passed:
langid = 0x9 -> English (primary=en, sublang=neutral)
See MSDN: http://msdn.microsoft.com/en-us/goglobal/bb896001.aspx (National Language Support (NLS) API Reference)
Looking into appropriate .rc file for the primary language, "dlls/user32/resources/user32_En.rc":
--- snip --- LANGUAGE LANG_ENGLISH, SUBLANG_DEFAULT --- snip ---
Wine resource compiler will write out langid = 1033 (0x409, English – United States) resource - the same as "LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US" had been specified. At least LANGUAGE LANG_ENGLISH, SUBLANG_NEUTRAL fallback has to exist as well.
With that resource langid problem fixed, the message box will be shown and you can install PunkBuster (already tested).
Regards