0

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 论坛,找不到我的错误。

4

2 回答 2

2

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

于 2015-03-26T20:26:11.473 回答
0

根据-sfx(创建 SFX 存档)开关命令行版本用户指南

SFX_Module - 指定将与存档组合的 SFX 模块。此模块必须与 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 旁边

于 2022-01-26T12:23:13.790 回答