Friday, January 14, 2011

Install Fails, Files Out of Date

The other day I was trying to install the software for a digital oscilloscope and ran into a problem.  The software is written in Visual Basic.  The installer said that "certain files are out of date" and offered to update the files before rebooting the system.  If you answer no, the installer quits.  If you answer yes, the system reboots and when you run the installer again it repeats the "files out of date" message.  There's no way to get past this, but I have found a workaround.  The problem occurs with both the Microsoft and Nullsoft installers, and it happens on Windows 2000 and XP.

How To Fix It

Your installable program will consist of at least a setup program, a CAB file, and a file called SETUP.LST.  SETUP.LST is structured like an INI file so you can open it with a text editor like Notepad.  Don't use a word processor.  If you open SETUP.LST you'll see the file organized into sections that look something like this:

[Bootstrap]
SetupTitle=Install
SetupText=Copying Files, please stand by.
CabFile=app.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=@asycfilt.dll,$(WinSysPathSysFile),,,3/5/10 7:37:40 AM,65536,5.1.2600.5949
File4=@olepro32.dll,$(WinSysPathSysFile),$(DLLSelfRegister),,4/14/08 6:42:04 AM,84992,5.1.2600.5512
File5=@oleaut32.dll,$(WinSysPathSysFile),$(DLLSelfRegister),,4/14/08 6:42:04 AM,551936,5.1.2600.5512
File6=@stdole2.tlb,$(WinSysPathSysFile),$(TLBRegister),,4/13/08 10:12:08 PM,16896,5.1.2600.5512
File7=@msvbvm60.dll,$(WinSysPathSysFile),$(DLLSelfRegister),,4/14/08 6:42:02 AM,1384479,6.0.98.2


The problem is in the [Bootstrap Files] section.  Several of the files in that section are unnecessary.  If you comment them out (by putting a semicolon at the start of the line) your install will proceed without any problems.  You may have to experiment with how many files to comment out but in general you should keep the first two or three files in the list and comment out the rest.  The configuration that worked for me is below.  Your SETUP.LST file will probably be slightly different.

[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=@asycfilt.dll,$(WinSysPathSysFile),,,3/5/10 7:37:40 AM,65536,5.1.2600.5949
;File4=@olepro32.dll,$(WinSysPathSysFile),$(DLLSelfRegister),,4/14/08 6:42:04 AM,84992,5.1.2600.5512
;File5=@oleaut32.dll,$(WinSysPathSysFile),$(DLLSelfRegister),,4/14/08 6:42:04 AM,551936,5.1.2600.5512
;File6=@stdole2.tlb,$(WinSysPathSysFile),$(TLBRegister),,4/13/08 10:12:08 PM,16896,5.1.2600.5512
;File7=@msvbvm60.dll,$(WinSysPathSysFile),$(DLLSelfRegister),,4/14/08 6:42:02 AM,1384479,6.0.98.2

Good luck!