从 7-Zip 自解压存档 (SFX) 存档中提取后是否可以执行文件?

Mik*_*e G 48 windows compression 7-zip

我正在尝试制作一个压缩的可部署应用程序。

目前,我正在使用从我的 IDE(Visual Studio 2008 - WPF 发布的应用程序)发布的一组文件,并将它们压缩到 7-Zip SFX 存档中。

我的用户询问他们是否可以从 7-Zip exe“一键安装”。创建存档时有一个参数列表。有没有办法设置某种参数组合来调用提取的安装程序可执行文件?

不幸的是,7-Zip 文档似乎没有涵盖这种情况。我见过几个付费应用程序做类似的事情,但我试图保持我正在编写的工具没有许可代码,以便我们可以在内部使用它。

小智 40

您需要从 7-Zip下载LMZA SDK。“installer.txt”文件包含文档:

7zSD.sfx 是安装程序的 SFX 模块。7zSD.sfx 使用 msvcrt.dll。

安装程序的 SFX 模块允许创建安装程序。该模块将存档提取到临时文件夹,然后运行指定的程序并在程序完成后删除临时文件。安装程序的自解压存档必须创建为加入 3 个文件:SFX_Module、Installer_Config、7z_Archive。Installer_Config 是可选文件。您可以使用以下命令创建安装程序自解压存档:

copy /b 7zSD.sfx + config.txt + archive.7z archive.exe
Run Code Online (Sandbox Code Playgroud)

您需要创建一个 config.txt 文件。

配置文件包含安装程序的命令。文件以字符串开头, ;!@Install@!UTF-8!;!@InstallEnd@!. 文件必须以 UTF-8 编码编写。文件包含字符串对:

ID_String="值"

Title 消息标题

BeginPrompt 开始提示信息

Progress值可以是“是”或“否”。默认值为“是”。

RunProgram执行命令。默认值为“setup.exe”。子字符串 %%T 将被替换为临时文件夹的路径,其中文件被解压缩

Directory“RunProgram”的目录前缀。默认值为“.\”

ExecuteFile 执行文件名

ExecuteParameters “执行文件”的参数

例如:

 ;!@Install@!UTF-8!
 Title="7-Zip 4.00"
 BeginPrompt="Do you want to install the 7-Zip 4.00?"
 RunProgram="setup.exe"
 ;!@InstallEnd@!
Run Code Online (Sandbox Code Playgroud)

  • 请注意,“SFX 模块已移至 LZMA SDK 包”(可在 [7-zip.org](http://www.7-zip.org/download.html) 上找到)从 9.35 测试版开始。 (5认同)

jcr*_*r74 30

商定的解决方案是正确的,但它实际上无助于解释您实际需要做什么!。我阅读了这个和许多其他解决方案,但我找不到关于如何做到这一点的完整和完整的简单说明。

我和你一样困惑,请阅读我的博客文章,其中提供了有关如何实现 Molly7244 已发布内容的分步说明。

如何使用 7zip -sfx 开关制作运行 setup.exe 的自解压存档

我注意到链接可能会失效,因此,这是我博客中的步骤

步骤 1 - 设置您的安装文件夹

为方便起见,创建一个文件夹 c:\Install。这是我们将复制所有必需文件的地方。

第 2 步 - 7Zip 您的安装程序

  1. 转到包含 .msi 和 setup.exe 的文件夹
  2. 选择 .msi 和 setup.exe
  3. 右键单击并选择 7Zip -->“添加到存档”
  4. 将您的存档命名为“Installer.7z”(或您选择的名称)
  5. 单击确定
  6. 您现在应该拥有“Installer.7z”。
  7. 将此 .7z 文件复制到您的 c:\Install 目录

第 3 步 - 从 7z SDK 获取 7z-Extra sfx 扩展模块

您需要下载 7z SDK

  1. 按照这个链接去下载 7Zip
  2. 您需要下载 19.00 版本(如 @ 2019 年 12 月),因为测试版不包含正确的文件。
  3. 一个SDK下载链接。
  4. 解压 7zip SDK 文件。
  5. 将SDK的bin目录下的“7zSD.sfx”文件复制到c:\Install

第 4 步 - 设置您的 config.txt

我建议使用 NotePad++ 来编辑此文本文件,因为您需要以 UTF-8 编码,以下说明使用的是 notepad++。

  1. 使用 Windows 资源管理器转到 c:\Install
  2. 右键单击并选择“新建文本文件”并将其命名为 config.txt
  3. 右键单击并选择“使用 NotePad++ 编辑”
  4. 单击“编码菜单”并选择“以 UTF-8 编码”
  5. 输入如下内容:

    ;!@Install@!UTF-8!
    Title="SOFTWARE v1.0.0.0"
    BeginPrompt="Do you want to install SOFTWARE v1.0.0.0?"
    RunProgram="setup.exe"
    ;!@InstallEnd@!
    
    Run Code Online (Sandbox Code Playgroud)

编辑此替换 [SOFTWARE v1.0.0.0] 与您的产品名称。安装文件的参数和选项的注意事项在这里

检查点

您现在应该有一个包含以下 3 个文件的文件夹“c:\Install”:

  1. 安装程序.7z
  2. 7zS.sfx
  3. 配置文件

第 5 步 - 创建存档

我在网上找到的这些说明没有解释上述 4 个步骤中的任何一个。

  1. 打开一个cmd窗口,Window + R --> cmd --> 按回车
  2. 在命令窗口中输入以下内容

    cd \
    cd Install
    copy /b 7zSD.sfx + config.txt + Installer.7z MyInstaller.exe
    
    Run Code Online (Sandbox Code Playgroud)
  3. 查看 c:\Install,您现在将看到您有一个 MyInstaller.exe

  4. 你完蛋了

运行安装程序

双击 MyInstaller.exe,它会提示您的消息。单击“确定”,setup.exe 将运行。

PS 关于自动化的说明

既然您在 c:\Install 目录中有此工作,我将创建一个“Install.bat”文件并将复制脚本放入其中。

copy /b 7zSD.sfx + config.txt + Installer.7z MyInstaller.exe
Run Code Online (Sandbox Code Playgroud)

现在,您可以在每次需要重建部署包的新版本时编辑并运行 Install.bat。

  • 这应该是公认的答案! (3认同)

Mat*_*ert 8

您还应该查看NSIS。有了它,您可以创建一个使用与 7-Zip 相同的方法 ( LZMA )压缩的安装程序,因此它的大小应该大致相同,并且您可以完全控制安装过程。