The information in this article applies to:
- Standard, Professional, and Enterprise Editions of Microsoft
Visual Basic, 16-bit only, for Windows, version 4.0
SYMPTOMS
During the installation of Visual Basic 4.0, the computer hangs at the
end of the setup while the "Updating System Files" dialog is displayed.
Performing a CTRL+ALT+DELETE usually frees the system and shows a
General Protection Fault in REGOCX16.EXE.
The Visual Basic 4.0 setup installs all of the program files and then
attempts to register the components that need registering. OLE automation
servers and OCX Custom Controls are self-registering. This means that the
function within them that causes the control to write its registration
information to the registry must be called by some other application. The
Visual Basic 4.0 setup program uses the registration utility REGOCX16.EXE
to call the function in the control that performs the registration.
In some cases, other OCX Custom Controls have exhibited the same behavior
as described above.
CAUSE
The problem is not with the REGOCX16.EXE file, as the General Protection
Fault might indicate. Rather, the cause is with the OCX Custom Controls.
The problem appears to a timing issue caused by a combination of the OCX
registration code, the operating system and BIOS/hardware caching
algorithms.
RESOLUTION
Four of the most troublesome controls have been fixed in the maintenance
release of Visual Basic 4.0. Any customer with this problem is eligible for
the upgrade free-of-charge. Contact Visual Basic Technical Support for the
update.
The following controls have been updated:
COMDLG16.OCX
PICCLP16.OCX
MSOUTL16.OCX
DBLIST16.OCX
STATUS
This behavior is by design.
RESOLTION
Procedure for Replacing Regocx16 During Setup
- Obtain the updated registration utility by using the following methods:
a. This file ships with Microsoft Visual C/C++ version 1.52. It is named
REGSVR.EXE. Rename it to REGOCX16.EXE.
b. Contact Visual Basic Support for the file.
NOTE: This file is not really an update. It is simply a different version.
that displays message boxes that seem to suppress the problem.
- Uninstall Visual Basic:
a. Run the Visual Basic Setup and Remove All. This is not always
possible given the nature of the problem.
b. Delete the directory that Visual Basic was installed into.
c. Delete OC25.DLL from the \WINDOWS\SYSTEM directory.
d. Delete all *.OCA and *.OCX files from the \WINDOWS\SYSTEM directory.
- Where applicable, go into the CMOS/BIOS settings and disable all caches.
- Start the Visual Basic 4.0 16-bit installation.
- Replace the REGOCX16.EXE file.
a. The first dialog has a caption that reads "Microsoft Visual Basic
4.0-16-bit Setup". At this time, go to the File Manager. From the
View menu, go to the submenu By File Type... and select Show
Hidden/System Files.
b. Search your hard drives for a subdirectory (it has the hidden
attribute set) named ~mssetup.t. Change to that subdirectory. Look
for another subdirectory named ~msstfqf.t.(you should now be in
c:\~mssetup.t\~msstfqf.t, where c: is one of your hard drives.)
c. From File Manager, select the file REGOCX16.EXE. Go to the
Properties submenu under the File menu. Deselect the read-only
attribute. This allows you to replace the REGOCX16.EXE file.
d. Copy updated REGOCX16.EXE to this location (c:\~mssetup.t\~msstfqf.t,
where c: is one of your hard drives).
e. After replacing REGOCX16.EXE, set the attribute for the new one back
to read-only.
f. Quit File Manager.
- Go back to the installation screen and continue with installation.
Ignore all registration message boxes until the installation is
complete.
NOTE: The above procedure has proven to be ineffective on some machines. If
the procedure fails, follow the steps to make Visual Basic 4.0 function on
the machine. Some of the controls may not register and may not be usable
but the Visual Basic environment and most of the controls will be
completely functional. There are VBX versions of many of the 16-bit OCX
Custom Controls shipped with Visual Basic 3.0. These files can be used in
place of the OCX version of the controls and can be obtained from the
Visual Basic 3.0 CD-ROM or diskettes, or by calling Microsoft Visual Basic
Technical Support.
Registering Visual Basic Manually
- Run the Visual Basic setup until it stops responding.
- Reboot the machine, and start Windows.
- Start the File Manager, and select \SETUP directory on the Visual
Basic CD-ROM.
- Use the EXTRACT.EXE utility to find and decompress the Visual Basic
registration file:
On the File menu, in the Run dialog box, type:
EXTRACT.EXE /A /L C:\WINDOWS\ VB4-1.CAB *.REG,
where C:\WINDOWS\ is the windows directory of the machine, and press
the ENTER key.
- Use REGEDIT.EXE to register the registration files:
On the File menu, in the Run dialog box, type:
REGEDIT.EXE OLE2.REG and press the ENTER key.
Then type REGEDIT.EXE VBxxx.REG, and press the ENTER key,
where xxx is PRO or ENT depending on the version.
- Remove the OCX Custom Control references in the AUTO16LD.VBP.
a. Open the file AUTO16LD.VBP in Notepad in the Visual Basic directory.
b. Delete all lines that begin with "Object=". These are references to
OCX controls that will not be registered.
c. Save the file, and exit Notepad.
- Launch Visual Basic. It should now run properly.
- From the Tools menu, in Custom Controls, add any OCX that you
choose. Do this by using the Browse button and selecting the file.
Visual Basic registers the control and adds it to the project. All of
the controls will be in the \WINDOWS\SYSTEM directory with the extension
*.OCX. One or more of the controls may hang the machine when Visual
Basic attempts to register them. These controls will not be usable, but
Visual Basic should still provide enough functionality and have enough
functioning controls to satisfy most programmers. Some of the supporting
DLL, TLB, and OLB files may not be properly registered. They can be
registered and used in the References dialog in the same manner as the
Custom Controls.
NOTE: The OCX Custom Controls may cause similar problems with installation
disks created using the Setup Wizard or a third-party setup utility.
Register the incorrect controls manually using the REGSVR.EXE utility with
CMOS/BIOS caches disabled (wherever possible).
|