https://bugs.winehq.org/show_bug.cgi?id=35650
Bug ID: 35650 Summary: CA ERWIN Data Modeler r8.2 EULA can't be accepted Product: Wine Version: 1.7.13 Hardware: x86 OS: Linux Status: NEW Severity: normal Priority: P2 Component: -unknown Assignee: wine-bugs@winehq.org Reporter: focht@gmx.net
Hello folks,
split off from bug 29954
Prerequisites: 'winetricks -q dotnet35sp1'
The EULA dialog has scrollable text control and two buttons:
'I disagree' (enabled) 'I agree' (disabled, grayed out)
The EULA text itself is a bit contradicting .. they most likely re-used it in different products with different UI wizards:
--- quote --- By selecting the "I accept the terms of the License Agreement" radio button below, and then clicking on the "Next" button, you are ... ... Click on the "I agree" button to accept the terms and conditions of this Agreement as set forth above and proceed with the installation process otherwise click on the "I disagree" button to cancel the installation process. --- quote ---
Scrolling to the end doesn't enable the 'I agree' button.
$ sha1sum ERwinDM-r823-3355b.exe f46e41b98f94ee30b154aea9ec59e21f2b9825f7 ERwinDM-r823-3355b.exe
$ du -sh ERwinDM-r823-3355b.exe 651M ERwinDM-r823-3355b.exe
$ wine --version wine-1.7.13-27-ge610713
Regards
https://bugs.winehq.org/show_bug.cgi?id=35650
Anastasius Focht focht@gmx.net changed:
What |Removed |Added ---------------------------------------------------------------------------- Keywords| |download, Installer URL| |http://rmdmdownloads.ca.com | |/ERwin/r82ESD/ERwinDM-r823- | |3355b.exe Summary|CA ERWIN Data Modeler r8.2 |CA ERWIN Data Modeler r8.2 |EULA can't be accepted |installer EULA can't be | |accepted
https://bugs.winehq.org/show_bug.cgi?id=35650
Anastasius Focht focht@gmx.net changed:
What |Removed |Added ---------------------------------------------------------------------------- Component|-unknown |richedit Summary|CA ERWIN Data Modeler r8.2 |CA ERWIN Data Modeler r8.2 |installer EULA can't be |installer EULA can't be |accepted |accepted (RichEdit: missing | |notification messages to | |parent for scroll event)
--- Comment #1 from Anastasius Focht focht@gmx.net --- Hello folks,
it seems some msi custom action which in turn calls an InstallShield engine custom action handles the EULA dialog.
ORCA dump:
--- snip --- LaunchEULA 1 DLLWRAP.DLL DLL1 --- snip ---
'DLL_{A949562F-38AC-4D79-B03F-61D31F767BC5}.ini':
--- snip --- Return=[CA_EULA_Agree],NUMBER Module=ERwinISCustomActions.dll Func=ERISDisplayEULA Arg0=in,MsiHandle,NUMBER Silent=No Source=Binary,NewBinary25 [ProductCode] ProductCode={A949562F-38AC-4D79-B03F-61D31F767BC5} --- snip ---
Trace log:
--- snip --- $ WINEDEBUG=+tid,+seh,+relay,+msi wine ./ERwinDM-r823-3355b.exe ... 0025:trace:msi:MSI_EvaluateConditionW 1 <- L"1" 0025:trace:msi:msi_dialog_send_event Sending control event L"DoAction" L"LaunchEULA" ... 0025:trace:msi:dialog_event_handler handling event L"DoAction" 0025:trace:msi:ACTION_PerformAction Performing action (L"LaunchEULA") ... 0025:trace:msi:ACTION_CustomAction Handling custom action L"LaunchEULA" (1 L"DLLWRAP.DLL" L"DLL1") 0025:trace:msi:HANDLE_CustomType1 Calling function L"DLL1" from L"C:\users\focht\Temp\msi5dcf.tmp" ... 002d:Starting thread proc 0x7ece4a32 (arg=0x8bfac4) 002d:trace:msi:DllThread custom action (2d) started ... 002d:trace:msi:ACTION_CallDllFunction calling L"DLL1" ... 002d:Call KERNEL32.LoadLibraryA(00e559e9 "C:\users\focht\Temp\ERwinISCustomActions.dll") ret=0046ace5 ... 002d:Call PE DLL (proc=0xd668f2,module=0xd60000 L"ERwinISCustomActions.dll",reason=PROCESS_ATTACH,res=(nil)) ... 002d:Call KERNEL32.GetProcAddress(00d60000,00e55879 "ERISDisplayEULA") ret=0046ada8 002d:Ret KERNEL32.GetProcAddress() retval=00d622a0 ret=0046ada8 ... 002d:Call KERNEL32.CreateFileW(008bfff8 L"C:\users\focht\Temp\{A949562F-38AC-4D79-B03F-61D31F767BC5}\EULA_en.rtf",80000000,00000000,0137a4bc,00000003,00000080,00000000) ret=78a34f66 002d:Ret KERNEL32.CreateFileW() retval=000000d8 ret=78a34f66 002d:Call KERNEL32.GetFileSize(000000d8,0137a6ec) ret=78a35261 002d:Ret KERNEL32.GetFileSize() retval=0001eba6 ret=78a35261 ... --- snip ---
The InstallShield engine custom action creates a modal dialog with embedded RichEdit control and two buttons (using MFC).
The 'agree' button is disabled on startup and ought to be enabled when the user scrolled to the end of EULA text.
There is not much to see in trace log itself, most of the logic is buried in MFC code. After some debugging I found the problem to be in Wine's RichEdit control ;-) The difference is just a number of MFC calls missing in between.
Workaround: 'winetricks riched20'
--- snip --- ... 002c:trace:win:WIN_CreateWindowEx L"I &agree" L"Button" ex=00000004 style=58010000 494,328 87x33 parent=0x10086 menu=0x2712 inst=0xf70000 params=(nil) 002c:trace:win:dump_window_styles style: WS_CHILD WS_VISIBLE WS_DISABLED WS_TABSTOP 002c:trace:win:dump_window_styles exstyle: WS_EX_NOPARENTNOTIFY 002c:trace:win:WIN_SetWindowLong 0x10092 -12 2712 W 002c:trace:win:GetWindowRect hwnd 0x10092 (1155,683)-(1242,716) 002c:trace:win:invalidate_dce 0x10092 parent 0x10086 (1155,683)-(1242,716) ((661,355)-(661,355)) 002c:trace:win:invalidate_dce 0x8b9620: hwnd 0x10020 dcx 00000013 Cache 002c:trace:win:invalidate_dce 0x146450: hwnd 0x1008a dcx 00000022 Cache 002c:trace:win:GetWindowRect hwnd 0x1008a (837,360)-(1242,669) 002c:trace:win:set_window_pos win 0x10092 surface (nil) -> (nil) 002c:trace:win:WIN_CreateWindowEx hwnd 0x10092 cs 494,328 87x33 ... 002c:CALL mfc90u.2074(00000115,00000008,00000000) ret=78a3e369 002c:trace:msg:WINPROC_CallProcWtoA (hwnd=0x1008a,msg=WM_VSCROLL,wp=00000008,lp=00000000) 002c:CALL mfc90u.321(00f7c3a0) ret=00f75fee 002c:RET mfc90u.321() retval=0a35642c ret=00f75fee 002c:CALL mfc90u.1274(00010086,0000004e,0000271a,0a357138) ret=00f76003 002c:CALL mfc90u.6800(0000004e,0000271a,0a357138) ret=78a3e29a 002c:CALL mfc90u.5512(0000004e,0000271a,0a357138,0a356374) ret=78a3f674 002c:CALL mfc90u.5154(0000271a,0a357138,0a3562d0) ret=78a3f739 002c:CALL mfc90u.4664(0000004e,0000271a,0a357138,0a3562d0) ret=78a4095d 002c:CALL mfc90u.3286() ret=78a6d338 002c:RET mfc90u.3286() retval=789e9278 ret=78a6d338 002c:RET mfc90u.4664() retval=00000000 ret=78a4095d 002c:CALL mfc90u.4682(0000271a,004e0700,0a35629c,00000000) ret=78a3ff85 002c:CALL mfc90u.3685(00000001,0a356208,00000017) ret=00f7145c 002c:CALL mfc90u.3682(00000001) ret=78a404a4 002c:RET mfc90u.3682() retval=00000000 ret=78a404a4 002c:RET mfc90u.3685() retval=00000001 ret=00f7145c 002c:CALL mfc90u.3687(00000001) ret=00f71475 002c:CALL mfc90u.3682(00000001) ret=78a4035b 002c:RET mfc90u.3682() retval=00000000 ret=78a4035b 002c:RET mfc90u.3687() retval=00005550 ret=00f71475 002c:CALL mfc90u.2360(00000001) ret=00f71490 002c:trace:win:EnableWindow ( 0x10092, 1 ) --- snip ---
At the point of receiving SB_ENDSCROLL (user released scrollbar), the button control parent window proc ought to be called through WM_NOTIFY which in turn retrieves scroll info to determine if the scroll bar reached the bottom.
Native sends WM_NOTIFY which allows the parent proc (dialog window) to do further processing (not only limited to WM_VSCROLL case). Without notify messages the code that checks the scroll info (MFC) is never called.
For testing I sent WM_NOTIFY in ME_HandleMessage/WM_VSCROLL case (using ME_FilterEvent helper) and it worked: the button got enabled as soon as the scroll bar reached the bottom, allowing the EULA to be accepted.
Regards
https://bugs.winehq.org/show_bug.cgi?id=35650
--- Comment #2 from Anastasius Focht focht@gmx.net --- Hello folks,
revisiting, still present. Analysis still valid. You can also work around with 'winetricks -q riched20' prior running the installer to have the 'I agree' button enabled after scrolling to the end of EULA.
Download link seems to be broken, but I have a copy in my git-annex for reproduce.
$ sha1sum ERwinDM-r823-3355b.exe f46e41b98f94ee30b154aea9ec59e21f2b9825f7 ERwinDM-r823-3355b.exe
$ wine --version wine-3.13
Regards
https://bugs.winehq.org/show_bug.cgi?id=35650
Anastasius Focht focht@gmx.net changed:
What |Removed |Added ---------------------------------------------------------------------------- Summary|CA ERWIN Data Modeler r8.2 |CA ERWIN Data Modeler |installer EULA can't be |r7.x/8.x installer EULA |accepted (RichEdit: missing |can't be accepted |notification messages to |(RichEdit: missing |parent for scroll event) |notification messages to | |parent for scroll event) URL|http://rmdmdownloads.ca.com |ftp://ftp.ca.com/pub/erwin/ |/ERwin/r82ESD/ERwinDM-r823- |ServicePacks/CAEDM738sp2-b2 |3355b.exe |235a.exe
--- Comment #3 from Anastasius Focht focht@gmx.net --- Hello folks,
revisiting, still present.
I've found some downloads for older versions:
CA ERwin Data Modeler 7.3.8
https://www.mmnt.net/db/0/1/ftp.ca.com/pub/erwin/ServicePacks/
ftp://ftp.ca.com/pub/erwin/ServicePacks/CAEDM738sp2-b2235a.exe
https://web.archive.org/web/20170808063358/https://www.mmnt.net/db/0/1/ftp.c...
Apparently the ftp (mirror) site doesn't allow snapshots :|
$ sha1sum CAEDM738sp2-b2235a.exe due1817a467e453dd19d263fb669917160e94e1a27 CAEDM738sp2-b2235a.exe
$ du -sh CAEDM738sp2-b2235a.exe 423M CAEDM738sp2-b2235a.exe
$ wine --version wine-5.5
Regards
https://bugs.winehq.org/show_bug.cgi?id=35650
--- Comment #4 from Anastasius Focht focht@gmx.net --- Hello folks,
revisiting, still present.
$ wine --version wine-6.0
Regards
https://bugs.winehq.org/show_bug.cgi?id=35650
Anastasius Focht focht@gmx.net changed:
What |Removed |Added ---------------------------------------------------------------------------- URL|ftp://ftp.ca.com/pub/erwin/ |https://archive.org/downloa |ServicePacks/CAEDM738sp2-b2 |d/caedm-731-b-1670/CAEDM731 |235a.exe |-b1670.exe
--- Comment #5 from Anastasius Focht focht@gmx.net --- Hello folks,
I've manually uploaded CA ErWin 7.3 installer to archive.org for reproduce:
https://archive.org/details/caedm-731-b-1670
https://archive.org/download/caedm-731-b-1670/CAEDM731-b1670.exe
Original:
ftp://ftp.ca.com/pub/erwin/PatchReleases/CAEDM731-b1670.exe
Not sure how long it will stay until it gets deleted. archive.org seems to have varying policies with manual uploads (mirror) - even if the original is available for public download.
Unfortunately all the old CA ErWin releases are on FTP site which seems to be immune to snapshotting via Internet Archive.
ftp://ftp.ca.com/pub/erwin/
ftp://ftp.ca.com/pub/erwin/EvalLic/ ftp://ftp.ca.com/pub/erwin/PatchReleases/ ftp://ftp.ca.com/pub/erwin/ServicePacks/
https://en.wikipedia.org/wiki/Erwin_Data_Modeler
$ sha1sum CAEDM731-b1670.exe 6b434543ba3f8f478ef9883eb9dea53b68cc7d70 CAEDM731-b1670.exe
$ du -sh CAEDM731-b1670.exe 402M CAEDM731-b1670.exe
$ wine --version wine-6.2-360-g1649389edca
Regards
https://bugs.winehq.org/show_bug.cgi?id=35650
Huw Davies huw.davies@physics.ox.ac.uk changed:
What |Removed |Added ---------------------------------------------------------------------------- CC| |huw.davies@physics.ox.ac.uk Status|NEW |RESOLVED Resolution|--- |FIXED Fixed by SHA1| |de1398ef3817a8d3424c7834a27 | |519f034939725
--- Comment #6 from Huw Davies huw.davies@physics.ox.ac.uk --- Fixed by adding support for ENM_SCROLLEVENTS
https://bugs.winehq.org/show_bug.cgi?id=35650
Alexandre Julliard julliard@winehq.org changed:
What |Removed |Added ---------------------------------------------------------------------------- Status|RESOLVED |CLOSED
--- Comment #7 from Alexandre Julliard julliard@winehq.org --- Closing bugs fixed in 6.6.