运行错误Run-time error 339: Tabctl32.ocx的解决办法
[问题]
最近一段时间与教研室的各位老师在做一个山东省一级OFFICE模拟软件时,前面的开发工作一切顺利,却在后面的安装运行阶段出现了一个似乎有些莫名其妙的错误,完整的错误提示如下:
Run-time error '339':
Component 'Tabcl32.ocx' or one of its dependencies no correctly registered: a fiel is missing or invalid
[简要分析]
乍从字面错误来看,是控件 Tabcl32.ocx有关的问题。我所使用的安装软件是Inno setup,这是个轻量级的安装程序,特别适合于制作共享软件。因为你想开发共享软件的话,如果使用像INSTALL SHIELD这样的大型重量级安装软件(当然功能也更为齐全)的话,自然可能导致版权的问题,特别如果是你想在国外发行你的软件的话。所以,经网友推荐使用了 轻量级的 Inno setup。这个安装软件无论对于VC或是VB,或是DELPHI开发的软件的安装制作都支持得很好,仅是许多操作需要手工进行。正是这一点导致了上述错误。
因为使用VB6开发软件时,VB本身需要各种各样的控件(.OCX),而这些控件在系统安装文件的后期制作过程中自然需要考虑在内,有些是必须由安装程序复制到目标机器的。但是,我们开发的这款软件,没有用到特别的OCX控件,更没有涉及到复杂的第三方控件。怎么会出现上述错误呢?
在学校机房中在所有安装有VB6的XP机器上运行安装软件并实际使用软件没有任何问题。但是,有些老师在没有安装VB6的XP机上 运行安装软件后,在具体进行系统后出现上述错误提示。
[第一次试验]
根据上述错误提示,我在 Inno setup的脚本中添加了如下语句:
[Files]
Source: C:\WINDOWS\system32\tabctl32.ocx; DestDir: {sys}; Flags: regserver restartreplace sharedfile;
结果错误依然如上,???
[第二...N次试验]
无奈之下,只好打开了google。根据老思路,先使用中文GOOGLE,也找到许多类似的疑问,但是都没有理想(或者说是可行的方案)。在无奈之下,只好又进入了英文GOOGLE,输入几乎全部上述错误提示,终于在如下地址找到了一种解决办法:
http://www.vbforums.com/archive/index.php/t-483366.html
于是,我重新修改了在 Inno setup的脚本,并结合自己的系统进一步添加了如下完整的语句:
Source: C:\WINDOWS\system32\richtx32.ocx; DestDir: {sys}; Flags: regserver restartreplace sharedfile;
Source: C:\WINDOWS\system32\comdlg32.ocx; DestDir: {sys}; Flags: regserver restartreplace sharedfile;
Source: C:\WINDOWS\system32\mscomctl.ocx; DestDir: {sys}; Flags: regserver restartreplace sharedfile;
Source: C:\WINDOWS\system32\tabctl32.ocx; DestDir: {sys}; Flags: regserver restartreplace sharedfile;
重新编译上述脚本,生成新的安装文件SETUP.EXE。一切OK了!!!
[截图欣赏]
下面是我主持开发的拙作的一个典型快照:
![bb](http://img.blog.itpub.net/blog/attachments/2008/09/12248091_200809281620431.jpg?x-oss-process=style/bb)
唉,真是苦尽甘来,这真是个硬道理啊!
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/12248091/viewspace-466057/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/12248091/viewspace-466057/