7-zip SFX 配置问题

7-zip SFX configuration issue

d我已经在 7zip 中创建了一个存档。 (files.7z) 我创建了一个 config.txt 文件(实际上我在不同时间创建了 3 个不同的文件)。我使用命令行工具来创建效果很好的 sfx。但是当我 运行 .exe 时,我没有得到预期的结果。好像 sfx 忽略了配置。 我将存档和 config.txt 放在 7-zip 安装目录中,我的命令行如下所示:

C:\Program Files-Zip>copy /b 7z.sfx + config.txt + files.7z files.exe

当我运行结果是这样的

7z.sfx
config.txt
files.7z
1 file(s) copied.

这是我的配置。我使用记事本并确保保存为 UTF-8。

;!@Install@!UTF-8!
Title="MyApp Installer"
ExecuteFile="setup.exe"
InstallPath="%temp%\My App"
;!@InstallEnd@!

我把files.exe复制到桌面的一个文件夹里。 运行 并且它问我在哪里提取,不会 运行 setup.exe(在 files.7z 根目录中)

我做错了什么?我在 7-zip 论坛上到处都是,找不到我的错误。

您使用了错误的 SFX 模块——您需要使用 7zS.sfx 而不是 7z.sfx。 IIRC,7zS.sfx 默认情况下不附带 7-Zip,您必须从 SourceForge 下载 7z<ver>-extra.7z 存档才能获取它。

根据 -sfx (Create SFX archive) switch and Command Line Version User's Guide:

SFX_Module - Specifies the SFX module that will be combined with the archive. This module must be placed in the same directory as the 7z.exe. If SFX_Module is not assigned, 7-Zip will use standard console SFX module 7zCon.sfx.

创建安装程序的整个过程都有详细记录,包括您需要用于打包安装程序的配置文件和批处理文件的示例。这是您已经做过并张贴在这里的内容。

还有关于您需要哪个模块的说明 use-case:

SFX_Module Description

  • 7z.sfx SFX module (GUI version)
  • 7zCon.sfx SFX module (Console version)
  • 7zSD.sfx SFX module for installers (GUI version)
  • 7zS2.sfx small SFX module for installers (GUI version)
  • 7zS2con.sfx small SFX module for installers (Console version)

可用于打包安装程序/.exe项目的文件是7zSD.sfx或7zS.sfx.

它们都是为安装人员设计的。如果要创建执行安装的 self-extracting 存档,在安装期间将存档提取到临时文件夹,运行s 指定程序并在安装完成后清理临时文件,请使用它。

它们之间的区别是:

7zSD.sfx 使用 MSVCRT.dll,它是 Visual C++ (MSVC) 编译器 4.2 到 6.0 版本的 C 标准库。你的 self-extracting 存档不会 运行 在纯的、旧的 Windows 上,如果其他一些应用程序没有安装 MSVCRT.dll 在那台机器上。它包含在每个现代 Windows 安装中,大多数 Windows 应用程序都是在其之上构建的。

既然你现在应该安全 MSVCRT.dll,同时使用 7zS.sfx 和/或 7zSD.sfx 是可以的,只需选择一个事情应该会顺利进行。

不再需要通过 SourceForge 下载。在当前版本的 7-Zip 中,所需的 .sfx 文件不是 7z-Extra 下载的一部分,它是 LZMA SDK.

的一部分

https://www.7-zip.org/sdk.html

您需要提取LZMA SDK并复制7zS.sfx和/或7zSD.sfx到7z.exe.

旁边