【问题标题】:How do you check what files are inside an NSIS setup.exe?如何检查 NSIS setup.exe 中的文件?
【发布时间】:2009-07-23 03:19:35
【问题描述】:

在我的 NSIS 脚本中,我使用了这一行:

 File "..\help\*.*"

我的问题是我的 subversion 存储库中有帮助目录(随着我们添加新功能,它会不断更新)。这意味着帮助目录包含一个 .svn 目录。

我希望查看 NSIS 创建的 setup.exe 的内容,以确认它没有 .svn 目录。

附:我尝试查看 NSIS 是否在使用通配符时递归添加文件。它没有。但我想验证这一点,因此提出了问题。

【问题讨论】:

    标签: nsis


    【解决方案1】:

    这些东西通常是压缩文件。
    您可以检查 7z/7-zip 以打开 EXE 存档。


    作为记录,在下面的cmets之后,
    我想指出我最近在 Superuser 上关于 7-zip 优点的笔记,
    Compressing with RAR vs ZIP

    【讨论】:

    • 我尝试使用 WinRar,它提取的唯一内容是 .NET 框架安装程序。嗯。现在我想起来了,可能是读取了 .NET 安装程序的标头而不是我的 setup.exe。我将删除我拥有的可再发行组件并重试。
    • 不起作用。删除可再发行文件(基本上是压缩文件,如 .NET 安装程序)会使 WinRar 抱怨创建的 setup.exe “未找到存档文件”
    • 我不使用 WinRAR。你知道这个 setup.exe 的容器吗?如果一个(好的)归档工具说没有压缩文件,它通常只是其中的可执行代码。
    • @nik 我刚刚尝试了所有可能的压缩选项(ZLIB、BZIP2、LZMA),但没有一个允许 WinRar 查看内容。我会尝试 7-zip 以防万一。
    • 它只能在 7-zip 中工作,所以我不明白你为什么一直在谈论 WinRar。
    【解决方案2】:

    与其查看 NSIS exe 本身中的内容,不如排除 .svn 目录,这样您就知道它们永远不会在那里。

    这样的事情可以解决问题:

    File /r /x .svn "..\help\*.*"
    

    /x .svn 位告诉 NSIS 排除这些目录。

    巧合的是,如果您没有使用 /r 开关,那么您就不会递归地添加文件和文件夹,因此它也不会添加 .svn 子目录。

    【讨论】:

      【解决方案3】:

      我的建议是查看 NSIS 编译日志,而不是解压缩。它将告诉您有关包含文件的所有信息。在我的 NSIS 脚本中进行更改时,我总是检查日志以确保一切都按计划进行。将日志从命令行流式传输到文本文件,然后从您喜欢的编辑器中读取。

      【讨论】:

        【解决方案4】:

        我使用 7zip 文件管理器和“打开内部”命令。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2013-01-01
          相关资源
          最近更新 更多