Inno Setup - FileCopy 在路径名中使用通配符

2023-12-11

我正在尝试将所有数据库文件从以前的安装复制到具有新路径名的新安装。问题是安装程序不知道数据库文件的名称,所以我尝试使用通配符。

我尝试使用 TFileStream.Create(),但这是搜索单个文件,例如“*.mdb”,并且我不断收到错误消息,指出找不到该文件。我也尝试过使用 FileCopy(),但它似乎只是失败并继续。我什至尝试使用Exec()通过命令行运行它,但它只会冻结安装。

我在网上搜索了很长时间寻找答案并阅读了大量文档。我只需要知道如何使用通配符来复制名称未知的文件。以下是我尝试过的示例。

TFileStream.Create()

    OldDBs := 'C:\Users\seang\Desktop\Old\*.mdb';
    NewDBs := 'C:\Users\seang\Desktop\New\*.mdb';
    SourceDB:= TFileStream.Create(OldDBs, fmOpenRead);
    DestDB:= TFileStream.Create(NewDBs, fmCreate);
    DestDB.CopyFrom(SourceDB, SourceDB.Size);
    SourceDB.Free;
    DestDB.Free;

文件复制()

    FileCopy('C:\Users\seang\Desktop\Old\*.mdb', 'C:\Users\seang\Desktop\New\*.mdb', True);

命令行

    Exec('cmd.exe', 'COPY "C:\Users\seang\Desktop\Old\*.mdb" "C:\Users\seang\Desktop\New\*.mdb"', '', SW_HIDE, ewWaitUntilTerminated, ErrorCode);

你需要使用FindFirst, FindNext, and FindClose迭代文件夹。您获取每个数据库名称,然后单独复制它。可以找到在 Pascal (Delphi) 中执行此操作的示例here。 InnoSetup 帮助文件中还有一个使用它们的示例,位于Support Functions Reference部分关于File System Functions:

// This example counts all of the files (not folders) in the System directory.
var
  FilesFound: Integer;
  FindRec: TFindRec;
begin
  FilesFound := 0;
  if FindFirst(ExpandConstant('{sys}\*'), FindRec) then begin
    try
      repeat
        // Don't count directories
        if FindRec.Attributes and FILE_ATTRIBUTE_DIRECTORY = 0 then
          FilesFound := FilesFound + 1;
      until not FindNext(FindRec);
    finally
      FindClose(FindRec);
    end;
  end;
  MsgBox(IntToStr(FilesFound) + ' files found in the System directory.',
    mbInformation, MB_OK);
end;

您可以更改上面的循环以在适当的旧文件夹中查找每个*.mdb(在里面FindFirst调用)并更改计数到将每个文件复制到新文件夹中的块的行(使用FileCopy or a TFileStream,无论您喜欢哪个)。

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

Inno Setup - FileCopy 在路径名中使用通配符 的相关文章

  • 在 Delphi 7 中使用 TScreen

    我的 Delphi 7 应用程序显示 Screen DesktopWidth Screen DesktopHeight Screen Monitors 0 Width Screen Monitors 0 Height 并且 如果选择了第二台
  • 从单个应用程序中的多个线程调用 dll 函数是否安全?

    我正在 Delphi 2009 中编写一个服务器应用程序 它实现了多种类型的身份验证 每种身份验证方法都存储在单独的 dll 中 第一次使用身份验证方法时 会加载适当的 dll 仅当应用程序关闭时 DLL 才会被释放 在服务器线程 连接 之
  • VHDL STD_LOGIC_VECTOR 通配符值

    我一直在尝试用 VHDL 代码为我在 Altera DE1 板上实现的简单 16 位处理器编写有限状态机 在有限状态机中 我有一个CASE处理不同 16 位指令的语句 这些指令由 16 位 STD LOGIC VECTOR 带入 FSM 但
  • 如何允许表单接受文件删除而不处理 Windows 消息?

    在 Delphi XE 中 我可以允许我的表单接受文件 拖放 但不必处理裸窗口消息吗 您不需要处理消息来实现这一点 你只需要实施IDropTarget并打电话RegisterDragDrop RevokeDragDrop 这真的非常非常简单
  • Delphi - 相当于C#的三元运算符? [复制]

    这个问题在这里已经有答案了 可能的重复 Delphi 中是否存在或者将来是否存在条件运算符 https stackoverflow com questions 2108609 is there or is there ever going
  • Delphi 2007 中的 HelpInsight 文档

    我正在使用 D2007 并尝试使用 HelpInsight 功能 自 D2005 起提供 来记录我的源代码 我主要对让 HelpInsight 工具提示正常工作感兴趣 通过各种网上冲浪和实验 我发现了以下内容 使用三斜杠 注释样式比其他记录
  • 如何将 TGifImage 中的帧提取为位图?

    下面的演示尝试在表单的画布上绘制 GIF 这不起作用 图像不会前进 如何让它发挥作用 procedure TForm1 FormCreate Sender TObject begin GIF TGIFImage Create GIF Loa
  • Delphi DataSnap REST 服务器从 TStream 返回 JSON 数组,而不是二进制

    我有一个与 Android 客户端通信的 REST 服务器 我将它从 XE3 ish 升级到 Berlin 其中一个服务器方法返回一个包含 jpeg 的 TStream 并且工作得很好 很高兴将图像作为二进制图像返回 升级到 Berlin
  • 从delphi应用程序调用.net4.0 com服务器后出现错误异常

    我们正在将代码库从 BDS2006 迁移到 Rad Studio XE 我们发现了一些非常奇怪的行为 如果我们在从 Net4 0 中实现的 COM 服务器创建一些对象后进行无效的浮点运算 即除以零 我们不会没有得到正常异常 即 EDivis
  • Inno Setup安装先决条件[重复]

    这个问题在这里已经有答案了 我正在通过 Inno Setup 创建一个安装程序 我看到很多关于如何检测先决条件是否存在的代码示例 但没有任何关于当我找不到先决条件时如何实际安装先决条件的代码示例 我确信它非常简单 但是我该如何安装先决条件呢
  • Delphi XE5 REST/Android 客户端“会话已过期”

    我有一个REST Server与Android Client 都在Deplhi Xe5 Android客户端成功连接Rest服务器 在我的服务器中我有一个TDSHttpWebDispatcher with SessionTimeout 12
  • 以 png 格式剪辑幻灯片 (Delphi 2010)

    I have a filmstrip of images in png format like this 我想知道如何剪辑每个图像并将这些图像放入 TImageList 控件中 并始终保留透明度 EDIT 是的 在设计时 RRUZ 提到的技
  • Inno Setup 在 Windows Vista/7 及更高版本上安装到 AppData\Roaming,但在 Windows XP 上安装到应用程序数据

    我为 inDesign 制作了几个脚本 现在我想将它们全部分发到一个安装文件中 由于 inDesign 脚本驻留在 XP 和 Vista 或更高版本 上的不同位置 因此我遇到了一些问题 我编译的设置在 Windows XP 下运行良好 但不
  • Delphi中的抽象类

    我正在使用一个具有许多抽象类的组件套件 现在我想应用多态性 但在创建对象时收到错误抽象类 即使我不需要 我是否应该重写所有虚拟方法 有什么解决方法或解决方案吗 为了创建类的实例 您需要重写所有声明为虚拟抽象的方法 即使您不使用它们 如果您确
  • 如何追踪“地址 00000000”的访问违规

    我知道如何创建 map 文件来在错误消息包含实际地址时跟踪访问冲突错误 但是如果错误消息说怎么办 Access violation at address 00000000 Read of address 00000000 我从哪里开始寻找这
  • 在 Delphi 2009 上安装最新版本的 Indy 10 [重复]

    这个问题在这里已经有答案了 是否有更新 Delphi 2009 中的 Indy 10 组件的分步指南 我读过正在卸载线程 https stackoverflow com questions 486210 what is the proper
  • Delphi 5 的哈希表实现 [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 您知道 Delphi 5 的良好且免费的哈希表实现吗 我需要在哈希表中组织大量数据 并且我有点担心在网
  • 查找Delphi项目中的所有编译错误

    我正在对我的 Delphi 项目进行一些重构 我希望能够做出改变 然后看看all项目中因该更改而中断的地方 类似于 Eclipse 列出项目的所有编译错误 在 Java 中 在 Delphi 中 我可以进行更改 然后重新编译我的项目 但编译
  • 在Delphi 7中,为什么我可以给const赋值?

    我将一些 Delphi 代码从一个项目复制到另一个项目 发现它在新项目中无法编译 但在旧项目中可以编译 代码看起来像这样 procedure TForm1 CalculateGP const Price money 0 begin Pric
  • 使用项目中的波形文件

    我目前只能通过将波形文件放在已编译的 exe 旁边来播放背景声音 但我实际上想要一个包含波形文件的静态可执行文件 这在Delphi XE2中可能吗 这是我的代码 SndPlaySound Raw wav SND ASYNC or SND L

随机推荐

  • 什么是整数类型?

    我看到了 golang core 并发现了这个 func make t Type size IntegerType Type IntegerType 和 Type 是什么意思 可以是C 吗 您的函数声明来自builtin包裹 builtin
  • 如何在 Gradle/IntelliJ 中添加测试资源根

    使用 IntelliJ 14 和 Gradle 2 2 中的 idea 插件生成 IntelliJ 项目 我可以通过以下方式添加新的测试源根用于集成测试 idea module testSourceDirs file src integra
  • 如何从 iphone corebluetooth api 列出已配对的蓝牙设备

    我正在尝试列出配对的蓝牙设备 我知道我可以使用retrieveConnectedPeripherals 获取已连接设备的列表 所以我的问题是如何以编程方式从 iphone SDK 获取配对设备 提前感谢大家 Regards Bhaban 你
  • php simplexml_load_file 带有破折号 ( - )

    嗨 我正在努力从 php 中的 xml 文件获取数据 xml 文件在这里 http musicbrainz org ws 2 artist 8bfac288 ccc5 448d 9573 c33ea2aa5c30 inc release g
  • 在 ObjectAnimationUsingKeyFrames 中使用 TemplateBinding

    我尝试设置鼠标悬停在控件上时的背景颜色 我尝试通过视觉状态管理器来做到这一点 我能够运行以下代码
  • form.valid() 不应显示验证文本?

    With Jquery validate required fields are showing popup validation on fileds like below pic 我喜欢这个并且工作得很好 但我检查 form valid
  • 从服务器导入 LESS

    在我的 ASP NET MVC 应用程序中 我有一个返回 LESS 变量的操作 我想将这些变量导入到我的主 LESS 文件中 由于 DotLess 只会导入扩展名为 less 或 css 的文件 因此推荐的方法是什么 我发现最简单的解决方案
  • 如何使用泛型实现类型安全?

    我有课 public class ReportItem
  • pyqt5中的连接功能不起作用

    我最近从pyside to pyqt5有一个问题 我在网上查了一下 显然 这已经发生在使用过的人身上pyqt4并搬到pyqt5 然而 它并没有真正帮助 我尝试添加pyqtSignal after Qobject但它仍然不起作用 请帮忙 这些
  • 创建性能计数器时 Azure 模拟器出错

    我正在尝试测量 Azure 项目上的处理器负载 在运行模拟器时 我在模拟器控制台中收到如下错误 MonAgentHost Error MA EVENT 2012 10 10T12 15 06 982Z MonAgentHost Error
  • 阿拉伯语的布局方向不是根据区域设置确定的(Mac 和 Linux)

    有没有人设法从用户 的语言设置中推断出正确的布局方向 从左到右和从右到左 我在将应用程序本地化为阿拉伯语 沙特阿拉伯 语言环境时遇到问题 检测当前区域设置以及加载和安装适当的 QTranslators 都可以正常工作 文本在 Linux 上
  • 这是php中的快速进程strpos()/stripos()或preg_match()

    我只是想知道 php 中的 strpos stripos 或 preg match 函数中哪一个更快 I found 这个博客针对您的问题运行了一些睾丸 结果是 strpos 比 preg match 快 3 16 倍 stripos 比
  • 按顺序收集值,每个值包含一个地图

    当迭代代码中由主题函数返回的返回映射时 键未按顺序出现 如何使键按顺序排列 对地图进行排序 以便键按顺序且值相对应 Here is the code The Go 博客 Go 地图的实际应用有一个很好的解释 当使用范围循环迭代映射时 迭代顺
  • Postgresql 中子字符串的区别

    最近几天我在查看 PostgreSQL 手册 我注意到substring 在那里解释为substring string FROM int FOR int 我通常只使用substring string int int 因为我是从 MySQL
  • python selenium 鼠标滚轮点击

    我有一个问题 是否可以在 python selenium 中模拟鼠标滚轮单击 当您单击链接时 浏览器中会打开一个新选项卡 或类似的东西 我使用的网站是基于 JavaScript 的 所以我看不到物理链接 您需要执行 JavaScript 代
  • Electron-forge 和 osx 签名应用程序导致“二进制文件签名不正确”。

    我使用以下 功能 开发了一个电子应用程序 Base 电子锻造 开始 制作和发布 电子open url功能 方案 xx note node keytar 获取和设置密码 无框应用程序 透明窗户 自动更新 with Nucleus 正在开发 W
  • 用于抓取光标(拖放)的 CSS

    我有一个 JavaScript Web 应用程序 用户需要抓住背景来移动整个屏幕 所以我希望当它们悬停在背景上时光标发生变化 这 moz grab and moz grabbingCSS 光标非常适合此目的 当然 它们仅适用于 Firefo
  • 如何忽略where子句中的条件

    从表 1 中选择字段 1 其中字段 1 gt 4006 AND 字段 1 4006 且字段 2 假 排序依据字段1 限制1 我想要第二个条件 AND field1 lt 如果内部选择没有返回记录 则被忽略 与此相关topic 像这样的东西
  • node.js 中 module.exports= 函数的含义

    我正在使用 node js 迈出第一步 显然我尝试做的第一件事就是从模块导出一些数据 所以我尝试了这个简单的情况 虚拟 js var user rally module exports user user 并比从不同的文件中需要它 如下所示
  • Inno Setup - FileCopy 在路径名中使用通配符

    我正在尝试将所有数据库文件从以前的安装复制到具有新路径名的新安装 问题是安装程序不知道数据库文件的名称 所以我尝试使用通配符 我尝试使用 TFileStream Create 但这是搜索单个文件 例如 mdb 并且我不断收到错误消息 指出找