如何制作自解压并自动运行的安装程序?

62

目前我的用户需要下载一个zip文件,解压缩后运行setup.exe - 我希望能让他们只需一次点击即可完成这个过程。使用http://www.wikihow.com/Use-7Zip-to-Create-Self-Extracting-excutables,我可以创建一个自解压exe文件,但它实际上并不会运行安装程序。

从这篇问题中

Why does 7zip Ignore my InstallPath when making a SFX installer?

看起来我还需要一个.sfx文件,所以我从其他问题复制了一个,并创建了一个包含以下内容的文件:

;!@Install@!UTF-8!
InstallPath="C:\\test"
GUIMode="2"
RunProgram="setup.exe"
;!@InstallEnd@!

并将 setup.sfx 文件添加到归档文件中,与其他文件一起。

setup.ini
setup.exe
setup.ico
install.jar
JVM32 (folder)

但这没有任何影响,我还需要做什么?

补充问题,我也有WinRar,使用7Zip或Winrar会影响最终用户体验吗?

3个回答

131
I have created step-by-step instructions on how to do this as I was also confused about how to get this working. 如何使用7zip-sfx开关制作自解压缩文件并运行setup.exe Here are the steps.
Step 1 - 设置安装文件夹
为了使这个过程更容易,创建一个名为c:\Install的文件夹。这是我们将复制所有所需文件的地方。
Step 2 - 7Zip您的安装程序
1. 进入包含.msi和setup.exe的文件夹 2. 选择.msi和setup.exe 3. 右键单击并选择7Zip -> "添加到压缩文件" 4. 命名您的存档为"Installer.7z"(或您选择的名称) 5. 点击确定 6. 您现在应该有"Installer.7z"。 7. 将此.7z文件复制到c:\Install目录。

步骤三 - 获取7z-Extra sfx扩展模块

您需要下载7zSD.sfx

  1. 这里下载LZMA软件包中的一个。
  2. 解压软件包并在bin文件夹中找到7zSD.sfx
  3. 将文件"7zSD.sfx"复制到c:\Install目录下。

步骤四 - 配置您的config.txt文件

我建议使用NotePad++编辑此文本文件,因为您需要使用UTF-8编码,以下说明使用notepad++。

  1. Using windows explorer go to c:\Install
  2. right-click and choose "New Text File" and name it config.txt
  3. right-click and choose "Edit with NotePad++
  4. Click the "Encoding Menu" and choose "Encode in UTF-8"
  5. Enter something like this:

    ;!@Install@!UTF-8!
    Title="SOFTWARE v1.0.0.0"
    BeginPrompt="Do you want to install SOFTWARE v1.0.0.0?"
    RunProgram="setup.exe"
    ;!@InstallEnd@!
    
Edit this replacing [SOFTWARE v1.0.0.0] with your product name. 有关安装文件参数和选项的注释在这里

检查点

您现在应该有一个名为“c:\ Install”的文件夹,其中包含以下3个文件:

  1. Installer.7z
  2. 7zSD.sfx
  3. config.txt

步骤 5 - 创建归档文件

我在网上找到了这些指令,但是没有任何地方解释上面的四个步骤。

  1. Open a cmd window, Window + R --> cmd --> press enter
  2. In the command window type the following

    cd \
    cd Install
    copy /b 7zSD.sfx + config.txt + Installer.7z MyInstaller.exe
    
  3. Look in c:\Install and you will now see you have a MyInstaller.exe

  4. You are finished

运行安装程序

双击MyInstaller.exe,它会提示您的消息。点击“确定”即可运行setup.exe。

附:自动化说明

现在您已经将其安装在c:\Install目录中,我建议创建一个名为“Install.bat”的文件,并将复制脚本放入其中。

copy /b 7zSD.sfx + config.txt + Installer.7z MyInstaller.exe

现在,每当您需要重新构建部署包的新版本时,只需编辑并运行Install.bat即可。

2
感谢您提供这个很好的答案。我正在尝试使用这种技术来捆绑一个Node Webkit应用程序。但是我遇到了一个问题,在提取并成功运行应用程序后,几分钟后关闭应用程序,就会弹出一个程序兼容性助手窗口,显示“该程序可能未正确安装”。程序:7z Setup SFX。发布者:Igor Pavlov... 我猜这是因为我没有运行实际的Windows安装程序,而是使用了不同的执行器。您能想到解决这个问题的方法吗? - ilaif
1
SFX未包含在16.x版本中的原因是因为它内置使用了“-sfx”标志(或在使用GUI时使用复选框)进行压缩! - Peter
13
未来的人注意:SFX 文件已经移动到LZMA sdk。目前,SFX 文件在档案的 bin 文件夹中,自述文件位于 DOC/installer.txt。 - Starwarswii
5
对于ilaif:每当你有一个名字为“install.exe”、“setup.exe”或“update.exe”的Windows安装程序,并且你不写入注册表时,Windows会出现“程序可能未正确安装”的提示。 解决方法: 重命名你的安装程序并避免使用install/setup/update这些词。例如,将你的安装程序重命名为inst.exe,就可以正常运行了。我在Windows 7上测试过这个方法。 - user3652083
1
@Woody,答案在我自己的回答之后6个月才出现,那时我已经选择了WinRar,但是从记忆中得知,7zip安装程序提供给最终用户的界面比WinRar版本更丑陋。 - Paul Taylor
显示剩余4条评论

30

好的,我已经搞定了,希望这些信息对你有用。

  1. 首先我现在意识到,自解压缩文件不仅会在双击时开始提取,而且不需要在用户计算机上安装任何提取应用程序,因为提取器代码在归档本身中。这意味着,您将获得不同的用户体验,这取决于您使用的应用程序创建sfx的方式。

  2. 我选择了WinRar,如下所示,这不需要您创建sfx文件,一切都可以通过GUI创建:

    • 选择文件,右键单击并选择添加到归档
    • 使用浏览..在上面的文件夹中创建档案
    • 更改归档格式为Zip
    • 启用创建SFX归档
    • 选择高级选项卡
    • 选择SFX选项
    • 选择设置选项卡
    • 提取后运行字段中输入setup.exe
    • 选择模式选项卡
    • 启用解压缩到临时文件夹
    • 选择文本和图标选项卡
    • 输入一个更适当的任务标题
    • 选择确定
    • 选择确定

生成的exe文件将解压缩到临时文件夹,然后启动安装程序。


3
使用WinRAR自解压程序的一个小提示:virustotal.com 上的多个安全软件可能会将其检测为通用的特洛伊木马。 - script'n'code
有人提出了如何解决安全问题的解决方案吗? - sonja

2
使用开源的7zip SFX-Packager很简单 - 只需将文件夹“拖放”到它上面,它就会创建一个便携式/自解压包。请参考这里了解更多信息。

链接已过期。现在有一个新的链接(7-ZIP SFX Maker)-https://sourceforge.net/projects/sfx-maker/files/latest/download - Paweł Iwaneczko

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接