none
Windows 7 64 Bit Visual Foxpro application compatibility

    Question

  • My Visual foxpro 5.0a application can not find support library (VFP500.DLL, VFP5ENU.DLL)installed in C:\Windows\System32 folder of a Windows 7 64 bit client computer.

    I already confirmed that the Path to that folder are open.

    The only way the application can find de support library is copying them to the same folder where de executable reside.

    Thanks for any help.


    Clodoardo Campusano N.
    Tuesday, July 12, 2011 2:58 PM

Answers

  •  

    I can only second dni, installing into the application directory is a recommendable solution.

    Also system32 is not the right place for 32 bit dlls, even though it seems by the name, have a read on this:
    http://en.wikipedia.org/wiki/WoW64#Registry_and_file_system 

    cite "The operating system uses the %SystemRoot%\system32 directory for its 64-bit library and executable files. This is done for backward compatibility reasons, as many legacy applications are hardcoded to use that path. When executing 32-bit applications, WoW64 transparently redirects 32-bit DLLs to %SystemRoot%\SysWOW64, which contains 32-bit libraries and executables."

    This backward compatibility redirect only helps, if the 32bit dlls are really installed into SysWOW64. Eg the vfp runtime as such a legacy application does search in system32, if the runtimes are not found in the same dir as the exe, but windows redirects that to SysWOW64.

    Now if you do an installer, that manages to install the vfp runtimes into system32, as the installer itself is 64bit and not redirected to SysWOW64, you get the mess, the runtime really does end up in system32, but is not found there from your exe.

    Installing the runtime side-by-side in the application also has the advantage, that you can install the exact servicepack version of the runtime dlls and don't interfere with other foxpro applications, which might need another servicepack level of the same dll. Noteice, that different main versions of foxpro have different dll names, eg vfp7r.dll, vfp8r.dll, vfp9r.dll, but different service pack levels have the same dll name! Therefore installing runtimes with the exe really is the cleanest solution anyway to not interfere with any foxpro collegues.

    Bye, Olaf.

     


    Tuesday, July 12, 2011 8:23 PM

All replies

  • So, you found the solution : put them in the same folder...
    dni
    Tuesday, July 12, 2011 3:09 PM
  •  

    I can only second dni, installing into the application directory is a recommendable solution.

    Also system32 is not the right place for 32 bit dlls, even though it seems by the name, have a read on this:
    http://en.wikipedia.org/wiki/WoW64#Registry_and_file_system 

    cite "The operating system uses the %SystemRoot%\system32 directory for its 64-bit library and executable files. This is done for backward compatibility reasons, as many legacy applications are hardcoded to use that path. When executing 32-bit applications, WoW64 transparently redirects 32-bit DLLs to %SystemRoot%\SysWOW64, which contains 32-bit libraries and executables."

    This backward compatibility redirect only helps, if the 32bit dlls are really installed into SysWOW64. Eg the vfp runtime as such a legacy application does search in system32, if the runtimes are not found in the same dir as the exe, but windows redirects that to SysWOW64.

    Now if you do an installer, that manages to install the vfp runtimes into system32, as the installer itself is 64bit and not redirected to SysWOW64, you get the mess, the runtime really does end up in system32, but is not found there from your exe.

    Installing the runtime side-by-side in the application also has the advantage, that you can install the exact servicepack version of the runtime dlls and don't interfere with other foxpro applications, which might need another servicepack level of the same dll. Noteice, that different main versions of foxpro have different dll names, eg vfp7r.dll, vfp8r.dll, vfp9r.dll, but different service pack levels have the same dll name! Therefore installing runtimes with the exe really is the cleanest solution anyway to not interfere with any foxpro collegues.

    Bye, Olaf.

     


    Tuesday, July 12, 2011 8:23 PM
  • That's really true Olaf.  That's the best way to manage the case.

    I am very satisfied with the answer and the fast way I got it from you.

    Thanks all.


    Clodoardo Campusano N.
    Wednesday, July 13, 2011 4:05 PM