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 配置问题 [关闭]的主要内容,如果未能解决你的问题,请参考以下文章