VB6程序运行错误Run-time error 339: Tabctl32.ocx...

运行错误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了!!!



[截图欣赏]

    下面是我主持开发的拙作的一个典型快照:
12248091_200809281620431.jpg

唉,真是苦尽甘来,这真是个硬道理啊!

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/12248091/viewspace-466205/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/12248091/viewspace-466205/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值