Answers:
您需要从7-Zip下载LMZA SDK。“ installer.txt”文件包含文档:
7zSD.sfx是用于安装程序的SFX模块。7zSD.sfx使用msvcrt.dll。
用于安装程序的SFX模块允许创建安装程序。该模块将存档提取到temp文件夹,然后运行指定的程序,并在程序完成后删除临时文件。安装程序的自解压归档文件必须以3个文件的形式创建:SFX_Module,Installer_Config,7z_Archive。Installer_Config是可选文件。您可以使用以下命令来创建安装程序自解压存档:
copy /b 7zSD.sfx + config.txt + archive.7z archive.exe
您需要创建一个config.txt文件。
配置文件包含安装程序的命令。文件从字符串开始
;!@Install@!UTF-8!
,以结尾;!@InstallEnd@!
。文件必须以UTF-8编码编写。文件包含字符串对:ID_String =“值”
Title
消息标题
BeginPrompt
开始提示消息
Progress
值可以是“是”或“否”。默认值为“是”。
RunProgram
执行命令。默认值为“ setup.exe”。子字符串%% T将替换为提取文件的临时文件夹的路径
Directory
“ RunProgram”的目录前缀。默认值为“。\”
ExecuteFile
执行文件名称
ExecuteParameters
“ ExecuteFile”的参数
例如:
;!@Install@!UTF-8! Title="7-Zip 4.00" BeginPrompt="Do you want to install the 7-Zip 4.00?" RunProgram="setup.exe" ;!@InstallEnd@!
商定的解决方案是正确的,但实际上并不能帮助您解释实际需要执行的操作!我阅读了此说明以及许多其他解决方案,但找不到关于如何执行此操作的完整和完整的简单说明。
如果您像以前一样感到困惑,请阅读我的博客文章,其中提供了有关如何实现Molly7244所发布内容的逐步说明。
如何制作使用7zip -sfx开关运行setup.exe的自解压存档
引起我注意的是,链接可能会失效,因此,这是我博客中的步骤
为了简化此操作,请创建一个文件夹c:\ Install。这是我们将复制所有必需文件的地方。
您需要下载7z-Extra。
我建议使用NotePad ++编辑此文本文件,因为您需要使用UTF-8进行编码,以下说明使用的是notepad ++。
输入如下内容:
;!@Install@!UTF-8!
Title="SOFTWARE v1.0.0.0"
BeginPrompt="Do you want to install SOFTWARE v1.0.0.0?"
RunProgram="setup.exe"
;!@InstallEnd@!
编辑此名称,用您的产品名称替换[SOFTWARE v1.0.0.0]。有关安装文件的参数和选项的注释在此处
现在,您应该拥有一个包含以下3个文件的文件夹“ c:\ Install”:
这些说明是我在网上找到的,但没有任何地方可以解释上述4个步骤中的任何一个。
在命令窗口中键入以下内容
cd \
cd Install
copy /b 7zS.sfx + config.txt + Installer.7z MyInstaller.exe
在c:\ Install中查找,现在您将看到一个MyInstaller.exe
双击MyInstaller.exe,它将提示您输入消息。单击“确定”,setup.exe将运行。
现在,您已经在c:\ Install目录中进行了操作,我将创建一个“ Install.bat”文件并将复制脚本放入其中。
copy /b 7zS.sfx + config.txt + Installer.7z MyInstaller.exe
现在,您每次需要重建新版本的部署程序包时,只需编辑并运行Install.bat。
ExecuteParameters
项目config.txt
?例如:C:\Install\MyInstaller.exe some_file.txt
将执行setup.exe some_file.txt
。
以jcrawfor74的答案为基础,以下是一些其他信息:
除了7zS.sfx,您还可以使用文件7zS2.sfx。这是一个较小的版本(28 kB和140 kB),但不支持config.txt文件。因此,您只需将其保留在复制命令中即可。如果只想创建微小的配置脚本,则可以构建较小的EXE文件。
较小的SFX模块不询问任何问题。它将文件提取到另一个模块的临时文件夹中,然后找到可执行的候选文件。根据源代码(也可在下载页面上找到),在C \ Util \ SfxSetup \ SfxSetup.c中,它根据文件名和扩展名对文件进行加权,然后选择得分最高的文件。
至少在Windows 10中,两个SFX模块都自动以Administrator身份运行,并且无法对其进行配置。尽管此行为对于系统范围的设置可能是理想的,但并非总是如此。另外,此决定仅基于文件版本数据,因为其中没有包含显式告诉Windows怎么做的清单。Windows兼容性会查看该文件,并找到导致“提升”提示的字符串如“ Setup”。
如果您需要一个不要求管理员权限的SFX模块,则可以从源代码重建SFX模块,或更简单的方法是,使用像这样的资源编辑器来编辑其文件版本信息。在提到的Resource Hacker的情况下,只需从FileDescription字段中删除单词“ Setup”即可编译该文件,然后保存EXE文件。您也可以直接在7zS.sfx或7zS2.sfx文件上执行此步骤,并将其保存在某个位置,以便可以使用它来构建非高架SFX软件包。您可以使用它来完全自定义文件版本信息,以在其中输入产品名称或任何描述有效负载的内容。