如何让 Inno Setup 解压单个文件?

2023-12-02

有没有一种方法可以从 zip 文件中只解压一个文件? 我正在使用基于的代码response for 如何让 Inno Setup 解压缩它安装的文件(所有这些都是单个安装过程的一部分),非常适合解压缩,但不知道如何解压缩单个文件:

[Code]:

const
  NO_PROGRESS_BOX = 4;
  RESPOND_YES_TO_ALL = 16;

procedure UnZip(ZipPath, TargetPath: string); 
var
  Shell: Variant;
  ZipFile: Variant;
  TargetFolder: Variant;
begin
  Shell := CreateOleObject('Shell.Application');

  ZipFile := Shell.NameSpace(ZipPath);
  if VarIsClear(ZipFile) then
    RaiseException(Format('ZIP file "%s" does not exist or cannot be opened', [ZipPath]));

  TargetFolder := Shell.NameSpace(TargetPath);
  if VarIsClear(TargetFolder) then
    RaiseException(Format('Target path "%s" does not exist', [TargetPath]));

  TargetFolder.CopyHere(ZipFile.Items, NO_PROGRESS_BOX or RESPOND_YES_TO_ALL);
end;

Use Folder.ParseName检索 ZIP 存档“文件夹”中特定文件的引用。然后将该引用传递给Folder.CopyHere来提取它。

const
  NO_PROGRESS_BOX = 4;
  RESPOND_YES_TO_ALL = 16;

procedure UnZip(ZipPath, FileName, TargetPath: string); 
var
  Shell: Variant;
  ZipFile: Variant;
  Item: Variant;
  TargetFolder: Variant;
begin
  Shell := CreateOleObject('Shell.Application');

  ZipFile := Shell.NameSpace(ZipPath);
  if VarIsClear(ZipFile) then
    RaiseException(Format('Cannot open ZIP file "%s" or does not exist', [ZipPath]));

  Item := ZipFile.ParseName(FileName);
  if VarIsClear(Item) then
    RaiseException(Format('Cannot find "%s" in "%s" ZIP file', [FileName, ZipPath]));

  TargetFolder := Shell.NameSpace(TargetPath);
  if VarIsClear(TargetFolder) then
    RaiseException(Format('Target path "%s" does not exist', [TargetPath]));

  TargetFolder.CopyHere(Item, NO_PROGRESS_BOX or RESPOND_YES_TO_ALL);
end;
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何让 Inno Setup 解压单个文件? 的相关文章

  • 将对话框项分组到单个“组”(Visual Studio)

    我想创建一个对话框窗口来更改应用程序的设置 下面是 Adob e Reader 的屏幕截图 使用 Spy 后 我猜想 在右侧 所有控件 按钮 组合框 等 都属于 GroupBox 对于左侧TreeView控件中的每个类别 都有一个相应的Gr
  • 如何按名称杀死进程? (Win32 API)

    基本上 我有一个将启动多次的程序 因此 该程序将启动两个或多个进程 我想使用 Win32 API 并终止 终止具有特定名称的所有进程 我见过杀死一个进程的例子 但没有看到多个具有完全相同名称 但参数不同 的进程 尝试下面的代码 killPr
  • 估计 zip 大小/创建时间

    我需要使用 Python zipfile 模块或 unix 命令行实用程序按需创建 ZIP 存档 要压缩的资源通常 gt 1GB 并且不一定适合压缩 如何有效地估计其创建时间 大小 从大文件中提取一堆小部分 也许 64 个块 每个块 64k
  • 将 Ctrl+Up 发送到窗口

    I m trying to send messages to a window that says Ctrl and Up arrow has been pressed I ve got the basics down I can send
  • Inno Setup:有条件地删除用户主文件夹中的非空目录

    我正在通过 Inno Setup 为我的 Windows 应用程序创建安装程序 应用程序本身将一些配置数据写入用户主文件夹及其自己的子目录中 现在 在卸载过程中 我希望允许用户选择一个选项来删除该文件夹 该文件夹最初不是由 Inno Set
  • 有没有办法删除 FILE_FLAG_DELETE_ON_CLOSE?

    在我的应用程序中 我想使用 FILE FLAG DELETE ON CLOSE 打开一个临时文件 然而 在某些情况下 临时文件需要保留并且非常大 我想删除打开的句柄上的 FILE FLAG DELETE ON CLOSE 属性 这可能吗 复
  • 如何在 Rust winapi 编程中使用 COM VARIANT?

    我正在尝试转换C COM 代码 https technet microsoft com pt br aa382113 v vs 71 for TaskSchedulerRust 并坚持VARIANT的论证ITaskService Conne
  • 了解 GetDiBits。 C++

    MSDN 说位图用于GetDiBits在调用此函数之前不应将其选入 DC 但根据我的经验 与BitBlt 我知道除非选择了位图 否则我无法绘制位图 如何GetDiBits规避这个 我可以只使用未选择的 新创建的位图作为该函数的参数吗 Get
  • 枚举 EMF 时丢失文本

    我在列举发票 emf http www mediafire com kdjwvvo7odyvwa6并将其复制到另一个但文本丢失了 令人惊讶的是 当我将其输出到窗口时 它绘制得非常完美 int CALLBACK EnhMetaFileProc
  • Inno Setup:当我在命令行中静默执行安装程序时,如何为安装程序提供序列号?

    正如标题中所述 我想知道当我在命令行中静默执行安装程序时 如何为安装程序提供序列号 iss Setup DefaultUserInfoSerial param serialnumber Default serial 命令行 setup ex
  • 在 Windows 上使用 C/C++ 开发时省略 msvcr100.dll?

    是否可以在 Windows 上使用 C C 进行开发而不链接到 msvcr100 dll 我知道这是 Windows 的标准 c 库 但我想知道如果我没有安装 Visual Studio 或 Redistributable 软件包 我的计算
  • 检测笔记本电脑盖子的关闭和打开

    是否可以检测笔记本电脑的盖子何时打开或关闭 从我读到的内容来看 这是不可能的 但 SO 之前已经帮助我完成了不可能的任务 我发现唯一可能朝着正确方向的事情是关于报告电源按钮所需的 IOCTL 的 MSDN 博客文章 https learn
  • 如何从 Java 访问 Windows 设备管理器中的信息?

    我有一个串行 USB 设备 并且其中多个设备可以连接到计算机 我需要查询和检索设备连接到的 COM 端口列表 在 Windows 设备管理器中 您可以获得当前连接的设备的 COM 端口 友好名称 该列表是动态的 从注册表中读取不工作 htt
  • WM_NEXTDLGCTL 可以与非对话框窗口一起使用吗?

    的文档WM NEXTDLGCTL https msdn microsoft com en us library windows desktop ms645432 aspx声明该消息将与对话框一起使用 发送到对话框过程以将键盘焦点设置到对话框
  • 微软怎么能说WinAPI中一个字的大小是16位呢?

    我刚刚开始学习WinAPI 在MSDN中 对WORD数据类型提供了以下解释 WORD16 位无符号整数 范围是十进制 0 到 65535 该类型在 WinDef h 中声明如下 typedef 无符号短 WORD 很简单 而且它与我一直在使
  • 有没有办法找到dll公开的所有函数

    我一直在寻找一种方法来获取映射到 dll 中函数名称的所有字符串 我的意思是您可以调用 GetProcAddress 的所有字符串 如果你对 dll 进行十六进制转储 符号 字符串 就在那里 但我认为必须有一个系统调用来获取这些名称 如果您
  • 使用 R 下载压缩数据文件、提取并导入 .csv

    我正在尝试使用以下方法从网页下载并提取 csv 文件R 这个问题是重复的使用 R 下载压缩数据文件 提取和导入数据 https stackoverflow com questions 3053833 using r to download
  • 尝试使用 C++ 创建一个计划任务运行一次,win7 上的任务计划程序 1.0

    我正在尝试创建一个非常简单的程序 它将在两分钟后运行记事本 这些都经过简化以提出更清晰的问题 我尝试合并一些MSDN 的例子 http msdn microsoft com en us library windows desktop aa3
  • 在结构内创建结构

    我正在努力将在 Visual c 6 0 中创建的旧 C windows 驱动程序项目导入到 Visual Studio 2012 中 定义结构的方式导致 vs2012 中出现错误 typedef struct LINK Link HAND
  • 原子 x86 指令与 MS 的 InterlockedCompareExchange 文档的对齐要求?

    微软提供了InterlockedCompareExchange http msdn microsoft com en us library ms683560 28VS 85 29 aspx用于执行原子比较和交换操作的函数 还有一个 Inte

随机推荐

  • android @Suppress 错误与 @TargetApi

    有时 我会为可能运行我的应用程序的某些 Android 版本编写代码 使用最新 Android 工具的 Eclipse 仍然注意到我的 Manifest 文档允许较低版本的 Android 因此判定我的代码中有错误 解决这个问题的方法是添加
  • AX的源文件存放在哪里?

    我想 仅 对 Dynamics Ax 2009 的源文件 即 XPO 源文件 运行定期 每 4 小时 备份 我想知道它们的物理存储位置 AX7 所有元数据都以 XML 形式存储 方法也存储在常规文件中 并存储在版本控制中 See 本概述 A
  • 如何为 Dash/Plotly 中的下拉菜单命名

    我对破折号还很陌生 我试图弄清楚如何将名称放置在下拉菜单和滑块上方 并在它们之间提供一些间隙 我在侧面而不是在下拉列表的顶部得到这些名称 数据集 模型类型 这是我一直在使用的代码 html Div className row childre
  • 如何使用 iTextSharp 将 HTML 转换为 PDF

    我想使用 iTextSharp 将以下 HTML 转换为 PDF 但不知道从哪里开始 p This em is em span class headline some span strong sample em text em strong
  • Arrays.binarySearch 无法正常工作

    我有字符串数组 1 2 3 我使用 Arrays binarySearch 搜索所有这些数字 它找到 1 和 2 但对于 3 它返回 1 知道为什么会这样吗 什么是比始终在数组 集合中进行搜索更好的替代方案 数组必须是有序的 String
  • 大矩阵的 SciPy 插值

    我有一个 ndarray Z 在矩形网格 X Y 上有大约 500000 个元素 现在我想在 x y 中的大约 100 个位置处插入值 这些位置不一定在网格上 我有一些在 Matlab 中运行的代码 data interp2 X Y Z x
  • str_extract 特定模式(示例)

    我对正则表达式语法仍然有点困惑 你能帮我解决这些模式吗 A00 A1234B A00 A12345B A1 A12345 到目前为止我的方法 vapply strsplit files function files files nchar
  • TPL队列处理

    我目前正在开发一个项目 我需要将一些作业排队进行处理 这是要求 作业必须一次处理一个 排队的项目必须能够等待 所以我想要类似的东西 Task
  • 在非不同索引上使用递归 cte 计算不同行

    给出以下架构 CREATE TABLE identifiers id TEXT PRIMARY KEY CREATE TABLE days day DATE PRIMARY KEY CREATE TABLE data id TEXT REF
  • 大型数据库文件的 SQLite 磁盘 I/O 错误

    在我的 C 程序中 我读取了大约 350GB 的压缩 CSV 文件 并将数据存储在 SQLite v3 数据库中 我在用着System Data SQLite来自 NuGet 我的数据库目前约为 147GB 在尝试运行下一个 INSERT
  • 如何将 ArrayList 保存在 Bundle 对象中

    Hi我需要帮助寻找存储方式 ArrayList
  • 添加新视图控制器的视图作为子视图

    我正在尝试以下操作 但未能添加新的视图控制器视图 这是呈现视图控制器的唯一方法吗 我们不能从其他故事板视图控制器视图添加视图吗 Working let vc UIStoryboard name Main bundle nil instant
  • 使用 Gmaps4rails 通过 AJAX 调用渲染 Gmap

    这里有一些主题试图涵盖这一点 Gmaps4rails 动态加载时地图不显示尤其是这里 通过Ajax使用gmaps4rails渲染谷歌地图 还观看了动态更新 gmap 的截屏视频 但我似乎仍然无法使其工作 仅当单击显示用户和报价之间方向的按钮
  • 所以我正在尝试获取 2 个 div 容器 它们都应包含居中文本 x 轴和 y 轴 感谢 Google 和 stackoverflow 我偶然发现了一些使用垂直对齐等的解决方法 但似乎没有任何效果 right menu position ab
  • Plotly:如何在注释中同时使用美元符号和换行符?

    不确定我是否在这里遗漏了一些明显的东西 但是当我插入一个中断时 br 到带有注释的文本中 它似乎忽略了它 我试过了fig add annotations但同样的事情发生了 你知道为什么这不起作用吗 import pandas as pd i
  • Java -> C# 创建抽象类的匿名实例

    出于培训目的 我正在遵循为 Java 编写的教程 到目前为止我已成功将其 翻译 为 C 但是 我现在面临一个问题 我真的不知道如何解决它 我能找到的最接近 可能的问题答案是这个问题 尽管我现在在理解委托和 lambda 表达式方面存在问题
  • 每次在命令行中运行 gulp 时出现断言错误

    我正在尝试运行下面的命令 但不幸的是我遇到了错误 C Users usver Desktop git test git Bootstrap4 conFusion gt gulp 运行上述命令后出现断言错误 我再次重新安装了 gulp 和 n
  • 检查目标目录是否存在,然后继续,如果不存在,则创建它,然后继续

    我在其中一个工作表上有一个按钮 可让用户继续执行其任务 将他 她的模板保存为文件夹中的单独工作簿 这是我的代码 Private Sub ContinueButton Click Application ScreenUpdating 0 Sh
  • 在 PostgreSQL 选择查询中将时间戳列值转换为纪元

    我需要将时间戳值转换为纪元SELECT询问 请查看下面的示例表和预期结果 样本表 select from log id 3 time 2016 03 30 18 44 19 189513 data1 NONE data3 NONE data
  • 如何让 Inno Setup 解压单个文件?

    有没有一种方法可以从 zip 文件中只解压一个文件 我正在使用基于的代码response for 如何让 Inno Setup 解压缩它安装的文件 所有这些都是单个安装过程的一部分 非常适合解压缩 但不知道如何解压缩单个文件 Code co