在启动设置而不是结束时提取文件

时间:2009-04-28 13:19:10

标签: installation deployment inno-setup

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

  1. 执行相关性检查以查看安装的内容
  2. 安装尚未安装的依赖项(.net,sql server,directx等)
  3. 从[Files]部分(wpReady)
  4. 安装应用程序和文件
  5. 检查SQL Server以获取以前安装的数据库并创建/更新表等
  6. 步骤[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的操作然后再安装依赖项(不理想)。

2 个答案:

答案 0 :(得分:11)

您可以使用ExtractTemporaryFile()事件功能中的PrepareToInstall功能将之前[Files]部分中的任何文件提取到{tmp},并在设置时将其删除饰面。与脚本和各种钩子一起使用Inno Setup几乎可以实现所有功能。

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

答案 1 :(得分:-2)

{TMP}

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