http://bugs.winehq.org/show_bug.cgi?id=25740
Summary: setupapi: registry values missing %token% replacement (dynamic strings, updspapi) (Windows PowerShell 2.0) Product: Wine Version: 1.3.11 Platform: x86 OS/Version: Linux Status: NEW Severity: normal Priority: P2 Component: setupapi AssignedTo: wine-bugs@winehq.org ReportedBy: focht@gmx.net
Hello,
trying to start the Windows PowerShell Integrated Scripting Environment (ISE) after installing Windows PowerShell 2.0 fails.
--- snip --- $ wine powershell_ise.exe ... Unhandled Exception: System.Reflection.TargetInvocationException: Exception has been thrown by the target of an invocation. ---> System.ArgumentNullException: Value cannot be null. Parameter name: window at System.Windows.MessageBox.Show(Window owner, String messageBoxText, String caption, MessageBoxButton button, MessageBoxImage icon, MessageBoxResult defaultResult) at Microsoft.Windows.PowerShell.Gui.Internal.Program.Initialize() --- End of inner exception stack trace --- at Microsoft.Windows.PowerShell.GuiExe.Internal.GPowerShell.Main(String[] args) wine: Unhandled exception 0xe0434f4d at address 0x7b838ce2 (thread 0009), starting debugger... --- snip ---
The real cause is the inability to locate/load the assembly "CompiledComposition.Microsoft.PowerShell.GPowerShell.dll" leading to later crash.
The path to assembly is resolved using registry:
--- snip --- 0026:Call advapi32.RegOpenKeyExW(80000002,009bf828 L"Software\Microsoft\PowerShell\1\PowerShellEngine",00000000,00020019,0032ece8) ret=0036a6a7 0026:Ret advapi32.RegOpenKeyExW() retval=00000000 ret=0036a6a7 ... 0026:Call advapi32.RegQueryValueExW(00000180,009bf770 L"ApplicationBase",00000000,0032ed18,00000000,0032ed1c) ret=0036a7aa 0026:Ret advapi32.RegQueryValueExW() retval=00000000 ret=0036a7aa ... 0026:Call KERNEL32.GetFullPathNameW(0032ea1c L"%SystemRoot%\system32\WindowsPowerShell\v1.0\CompiledComposition.Microsoft.PowerShell.GPowerShell.dll",00000105,0032e810,00000000) ret=0036a1c3 0026:Ret KERNEL32.GetFullPathNameW() retval=00000073 ret=0036a1c3 --- snip ---
Registry export:
--- snip --- REGEDIT4
[HKEY_LOCAL_MACHINE\Software\Microsoft\PowerShell\1\PowerShellEngine] "ApplicationBase"="%SystemRoot%\system32\WindowsPowerShell\v1.0" "ConsoleHostAssemblyName"="Microsoft.PowerShell.ConsoleHost,Version=1.0.0.0,Culture=neutral,PublicKeyToken=31bf3856ad364e35,ProcessorArchitecture=msil" "ConsoleHostModuleName"=""%SystemRoot%\system32\WindowsPowerShell\v1.0\Microsoft.PowerShell.ConsoleHost.dll"" "PowerShellVersion"="2.0" "PSCompatibleVersion"="1.0,2.0" "RuntimeVersion"="v2.0.50727" --- snip ---
The path contains "%SystemRoot%" token which should have been deformated at _install_ time (.NET app code directly takes the path string).
From the setupapi/updspapi based installer's update.inf:
--- snip --- ... [ProductInstall.GlobalRegistryChanges.Install]
AddReg=PowerShell.Add.Reg DelReg=PowerShell.Del.Reg
... [PowerShell.Add.Reg] HKLM,SOFTWARE\Microsoft\PowerShell\1\PowerShellEngine,"ApplicationBase",0x00000000,%SystemRoot%\system32\WindowsPowerShell\v1.0 HKLM,SOFTWARE\Microsoft\PowerShell\1\PowerShellEngine,"ConsoleHostAssemblyName",0x00000000,"Microsoft.PowerShell.ConsoleHost,Version=1.0.0.0,Culture=neutral,PublicKeyToken=31bf3856ad364e35,ProcessorArchitecture=msil" HKLM,SOFTWARE\Microsoft\PowerShell\1\PowerShellEngine,"ConsoleHostModuleName",0x00000000,"""%SystemRoot%\system32\WindowsPowerShell\v1.0\Microsoft.PowerShell.ConsoleHost.dll""" HKLM,SOFTWARE\Microsoft\PowerShell\1\PowerShellEngine,"PowerShellVersion",0x00000000,"2.0" HKLM,SOFTWARE\Microsoft\PowerShell\1\PowerShellEngine,"PSCompatibleVersion",0x00000000,"1.0,2.0" HKLM,SOFTWARE\Microsoft\PowerShell\1\PowerShellEngine,"RuntimeVersion",0x00000000,"v2.0.50727" HKLM,SOFTWARE\Microsoft\PowerShell\1\ShellIds\Microsoft.PowerShell,"Path",0x00000000,%SystemRoot%\system32\WindowsPowerShell\v1.0\powershell.exe
--- snip ---
There are also %token% strings which are _not_ to be replaced, hence the double % quoting:
--- snip --- HKLM, SYSTEM\CurrentControlSet\Services\WinRM\Parameters, ServiceDll, 0x00020000, "%%SystemRoot%%\system32\WsmSvc.dll" --- snip ---
MSDN says about the "INF AddReg Directive": http://msdn.microsoft.com/en-us/library/ff546320.aspx
--- snip --- [add-registry-section] reg-root, [subkey],[value-entry-name],[flags],[value]
... value
... The expression of such a value depends on the registry type specified for the flag, as follows:
* A registry string-type value can be expressed either as a "quoted string" or as a %strkey% token defined in a Strings section of the INF file. Such an INF-specified value does not have to include a NULL terminator at the end of each string. ... --- snip ---
There is a "dynamic strings" directive present in .inf file:
--- snip --- [DynamicStrings] SystemRoot=InstallPathEnvVar,SystemRoot --- snip ---
This part is processed by installer, updspapi.UpdSpSetDynamicStringA gets called:
--- snip --- 0023:Call setupapi.SetupFindFirstLineA(00144c68,01025d10 "DynamicStrings",00000000,0033bb94) ret=010758be 0023:Call ntdll.RtlCreateUnicodeStringFromAsciiz(0033baa8,01025d10 "DynamicStrings") ret=688f6bbf 0023:Ret ntdll.RtlCreateUnicodeStringFromAsciiz() retval=00000001 ret=688f6bbf 0023:trace:setupapi:SetupFindFirstLineW (0x144c68,L"DynamicStrings",(null)): returning 63/0 .. 0023:Call msvcrt._vsnprintf(0033b34b,000007f7,01025830 "ProcessDynamicStrings: InstallPathEnvVar for %s returned %s",0033bb80) ret=010706ea ... 0023:Call updspapi.UpdSpSetDynamicStringA(00144c68,010f4940 "SystemRoot",001b7108 "C:\windows") ret=01075d51 0023:fixme:updspapi:UpdSpSetDynamicStringA 0x144c68 "SystemRoot" "C:\windows" 0023:Ret updspapi.UpdSpSetDynamicStringA() retval=00000001 ret=01075d51 ... 0023:Call msvcrt._vsnprintf(0033b34b,000007f7,01025754 "ProcessDynamicStrings: all %%%s%% replaced with %s.",0033bb80) ret=010706ea --- snip ---
Setupapi installer log:
--- snip --- 2.734: ProcessDynamicStrings: InstallPathEnvVar for SystemRoot returned C:\windows 2.734: ProcessDynamicStrings: all %SystemRoot% replaced with C:\windows. --- snip ---
At later stage, when the registry section is processed:
--- snip --- 0023:trace:setupapi:SetupFindNextMatchLineW (0x144c68,L"ProductInstall.GlobalRegistryChanges.Install",L"AddReg"): returning 2 0023:trace:setupapi:SetupGetStringFieldW context 0x144c68/0x144c68/10/2 index 1 returning L"PowerShell.Add.Reg" 0023:trace:setupapi:SetupFindFirstLineW (0x144c68,L"PowerShell.Add.Reg",(null)): returning 48/0 0023:trace:setupapi:SetupGetStringFieldW context 0x144c68/0x144c68/48/0 index 1 returning L"HKLM" 0023:trace:setupapi:SetupGetStringFieldW context 0x144c68/0x144c68/48/0 index 2 returning L"SOFTWARE\Microsoft\PowerShell\1\PowerShellEngine" ... 0023:trace:setupapi:SetupGetStringFieldA context 0x144c68/0x144c68/48/0 index 4 returning "0x00000000" 0023:Call advapi32.RegCreateKeyExW(80000002,0033935c L"SOFTWARE\Microsoft\PowerShell\1\PowerShellEngine",00000000,00000000,00000000,02000000,00000000,0033b37c,00000000) ret=688ec641 0023:Ret advapi32.RegCreateKeyExW() retval=00000000 ret=688ec641 0023:trace:setupapi:registry_callback key 0x80000002 L"SOFTWARE\Microsoft\PowerShell\1\PowerShellEngine" 0023:trace:setupapi:SetupGetStringFieldW context 0x144c68/0x144c68/48/0 index 3 returning L"ApplicationBase" ... 0023:trace:setupapi:SetupGetStringFieldW context 0x144c68/0x144c68/48/0 index 5 returning L"%SystemRoot%\system32\WindowsPowerShell\v1.0" 0023:trace:setupapi:do_reg_operation setting value L"ApplicationBase" to L"%SystemRoot%\system32\WindowsPowerShell\v1.0" 0023:Call advapi32.RegSetValueExW(0000006c,0033935c L"ApplicationBase",00000000,00000001,0075d100,0000005a) ret=688ec5be 0023:Ret advapi32.RegSetValueExW() retval=00000000 ret=688ec5be ... 0023:Call advapi32.RegCloseKey(0000006c) ret=688ec6ce 0023:Ret advapi32.RegCloseKey() retval=00000000 ret=688ec6ce
--- snip ---
The string field containing %SystemRoot% token never got the replacement value. Updspapi.dll UpdSpSetDynamicStringA() is a stub and does not have any connection to setupapi, maybe this is the problem. Updspapi seems like an internal/private version of Microsofts setupapi library, distributed with installers/SP installers - not to be installed into OS. Unfortunately setting updspapi to "native", skipping Wine's builtin stub crashes the installer.
BTW ... the PowerShell console/command line stuff really integrates nicely now that Wine has proper console support (wineconsole no longer needed).
Regards
http://bugs.winehq.org/show_bug.cgi?id=25740
Anastasius Focht focht@gmx.net changed:
What |Removed |Added ---------------------------------------------------------------------------- Keywords| |download, Installer URL| |http://www.microsoft.com/do | |wnloads/details.aspx?Family | |Id=60cb5b6c-6532-45e0-ab0f- | |a94ae9ababf5
--- Comment #1 from Anastasius Focht focht@gmx.net 2011-01-09 14:28:21 CST --- Hello,
updated some fields and adding small recipe for fully automated (unattended) install to reproduce (also present in appdb):
--- snip --- $ wget http://kegel.com/wine/winetricks $ sh winetricks -q dotnet30 $ wine reg add 'HKLM\Software\Microsoft\NET Framework Setup\NDP\v2.0.50727' /v SP /t REG_DWORD /d 0001 $ wine WindowsXP-KB968930-x86-ENG.exe /quiet /passive /norestart --- snip ---
Regards
http://bugs.winehq.org/show_bug.cgi?id=25740
--- Comment #2 from Anastasius Focht focht@gmx.net 2012-05-09 16:50:39 CDT --- Hello,
still present.
$ wine --version wine-1.5.3-243-g9c0486d
Regards
http://bugs.winehq.org/show_bug.cgi?id=25740
--- Comment #3 from Anastasius Focht focht@gmx.net 2013-05-01 07:32:50 CDT --- Hello folks,
revisiting, still present.
Prerequisites: clean 32-bit WINEPREFIX + 'winetricks -q dotnet20sp1'
To work around broken libx11 on various distros, prepend "taskset -c 0" (bug 32859) before the command:
--- snip --- $ taskset -c 0 wine ./WindowsXP-KB968930-x86-ENG.exe --- snip ---
$ du -sh WindowsXP-KB968930-x86-ENG.exe 5.9M WindowsXP-KB968930-x86-ENG.exe
$ sha1sum WindowsXP-KB968930-x86-ENG.exe 540d661066953d76a6907b6ee0d1cd4531c1e1c6 WindowsXP-KB968930-x86-ENG.exe
$ wine --version wine-1.5.29-38-g8e4317c
Regards
http://bugs.winehq.org/show_bug.cgi?id=25740
Saulius K. saulius2@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- CC| |saulius2@gmail.com
https://bugs.winehq.org/show_bug.cgi?id=25740
nallekarhu_80@luukku.com changed:
What |Removed |Added ---------------------------------------------------------------------------- CC| |nallekarhu_80@luukku.com
--- Comment #4 from nallekarhu_80@luukku.com --- Still an issue 1.7.47
https://bugs.winehq.org/show_bug.cgi?id=25740
--- Comment #5 from Anastasius Focht focht@gmx.net --- Hello folks,
revisiting, obviously still present.
--- snip --- $ winetricks -q dotnet20sp1
$ taskset -c 0 wine ./WindowsXP-KB968930-x86-ENG.exe /q ... 0052:fixme:userenv:USERENV_138 (23,"Accessories\Windows PowerShell","Windows PowerShell",""%SystemRoot%\system32\WindowsPowerShell\v1.0\powershell.exe"","%SystemRoot%\system32\WindowsPowerShell\v1.0\powershell.exe",0,"%HOMEDRIVE%%HOMEPATH%",0x0,1,"Performs object-based (command-line) functions.","",0) - stub 0052:fixme:userenv:USERENV_138 (23,"Accessories\Windows PowerShell","Windows PowerShell ISE",""%SystemRoot%\system32\WindowsPowerShell\v1.0\powershell_ise.exe"","%SystemRoot%\system32\WindowsPowerShell\v1.0\powershell_ise.exe",0,"%HOMEDRIVE%%HOMEPATH%",0x0,1,"Windows PowerShell Integrated Scripting Environment. Performs object-based (command-line) functions.","",0) - stub --- snip ---
--- snip --- $ wine reg query "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\PowerShell\1\PowerShellEngine"
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\PowerShell\1\PowerShellEngine ApplicationBase REG_SZ %SystemRoot%\system32\WindowsPowerShell\v1.0 ConsoleHostAssemblyName REG_SZ Microsoft.PowerShell.ConsoleHost,Version=1.0.0.0,Culture=neutral,PublicKeyToken=31bf3856ad364e35,ProcessorArchitecture=msil ConsoleHostModuleName REG_SZ "%SystemRoot%\system32\WindowsPowerShell\v1.0\Microsoft.PowerShell.ConsoleHost.dll" PowerShellVersion REG_SZ 2.0 PSCompatibleVersion REG_SZ 1.0,2.0 RuntimeVersion REG_SZ v2.0.50727 --- snip ---
In addition to my previous analysis some technet.microsoft.com article, also showing full paths:
https://social.technet.microsoft.com/Forums/office/en-US/06266215-21c4-4e63-...
$ wine --version wine-3.1
Regards
https://bugs.winehq.org/show_bug.cgi?id=25740
--- Comment #6 from Anastasius Focht focht@gmx.net --- Hello folks,
revisiting, still present.
$ sha1sum WindowsXP-KB968930-x86-ENG.exe 540d661066953d76a6907b6ee0d1cd4531c1e1c6 WindowsXP-KB968930-x86-ENG.exe
$ du -sh WindowsXP-KB968930-x86-ENG.exe 5.9M WindowsXP-KB968930-x86-ENG.exe
$ wine --version wine-4.3-188-gab7756619c
Regards
https://bugs.winehq.org/show_bug.cgi?id=25740
Anton Romanov theli.ua@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- CC| |theli.ua@gmail.com
https://bugs.winehq.org/show_bug.cgi?id=25740
Anastasius Focht focht@gmx.net changed:
What |Removed |Added ---------------------------------------------------------------------------- URL|http://www.microsoft.com/do |https://web.archive.org/web |wnloads/details.aspx?Family |/20191125114835/http://down |Id=60cb5b6c-6532-45e0-ab0f- |load.microsoft.com/download |a94ae9ababf5 |/E/C/E/ECE99583-2003-455D-B | |681-68DB610B44A4/WindowsXP- | |KB968930-x86-ENG.exe
--- Comment #7 from Anastasius Focht focht@gmx.net --- Hello folks,
revisiting, updating download link to stable one:
https://web.archive.org/web/20191125114835/http://download.microsoft.com/dow...
--- snip --- $ rm -rf .wine
# work around "You must use "Turn Windows features on or off" in the Control Panel to install or configure Microsoft .NET Framework 2.0 SP1." $ WINEARCH=win32 winetricks winxp
$ wine .cache/winetricks/dotnet20sp1/NetFx20SP1_x86.exe /q
$ taskset -c 0 wine ./WindowsXP-KB968930-x86-ENG.exe /q --- snip ---
--- snip --- $ pwd /home/focht/.wine/drive_c/windows/system32/WindowsPowerShell/v1.0
$ wine ./powershell.exe ... The following error occurred while loading the extended type data file: Cannot find the path "%SystemRoot%\system32\WindowsPowerShell\v1.0" specified in the registry key: "SOFTWARE\Microsoft\PowerShell\1\ShellIds\Microsoft.PowerShell\Path". Using "C:\windows\assembly\GAC_MSIL\System.Management.Automation\1.0.0.0__31bf3856ad364e35" to load the configuration files. Microsoft.PowerShell.Diagnostics, C:\windows\assembly\GAC_MSIL\System.Management.Automation\1.0.0.0__31bf3856ad364e35%SystemRoot%\system32\WindowsPowerShell\v1.0\GetEvent.types.ps1xml : File not found. Microsoft.PowerShell.Core, C:\windows\assembly\GAC_MSIL\System.Management.Automation\1.0.0.0__31bf3856ad364e35%SystemRoot%\system32\WindowsPowerShell\v1.0\types.ps1xml : File not found. ... --- snip ---
--- snip --- $ wine reg query "HKLM\Software\Microsoft\PowerShell\1\PowerShellEngine"
HKEY_LOCAL_MACHINE\Software\Microsoft\PowerShell\1\PowerShellEngine ApplicationBase REG_SZ %SystemRoot%\system32\WindowsPowerShell\v1.0 ConsoleHostAssemblyName REG_SZ Microsoft.PowerShell.ConsoleHost,Version=1.0.0.0,Culture=neutral,PublicKeyToken=31bf3856ad364e35,ProcessorArchitecture=msil ConsoleHostModuleName REG_SZ "%SystemRoot%\system32\WindowsPowerShell\v1.0\Microsoft.PowerShell.ConsoleHost.dll" PowerShellVersion REG_SZ 2.0 PSCompatibleVersion REG_SZ 1.0,2.0 RuntimeVersion REG_SZ v2.0.50727 --- snip ---
$ wine --version wine-5.0-rc1
Regards
https://bugs.winehq.org/show_bug.cgi?id=25740
Louis Lenders xerox.xerox2000x@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- CC| |xerox.xerox2000x@gmail.com
--- Comment #8 from Louis Lenders xerox.xerox2000x@gmail.com --- Just for info : Also present in https://download.microsoft.com/download/B/D/9/BD9BB1FF-6609-4B10-9334-6D0C58...
That one also contains 64 bit powershell 2.0. Btw The installer fails in the end with a messagebox "Invalid Handle" because it tries to load and close scecli.dll (whatever that maybe). With that copied over the installer finishes fine, but powershell suffers from same problems described in this bugreport
https://bugs.winehq.org/show_bug.cgi?id=25740
Leith Bade leith@bade.nz changed:
What |Removed |Added ---------------------------------------------------------------------------- CC| |leith@bade.nz
--- Comment #9 from Leith Bade leith@bade.nz --- I can confirm this is also the case with PowerShell 1.0 installer
https://www.microsoft.com/en-au/download/details.aspx?id=16000
$ wine --version wine-5.0
https://bugs.winehq.org/show_bug.cgi?id=25740
Anastasius Focht focht@gmx.net changed:
What |Removed |Added ---------------------------------------------------------------------------- Summary|setupapi: registry values |setupapi: registry values |missing %token% replacement |missing %token% replacement |(dynamic strings, updspapi) |(dynamic strings, updspapi) |(Windows PowerShell 2.0) |(Windows PowerShell 1.0, | |2.0)
--- Comment #10 from Anastasius Focht focht@gmx.net --- Hello Leith,
thanks for the information. Yes, there are multiple MS product installers affected, PowerShell being the most prominent one.
Stable link to Windows PowerShell 1.0 English-Language Installation Package for Windows Server 2003 x64 Edition (KB926139) via Internet Archive:
https://web.archive.org/web/20120528222714/http://download.microsoft.com/dow...
---
Windows PowerShell 2.0 English-Language Installation Package for Windows Server 2003 x64 Edition (KB968930) via Internet Archive:
https://web.archive.org/web/20120604201320/http://download.microsoft.com/dow...
Regards
https://bugs.winehq.org/show_bug.cgi?id=25740
--- Comment #11 from Louis Lenders xerox.xerox2000x@gmail.com --- @leith, Just for info, I made a winetricks script some time a ago to get powershell2.0 installed and more or less a bit working to satisfy an application that needed it.
It`s diff is at https://raw.githubusercontent.com/PietJankbal/storage/master/pwsh20.diff or just copy/paste into winetricks.
Regards
https://bugs.winehq.org/show_bug.cgi?id=25740
--- Comment #12 from Leith Bade leith@bade.nz --- @Louis thanks for the tips
I ended up cloning the wine repo and worked on a possible fix to implement the functions (UpdSpSetDynamicStringA/UpdSpSetDynamicStringW). Still got some more work to finish it off, but looks promising.
Does anyone have info on the UpdSpSetDynamicStringExA/UpdSpSetDynamicStringExW variants that are also exported by the updspapi.dll? Quickly looking at it in a disassembler it seems to just forward everything to the non-Ex variant but without more analysis its not clear if that's the only difference.
https://bugs.winehq.org/show_bug.cgi?id=25740
--- Comment #13 from Leith Bade leith@bade.nz --- I also briefly looked at why the native updspapi.dll crashes, it seems like some of the setupapi.dll structures get trashed. I wonder if updspapi.dll makes assumptions on internal structures of setupapi.dll, e.g. tries to directly modify whatever HINT is in real DLL.
It is not clear if updspapi.dll is a complete re-implementation of the SetupAPI or if it just extends it.
https://bugs.winehq.org/show_bug.cgi?id=25740
--- Comment #14 from Leith Bade leith@bade.nz --- Since the Windows XP 32bit and Windows Server 32bit PowerShell 1.0 installers don't seem to be available on microsoft.com any more, I found some links to downloads: http://pub.agrarix.net/Windows/PowerShell/WindowsXP-KB926139-v2-x86-ENU.exe http://www.romico.org/microsoft/PowerShell-WindowsServer2003-KB926139-v2-x86...
Not sure how to preserve these.
https://bugs.winehq.org/show_bug.cgi?id=25740
--- Comment #15 from Leith Bade leith@bade.nz --- Created attachment 66966 --> https://bugs.winehq.org/attachment.cgi?id=66966 Patch to implement UpdSpSetDynamicString
Here is my working patch.
I have tested it against the Powershell 1.0 installers (both XP 32bit and Server 2003 64bit), as well as the Powershell 2.0 installers.
The Powershell 2.0 installer still fails due to the missing scecli.dll on the Server 2003 64bit installer.
https://bugs.winehq.org/show_bug.cgi?id=25740
--- Comment #16 from Anastasius Focht focht@gmx.net --- Hello Leith,
thanks for the work. I've created bug 48993 ("64-bit Powershell 2.0 for Windows 2003 installer fails due to missing 'scecli.dll'") to track the other issue.
Regards
https://bugs.winehq.org/show_bug.cgi?id=25740
Zebediah Figura z.figura12@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- CC| |z.figura12@gmail.com
--- Comment #17 from Zebediah Figura z.figura12@gmail.com --- (In reply to Leith Bade from comment #12)
Does anyone have info on the UpdSpSetDynamicStringExA/UpdSpSetDynamicStringExW variants that are also exported by the updspapi.dll? Quickly looking at it in a disassembler it seems to just forward everything to the non-Ex variant but without more analysis its not clear if that's the only difference.
Disassembling Microsoft components violates Wine's clean room guidelines [1]. We can't accept any code that derives from disassembly or reverse-engineering of Microsoft's DLLs.
[1] https://wiki.winehq.org/Clean_Room_Guidelines
https://bugs.winehq.org/show_bug.cgi?id=25740
--- Comment #18 from Leith Bade leith@bade.nz --- Please accept my apologies Zeb. It was privately highlighted to me yesterday after I posted the patch, but I don't see a way to delete the code. I did not intend to taint Wine and I did not come across the strict rules and guidance until after I finished the patch.
Hopefully there is enough detail now in this bug report for someone else to implement a fix.
https://bugs.winehq.org/show_bug.cgi?id=25740
--- Comment #19 from Austin English austinenglish@gmail.com --- The content of attachment 66966 has been deleted for the following reason:
Violates clean-room guidelines
https://bugs.winehq.org/show_bug.cgi?id=25740
--- Comment #20 from Chebanenko Igor chebanenkoigor93@gmail.com --- Wine 8.21 was released. Any updates?