esiexc
asked on
How do I create a dependency installer in VB6
Is there a simple way to create an installer that just installs all the dependencies of a VB6 project without installing the actual exe file. Preferably not starting a blank installer project and manually adding every dependency.
SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
ASKER CERTIFIED SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
I've never used the package and deployment wizard, so what I say next may or may not apply.
Make sure when you delete the script line that installs the program itself, that you also remove any lines that reference the exe, add it to the Start menu, make a desktop shortcut, etc.
Make sure when you delete the script line that installs the program itself, that you also remove any lines that reference the exe, add it to the Start menu, make a desktop shortcut, etc.
I would use NSIS to make the setup file.
http://nsis.sourceforge.net/How_to_install_the_VB6_runtimes
This would do the trick
!include Library.nsh
Section "-Install VB6 runtimes"
!insertmacro InstallLib REGDLL $ALREADY_INSTALLED REBOOT_NOTPROTECTED "msvbvm60.dll" "$SYSDIR\msvbvm60.dll" "$SYSDIR"
!insertmacro InstallLib REGDLL $ALREADY_INSTALLED REBOOT_PROTECTED "oleaut32.dll" "$SYSDIR\oleaut32.dll" "$SYSDIR"
!insertmacro InstallLib REGDLL $ALREADY_INSTALLED REBOOT_PROTECTED "olepro32.dll" "$SYSDIR\olepro32.dll" "$SYSDIR"
!insertmacro InstallLib REGDLL $ALREADY_INSTALLED REBOOT_PROTECTED "comcat.dll" "$SYSDIR\comcat.dll" "$SYSDIR"
!insertmacro InstallLib DLL $ALREADY_INSTALLED REBOOT_PROTECTED "asycfilt.dll" "$SYSDIR\asycfilt.dll" "$SYSDIR"
!insertmacro InstallLib TLB $ALREADY_INSTALLED REBOOT_PROTECTED "stdole2.tlb" "$SYSDIR\stdole2.tlb" "$SYSDIR"
SectionEnd
Section "-un.Uninstall VB6 runtimes"
!insertmacro UnInstallLib REGDLL SHARED NOREMOVE "$SYSDIR\msvbvm60.dll"
!insertmacro UnInstallLib REGDLL SHARED NOREMOVE "$SYSDIR\oleaut32.dll"
!insertmacro UnInstallLib REGDLL SHARED NOREMOVE "$SYSDIR\olepro32.dll"
!insertmacro UnInstallLib REGDLL SHARED NOREMOVE "$SYSDIR\comcat.dll"
!insertmacro UnInstallLib DLL SHARED NOREMOVE "$SYSDIR\asycfilt.dll"
!insertmacro UnInstallLib TLB SHARED NOREMOVE "$SYSDIR\stdole2.tlb"
SectionEnd
Just copy yur runtimes to into the same directory as the .nsi script. I would dress the installer as well.
http://nsis.sourceforge.net/How_to_install_the_VB6_runtimes
This would do the trick
!include Library.nsh
Section "-Install VB6 runtimes"
!insertmacro InstallLib REGDLL $ALREADY_INSTALLED REBOOT_NOTPROTECTED "msvbvm60.dll" "$SYSDIR\msvbvm60.dll" "$SYSDIR"
!insertmacro InstallLib REGDLL $ALREADY_INSTALLED REBOOT_PROTECTED "oleaut32.dll" "$SYSDIR\oleaut32.dll" "$SYSDIR"
!insertmacro InstallLib REGDLL $ALREADY_INSTALLED REBOOT_PROTECTED "olepro32.dll" "$SYSDIR\olepro32.dll" "$SYSDIR"
!insertmacro InstallLib REGDLL $ALREADY_INSTALLED REBOOT_PROTECTED "comcat.dll" "$SYSDIR\comcat.dll" "$SYSDIR"
!insertmacro InstallLib DLL $ALREADY_INSTALLED REBOOT_PROTECTED "asycfilt.dll" "$SYSDIR\asycfilt.dll" "$SYSDIR"
!insertmacro InstallLib TLB $ALREADY_INSTALLED REBOOT_PROTECTED "stdole2.tlb" "$SYSDIR\stdole2.tlb" "$SYSDIR"
SectionEnd
Section "-un.Uninstall VB6 runtimes"
!insertmacro UnInstallLib REGDLL SHARED NOREMOVE "$SYSDIR\msvbvm60.dll"
!insertmacro UnInstallLib REGDLL SHARED NOREMOVE "$SYSDIR\oleaut32.dll"
!insertmacro UnInstallLib REGDLL SHARED NOREMOVE "$SYSDIR\olepro32.dll"
!insertmacro UnInstallLib REGDLL SHARED NOREMOVE "$SYSDIR\comcat.dll"
!insertmacro UnInstallLib DLL SHARED NOREMOVE "$SYSDIR\asycfilt.dll"
!insertmacro UnInstallLib TLB SHARED NOREMOVE "$SYSDIR\stdole2.tlb"
SectionEnd
Just copy yur runtimes to into the same directory as the .nsi script. I would dress the installer as well.
MOST Vb6 program only need 1 DLL. in French, it's VB6FR.DLL and it doesn't need to be registered.
that mean most of my App are simply installed with a BATCH file to Copy, 2 files.
The MyProgram.EXE
and the Vb6Fr.Dll in the system32 (wich is easy to locate with a batch file, no matter what OS is installed)
not sure if the file is called Vb6EN.dll in english, but you whould be enable to spot the file in your Vb6 Install Wizzard.
that mean most of my App are simply installed with a BATCH file to Copy, 2 files.
The MyProgram.EXE
and the Vb6Fr.Dll in the system32 (wich is easy to locate with a batch file, no matter what OS is installed)
not sure if the file is called Vb6EN.dll in english, but you whould be enable to spot the file in your Vb6 Install Wizzard.
ASKER
I choose both solutions since I did not specify originally that I was using the vb6 packaging and deployment wizard.
ASKER
I will try and edit the script and see if that works or not and post what I find out.