Author Topic: @CVS Binary builders  (Read 10368 times)

Offline Revy

  • Multiple posting newcomer
  • *
  • Posts: 18
@CVS Binary builders
« on: November 22, 2005, 09:16:24 am »
Hi,

your binaries do not work under windows98.
Error is: Missing Export Shell32.dll:SHGetFolderPathA

RC02 did run fine on W98.

Greetrings
Revy

Offline thomas

  • Administrator
  • Lives here!
  • *****
  • Posts: 3979
Re: @CVS Binary builders
« Reply #1 on: November 22, 2005, 12:17:05 pm »
If you get that error, then you are using Internet Explorer 4.

SHGetFolderPath works with every reasonable Windows system.
That is anything newer than Windows 98 or Windows 95 and up with Internet Explorer 5 or newer.
"We should forget about small efficiencies, say about 97% of the time: Premature quotation is the root of public humiliation."

Offline Der Meister

  • Regular
  • ***
  • Posts: 307
Re: @CVS Binary builders
« Reply #2 on: November 22, 2005, 12:51:19 pm »
The msdn-page for this function says the following:
Quote
Minimum operating systems
Windows 95 with Internet Explorer 5.0, Windows 98 with Internet Explorer 5.0, Windows 98 Second Edition (SE), Windows NT 4.0 with Internet Explorer 5.0, Windows NT 4.0 with Service Pack 4 (SP4)
That means, it should also work on Win9x if you install the Internet Explorer 5.0 or any newer version (and that should be no problem).
Real Programmers don't comment their code. If it was hard to write, it should be hard to understand.
Real Programmers don't write in BASIC. Actually, no programmers write in BASIC, after the age of 12.

Offline takeshi miya

  • Lives here!
  • ****
  • Posts: 1487
Re: @CVS Binary builders
« Reply #3 on: November 22, 2005, 01:18:26 pm »
All of that is simply not true.

"Now, the MSDN help says that the SHELL32.dll is new enough if you have IE5 or higher, but I just got the discussed error on a machine with Win98SE and IE6 and, lo and behold, the shell32.dll is version 4.72.somethingorother. Which means that programs using SHGetFolderPathA are not guaranteed to run with Win98 and, Win NT.
"

"I've done some checking and found that SHGetFolderPath
is found in shell32.dll under Windows 2000, but under
Windows 98/NT its found in shfolder.dll
"


This seems to be a rather common problem, here's the way Subversion solves it:

"I strongly suggest *not* including shfolder.dll file in your installer.
Instead, bundle its installer (the URL is in INSTALL), and run it if
you're not on Win2k or newer, so that you don't have to implement all
the extra installation magic.

And ask the user first, and show that URL, so that people can decide to
download and install their own copy directly from Microsoft.
"

Here's the message in html to put in the Inno Setup:
http://svn.collab.net/viewcvs/svn/trunk/packages/windows-innosetup/missing_shfolderdll.html?rev=14181&view=markup

Here's the Inno Setup script:
http://svn.collab.net/viewcvs/svn/trunk/packages/windows-innosetup/is_main.pas?view=markup

Here's the Inno Setup file:
http://svn.collab.net/viewcvs/svn/trunk/packages/windows-innosetup/svn.iss?view=markup


Offline Revy

  • Multiple posting newcomer
  • *
  • Posts: 18
Re: @CVS Binary builders
« Reply #4 on: November 22, 2005, 05:52:39 pm »
If you get that error, then you are using Internet Explorer 4.
Do you know Firefox? ;-)

SHGetFolderPath works with every reasonable Windows system.
That is anything newer than Windows 98 or Windows 95 and up with Internet Explorer 5 or newer.

IE4 should not be the problem, because my system is patched with all possible patches for IE6 and has installed IE6 of course.

Also you should have noticed, that I wrote "RC02 did run fine on W98"  :?

Greetings
Revy

Offline Revy

  • Multiple posting newcomer
  • *
  • Posts: 18
Re: @CVS Binary builders
« Reply #5 on: November 22, 2005, 06:01:15 pm »
The msdn-page for this function says the following:
Quote
Minimum operating systems
Windows 95 with Internet Explorer 5.0, Windows 98 with Internet Explorer 5.0, Windows 98 Second Edition (SE), Windows NT 4.0 with Internet Explorer 5.0, Windows NT 4.0 with Service Pack 4 (SP4)
That means, it should also work on Win9x if you install the Internet Explorer 5.0 or any newer version (and that should be no problem).
Quote from: MSDN
Remarks

This function is a superset of SHGetSpecialFolderPath, included with earlier versions of the Shell. On systems preceeding those including Shell32.dll version 5.0 (Windows Millennium Edition (Windows Me) and Windows 2000), SHGetFolderPath was obtained through SHFolder.dll, distributed with Microsoft Internet Explorer 4.0 and later versions. SHFolder.dll always calls the current platform's version of this function. If that fails, it will try to simulate the appropriate behavior. SHFolder.dll continues to be included for backward compatibility, though the function is now implemented in Shell32.dll.

Note  On older systems that require the redistributable SHFolder.dll, you must explicitly link to SHFolder.lib before you link to Shell32.lib.

Means you have to link to SHFolder.lib before Shell32.lib if the binary is also for W98.

Greetings
Revy

Offline thomas

  • Administrator
  • Lives here!
  • *****
  • Posts: 3979
Re: @CVS Binary builders
« Reply #6 on: November 23, 2005, 02:41:38 pm »
Do you know Firefox? ;-)
Yes, but Firefox does not matter at all. What matters is Internet Explorer because it is a part of Windows.
It is of course always a problem to tell what is wrong especially on Windows systems where each and every program you install replaces a couple of dlls without telling you, and even Microsoft does not seem to know what is right sometimes.
All I can say is that two of us test on pristine installs of Windows98 systems with IE6, and it works. Maybe downloading a fresh copy of that dll will fix the problem.

Quote
Also you should have noticed, that I wrote "RC02 did run fine on W98"  :?
Yes indeed, but I ignored that point because it makes no sense. RC2 is the most recent binary release. So what non-working binary release do you refer to, if RC2 is fine?

"We should forget about small efficiencies, say about 97% of the time: Premature quotation is the root of public humiliation."

Offline Urxae

  • Regular
  • ***
  • Posts: 376
Re: @CVS Binary builders
« Reply #7 on: November 23, 2005, 03:49:22 pm »
Quote
Also you should have noticed, that I wrote "RC02 did run fine on W98"  :?
Yes indeed, but I ignored that point because it makes no sense. RC2 is the most recent binary release. So what non-working binary release do you refer to, if RC2 is fine?

Since the topic would seem to indicate this thread is addressed to "CVS Binary builders", I would assume Revy means the latest builds by Ceniza and whoever the other person was that provided CVS binaries. (Sorry, forgot the name)

Offline thomas

  • Administrator
  • Lives here!
  • *****
  • Posts: 3979
Re: @CVS Binary builders
« Reply #8 on: November 23, 2005, 04:56:33 pm »
Ah, that slipped through my sight ;)
"We should forget about small efficiencies, say about 97% of the time: Premature quotation is the root of public humiliation."

Offline Revy

  • Multiple posting newcomer
  • *
  • Posts: 18
Re: @CVS Binary builders
« Reply #9 on: November 23, 2005, 05:37:42 pm »
Ah, that slipped through my sight ;)

thank you trying to help anyway.
pwnd!

Offline Revy

  • Multiple posting newcomer
  • *
  • Posts: 18
Re: @CVS Binary builders
« Reply #10 on: November 23, 2005, 05:45:54 pm »
Do you know Firefox? ;-)
Yes, but Firefox does not matter at all. What matters is Internet Explorer because it is a part of Windows.
It is of course always a problem to tell what is wrong especially on Windows systems where each and every program you install replaces a couple of dlls without telling you, and even Microsoft does not seem to know what is right sometimes.
All I can say is that two of us test on pristine installs of Windows98 systems with IE6, and it works. Maybe downloading a fresh copy of that dll will fix the problem.

I ignore that. ;)
Quote
Also you should have noticed, that I wrote "RC02 did run fine on W98"  :?
Yes indeed, but I ignored that point because it makes no sense. RC2 is the most recent binary release. So what non-working binary release do you refer to, if RC2 is fine?

It does make sense, because it indicates that there is a problem with the cvs builds from Therion and Ceniza.
Sorry if i was a bit unclear about which CVS binaries I meant.

Offline Ceniza

  • Developer
  • Lives here!
  • *****
  • Posts: 1441
    • CenizaSOFT
Re: @CVS Binary builders
« Reply #11 on: November 23, 2005, 06:07:29 pm »
I wonder if that function is needed by the trojans...

Oh, sorry, were you reading?

We'd need to compare the build environments for RC2 and the CVS snapshots. All I can say is I'm using the latest available stuff from MinGW and building wx with MSys.

Just like I said in another post: ~good to see there's a solution for it.

Offline Revy

  • Multiple posting newcomer
  • *
  • Posts: 18
Re: @CVS Binary builders
« Reply #12 on: November 23, 2005, 08:21:43 pm »
I wonder if that function is needed by the trojans...

Oh, sorry, were you reading?
Yes, sorry - what did you say?  :lol:

We'd need to compare the build environments for RC2 and the CVS snapshots. All I can say is I'm using the latest available stuff from MinGW and building wx with MSys.

Just like I said in another post: ~good to see there's a solution for it.

Offline Revy

  • Multiple posting newcomer
  • *
  • Posts: 18
Re: @CVS Binary builders
« Reply #13 on: November 23, 2005, 11:19:01 pm »
Hello again,

i think the problem with SHGetFolderPath can be solved, SHFolder is added to the link libraries of the sdk target.
An alternative and imho better solution would be to change ConfigManager::GetConfigFolder() not to use SHGetFolderPath direct - e.g. change it to something like that:
Code: [Select]
#include <windows.h>
#include <shfolder.h>

PFNSHGETFOLDERPATHA GetFuncPtr_SHGetFolderPathA()
{
   static HMODULE hMod = NULL;
   PFNSHGETFOLDERPATHA pSHGetFolderPath = NULL;

   // Load SHFolder.dll only once
   if (!hMod)
      hMod = LoadLibrary("SHFolder.dll");

   if (hMod)
      // Obtain a pointer to the SHGetFolderPathA function
      pSHGetFolderPath = (PFNSHGETFOLDERPATHA)GetProcAddress(hMod,
         "SHGetFolderPathA");

   return pSHGetFolderPath;
}

The second solution has to be implemented by the devs though.
Solution 1 can be achieved by Therion and Ceniza. :)

Thx and bye
Revy

Offline duncanka

  • Multiple posting newcomer
  • *
  • Posts: 53
Re: @CVS Binary builders
« Reply #14 on: November 29, 2005, 05:58:14 am »
This issue still has not been resolved in any of the latest snapshots as of today. :(  Is any solution in the works?  Unfortunately, I'm stuck on a Win98SE computer, so I'm waiting here with bated breath...