[Bug 21987] Acrobat 7 tryout installer complains: "This Postscript Driver or Windows Platform (Win9x/Me) not supported" (winspool.drv missing level 8/global default printer settings handling)

WineHQ Bugzilla wine-bugs at winehq.org
Fri Jan 1 10:37:58 CST 2021


https://bugs.winehq.org/show_bug.cgi?id=21987

Anastasius Focht <focht at 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 at gmx.net> ---
Hello folks,

the level 8/2 handling was implemented a while ago.

*
https://source.winehq.org/git/wine.git/commit/c9fdc565e5753bf363943b2b1c88486334b00576
("winspool.drv: Support printer info level 8.")

*
https://source.winehq.org/git/wine.git/commitdiff/7508a5d4b2d5246ea9c19afd734274d12ca4b5bc
("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 at 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-was-unable-to-create-a-new-item-adobe-pdf-port-printer-the-adobe-pdf/td-p/8576733

===

Tidbit: While researching Windows print system architecture I rediscovered:

https://docs.microsoft.com/en-us/openspecs/windows_protocols/ms-rprn/d42db7d5-f141-4466-8f47-0a4be14e2fc1

https://winprotocoldoc.blob.core.windows.net/productionwindowsarchives/MS-RPRN/%5bMS-RPRN%5d.pdf
("[MS-RPRN]: Print System Remote Protocol")

Related:

https://source.winehq.org/git/wine.git/blob/784cb2060ab63076adc349dcb1d15a6cb5eb2bc4:/dlls/winspool.drv/wspool.c#l59

--- 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

-- 
Do not reply to this email, post in Bugzilla using the
above URL to reply.
You are receiving this mail because:
You are watching all bug changes.


More information about the wine-bugs mailing list