On Sun, Dec 21, 2008 at 11:49 AM, Reece Dunn msclrhd@googlemail.com wrote:
2008/12/21 Damjan Jovanovic damjan.jov@gmail.com:
There are some older applications out there, which don't install or run correctly unless Wine is emulating the correct Windows version (eg. Windows 9x).
At least Windows XP has the ability to use certain heuristics to make an educated guess as to which version of Windows the application expects, and then lie in GetVersion() and behave like that version in relevant APIs.
Should we do something like that for Wine? It would allow many applications to work out of the box.
You can change the version of Windows reported for different applications, and the default version using winecfg -> Applications.
I know, but bugs coming up from the wrong default version aren't always obvious (in my case they were registry keys that don't get created during installation).
I'm not sure that adding heuristics would be the correct approach, as those can lead to incorrect results. The winecfg option supports the user being able to change the version of Windows reported for the specified application. The workflow could be better, though (e.g. supporting an option on an exe's right-click menu).
Heuristics aren't necessarily wrong:
File Header Machine: 014C (i386) Number of Sections: 6 TimeDateStamp: 31104C75 (Thu Feb 1 07:15:33 1996) offset 136
Feb 1 1996 can't be later than Windows 95.
What would be better is to have AppDB keep track of what version of Windows works best with a particular application. This could then be queried on install of the application, or downloaded in bulk. It would be easy to take the data and create a registry file like what winecfg will be saving to. That way, AppDB becomes the place where this is maintained (so it is up to the individual maintainers to set the Windows version if it doesn't work with the default version) and there are no ugly heuristics involved.
The bulk download would only work if you install applications to their default location, but it seems like a good idea.
- Reece
Damjan