Inno Setup 2 :语法解析(一)
admin
2023-01-31 02:01:31
0

背景概述

  Inno Setup安装程序用编译脚本的方式创建,脚本其实就是一个类似 .INI 文件格式的 ASCII 码文本文件(它不像你想象的那么复杂),其支持Pascal语言。 Unicode Inno Setup支持 UTF-8 编码文本文件。
  脚本用一个“.iss” (表示 Inno Setup 脚本) 的扩展名。脚本控制着安装程序的所有方面。由它指定哪些文件将被安装到什么地方,在哪里创建快捷方式,且被命名为什么。
  脚本文件一般可以用安装程序编译器程序内置的编辑器进行编辑。在你编写完脚本后,下一个最终步骤就是选择安装程序编译器中的“编译”。创建完成后,就可以运行根据你脚本编译的安装程序了。按默认,这个安装程序创建在包含脚本文件目录下的名为“输出”目录中。
  如果你想看看它是怎样工作的,启动安装程序编译器,单击“文件 | 打开”,并选择位于 Inno Setup 安装目录下的 Examples 子目录中的一个脚本文件。(你也可以将这些示例脚本作为你自己编写脚本的模板。)

脚本格式概述

  Inno Setup准备了一些。每个段控制一个不同方面的安装程序部分。每个段使用包含在括号 [ ] 中的段名开始,每个段里是一些相关的条目
  其中有两种不同类型的段:有些像[Setup]段,条目包含指令名和值(格式为Directive=Value),还有一些像[Files]段,条目被参数分隔。如下示例:

[Setup]
AppName=My Program

[Files]
Source: "MyProg.exe"; DestDir: "{app}"

注意,在脚本中指定多个相同名字的段是合法的。

注释

你可以通过在行起始位置价格分号“;”来编写注释(编译时注释将被忽略)。如下示例:

;这是一条注释...

脚本支持A C-like #include指令,用于将文件包含到脚本中。如法如下:

#include "filename.txt"

如果文件名中未提供完整的路径,编译将在包含#include指令的同一目录中查找。文件名用"compiler:"作为前缀的场合中,将在编译器目录中查找文件。

语法解析

1.段中参数

  所有脚本中的段,除[Setup]、[Messages]、[CustomMessages]和[LangOptions]段外,在包含的行中都可有多个各自的参数。下列是[Files]段示例:

[Files]
Source: "MyProg.exe"; DesDir: "{app}"
Source: "MyProg.chm"; DestDir: "{app}"
Source: "MyProg.txt"; DestDir: "{app}"; Flags: isreadme

每个参数都有一个名字组成,然后跟随一个冒号,然后是一个值。除非特别说明,如果参数未指定,将设定为一个默认值。一行中多个参数用分号隔开,并且可以以任何次序出现。
  参数的值如果包含一个用户定义的字符串时,一般来说用双引号(“”)包含,例如文件名。引号使用不是必须的,但这样做可能会在值中的首位或末位被加入空格,已及分号和双引号。
  在一个双引号中嵌入一个引用值,需要使用两个连续的双引号。示例如下:

"This "" contains "" embedded "" quotes"

安装编译器会将它视作:

This " contains " embeded " quotes

如果你希望参数值是一个单个双引号字符,用四个双引号字符:""""。外面的两个用于包含引用的字符,内部两个用于嵌入单个的双引号字符。

2.常量

  项目脚本中大部分地方可以嵌入常量,这些预定义的字符被包含在括弧{ }中。安装程序或卸载程序会根据用户选择和系统配置将这些常量翻译为文字值。例如,{win}在大部分系统中会被翻译为"C:\WINDOWS"。
  字符 "{" 通常视作为常量开始。如果你想将它作为实际字符使用,需要使用连续两个 "{"。(对于 "}" 则不需要)
  当在常量后面直接跟随一个反斜杠时,如果常量的值末端已经包含了一个反斜杠号,安装程序或卸载程序将自动删除该反斜杠号。因此,如果一个特殊常量值是 "C:\",{constantname}\file将翻译为 "C:\file",而不是 "C:\file"。如果你想防止意外,将反斜杠放入 {}字符中,如 {app}{}。
  常量包括目录常量外壳文件常量其他常量。常用常量列举如下:

  • {app}:用户在安装向导中的选择目标位置页中选定的应用程序目录。如:你在项目中指定了{app}\MyProg.exe,而用户选择了"D:\MyProg"作为应用程序目录,则安装程序实际安装在了"D:\MyProg\MyProg.exe"路径。
  • {src}:安装程序文件(即安装包路径)所在目录。如:如在项目中使用了{src}\MyProg_Install.exe,而用户选择在"F:\"目录进行安装。那么,{src} 值当然不会变,而安装程序会将 {app} 值修改为"F:\MyProg.exe"。
  • {srcexe}:安装程序文件的完成路径,如:"D:\FeiQ\FeiQ.exe"。
  • {uninstallexe}:由安装程序提取的下载程序的完整路径名,如"D:\FeiQ\uninstall000.exe"。
  • {log}:日志文件的名称,如果logging没启用,则返回一个空字符。

3.安装脚本段

  安装脚本段 用于解析脚本中各个的含义及使用方法。后事如何,且听下回分解。

相关内容

热门资讯

济南一广场突现“知了大军”密密... 近日,有济南市民在社交媒体发布视频称:在当地彩石附近的一处广场地面上密密麻麻聚集了很多类似知了的昆虫...
伊朗军队:打击科威特境内多处美... 当地时间23日,伊朗军队在一份公告中指出,几小时前,伊朗军队对科威特多哈营地的美军弹药和后勤仓库、阿...
洛阳“珠宝大王”年永安沉浮:涉... 澎湃新闻记者 王鑫 实习生 林晨 林宜之河南洛阳的“珠宝大王”年永安淡出公众视野多年后,这个曾把“金...
聚焦核心AI项目,亚马逊裁撤其... 亚马逊在本周三宣布新动态,公司正在裁撤通用人工智能(AGI)部门的部分员工,这标志着亚马逊在持续向人...
上海交大发布第七届“十大科技进... 7月22日,上海交通大学第七届“十大科技进展”在闵行大零号湾成果转化中心发布。本届入选成果包括6项基...
MEMS微纳加工进入共享时代:... 一、行业背景:科研与中试的"产线困境" 一、行业背景:科研与中试的"产线困境" 在半导体与微纳制造领...
行业首款水冷+185Hz超高刷... 一、前言:9英寸机身里塞下了整个Steam库 拿到红魔游戏平板5 Pro之前,我对它没太大期待,正常...
雷军亲自下场讲物理!小米澎程不... 7月22日,小米CEO雷军在微博抛出“灵魂三问”,9系全尺寸大空间四驱SUV你选哪个? 1. 大电池...
最新民调:特朗普的支持者对伊朗... 美伊谅解备忘录失效,停火局面被打破,双方最近大打出手。据美媒报道,美国最新民调显示,特朗普的支持者对...
专业可靠的AirTag平替销售... 智能防丢市场新选择:AirTag平替产品的核心选购逻辑与可靠源头厂商解析 在苹果AirTag带动下...