【问题标题】:Extracting ZIP file to absolute path将 ZIP 文件提取到绝对路径
【发布时间】:2020-09-04 11:08:12
【问题描述】:

我正在尝试创建一个 VBS 文件,该文件可以将 ZIP 文件的内容从相对路径提取到绝对文件路径目标。我试图创建这个 VBS 文件的原因是因为我的总体目标是通过 iExpress 创建一个 EXE 文件,它将一堆代码复制到用户的计算机并同时安装 nodeJS。

我对采用这种方法的想法是创建一个批处理脚本,将代码目录复制到用户计算机上的设定位置,然后执行一个 MSI 文件来安装 nodeJS。我已经能够得到一个可以做到这一点的批处理脚本,但现在我想把它很好地打包成一个 EXE。为此,我认为我需要将代码目录放入 ZIP 文件中,以便将其添加到 EXE 文件中,然后我的 EXE 需要一些功能来提取它。

要添加此功能,我的研究似乎表明 VBS 是最好的选择(特别是考虑到我还希望补偿对 PowerShell cmdlet 的访问受限的用户)。搜索似乎表明这种类型的文件是为了我想要做的。

ZipFile="test.zip"
ExtractTo="C:\test-install\test"
 
Set fso = CreateObject("Scripting.FileSystemObject")
sourceFile = fso.GetAbsolutePathName(ZipFile)
destFolder = fso.GetFolder(ExtractTo)
 
Set objShell = CreateObject("Shell.Application")
Set FilesInZip=objShell.NameSpace(sourceFile).Items()
objShell.NameSpace(destFolder).copyHere FilesInZip, 16
 
Set fso = Nothing
Set objShell = Nothing
Set FilesInZip = Nothing

这似乎并不像在这条线上那样工作......

objShell.NameSpace(destFolder).copyHere FilesInZip, 16

...它向我抱怨 destFolder 需要成为一个对象。我不太确定要更改什么来修复此错误(我对 VBS 不太熟悉),互联网上的大多数示例最初将 ExtractTo 变量设置为相对文件路径并运行命令将其转换为绝对文件路径。我不想这样做,因为当 iExpress 将其全部转换为 EXE 时,我的理解是相对文件路径从某个随机 TEMP 文件夹开始。

任何关于我的 VBS 文件中的错误的指导,或指示提取 ZIP 文件的更好路径将不胜感激,谢谢。

【问题讨论】:

    标签: vbscript exe iexpress


    【解决方案1】:

    看来我对 VBS 的缺乏经验是我在这里遇到麻烦的根源。问题最终出在这一行:

    objShell.NameSpace(destFolder).copyHere FilesInZip, 16
    

    应该是这样的:

    objShell.NameSpace(destFolder).copyHere(FilesInZip), 16
    

    我不确定这是否特定于该语言的某个版本,因为我的错误是从互联网上类似脚本的大量示例中复制的,但我真的无法找到更多关于这个(如果发现更多,我会编辑这个答案)。

    【讨论】:

    • 我不会很快接受这个答案,以防其他人有更多他们乐于提供的关于在 EXE 文件中提取 ZIP 的最佳方法的更多信息。
    猜你喜欢
    • 2013-04-12
    • 2021-10-18
    • 2012-10-04
    • 2012-04-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-17
    相关资源
    最近更新 更多