【问题标题】:unpack data files before starting inno setup在启动 inno setup 之前解压数据文件
【发布时间】:2011-05-13 20:53:50
【问题描述】:

我正在开发一个使用非常大的数据文件的应用程序。我的客户希望将这些数据文件与安装程序 exe 分开压缩,然后安装程序应在开始安装之前解压缩它们。这可能是inno吗?我在 Pascal 方面没有太多经验,因此非常感谢任何帮助。

【问题讨论】:

    标签: zip inno-setup pascal unzip


    【解决方案1】:

    没有内置的 Pascal 脚本支持解压缩

    虽然 Inno Setup 内部有 many uncompress routines 来支持它可以在编译期间压缩文件的各种方式。这些都没有发布到 Pascal 脚本语言。

    仍然可以这样做,但是您必须构建一个 DLL 来执行解压缩步骤。然后在你的卸载中使用这个 DLL。

    如果你不压缩你可以使用这个方法:

    在 Inno Setup 脚本的 [Files] 中,您可以使用 external 标志引用未包含在您的设置中的文件。

    [Files]
    Source: "data1.dat" DestDir: "{app}" Flags: external;
    

    这会将与 Setup.exe 位于同一目录中的 data1.dat 复制到应用程序安装目录。

    考虑的替代方案

    为数据文件构建一个单独的 Inno 设置脚本。将此脚本提供给您的客户,以便他们可以使用编译器而不是 Zip 程序来运行此脚本。

    它会像 ZIP 一样压缩数据,虽然默认是lzma2/max。然后可以通过[Run] 部分链接此安装,以便在安装应用程序后直接安装。

    要考虑的第二种选择

    根据您的评论,我更了解您的问题。

    您可以将所有 MP3 文件构建到一个安装设置中。您可以使用[Components] 部分对 MP3 文件进行分组。这允许用户选择他们想要安装的文件组。 [Files] 部分支持通配符,因此您可以指定单个目录中的所有文件,以使脚本更易于维护。

    InnoSetup 旨在通过设置分解方式来处理大型安装 setup.exe 到多个文件中。

    [Setup]
    DiskSpanning=Yes
    DiskSliceSize=XXX
    SlicesPerDisk=XXX
    SolidCompression=no (Default but it not recommended to be set 'YES' with Huge installs)
    

    【讨论】:

    • 感谢罗伯特,这很有帮助。但实际上数据文件是 mp3,所以我真的不想压缩/解压缩它们以节省空间,但它们太多(500 个文件),我只想将它们打包成 4 或 5 个包给用户一个设置。 exe 有 4 个文件,不需要压缩或 zip 文件格式。我看到一些安装程序在开始安装之前解压了他们的文件。我可以在 Inno 脚本中的 Pascal 中执行此操作还是会有限制?非常感谢!
    • 你可以,但它似乎比默认机制更难。我将根据此反馈更新答案并提供更多详细信息。
    • 非常感谢罗伯特。这正是我需要的。它就像一个魅力。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多