7-zip SFX 配置问题 [关闭]

Posted

技术标签:

【中文标题】7-zip SFX 配置问题 [关闭]【英文标题】:7-zip SFX configuration issue [closed] 【发布时间】:2015-03-26 20:05:42 【问题描述】:

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

C:\Program Files\7-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 论坛,找不到我的错误。

【问题讨论】:

【参考方案1】:

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

【讨论】:

【参考方案2】:

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

SFX_Module - 指定将与 档案。该模块必须与 7z.exe。如果未指定 SFX_Module,7-Zip 将使用标准 控制台 SFX 模块 7zCon.sfx.

创建安装程序的整个过程都有很好的记录,包括您需要用来打包安装程序的配置文件和批处理文件的示例。这是您已经在此处发布的内容。

还有针对特定用例需要哪个模块的说明:

SFX_Module 说明

7z.sfx SFX 模块(GUI 版) 7zCon.sfx SFX 模块(控制台版本) 7zSD.sfx SFX 安装程序模块(GUI 版本) 7zS2.sfx 用于安装程序的小型 SFX 模块(GUI 版) 7zS2con.sfx 用于安装程序的小型 SFX 模块(控制台版本)

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

它们都是为安装人员设计的。如果您想创建一个执行安装的自解压存档,在安装过程中将存档解压到临时文件夹,运行指定的程序并在安装完成后清理临时文件,请使用它。

它们之间的区别是:

7zSD.sfx 使用 MSVCRT.dll,它是 Visual C++ (MSVC) 4.2 到 6.0 编译器的 C 标准库。如果某些其他应用程序未在该计算机上安装 MSVCRT.dll,您的自解压存档将无法在纯旧 Windows 上运行。它包含在每个现代 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 旁边

【讨论】:

以上是关于7-zip SFX 配置问题 [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

提取 SFX 7-Zip

7-Zip 文件夹中不存在 7zS.sfx

7-zip 自解压存档目标文件夹

用win rar压缩的文件能用7-ZIP解压吗

用win rar压缩的文件能用7-ZIP解压吗

mysql5.7 zip版的配置方法