7zip - 使用指定的解压路径创建自解压档案 (sfx)

7zip - 使用指定的解压路径创建自解压档案 (sfx)

我正在尝试获取 7zip SFX 存档以创建可执行文件。我能够获取可执行文件。但是当我运行它时,它会给出下载路径Extract to:。我希望默认更改为%AppData%\Roaming。下面的屏幕截图将展示我正在尝试做的事情。

7zip 设置

提取至:对话框

档案库中没有setup.exe任何东西,只有几个需要转至Roaming文件夹的文件。对于我们的许多用户来说,这很方便,他们无需指定路径即可获取此更新。(当用户不必指定路径时,总是很容易,否则,根据我的经验,用户可以选择最不寻常的路径!!)

更新

这是我到目前为止尝试过的。我的配置文件内容是

;!@Install@!UTF-8!
InstallPath="%AppData%\\Roaming\\Notepad++"
;!@InstallEnd@!

这是命令行调用。

copy /b 7zS.sfx + config.txt + Installer.7z myinstaller.exe

不幸的是它不起作用。它给出了以下路径。应该是%AppData%\\Roaming\\Notepad++

![提取路径]

答案1

尝试7z 自解压文件生成器,免费,支持命令行参数,还可以指定提取路径GUI 主选项卡

“主要”选项卡

答案2

我想将提取路径更改为%AppData%\Roaming默认路径。

您需要从以下位置下载“修改后的模块”7z 自解压文件生成器(sourceforge)。

检查左侧链接用于文档(请注意这些链接和下面的文本来自https://web.archive.org/

在您的配置文件中:

InstallPath="%AppData%\Roaming"

配置文件参数

InstallPath="提取路径"

设置解压路径,解压后不会删除解压文件夹。

如果InstallPath配置文件中不存在该值或从交互式提取对话框中删除了该路径,则存档将被提取到临时文件夹。提取并执行所有命令后,此临时文件夹将被删除。

允许使用环境变量(除%%T和 中定义的变量外SetEnvironment,如果%%T其中任何一个使用了 )。路径中必须使用双反斜杠。例如:

InstallPath="C:\\Windows\\system32\\test"

或者

InstallPath="%PROGRAMFILES%\\test"

允许使用相对路径。当前文件夹是启动 SFX 存档的程序的执行文件夹。例如,

InstallPath="test"

在执行启动 SFX 存档的程序的文件夹中创建一个名为“test”的文件夹。所有文件都将提取到“test”文件夹中。另一方面,

InstallPath="."

将存档内容提取到启动 SFX 存档的程序所在的文件夹中。此外,

InstallPath="%%S"

将档案内容提取到 SFX 所在的文件夹。

如果您只需要将档案内容提取到某个文件夹,则需要InstallPath在配置文件中指定一个值。

在这种情况下,您不应在配置文件中指定RunProgram或。或可以在配置文件中指定,但不应通过命令行或使用 [SHIFT] 键调用。ExecuteFileAutoInstallAutoInstallX

如果您指定RunProgramExecuteFile或调用AutoInstallAutoInstallX,则提取后将启动指定的可执行文件。

来源配置文件参数

答案3

只需使用-y -o<PathToExtract>Setup.exe -y -oc:\abc

答案4

(以防万一仍有人试图这样做)

我无法弄清楚如何将 SFX 存档提取到特定位置,而无需指定 setup.exe 或类似文件。

"-y -oPATH"我通过使用所示的开关实现了我的目标这里并将常规 SFX 存档存储在批处理文件中(将文件存储在批处理文件中

结果不是一个 EXE,而是一个 CMD 文件。(但是只是CMD 文件)

方法

  • 创造源程序
  • 创建和编辑脚本
  • 创造合并命令
  • 执行合并命令

合并命令顾名思义,结合 script.cmd 和 source.exe 来创建输出命令

output.cmd 是结果,运行时会复制源程序将其自身移到临时位置,使用指定位置的参数运行它,然后删除临时文件。

源程序

这是使用“制作 sfx 存档”选项创建的 7z SFX 存档。它包含您要提取的所有文件。

脚本

您需要将 {target} 替换为您想要的位置。例如:C:\Example

必须exit /b保存此文件之前,请添加一个空白的新行。

;;;===,,,@echo off
;;;===,,,findstr /v "^;;;===,,," "%-f0" > "%temp%\tempdata.exe"
;;;===,,,start /wait "" "%temp%\tempdata.exe" -y -o"{target}"
;;;===,,,del /f /q "%temp%\tempdata.exe"
;;;===,,,exit /b

合并命令

copy /a script.cmd  /b source.exe /b output.cmd

相关内容