用vb做了一个OCX,打包后无法下载安装

majten 2011-05-31 12:23:38
用VB6做了一个OCX,给html页面中使用,用vb6打包工具打包后,又修改了xxx.inf里相应的路径重新打包。
在机器上测试的情况是:降低了浏览器的安全级别,虽然有提示安全警告,但还可以点击“安装”进行安装。
奇怪的是点击了“安装”后好像并没有进行安装,刷新页面后还是这个安全告警提示。搜索windows文件夹后,发现没有我写的那个OCX文件。


请问这是为什么,如何处理?

另,测试机是从微软下载的纯净的XP虚拟机,
...全文
204 19 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
19 条回复
切换为时间正序
请发表友善的回复…
发表回复
simon__sun 2011-05-31
  • 打赏
  • 举报
回复
http://wenku.baidu.com/view/55348421af45b307e8719758.html

看看这个吧
majten 2011-05-31
  • 打赏
  • 举报
回复
[Quote=引用 15 楼 simon__sun 的回复:]
把CAB发上来看看
[/Quote]

下载地址:
http://www.rayfile.com/zh-cn/files/d39a2845-8b35-11e0-aba2-0015c55db73d/
simon__sun 2011-05-31
  • 打赏
  • 举报
回复
把CAB发上来看看
majten 2011-05-31
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 majten 的回复:]
引用 11 楼 simon__sun 的回复:
有可能电脑上有安全软件给你屏弊了 犹其是360这种


测试机上没有装任何安全软件,完全是“裸机”
[/Quote]

是不是必须加入签名才行?
更新了新的classid和versionh还是不行
打包使用vb6里“外接程序”-》“打包和展开向导”做的,在vb里调试可以,但真正发布就不行了,快郁闷死了
toury 2011-05-31
  • 打赏
  • 举报
回复
重新编译一下ocx,改变版本号,然后再试试。如果还是不行,怀疑你的cab安装包没做好

majten 2011-05-31
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 simon__sun 的回复:]
有可能电脑上有安全软件给你屏弊了 犹其是360这种
[/Quote]

测试机上没有装任何安全软件,完全是“裸机”
simon__sun 2011-05-31
  • 打赏
  • 举报
回复
有可能电脑上有安全软件给你屏弊了 犹其是360这种
majten 2011-05-31
  • 打赏
  • 举报
回复

<HTML>
<HEAD>
<TITLE>FTPUpload.CAB</TITLE>
</HEAD>
<BODY>
<!-- 如果这页上的任何控件需要授权,您必须
创建一个授权包文件。 运行 LPK_TOOL.EXE 来创建
要求的 LPK 文件。 LPK_TOOL.EXE 将从 ActiveX SDK 中找到,
http://www.microsoft.com/intdev/sdk/sdk.htm. 如果您有 Visual
Basic 6.0 CD, 您可以在\Tools\LPK_TOOL 目录下找到它。

下面是对象标记的例子:

<OBJECT CLASSID="clsid:5220cb21-c88d-11cf-b347-00aa00a28331">
<PARAM NAME="LPKPath" VALUE="LPKfilename.LPK">
</OBJECT>
-->

<OBJECT ID="FTPUploa_Ui"
CLASSID="CLSID:57A99F0F-712D-4B0C-AD80-134AFD64D528"
CODEBASE="http://192.168.254.116:806/FTPUpload.CAB#version=1,0,0,0,">
</OBJECT>
</BODY>
</HTML>



上面代码测试过了,还是老样子。


代码中的guid、version应该是对的,没有手动该工,并且与 ftpupload.inf里的信息一致

[FTPUpload.ocx]
file-win32-x86=thiscab
RegisterServer=yes
clsid={57A99F0F-712D-4B0C-AD80-134AFD64D528}
DestDir=11
FileVersion=1,0,0,0
simon__sun 2011-05-31
  • 打赏
  • 举报
回复
可以让控件变成安全控件方法 不知道现在还好用不
添加一模块:basSafeCtl 内容:
 Option Explicit

Public Const IID_IDispatch = "{00020400-0000-0000-C000-000000000046}"
Public Const IID_IPersistStorage = _
"{0000010A-0000-0000-C000-000000000046}"
Public Const IID_IPersistStream = _
"{00000109-0000-0000-C000-000000000046}"
Public Const IID_IPersistPropertyBag = _
"{37D84F60-42CB-11CE-8135-00AA004BB851}"

Public Const INTERFACESAFE_FOR_UNTRUSTED_CALLER = &H1
Public Const INTERFACESAFE_FOR_UNTRUSTED_DATA = &H2
Public Const E_NOINTERFACE = &H80004002
Public Const E_FAIL = &H80004005
Public Const MAX_GUIDLEN = 40

Public Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" _
(pDest As Any, pSource As Any, ByVal ByteLen As Long)
Public Declare Function StringFromGUID2 Lib "ole32.dll" (rguid As _
Any, ByVal lpstrClsId As Long, ByVal cbMax As Integer) As Long

Public Type udtGUID
Data1 As Long
Data2 As Integer
Data3 As Integer
Data4(7) As Byte
End Type

Public m_fSafeForScripting As Boolean
Public m_fSafeForInitializing As Boolean

Sub Main()
m_fSafeForScripting = True
m_fSafeForInitializing = True
End Sub


在控件代码窗加入下面内容:
Private Sub IObjectSafety_GetInterfaceSafetyOptions(ByVal riid As _
Long, pdwSupportedOptions As Long, pdwEnabledOptions As Long)

Dim Rc As Long
Dim rClsId As udtGUID
Dim IID As String
Dim bIID() As Byte

pdwSupportedOptions = INTERFACESAFE_FOR_UNTRUSTED_CALLER Or _
INTERFACESAFE_FOR_UNTRUSTED_DATA

If (riid <> 0) Then
CopyMemory rClsId, ByVal riid, Len(rClsId)

bIID = String$(MAX_GUIDLEN, 0)
Rc = StringFromGUID2(rClsId, VarPtr(bIID(0)), MAX_GUIDLEN)
Rc = InStr(1, bIID, vbNullChar) - 1
IID = Left$(UCase(bIID), Rc)

Select Case IID
Case IID_IDispatch
pdwEnabledOptions = IIf(m_fSafeForScripting, _
INTERFACESAFE_FOR_UNTRUSTED_CALLER, 0)
Exit Sub
Case IID_IPersistStorage, IID_IPersistStream, _
IID_IPersistPropertyBag
pdwEnabledOptions = IIf(m_fSafeForInitializing, _
INTERFACESAFE_FOR_UNTRUSTED_DATA, 0)
Exit Sub
Case Else
Err.Raise E_NOINTERFACE
Exit Sub
End Select
End If
End Sub

Private Sub IObjectSafety_SetInterfaceSafetyOptions(ByVal riid As _
Long, ByVal dwOptionsSetMask As Long, ByVal dwEnabledOptions As Long)
Dim Rc As Long
Dim rClsId As udtGUID
Dim IID As String
Dim bIID() As Byte

If (riid <> 0) Then
CopyMemory rClsId, ByVal riid, Len(rClsId)

bIID = String$(MAX_GUIDLEN, 0)
Rc = StringFromGUID2(rClsId, VarPtr(bIID(0)), MAX_GUIDLEN)
Rc = InStr(1, bIID, vbNullChar) - 1
IID = Left$(UCase(bIID), Rc)

Select Case IID
Case IID_IDispatch
If ((dwEnabledOptions And dwOptionsSetMask) <> _
INTERFACESAFE_FOR_UNTRUSTED_CALLER) Then
Err.Raise E_FAIL
Exit Sub
Else
If Not m_fSafeForScripting Then
Err.Raise E_FAIL
End If
Exit Sub
End If

Case IID_IPersistStorage, IID_IPersistStream, _
IID_IPersistPropertyBag
If ((dwEnabledOptions And dwOptionsSetMask) <> _
INTERFACESAFE_FOR_UNTRUSTED_DATA) Then
Err.Raise E_FAIL
Exit Sub
Else
If Not m_fSafeForInitializing Then
Err.Raise E_FAIL
End If
Exit Sub
End If

Case Else
Err.Raise E_NOINTERFACE
Exit Sub
End Select
End If
End Sub

toury 2011-05-31
  • 打赏
  • 举报
回复
<OBJECT ID="FTPUploa_Ui"
CLASSID="CLSID:57A99F0F-712D-4B0C-AD80-134AFD64D528" //确保该值正确
CODEBASE="FTPUpload.CAB#version=1,0,0,0">
//试试全路径:http://.........../FTPUpload.CAB#Version=1,0,0,0"
//Version=1,0,0,0" //版本对吗?
//还是不行的话,试试:#version=1,0,0,0,<--------加个逗号
</OBJECT>
majten 2011-05-31
  • 打赏
  • 举报
回复

<HTML>
<HEAD>
<TITLE>FTPUpload.CAB</TITLE>
</HEAD>
<BODY>
<!-- 如果这页上的任何控件需要授权,您必须
创建一个授权包文件。 运行 LPK_TOOL.EXE 来创建
要求的 LPK 文件。 LPK_TOOL.EXE 将从 ActiveX SDK 中找到,
http://www.microsoft.com/intdev/sdk/sdk.htm. 如果您有 Visual
Basic 6.0 CD, 您可以在\Tools\LPK_TOOL 目录下找到它。

下面是对象标记的例子:

<OBJECT CLASSID="clsid:5220cb21-c88d-11cf-b347-00aa00a28331">
<PARAM NAME="LPKPath" VALUE="LPKfilename.LPK">
</OBJECT>
-->

<OBJECT ID="FTPUploa_Ui"
CLASSID="CLSID:57A99F0F-712D-4B0C-AD80-134AFD64D528"
CODEBASE="FTPUpload.CAB#version=1,0,0,0">
</OBJECT>
</BODY>
</HTML>



FTPUpload.CAB 和 这个html是在同个目录下。
toury 2011-05-31
  • 打赏
  • 举报
回复
晒html源码。你怎么引用这个OCX?
majten 2011-05-31
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 luofenghen 的回复:]
绝对路径 和相对路径的问题
/和没有/ 测试下吧
[/Quote]
测试过了,加和不加"/"没有变化,最后写成 http://10.1.1.10/test.cab 也不行(这个地址存在)



Quote=引用 3 楼 asftrhgjhkjlkttttttt 的回复:]
客户机的IE属性>安全>可信站点>站点里将服务器的ip地址输入,自定义级别里将所有含activex的选项设为 启用
另外OCX控件最好打包成Internet应用,包为.cab后缀的即可.
[/Quote]

按照以上步骤测试,还是老样子,弹出警告提示后有“安装”和“不安装”的按钮,但点击了“安装”后没有什么变化,OCX没有被安装到机器上,刷新后又出现了这个告警提示
孤独剑_LPZ 2011-05-31
  • 打赏
  • 举报
回复
客户机的IE属性>安全>可信站点>站点里将服务器的ip地址输入,自定义级别里将所有含activex的选项设为 启用
另外OCX控件最好打包成Internet应用,包为.cab后缀的即可.
luofenghen 2011-05-31
  • 打赏
  • 举报
回复
绝对路径 和相对路径的问题
/和没有/ 测试下吧
咸清 2011-05-31
  • 打赏
  • 举报
回复
我猜是客户端没有找到相关路径
zhmvb 2011-05-31
  • 打赏
  • 举报
回复
搞定了,原来是文件太多了,可能是打包时候的文件和目标机器上的文件有重复,在打包的时候只选择必须的几个文件,吧多余的文件去掉就可以了。
zhmvb 2011-05-31
  • 打赏
  • 举报
回复
up



.
1.动画及多媒体播放类 anigif6.ocx 动画播放gif文件控件 gif89.dll 又一个播放gif文件的动态链接库 gifPlayer.ocx一个播放gif文件控件 flash.ocx 能播放flash动画文件 Digital.ocx 数码显示数字、时间,挺漂亮 MovingChar.ocx 循环移动的字幕 wmp.ocx 提供的ActiveX控件制作媒体播放器 2.界面元素类 2.1.窗口类 asBubbleForm.ocx 显示图片信息提示的窗体控件,外形似帮助提示,弹出气泡式对话框 2.2.分隔条类 splitbar.ocx 窗口分割控件 2.3.工具条类 vbalExpBar6.ocx 不明,没用过 2.4.按钮类 CurtButton.ocx CurtButton 多风格按钮控件 JwldButn2b.ocx 漂亮的VB按钮,可以随意改变按钮表面和按下去时的边框颜色 SmartXpButton.ocx 一个VC开发的美观的XP按钮播放activeX控件 2.5.选项卡类 tabctl32.ocx 圆角选项卡控件 prjXTab.ocx 又是一款圆角选项卡控件,类似tabctl32.ocx 2.6.列表框类 SBLIST.OCX 界面很酷的列表框控件 vbalIml6.ocx 类似ImageList的图象控件 2.7.菜单类 asAssistantPopup.ocx 弹出管理菜单 2.8.皮肤类 YFSkins.ocx 非常美观的皮肤控件 VBOCX.OCX 允许你的应用程序的标题栏颜色为任意渐变色 3.系统类 asctrls.ocx 系统控件,用来安装active控件的,一般用不着 dmview.ocx 磁盘管理控件 fldrvw71.ocx 目录查看、选择、也可以显示文件,功能很强,但可能需要注册 proctexe.ocx Intel 程序纹理,进程信息查询 shlobj71.ocx 以系统默认的正常形式打开程序 sysmon.ocx 系统性能监视的ActiveX控件 Wxini.ocx 好象是读取ini文件的,没用过 4.内置类(VB或Windows系统自带的) combobox.ocx 下拉选择控件 comct232.ocx Animation1动画和UpDown comctl32.ocx 包含toolbar、treeview、listview、imagelist等(5.0) comdlg32.ocx 对话框 dbgrid32.ocx vb5的数据网格控件 dblist32.ocx vb5的数据列表控件 hhctrl.ocx Microsoft帮助文档界面相关文件 msdxm.ocx 媒体播放 msflxgrd.ocx 数据网格控件 mshflxgd.ocx 数据网格控件,是对msflxgrd.ocx的升级 msscript.ocx ScriptControl控件 mswinsck.ocx 网络通讯控件 richtx32.ocx 富文本框控件,增强文本数据显示 wshom.ocx 是Windows本地脚本对象运行时相关文件 5.未归类 MoveLabel.ocx 不明,没用过 LeftMenu.ocx 不明,没用过 daxctle.ocx 不明,没用过 chklsb26.ocx 好象超级兔子软件用到 ?gktube.ocx 孤独剑漏掉了 ?NewCombo.ocx 孤独剑漏掉了 tdc.ocx 相关表列数据ActiveX控件,没用过

7,785

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧