【问题标题】:Extracting files at the start up setup instead of the end在启动设置而不是结束时提取文件
【发布时间】:2009-04-28 13:19:10
【问题描述】:

我正在使用最新版本的 inno,它在设置过程中执行以下操作:

  1. 执行依赖性检查以查看已安装的内容
  2. 安装尚未安装的依赖项(.net、sql server、directx 等)
  3. 从 [Files] 部分安装应用程序和文件 (wpReady)
  4. 检查 SQL Server 是否有以前安装的数据库并创建/更新表等

步骤 [4] 创建数据库和表等,并且仅在已经安装 SQL Server 的情况下才有效,这就是在步骤 [2] 中完成的原因。

输出目录包含创建的 setup.exe,我手动放置了包含上述步骤 [1,2 和 4] 所需文件的附加依赖项文件夹。

这很好用,但我想创建一个仅包含所有依赖项的单个 exe,并在 wpReady 和上述步骤 [1] 之前提取依赖项。

依赖项位于[Files] 部分,但在安装程序完成所有表单并尝试安装文件后,直到安装程序执行wpReady 消息后才会提取这些文件。

我使用以下内容将我需要的内容添加到 setup.exe

[Files]
Source: Output\Dependencies\*; DestDir: {tmp}; Flags: deleteafterinstall

wpReady 之前将文件提取到临时目录的最佳方法是什么,或者我应该先执行wpReady 的操作,然后再安装依赖项(虽然不理想)。

【问题讨论】:

    标签: installation deployment inno-setup


    【解决方案1】:

    您可以使用PrepareToInstall事件函数中的ExtractTemporaryFile()函数将任何文件从[Files]部分提取到{tmp}之前,设置完成后将被删除。连同脚本和各种钩子,Inno Setup 为您提供了几乎所有可以实现的目标。

    查看 Inno Setup 帮助的“Pascal 脚本”部分,特别是“支持函数参考”。在那里您可以找到ExtractTemporaryFile() 等的文档。

    【讨论】:

    • 现在推荐在 [PrepareToInstall] 事件函数中执行此操作,因为它可以更轻松地警告使用和重新启动提示。
    【解决方案2】:

    {tmp}

    安装程序或卸载程序使用的临时目录。这不是用户的 TEMP 环境变量的值。它是由安装程序或卸载程序在启动时创建的用户临时目录的子目录(名称类似于“C:\WINDOWS\TEMP\IS-xxxxx.tmp”)。当安装程序或卸载程序退出时,此目录中的所有文件和子目录都将被删除。在安装过程中,这主要用于提取要在 [Run] 部分执行但在安装后不需要的文件。

    【讨论】:

    • 不仅您的回答没有清楚地表明您建议在脚本中更改什么,假设您想说使用 {tmp} 文件位置作为目标,@Belliez 问题表明她/他想要在实际安装过程开始之前提取文件,按照我阅读您的建议的方式,它将在那一刻之后将文件放在那里。
    • 这就是我从帮助中得到的,因为我不明白 ExtractTemporaryFile(),如果你能给我一个例子,我无法做到,谢谢
    猜你喜欢
    • 1970-01-01
    • 2014-10-01
    • 2017-05-30
    • 1970-01-01
    • 1970-01-01
    • 2014-11-08
    • 2017-12-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多