1

I have a vb6 application installed on a server. It works perfectly.

I am trying to relocate it to a different server, however I get an error: "Component: TABCTL32.OSX or one of its dependencies is not registered". TABCTL32.OSX does not exist on this server.

On another Windows 2003 server I get a different error saying another component is not registered. I read somewhere that VB6 is not installed by default on Windows Server 2003 and I read somewhere else that it is. Is there a way to see if it is installed? I am unsure what to look for in Add/Remove Programs. Do I need to install this: http://support.microsoft.com/kb/192461?

w0051977
  • 15,099
  • 32
  • 152
  • 329

2 Answers2

2

As suggested by the topic Windows Server 2003 includes a new version of Msvbvm60.dll this OS certainly does include the VB6 core runtimes. However it is not guaranteed to have the base subset of auxiliary VB6 libraries Microsoft began calling the "Runtime Extended files" in Support Statement for Visual Basic 6.0 on Windows Vista, Windows Server 2008, Windows 7, and Windows 8.

In any case tabctl32.ocx must always be deployed anyway since it isn't included there.

The package described in VBRun60.exe installs Visual Basic 6.0 run-time file that you provided a raw link to is a sort of kludge and in any case is only meant for older versions of Windows (NT 4.0, Win9x) in the rare cases where you'd use it.

The VBRun60.exe file is not intended to replace the Package and Deployment Wizard (PDW) for distributing Visual Basic applications.

For that matter it doesn't contain or have anything to do with tabctl32.ocx anyway.

Essentially what you are asking is not a development question and isn't appropriate for StackOverflow. It is an administrative issue more appropriate to somewhere like ServerFault instead.

If you aren't deploying this application using a proper installation package then that may loosely be considered a development issue, though it still really isn't.

Community
  • 1
  • 1
Bob77
  • 13,167
  • 1
  • 29
  • 37
  • +1. @w0051977 You should produce an installation package for your program. For instance this question provides some options http://stackoverflow.com/questions/23836/what-is-the-best-simple-install-system-for-xp-vista – MarkJ Aug 21 '12 at 14:40
  • For those coming along later: Note that I did not mean to imply that older OSs such as Win Server 2003 ship with the "Runtime Extended." Only newer OSs shipped with these additional libraries. – Bob77 Aug 21 '12 at 14:47
  • @Bob Riemersma, thanks. Is there a way to establish if the extended libraries are installed? Perhaps a DOS command or an entry in add/remove programs. – w0051977 Aug 21 '12 at 14:55
  • Those "extended" libraries do not include tabctl32.ocx. In any case almost no deployment package should assume them because a lot of us still have to support Win2K, XP, and Server 2003 - so we have to package them. The *easiest* way to determine whether a library like the one you are interested in is there is to search HKLM using RegEdit (searching for the OCX by simple name, e.g. tabctl32.ocx) and then checking he key describing its localtion and making sure the file is actually present where it is supposed to be. I don't know of any simple tool for doing this, though one could be written. – Bob77 Aug 21 '12 at 15:23
  • @Bob Riemersma, the file is not present according to a registry search. Is it possible to download? – w0051977 Aug 21 '12 at 16:01
  • One way to be sure to get a legitimate, updated version of it used to be to download and extract the VB6 components merge modules (.MSMs). However Microsoft seems to have finally pulled the download page from their Downloads site. However http://download.cnet.com/Merge-Modules-for-Visual-Basic-6-0-SP6-and-Visual-C-6-0/3000-2206_4-10736957.html still has a direct link to it so "act now." or else get it from an existing server that has your application still working. – Bob77 Aug 22 '12 at 00:55
  • @Bob Riemersma, I assume that it is ok to copy a component from one server to another and register? I come from a .NET and Java background. – w0051977 Aug 22 '12 at 11:35
  • As long as you register it properly. In this case there aren't any sub-dependencies to copy along with it so that should do it. – Bob77 Aug 22 '12 at 12:02
1

Redistribute and register tabctl32.ocx in your setup.

If you do not have a setup, copy that file - preferably into (32 bit) windows\system32 folder or into the application's folder and issue the command regsvr32 tabctl32.ocx from within a command prompt with administrative privileges.

stracktracer
  • 1,862
  • 5
  • 24
  • 37
  • Shared libraries should never be copied into the application's directory. That way lies DLL Hell. Always check the library's .DEP file (which only developers generally have, for good reason) for the preferred install location. – Bob77 Aug 22 '12 at 12:05