Tek-Tips is the largest IT community on the Internet today!

Members share and learn making Tek-Tips Forums the best source of peer-reviewed technical information on the Internet!

  • Congratulations strongm on being selected by the Tek-Tips community for having the most helpful posts in the forums last week. Way to Go!

VB 6 written program install problem 1

Status
Not open for further replies.

lilboi

Programmer
Dec 22, 2003
146
CA
Hello guys,

My non-computer savvy partner installed the program i wrote of VB 6 that I packaged using VB's Package and Deployment on a computer. But it didn't install. He tried it on another computer and the same thing.

When i installed it on Win XP computers it worked. I wasn't there to see if those comps are Win XP or not. If it's Win 95/98, is there a reason why it won't install properly?
 
i've seen other threads with the same problem. If I recall, the fix was to compile on a machine with the same operating system. Compiling on XP OS and running on win 98 seems to be the bigest problem. If you can, do a compile on a Win 98 machine, some if I recall were able to get it to work when compiled on a win 2000 machine.
 
It's probably an issue of the components installed. Things like MDAC are tailored to specific OSs and if you must install these you need a smarter installer that includes each flavor and selects the right ones at installation time.

Of course there are API call differences, some shim DLLs and TLBs required for Unicode calls to some APIs on Win9x, etc.

Compiling isn't an issue at all in itself that I'm aware of. The only machine-targeting natively supported has to do with the items you'll find in the Project Properties (see the Compile tab). There's another small tweak if you hook the C2 compiler pass as well. All of these are hardware and not OS tweaks. I compile on XP and install on Win9x all the time.

You might consider looking at the Visual Studio Installer 1.1 kit instead of the P&D Wizard.

Installs on Vista are another story, though P&D setups ought to be sensed and the necessary App Compat shims will be applied. An MSI installer package will work better than a P&D Setup though. Look hard at the software from the link bove.
 
Thanks for the replies guys. I got my partner to check and the operating systems are Windows XP service pack 2.

That just busted the operating system possibility becuz it installs properly on my other win xp computers.

My program does use MDAC.

I have downloaded and installed Visual Studio Installer 1.1

I see how this is a lot more different than P&D Wizard. Which part should I focus on to allow it to install the right files depending on the OS? I see at the bottom of the screen is the "Task List"

Some show:

"One or more files in .... have different versions than those installed in this machine."

and some have

"Neither a merge module nor dependency information could be found for c:\windows\system32\wininet.dll."

Is there anything wrong there? And what does check/unchecking the text box beside it mean?

Thanks!
 
The Visual Studio Installer is a packaging environment for the Windows Installer. It is limited as to what it can do and if you have Visual Studio NET, the Visual Studio NET Installer then this is much better, but also has it's limitations. Anything which you need to do other than the basics it offers needs to be done by editing directly the MSI package it creates, or using scripts.

You need to pay special attention to installing copies of your application over older ones. If you do not follow the exact guidlines for Version updates, or at least uninstall previous versions, you will have multiple entries in the System Settings Software Installed list.

>Which part should I focus on to allow it to install the right files depending on the OS

To start with, investigate the Setup.lst file that was created with your old P&D wizard package. Usually, the P&D did a good job identifying the dependency files, as long as there was dependency information available.

There are Merge Module files (*MSM) from MS (many already on your system, although maybe not the most recent) which are sub Windows Intaller packages. You need to add these (newest version available at the MS site) to your package instead of the individual system files. Using the Merge Modules, you should always use the newest ones.
The Merge Module packages will [usually] instally the files correctly after analyzing the file versions and OS version, whether it should be installed or not, and if so then the installation is done by these Merge Modules. These are the basic files your application may need such as MFC42, msinet,commctl32,commdlg32, MSVBVM60, Flexgrd, etc. All other system files should only be updated by the OS updates!
I do not have any systems included in my packages that are not stored in MSM Merge Modules - just my own or third party dlls/ocxs, and a couple of older MS files, and some of those are even in an MSM package, or I created ones for them.

>"One or more files in .... have different versions than those installed in this machine."

You are adding files to your package from a location
which have different versions than those which are already located in \System32 and/or registered on your machine. In most cases you need to use the newer versions.

>My program does use MDAC.

You should have the MDAC installed seperately - done by the user explicitly so they are aware of the update and can decide whether they want it or not. It is howver possible to create a Merge file or script to install it "correctly", or at least investigate the Version installed, and then stop installation of your application and inform user if the proper version is not installed.
MDAC 2.5 is already installed with the W2000/XP OS
 
I had a similar problem to yours and the best way I found to get around the problem was to strip out all of the non-essential components out of the setup program. Here is a link to the thread I started for it.

thread222-978818

cmahon
 

It is possible to get the P&D to work, if you follow some specific rules, and I actually started writing reasons and an intermediate solution, along with a strong suggestion to change to a better install program as soon as possible.

Then I saw that they are already trying a Windows Installer based packager. I believe it is good to start taking this step at this point if time allows.
 
Thanks so much for all your inputs. Although I tried to understand what u guys told me, my understanding in this thing is currently limited. I, with this forum's help, self taught myself. I have no experience with the installer and hoped that P&D was gonna do everything.

Below is my P&D SETUP.lst can u find out what's wrong?

Code:
[Bootstrap]
SetupTitle=Install
SetupText=Copying Files, please stand by.
CabFile=VirtualSAM.CAB
Spawn=Setup1.exe
Uninstal=st6unst.exe
TmpDir=msftqws.pdw
Cabs=1

[Bootstrap Files]
File1=@VB6STKIT.DLL,$(WinSysPathSysFile),,,7/15/00 12:00:00 AM,101888,6.0.84.50
File2=@COMCAT.DLL,$(WinSysPathSysFile),$(DLLSelfRegister),,5/31/98 12:00:00 AM,22288,4.71.1460.1
File3=@MSVCRT40.DLL,$(WinSysPathSysFile),,,6/1/99 12:00:00 AM,326656,4.22.0.0
File4=@STDOLE2.TLB,$(WinSysPathSysFile),$(TLBRegister),,6/3/99 12:00:00 AM,17920,2.40.4275.1
File5=@ASYCFILT.DLL,$(WinSysPathSysFile),,,3/8/99 12:00:00 AM,147728,2.40.4275.1
File6=@OLEPRO32.DLL,$(WinSysPathSysFile),$(DLLSelfRegister),,3/8/99 12:00:00 AM,164112,5.0.4275.1
File7=@OLEAUT32.DLL,$(WinSysPathSysFile),$(DLLSelfRegister),,4/12/00 12:00:00 AM,598288,2.40.4275.1
File8=@msvbvm60.dll,$(WinSysPathSysFile),$(DLLSelfRegister),,2/23/04 12:00:00 AM,1386496,6.0.97.82

[IconGroups]
Group0=VCCC - Virtual SAM
PrivateGroup0=-1
Parent0=$(Programs)

[VCCC - Virtual SAM]
Icon1=""VirtualSAM.EXE""
Title1=Virtual SAM
StartIn1=$(AppPath)

[Setup]
Title=VCCC - Virtual SAM
DefaultDir=$(ProgramFiles)\Virtual SAM
AppExe=VirtualSAM.exe
AppToUninstall=VirtualSAM.exe

[Setup1 Files]
File1=@VirtualSAM.exe.manifest,$(AppPath),,,2/24/06 3:13:45 PM,765,0.0.0.0
File2=@MDAC_TYP.EXE,$(AppPath),,,6/26/98 12:00:00 AM,8124720,4.71.1015.0
File3=@RDOCURS.DLL,$(WinSysPath),,$(Shared),8/2/00 12:00:00 AM,151552,6.0.88.4
File4=@MSRDO20.DLL,$(WinSysPath),$(DLLSelfRegister),$(Shared),2/23/04 12:00:00 AM,397824,6.1.97.82
File5=@mscomctl.ocx,$(WinSysPath),$(DLLSelfRegister),$(Shared),3/9/04 12:00:00 AM,1081616,6.1.97.82
File6=@MSCOMCT2.OCX,$(WinSysPath),$(DLLSelfRegister),$(Shared),3/9/04 12:00:00 AM,662288,6.1.97.82
File7=@COMDLG32.OCX,$(WinSysPath),$(DLLSelfRegister),$(Shared),3/9/04 12:00:00 AM,152848,6.1.97.82
File8=@MSCAL.OCX,$(WinSysPath),$(DLLSelfRegister),$(Shared),1/14/00 7:07:10 PM,111544,9.0.0.3620
File9=@MSDATLST.OCX,$(WinSysPath),$(DLLSelfRegister),$(Shared),3/9/04 12:00:00 AM,234016,6.0.84.18
File10=@MSSTDFMT.DLL,$(WinSysPath),$(DLLSelfRegister),$(Shared),2/23/04 12:00:00 AM,119808,6.1.97.82
File11=@MSDATGRD.OCX,$(WinSysPath),$(DLLSelfRegister),$(Shared),3/9/04 12:00:00 AM,275216,6.1.97.82
File12=@MSADODC.OCX,$(WinSysPath),$(DLLSelfRegister),$(Shared),3/9/04 12:00:00 AM,131856,6.1.97.82
File13=@MSFLXGRD.OCX,$(WinSysPath),$(DLLSelfRegister),$(Shared),3/9/04 12:00:00 AM,260880,6.1.97.82
File14=@VirtualSAM PW.dll,$(WinSysPath),$(DLLSelfRegister),$(Shared),1/11/07 1:19:54 PM,20480,1.0.0.0
File15=@MSDBRPTR.DLL,$(WinSysPath),$(DLLSelfRegister),$(Shared),2/23/04 12:00:00 AM,322560,6.1.97.82
File16=@MSBIND.DLL,$(WinSysPath),$(DLLSelfRegister),$(Shared),2/23/04 12:00:00 AM,78848,6.1.97.82
File17=@VB5DB.DLL,$(WinSysPath),,$(Shared),6/18/98 12:00:00 AM,78608,5.0.37.24
File18=@MSREPL35.DLL,$(WinSysPathSysFile),,,6/13/00 12:00:00 AM,415504,3.51.2404.0
File19=@MSRD2X35.DLL,$(WinSysPathSysFile),$(DLLSelfRegister),,4/24/98 12:00:00 AM,252176,3.51.623.0
File20=@expsrv.dll,$(WinSysPathSysFile),,,8/4/04 5:00:00 AM,380957,6.0.72.9589
File21=@vbajet32.dll,$(WinSysPathSysFile),,,8/4/04 12:00:00 AM,30749,6.0.1.9431
File22=@MSJINT35.DLL,$(WinSysPathSysFile),,,4/24/98 12:00:00 AM,123664,3.51.623.0
File23=@MSJTER35.DLL,$(WinSysPathSysFile),,,4/24/98 12:00:00 AM,24848,3.51.623.0
File24=@MSJET35.DLL,$(WinSysPathSysFile),$(DLLSelfRegister),,6/13/00 12:00:00 AM,1046288,3.51.2723.0
File25=@DAO350.DLL,$(MSDAOPath),$(DLLSelfRegister),$(Shared),4/27/98 12:00:00 AM,570128,3.51.1608.0
File26=@iphlpapi.dll,$(WinSysPath),,$(Shared),5/19/06 4:59:41 AM,94720,5.1.2600.2912
File27=@wininet.dll,$(WinSysPath),,$(Shared),10/23/06 7:17:53 AM,658944,6.0.2900.3020
File28=@VirtualSAM.exe,$(AppPath),,,1/25/07 12:50:33 PM,819200,1.0.0.0

If i understand all ur inputs correctly, A solution is to not include MDAC component in my installation and to install the MDAC separately. How do I do that? Would it be it's own separate installation file before my program installation? Where can I find a new version of MDAC installation?

In actuality, we're really pressed for time. We were scheduled to install it last week and my partner found out there's something wrong. I'm gonna go in tomorrow and try to install it myself tho I think the only thing I can do is document the error messages.

How do I create a Merge Module? If I understood correctly, I can leave out certain components out of my installation and use a Merge Module to install all the other necessary files?

Thanks for all your patience and help!
 
1. Make sure you have VB 6 SP6 installed on the machine creating the package.

2. It is best to have the client first update to the most recent service pack for their operating system.


If you want to try the P&D again, then the following may help for W2000/XP machine installations (pre-W2000/XP is a different thing):

1 .Try first by removing all of the files listed in the [Bootstrap Files] section, except the first one.

2. Remove the MDAC_TYP.EXE from the package (you can just remove the line in the Setup.lst, but re-number the remaing files - File3 becomes File2, File4 becomes File3, and so forth).
Ship the MDAC_TYP.EXE separately from the P&D (it is somewhere on your machine). Recommend the customer to install it - If they already have this version or newer then the MDAC_TYP.EXE will recognize this.
Or have the customer download it from the MS site:

As a note: Looking at your Setup1.Lst, I see your application uses DAO350 and Jet 3. If you do not use ADO in your project (Check your project references) then your may not need to ship the MDAC 2.7 at all!. The MDAC > 2.1 does not include any DAO350 or Jet 3 components!.

3. Close all opened applications.

4. Test the application after the setup and see if it complains of a file or files missing. If needed, uninstall, add files taken out one by one back in, and try again.
You do not have to recreate a P&D package for this, and can do it directly at the client by just editing the Setup1.lst





>If I understood correctly, I can leave out certain components out of my installation and use a Merge Module to install all the other necessary files?

If you want to start using the Visual Installer, which I recommend for now, as you will find it easy if you follow for a start the below instructions, then:

1. Download the most recent Merge Modules for VB6 SP6:

As I said, you should already have some on your system, so do a search and see if there are any newer/missing ones than from this download.

2. The only loose files to add to your setup are:

File1, File3, File8, File14, Files17 and File26 to File28 (I am not sure if File26 and File27 have merge modules, or even need to be shipped.)

3. There is a separate update installation for Jet3 and for each operating system, which also does not include DAO350. Either add DAO350 to the setup and ship all the Jet 3 updates for each OS, and have the user install these separately, or try these two 3rd-Party Merge Modules for Jet 3 and DAO350:

Look for MSDAO35.zip and MSJET35.zip at this site:
Unpack the Merge Modules inside and include them in your VSI setup.

4. For all the other files, you will find, on your system and from the download, Merge Modules with similar names, so select those and add them to the setup.

5. Make sure the client uninstalls any previous versions of your programm created with the P&D (secure any data storage firstfiles) prior to installing the new one, otherwise the older P&D installation will not be removed from the system.
 


>... and if you have Visual Studio NET, the Visual Studio NET Installer then this is much better, but also has it's limitations.

Just to clarify, also for anyone else reading this: If you do have Visual Studio .NET you can use it's Installer to install VB6 applications, as it is also based on the Windows Installer.
 
Thank for your all your help, especially Sberthold. Today, as I walked in there planning to write down the error codes, I decided to try out the build I made with Visual Basic Installer. I have no idea what I did, all I know was I ticked off MDAC from the task list and set it to build. I decided to install that first before trying to remove files from the Setup.lst and lo and behold, it installed like a whiz!

Me and my partner rewarded ourselves with a breakfast at Wendy's and it didn't have to be the $1.39 super value meal menu anymore!

Thanks so much for all your help! I will play around with this Visual Basic Installer and hopefully be able to digest all your helpful replies!
 
Actually I still got a question.

When you said to remove or not to include certain files, how can I remove it in the Visual Basic Installer?

Do I go to the Project Explorer and remove the MSM by right clicking and selecting remove

or

Do I put a checkmark to strike out the file in the task list at the bottom of Visual Basic Installer?

Becuz while P&D didn't work, when I loaded it into the VB Installer, I only checked the box to strike out the MDAC on the task list and hit build. Then it worked already..
 
You can add and remove fiels in the explorer as you say.
You can also choose the property to not install. The file is the not removed, by ghosted, and will not be included to install - helps when testing.

>Do I put a checkmark to strike out the file in the task list at the bottom of Visual Basic Installer

If everything is done right, you should have anything complaing in the tasklist.

>When you said to remove or not to include certain files...

I meant the files themselves, with-out the mege file wrappers. You should remove those files which are added directly (like comdlg32.dll) add the Merge Files for those system and VB files (like MSCOMDLG.MSM - or what ever it is called), which are separate installer wrappers for each of those files. They handle the installation of those files.
 
Status
Not open for further replies.

Part and Inventory Search

Sponsor

Back
Top