inno setup 打包说明

 [Setup]shell

这个段包含用于安装程序和卸载程序的全局设置

AppId:在注册表中惟一的项名称,安装完64位系统在安全

HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\{AppId}_is1app

反之在如下路径中ide

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{AppId}_is1函数

该项里面的内容包括以下内容post

 

若是不定义AppId,则其安装完以后,在注册表中默认以{AppName}_is1的名字存在字体

AppName:用以指定你正在安装的应用程序的标题,AppName 始终在安装过程当中显示在安装屏幕的左上角以及安装向导中
AppVersion:应用程序版本号
AppVerName:在控制面板中显示的名称
AppPublisher:在控制面板中显示的发布者
DefaultDirName:用于选择目标位置向导面中的默认目录名
DisableProgramGroupPage:
OutputDir:用于打包完程序的输出位置
OutputBaseFilename:打包完程序显示的默认名
Compression:指定要在文件中使用的压缩方法,以及压缩标准
SolidCompression: 若是设为 yes,固实压缩将启用。这会使全部文件一次性压缩

[registry]ui

本段是对注册表的操做编码

示例以下:spa

Root:HKLM;Subkey:SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{#AppId};ValueType: string; ValueName:DisplayName; ValueData:{#MyAppServiceName}; Flags: uninsdeletevalue
另外能够http://379910987.blog.163.com/blog/static/3352379720110259414788/该网址下,有关于注册表的参数说明

[Languages]

本段是安装程序默认语言

Name: "english"; MessagesFile: "compiler:Default.isl"

Name:语言为英文;因为InnoSetup安装包中默认没有带中文语言文件,因此若是须要将它变成中文,则先要下载一个中文语言文件,并把它放到InnoSetup安装目录中的Languages子目录中

MessageFile:则指定了语言文件路径

[Tasks]

这个段是只选的。它定义安装程序在执行安装期间全部由用户定制的任务。这些任务以选项框和单选项形式在附加任务向导页中出现

Name: "desktopicon"; Description: "{cm:CreateDesktopIcon}"; GroupDescription: "{cm:AdditionalIcons}"; Flags: unchecked(不选中)/ checkedonce(默认选中)

 

[Files]

定义安装程序安装文件到用户系统中的可选文件段

Source: "E:\Softwares\Inno Setup\SourceFile\*"; DestDir: "{app}"; Flags: ignoreversion recursesubdirs createallsubdirs

Source:须要打包进去的源文件

DestDir:默认是{app}

Flags: "recursesubdirs"  和 "createallsubdirs",意思是包含文件夹里的全部文件和子文件夹,

注意: 不要在任何共享系统文件上使用“Flags: ignoreversion”,意为不比较版本信息

[Icons]

这个可选段定义全部建立在开始菜单和/或其它位置 (好比桌面) 的快捷方式

Name: "{commonprograms}\{#MyAppName}"; Filename: "{app}\{#MyAppClientName}"

Name: "{commondesktop}\{#MyAppName}"; Filename: "{app}\{#MyAppClientName}"; Tasks: desktopicon;IconFilename:"{app}\eas.ico"

FileName:程序的路径

Name:开始菜单/桌面快捷方式的名称

Tasks:任务(desktopicon:桌面图标)

IconFilename:图标位置

[Run]

Filename: "{app}\installService.bat"; Description: "描述内容";Flags:runhidden 

Filename:安装文件

Description: 这是条目的描述,能够包含常量,若是没有指明,将会使用默认的描述

Flags:

这个参数是额外选项设置。多个选项可使用空格隔开。支持下面的选项:

选项

说明

hidewizard

若是指定了这个标记,向导将在程序运行期间隐藏

nowait

若是指定了这个标记,它将在处理下一个[Run] 条目前或完成安装前不等待进程执行完成,不能与waituntilidle或waituntilterminated 组合使用

postinstall

仅在[Run] 段有效。告诉安装程序在安装完成向导页建立一个选择框,用户能够选中或不选中这个选择框从而决定是否处理这个条目。之前这个标记调用showcheckbox。若是安装程序已经从新启动了用户的电脑 (安装了一个带restartreplace标记的文件或若是[Setup] 段的AlwaysRestart指示是yes 引发的),选择框没有机会出现,所以这些条目不会被处理。

runhidden

若是指定了这个标记,它将在隐藏窗口中运行程序。

runmaximized

若是指定了这个标记,将在最大化窗口运行程序或文档

runminimized

若是指定了这个标记,将在最小化窗口运行程序或文档。

shellexec

若是Filename 不是一个直接可执行文件(.exe或.com 文件),这个标记是必需的。当设置这个标记时,Filename能够是一个文件夹或任何已注册的文件类型,当使用shellexec标记时,将不等待,直到生成的进程终止,若是确实须要,则必须添加标记waituntilterminated

skipifdoesntexist

若是这个标记在[Run] 段中指定,若是文件名不存在,安装程序不显示错误消息;若是这个标记在[UninstallRun]段中指定,若是文件名不存在,卸载程序不显示“一些元素不能删除”的警告

skipifnotsilent

仅在[Run] 段有效。告诉安装程序若是安装程序未在后台运行则跳过这个条目

skipifsilent

告诉安装程序若是安装程序在后台运行则跳过这个条目

unchecked

告诉安装程序初始为不选中选择框。若是用户但愿处理这个条目,能够经过选取选择框执行,若是postinstall标记未同时指定,这个标记被忽略

waituntilidle

若是指定了这个标记,它将在未输入期间等待,直到进程等待用户输入,而不是等待进程终止。(调用WaitForInputIdle Win32函数。) 不能与nowait或waituntilterminted 组合使用

waituntilterminated

若是指定这个标记,将等待到进程彻底终止。注意这是一个默认动做 (也就是你不须要指定这个标记),除非你使用了shellexec标记,在这种状况下,若是你要等待,须要指定这个标记。不能与nowait或waituntilidle 组合使用

 

StatusMsg

仅在[Run] 段有效。因为某些程序在执行期间是不可见的(处于安全或者其余缘由),可是又不想让用户觉得安装程序没有响应,能够经过该参数指定程序执行时显示在向导页的消息,若是这个参数未指定但是空白的,将使用默认的消息“正在完成安装...”。这个参数能够包含常量。

[UninstallRun]

卸载时候作的一些操做

Filename:"{cmd}";Parameters:"/c net stop 服务名称";Flags:runhidden

 

另外罗列了一些经常使用的常量

目录常量  
{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} 相同的目录。  
其余的常量  
{/}  
一个反斜杠字符,请参见本页前面提到的关于常量 {/} 和单字符 / 在使用上有何不一样的说明。  
{%NAME}  
内嵌一个环境变量,这个 NAME 是要使用的环境变量的名字。若是在用户的系统当中指定的环境变量不存在,这个常量就会被一个空的字符串所替代。  
{computername}  
安装程序正在运行的计算机的名称(就是“GetComputerName”函数的返回值)。  
{groupname}  
用户在安装程序向导的选择程序组页选择的程序组的名称,这个是不一样于 {group} 的,它不包括路径。  
{hwnd}  
(专门用途)传送安装程序背景窗口的窗口句柄。  
{reg:HKxx/SubkeyName,ValueName|DefaultValue}  
内嵌一个注册表值。  
HKxx 指定根键(root key),参见 [Registry] 段 文档所列出的根键。  
SubkeyName 指定要读取的子键的名称。  
ValueName 指定要读取的值的名称,要读取一个键的默认值就让 ValueName 为空。  
DefaultValue 若是指定的注册表值不存在或者它不是一个字符串类型(REG_SZ 或者 REG_EXPAND_SZ),则嵌入这个值。  
若是你但愿包括一个逗号,竖线(字符“|”)或大括号闭弧“}”在常量里面,你必须经过“%-编码” 形式用“%”后紧跟一个两位的16进制代码转译后替换原来的字符,一个逗号是“%2c”,一个竖线符是“%7c”,一个大括号闭弧是“%7d”。  
DefaultValue 能够包括常量,然而,如上所诉内嵌的常量的大括号的闭弧  
(“}”) 必须被改为“%7d”才能够。  
{srcexe} 
安装程序的文件名全称(包括全程路径和文件名),例如“C:/SETUP.EXE”。  
{username}  
运行安装程序的用户的名称(函数 GetUserName 的返回值)。  
公共参数 

 有俩个可选的参数能够在全部的段里面的任何项中使用,它们是:  
MinVersion  
说明:  
该 项处理所需的分别最低的 Windows 版本和 Windows NT 版本. 若是将某个版本号指定为 0 那么在该平台上就不再会处理这项了,版 本建立编号(Build numbers)和(或)服务包级别(Service pack levels)也能够被包括在版本号当中。这个参数将会覆盖位 于 [Setup] 段当中的 MinVersion 关键字。  

示例:  
MinVersion: 4.0,4.0  
OnlyBelowVersion  

说明:  
基本上是和 MinVersion 相反,该项所指定的最低的 Windows 版本 和 Windows NT  
版 本将不会被处理,例如:若是你指定了 4.1,5.0 而且用户运行在 Windows 95 或 NT 4.0 下,那么该项将会被处理,可是若是用户 运行在 Windows 98 (报告的版本信息是 4.1)或 Windows 2000 (报告的版本信息是 NT 5.0),则该项就不会被处理。 使用“0”表示该版本号上限的限制。版本建立编号(Build numbers)和(或)服务包级别(Service pack levels) 也能够 包括在版本号当中。这个参数将会覆盖位于 [Setup] 段当中的 OnlyBelowVersion 关键字。  
示例:  
OnlyBelowVersion: 4.1,5.0  
其它注意事项  

安装程序是按照段内的排列顺序来处理全部的项的,[UninstallRun] 段是个例外,卸载时处理全部项的顺序是与安装程序相反的。  
在这个示例中:  
[INI]  
Filename: “{win}/MYPROG.INI”; Section: “InstallSettings”; Flags: uninsdeletesectionifempty  
Filename: “{win}/MYPROG.INI”; Section: “InstallSettings”; Key: “InstallPath”; String: “{app}”; Flags: uninsdeleteentry 
安 装程序首先记录下第一项的数据 uninsdeletesectionifempty 标记到卸载记录中。建立第二项的键,而后记录 下 uninsdeleteentry 标记的数据到卸载记录中,当程序被卸载时,卸载程序将首先处理 uninsdeleteentry 标记,删除该 项,而后才是 uninsdeletesectionifempty 标记。  
若是安装程序在用户的系统中检测到一个 Windows 共享版本,Windows 系统目录是写保护的,{sys} 目录常量将会被转变为用户的 Windows 目录替代系统目录。  
在命令行执行编译器  
脚本文件也能够在命令行被安装编译器编译。命令行的使用方法以下: 
compiler /cc <脚本文件>  
示例:  
compil16 /cc c:/isetup/sample16/sample16.iss  
compil32 /cc “c:/isetup/sample32/my script.iss”  
在上面列出的例子中,带有空格的文件名必须用引号括起来。  
在命令行运行安装编译器不支持正常的进程显示或任何错误消息。若是编译成功安装编译器将会返回一个退出代码 0,若是是 1 则表示有无效的命令行参数, 2 则代表编译失败。 

安装命令行参数  安装程序自己接受三个不一样的可选的命令行参数,这些参数能被用于系统管理员和其余程序调用安装程序。  
/SP-  

在安装程序开始时禁止“即将安装 … ,继续吗?”的提示,固然,它将使 [Setup] 段的 DisableStartupPrompt 关键字设置为 yes 无效  
/DIR=”x:/dirname”  

替换在“选择目标文件夹”向导页显示的默认的目录名,必须要指定一个全程路径名。若是 [Setup] 段的 DisableDirPage 关键字被设置为 yes, 那么该命令行参数将被忽略。  
/GROUP=”group name”  

替换在“选择程序组”向导页显示的默认的程序组名,若是 [Setup] 段的 DisableProgramGroupPage 关键字被设置为 yes, 那么该命令行参数将被忽略。