Inno Setup使用教程4

 

[InstallDelete] 段 
它使用的是和 [UninstallDelete] 段相同的格式,不同的是它是在安装程序的第一步被处理的。  
[Messages] 段 
[Messages] 段是用于定义安装程序和卸载程序所显示的消息。通常你不需要在你的脚本文件里面创建 [Messages] 段,默认情况下所有的显示消息都由 Inno Setup 包含的文件 Default.isl 定义。 (或由 [Setup] 段的关键字 MessagesFile 指定的任何文件). 
然而,单独的消息可以被你的脚本中创建的 [Messages] 段覆盖。要这么做,首先你需要知道你要改变的消息的标识 (ID),在搜索 Default.isl 文件时能很容易的发现。例如,你想要改变安装向导的按钮 “下一步(&N)” 为 “向前(&F)”,该消息的标识为“ButtonNext”,那么你应该象这样创建 [Messages] 段:

[Messages] 
ButtonNext=&Forward >

有些消息带有象 %1 和 %2 这样的参数,你可以重新排列参数的顺序(例如将 %2 移到 %1 的前面)并且如果需要的话可以重复使用参数(例如“
%1 ... %1 %2”)。在带有参数的消息中,使用两个连续的“%”代替一个嵌入的“%”,“%n”创建一个换行。

如果你希望将 Inno Setup 的文本翻译成其他语言修改并替换文件 Default.isl 或在你创建的脚本里面覆盖每个消息,做一个 Default.isl 的副本并另起一个名字就像 MyTranslation.isl. 在你要使用 MyTranslation.isl 的任何安装程序中,简单的将 [Setup] 段中的关键字 MessagesFile 指向该文件。

特殊用途的标识
有几个 [Messages] 段的项实际上不是用于在屏幕上显示的,它们是用于在安装程序中指定所使用的字体和字型号的。这些可选项中的每一个都有一个前导下划线字符 (“_”) 开始,请参阅 Default.isl 文件头部的注释的使用方法示例。 
 
[Registry] 段 
这个段是可选的,他定义了一些注册表项,用于在复制完文件之后创建在用户的系统中。 
下面是 [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 上,但是也支持 Windows 95/98. 
如果指定了 multisz,安装程序将创建一个多行文本 (REG_MULTI_SZ) 值。 
如果指定了 dword,安装程序将创建一个整数 (REG_DWORD) 值。 
如果指定了 binary,安装程序将创建一个二进制 (REG_BINARY) 值。 

示例: 
ValueType: string 
ValueName 

说明: 
要创建的键值的名称,可以包含常量。如果它是空的,将会写入“默认”(Default)值中。如果ValueType 参数被设置为 none, 该参数将被忽略。 

示例: 
ValueName: "Version" 
ValueData 

说明:
键值的数据。如果 ValueType 参数是 string, expandsz 或 multisz, 该参数是一个可以包含常量的字符串。如果数据类型是 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} 的常量来嵌入换行(nulls)。

示例: 
ValueData: "1.0" 
Flags 

说明: 
“标记”,这个参数是一个附加的选项集合,可以多个选项共同使用,使用空格分开多个选项。下面列出了被支持的选项: 

createvalueifdoesntexist 
当指定了此标记时,只有当相同名称的键值不存在时安装程序才会创建该键值。如果数据类型是 none ,或者同时指定了 deletevalue 标记将忽略该标记。 

deletekey 
当指定了此标记时,如果该项已存在,安装程序会首先尝试去删除它,包括其中的键值和子键,然后如果 ValueType 不是 none 的话它将创建一个新的键和键值。 

deletevalue 
当指定了此标记时,如果该键值已存在,安装程序会首先尝试删除该键值。然后如果 ValueType 不是 none ,并且该键不存在时它将创建该键和新的键值。 

dontcreatekey 
当指定了此标记时,如果该键不存在于用户的系统中安装程序将不会试图创建该键或任何键值。如果改建不存在将不显示错误消息。 

典型地该标记同 uninsdeletekey 标记结合使用,以便在安装时没有创建该键时确保在卸载期间删除该键。 

noerror 
如果安装程序在创建键或键值时无论什么原因失败不显示错误消息。 

preservestringtype 
该标记只用于 ValueType 参数为 string 或 expandsz 时。当指定了此标记并且该键值不存在或者已存在的键值不是字符串类型 (REG_SZ 或 REG_EXPAND_SZ) 时,该项将由 ValueType 指定的类型创建,如果该键值存在并且是一个字符串类型,该项将由与预先存在的键值相同的键值类型替代。 

uninsclearvalue 
当程序被卸载时,将设置该键值的数据为空的字符串 (类型 REG_SZ). 该标记不能同 uninsdeletekey 标记一起使用。 

uninsdeletekey 
当程序被卸载时,删除整个键,包括其下全部的键值和子键。对于由 Windows 自身使用的键来说使用该标记明显不是一个好的主意,你应当将该标记应用到你自己的应用程序键中。 

uninsdeletekeyifempty 
当程序被卸载时,如果该键下没有其它键值和子键则将其删除。该标记可以结合 uninsdeletevalue 标记一起使用。 

uninsdeletevalue 
当程序卸载时删除该键值,该标记可以结合 uninsdeletekeyifempty 标记一起使用。 

注意:对于 Inno Setup 1.1 之前的版本,你可以与 none 数据类型一起使用该标记则将会成为 “delete key if empty” (如为空则删除该键)功能的标记。这个技巧现在已经不在被支持,你必须使用 uninsdeletekeyifempty 标记来实现该功能。 

示例: 
Flags: uninsdeletevalue 
公共参数
 
[Run] & [UninstallRun] 段 
[Run] 段是可选的,指定任意数量的程序在成功安装程序以后及显示结束对话框之前被执行。同样 [UninstallRun] 段也是可选的,指定任意数量的程序在“卸载程序”的第一步时被执行。除非下面有其它说明,两个段共有相同的语法。 
每个程序按照你的脚本编排的顺序被执行,当出路 [Run]/[UninstallRun] 的项时,安装程序将会等到当前的程序终止之后才处理下一个,当然除非使用了 nowait 标记。

这是一个 [Run] 段的示例。 

[Run] 
Filename: "{app}/INIT.EXE"; Parameters: "/x" 
下面列出了支持的参数:

Filename (必需的) 

说明: 
要被执行的程序,或要被打开的文件/文件夹。如果 Filename 不是一个 .exe 或 .com 文件,你必须在该项中使用 shellexec 标记。该参数可以包含常量。 

示例: 
Filename: "{app}/INIT.EXE" 
Parameters 

说明: 
程序可选的命令行参数,该参数可以包含常量。 

示例: 
Parameters: "/x" 
WorkingDir 

说明:
程序起始位置的目录。如果没有指定该参数或该参数是空的,将不会改变任何特殊的目录。该参数可以包含常量。 

示例: 
WorkingDir: "{app}" 
RunOnceId 

说明: 
只在 [UninstallRun] 段里面有效。如果相同的应用程序被安装超过了一次,“run”项将会重复出现在卸载记录文件里面。通过将一个字符串赋值给 RunOnceId, 你可以确保一个独特的 [UninstallRun] 项在卸载期间只被执行一次。例如,如果在卸载记录中的“run”中有两个或者更多的带有 RunOnceId 参数并被设置为“DelService”的项,则只有最后一个带有一个 RunOnceId 参数并被设置为“DelService”的项会被执行。其余的将被忽略。注意 RunOnceId 参数是大小写敏感的。 

示例: 
RunOnceId: "DelService" 
Flags 

说明:
“标记”,这个参数是一个附加的选项集合,可以多个选项共同使用,使用空格分开多个选项。下面列出了被支持的选项: 

nowait 
如果指定了该标记,将不会等待该项处理被结束运行之前就进行到下一个 [Run] 项,或者结束安装程序。不能结合 waituntilidle 
标记一起使用。 

shellexec 
如果 Filename 不是一个可以直接执行的文件(一个 .exe 或 .com 文件)则该标记是必需的。当设置了该标记时,Filename 可以是一个文件夹或者任何已注册的文件类型 ―― 包括 .hlp, .doc 等等。文件将会被用户系统中的与该文件类型相关联的应用程序打开,就像用户在资源管理器中用鼠标双击该文件一样。 

当在 Filename 中使用一个文件夹名称时,建议在后面加上一个反斜杠字符(例如“{group}/”),以确保可能有相同名称的程序不会被执行。同样要注意文件夹只能在 Windows 95/NT 4+ 上被打开,因为从那时起使用了一个新的资源管理器的外壳。

使用 shellexec 标记有一个缺点,那就是无法等待该过程结束,因此,它始终就像被指定了 nowait 标记一样操作。 

skipifdoesntexist 
如果指定了该标记,如果 Filename 不存在安装程序将不会显示错误消息。它只适用于 [Run] 段,因为卸载程序从来不显示错误消息在 [UninstallRun] 项执行失败时。 

runmaximized
如果指定了该标记,将会在一个最大化的窗口启动程序或文档。

runminimized 
如果指定了该标记,将会在一个最小化的窗口启动程序或文档。 

waituntilidle
如果指定了该标记,它将暂停直到该过程正在等待用户的输入并且没有未决的输入时,取而代之的是等待该过程的结束。(该标记调用 WaitForInputIdle Win32 函数.) 不能结核 nowait 一起使用。 

示例:
Flags: nowait 
公共参数
 
[UninstallDelete] 段 
该段是可选的。该段是用来定义一些附加的除了那些被安装的应用程序之外的要被卸载程序删除的文件或目录。使用该段来删除由你的应用程序创建的 .INI 文件是一个常用的办法。卸载程序在卸载过程的最后一步处理这些项。 
这是一个 [UninstallDelete] 段的示例: 

[UninstallDelete] 
Type: files; Name: "{win}/MYPROG.INI" 
下面列出了支持的参数: 

Type (必需的) 

说明: 
指出要被卸载程序删除的是什么。必须是下列之一: 

files 
Name 参数指定的是一个具体的文件的名称,或者是一个带有通配符的文件名。 

filesandordirs 
功能上类似于 files ,但是它还可以匹配目录名称,并且任何名称匹配的目录包括其中所有的文件和子目录都会被删除。 

dirifempty 
当使用它时,Name 参数必须是一个目录的名称,但是它不能包括通配符。只有在不包含任何文件和子目录的情况下该目录才能被删除。 

示例: 
Type: files 
Name (必需的) 

说明: 
要被删除的文件或目录的名称。 

注意:不要试图通过在这里使用通配符去删除 {app} 目录下的全部文件,我强烈建议你不要这样做的原因由两个,首先,用户通常不会意识到可能还有他们放进应用程序目录中的数据文件将要被删除而不会得到警告(例如他们可能卸载应用程序只是为了要将它转移到一个不同的驱动器)。最好是将其保留一直到最后用户想要删除时用手工的方法删除;还有,如果由于用户的失误碰巧将程序安装到了一个错误的目录当中(例如 C:/WINDOWS)而这时去卸载它势必结果会损失惨重。再次声明,千万不要这么做! 

示例: 
Name: "{win}/MYPROG.INI" 
公共参数
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值