https://bugs.winehq.org/show_bug.cgi?id=21987
Anastasius Focht focht@gmx.net changed:
What |Removed |Added ---------------------------------------------------------------------------- Status|NEW |RESOLVED Resolution|--- |FIXED Component|-unknown |spooler Fixed by SHA1|c9fdc565e5753bf363943b2b1c8 |7508a5d4b2d5246ea9c19afd734 |8486334b00576 |274d12ca4b5bc URL|http://ardownload.adobe.com |https://web.archive.org/web |/pub/adobe/acrobat/win/7x/7 |/20061114115407/http://ardo |.0/misc/AcTR7EFG.exe |wnload.adobe.com/pub/adobe/ | |acrobat/win/7x/7.0/misc/AcT | |R7EFG.exe
--- Comment #19 from Anastasius Focht focht@gmx.net --- Hello folks,
the level 8/2 handling was implemented a while ago.
* https://source.winehq.org/git/wine.git/commit/c9fdc565e5753bf363943b2b1c8848... ("winspool.drv: Support printer info level 8.")
* https://source.winehq.org/git/wine.git/commitdiff/7508a5d4b2d5246ea9c19afd73... ("winspool: Implement SetPrinterW for level 2.").
Part of Wine 1.5.10 release.
Thanks André
Although the error message is still the same, the current problem is much deeper into print system architecture/implementation. I already touched it briefly in comment #9.
Adobe PDF Port/Printer driver installation is taking place in 'CreateAdobePDFPrinter' custom action:
--- snip --- $ WINEDEBUG=+seh,+relay,+msi,+winspool,+reg wine ./setup.exe >>log.txt 2>&1 ... 01b0:trace:msi:ACTION_CustomAction Handling custom action L"CreateAdobePDFPrinter" (c41 L"AdobeIsf" L"SetupAdobePDFPrinter") ... 01b0:trace:msi:HANDLE_CustomType1 Calling function L"SetupAdobePDFPrinter" from L"C:\users\focht\Temp\msi48b7.tmp" ... 02f8:Ret PE DLL (proc=0160618A,module=01600000 L"msi48b7.tmp",reason=PROCESS_ATTACH,res=00000000) retval=1 ... 02f8:Ret KERNEL32.LoadLibraryW() retval=01600000 ret=100210f6 02f8:Call KERNEL32.GetProcAddress(01600000,0016df28 "SetupAdobePDFPrinter") ret=1002110a 02f8:Ret KERNEL32.GetProcAddress() retval=01602bea ret=1002110a ... 02f8:Call winspool.drv.AddPrinterDriverA(00000000,00000003,015edbbc) ret=01601d03 02f8:trace:winspool:AddPrinterDriverA ((null), 3, 0x15edbbc) 02f8:trace:winspool:AddPrinterDriverExA ((null), 3, 0x15edbbc, 0x8) 02f8:Call KERNEL32.MultiByteToWideChar(00000000,00000000,015eeae5 "Adobe PDF Converter",ffffffff,00000000,00000000) ret=7c6dd853 02f8:Ret KERNEL32.MultiByteToWideChar() retval=00000014 ret=7c6dd853 ... 02f8:Call advapi32.RegCreateKeyW(80000002,0018e3c0 L"System\CurrentControlSet\control\Print\Environments\Windows NT x86\Drivers\Version-3",015ece84) ret=01616005 ... 02f8:Call KERNEL32.LoadLibraryW(015ece84 L"C:\windows\system32\spool\drivers\w32x86\3\Ps5ui.dll") ret=0161667f ... 02f8:Ret KERNEL32.LoadLibraryW() retval=00000000 ret=0161667f 02f8:Call KERNEL32.GetProcAddress(00000000,0161b9f0 "DrvDriverEvent") ret=016166eb 02f8:Ret KERNEL32.GetProcAddress() retval=00000000 ret=016166eb ... 02f8:trace:winspool:AddPrinterDriverExA got 1 with 6 ... 02f8:trace:winspool:AddPrinterDriverExA => 1 with 6 02f8:Ret winspool.drv.AddPrinterDriverA() retval=00000001 ret=01601d03 ... 02f8:Call winspool.drv.EnumPrintersA(00000002,00000000,00000002,017b7d98,00001000,015edb70,015edb74) ret=01601e7f 02f8:trace:winspool:EnumPrintersA (0x2, (null), 2, 0x17b7d98, 4096, 0x15edb70, 0x15edb74) ... 02f8:Call advapi32.RegCreateKeyW(80000002,7c6e7360 L"System\CurrentControlSet\Control\Print\Printers",015ed860) ret=7c6d1a89 ... 02f8:trace:winspool:WINSPOOL_EnumPrintersW Found 0 printers ... 02f8:trace:winspool:convert_printerinfo_W_to_A (0x17b7d98, 0x194ae0, 2, 0, 0) ... 02f8:Ret winspool.drv.EnumPrintersA() retval=00000001 ret=01601e7f ... 02f8:Call winspool.drv.AddPrinterA(00000000,00000002,015edb8c) ret=01601e3a 02f8:trace:winspool:AddPrinterA ((null), 2, 0x15edb8c) 02f8:Call ntdll.RtlAllocateHeap(00110000,00000000,00000054) ret=7c6ced8b 02f8:Ret ntdll.RtlAllocateHeap() retval=0017fec8 ret=7c6ced8b 02f8:Call ntdll.RtlCreateUnicodeStringFromAsciiz(015edad8,015edc14 "Adobe PDF") ret=7c6cee3e 02f8:Ret ntdll.RtlCreateUnicodeStringFromAsciiz() retval=0017db01 ret=7c6cee3e 02f8:Call ntdll.RtlCreateUnicodeStringFromAsciiz(015edad8,015eebe5 "My Documents\*.pdf") ret=7c6cee7e 02f8:Ret ntdll.RtlCreateUnicodeStringFromAsciiz() retval=00177301 ret=7c6cee7e 02f8:Call ntdll.RtlCreateUnicodeStringFromAsciiz(015edad8,015eeae5 "Adobe PDF Converter") ret=7c6cee9e 02f8:Ret ntdll.RtlCreateUnicodeStringFromAsciiz() retval=0017ff01 ret=7c6cee9e 02f8:Call ntdll.RtlCreateUnicodeStringFromAsciiz(015edad8,017b7958 "") ret=7c6ceebe 02f8:Ret ntdll.RtlCreateUnicodeStringFromAsciiz() retval=0018ba01 ret=7c6ceebe 02f8:Call ntdll.RtlCreateUnicodeStringFromAsciiz(015edad8,017b7a68 "My Documents") ret=7c6ceede 02f8:Ret ntdll.RtlCreateUnicodeStringFromAsciiz() retval=0016df01 ret=7c6ceede 02f8:Call ntdll.RtlCreateUnicodeStringFromAsciiz(015edad8,015ee764 "WinPrint") ret=7c6cef34 02f8:Ret ntdll.RtlCreateUnicodeStringFromAsciiz() retval=00182901 ret=7c6cef34 02f8:Call ntdll.RtlCreateUnicodeStringFromAsciiz(015edad8,015ee744 "RAW") ret=7c6cef54 02f8:Ret ntdll.RtlCreateUnicodeStringFromAsciiz() retval=00182901 ret=7c6cef54 02f8:trace:winspool:AddPrinterW ((null),2,0x17fec8) ... 02f8:trace:winspool:WINSPOOL_OpenDriverReg ((null)) 02f8:trace:winspool:validate_envW testing (null) ... 02f8:Call advapi32.RegCreateKeyW(000000ec,0017dba0 L"Adobe PDF",015edab0) ret=7c6dca9d ... 02f8:trace:winspool:set_devices_and_printerports (0x17fec8) L"Adobe PDF" ... 02f8:trace:winspool:set_devices_and_printerports using L"wineps.drv,My Documents\*.pdf" ... 02f8:trace:winspool:DocumentPropertiesW ((nil),(nil),L"Adobe PDF",(nil),(nil),0) 02f8:trace:winspool:DocumentPropertiesA ((nil),(nil),Adobe PDF,(nil),(nil),0) ... 02f8:trace:winspool:WINSPOOL_GetDevModeFromReg corrupted registry for L"Default DevMode" ( size 0) ... 02f8:Call winspool.drv.GetPrinterDriverW(00000001,00000000,00000002,00000000,00000000,015ecf60) ret=01cca826 02f8:trace:winspool:GetPrinterDriverW (0x1,(null),2,(nil),0,0x15ecf60) 02f8:trace:winspool:validate_envW testing (null) ... --- snip ---
--- snip --- 01611E15 | or dword ptr ss:[ebp-28],4 01611E19 | cmp word ptr ds:[edi],bx 01611E1C | jne msi7163.1611E27 01611E1E | cmp dword ptr ds:[edi+C],esi 01611E21 | jne msi7163.1611E27 01611E23 | or byte ptr ss:[ebp-27],4 01611E27 | push esi 01611E28 | call dword ptr ds:[&_RtlSetLastWin32Error@4] 01611E2E | lea eax,dword ptr ss:[ebp-5C] 01611E31 | push eax ; pDriverInfo 01611E32 | push 2 ; level 01611E34 | push esi ; "" 01611E35 | call msi7163.1615F64 ; winspool.drv.AddPrinterA 01611E3A | mov ecx,dword ptr ss:[ebp+8] 01611E3D | pop edi 01611E3E | mov dword ptr ds:[ecx+A5C],eax 01611E44 | xor ecx,ecx 01611E46 | cmp eax,esi 01611E48 | pop esi 01611E49 | setne cl 01611E4C | mov eax,ecx 01611E4E | pop ebx 01611E4F | leave 01611E50 | ret 4 --- snip ---
'pDriverInfo'
--- snip --- 015EDBF4 00000000 .... 015EDBF8 015EDC7C |Ü^. ; "Adobe PDF" 015EDBFC 00000000 .... ; pShareName 015EDC00 015EEC4D Mì^. ; pPortName = "My Documents\*.pdf" 015EDC04 015EEB4D Më^. ; pDriverName = "Adobe PDF Converter" 015EDC08 018C7958 Xy.. ; pComment = "" 015EDC0C 018C7A68 hz.. ; pLocation = "My Documents" 015EDC10 00000000 .... ; pDevMode = NULL 015EDC14 00000000 .... ; pSepFile = NULL 015EDC18 015EE7CC Ìç^. ; pPrintProcessor = "WinPrint" 015EDC1C 015EE7AC ¬ç^. ; pDatatype = "RAW" 015EDC20 00000000 .... 015EDC24 00000000 .... 015EDC28 00000004 .... ; Attributes 015EDC2C 00000000 .... 015EDC30 00000000 .... 015EDC34 00000000 .... 015EDC38 00000000 .... 015EDC3C 00000000 .... 015EDC40 00000000 .... 015EDC44 00000000 .... --- snip ---
The private devmode registry data gets added somewhere along the printer driver installation. I don't think it makes sense to continue here, recycling the ticket again.
You could create a follow-up ticket. But there is a caveat: Adobe Acrobat 7.x PDF printer driver installation doesn't even work on modern Windows versions (Vista+) as documented in Adobe KB/Community forums:
https://community.adobe.com/t5/acrobat-sdk/warning-20225-adobe-acrobat7-0-wa...
===
Tidbit: While researching Windows print system architecture I rediscovered:
https://docs.microsoft.com/en-us/openspecs/windows_protocols/ms-rprn/d42db7d...
https://winprotocoldoc.blob.core.windows.net/productionwindowsarchives/MS-RP... ("[MS-RPRN]: Print System Remote Protocol")
Related:
https://source.winehq.org/git/wine.git/blob/784cb2060ab63076adc349dcb1d15a6c...
--- snip --- 59 /****************************************************************************** 60 * load_backend [internal] 61 * 62 * load and init our backend (the local printprovider: "localspl.dll") 63 * 64 * PARAMS 65 * 66 * RETURNS 67 * Success: TRUE 68 * Failure: FALSE and RPC_S_SERVER_UNAVAILABLE 69 * 70 * NOTES 71 * In windows, winspool.drv use RPC to interact with the spooler service 72 * (spoolsv.exe with spoolss.dll) and the spooler router (spoolss.dll) interact 73 * with the correct printprovider (localspl.dll for the local system) 74 * 75 */ --- snip ---
I imagine this could be a candidate for a Google Summer of Code (GSoC) topic.
===
$ sha1sum AcTR7EFG.exe 4f1ff389ea71f21d624083d65bbe5a74e4760079 AcTR7EFG.exe
$ du -sh AcTR7EFG.exe 116M AcTR7EFG.exe
$ wine --version wine-6.0-rc4
Regards