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:"作为前缀的场合中,将在编译器目录中查找文件。
所有脚本中的段,除[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
如果你希望参数值是一个单个双引号字符,用四个双引号字符:""""。外面的两个用于包含引用的字符,内部两个用于嵌入单个的双引号字符。
项目脚本中大部分地方可以嵌入常量,这些预定义的字符被包含在括弧{ }中。安装程序或卸载程序会根据用户选择和系统配置将这些常量翻译为文字值。例如,{win}在大部分系统中会被翻译为"C:\WINDOWS"。
字符 "{" 通常视作为常量开始。如果你想将它作为实际字符使用,需要使用连续两个 "{"。(对于 "}" 则不需要)
当在常量后面直接跟随一个反斜杠时,如果常量的值末端已经包含了一个反斜杠号,安装程序或卸载程序将自动删除该反斜杠号。因此,如果一个特殊常量值是 "C:\",{constantname}\file将翻译为 "C:\file",而不是 "C:\file"。如果你想防止意外,将反斜杠放入 {}字符中,如 {app}{}。
常量包括目录常量、外壳文件常量和其他常量。常用常量列举如下:
安装脚本段 用于解析脚本中各个段的含义及使用方法。后事如何,且听下回分解。
另外有需要云服务器可以了解下创新互联cdcxhl.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。