近来在使用INNO和NSIS打包软件。收集一篇INNO教程如下:
文档约定
创建安装程序
创建脚本
段内参数
一些常量
公共参数
安装脚本段
[Setup] 段
[Dirs] 段
[Files] 段
[Icons] 段
[INI] 段
[InstallDelete] 段
[Messages] 段
[Registry] 段
[Run] 段
[UninstallDelete] 段
[UninstallRun] 段
其它问题:
其它注意事项
在命令行执行编译器
安装命令行参数
文档约定
"Windows 95/NT 4+"
这是 Windows 95, 98, NT 4.0, 2000 以及更高版本的简称。
"Windows 98/NT 4+"
这是 Windows 98, NT 4.0, 2000 以及更高版本的简称。
"Windows NT"
无论何时提及 Windows NT,除非有其他说明,他总是包括 Windows 2000(亦即 NT 5.0)。
等宽字体
当你看见文档里的等宽字体,说明他是脚本文件的引用。
创建安装程序
安装程序是以脚本(script)的方式来创建的。(不要一看见“脚本”这个术语就害怕,你只需要花上几分钟的时间就可以掌握它的要领!)
该脚本文件的扩展名是“.iss”(意思是 Inno Setup Script)。脚本文件控制了安装程序的每一个外观界面。它指定了哪些文件要被复制及其位置,创建什么应用程序图标和为它们命名等等。
脚本文件通常可以用安装编译程序内建的编辑器来创建和编辑,完成以后写入脚本文件,下一步也是最后一步是在安装编译器的菜单里选择“编译”(Compile)。创建完成以后该干什么呢?准备运行这个基于该脚本的安装程序吧!默认情况下,这个文件被创建在脚本文件所在文件夹的“OUTPUT”子文件夹下。
要了解脚本文件是如何工作的,运行安装编译器,单击“文件\打开”选择一个位于 Inno Setup 文件夹的 Samples 子文件夹下的示例脚本文件。(用这些示例文件作为你自己的脚本文件的模板可能示非常有用处的。)
参见
创建脚本
创建脚本
一个 Inno Setup 脚本是一个简单的 ASCII 文本文件。它的格式非常类似于 .INI 文件,如果你有这方面的经验你就会发现学习起来有多么的容易。
就象下面的示例所显示的,脚本文件包括“段”(sections)和“项”(entries)。段名的两边始终有一对中括号“[]”,在 [Setup] 段中的每一项包括一个关键字和他的值,关键字和值用等于号“=”连接在一起。下面的这个示例说明了脚本文件是如何被组织的:
[在这里添加段名,例如 Setup]
这是一个关键字=这是一个值
这是其它的关键字=这是其它的值
[在这里添加段名,例如 Files]
Source: "MYPROG.EXE"; DestDir: "{app}"
你也可以在你的脚本文件中加上注释(这些注释将会被安装编译器忽略),方法是在每一行注释的行首加上一个分号“;”,例如:
; 这是一行注释,我可以在这里写上提醒我的内容...
参见
段内参数
一些常量
[Setup] 段
[Dirs] 段
[Files] 段
[Icons] 段
[INI] 段
[InstallDelete] 段
[Messages] 段
[Registry] 段
[Run] 段
[UninstallDelete] 段
[UninstallRun] 段
段内参数
脚本文件中的所有的段,除了[Setup],都是以行位单位,每行分为若干个参数。下面是一个 [Files] 段的示例:
[Files]
Source: "MYPROG.EXE"; DestDir: "{app}"
Source: "MYPROG.HLP"; DestDir: "{app}"
Source: "README.TXT"; DestDir: "{app}"; Flags: isreadme
每一个参数都有一个名称,后面紧跟一个冒号,然后是它的值。除非有其它的说明,参数是可选的,如果参数没有指定则取它们的默认值。如果一行内有多个参数则用分号将其分开 (还可以加一个空格符),他们可以按任何顺序排列出来。
参数的值多数情况下是用引号扩起来("),但使用引号也是可选的。然而如果这个参数的值里面的前导符号或者后缀符号是空格的话就必须加上引号了。另外需要说明的是使用内嵌的分号和引号,要插入一个引号则使用两个连续的引号来代替。例如,下面的示例:
"This "" contains "" embedded "" quotes"
""""
安装程序编译器将会视为:
This " contains " embedded " quotes
"
一些常量
多数的脚本项都可以在它们的内部嵌入“常量(constants)”,它们总是被一对大括号({ })扩起来的。当安装程序被启动的时候,这些常量将被转换成其真实的值,这依赖于用户的选择和系统配置,例如,{win} 这个常量在绝大多数的系统当中将被转换成“C:\WINDOWS”。
字符“{”被视为一个常量的起始标记,如果你想获得的是它的真实字符,那么你必须使用两个连续的“{”字符。
如果一个常量的后面紧跟着一个反斜杠,而此时这个常量被转换成其真实值的结尾也是一个反斜杠时,Inno Setup 会自动的删除一个反斜杠,这样处理的明显的好处是如果这个常量指向了“C:\”,{常量名}\file 就会被正确的转换成“C:\file”而不是“C:\\file”。然而如果你想要防止这种事情的发生,那么就要将反斜杠用大括号括起来,象这样:{app}{\}.
下面所列出的是目前已经被支持的常量。
目录常量
{app}
应用程序目录,这是用户在安装向导的选择安装目录页里面所选择的。
例如:如果你使用了 {app}\MYPROG.EXE 作为一项并且用户选择了“C:\MYPROG”作为应用程序的目录,那么安装程序就会将它转换成“C:\MYPROG\MYPROG.EXE”。
{win}
系统的 Windows 目录。 例如:如果你使用了 {win}\MYPROG.INI 作为一项并且系统的 Windows 目录是“C:\WINDOWS”,那么安装程序就会将它转换成“C:\WINDOWS\MYPROG.INI”。
{sys}
系统的 Windows 系统(System)目录(在 Windows NT/2000 下是 System32)。 例如:如果你使用了 {sys}\CTL3D32.DLL 作为一项并且系统的 Windows 系统目录是“C:\WINDOWS\SYSTEM”,那么安装程序就会将它转换成“C:\WINDOWS\SYSTEM\CTL3D32.DLL”。
{src}
这个文件夹指向安装程序所在的位置。
例如:如果你使用了 {src}\MYPROG.EXE 作为一项并且用户是从“S:\ ”安装的,那么安装程序就会将它转换成“S:\MYPROG.EXE”。
{sd}
系统驱动器,它是指 Windows 被安装到的那个驱动器,典型的是“C:”,对于 Windows NT/2000,这个常量同系统的环境变量“SystemDrive”是等效的。
{pf}
程序文件夹(Program Files),这个路径是系统的 Program Files 目录,典型的是“C:\Program Files”。
{cf}
公共文件夹(Common Files),这个路径是系统的 Common Files 文件夹,典型的是“C:\Program Files\Common Files”。
{tmp}
临时目录,这个目录并不是用户的 TEMP 环境变量指向的目录,而是安装程序在启动时在用户的临时目录下建立的一个子目录(它有一个类似于“
C:\WINDOWS\TEMP\IS-xxxxx.tmp”这样的名字),在安装程序退出时所有的文件和子目录将会被删除。对于在 [Run] 段里面要被执行且在安装以后又不需要的程序文件来说这个功能是非常有用的。
{fonts}
字体目录,在 Windows 95/NT 4+ 下有一个专门为字体设立的目录(通常这个目录在 Windows 目录下且被命名为“FONTS”),这个常量就指向这个目录。对于 Windows NT 3.51,这个常量是和 {sys} 等效的,因为当时还没有字体目录。
{dao}
DAO 目录,当安装程序运行在 Windows 95/NT 4+ 上时,它被等效为 {
cf}\Microsoft Shared\DAO,当运行于 Windows NT 3.51 时,它被等效为 {
win}\MSAPPS\DAO.
外壳(Shell)文件夹常量
Inno Setup 还支持另外一套目录常量,这就是涉及到的外壳(shell)文件夹常量,它们具有和其它的目录常量相同的使用方法。然而,如果在脚本的 [Setup] 段里面放入了 MinVersion=4,3.51 这一行来表示允许支持 NT 3.51,那么将只有 {group} 这个外壳文件夹常量能被使用,并签只能用在 [Icons] 段。
下面的包含了“user”的常量涉及到当前登陆的用户私人文档(profile),而带有“
common”的常量会涉及到全部用户(All Users)的私人文档(profile)。当安装程序运行在 Windows NT/2000 操作系统下并且用户不具有管理员的权限时,所有的带有“common”的常量会强迫同带有“user”的常量等效。
* 标记表示带有“common”的常量在 Windows 9x 操作系统下同带有“user”的常量等效。
{group}
程序组的路径,取决于用户在安装程序向导的“选择程序组”页的选择。对于 Windows NT,这个文件夹始终被建立在所有用户的私人文档(All Users profile),除非用户正在安装的这个应用程序不具有管理员的权限,那么在这种情况下它将被建立在用户的私人文档中(profile).
{sendto}
当前用户的“发送”的路径。(没有公共的“发送”文件夹。)
{userappdata} & {commonappdata}
应用程序数据(Application Data)文件夹的路径。
{userdesktop} & {commondesktop} *
桌面文件夹的路径,推荐桌面快捷方式使用 {userdesktop}.
{userdocs} & {commondocs}
“我的文档”文件夹的路径(或者对于 NT 4.0,是指私人文件夹).
{userfavorites} & {commonfavorites}
“收藏夹”的路径,这个常量的使用方法是需要 MinVersion 的设置至少为“4.1, 4”,目前只有 Windows 2000 支持 {commonfavorites},如果使用的是在这之前的版本的 Windows,那么它将会被转换成和{userfavorites} 相同的目录。
{userprograms} & {commonprograms} *
在开始菜单里面的程序文件夹的路径。
{userstartmenu} & {commonstartmenu} *
开始菜单的定级路径。
{userstartup} & {commonstartup} *
开始菜单里面的启动文件夹的路径。
{usertemplates} & {commontemplates}
模板(Templates)文件夹的路径,目前只有 Windows 2000 支持 {
commontemplates},如果使用的是在这之前的版本的 Windows ,它将会被转换成和 {usertemplates} 相同的目录。
其他的常量
{\}
一个反斜杠字符,请参见�