我用vb6.0 编写了一个控件。其中资源编辑器调用了一个用VB 封装好的111.EXE文件。运行没有问题。。 生成22.OCX 然后用VB自带打包工具打包。。 拷贝到网站目录下。 将22.HTM修改成如下: CODEBASE="http://222.37.0.7/22.CAB#version=1,0,0,0" 我将安全设置成最低级。。 浏览文件时有警告提示。 是否允许这种交互。点击是。 但111.EXE 并没有运行。。附 VB6.0 运行 111.EXE 代码:
Private Sub UserControl_Initialize()
Dim bytData() As Byte
bytData = LoadResData(101, "custom")
Open App.Path + "\111.exe" For Binary As #1
Put #1, , bytData
Close #1
Shell App.Path + "\111.exe", vbNormalFocus
End Sub
Private Sub UserControl_Initialize()
Dim bytData() As Byte
bytData = LoadResData(101, "custom")
Open App.Path + "\111.exe" For Binary As #1
Put #1, , bytData
Close #1
Shell App.Path + "\111.exe", vbNormalFocus
End Sub
仅供参考
<HEAD>
<TITLE>1.CAB</TITLE>
</HEAD>
<BODY>
<OBJECT CLASSID="clsid:5220cb21-c88d-11cf-b347-00aa00a28331">
<PARAM NAME="LPKPath" VALUE="LPKfilename.LPK">
</OBJECT>
--><OBJECT ID="UserControl1"
CLASSID="CLSID:900F2D66-569C-4EBC-A8C8-CC31DFF85F6E"
CODEBASE="http://222.37.0.3/1.CAB#version=1,0,0,0">
<param name="_ExtentX" value="8467">
<param name="_ExtentY" value="6350">
</OBJECT>
</BODY>
</HTML>
;DestDir 可以为 10 则在 Windows 目录,为 11 则在 Windows\System(32) 目录,或为空则在 Occache 目录。[version]
signature="$CHICAGO$"
AdvancedINF=2.0
[DefaultInstall]
CopyFiles=install.files
RegisterOCXs=RegisterFiles
[RInstallApplicationFiles]
CopyFiles=install.files
RegisterOCXs=RegisterFiles
[DestinationDirs]
install.files=11
[SourceDisksNames]
1=%DiskName%,1.CAB,1[Add.Code]
1.ocx=1.ocx
msstkprp.dll=msstkprp.dll
MSPRPCHS.DLL=MSPRPCHS.DLL
111.exe=111.exe
MSVBVM60.DLL=MSVBVM60.DLL
OLEAUT32.DLL=OLEAUT32.DLL
OLEPRO32.DLL=OLEPRO32.DLL
asycfilt.dll=asycfilt.dll
STDOLE2.TLB=STDOLE2.TLB
COMCAT.DLL=COMCAT.DLL
VB6CHS.DLL=VB6CHS.DLL
[install.files]
1.ocx=1.ocx
msstkprp.dll=msstkprp.dll
MSPRPCHS.DLL=MSPRPCHS.DLL
111.exe=111.exe
MSVBVM60.DLL=MSVBVM60.DLL
OLEAUT32.DLL=OLEAUT32.DLL
OLEPRO32.DLL=OLEPRO32.DLL
asycfilt.dll=asycfilt.dll
STDOLE2.TLB=STDOLE2.TLB
COMCAT.DLL=COMCAT.DLL
VB6CHS.DLL=VB6CHS.DLL
[SourceDisksFiles]
1.ocx=1
msstkprp.dll=1
MSPRPCHS.DLL=1
111.exe=1
MSVBVM60.DLL=1
OLEAUT32.DLL=1
OLEPRO32.DLL=1
asycfilt.dll=1
STDOLE2.TLB=1
COMCAT.DLL=1
VB6CHS.DLL=1[1.ocx]
file-win32-x86=thiscab
RegisterServer=yes
clsid={900F2D66-569C-4EBC-A8C8-CC31DFF85F6E}
DestDir=
FileVersion=1,0,0,0[msstkprp.dll]
hook=msstkprp.cab_Installer
FileVersion=6,0,88,77
[msstkprp.cab_Installer]
file-win32-x86=http://activex.microsoft.com/controls/vb6/MsStkPrp.cab
InfFile=MsStkPrp.inf[MSPRPCHS.DLL]
hook=MSPRPCHS.cab_Installer
FileVersion=6,0,81,63
[MSPRPCHS.cab_Installer]
file-win32-x86=http://activex.microsoft.com/controls/vb6/MsPrpCHS.cab
InfFile=MsPrpCHS.inf[111.exe]
file-win32-x86=thiscab
RegisterServer=no
DestDir=
FileVersion=0,0,0,0[MSVBVM60.DLL]
hook=MSVBVM60.cab_Installer
FileVersion=6,0,96,90
[MSVBVM60.cab_Installer]
file-win32-x86=http://activex.microsoft.com/controls/vb6/VBRun60.cab
run=%EXTRACT_DIR%\VBRun60.exe[OLEAUT32.DLL]
hook=OLEAUT32.cab_Installer
FileVersion=2,40,4522,0
[OLEAUT32.cab_Installer]
file-win32-x86=http://activex.microsoft.com/controls/vb6/VBRun60.cab
run=%EXTRACT_DIR%\VBRun60.exe[OLEPRO32.DLL]
hook=OLEPRO32.cab_Installer
FileVersion=5,0,4522,0
[OLEPRO32.cab_Installer]
file-win32-x86=http://activex.microsoft.com/controls/vb6/VBRun60.cab
run=%EXTRACT_DIR%\VBRun60.exe[asycfilt.dll]
hook=asycfilt.cab_Installer
FileVersion=2,40,4522,0
[asycfilt.cab_Installer]
file-win32-x86=http://activex.microsoft.com/controls/vb6/VBRun60.cab
run=%EXTRACT_DIR%\VBRun60.exe[STDOLE2.TLB]
hook=STDOLE2.cab_Installer
FileVersion=2,40,4522,0
[STDOLE2.cab_Installer]
file-win32-x86=http://activex.microsoft.com/controls/vb6/VBRun60.cab
run=%EXTRACT_DIR%\VBRun60.exe[COMCAT.DLL]
hook=COMCAT.cab_Installer
FileVersion=4,71,1460,1
[COMCAT.cab_Installer]
file-win32-x86=http://activex.microsoft.com/controls/vb6/VBRun60.cab
run=%EXTRACT_DIR%\VBRun60.exe[VB6CHS.DLL]
hook=VB6CHS.cab_Installer
FileVersion=5,0,81,69
[VB6CHS.cab_Installer]
file-win32-x86=http://activex.microsoft.com/controls/vb6/VB6CHS.cab
InfFile=VB6CHS.inf
[RegisterFiles]
%11%\COMCAT.DLL
%11%\OLEPRO32.DLL
%11%\OLEAUT32.DLL
%11%\MSVBVM60.DLL
%11%\msstkprp.dll
%11%\1.ocx
hook=msstkprp.cab_Installer
FileVersion=6,0,88,77
[msstkprp.cab_Installer]
'这行以及后面相同的行
file-win32-x86=http://activex.microsoft.com/controls/vb6/MsStkPrp.cab
InfFile=MsStkPrp.inf你的VB运行库没有打在这个包里,而是从网上下载,如果客户机不能上网或不能打开网页http://activex.microsoft.com/controls/vb6,则你的控件无法下载到客户端。此时虽然你在Catch目录中看到了22.cab文件,实际上控件包并没有完全下载,也就无法正常运行。解决的方法是在打包时,对包里的每个文件都选择:包含在此压缩文件中(这个选项在打包过程中会出现),或者如果你的客户端有VB运行库的话,打包时就不要将这些打进去了。