乘风破浪,遇见最美Windows 11之现代Windows桌面应用开发 - Inno Setup如何设置退出代码

什么是Inno Setup

https://jrsoftware.org

https://github.com/jrsoftware/issrc

Inno Setup是由Jordan Russell和Martijn Laan开发的一个免费的Windows程序安装程序。Inno Setup于1997年首次推出,如今在功能设置和稳定性方面可以与许多商业安装程序相媲美,甚至超越。

image

主要特点

  • 支持2006年以来的每个Windows版本,包括。Windows 11、Windows 10、Windows 10 on ARM、Windows Server 2019、Windows Server 2016、Windows 8.1、Windows 8、Windows Server 2012、Windows 7、Windows Server 2008 R2、Windows Server 2008和Windows Vista。(不需要服务包)。
  • 广泛支持在64位版本的Windows上安装64位应用程序。x64、ARM64和Itanium架构都被支持。
  • 广泛支持管理和非管理安装的安装。
  • 支持创建一个单一的EXE来安装你的程序,以方便在线分发。也支持磁盘跨度。
  • 可调整的标准Windows向导界面。
  • 可定制的安装类型,例如:完整、最小、自定义。
  • 完整的卸载功能。
  • 文件的安装。
  • 包括对"deflate"、bzip2和7-Zip LZMA/LZMA2文件压缩的综合支持。安装程序具有比较文件版本信息、替换使用中的文件、使用共享文件计数、注册DLL/OCX的和类型库以及安装字体的能力。
  • 在任何地方创建快捷方式,包括在开始菜单和桌面上。
  • 创建注册表和.INI条目。
  • 在安装之前、期间或之后运行其他程序。
  • 支持多语言安装,包括从右到左的语言支持。
  • 支持受密码保护和加密的安装。
  • 支持数字签名的安装和卸载,包括双签名(SHA1&SHA256)。
  • 无声安装和无声卸载。
  • Unicode安装。
  • 集成预处理器选项,用于高级编译时定制。
  • 集成Pascal脚本引擎选项,用于高级运行时的安装和卸载定制。
  • 完整的源代码可从GitHub获得。
  • 占用空间小:在包含所有功能的情况下,只有大约1.5MB的开销。
  • 所有的功能都有完整的文档。
  • 微软Visual Studio CodeEmbarcardero Delphi使用。

它真的是免费的吗,甚至用于商业用途?

是的,它可以完全免费使用,即使是在部署商业应用程序时

(注意:"Completely free of charge"不能与"completely free"相混淆。Inno Setup是有版权的软件,不是公共领域的软件。在分发和使用上有一些限制;详情请见LICENSE.TXT文件)。

创建安装程序

安装是通过脚本来创建的,它是ASCII或Unicode(UTF-8编码的BOM)文本文件,格式有点类似于.INI文件。(不,它并不像你想象的那么复杂!)。

脚本的扩展名是".iss"(指Inno Setup Script)。脚本控制安装的每一个方面。它指定了哪些文件要被安装,安装在哪里,要创建哪些快捷方式,以及它们的名称,等等。

脚本文件通常在 "Inno Setup Compiler "编译器IDE程序中编辑。完成脚本的编写后,下一步也是最后一步就是在编译器集成开发环境中选择 "编译"。这样做的目的是根据您的脚本创建一个完整的、可随时运行的设置程序。默认情况下,这个程序是在包含脚本的目录下一个名为 "输出 "的目录中创建的。

为了让你了解这一切是如何进行的,启动编译器集成开发环境,单击 "文件|打开",然后选择位于Inno Setup目录下的Examples子目录中的一个脚本文件。(将示例脚本作为你自己脚本的模板可能会有帮助)。

脚本格式概述

Inno设置脚本被安排成几个部分。每个部分控制安装的不同方面。通过指定用方括号[]括起来的章节名称来启动一个章节。每个部分都有任意数量的条目。

主要有两种类型的部分:如[Setup],其条目包含指令名称和值(形式为指令=值);如[Files],其条目被划分为参数。

下面是一个例子:

[Setup]
AppName=My Program

[Files]
Source: "MYPROG.EXE"; DestDir: "{app}"

注意,指定同名的多个部分是合法的。

你可以在脚本中加入 "注释"(编译器会忽略这些注释),方法是在每一行的开头加上一个分号。比如说

; This is a comment. I could put reminders to myself here...

支持类似于C语言的#include指令,它可以从一个单独的文件中拉入#include指令位置的脚本中的行。其语法是

#include "filename.txt"

如果文件名不是完全合格的,编译器将在包含#include指令的文件的同一目录下寻找它。文件名可以以 "compiler: "为前缀,在这种情况下,它将在编译器目录下寻找该文件。

支持#preproc指令,它指定是使用只支持上述#include指令的内置预处理器,还是使用支持更多指令的Inno Setup Preprocessor(ISPP)。语法是:。

#preproc builtin
#preproc ispp

默认情况下,脚本使用ISPP(如果有的话),而.isl文件使用内置的预处理器。

如果使用Unicode文件,它必须是用BOM编码的UTF-8编码。

设置退出代码

https://documentation.help/Inno-Setup/topic_setupexitcodes.htm

从Inno Setup 3.0.3开始,设置程序可能会返回下列退出代码之一。

退出代码 场景说明
0 设置成功运行至完成,或者使用了/HELP/?命令行参数。
1 安装时初始化失败
2 用户在实际安装开始前点击了向导中的"取消",或者在打开的"这将安装..."信息框中选择了"否"。
3 在准备进入下一个安装阶段时发生了致命的错误(例如,从显示预安装向导页面到实际安装过程)。除非在最不寻常的情况下,例如内存或Windows资源耗尽,否则这种情况不应该发生。
4 在实际安装过程中发生了一个致命的错误。注意:导致显示Abort-Retry-Ignore框的错误不是致命的错误。如果用户在这样的信息框中选择了中止,将返回退出代码5。
5 用户在实际安装过程中点击了"取消",或者在"中止-重试-忽略"框中选择了"中止"。
6 安装过程被调试器强行终止(在IDE中使用了"运行
7 准备安装阶段确定Setup不能继续安装。(在Inno Setup 5.4.1中首次介绍)
8 准备安装阶段确定Setup不能继续安装,需要重新启动系统以纠正这个问题。(首次在Inno Setup 5.4.1中介绍)

参考

posted @ 2022-05-26 11:57  TaylorShi  阅读(296)  评论(0编辑  收藏  举报