我正在尝试获取 7zip SFX 存档以创建可执行文件。我能够获取可执行文件。但是当我运行它时,它会给出下载路径Extract to:
。我希望默认更改为%AppData%\Roaming
。下面的屏幕截图将展示我正在尝试做的事情。
档案库中没有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] 键调用。ExecuteFile
AutoInstall
AutoInstallX
如果您指定
RunProgram
或ExecuteFile
或调用AutoInstall
和AutoInstallX
,则提取后将启动指定的可执行文件。
来源配置文件参数
答案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