http://bugs.winehq.org/show_bug.cgi?id=21634
Summary: ACT!2010 installer prereq check fails Product: Wine Version: 1.1.38 Platform: x86 URL: http://experience.act.com/ OS/Version: Linux Status: NEW Keywords: download, Installer Severity: normal Priority: P2 Component: -unknown AssignedTo: wine-bugs@winehq.org ReportedBy: dank@kegel.com
I tested the downloadable trial of ACT!2010. The installer has sha1sum 3ce9033e20c79707d3798195c74cb8e8bd3b5731 ACT! by Sage.exe
It probably needs winetricks dotnet20 first.
It fails with message Prereq.Exceptions.KeyDoesn’tExistException: Exception of Type ‘Prereq.Exceptions.KeyDoestntExistException’ was thrown. at Prereq.AccessINI.GetValue(StringKey, StringValueName) at Prereq.Program.Main(String[] args). http://community.act.com/sage/board/message?board.id=ACT&thread.id=3715 says to check the log file C:\WINDOWS\Temp\ACTInstLog\ActWindows.log That file contains C:\users\Public\Application Data\Microsoft\Protect does not exist. which seems related to the Protected Storage service and lsass.exe, which Wine doesn't have yet.
The app then spews several crash report dialogs.
(The installer continues on anyway, and fails when installing SQL Express, but that's a different problem.)
http://bugs.winehq.org/show_bug.cgi?id=21634
Anastasius Focht focht@gmx.net changed:
What |Removed |Added ---------------------------------------------------------------------------- Keywords| |dotnet URL|http://experience.act.com/ |http://download.act.com/act | |partners/downloads/act2010/ | |software/ACT!%20by%20Sage.e | |xe CC| |focht@gmx.net Summary|ACT!2010 installer prereq |ACT!2010 installer prereq |check fails |check fails | |(Win32_OperatingSystem WMI | |class queried)
--- Comment #1 from Anastasius Focht focht@gmx.net 2010-08-18 13:52:23 --- Hello,
looks like WMI insufficiency and bad app error handling.
The faulting prerequisite tool can be run separately for testing purposes. When the message box appears, copy the whole "C:\users\yourusername\Temp\{some_GUID}" folder where the "prereq.exe" app is located to a different location (gets automatically deleted after dismissing dialog).
Example:
--- snip --- CreateProcessW app (null) cmdline L"C:\users\focht\Temp\{9863B3AD-E61C-46A7-BEFC-33BBEACE435A}\Prereq.exe -ConfigFile="C:\users\focht\Temp\{9863B3AD-E61C-46A7-BEFC-33BBEACE435A}\Plugins\PrereqConfigOne.xml" -mode=s" --- snip ---
You can omit the "-mode=s" (=silent) parameter later.
There is an xml file "PrereqConfigOne.xml" located in "Plugins" subfolder which is used for prerequisite checks:
--- snip --- ... <PrereqTask HostAssembly="PrereqCommon" TypeName="CheckForCPU"> <Severity>3</Severity> <MinimumCPUSpeed>600</MinimumCPUSpeed> <DisplayMessage>The system does not meet the minimum requirement of a 600mhz processor clock speed (note: some processors clock differently).</DisplayMessage> </PrereqTask> <PrereqTask HostAssembly="PrereqCommon" TypeName="CheckForRAM"> <Severity>3</Severity> <MinimumRAM>520000</MinimumRAM> <DisplayMessage>The system does not meet the minimum requirement of 512 MB RAM.</DisplayMessage> </PrereqTask> <PrereqTask HostAssembly="PrereqCommon" TypeName="CheckSQLStatus"> <Severity>3</Severity> <DisplayMessage>TBD</DisplayMessage> </PrereqTask> --- snip ---
The tasks are implemented in "Plugins/PrereqCommon.dll" assembly. The first task "CheckForCPU" is successfully processed because the CPU speed requirement is read from registry:
--- snip --- 000d:Call advapi32.RegOpenKeyExW(80000002,009340b8 L"HARDWARE\DESCRIPTION\System\CentralProcessor\0",00000000,00020019,0032f194) ret=0036a5db 000d:Ret advapi32.RegOpenKeyExW() retval=00000000 ret=0036a5db ... 000d:Call advapi32.RegQueryValueExW(00000204,00933768 L"~MHz",00000000,0032f1c4,0032f1d8,0032f1c8) ret=0036ae3a 000d:Ret advapi32.RegQueryValueExW() retval=00000000 ret=0036ae3a --- snip ---
The gathered info is written into an ini-style output file "Plugins/PrereqConfigOne.log":
--- snip --- [CheckForCPU] Status=Pass Message=User's machine processor speed is:2400 ~MHz --- snip ---
The second task "CheckForRAM" queries the info using WMI, something like this (pseudo code):
--- snip --- long memsize = 0L; SelectQuery query = new SelectQuery("Win32_OperatingSystem"); ManagementObjectSearcher searcher = new ManagementObjectSearcher(query); foreach (ManagementObject mo in searcher.Get()) { memsize = Convert.ToInt64( mo["TotalVisibleMemorySize"]); } if( memsize >= required_size) .... --- snip ---
Due to WMI proxy/subsystem failure, a System.Management.ManagementException is thrown from .NET CLR. The culprit: the code executing at this scope has no local exception handler installed.
The app usually installs exception handlers within each of the data retrieval functions to write "failure" values (ini section with Status=Fail) if an exception was thrown.
Because the app code never anticipates that WMI connects might fail (stupid, this might even occur on Windows), the exception gets passed up and is finally catched at top level.
At top scope the cause for failures is searched by loading and parsing the "Plugins/PrereqConfigOne.log" file. Because an ini-section for "CheckForRAM" was never written (due to bad error handling) the app fails with "Prereq.Exceptions.KeyDoesntExistException".
In short: WMI is needed or this is a no-go.
Maybe I revisit my old WMI stuff and see if it gets further with that (there exist a bug).
Also adding direct download link, bypassing registration crap.
It might be useful to add some "WMI"/"wbemprox" component to Wine bugzilla to target this and future bugs.
Regards
http://bugs.winehq.org/show_bug.cgi?id=21634
Austin English austinenglish@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- Component|-unknown |wmi&wbemprox
http://bugs.winehq.org/show_bug.cgi?id=21634
--- Comment #2 from Dan Kegel dank@kegel.com 2010-09-19 11:23:27 CDT --- Batman: Arkham Asylum demo also seems to wmi to check prerequisites. (You can reproduce without installing .net first.) The installer pops up a MessageBox that says "Your computer fails to meet all of the hardware requirements for Batman: Arkham Asylum.\nYou can continue to install but the game may suffer from poor performance or fail to play." and then another dialog box saying, among other things, Graphics Memory - 0 MB FAIL The log shows trace:module:MODULE_InitDLL (0xa190000 L"BmSysCheckDll.dll",PROCESS_DETACH,(nil)) - CALL WMI: pIWbemLocator->ConnectServer failed: 0x80041001^M GetVideoMemoryViaWMI which is mentioned in the doc for the VideoMemory Sample at http://msdn.microsoft.com/en-us/library/ee419018(v=VS.85).aspx
http://bugs.winehq.org/show_bug.cgi?id=21634
--- Comment #3 from Dan Kegel dank@kegel.com 2010-09-19 11:28:38 CDT --- Is this a dup of 20651?
http://bugs.winehq.org/show_bug.cgi?id=21634
--- Comment #4 from Dan Kegel dank@kegel.com 2010-09-19 11:41:03 CDT --- It looks like wine's wmi is a complete stub, so all wmi bugs are probably dups.
http://bugs.winehq.org/show_bug.cgi?id=21634
Anastasius Focht focht@gmx.net changed:
What |Removed |Added ---------------------------------------------------------------------------- Status|NEW |RESOLVED Resolution| |DUPLICATE
--- Comment #5 from Anastasius Focht focht@gmx.net 2010-09-19 15:00:07 CDT --- Hello,
--- quote --- It looks like wine's wmi is a complete stub, so all wmi bugs are probably dups. --- quote ---
Sure - until infrastructure is in place. Then bugs could be split per WMI class implementation/provider.
Regards
*** This bug has been marked as a duplicate of bug 20651 ***
http://bugs.winehq.org/show_bug.cgi?id=21634
Jeff Zaroyko jeffz@jeffz.name changed:
What |Removed |Added ---------------------------------------------------------------------------- Status|RESOLVED |CLOSED
--- Comment #6 from Jeff Zaroyko jeffz@jeffz.name 2010-09-19 23:16:11 CDT --- Closing duplicate.
https://bugs.winehq.org/show_bug.cgi?id=21634
Anastasius Focht focht@gmx.net changed:
What |Removed |Added ---------------------------------------------------------------------------- URL|http://download.act.com/act |https://web.archive.org/web |partners/downloads/act2010/ |/20160115005846/http://down |software/ACT!%20by%20Sage.e |load.act.com/actpartners/do |xe |wnloads/act2010/software/AC | |T!%20by%20Sage.exe