Archive: VB Runtime and Multiple OS installation


VB Runtime and Multiple OS installation
I have a program I wrote in VB6 which requires VB runtime files such as OLEAUT32.DLL however when installed on Windows 98 any programs using InstallShield no longer function due to new dll file version. Should I modify script to check if VB runtime files exist and only copy to Windows system if they don't exist ? The only file that appears to be missing from Windows 98 is msvbvm60.dll which should be in system32 folder. I now this is a common problem but doesn't appear to be a simple solution.


Have you deployed OLEAUT32.DLL from Microsoft's redistributables, or from your own system directory? If you've used the DLL from your own system directory, that's probably the source of the problem.


The runtime files were from my systerm (XP) so I took out all VB runtime files from NSIS script. The program only works in Windows 98 if msvbvm60.dll is in Windows/System32. I have many clients who still have an old OS so I need it compatible to 98, ME, NT,& 2000. I am worried that if I include msvbvm60.dll it may cause problems with other OS which I can't test on.


Never copy any files from your own system folder, these files are only compatible with Windows XP. The OLE files in the VB6 runtimes from Microsoft are only intented to update older Windows version.

NSIS can handle all these things automatically, just copy the code from the documentation and use official Microsoft files as described.


Thanks. Installed vbrun60sp5.exe downloaded from MS on a clean install of Win98 SE. I included script from here into my setup script: http://nsis.sourceforge.net/archive/....php?pageid=47

Do I need to copy all dlls mentioned or can I modify to include only msvbvm60.dll as it appears this dll is the only one my app needs or are they all needed for Windows 95, NT, 2000 etc ?


You should include all of them since that's what Microsoft does. msvcvm60.dll probably depends on the others.


I am sure you are right with dependancies between dlls so I will include all "distributable" VB Runtime files listed.


Tested with "redistributable" runtime files and appears OK. Visual Studio Package & Deployment Wizard included mci32.ocx (multimedia control), msrd2x35.dll (MS Jet ODBC) and vb6stkit.dll (VB Setup Toolkit Library). I understand vb6stkit.dll is possibly not required but I didn't select ODBC in wizard and leaving out all doesn't appear to affect correct running of my app. Should I include some or all the same way as runtime files or just copy to windows system?


I found the best way to make sure you include everything you need is to use the Package & Deployment wizard before using NSIS. This will create a directory with all the dependencies for your project and you can simply add those files to your NSIS installation.

HTH.


If it's a redistributable and is placed in the system directory, it's always a good idea to not just copy it. Your installer might contain an older version than the one on the system, and simply overwriting is not a good idea in such cases. Also, if it requires registration, simply copying it won't do.


Modified script to include MCI32.OCX
and MSRD2X35.DLL which Package & Deployment wizard listed. I have attached script for information. I am not sure about !insertmacro InstallLib REGDLL $ALREADY_INSTALLED REBOOT_NOTPROTECTED whether it should be REBOOT_NOTPROTECTED or REBOOT_PROTECTED.