[Setup]
; 注: AppId的值为单独标识该应用程序。
; 不要为其他安装程序使用相同的AppId值。
; (生成新的GUID,点击 工具|在IDE中生成GUID。)
AppId={{A9861883-31C5-4324-BD9A-DC3271EEB675}
;程序名
AppName=ISsample
;版本号
AppVerName=ISsample 1.0.0.0
;发布者名
AppPublisher=Hkiss
;相关连接
AppPublisherURL=http://zwkufo.blog.163.com
AppSupportURL=http://zwkufo.blog.163.com
AppUpdatesURL=http://zwkufo.blog.163.com
;默认安装目录
DefaultDirName={pf}\ISsample
;默认开始菜单名
DefaultGroupName=ISsample
;是否打开->可选安装开始菜单项
;AllowNoIcons=yes
;安装协议
;LicenseFile=C:\Example\原始文件\agreement.txt
;安装前查看的文本文件
;InfoBeforeFile=C:\Example\原始文件\Setup_New.txt
;安装后查看文本文件
;InfoAfterFile=C:\Example\原始文件\Setup_Old.txt
;输出文件夹
OutputDir=C:\Example\InnoSetup\out
;输出文件名
OutputBaseFilename=setup
;安装图标
SetupIconFile=C:\Example\原始文件\title.ico
;安装需要输入密码
;Password=123
;Encryption=yes
;压缩相关
Compression=lzma
SolidCompression=yes
;可以让用户忽略选择语言相关
ShowLanguageDialog = yes
;备注版本信息
VersionInfoCompany=HTTP://www.Hkiss.COM
VersionInfoDescription=ISsample 汉化增强版
VersionInfoVersion=1.0.0.0
VersionInfoCopyright=Copyright (C) 2007-2008 Hkiss
;制作选择语言
[Languages]
Name: "chs"; MessagesFile: "compiler:Default.isl" ;LicenSeFile :"C:\Example\原始文件\chs\agreement.txt"
Name: "en"; MessagesFile: "compiler:Languages\English.isl";LicenSeFile :"C:\Example\原始文件\en\agreement.txt"
;用户定制任务
[Tasks]
Name: "desktopicon"; Description: "{cm:CreateDesktopIcon}"; GroupDescription: "{cm:AdditionalIcons}"; Flags: unchecked
Name: "quicklaunchicon"; Description: "{cm:CreateQuickLaunchIcon}"; GroupDescription: "{cm:AdditionalIcons}"; Flags: unchecked
Name: "Tasks_1" ; Description:"用户自定义任务1"; Flags: unchecked
Name: "Tasks_2" ; Description:"用户自定义任务2"; Flags: unchecked
;选择了组件才会出现的定制任务
Name: "Tasks_3" ; Description:"用户自定义任务3";Components: c1 ; Flags: unchecked
;文件安装
[Files]
;多语言安装环境设置 公共参数Languages 来设置
Source: "C:\Example\原始文件\enfile.txt"; DestDir: "{app}"; Languages: en ; Flags: ignoreversion
Source: "C:\Example\原始文件\chsfile.txt"; DestDir: "{app}"; Languages: chs ; Flags: ignoreversion
;用户自定义任务 Tasks
Source: "C:\Example\原始文件\Tasks\tasks_1.txt"; DestDir: "{app}\Tasks"; Flags: ignoreversion ;Tasks : Tasks_1
Source: "C:\Example\原始文件\Tasks\tasks_2.txt"; DestDir: "{app}\Tasks"; Flags: ignoreversion ;Tasks :Tasks_2
Source: "C:\Example\原始文件\Tasks\tasks_Components.txt"; DestDir: "{app}\Tasks"; Flags: ignoreversion ;Tasks :Tasks_2
;用户定义组件安装
Source: "C:\Example\原始文件\Components\Components_1.txt"; DestDir: "{app}\Components"; Flags: ignoreversion ; Components: a1;
Source: "C:\Example\原始文件\Components\Components_2.txt"; DestDir: "{app}\Components"; Flags: ignoreversion ; Components: a2;
Source: "C:\Example\原始文件\Components\Components_3.txt"; DestDir: "{app}\Components"; Flags: ignoreversion ; Components: a3;
Source: "C:\Example\原始文件\Components\Components_4.txt"; DestDir: "{app}\Components"; Flags: ignoreversion ; Components: a1 a2 a3;
;用户注册自定义Dll文件 regserver 注册 noregerror 不显示错误信息
Source: "C:\Example\原始文件\jmail.dll"; DestDir: "{app}"; Flags: ignoreversion regserver
;添加自述文件
Source: "C:\Example\原始文件\ISsample.txt"; DestDir: "{app}"; Flags: ignoreversion
;添加一个文件到缓存文件夹{Tmp} deleteafterinstall 安装后删除
Source: "C:\Example\原始文件\test.exe"; DestDir: "{tmp}"; Flags: ignoreversion deleteafterinstall
Source: "C:\Example\原始文件\ISsample.chm"; DestDir: "{app}"; Flags: ignoreversion
Source: "C:\Example\原始文件\ISsample.exe"; DestDir: "{app}"; Flags: ignoreversion
Source: "C:\Example\原始文件\ISsample.dll"; DestDir: "{app}"; Flags: ignoreversion
Source: "C:\Example\原始文件\ISsample.ini"; DestDir: "{app}"; Flags: ignoreversion
Source: "C:\Example\原始文件\ISsample.rar"; DestDir: "{app}"; Flags: ignoreversion
Source: "C:\Example\原始文件\ISsample_sys.dll"; DestDir: "{win}\System32"; Flags: ignoreversion
Source: "C:\Example\原始文件\log\*"; DestDir: "{app}\log"; Flags: ignoreversion recursesubdirs createallsubdirs
; 注意: 不要在任何共享系统文件上使用“Flags: ignoreversion”
;安装类型设置
[Types]
Name: Full ;Description:"完全安装"; Flags: iscustom
Name: Compact ;Description:"简洁安装";
Name: Custom; Description:"自定义安装";
;组件安装
[Components]
Name: c1; Description: "自定义任务3" ; Types: Full
Name: a1; Description: "安装Components_1"; Types: Full Compact Custom ;
Name: a2; Description: "安装Components_2"; Types : Full Compact
Name: a3; Description: "安装Components_3"; Types : Full
;开始菜单,桌面快捷方式
[Icons]
Name: "{group}\ISsample"; Filename: "{app}\ISsample.exe"
Name: "{group}\{cm:ProgramOnTheWeb,ISsample}"; Filename: "http://zwkufo.blog.163.com"
Name: "{group}\{cm:UninstallProgram,ISsample}"; Filename: "{uninstallexe}"
Name: "{commondesktop}\ISsample"; Filename: "{app}\ISsample.exe"; Tasks: desktopicon
Name: "{userappdata}\Microsoft\Internet Explorer\Quick Launch\ISsample"; Filename: "{app}\ISsample.exe"; Tasks: quicklaunchicon
;添加一个帮助文挡
Name: {group}\ISsample 1.0.0.0 帮助文档;Filename: {app}\ISsample.chm
;用来在程序安装完成后 在安装程序显示最终对话框之前执行程序 常用与运行主程序 显示自述文件 删除临时文件
[Run]
Filename: "{app}\ISsample.exe"; Description: "{cm:LaunchProgram,ISsample}"; Flags: nowait postinstall skipifsilent
Filename: "{app}\ISsample.txt"; Description: "查看显示自述文件"; Flags: postinstall skipifsilent shellexec
;更改显示在程序中显示的消息文本
[Messages]
BeveledLabel=HKiss科技
;卸载对话框说明
ConfirmUninstall=您真的想要从电脑中卸载ISsample吗?%n%n按 [是] 则完全删除 %1 以及它的所有组件;%n按 [否]则让软件继续留在您的电脑上.
;定义解压说明
;StatusExtractFiles=解压并复制主程序文件及相关库文件...
;用于在用户系统中创建,修改或删除ini文件健值
[INI]
Filename: "{app}\cfg.ini"; Section: "Startup Options"; Flags: uninsdeletesection
Filename: "{app}\cfg.ini"; Section: "Startup Options"; Key: "server ip"; String: "127.0.0.1"
Filename: "{app}\cfg.ini"; Section: "Startup Options"; Key: "server port"; String: "8080"
;用于在用户系统中创建,修改或删除注册表健值
[Registry]
Root: HKLM ;SubKey:"Software\ISsample";ValueType:dword;ValueName:config;ValueData:10 ;Flags:uninsdeletevalue
;在执行脚本
[code]
//全局变量
var MyProgChecked: Boolean;
//判断程序是否存在
//初始华程序事件
function InitializeSetup(): boolean;
var Isbl: boolean; //声明变量
var Isstr: string;
begin //开始
Isbl := true; //变量赋值
Isstr := "欢迎";
if RegValueExists(HKEY_LOCAL_MACHINE, "SOFTWARE\ISsample", "config") then
begin
MsgBox("已安装过,请先卸载在安装",mbConfirmation, MB_OK);
isbl := false;
end else
begin
//MsgBox("无值",mbConfirmation, MB_OK);
isbl := true;
end;
//下面是个麻烦的 条件语句 end else 注意
//if MsgBox(Isstr, mbConfirmation, MB_OKCANCEL) = IDOK then
//begin
// isbl := true;
// MsgBox("执行了", mbConfirmation, MB_OK);
//end else
//begin
// isbl := false;
//MsgBox("执行了", mbConfirmation, MB_OK);
//end;
Result := Isbl;
end; //结束
procedure CurStepChanged(CurStep: TSetupStep);
var Isstr :string;
begin
if CurStep=ssInstall then //实际安装前调用
begin
//MsgBox("CurStepChanged:实际安装前调用", mbConfirmation, MB_OKCANCEL); //安装完成后调用
end;
if CurStep=ssPostInstall then
begin
Isstr := ExpandConstant("{tmp}\tmp.rar");
// if FileExists(Isstr) then
// begin
// MsgBox("文件存在",mbConfirmation, MB_OK);
// end else
// begin
// MsgBox("文件不存在",mbConfirmation, MB_OK);
// end;
// MsgBox("CurStepChanged:实际安装后调用", mbConfirmation, MB_OKCANCEL);
end;
end;
//下一步 按钮按钮 事件
function NextButtonClick(CurPageID: Integer): Boolean;
var ResultCode: Integer;
var IsSetup : Boolean;
begin
IsSetup := true ;
case CurPageID of
wpSelectDir:
MsgBox("NextButtonClick:" #13#13 "You selected: """ + WizardDirValue + """.", mbInformation, MB_OK); //WizardDirValue路径
wpSelectProgramGroup:
MsgBox("NextButtonClick:" #13#13 "You selected: """ + WizardGroupValue + """.", mbInformation, MB_OK);//开始菜单名
wpReady:
begin
if not RegValueExists(HKEY_LOCAL_MACHINE, "SOFTWARE\Test", "config") then begin
if MsgBox("程序执行需要Test.ext,是否安装!", mbConfirmation, MB_YESNO) = idYes then begin
ExtractTemporaryFile("test.exe");
if not Exec(ExpandConstant("{tmp}\test.exe"), "", "", SW_SHOWNORMAL, ewWaitUntilTerminated, ResultCode) then
MsgBox("Test.exe出错:" #13#13 " " + SysErrorMessage(ResultCode) + ".", mbError, MB_OK);
end else begin
IsSetup := false ;
end ;
BringToFrontAndRestore();
end;
end;
end;
Result := IsSetup;
end;
迅雷安装脚本
[Setup]
AppName=迅雷5
AppVerName=迅雷 5.7.2.371 DDR1.5 去广告版
DefaultDirName={pf}\Thunder\
DefaultGroupName=迅雷5
OutputbaseFilename=Thunder-ddr5.7.2.371Setup
Compression=lzma
SolidCompression=yes
WizardImageFile=embedded\WizardImage.bmp
WizardSmallImageFile=embedded\WizardSmallImage.bmp
AppMutex=thunder5_app_mutex
[Types]
Name: "default"; Description: "默认安装"
Name: "custom"; Description: "自定义安装"; Flags: iscustom
Name: "full"; Description: "完全安装"
[Components]
Name: "main"; Description: "迅雷5"; Types:default custom full; Flags: fixed
Name: "Plugins"; Description: "其他插件"; Types: full
Name: "Plugins\kankan"; Description: "迅雷看看"; Types: full
Name: "Plugins\gougou"; Description: "狗狗搜索排行"; Types: full
Name: "Plugins\tingting"; Description: "迅雷听听1.2"; Types: full
[Tasks]
Name: desktopicon; Description: "创建桌面快捷方式"; Flags: checkedonce
Name: associate; Description: "在开始菜单创建程序组";Flags: checkedonce
[Files]
;主文件安装
Source: "pureThunder\*"; DestDir: "{app}"; Flags: recursesubdirs createallsubdirs ignoreversion
;配置文件安装
Source: "Profiles\*"; DestDir: "{app}\Profiles"; Flags:uninsneveruninstall onlyifdoesntexist
;注册文件安装
Source: "comfile\*"; DestDir: "{app}\ComDlls"; Flags:ignoreversion regserver restartreplace uninsrestartdelete
;迅雷看看安装
Source: "KanKan\files\*"; DestDir: "{app}\Components\KanKan"; Components: Plugins\kankan; Flags:ignoreversion
Source: "KanKan\regdll\*"; DestDir: "{app}\Components\KanKan"; Components: Plugins\kankan; Flags:ignoreversion regserver restartreplace uninsrestartdelete
;狗狗搜索安装
Source: "plugins\GouGouTop\*"; DestDir: "{app}\plugins\GouGouTop";Components: Plugins\gougou; Flags: ignoreversion
;听听安装
Source: "plugins\TingTing\*"; DestDir: "{app}\plugins\TingTing";Components: Plugins\tingting; Flags: ignoreversion
;复制vc6运行库
Source: "msvcp60.dll"; DestDir:"{sys}\"; Flags: onlyifdoesntexist uninsneveruninstall
[INI]
;狗狗搜索插件信息写入
Filename: "{app}\Program\addins.ini"; Section: "{{1FC7CAC6-2DA8-4cb0-B440-CCC0CA}"; Key: "Name"; String: "狗狗搜索排行";Components: Plugins\gougou
Filename: "{app}\Program\addins.ini"; Section: "{{1FC7CAC6-2DA8-4cb0-B440-CCC0CA}"; Key: "File"; String: "..\Plugins\GouGouTop\GouGouTop.dll" ;Components: Plugins\gougou
Filename: "{app}\Program\addins.ini"; Section: "{{1FC7CAC6-2DA8-4cb0-B440-CCC0CA}"; Key: "Enable"; String: "1" ;Components: Plugins\gougou
;迅雷听听插件信息写入
Filename: "{app}\Program\addins.ini"; Section: "{{200A93B9-365D-4F4A-9C4F-57F645A7B9D2}"; Key: "Name"; String: "听听插件";Components: Plugins\tingting
Filename: "{app}\Program\addins.ini"; Section: "{{200A93B9-365D-4F4A-9C4F-57F645A7B9D2}"; Key: "File"; String: "..\Plugins\TingTing\TingTing.dll" ;Components: Plugins\tingting
Filename: "{app}\Program\addins.ini"; Section: "{{200A93B9-365D-4F4A-9C4F-57F645A7B9D2}"; Key: "Enable"; String: "1" ;Components: Plugins\tingting
[Registry]
Root: HKLM; Subkey: "SOFTWARE\Thunder Network\ThunderOem\thunder_backwnd"; ValueName: "Path"; ValueType: String; ValueData: "{app}\Thunder.exe"; Flags: uninsdeletekey
Root: HKLM; Subkey: "SOFTWARE\Thunder Network\ThunderOem\thunder_backwnd"; ValueName: "Version"; ValueType: String; ValueData: "5.7.2.371"; Flags: uninsdeletekey
Root: HKCU; Subkey: "Software\Microsoft\Internet Explorer\MenuExt\使用迅雷下载全部链接"; ValueType: String; ValueData: "{app}\Program\GetAllUrl.htm"; Flags: uninsdeletevalue
Root: HKCU; Subkey: "Software\Microsoft\Internet Explorer\MenuExt\使用迅雷下载全部链接"; ValueName: "Contexts"; ValueType: dword; ValueData: 243; Flags: uninsdeletevalue
Root: HKCU; Subkey: "Software\Microsoft\Internet Explorer\MenuExt\使用迅雷下载"; ValueType: String; ValueData: "{app}\Program\GetUrl.htm"; Flags: uninsdeletevalue
Root: HKCU; Subkey: "Software\Microsoft\Internet Explorer\MenuExt\使用迅雷下载"; ValueName: "Contexts"; ValueType: dword; ValueData: 34; Flags: uninsdeletevalue
[Run]
Filename: "{app}\DDR迅雷设置中心.exe"; Description: "运行迅雷设置中心";
;Filename: "{app}\Program\SetupHelper.exe"; Parameters: "/register_plugins";
;Filename: "{app}\Program\SetupHelper.exe"; Parameters: "/open_firewall";
;Filename: "{app}\Program\SetupHelper.exe"; Parameters: "/for_all_users";
[Icons]
Name: "{commondesktop}\迅雷";Filename: "{app}\Thunder.exe";Tasks:desktopicon
Name: "{group}\启动迅雷"; Filename: "{app}\Thunder.exe";Tasks:associate
Name: "{group}\DDR迅雷设置中心"; Filename: "{app}\DDR迅雷设置中心.exe";Tasks:associate
Name: "{group}\卸载迅雷"; Filename: "{uninstallexe}";Tasks:associate
;[UninstallRun]
;[UninstallDelete]
;Type: filesandordirs ; Name: "{app}";
[Code]
procedure CurUninstallStepChanged(CurUninstallStep: TUninstallStep);
var
DeleteProfile: string;
DeleteConfirm: Boolean;
begin
case CurUninstallStep of
//卸载后的收尾工作
usPostUninstall:
begin
// 确认是否删除整个目录
DeleteProfile := ExpandConstant('{app}');
DeleteConfirm :=MsgBox('是否保留用户配置文件与历史记录?' mbConfirmation MB_YESNO) = idYes;
if DeleteConfirm=False then
DelTree(DeleteProfile True True True);
if DeleteConfirm=True then
DelTree(DeleteProfile '\Program'TrueTrueTrue);
end;
end;
end;
inno setup使用介绍(一)
Inno Setup 是一个免费的 Windows 安装程序制作软件。第一次发表是在 1997 年,Inno Setup 今天在功能设置和稳定性上的竞争力可能已经超过一些商业的安装程序制作软件。
关键功能:
★ 支持现在所有正在使用的 32 位 Windows 版本: Windows 95,98,2000,Server 2003,XP,Me,NT 4.0 (不需要服务包)。
★ 支持创建单个 EXE 格式的安装程序,使你的程序可以很方便地在网络上发表。同时也支持磁盘延伸。
★ 标准的 Windows 2000/XP 样式向导界面。
★ 定制安装类型,例如:完整安装,最小安装,自定义安装。
★ 完整的卸载功能。
★ 文件安装:
包括完全的“压缩”支持,bzip2 和 7-Zip LZMA 文件压缩。安装程序可以比较文件版本信息,替换正在使用的文件,使用共享文件计数,注册 DLL/OCX 和类型库,以及安装字体。
★ 可以在任意地方创快捷方式建,包括开始菜单和桌面。
★ 创建注册表和 .INI 项目。
★ 完整的 Pascal 脚本引擎。
★ 支持 multilingualLanguagessection 安装。
★ 支持密码和加密安装。
★ 后台安装和后台卸载。
★ 全部源代码公开 (Borland Delphi 2.0-5.0)。
2、文档约定
Windows 98/NT 4+ 这是“Windows 98,2000,XP,NT 4.0,Me 以及更高版本”的简写。
Windows NT 只要是 Windows NT 就可以,它包括 Windows 2000 和 XP (就是 NT 5),除非另外说明。
等宽文本 当你在帮助中看到等宽文本,它表示脚本在中输入的引用的文字。
第二部分 怎么使用
1、创建安装程序
安装程序用编译脚本的方式创建,脚本其实就是一个类似 .INI 文件格式的 ASCII 码文本文件。 (它不象你想象的那么复杂!)
脚本用一个“.iss” (表示 Inno Setup Script) 的扩展名。脚本控制着安装程序的所有方面。由它指定哪些文件将被安装到什么地方,在哪里创建快捷方式,且被命名为什么。
脚本文件一般可以用安装程序编译器程序内置的编辑器进行编辑。在你编写完脚本后,下一个最终步骤就是选择安装程序编译器中的“编译”。创建完成后,就可以运行根据你脚本编译的安装程序了。按默认,这个安装程序创建在包含脚本文件目录下的名为“输出”目录中。
如果你想看看它是怎样工作的,启动安装程序编译器,单击“文件 | 打开”,并选择位于 Inno Setup 安装目录下的 Samples 子目录中的一个脚本文件。(你也可以将这些示例脚本作为你自己编写脚本的模板。)
2、脚本格式概述
Inno Setup 准备了一些段。每个段控制一个不同方面的安装程序部分。每个段用包含在括号 [] 中的段名开始,每个段里面是一些相关的条目。
其中有两种不能类型的段: 有些就象 [Setup] 段,条目包含指示名和值 (格式为 Directive=Value),还有一些就象 [Files] 段,条目被参数分隔。
这里是一个例子:
[Setup]
AppName=My Program
[Files]
Source: "MYPROG.EXE"; DestDir: "{app}"
注意,在脚本中指定多个相同名字的段是合法的。
你可以通过在行起始位置加个分号“;”在脚本中写入“注释” (编译时被编译时忽略)。例如:
; 这是一条注释,放在这里只是要提醒我自己...
支持 A C-like #include 指示,从个别文件放入行到 #include 指示位置的脚本。语法是:
#include "filename.txt"
如果文件名中未提供完整的路径,编译将在包含 #include 指示的同一目录中查找。文件名用“compiler:”作为前缀的场合中,在编译器目录中查找文件。
3、段中参数
所有脚本中的段,除 [Setup]、[Messages]、[CustomMessages] 和 [LangOptions] 段,包含的行中可有多个各自的参数。下列是 [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
如果你希望参数值是一个单个双引号字符,用四个双引号字符: """"。外面的两个用于包含引用的字符;内部两个写入单个的双引号字符。
4、常量
脚本中的项目大部分可以嵌入常量。这些预定义的字符被包含在括弧 { } 中。安装程序或卸载程序会根据用户选择和系统配置将这些常量翻译为文字值。例如,{win} 在大部分系统中会被翻译为“C:\WINDOWS”。
字符“{”视作为常量开始。如果你想将它作为实际字符使用,你必须使用两个连续的“{”字符。(对于“}”则不需要。)
当在常量后面直接跟随一个反斜杠时,如果常量的值末端已经包含了一个反斜杠号,安装程序或卸载程序将自动删除该反斜杠号。 因此,如果一个特殊常量值是“C:\”,{constantname}\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 目录 (在 NT 平台上是 System32)。
例如: 如果你在条目中使用了 {sys}\CTL3D32.DLL,且系统的 Windows System 目录是“C:\WINDOWS\SYSTEM”,安装程序或卸载程序将它传送到“C:\WINDOWS\SYSTEM\CTL3D32.DLL”。
{src}
安装程序文件所在目录。
例如: 你在条目中使用了 {src}\MYPROG.EXE,且用户正在从“S:\”进行安装,安装程序将它传送到“S:\MYPROG.EXE”。
{sd}
Windows 系统所在的驱动器。一般来说是“C:”。在 Windows NT 平台,这个目录常量等同于 SystemDrive 环境变量。
{pf}
程序文件位置。系统的 Program Files 目录的路径,一般来说是“C:\Program Files”。
{cf}
公共文件目录。系统的 Common Files 目录路径,一般来说是“C:\Program Files\Common Files”。
{tmp}
用于安装程序或卸载程序的临时目录。这不是用户的 TEMP 环境变量值。它是在安装程序启动后在用户临时目录中创建的子目录 (象名为“C:\WINDOWS\TEMP\IS-xxxxx.tmp”)。目录中的所有文件和子目录在安装程序或卸载程序退出时删除。在安装时,这主要用于提取在 [Run] 段运行、但安装后不再需要的文件。
{fonts}
字体目录。通常是在 Windows 下面的名字“FONTS”的目录。
{dao}
DAO 目录,等同于 {cf}\Microsoft Shared\DAO。
外壳文件夹常量
Inno Setup 支持其它目录常量设置,作为外壳文件夹常量引用。它们可以与其它目录常量相同方法使用。
下面的“user”常量引用到当前登录的用户配置文件,“common”常量引用到所有用户配置文件。
除非有另外的注释,外壳文件夹常量工作于 Inno Setup 支持的所有 Windows 版本,包括 Windows 95 和 NT 4.0。
* = 如果登录的用户缺少管理员权限,或操作系统是 Windwos 95/98/Me,“common”结构映射到“user”结构。
{group}
开始菜单文件夹路径,由用户在安装程序的选择开始菜单文件夹向导页中选定。在 Windows NT/2000/XP,这个文件夹总是创建在所有用户配置文件下,除非非用户安装程序的用户没有管理员权限,这种情况下它将创建在用户配置文件下。
{localappdata}
本地应用程序数据文件夹。
{sendto}
当前用户的 Send To 文件夹路径。(这里不是指公共 Send To 文件夹。)
{userappdata} 和 {commonappdata}
应用程序数据文件夹路径。
{userdesktop} 和 {commondesktop} *
桌面文件夹路径。
{userdocs} 和 {commondocs}
我的文档 (My Documents) 文件夹路径 (在 NT 4.0,私人文件夹)。
{userfavorites} 和 {commonfavorites} *
收藏夹文件夹路径。这些常量设置必须 至少“4.1, 4” MinVersion 设置。只在 Windows 2000 和更高版本支持 {commonfavorites};如果在先前的 Windows 版本中使用,它将翻译为等同于 {userfavorites} 目录。
{userprograms} 和 {commonprograms} *
开始菜单中程序文件夹路径。
{userstartmenu} 和 {commonstartmenu} *
开始菜单顶层路径。
{userstartup} 和 {commonstartup} *
开始菜单启动文件夹路径。
{usertemplates} 和 {commontemplates} *
模板文件夹路径。仅在 Windows 2000 和更高版本支持 {commontemplates},如果使用的是先前的 Windows 版本,它将被翻译为等同于 {usertemplates} 目录。
其它常量
{\}
反斜杠字符。查阅本页顶部的注释获取使用 {\} 和只使用一个 \ 字符之间的差异。
{%NAME|DefaultValue}
嵌入一个环境变量值。
★ NAME 用于指定要使用的环境变量的名字。
★ DefaultValue 确定如果指定的变量在用户系统中不存在时置入的字符串。
★ 如果你想在常量内部包含一个逗号、竖条 (“|”),或括弧后半部 (“}”),你必须通过“%-encoding.”先用一个“%”字符然后跟随它的两上数字的十六进制代码替换,从而避开它。逗号是“%2c”,竖条是“%7c”括弧后半部是“%7d”。如果你想实际使用“%”,使用“%25”。
★ NAME 和 DefaultValue 可以包含常量。注意,你不需要将常量中的括弧替换成上面所说的字符;上面所说的括弧后半部只在使用于其它地方时需要替换。
示例:
{%COMSPEC}
{%PROMPT|$P$G}
{cmd}
系统标准命令解释器的完整路径名。在 Windows NT/2000/XP,是 Windows\System32\cmd.exe。在 Windows 95/98/Me,是 Windows\COMMAND.COM。注意当展开这个常量时 COMSPEC 环境变量不使用。
{computername}
正在运行安装程序或卸载程序的电脑名 (等同于由 GetComputerName 函数返回的值)。
{drive:Path}
从指定的路径中提取并返回驱动器卷标和冒号 (例如“C:”)在 UNC 路径的场合中,它返回服务器和共享名 (例如“\\SERVER\SHARE”)。
★ Path 指定路径。
★ 如果你想在常量内部包含一个逗号、竖条 (“|”),或括弧后半部 (“}”),你必须通过“%-encoding.”先用一个“%”字符然后跟随它的两上数字的十六进制代码替换,从而避开它。逗号是“%2c”,竖条是“%7c”括弧后半部是“%7d”。如果你想实际使用“%”,使用“%25”。
★ 可以包含常量。注意,你不需要将常量中的括弧替换成上面所说的字符;上面所说的括弧后半部只在使用于其它地方时需要替换。
示例:
{drive:{src}}
{drive:c:\path\file}
{drive:\\server\share\path\file}
{groupname}
用户在安装程序向导页的选择开始菜单文件夹中选定的文件夹名。它不同于 {group},只有名字,不包含路径。
{hwnd}
(特殊用途) 转换为安装程序的背景窗口句柄。
{wizardhwnd}
(特殊用途) 转换为安装程序的向导窗口句柄。如果向导窗口句柄在翻译完成时不能用,这个句柄设置为“0”。
{ini:Filename,Section,Key|DefaultValue}
从 .INI 文件插入一个值。
★ Filename 指定要读取的 .INI 文件的名字。
★ Section 指定读取的段名。
★ Key 指定读取的键名。
★ DefaultValue 确定如果指定的键不存在时要插入的字符。
★ 如果你想在常量内部包含一个逗号、竖条 (“|”),或括弧后半部 (“}”),你必须通过“%-encoding.”先用一个“%”字符然后跟随它的两上数字的十六进制代码替换,从而避开它。逗号是“%2c”,竖条是“%7c”括弧后半部是“%7d”。如果你想实际使用“%”,使用“%25”。
★ Filename,Section 和 Key 可以包含常量。注意,你不需要将常量中的括弧替换成上面所说的字符;上面所说的括弧后半部只在使用于其它地方时需要替换。
示例:
{ini:{win}\MyProg.ini,Settings,Path|{pf}\My Program}
{language}
选定语言的内部名字。查阅 [Languages] 段帮助文档获取更多信息。
{cm:MessageName}
{cm:MessageName,Arguments}
根据活动语言嵌入一个自定义消息值。
★ MessageName 用于指定要读取的自定义消息名。查阅 [CustomMessages] 段帮助文档获取更多信息。
★ Arguments 可随意在消息值中指定逗号分隔的声明列表。
★ 如果你想在常量内部包含一个逗号,垂直条 (“|”),或括号 (“}”),你必须使用“%-encoding.”避开它,用“%”字符,后面跟随它的两位数十六进制代码替换。逗号是“%2c”,垂直条是“%7c”,括号是“%7d”,如果你想包含一个实际的“%”字符,用“%25”。
★ 每个 Arguments 中的声明可以包含常量。注意,你不需要避开上面描述的常量中的括号,只有在别处使用这种括号时需要避开。
示例:
{cm:LaunchProgram,Inno Setup}
如果活动语言是简体中文,上面的示例被翻译为“运行 Inno Setup”。
{reg:HKxx\SubkeyName,ValueName|DefaultValue}
插入一个注册表值。
★ HKxx 指定注册表根键;查阅 [Registry] 段帮助文档获取可用根键列表。
★ SubkeyName 指定要读取的子键名。
★ ValueName 指定要读取的值名;如果你想读取键的“默认”值,将 ValueName 留空。
★ DefaultValue 确定在指定的注册表值不存在,或不是一个字符串类型的值 (REG_SZ 或 REG_EXPAND_SZ) 时要插入的字符。
★ 如果你想在常量内部包含一个逗号、竖条 (“|”),或括弧后半部 (“}”),你必须通过“%-encoding.”先用一个“%”字符然后跟随它的两上数字的十六进制代码替换,从而避开它。逗号是“%2c”,竖条是“%7c”括弧后半部是“%7d”。如果你想实际使用“%”,使用“%25”。
★ SubkeyName,ValueName 和 DefaultValue 可以包含常量。注意,你不需要将常量中的括弧替换成上面所说的字符;上面所说的括弧后半部只在使用于其它地方时需要替换。
示例:
{reg:HKLM\Software\My Program,Path|{pf}\My Program}
{param:ParamName|DefaultValue}
插入一个命令行参数值。
★ ParamName 指定要读取的命令行参数名。
★ DefaultValue 确定如果指定的命令行参数不存在,或它的值不能确定时要插入的字符。
★ 如果你想在常量内部包含一个逗号、竖条 (“|”),或括弧后半部 (“}”),你必须通过“%-encoding.”先用一个“%”字符然后跟随它的两上数字的十六进制代码替换,从而避开它。逗号是“%2c”,竖条是“%7c”括弧后半部是“%7d”。如果你想实际使用“%”,使用“%25”。
★ ParamName 和 DefaultValue 可以包含常量。注意,你不需要将常量中的括弧替换成上面所说的字符;上面所说的括弧后半部只在使用于其它地方时需要替换。
示例:
{param:Path|{pf}\My Program}
如果指定命令行 /Path="c:\My Program",上面的例子翻译为 c:\My Program。
{srcexe}
安装程序文件的完整路径名,例如“C:\SETUP.EXE”。
{uninstallexe}
由安装程序提取的卸载程序的完整路径名,例如“C:\Program Files\My Program\unins000.exe”。这个常量一般用于在 [Icons] 段条目创建一个卸载图标。它只在 Uninstallable 设为 yes (默认设置) 时有效。0
{sysuserinfoname}
{sysuserinfoorg}
Windows 已许可的名字和组织,这个信息从注册表中读取。
{userinfoname}
{userinfoorg}
{userinfoserial}
用户在用户信息向导页 (可以通过 UserInfoPage 指示来启用) 中分别输入的名字,组织和序列号。一般来说,这些常量用于在 [Registry] 或 [INI] 条目中保存它们以后要使用的值。
{username}
正在运行安装程序或卸载程序的用户的名字 (也可以用 GetUserName 函数返回)。
5、公共参数
有三个可选的被所有段条目支持的参数,它们是:
Languages
描述:
一个用空格分隔的语言名列表,告诉安装程序条目属于哪种语言。如果最终用户从列表中选择了一个语言,该条目就执行(例如: 安装文件)。
不带 Languages 参数的条目总是安装,除非其它参数中有限制。
示例:
Languages: en nl
除用空格将它们隔开外,你也可以使用 boolean 表达式。查阅组件和任务参数获取 boolean 表达式的示例。
MinVersion
描述:
指定条目要进行处理的最小 Windows 版本 Windows NT 版本。如果你在版本中的一个使用“0”,那么条目将不在平台中进行处理。构建号和/或安全服务包级别可能包含在版本号中。这将忽略任何在脚本 [Setup] 段中的 MinVersion 指示。
不带 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”表示不受版本上限。 构建号和/或安全服务包级别可能包含在版本号中。这将忽略任何在脚本 [Setup] 段中的 MinVersion 指示。
不带 OnlyBelowVersion 参数的条目总是安装,除非其它参数中有限制。
示例:
OnlyBelowVersion: 4.1,5.0
6、组件和任务参数
这里有两个可选的参数,被除 [Types]、[Components] 和 [Tasks] 段以外所有其它段中的条目支持。它们是:
Components
描述:
用空格分隔的组件名列表,告诉安装程序条目属于哪个组件。如果最终用户从列表中选择了一个组件,那么该条目就进行处理 (例如: 安装文件)。
不带组件参数的条目总是安装,除非其它参数对其有限制。
示例:
[Files]
Source: "MYPROG.EXE"; DestDir: "{app}"; Components: main
Source: "MYPROG.HLP"; DestDir: "{app}"; Components: help
Source: "README.TXT"; DestDir: "{app}"
Tasks
描述:
用空格分隔的任务名列表,告诉安装程序条目属于哪个任务。如果最终用户从列表中选择了一个任务,那么该条目就进行处理 (例如: 安装文件)。
不带任务参数的条目总是安装,除非其它参数对其有限制。
“不创建任何快捷方式”选项框不控制 [Icons] 带任务参数的条目 (它们有自己的选项框)。因此,如果你已经定义了带任务参数的快捷方式,安装程序将改变“不创建任何快捷方式”的文字到“不创建开始菜单文件夹”。
示例:
[Icons]
Name: "{group}\My Program"; Filename: "{app}\MyProg.exe"; Components: main; Tasks: startmenu
Name: "{group}\My Program Help"; Filename: "{app}\MyProg.hlp"; Components: help;
Tasks: startmenu
Name: "{userdesktop}\My Program"; Filename: "{app}\MyProg.exe"; Components: main; Tasks: desktopicon
除用空格分隔外,你也可以使用 boolean 表达式作为组件和任务参数。支持包含 not、and 和 or 操作。例如:
[Components]
Name: a; Description: a
Name: b; Description: b
[Tasks]
Name: p; Description: a or b; Components: a or b
Name: q; Description: a and b; Components: a and b
Name: r; Description: not a or b; Components: not a or b
Name: s; Description: not (a or b); Components: not (a or b)
Name: t; Description: a or b - old style; Components: a b
7、安装脚本段
[Setup] 段
这个段包含用于安装程序和卸载程序的全局设置。某些提示对于你创建的任何安装程序都是必需的。这是 [Setup] 段的一个示例:
[Setup]
AppName=My Program
AppVerName=My Program version 1.4
DefaultDirName={pf}\My Program
DefaultGroupName=My Program
下列指示可以放置到 [Setup] 段中:
(粗体为必需项)
编译器相关
★ Compression
★ DiskClusterSize
★ DiskSliceSize
★ DiskSpanning
★ Encryption
★ InternalCompressLevel
★ MergeDuplicateFiles
★ OutputBaseFilename
★ OutputDir
★ OutputManifestFile
★ ReserveBytes
★ SlicesPerDisk
★ SolidCompression
★ SourceDir
★ UseSetupLdr
★ VersionInfoCompany
★ VersionInfoDescription
★ VersionInfoTextVersion
★ VersionInfoVersion
安装程序相关
功能:这些指示影响安装程序的操作,或保存和被卸载程序使用。
★ AllowCancelDuringInstall
★ AllowNoIcons
★ AllowRootDirectory
★ AllowUNCPath
★ AlwaysRestart
★ AlwaysShowComponentsList
★ AlwaysShowDirOnReadyPage
★ AlwaysShowGroupOnReadyPage
★ AlwaysUsePersonalGroup
★ AppendDefaultDirName
★ AppendDefaultGroupName
★ AppComments
★ AppContact
★ AppId
★ AppmodifyPath
★ AppMutex
★ AppName
★ AppPublisher
★ AppPublisherURL
★ AppReadmeFile
★ AppSupportURL
★ AppupdatesURL
★ AppVersion
★ AppVerName
★ ChangesAssociations
★ ChangesEnvironment
★ createAppDir
★ createUninstallRegKey
★ DefaultDirName
★ DefaultGroupName
★ DefaultUserInfoName
★ DefaultUserInfoOrg
★ DefaultUserInfoSerial
★ DirExistsWarning
★ DisableDirPage
★ DisableFinishedPage
★ DisableProgramGroupPage
★ DisableReadyMemo
★ DisableReadyPage
★ DisableStartupPrompt
★ EnableDirDoesntExistWarning
★ ExtraDiskSpaceRequired
★ InfoAfterFile
★ InfoBeforeFile
★ LanguageDetectionMethod
★ LicenseFile
★ MinVersion
★ OnlyBelowVersion
★ Password
★ PrivilegesRequired
★ RestartIfNeededByRun
★ ShowLanguageDialog
★ TimeStampRounding
★ TimeStampsInUTC
★ Uninstallable
★ UninstallDisplayIcon
★ UninstallDisplayName
★ UninstallFilesDir
★ UninstallLogMode
★ UninstallRestartComputer
★ updateUninstallLogAppName
★ UsePreviousAppDir
★ UsePreviousGroup
★ UsePreviousSetupType
★ UsePreviousTasks
★ UsePreviousUserInfo
★ UserInfoPage
修饰:这些指示只用于安装程序的显示目的。
★ AppCopyright
★ BackColor
★ BackColor2
★ BackColorDirection
★ BackSolid
★ FlatComponentsList
★ SetupIconFile
★ ShowComponentSizes
★ ShowTasksTreeLines
★ UninstallStyle
★ WindowShowCaption
★ WindowStartMaximized
★ WindowResizable
★ WindowVisible
★ WizardImageBackColor
★ WizardImageFile
★ WizardImageStretch
★ WizardSmallImageFile
已废弃
★ AdminPrivilegesRequired
★ AlwayscreateUninstallIcon
★ DisableAppendDir
★ DontMergeDuplicateFiles
★ MessagesFile
★ UninstallIconFile
★ UninstallIconName
★ UninstallStyle
★ WizardSmallImageBackColor
★ WizardStyle
[Types] 段
这个段是可选的。它用来定义安装程序向导在选择组件面时可供选择的所有安装类型。如果你在 [Components] 段定义了组件,但没有定义类型,在编译时将创建一个默认的安装类型设置。如果你正在使用默认 (简体中文) 消息文件,这些类型等同于下面示例中的类型。
这里是一个 [Types] 段的示例:
[Types]
Name: "full"; Description: "完全安装"
Name: "compact"; Description: "简洁安装"
Name: "custom"; Description: "自定义安装"; Flags: iscustom
下列是所支持的参数列表:
Name (必需)
描述:
类型的内部名字。用于定义 [Components] 段中组件参数,告诉安装程序组件属于哪个类型。
示例:
Name: "full"
Description (必需)
描述:
类型的描述,可以包含常量。这个描述在安装期间显示。
示例:
Description: "完全安装"
Flags
描述:
这个参数是额外选项设置。多个选项可以使用空格隔开。支持下面的选项:
iscustom
告诉安装程序这个类型是自定义类型。只在最终用户在安装期间手动改变了组件选择,安装程序就将安装类型设置为自定义类型。请注意,如果你未定义自定义类型,安装程序将只允许用户选择一个安装类型,并且不能手动选择/取消选择组件。
示例:
Flags: iscustom
[Components] 段
这个段是可选的。它定义安装程序向导的选择组件页中显示的所有组件,以便于用户定制安装类型。
光用它一个组件不会做任何事情: 它需要“链接”到其它安装条目。请查阅组件和任务参数。
这里是一个 [Components] 段的示例:
[Components]
Name: "main"; Description: "主文件"; Types: full compact custom; Flags: fixed
Name: "help"; Description: "帮助文件"; Types: full
Name: "help\english"; Description: "English"; Types: full
Name: "help\dutch"; Description: "简体中文"; Types: full
上面的示例生成四种组件: “main”组件在最终用户选择一个名为“full”和“compact”的类型时都将安装。带有两个子组件的“help”组件类型仅在最终用户选择“full”类型时安装。
下列是所支持的参数列表:
Name (必需)
描述:
组件的内部名字。
在组件名字中的 \ 或 / 字符合计数是调用组件的层次。任何在层次 1 或更高层次的组件是子组件。在子组件前列出的小于子组件一个层次的组件是上级组件。其它有相同上级组件的组件之间是同级组件。
如果上级组件未选定,则不能选定一个它的子组件。如果所有的子组件均未选定,则上级组件也不能选定,除非组件参数引用上级组件或上级组件包含 checkablealone 标记。
如果同级组件已经标有 exclusive 标记,那么它们之中只有一个可选。
示例:
Name: "help"
Description (必需)
描述:
组件的描述,可以包含常量。这个描述用于在安装期间显示给最终用户参考。
示例:
Description: "帮助文件"
Types
描述:
用空格隔开所属组件的类型列表。如果最终用户从这个列表中选择了一个类型,这个组件将被安装。
如果未使用 fixed 标记 (看下面),这个列表中的任何自定义类型 (使用 iscustom 标记的类型) 均被安装程序忽略。
示例:
Types: full compact
ExtraDiskSpaceRequired
描述:
这个组件所需要的额外磁盘空间,类似于 [Setup] 段中的 ExtraDiskSpaceRequired。
示例:
ExtraDiskSpaceRequired: 0
Flags
描述:
这个参数是额外选项设置。多个选项可以使用空格隔开。支持下面的选项:
checkablealone
指定当一个组件的子组件选中时,该组件是否可以选中。按默认,如果没有组件参数直接引用到该组件,未选中所有子组件将会使该组件变成未选中状态。
dontinheritcheck
指定当该组件的上级被选中时,该组件应该不自动变成已选中状态。这对顶层的组件不影响,且不能与 exclusive 标记组合使用。
exclusive
告诉安装程序这个组件与它的也使用 exclusive 标记的同级组件是互相排斥的。
fixed
告诉安装程序这个组件不能在安装期间被最终用户手动选择或取消选择。
restart
告诉安装程序如果用户安装了这个组件,将询问用户重新启动系统,不管它是不是需要 (例如,因为 [Files] 段条目用了 restartreplace 标记)。有点象 AlwaysRestart,但不是每个组件。
disablenouninstallwarning
如果这个组件已经安装在用户机器中,重新安装时在用户取消这个组件选择后,这条标记告诉安装程序不警告用户不卸载该组件。
考虑到你的组件的复杂性,你可以尝试使用 [Installdelete] 段和这个标记为自动“卸载”取消选定的组件。
示例:
Flags: fixed
[Tasks] 段
这个段是只选的。它定义安装程序在执行安装期间所有由用户定制的任务。这些任务以选项框和单选项形式在附加任务向导页中出现。
光任务本身是不会做任何事情的: 它需要“链接”到其它安装条目。查阅组件和任务参数。
这里是一个 [Tasks] 段的示例:
[Tasks]
Name: desktopicon; Description: "创建桌面快捷方式(&D)"; GroupDescription: "添加快捷方式:"; Components: main
Name: desktopicon\common; Description: "对于所有用户"; GroupDescription: "添加快捷方式:"; Components: main; Flags: exclusive
Name: desktopicon\user; Description: "仅对当前用户"; GroupDescription: "添加快捷方式: quicklaunchicon; Description: "创建快速运行栏快捷方式(&Q)"; GroupDescription: "添加快捷方式:"; Components: main; Flags: unchecked
Name: associate; Description: "文件关联(&A)"; GroupDescription: "其它任务:"; Flags: unchecked
下列是所支持的参数列表:
Name (必需)
描述:
任务的内部名字。
在任务名字中的 \ 或 / 字符合计数是调用任务的层次。任何在层次 1 或更高层次的任务是子任务。在子任务前列出的小于子任务一个层次的任务是上级任务。其它有相同上级任务的任务之间是同级任务。
如果上级任务未选定,则不能选定一个它的子任务。如果所有的子任务均未选定,则上级任务也不能选定,除非任务参数引用上级任务或上级任务包含 checkablealone 标记。
如果同级任务已经标有 exclusive 标记,那么它们之中只有一个可选。
示例:
Name: "desktopicon"
Description (必需)
描述:
任务的描述,可以包含常量。这个描述用于在安装期间显示给最终用户参考。
示例:
Description: "创建桌面快捷方式(&D)"
GroupDescription
描述:
任务组的组描述,可以包含常量。用相同组描述的任务将被连续组合到文字标签下。文字标签显示组描述。
示例:
GroupDescription: "附加图标"
Components
描述:
这个任务属于一个用空格隔开的组件列表。如果最终用户从这个列表中选择了一个组件,这个任务将显示。不带组件参数的任务条目总显示。
示例:
Components: main
Flags
描述:
这个参数是额外选项设置。多个选项可以使用空格隔开。支持下面的选项:
checkablealone
指定当一个任务的子任务选中时,该任务是否可以选中。按默认,如果没有任务参数直接引用到该任务,未选中所有子任务将会使该任务变成未选中状态。
checkedonce
告诉安装程序当安装程序找到已经安装的相同应用程序先前版本时,这个任务开始应该不选中。这个标记不能与 unchecked 标记组合使用。
如果 [Setup] 段的 UsePreviousTasks 指示是 no,这个标记是被禁用的。
dontinheritcheck
指定当该任务的上级被选中时,该任务应该不自动变成已选中状态。这对顶层的任务不影响,且不能与 exclusive 标记组合使用。
exclusive
告诉安装程序这个任务是与同样有 exclusive 标记的同级任务互斥的。
restart
告诉安装程序如果用户安装了这个任务,将询问用户重新启动系统,不管它是不是需要 (例如,因为 [Files] 段条目用了 restartreplace 标记)。有点象 AlwaysRestart,但不是每个任务。
unchecked
告诉安装程序这个任务在最初应该是不选中。这个标记不能与 checkedonce 标记组合使用。
示例:
Flags: unchecked
[Dirs] 段
这个可选段用来定义除创建用户选择的应用程序目录外安装程序自动创建的另外目录。在主应用程序目录下创建子目录对于这个段是公共使用的。
请注意,在使用 [Files] 段安装文件前你无需一定要创建目录,这个段起初用于创建一个空的目录。
这里是一个 [Dirs] 段的示例:
[Dirs]
Name: "{app}\data"
Name: "{app}\bin"
上面的示例中,在安装程序创建应用程序目录后,又在应用程序目录下创建了两个子目录。
下列是所支持的参数列表:
Name (必需)
描述:
要创建的目录名,通常用一个目录常量开始。
示例:
Name: "{app}\MyDir"
Attribs
描述:
指定目录的其它属性。这可以包含下面属性中的一个或多个: readonly,hidden,system。如果这个参数未指定,安装程序不会在目录中分配任何特殊的属性。
如果目录已经存在,指定的属性将与目录现有的属性组合。
示例:
Attribs: hidden system
Permissions
描述:
指定访问目录 ACL (访问控制列表) 另外的认可权限。如果你不熟悉 ACL 或不知道为什么要改变它们,则不推荐你使用这个参数,因为误用会发生系统冲突,影响安全性。
使用这个参数还有一个问题用户必须在使用 Windows 2000 或更高版本 (由于 API 的 bug,NT 4.0 不支持),目录必须位于支持 ACL (象 NTFS) 的分区,并且当前的用户有改变目录许可的权限。如果这些条件不满足,不会显示错误消息,并且不会设置任何许可。
这个参数只应该用于你应用程序的目录隐私。决不会改变顶层目录,象 {sys} 或 {pf} 的 ACL,否则你可以打开你的用户系统的安全漏洞。
另外,推荐你避免使用这个参数,同意在包含程序文件的目录的定入访问。例如,每个人都可以修改 {app} 目录的许可将允许没有权限的用户损坏你的应用程序的程序文件;这个创建会留下潜在的增加别个攻击的问题。(可是,在你的应用程序目录下的子目录的许可是安全的,它们不包含程序文件,例如,{app}\data。)
指定的许可设置不考虑安装前已有的目录。
这个参数可以包含象下列格式一样一个或多个空格分隔的值:
<用户或组标识>-<访问类型>
下列是 [Dirs] 段支持的访问类型:
full
同意“完全控制”许可,它与下面的 modify 一样,但另加上允许指定的用户/组获取目录的所有权并改变它的许可。保守一点使用,一般 modify 就足够了。
modify
同意“修改”许可,允许指定的用户/组读取,执行,修改和删除目录和它的子目录中的文件。
readexec
同意“读取和执行”许可,允许指定的用户/组阅读和执行目录和它的子目录中的文件。
示例:
Permissions: authusers-modify
Flags
描述:
这个参数是额外选项设置。多个选项可以使用空格隔开。支持下面的选项:
deleteafterinstall
告诉安装程序照常创建目录,但当安装完成 (或中断) 后,如果它是空的,则删除它。比如,你在脚本 [Run] 段定义了一个安装时要执行的文件,可以将它提取到临时数据然后执行后这个标记就相当有用。
这个标记不会导致安装前已经存在的目录被删除。
uninsalwaysuninstall
告诉卸载程序如果目录是空的,允许删除该目录。通常卸载程序只尝试删除在安装前不存在的目录。
uninsneveruninstall
告诉卸载程序不要删除目录。按默认,如果在 [Dirs] 段中指定的目录已经是空的,卸载程序将删除目录。
示例:
Flags: uninsneveruninstall
[Files] 段
这是定义安装程序安装文件到用户系统中的可选文件段。
这里是一个 [Files] 段的示例:
[Files]
Source: "CTL3DV2.DLL"; DestDir: "{sys}"; Flags: onlyifdoesntexist uninsneveruninstall
Source: "MYPROG.EXE"; DestDir: "{app}"
Source: "MYPROG.HLP"; DestDir: "{app}"
Source: "README.TXT"; DestDir: "{app}"; Flags: isreadme
查阅本页底部的备注段获取一些重要注意事项。
下列是所支持的参数列表:
Source (必需)
描述:
来源文件的名字。如果你不指定一个完整的路径名,编译器将预先考虑你的安装程序来源目录的路径。
这里可以在一个条目中用通配符指定一个文件组。当使用通配符时,所有与它匹配的文件使用相同的选项。
当指定 external 标记后,来源必须是发布的媒介或用户系统中现有文件 (或作用通配符) 的完整路径 (例如“{src}\license.ini”)。
当指定 external 标记后,只能使用常量,因为编译器自身不能执行常量翻译。
示例:
Source: "MYPROG.EXE"
Source: "Files\*"
DestDir (必需)
描述:
文件安装到用户系统中的目录。基本上都是用一个目录常量开头。如果指定的路径在用户系统中不存在,它会自动创建,并在卸载后如果是空的,卸载程序会自动删除。
示例:
DestDir: "{app}"
DestDir: "{app}\subdir"
DestName
描述:
这个参数用来指定将该文件使用新的文件名安装到用户系统中,按默认,安装程序使用 Source 参数中的名字,因此大多数场合中你不需要指定这个参数。
示例:
DestName: "MYPROG2.EXE"
Excludes
描述:
指定要排除的格式列表,用逗号分隔。这个参数不能与 external 标记组合使用。格式可以包含通配符 (“*”和“?”)。
如果格式用反斜杠符号 (“\”) 如果格式用反斜杠符号 (“\”) 开始,表示它只匹配反斜杠符号左边的路径名,否则它一直匹配到路径名末端。因此“\foo”只排除树根部的名为“foo”的文件,“foo”将排除树中任何地方的名字“foo”的文件。
该格式可以包含反斜框符号。“foo\bar”表示排除“foo\bar”和“subdir\foo\bar”两者。“\foo\bar”只排除“foo\bar”。
示例:
Source: "*"; Excludes: "*.~*"
Source: "*"; Excludes: "*.~*,\Temp\*"; Flags: recursesubdirs
CopyMode
描述:
你不要在一些新的脚本中使用这个参数。不赞成用这个参数,用 Inno Setup 3.0.5 中用下列标记替换:
CopyMode: normal -> Flags: promptifolder
CopyMode: alwaysskipifsameorolder -> no flags
CopyMode: onlyifdoesntexist -> Flags: onlyifdoesntexist
CopyMode: alwaysoverwrite -> Flags: ignoreversion
CopyMode: dontcopy -> Flags: dontcopy
什么是 CopyMode: alwaysskipifsameorolder 现在是默认动作。(以前默认是 CopyMode: normal。)
Attribs
描述:
指定文件的附加属性。这可以包含下列中的一个或多个: readonly,hidden,system。如果未指定这个参数,安装程序不会在文件中分配任何特殊属性。
示例:
Attribs: hidden system
Permissions
描述:
指定操作 ACL (访问控制列表) 的附加许可。如果不熟悉 ACL 或不知道为什么或更改它们,推荐你不要使用,因为误用会导致冲突,影响系统安全。
用户必须在使用 Windows 2000 或更高版本,这个参数才有效 (NT 4.0 由于 API 的问题,不支持),文件必须位于支持 supports ACL (象 NTFS) 的分区中,以及当前用户必须可以更改文件许可。如果这些条件不东路,不会显示错误消息,也不会设置许可。
这个参数应该只在你的应用程序么人文件中使用,不要改变共享系统文件的 ACL,否则,你打开了你的用户系统的安全漏洞。
该指定的许可设置不考虑安装前文件是否存在。
这个参数可以包含象下列格式一样一个或多个空格分隔的值:
<用户或组标识>-<访问类型>
[Files] 段支持下列访问类型:
full
同意“完全控制”许可,与修改相同 (看下面),但又加上允许指定的用户/用户组获取文件所有权,并改变它的许可。通常保守的使用 modify 就足够了。
modify
同意“修改”许可,允许指定的用户/用户组读取、执行、修改和删除文件。
readexec
同意“读取和执行”许可,允许指定的用户/用户组读取和执行文件。
示例:
Permissions: authusers-modify
FontInstall
描述:
告诉安装程序需要安装的文件是一个字体文件,这个参数值是被保存到注册表或 WIN.INI 文件中的字体名,这个名称必须与和在资源管理器中双击字体文件看到的名字相同。注意,安装程序会在字体名后自动添加“(TrueType)”。
如果这个字体文件不是一个 TrueType 字体,你必须在标记参数中标记 fontisnttruetype。
这里建议你在安装字体到 {fonts} 目录时,使用 onlyifdoesntexist 和 uninsneveruninstall 标记。
要在 Windows 2000/XP 中成功安装字体,用户必须是超级用户或管理组成员,在 Windows NT 4.0 及早期版本,任何人都可以安装字体。
inno setup使用介绍(二)
示例:
Source: "OZHANDIN.TTF"; DestDir: "{fonts}"; FontInstall: "Oz Handicraft BT"; Flags: onlyifdoesntexist uninsneveruninstall
Flags
描述:
这个参数是额外选项设置。多个选项可以使用空格隔开。支持下面的选项:
allowunsafefiles
禁止编译器自动检查不安全文件。强烈推荐你不要使用这个标记,除非你有绝对的把握。
comparetimestamp
(不推荐,看下面)
如果安装的文件已经在用户系统中存在,以及至少下列条件中的一个为 true,则告诉安装程序进行时间戳比较:
1. 现有的文件和安装的文件都没有版本信息。
2. 条目中同时使用了 ignoreversion 标记。
3. 未使用 replacesameversion 标记,并且现有的文件和要安装的文件版本号相同 (用文件的版本信息决定)。
如果现有的文件的时间戳比安装的文件老,现有的文件将被替换。否则,将不替换。
如果还没有其它方法,不推荐使用这个标记,因为其中有一个内部问题: NTFS 分区在 UTC (不同于 FAT 分区) 贮存时间戳,因本地时间戳原因 -- Inno Setup 按默认工作 -- 只要用户改变他们系统的时间区域,或转到或使夏令时生效。这可能会导致用户不希望替换的文件被替换,或用户希望替换的文件未被替换。
confirmoverwrite
替换现有的文件前总是询问用户确认。
createallsubdirs
按默认,当编译器包含子目录搜索源文件名/通配符时,将跳过空目录。这个标记会使这些目录在安装时被创建 (就象在 [Dirs] 段创建一样)。
必须和 recursesubdirs 组合使用。
deleteafterinstall
告诉安装程序象平常一样安装文件,但一旦安装完成 (或中断) 则删除。这在提取脚本中的 [Run] 段指定要执行的临时程序时有用。
这个标记不会导致安装期间未被替换的现有文件被删除。
这个标记不能与 isreadme,regserver,regtypelib,restartreplace,sharedfile 或 uninsneveruninstall 标记组合使用。
dontcopy
不复制文件到用户系统。如果文件是通过 [code] 专门处理,这个标记是有用的。
dontverifychecksum
防止安装程序在提取后校验文件。在你想修改的已编译到安装程序中的文件使用这个标记。
必须与 nocompression 组合。
external
这个标记告诉 Inno Setup 不要编译 Source 参数指定的文件到安装程序文件中,改为从分布的媒介或用户系统中复制。查阅 Source 参数的描述获取更多信息。
fontisnttruetype
如果用 FontInstall 参数的条目安装一个非 TrueType 字体,则使用这个标记。
ignoreversion
不比较版本信息;不考虑版本号替换现有的文件。
这个标记应该用于你私人的程序中,不要用于共享的系统文件。
isreadme
表示文件为“自述”文件。安装程序中只有一个文件可以使用这个标记。当文件使用这个标记时,在安装完成后询问用户是否想查看自述文件。如果选择是,安装程序将使用与这个文件类型默认的程序打开该文件。因上,自述文件应该总是使用象 .txt,.wri 或 .doc 扩展名。
请注意,如果安装程序重新启动了用户的电脑 (安装了一个带 restartreplace 标记的文件或 [Setup] 段的 AlwaysRestart 指示设为 yes),用户将没有查看自述文件的选项。
nocompression
预防编译器尝试压缩文件。在你知道压缩没有什么好处的文件 (例如 JPEG 图像) 上使用这个标记,可以加速编译进度,并可以使生成的安装程序更小。
noencryption
防止文件被加密贮存。如果你已经使用了 encryption (用 [Setup] 段指示 Encryption),但想让它可以在用户输入正确的密码之前用 [code] 段支持函数 ExtractTemporaryFile 提取该文件,则使用这个标记。
noregerror
当与 regserver 或 regtypelib 标记中的任一一个组合使用时,安装程序将在注册失败时不显示任何错误消息。
onlyifdestfileexists
仅在用户系统中已经存在相同名字的文件时安装文件。如果你的安装程序是已经安装的软件的补丁,并且你希望安装用户没有安装的文件时,这个标记可能有用。
onlyifdoesntexist
仅在用户系统中不存在时安装文件。
overwritereadonly
总是覆盖只读文件。如果不带这个标记,安装程序在遇到只读文件时询问用户是否覆盖。
promptifolder
按默认,当安装的文件比现有的文件是个较老的版本 (或当使用 comparetimestamp 时发现较早的时间戳)安装程序将不替换现有的文件 (查阅这个主题下面的备注段获取详细资料)。当使用这个标记时,安装程序将询问用户是否替换文件,默认的回答是保留现有的文件。
recursesubdirs
告诉编译器或安装程序同时也搜索来源目录下子目录中的源文件名/通配符。
regserver
注册 OLE 服务 (a.k.a. ActiveX 控件)。使用这个标记,安装程序将查找和执行 DLL/OCX 的 DllRegisterServer 输出。卸载程序调用 DllUnregisterServer。当用于与共享文件结合时,DLL/OCX 只将在涉及的计数为零时取消注册。
看这个主题下面的备注段获取更多信息。
regtypelib
注册类型库 (.tlb)。卸载程序将撤销类型库注册 (除非指定了 uninsneveruninstall 标记)。与 regserver 标记一样,当用于与共享文件结合时,文件只将在涉及的计数为零时取消注册。
看这个主题下面的备注段获取更多信息。
replacesameversion
当使用这个标记,并且文件已经在用户系统中存在,以及它与要安装的文件版本号相同,安装程序将比较文件,如果它们的内部不同,则替换现有的文件。
默认动作 (例如,当这个标记未使用) 是不替换版本号相同的已有的文件。
restartreplace
这个标记通常用于替换系统核心文件。如果文件预先已经存在,且发现被锁定,以至于安装程序不能替换,安装程序将注册该文件 (用 WININIT.INI 可通过使用 MoveFileEx,分别用于 Windows 和 Windows NT) 在下次系统重新启动时替换。当出现这种情况时,将在安装完成时提示用户重新启动电脑。
为保持与 Windows 95/98/Me 兼容,不要在这个条目中使用长文件名,只支持“8.3”文件名。(Windows NT 平台没有这个限制。)
重要提示: 这个 restartreplace 标记只能在用户有管理员权限时才能在 Windows NT 平台成功替换使用中的文件。如果用户没有管理员权限,将显示下列消息: “RestartReplace 失败: MoveFileEx 失败; 代码 5。”因此,当使用 restartreplace 时,强烈推荐你在 [Setup] 段设置“PrivilegesRequired=admin”,让你的安装程序必需有管理员权限才能安装。
sharedfile
使用 Windows 共享文件计数功能 (位于注册表 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\SharedDLLs)。这个功能是用于让文件在应用程序之间共享使用,不要不注意将它删除了。每次安装该文件,涉及的文件计数将增加,当使用这个文件的应用程序卸载,涉及的文件计数减少。如果计数减少到零,该文件被删除 (会通知用户确认,除非同时指定了 uninsnosharedfileprompt 标记)。
使用这个标记的大多数文件被安装到 Windows 系统目录,包含 .OCX、.BPL 和 .DPL 文件。
skipifsourcedoesntexist
这个标记告诉编译器 -- 或安装程序,如果同时使用了 external 标记 -- 如果源文件不存在,只是跳过该条目,而不是显示一个错误消息。
sortfilesbyextension
这个标记告诉编译器在按路径名排序前,先按文件扩展名排序压缩找到的文件。如果同时使用 SolidCompression,可以进一步减小安装程序大小。
touch
这个标记命令安装程序设置安装的文件的时间/日期戳为 [Setup] 段 TouchDate 和 TouchTime 指示指定的值。
如果与 external 标记同时使用,这个标记无效。
uninsnosharedfileprompt
当卸载共享文件时,如果共享计数为零,不询问用户自动删除文件。必须与 sharedfile 标记组合使用才有效。
uninsremovereadonly
当卸载文件时,在删除文件前选删除它的只读属性。
uninsrestartdelete
当使用这个标记、并且该文件在卸载时正在被使用,卸载将文件放置到删除队列,直到系统重新启动经。卸载结束时会询问用户是否重新启动。这个标记通常在卸载不能用程序停止的外壳扩展的文件时有用。注意,要使用这个标记生效,在 Windows NT/2000/XP 中,必需要有管理员权限。
uninsneveruninstall
不卸载这个文件。这个标记在安装在任何情况下不删除的公共共享文件时有用,象 MFC DLL。
示例:
Flags: isreadme 组件和任务参数
公共参数
备注
如果文件已经在用户系统中存在,按默认,将根据下列规则替换:
1. 如果现有的文件版本老于安装的文件版本 (通过文件的版本信息确定),现有的文件将被替换。
2. 如果现有的文件版本与安装的文件版本相同,不替换现有的文件,除非使用了 replacesameversion 标记,且两个文件的内容不一致。
3. 如果现有的文件版本新于安装的文件版本,或如果现有的文件有版本信息,但安装的文件没有,将不替换现有的文件。
4. 如果现有的文件没有版本信息,将被替换。
某些标记象 onlyifdoesntexist,ignoreversion 和 promptifolder 会更改上述的规则。
如果未使用 restartreplace 标记,并且因为其它进程正在使用,安装程序不能替换现有的文件,它将继续进行四次文件替换尝试,每次尝试延时一秒。如果所有尝试失败,将显示一个错误消息。
安装程序用 regserver 或 regtypelib 标记注册所有文件为安装的最后一个步骤。但是,如果 [Setup] 段指示 AlwaysRestart 设为 yes,或如果有用 restartreplace 标记的文件,所有文件在下次重新启动后注册 (通过在 Windows RunOnce 注册表键中创建一个项目)。
当卸载带扩展名 .HLP (Windows 帮助文件) 文件后,相应的 .GID 和 .FTS 文件也同样将自动卸载。
[Icons] 段
这个可选段定义所有创建在开始菜单和/或其它位置 (比如桌面) 的快捷方式。
这里是 [Icons] 段的例子:
[Icons]
Name: "{group}\My Program"; Filename: "{app}\MYPROG.EXE"; WorkingDir: "{app}"
Name: "{group}\Uninstall My Program"; Filename: "{uninstallexe}"
下列是所支持的参数列表:
Name (必需)
描述:
要创建的快捷方式的名字和位置。在这个参数中可以使用任何外壳文件夹常量或目录常量。
请注意,快捷方式是贮存为文字文件,因此在普通文件名中不能使用的字符不这里也同样不能使用。同样,因为不可能有两个相同名字的文件一样,也不可能有两个相同名字的快捷方式。
示例:
Name: "{group}\My Program"
Name: "{group}\Subfolder\My Program"
Name: "{userdesktop}\My Program"
Name: "{commonprograms}\My Program"
Name: "{commonstartup}\My Program"
Filename (必需)
描述:
快捷方式的命令行文件名,通常用一个目录常量开头。
示例:
Filename: "{app}\MYPROG.EXE"
Filename: "{uninstallexe}"
Parameters
描述:
快捷方式的可选命令行参数,可以包含常量。
示例:
Parameters: "/play filename.mid"
WorkingDir
描述:
快捷方式的工作 (或启动) 目录,就是指示程序在哪个目录开始运行。如果这个参数未指定或是空白的,Windows 将使用一个默认路径,在 Windows 不同版本之间是不同的。这个参数可以包含常量。
示例:
WorkingDir: "{app}"
HotKey
描述:
快捷方式的热键 (或快捷键) 设置,就是可以用于启动程序的组合键。
注意: 如果你改变了快捷键并重新安装了应用程序,Windows 可以继续认可老的快捷键,直到你注销并返回或重新启动系统。
示例:
HotKey: "ctrl+alt+k"
Comment
描述:
指定快捷方式的注释 (或描述) 对象,在 Windows 2000,Me 及更高版本中可以用来弹出提示。早期版本的 Windows 被忽略注释。
示例:
Comment: "This is my program"
IconFilename
描述:
要显示的自定义图标文件名 (位于用户系统)。这可以是一个包含图标文件的可执行映像 (.exe, .dll)或一个 .ico 文件。如果这个参数未指定或空白,Windows 将使用文件的默认图标,这个参数可以包含常量。
示例:
IconFilename: "{app}\myicon.ico"
IconIndex
默认: 0
描述:
用 IconFilename 指定的文件中使用的以零为基点的图标索引。
如果 IconIndex 非零值,以及 IconFilename 未指定或空白,它将默认为 IconFilename 与 Filename 名相同。
示例:
IconIndex: 0
Flags
描述:
这个参数是额外选项设置。多个选项可以使用空格隔开。支持下面的选项:
closeonexit
当设置这个标记时,安装程序将设置快捷方式的“退出时关闭”属性。这个标记只在快捷方式指向 MS-DOS 应用程序时有效 (如果它是 .pif 扩展名)。如果没有这个标记也没有指定 dontcloseonexit 标记,安装程序将尝试改变“退出时关闭”属性。
createonlyiffileexists
当设置这个标记时,安装程序将只在用文件名参数指定的文件存在时尝试创建图标。
dontcloseonexit
等同于 closeonexit,除了它导致安装程序不选中“退出时关闭”属性。
foldershortcut
创建一个特殊的象“文件夹快捷方式”的快捷方式类型。一般来说,文件夹快捷方式出现在开始菜单中,单击该快捷方式会打开资源管理器窗口显示文件夹内容。与此相反,“文件夹快捷方式”将象菜单一样显示目标文件夹的内容,而不是单独打开一个窗口。
文件夹快捷方式只支持 Windows 2000、Me 和最高版本,一些早期版本的 Windows,安装程序在遇到这个标记时,将返回创建一个普通快捷方式。
当使用这个标记,文件夹名必须在文件名参数中指定。指定一个文件名字将导致毫无用处的快捷方式。
runmaximized
当设置这个标记时,安装程序设置图标的“运行”设置为“最大化”,使程序在启动后初始状态为最大化。
runminimized
当设置这个标记时,安装程序设置图标的“运行”设置为“最小化”,使程序在启动后初始状态为最小化。
uninsneveruninstall
通知卸载程序不删除图标。
useapppaths
当设置这个标记时,只在文件名参数中指定文件名 (无路径),安装程序将从“HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths”注册表键获取路径名,并自动添加到文件名前面。
示例:
Flags: runminimized
[INI] 段
这是你希望安装程序在用户系统中设置 .INI 文件条目的可选段。
这里是 [INI] 段的例子:
[INI]
Filename: "{win}\MYPROG.INI"; Section: "InstallSettings"; Flags: uninsdeletesection
Filename: "{win}\MYPROG.INI"; Section: "InstallSettings"; Key: "InstallPath"; String: "{app}"
下列是所支持的参数列表:
Filename (必需)
描述:
你希望安装程序修改的 .INI 文件的名字,可以包含常量。如果这个参数是空白的,它写入到系统的 Windows 目录中的 WIN.INI 中。
示例:
Filename: "{win}\MYPROG.INI"
Section (必需)
描述:
要创建的用于放置 INI 条目的区段名,可以包含常量。
示例:
Section: "Settings"
Key
描述:
要设置的键名,可以包含常量。如果这个参数未指定或是空白的,将不创建键。
示例:
Key: "Version"
String
描述:
分配给键的值,可以使用常量。如果这个参数未指定,将不创建键。
示例:
String: "1.0"
Flags
描述:
这个参数是额外选项设置。多个选项可以使用空格隔开。支持下面的选项:
createkeyifdoesntexist
仅在如果键名不存在时分配到键。
uninsdeleteentry
当程序卸载时删除条目。这可以写 uninsdeletesectionifempty 标记组合使用。
uninsdeletesection
当程序卸载时,删除条目所在的整个区段。这对于在 Windows 它自身包含的 INI 文件 (象一些 WIN.INI 中的区段) 中使用,这具有很大的危险性。你应该只在应用程序私有的文件中使用这个标记。
uninsdeletesectionifempty
等同于 uninsdeletesection,但只在没有键剩余的情况下删除段,它可以与 uninsdeleteentry 标记组合使用。
示例:
Flags: uninsdeleteentry
[Installdelete] 段
这个可选段格式与 [Uninstalldelete] 一样,除了它的条目处理在安装步骤之前。
[Languages] 段
Inno Setup 支持多语言安装。[Languages] 段用来定义安装程序中可使用的语言。
安装程序用下列顺序确定在消息中默认使用的语言:
1. 搜索 LanguageID 设置的语言 (通常指定在语言文件 .isl 的 [LangOptions] 段) 匹配首选语言标识和当前用户界面语言或本地 (根据 LanguageDetectionMethod) 子语言标识两者。
2. 如果未发现,只搜索匹配的首选语言标识。如果两个或多个可用文有相同的首选语言标识,它将使用在 [Languages] 段中列出的第一个。
3. 如果未发现,默认为指定在 [Languages] 段的第一个语言。
如果 [Setup] 段的 ShowLanguageDialog 指示设置为 yes (默认),将显示一个选择语言对话框,使用户有机会忽略语言安装选择。
ShowLanguageDialog 指示设置为 yes (默认),将显示一个选择语言对话框,使用户有机会忽略语言安装选择。
下面是 [Languages] 段的一个示例。它定义两个语言: 简体中文,根据标准的汉化版的 Default.isl 文件,以及英语,原版的语言文件,汉化版中已包括。
[Languages]
Name: "chs"; MessagesFile: "compiler:Default.isl"
Name: "en"; MessagesFile: "compiler:English.isl"
Name (必需)
描述:
语言的内部名字,你可以设置为你喜欢的任何东西。这可以用作 [LangOptions] 或 [Messages] 段条目的前缀,使这些条目只用一种语言。{language} 常量返回选定语言的内部名字。
示例:
Name: "en"
MessagesFile (必需)
描述:
指定要读取的默认消息的文件名。这个文件必须位于你的安装程序的来源目录,除非你指定了文件的完整路径或用“compiler:”作为前缀,在这种场合下它会在编译器目录下查找文件。
当指定多个文件时,它按指定的顺序读取,因此最后的消息文件将覆盖前面的所有文件。
查阅 [Messages] 段帮助主题获取 .isl 文件格式中的详细资料。
示例:
MessagesFile: "compiler:Dutch.isl"
MessagesFile: "compiler:Default.isl,compiler:MyMessages.isl"
LicenseFile
描述:
指定可选的许可协议文件名字,用 .txt 或 .rtf (富文本) 格式,它显示在用户选择程序的目标目录之前。在运行安装程序编译器时,这个文件必须位于你的安装程序的来源目录,除非你指定了文件的完整路径或用“compiler:”作为前缀,在这种场合下它会在编译器目录下查找文件。
示例:
LicenseFile: "license-Dutch.txt"
InfoBeforeFile
描述:
指定可选的“自述”文件名字,用 .txt 或 .rtf (富文本) 格式,它显示在用户选择程序的目标目录之前。在运行安装程序编译器时,这个文件必须位于你的安装程序的来源目录,除非你指定了文件的完整路径或用“compiler:”作为前缀,在这种场合下它会在编译器目录下查找文件。
示例:
InfoBeforeFile: "infobefore-Dutch.txt"
InfoAfterFile
描述:
指定可选的“自述”文件名字,用 .txt 或 .rtf (富文本) 格式,它显示在完成安装之后。在运行安装程序编译器时,这个文件必须位于你的安装程序的来源目录,除非你指定了文件的完整路径或用“compiler:”作为前缀,在这种场合下它会在编译器目录下查找文件。
这与 isreadme 文件不同,它里面的文字显示这一个向导页中,而不是一个单独的记事本窗口。
示例:
InfoAfterFile: "infoafter-Dutch.txt"
[Messages] 段
[Messages] 段用于定义显示在安装程序和卸载程序中的消息。通常,你不需要在你的脚本中创建 [Messages] 段,按默认,所有的消息在 Inno Setup 的 Default.isl 文件 (或在 [Languages] 段指定的条目) 中已经包含。
但是,一些特殊的消息可以用创建在脚本文件 [Messages] 段的内容覆盖。要覆盖消息,首先你需要知道你想更的消息 ID。这可以通过搜索 Default.isl 很容易地找到。例如,你想改变向导页“&Next >”按钮为“前进(&F) >”,此消息的 ID 是“ButtonNext”,所以你只要在 [Messages] 段写入下面的内容:
[Messages]
ButtonNext=前进(&F) >
一些消息包含变量,象 %1 和 %2。你可以重新排列变量顺序 (例如将 %2 移到 %1 之前),也可以在需要的情况下重复使用同一变量 (例如“%1 ... %1 %2”)。在带变量的消息中,使用两个连续的“%”字符,表示要置入单个“%”。“%n”表示换行符。
如果你想翻译所有 Inno Setup 的文本其它语言,而不是修改 Default.isl 或覆盖在你创建的所有脚本中的每个消息,将 Default.isl 复制一份,用其它名字象 MyTranslation.isl 命名。在你想使用 MyTranslation.isl 的安装程序中,创建一个 [Languages] 段 指向该文件。
在一些场合中,这里有多个 [Languages] 段条目,在你的脚本中指定一个 [Messages] 段条目 (与 .isl 文件中指定的条目不同) 将按默认不考虑所有语言消息。要应用一个 [Messages] 段条目到只使用于一种语言,在语言的内部名字前加到前缀并跟随一个点。例如:
en.ButtonNext=前进(&F) >
特殊用途标识
BeveledLabel 消息的特殊用途是可以用于指定显示在向导窗口和卸载程序窗口左下角的文本行,下面是一个示例:
[Messages]
BeveledLabel=Inno Setup
[CustomMessages] 段
[CustomMessages] 段用于定义 {cm:...} 常量的自定义消息值。查阅常量帮助文档内容获取更多信息。
从 [CustomMessages] 段使用 {cm:...} 常量获取的带描述的任务示例:
[CustomMessages]
createDesktopIcon=创建桌面快捷方式(&D)
[Tasks]
Name: desktopicon; Description: "{cm:createDesktopIcon}"
消息可以获取从 %1 到 %9 的声明。你可以重新排列它们的顺序 (例如,将 %2 移到 %1 之前),也可以在需要时重复声明 (例如“%1 ... %1 %2”)。在带声明的消息中,使用两个连续的“%”字符表示嵌入单个“%”。“%n”创建一个换行符。
在一些多个 [Languages] 段条目的场合下,在你的脚本中指定一个 [CustomMessages] 段条目 (对于 .isl 文件) 将按默认覆盖所有语言的消息。要只在一种语言中使用 [CustomMessages] 段条目,用语言的内部名字作为前缀,然后跟随一个句点。例如:
nl.createDesktopIcon=Maak een snelkoppeling op het &bureaublad
通常所有有下列自定义消息定义和每种语言的翻译已经包含在各自的语言 .isl 文件中 (以简体中文语言为例):
NameAndVersion=%1 版本 %2
AdditionalIcons=附加快捷方式:
createDesktopIcon=创建桌面快捷方式(&D)
createQuickLaunchIcon=创建快速运行栏快捷方式(&Q)
ProgramOnTheWeb=%1 网站
UninstallProgram=卸载 %1
LaunchProgram=运行 %1
AssocFileExtension=将 %2 文件扩展名与 %1 建立关联(&A)
AssocingFileExtension=正在将 %2 文件扩展名与 %1 建立关联...
你可以在脚一中使用这些预定的自定义消息。下列是在 UninstallProgram 中使用的示例:
[Icons]
Name: "{group}\{cm:UninstallProgram,My Program}"; Filename: "{uninstallexe}"
[LangOptions] 段
[LangOptions] 段用于定义特殊语言设置,象字体一样,被安装程序和卸载程序使用。通常,你不需要在你的脚本中创建 [LangOptions] 按默认,所有的特殊语言设置在 Inno Setup 的 Default.isl 文件 (或在 [Languages] 段指定的条目) 中已经包含。
下面是 [LangOptions] 段的一个例子。(下面列出的设置是默认值。)
[LangOptions]
LanguageName=English
LanguageID=$0409
LanguageCodePage=0
DialogFontName=
DialogFontSize=8
WelcomeFontName=Verdana
WelcomeFontSize=12
TitleFontName=Arial
TitleFontSize=29
CopyrightFontName=Arial
CopyrightFontSize=8
LanguageName 是语言的名字。它显示在多语言安装程序中的选择语言对话框可用语言列表中。它以 Unicode 字符形式 (在 NT 平台也是这样显示) 贮存在内部。要嵌入 Unicode 字符,使用“<nnnn>”,这里的“nnnn”是 4 位数的十六进制 Unicode 字符集。你可以在 Windows 2000 及更高版本中的附件中用字符映射表查找字符的 Unicode 字符集。
LanguageID 是语言的数字化“语言标识”。查阅 http://msdn.microsoft.com/library/en-us/intl/nls_238z.asp 获取有效的语言标识列表。这是用来自动侦测默认使用的语言,请确保它格式使用正确,总是用一个“$”符号作为开头,因为语言标识是十六进制格式。
LanguageCodePage 用来指定显示语言所需要的“代码页”。当在多语言安装的选择语言对话框中加上可用语言列表时,它的 LanguageCodePage 值与系统代码页进行比较以确定应该列出哪些语言。只有那些 LanguageCodePage 的值与系统代码页匹配的语言才能显示。目的是不显示在用户系统中不能正确显示的语言。例如,俄语文字不能在除代码页为 1251 的系统中正确显示,因此如果系统运行在其它代码页中,俄语没有必要列出。
如果 LanguageCodePage 设为 0,该语言将总是在列表中列出,且不考虑系统的代码页。它可以判断在包含纯 ASCII 的语言中使用 0。例如象 English,因为 ASCII 同样可以在所有代码页中使用。
DialogFontName 和 DialogFontSize 指定在对话框中使用的字体名和大小 (磅)。如果指定的字体名在用户系统中不存在,或是一个空字串,将用 8 磅大小的 Microsoft Sans Serif 或 MS Sans Serif 替换。
WelcomeFontName 和 WelcomeFontSize 指定在欢迎向导页和安装完成向导页中的字体名和大小 (磅)。如果指定的字体名在用户系统中不存在,或是一个空的字符,将用 12 磅大小的 Microsoft Sans Serif 或 MS Sans Serif 替换。
TitleFontName 和 TitleFontSize 指定在背景窗口顶部 (仅在 indowVisible=yes 时可见) 使用的字体名和大小 (磅)。如果指定的字体名在用户系统中不存在,将用 29 磅的 Arial 代替。如果指定的字体名是空的,将用 29 磅的 Microsoft Sans Serif 或 MS Sans Serif 代替。
CopyrightFontName 和 CopyrightFontSize 指定在背景窗口中 AppCopyright 消息 (仅在 indowVisible=yes 时可见) 使用的字体名和大小 (磅)。如果指定的字体名在用户系统中不存在,将用 8 磅的 Arial 代替。如果指定的字体名是空的,将用 8 磅的 Microsoft Sans Serif 或 MS Sans Serif 代替。
在有多个 [Languages] 段条目的情况下,在脚本中指定一个 [LangOptions] 段指示 (不同于 an .isl 文件) 将按默认不覆盖所有语言指示。要应用 [LangOptions] 段指示到其中一种语言,用语言的内部名字跟随一个点作为前缀。例如:
en.LanguageName=English
[Registry] 段
这个可选段用来定义一些你想用安装程序在用户系统中创建、修改或删除的注册表键/值。
按默认,用安装程序创建的注册表键和值在卸载时不删除。如果你想让卸载程序删除键或值,你必须包含下面 uninsdelete* 标记中的一个。
下面是 [Registry] 段的一个示例。
[Registry]
Root: HKCU; Subkey: "Software\My Company"; Flags: uninsdeletekeyifempty
Root: HKCU; Subkey: "Software\My Company\My Program"; Flags: uninsdeletekey
Root: HKLM; Subkey: "Software\My Company"; Flags: uninsdeletekeyifempty
Root: HKLM; Subkey: "Software\My Company\My Program"; Flags: uninsdeletekey
Root: HKLM; Subkey: "Software\My Company\My Program"; ValueType: string; ValueName: "InstallPath"; ValueData: "{app}"
下列是所支持的参数列表:
Root (必需)
描述:
根键。必须是下列中的一个:
HKCR (HKEY_CLASSES_ROOT)
HKCU (HKEY_CURRENT_USER)
HKLM (HKEY_LOCAL_MACHINE)
HKU (HKEY_USERS)
HKCC (HKEY_CURRENT_CONFIG)
示例:
Root: HKCU
Subkey (必需)
描述:
子键名,可以包含常量。
示例:
Subkey: "Software\My Company\My Program"
ValueType
描述:
值的数据类型。必须是下面中的一个:
none
string
expandsz
multisz
dword
binary
如果指定了 none (默认设置),安装程序将创建一个没有键值的键,在这种情况下,ValueName 和 ValueData 参数将被忽略。
如果指定了 string,安装程序将创建一个字符串 (REG_SZ) 值。
如果指定了 expandsz,安装程序将创建一个扩展字符串 (REG_EXPAND_SZ) 值。这种数据类型起初是用于 Windows NT/2000/XP 上,但是也支持 Windows 95/98/me。
如果指定了 multisz,安装程序将创建一个多行文本 (REG_MULTI_SZ) 值。
如果指定了 dword,安装程序将创建一个整数 (REG_DWORD) 值。
如果指定了 binary,安装程序将创建一个二进制 (REG_BINARY) 值。
示例:
ValueType: string
ValueName
描述:
要创建的值名,可以包含常量。如果是空白的,将写入到“默认”值。如果 ValueType 参数设置为 none,这个参数被忽略。
示例:
ValueName: "Version"
ValueData
描述:
值的数据。如果 ValueType 参数是 string,expandsz 或 ultisz,这是这一个可以包含常量的字符串。如果数据类型是 dword,这可以是一个十进制整数 (例如“123”),一个十六进制整数 (例如“$7B”) 或解析为整数的常量。如果数据类型是 binary,这可以是下列形式的十六进制字节序列: “00 ff 12 34”。如果数据类型是 none,将被忽略。
在 string,expandsz 或 multisz 类型值中,你可以在这个参数中使用一个特殊的常量调用 {olddata}。{olddata} 用先前的注册表值数据替换。如果你想添加一个字串到现有的值中,{olddata} 常量非常有用。例如,{olddata};{app}。如果该值不存在或现有的值不是一个字符串类型,{olddata} 常量将被删除。如果创建的值是一个 multisz 类型,但现有的值不是多行字符类型(例如,它是 REG_SZ 或 REG_EXPAND_SZ),{olddata} 常量也将被删除。反这亦然。
在 multisz 类型值中,你可以在参数中使用一个特殊常量调用 {break} 以插入换行符。
示例:
ValueData: "1.0"
Permissions
描述:
指定登录注册表键 ACL (访问控制列表) 的附加权限。如果你不熟悉 ACL 或你不知道为什么要列改,不推荐你使用这个参数,因为误用会导致重大的系统安全问题。
这个参数在用户必须运行 Windows 2000 或更高版本 (NT 4.0 由于 API 的问题不支持) 以及当前用户必须有更改注册表的权限时才有效。这些条件不满足时,不会显示错误消息,权限也不会被设置。
这个参数应该只使用于你的应用程序特有的注册表键中。不要更改顶级键象 HKEY_LOCAL_MACHINE\SOFTWARE 的 ACL,否则你自己打开了用户系统的安全漏洞。
指定的权限不考虑注册表键在安装前是否存在。如果 ValueType 是 none 和使用了 deletekey 或 deletevalue 标记时,不要设置这个权限。
这个参数可以包含象下列格式一样一个或多个空格分隔的值:
<用户或组标识>-<访问类型>
下面是 [Registry] 段支持的访问类型:
full
同意“完全控制”许可,与修改相同 (看下面),但又加上允许指定的用户/用户组获取注册表键所有权,并改变它的许可。通常保守的使用 modify 就足够了。
modify
同意“修改”许可,允许指定的用户/用户组读取、修改和删除注册表值或子键。
read
同意“读取和执行”许可,允许指定的用户/用户组读取注册表值或子键。
示例:
Permissions: authusers-modify