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

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


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

另,测试机是从微软下载的纯净的XP虚拟机,
...全文
251 19 打赏 收藏 转发到动态 举报
写回复
用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



.
内容概要:本文围绕“可再生能源发电与电动汽车的协同调度策略”展开硕士论文级别的研究与复现工作,基于Matlab平台构建了高比例可再生能源接入背景下电力系统与电动汽车(EV)之间的多时间尺度协同优化模型。研究重点在于应对风光发电不确定性,充分利用电动汽车作为移动储能单元的灵活充放电能力(含V2G技术),实现电网削峰填谷、提升新能源消纳效率与系统运行经济性。文中综合考虑了异质电动车集群特性、V2G过程中的损耗约束以及随机因素影响,采用如深度确定性策略梯度(DDPG)强化学习、混合整数线性规划(MILP)等先进优化算法进行求解,并通过基准模型对比验证了所提自适应调度策略在提升电网稳定性、降低运行成本方面的有效性。; 适合人群:具备一定电力系统基础知识、优化理论背景及Matlab编程能力的研究生、科研人员,以及从事新能源并网、智能电网调度、车网互动(V2G)等方向的工程技术人员。; 使用场景及目标:①学习并复现已发表高水平硕士论文中的协同调度建模方法与仿真流程;②掌握将深度强化学习(如DDPG)应用于虚拟电厂、电动汽车集群调度等复杂非线性决策问题的技术路径;③为开展新能源消纳、需求侧响应、微电网优化运行等相关课题的研究提供可复用的代码框架与创新思路参考。; 阅读建议:建议读者结合文中提供的完整Matlab代码与技术文档,深入理解模型构建逻辑、算法实现细节与参数设置依据,优先在Simulink/Matlab环境中运行并调试仿真案例,通过调整场景参数与算法超参,探究不同策略对调度效果的影响,从而深化对协同调度机制与智能优化方法应用的理解。

7,788

社区成员

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

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