从cab压缩包中提取文件等若干

stkane 2003-07-10 05:03:57
1.希望从cab压缩包中提取文件,用vb代码或dos指令实现。Xp下的expand通用性不够,我希望能够在98下也可以运行,写两部分代码也没关系。
2.怎样将一系列文件添加成一个新的cab包?或者将某一个文件添加到一存在的包中?可以实现吗?
3.如何注册dll和ocx(不希望仅仅是使用vb中的引用和部件来实现)?只要将他们复制到windows\system32下就可以了吗?希望能把相关的概念(注册的定义等)一并介绍一下。

(背景)以上问题是我在手动打包程序时遇到的。
...全文
139 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
James0001 2003-07-11
  • 打赏
  • 举报
回复
光是解压的话可以用 SetupIterateCabinet
James0001 2003-07-11
  • 打赏
  • 举报
回复
M$ 有一个 Cab SDK . 里面就有压缩和解压的 DLL , 可以到 MSDN 下载。
不知道用 compress.exe 和 lzexpand.dll 压缩和解压的文件类型是不是 cab .
stkane 2003-07-11
  • 打赏
  • 举报
回复
感谢各位鼎力相助,待测试后给分!!
rainstormmaster 2003-07-10
  • 打赏
  • 举报
回复
2.用CopyLZFile(api函数)试试:

Const OFS_MAXPATHNAME = 128
Const OF_CREATE = &H1000
Const OF_READ = &H0
Const OF_WRITE = &H1
Private Type OFSTRUCT
cBytes As Byte
fFixedDisk As Byte
nErrCode As Integer
Reserved1 As Integer
Reserved2 As Integer
szPathName(OFS_MAXPATHNAME) As Byte
End Type
Private Declare Function CopyLZFile Lib "lz32" (ByVal n1 As Long, ByVal n2 As Long) As Long
Private Declare Function OpenFile Lib "kernel32" (ByVal lpFileName As String, lpReOpenBuff As OFSTRUCT, ByVal wStyle As Long) As Long
Private Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Long) As Long
Private Sub Form_Load()
Dim sFile As String, hDecomp As Long, hResult As Long
Dim OF As OFSTRUCT, sSaveTo As String
'Ask for a file to decompress
sFile = InputBox("Please, enter a file to decompress.")
'Ask for a file to decompress it to
sSaveTo = InputBox("Please, enter a filename to decompress it to.")
'Open the two files
hDecomp = OpenFile(sFile, OF, OF_READ)
hResult = OpenFile(sSaveTo, OF, OF_WRITE Or OF_CREATE)
'decompress the file
CopyLZFile hDecomp, hResult
'Close the two files
CloseHandle hDecomp
CloseHandle hResult
Unload Me
End Sub
rainstormmaster 2003-07-10
  • 打赏
  • 举报
回复
1.
有以下几个办法:
(1)使用Shell直接调用Extract.exe释放Cab文件。
(2)利用vb6stkit.dll中的ExtractFileFromCab函数。该函数可以直接释放Cab中的文件。在Microsoft Visual Studio\VB98\Wizards\PDWizard\Setup1目录中有一个Setup1工程,它实际上就是VB的向导生成的安装盘的源程序,在Setup1.bas中你可以找到ExtractFileFromCab函数的定义和使用的方法。
(3)TheScarms网站有一个CanExplorer的例子(http://www.TheScarms.com/vbasic/CabExplorer.asp),它把SetupIterateCabinet函数封装成一个类,比较好用。
benxie 2003-07-10
  • 打赏
  • 举报
回复
在VB中用SHELL(c:\winnt\system32\regsvr32.exe aaa.dll /s)
online 2003-07-10
  • 打赏
  • 举报
回复
dos下有命令ebd看看
cdknet 2003-07-10
  • 打赏
  • 举报
回复
1.2你可以用一些压缩控件或Activex DLL实现压缩和解压功能,相关的控件和代码都可以从网上下载的
cdknet 2003-07-10
  • 打赏
  • 举报
回复

3,把dll和ocx拷到系统目录后,你建一个bat文件,里面这样写

regsvr32.exe dllfile
……
regsvr32.exe ocxfile
……

运行这个bat文件就可以实现手工注册组件

7,763

社区成员

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

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