Dragos wrote:
Hello,
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 line 377 We have a different version for all emulated windows versions and at http://members.ozemail.com.au/~geoffch@ozemail.com.au/samples/win32/shell/sh... 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. Any ideeas?
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.
Thanks,
Dragos
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 "." #WINE_FILEVERSION_PLATFORMID
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.