【问题标题】:How do I silently install a 7-zip self-extracting archive to a specific directory?如何以静默方式将 7-zip 自解压存档安装到特定目录?
【发布时间】:2013-07-16 21:33:19
【问题描述】:

Ruby Devkit 是一个基于 7-zip 的自解压存档。

我想静默调用它,而无需安装 7-Zip 以将文件解压缩到我选择的文件夹中,以便我可以编写安装脚本。我想它是这样的:

cmd> DevKit-tdm-32-4.5.2-20111229-1559-sfx.exe /silent /dir="C:\DevKit"

但这当然行不通。我必须使用哪些命令行标志以静默方式将此存档解压缩到我选择的文件夹中?

【问题讨论】:

    标签: command-line 7zip self-extracting


    【解决方案1】:

    2017 年更新:来自 7zsfx.info 的工具现已失效。


    08 至 2015 年的原始旧帖

    如果您尝试提取 7zip SFX (http://7zsfx.info/) 存档:

    sfx.exe -y -gm2 -InstallPath="C:\\your\\target\\path"

    Switches Docu

    • -y隐藏一些提示
    • -gm2 完全隐藏提取对话框(静默模式)
    • -InstallPath 设置目标路径(需要双反斜杠)

    7z 音效指南

    创建 SFX 包的官方方法是使用-sfx[{name}] : Create SFX archive

    这意味着创建的 SFX 包使用两种 CLI 选项:

    1. 7zSFX 的官方 CLI 选项和​​i>
    2. 在创建包之前,您在配置中配置的传递选项。

      您可以将其视为对打包可执行文件的参数转发。这个参数转发取决于SetEnvironmentRunProgramm的配置!

    全过程:

    1. 创建存档Package.7z:
      • 包含Installer.msi 和额外的crap.cab 文件。
    2. 创建配置文件config.txt:

      ;!@Install@!UTF-8!
      Title="Installation"
      SetEnvironment="strInstall=hidcon:Installer.msi /qn"
      RunProgram="%strInstall%"
      ;!@InstallEnd@!
      
    3. 现在我们通过将 sfx+config+archive 组合成一个可执行文件来生成Test.exe

      copy /b 7zS.sfx + config.txt + Package.7z SfxInstaller.exe

      注意:7zS.sfx 来自官方的 7zip 额外包。

    4. 现在,当您运行 SfxInstaller.exe 时,您可以传递例如 /lv InstallerLog.txt 来创建安装日志,例如

      SfxInstaller.exe /lv InstallerLog.txt

    【讨论】:

    • 好吧,周围有多个 7zip SFX 构建器。他们每个人都有一点不同的 CLI 选项。 - 我引用的工具(7zip SFX (7zsfx.info))同时已经死了……我会更新帖子。
    • 通常,如果您使用 /h 运行这些东西会为您提供命令行(就像 msi 一样),但 7 zip 不会这样做。有点麻烦。
    【解决方案2】:

    试试这个:

    C:\> DevKit-tdm-32-4.5.2-20111229-1559-sfx.exe -o"C:\DevKit" -y
    

    【讨论】:

    • 顺便说一句,如果你想解压到你当前的工作目录,在 o 参数中传递 ".\DevKit"
    • 有没有办法等待提取完成?一旦出现进度对话框,命令就会退出。
    • @TasosLaskos,把start /b /wait放在命令前面就行了
    • 我怀疑这取决于存档的制作方式,但是对于例如 GitHub 便携式 Git distrubution 7z.exe 文件,Jens A Koch 的答案比这个更好(-InstallPath 而不是-o)
    【解决方案3】:

    由于使用的是 7-zip,只需在 .exe 中创建一个自解压文件。并使用开关 -o 和 -y 运行它。

    我用它来节省 USB 驱动器的空间。例如,我不经常运行 VDiskAir 应用程序。我创建了一个 VDiskAir 程序文件夹的自解压存档(大约 15MB):

    7z a -SFX -mx9 VDiskAir.exe [VDiskAir folder path]
    

    注意:这里使用 -mx9 来最大化压缩。

    我创建了一个DOS BAT来运行创建的自解压VDiskAir.exe(大约5MB),将其保存为VDiskAir.bat 包含:

    VDiskAir.exe -o%TMP% -y
    
    %TMP%\VDiskAir\VDisk_Air.exe
    

    我不担心以这种方式运行 VDiskAir 后 VDiskAir 文件夹(在使用 VDiskAir 程序文件提取的 %TMP% 中)被取消删除,因为我有一个 BAT 脚本可以在关闭/启动时清除 %TMP%。

    【讨论】:

    • 对不起,这两行出现在一行上,应该是:
    【解决方案4】:

    以下是我用于 Autodesk 产品的内容:

    Start /W %~dp0AutoCAD_2018_French_LP_Win_64bit_dlm.sfx.exe -suppresslaunch -d C:\Autodesk
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-02-23
      • 2015-06-16
      • 2013-01-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多