我正在尝试制作一个可压缩部署的应用程序。
目前,我正在从我的 IDE(Visual Studio 2008 - WPF 发布的应用程序)中获取一组文件,并将它们压缩到 7-Zip SFX 存档中。
我的用户询问他们是否可以从 7-Zip exe 中“一键安装”。创建存档时有一个参数列表。有没有办法设置某种参数组合来调用提取的安装程序可执行文件?
不幸的是,7-Zip 文档似乎没有涵盖这种情况。我见过几个付费应用程序做类似的事情,但我试图让我编写的工具不包含授权代码,以便我们可以在内部使用它。
答案1
您需要下载7-Zip 的 LMZA SDK。“installer.txt”文件包含文档:
7zSD.sfx 是安装程序的 SFX 模块。7zSD.sfx 使用 msvcrt.dll。
安装程序的自解压模块允许创建安装程序。此类模块将存档提取到临时文件夹,然后运行指定的程序并在程序完成后删除临时文件。安装程序的自解压存档必须由 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@!
答案2
商定的解决方案是正确的,但它实际上无助于解释您真正需要做什么!我读过这个和许多其他解决方案,但我找不到关于如何做到这一点的完整而简单的说明。
如果您和我一样感到困惑,请阅读我的博客文章,其中提供了有关如何实现 Molly7244 所发布内容的分步说明。
如何制作一个使用 7zip -sfx 开关运行 setup.exe 的自解压档案
我注意到链接可能会失效,因此,以下是我的博客中的步骤
步骤 1 - 设置安装文件夹
为了方便起见,请创建一个文件夹 c:\Install。我们将把所有必需的文件复制到此处。
步骤 2 - 7压缩安装程序
- 转到包含 .msi 和 setup.exe 的文件夹
- 选择 .msi 和 setup.exe
- 右键单击并选择 7Zip --> “添加到存档”
- 将您的档案命名为“Installer.7z”(或您选择的名称)
- 单击“确定”
- 您现在应该有“Installer.7z”。
- 将此 .7z 文件复制到 c:\Install 目录
步骤 3 - 从 7z SDK 获取 7z-Extra sfx 扩展模块
您需要下载 7z SDK
- 点击此链接前往下载 7Zip
- 您需要下载 19.00 版本(截至 2019 年 12 月),因为测试版不包含正确的文件。
- ASDK 下载关联。
- 解压缩 7zip SDK 文件。
- 将文件“7zSD.sfx”从 SDK 的 bin 目录复制到 c:\Install
步骤 4 - 设置 config.txt
我建议使用 NotePad++ 来编辑此文本文件,因为您需要以 UTF-8 进行编码,以下说明使用 notepad++。
- 使用 Windows 资源管理器转到 c:\Install
- 右键单击并选择“新文本文件”,并将其命名为 config.txt
- 右键单击并选择“使用 NotePad++ 编辑
- 单击“编码菜单”并选择“以 UTF-8 编码”
输入如下内容:
;!@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] 替换为您的产品名称。安装文件的参数和选项说明请参见此处
检查点
您现在应该有一个文件夹“c:\Install”,其中包含以下 3 个文件:
- 安装程序.7z
- 7zS.sfx
- 配置.txt
步骤 5 - 创建档案
我在网上找到了这些说明,但没有任何地方解释上述 4 个步骤中的任何一个。
- 打开一个 cmd 窗口,Window + R --> cmd --> 按 Enter
在命令窗口中输入以下内容
cd \ cd Install copy /b 7zSD.sfx + config.txt + Installer.7z MyInstaller.exe
查看 c:\Install,你会看到有一个 MyInstaller.exe
你完蛋了
运行安装程序
双击 MyInstaller.exe,系统会提示您的信息。单击“确定”,setup.exe 将运行。
PS 关于自动化的说明
现在您已经在 c:\Install 目录中运行它,我将创建一个“Install.bat”文件并将复制脚本放入其中。
copy /b 7zSD.sfx + config.txt + Installer.7z MyInstaller.exe
现在,每次您需要重建部署包的新版本时,只需编辑并运行 Install.bat 即可。
答案3
答案4
这是否支持复制和替换文件(Windows 壁纸)以及将徽标复制到设备上的某个位置的概念?
示例:akeown /fc:\windows\WEB\wallpaper\Windows\img0.jpg takeown /f C:\Windows\Web\4K\Wallpaper\Windows*.* icacls c:\windows\WEB\wallpaper\Windows\img0.jpg /Grant Administrators:(F) icacls C:\Windows\Web\4K\Wallpaper\Windows*.* /Grant Administrators:(F) del c:\windows\WEB\wallpaper\Windows\img0.jpg del /q C:\Windows\Web\4K\Wallpaper\Windows*.* copy "%~dp0img0.jpg" c:\windows\WEB\wallpaper\Windows\img0.jpg copy "%~dp04k*.*" C:\Windows\Web\4K\Wallpaper\Windows