Shell32 version (DllGetVersion) enhancement ideea
rob at codeweavers.com
Wed May 24 12:28:13 CDT 2006
> I am looking at the MS Office 2k or IE5 installation
>issues on the current wine.
> The main problem I see is that when IE5 is installed
>within the office installer or by itself a message box
>saying:"The spilt of the Windows Desktop Update from
>the IE browser has been completed. You are currently
>running a self-host version of the web shell. Please
>go to http://ie/teams/setup/shdoc401.htm for more
>information..." and so on. This stops Office or IE
>from installing correctly.
> This behaviour is also reported by at least bug 4789
>but not as the main issue.
> This is solved if shell32 is using an older win98
>file version something like 4.72.3110.1.
> The problem as I see it is that we need the
>shell32.dll DllGetVersion to return a win98 version
>for some cases and a 2k for others.
> My question is why shouldn't the code be changed to
>return the version depending on the currently emulated
>version and the process version?
> This way when an app is set to win98 and it runs as a
>win98 it will get a 98 version. When running as 2k and
>emulating 2k it will get a 2k version and so on.
> I have investigated the code and found that by using
>GetProcessVersion and GetVersionExW we can get the
>emulated and process version. I also noticed that a
>similar approach was taken for user.dll with regards
>to treating the edit control differently according
>to the emulated and process version. I am talking
>about get_app_version in wine/dlls/user/edit.c around
> We have a different version for all emulated windows
>versions and at
> we have a a lot of the versions needed provided.
> On another note we can move the dlls/user/edit.c
>get_app_version function to a location available for
>all dlls so we can avoid code duplication and open the
>way for other dlls to implement the same thing if
>needed. I am not sure yet what that place would be.
> I will create a bug report for this issue after
>sending this email. I am planning to post a patch for
>it once the best approach is refined with your help.
> I am very interested in what you all think about
>this so I will appreciate your oppinions. If you have
>a better ideea I am very interested in hearing it.
>P.S. Additional question #1
> What is "/* FIXME: when libs/wpp gets fixed to
>support concatenation we can remove* this and define
>it in version.rc */" refering to?
We'd like to do this instead, but wpp doesn't yet support it:
#define WINE_FILEVERSION #WINE_FILEVERSION_MAJOR "."
#WINE_FILEVERSION_MINOR "." #WINE_FILEVERSION_BUILD "."
>I tried taking out the defines from version.h and
>moving them to version.rc for shell32 getting rid of
>the version.h include, just like other dlls have it in
>ther version.rc(shdocvw for example) compiled it and
>it seemed to work fine. I could make this change also
>while I am changing code arround this same exact spot.
Don't do that. You can't include .rc files from C code.
More information about the wine-devel