【问题标题】:Viewing details in installer created via NSIS is too slow在通过 NSIS 创建的安装程序中查看详细信息太慢
【发布时间】:2020-02-05 05:19:56
【问题描述】:

我通过 NSIS 创建了一些安装包。当我尝试在文件属性中查看详细信息选项卡时,详细信息会在很长一段时间后加载。我觉得这很烦人,因为安装程序的详细信息(来自其他来源)通常会在一秒钟内加载。

这是我的 NSIS 脚本中的一段代码

Section
    SetOutPath $INSTDIR
    File /r "${VERSION}\*"
SectionEnd

相反,如果我对所需文件进行 7zip 压缩,然后使用 NSIS 将其解压缩,则可以更快地加载详细信息。即,我使用以下指令集而不是 'File /r "${VERSION}*"'(ARCHIVE 是一些 7z 存档文件的定义)。

    File "${ARCHIVE}"
    Nsis7z::ExtractWithDetails "${ARCHIVE}"
    Delete "${ARCHIVE}"

但上述情况的问题是页面显示的所需安装空间不正确(显示存档大小而不是解压缩大小)

如何通过 NSIS 解决这个问题?

【问题讨论】:

  • 您的防病毒软件是否可能会减慢速度?
  • 在您的第二个示例中,${ARCHIVE} 可能是错误的,您不能对 File 使用与其余命令相同的路径(并且您应该使用插件调用的完整路径并删除(可能是 $InstDir))
  • @Anders 正如我在评论中提到的 ARCHIVE 是 7z 存档的定义(实际上它是完整路径)。我已经提到我的第二个示例与我的第一个示例不同,它实际上有效(意味着详细信息选项卡加载速度更快)。此外,如果防病毒是一个问题,则第二个示例也应该是相同的情况,但事实并非如此。
  • 文件和删除不能使用相同的完整路径。
  • 在不同的机器上试试。删除路径应以 $instdir 或 $temp 开头。

标签: installation nsis packaging


【解决方案1】:

您可以使用AddSize 人为地增加部分的大小:

Section
AddSize 5000
File ...
...
SectionEnd

您也可以按照帮助文件中的说明在.onInit 中使用SectionSetSize,但这种方法更复杂。

【讨论】:

  • 是的,但它有点手动工作。我正在寻找额外的选择。我不清楚它为什么会这样。
  • 为什么会令人惊讶? NSIS 只知道文件的原始大小,它不会尝试解压缩文件。
  • 正确。这就是为什么我不喜欢使用它并使用第一个示例。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-10-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-06-02
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多