Inno Setup 帮助中文版

前言:
  Inno Setup 是一个非常优秀的安装制作器,它可以很轻易地制作出界面美观,风格独特的安装程序。它所提供的向导更是让你从繁琐的脚本中解脱出来,就算你不懂脚本语言也能轻易地制作功能强大的安装程序。但如果想更好地使用该制作器或制作出功能更强大的安装程序,了解其脚本格式及语法是必须的。
  它本身所附带的帮助文件基本上提供了全面的叙述和丰富的例子,不过就是英文版的。本文是该文的中文译本,我将其翻译后并贴上,供广大软件制作人日常使用时参考或查阅。其版权归原著作者所有。由于本人的英语水平有限,其中的错漏在所难免。

  该制作器是基于脚本来做的,脚本大致上分成若干的段,各段掌管不同的功能。其详细的功能见段内的叙述。

[Setup]段
  
这段包含了安装和卸载时用到的全局设置, 和你所创建的安装的必须指令。下面是一个实例:
[Setup]
AppName=My Program
AppVerName=My Program version 1.4
DefaultDirName={pf}/My Program
DefaultGroupName=My Program

以下指令可以放置在[Setup]段中: (粗体的指令是必须要有的)
编译器相关指令:
* Compression
* DiskClusterSize
* DiskSize
* DiskSpanning
* DontMergeDuplicateFiles
* InternalCompressLevel
* OutputBaseFilename
* OutputDir
* ReserveBytes
* SourceDir
* UseSetupLdr

安装程序相关指令:(这些指令将影响设置程序的操作, 或保存起来在日后卸载时使用。)
* AdminPrivilegesRequired
* AllowNoIcons
* AllowRootDirectory
* AllowUNCPath
* AlwaysCreateUninstallIcon
* AlwaysRestart
* AlwaysShowComponentsList
* AlwaysShowDirOnReadyPage
* AlwaysShowGroupOnReadyPage
* AlwaysUsePersonalGroup
* AppName
* AppId
* AppMutex
* AppPublisher
* AppPublisherURL
* AppSupportURL
* AppUpdatesURL
* AppVersion
* AppVerName
* ChangesAssociations
* CreateAppDir
* CreateUninstallRegKey
* DefaultDirName
* DefaultGroupName
* DirExistsWarning
* DisableAppendDir
* DisableDirPage
* DisableFinishedPage
* DisableProgramGroupPage
* DisableReadyMemo
* DisableReadyPage
* DisableStartupPrompt
* EnableDirDoesntExistWarning
* ExtraDiskSpaceRequired
* InfoAfterFile
* InfoBeforeFile
* LicenseFile
* MessagesFile
* MinVersion
* OnlyBelowVersion
* Password
* Uninstallable
* UninstallDisplayIcon
* UninstallDisplayName
* UninstallFilesDir
* UninstallIconName
* UninstallLogMode
* UpdateUninstallLogAppName
* UsePreviousAppDir
* UsePreviousGroup
* UsePreviousSetupType
* UsePreviousTasks

润饰: 使用这些指令仅是为了安装程序的显示效果。
* AppCopyright
* BackColor
* BackColor2
* BackColorDirection
* BackSolid
* FlatComponentsList
* ShowComponentSizes
* UninstallStyle
* WindowShowCaption
* WindowStartMaximized
* WindowResizable
* WindowVisible
* WizardImageBackColor
* WizardImageFile
* WizardSmallImageFile
* WizardStyle

不常使用的:
* Bits
* CompressLevel
* DisableDirExistsWarning
* OverwriteUninstRegEntries

[Types]段
  
这段是可选段。它定义了安装程序时选择安装部件页向导中的所有安装类型。如果你在[Components]段中定义了部件,但却没有定义[Type]类型,则在编译期间会创建一系列默认的安装类型。如果你使用默认语言(英文)的信息文件,则这些类型会与下面的例子相同。以下是[Types]段的一个实例:
[Types]
Name: "full"; Description: "Full installation"
Name: "compact"; Description: "Compact installation"
Name: "custom"; Description: "Custom installation"; Flags: iscustom

下面是所支持的参数列表:
Name (必须) : 这种类型的内部名称,在[Components]段中当作参数用以告诉安装程序该部件属于那一种类型。
  例:Name: "full"

Description (必须) :类型的描述,可以包含常量。该描述内容是在安装是显示用的。
  例:Description: "Full installation"

Flags :该参数是一个附加的可选项。多个选项可以用空格来隔开。下面是该参数所支持的选项:
  iscustom :告诉安装程序该类型是一个自定义类型,用户可以在安装时随时地手动更改部件集合,安装程序会将安装类型转成自定义类型。注意:如果你定义了一个自定义类型,则安装程序就只允许用户选择一个安装类型进行安装,这样用户就再也无法随意地选择要安装的部件。
  例:Flags: iscustom

[Components]段
  
这段是可选段,它定义了某一安装类型下,安装程序显示在选择部件页中的所有部件。下面是 [Components]段的一个实例:
[Components]
Name: "main"; Description: "Main Files"; Types: full compact custom; Flags: fixed
Name: "help"; Description: "Help Files"; Types: full

  上面的实例生成两个部件:"main"部件在用户选择"full"或"compact" 或 "custom"安装类型时都会被安装,而"help"部件则在用户选择"full"安装类型时才被安装,一但当用户自定义安装并选择了安装该部件时,即使该部件没有指定"custom"类型,它也同样会被安装。

下面是该段所支持的参数列表:
Name (必须) :该部件的内部名称。例:Name: "help"

Description (必须):部件的说明,可以包含常量。该说明是在安装时显示给用户看的。
  例: Name: "Help Files"

Types :由空格分隔的该部件所属类型列表。如果用户选择的安装类型包含在此列表中,则该部件将被安装。如果没有使用fixed 标志,则任何自定义的安装类型在该列表中将被安装程序忽略。
  例:Types: full compact

ExtraDiskSpaceRequired :该部件所需的磁盘空间,类似于[Setup]段的ExtraDiskSpaceRequired 指令。
  例:ExtraDiskSpaceRequired: 0

Flags :该参数是一个额外的可选项,可用空格隔开多个选项。下面是该参数所支持的选项:
  fixed :告诉安装程序,用户不能在安装过程中手动地选择或取消选择该部件。
  restart :告诉安装程序,在安装该部件后询问用户是否重新启动计算机。不管怎样,如果[Files]段的某项带有restartreplace 标记就必须加上此参数。类似于AlwaysRestart ,但就是每个部件都要加上。
  disablenouninstallwarning :告诉安装程序,如果用户安装了该部件又在卸载时没有选择卸载该部件时是否警告用户,该部件没有卸载。
  考虑到你的部件的复杂性,你可以尝试使用[InstallDelete]段。这样该标记就可以自动地卸载没有选择卸载的部件。
  例:Flags: fixed

[Tasks]段
  
这段是可选段,它定义了安装过程中,用户所自定义所有需要安装程序执行的任务。这些任务将以复选框或选择按钮的形式出现在选择另外的任务页中。下面是[Tasks]段的一个实例:
[Tasks]
Name: desktopicon; Description: "Create a &desktop icon"; GroupDescription: "Additional icons:"; Components: main
Name: quicklaunchicon; Description: "Create a &Quick Launch icon"; GroupDescription: "Additional icons:"; Components: main; Flags: unchecked
Name: associate; Description: "&Associate files"; GroupDescription: "Other tasks:"; Flags: unchecked

下面是该段的参数列表:
Name (必须) :任务的内部名称。
  例: Name: "desktopicon"

Description (必须) :任务的说明文字,可以包含常量。该说明是在安装过程中给用户看的。
  例: Description: "Create a &desktop icon"

GroupDescription :一组任务的组说明,也可以包含常量。同一组内连续的任务说明要以一个文本标签来分组。该文本标签显示了组的说明。
  例: GroupDescription: "Additional icons"

Components :一个以空格分隔的该任务所属组件列表。如果用户选择的组件包含在此列表中,则该任务会被显示出来。而一个没有Components 参数的任务总是会显示出来的。
  例: Components: main

Flags :该参数是一个额外的可选项,可用空格隔开多个选项。下面是该参数所支持的选项:
  checkedonce : 告诉安装程序,当安装程序发现该软件前一个版本已经安装了的时候,该任务就不能再勾选。该标记不能与unchecked 标记一齐使用。
  如果[Setup]段中没有UsePreviousTasks 指令, 该标记将不会生效。
  exclusive :告诉安装程序,该任务与其他拥有相同组说明或使用exclusive标记的任务是相互排斥的。这意味着安装程序将会显示选择按钮而不是复选框。
在一个组中不能只有一个exclusive 标记的任务,否则安装程序将自动地将它变成非exclusive 标记的任务(用复选框代替选择按钮)。
  restart :告诉安装程序,如果该任务被选择,则在安装结束后询问用户是否重新启动计算机。不管怎样,如果[Files]段的某项带有restartreplace 标记就必须加上此参数。类似于AlwaysRestart ,但就是每个任务都要加上。
  unchecked :告诉安装程序,该任务在开始时不该被勾选。该标记不能与checkedonce 一齐使用。

[Dirs]段
  
这段是可选段,而且是大多数简单安装程序中不常使用的。这段用于自动创建用户选择的软件安装目录之外的目录。创建应用软件目录下的子目录是该段最普通的用法。你无需在将[Files]段中的文件复制到这些子目录内前就创建他们,因此该段的主要用途是用于创建空的子目录。下面是[Dirs]段的一个实例:
[Dirs]
Name: "{app}/data"
Name: "{app}/bin"

  上面的实例将会在安装程序创建软件目录后创建两个软件目录下的子目录。下面是该段支持的参数列表:
Name (必须):要创建的目录名,通常会以一个目录常量开头。
  例:Name: "{app}/MyDir"

Attribs :为该目录指定属性。属性包括: readonly, hidden, system。若不指定该参数,安装程序不会为目录指定任何属性。如果目录已经存在,则指定的属性会该目录原有的属性组合后作为新的属性使用。
  例: Attribs: hidden system

Flags :该参数是一个额外的可选项,可用空格隔开多个选项。下面是该参数所支持的选项:
  deleteafterinstall :告诉安装程序以普通的形式创建该目录,但安装结束(或非正常终止)后,如果目录为空就将其删除。这在脚本的[Run]段中需要执行一个程序来解开临时数据时是非常有用的。该标记不会删除安装前就存在的目录。
  uninsalwaysuninstall :告诉卸载程序总是尝试当目录为空时将其删除。正常情况下,卸载程序只会尝试删除软件安装前不存在的目录,即安装时所创建的目录。
  uninsneveruninstall :告诉卸载程序不要尝试删除该目录。默认情况下,卸载程序会删除[Dirs]段中的空目录。例:Flags: uninsneveruninstall

[Files]段
  
虽然这段是可选段,但很多的安装都需要到。它定义了安装程序要复制到用户系统中的所有文件。安装期间,卸载程序和卸载数据会被自动地复制到所装软件的目录中,所以你无需干预这两个文件。下面是[Files]段的一个实例:
[Files]
Source: "CTL3DV2.DLL"; DestDir: "{sys}"; CopyMode: onlyifdoesntexist; Flags: uninsneveruninstall
Source: "MYPROG.EXE"; DestDir: "{app}"
Source: "MYPROG.HLP"; DestDir: "{app}"
Source: "README.TXT"; DestDir: "{app}"; Flags: isreadme

下面是该段所支持的参数列表:
Source (必须) :源文件名。如果你不给出一个完整的路径,编译器将自动补上安装的源目录路径在此文件名前。可以通过使用通配符来达到在一行中指定一组的文件。当使用通配符时,所有匹配的文件将会应用相同的选项。当指定了external 标记时,源文件名必须是一个带有完整路径的文件(或通配文件)并存在于发行介质或用户的系统上。常量只能够在指定了external标记时使用,因为编译本身不作常量的翻译。
  例:Source: "MYPROG.EXE" 或 Source: "Files/*"

DestDir (必须) :指定文件安装到用户系统中的目录。它几乎总是以目录常量开头的。如果指定的目录在用户系统中不存在,它将自动创建该目录并在卸载后目录为空时自动删除。
  例: DestDir: "{app}" 或 DestDir: "{app}/subdir"

DestName :该参数指定了该文件被安装到用户的系统后的新文件名。默认情况下,安装程序使用源文件名。因此大多数都不需要该参数。 例: DestName: "MYPROG2.EXE"

CopyMode :复制文件时使用的办法。包括:
  normal :这是最常用的选项。如果用户的系统中已经有相同版本的同名文件时,原来已有的文件将不会被取代。如果原有的文件版本比要复制的新,将会询问用户是否替换原有文件。如果已存在的文件没有版本信息时将不会询问用户就将其覆盖。
  onlyifdoesntexist :只在用户系统中没有该文件时复制。
  alwaysoverwrite :总是覆盖已有的文件,即使已有的文件的版本比要复制的要新。在安装共享的系统文件时不要使用此选项。
  alwaysskipifsameorolder :同normal选项相同,但有点例外的是当有已存在的文件时将不会提示用户。使用此选项时,新版的文件将保证不会被改写。
  例:CopyMode: normal

Attribs :为该文件指定属性。属性包括:readonly, hidden, system.。如果不指定该参数,安装程序将不会为文件指定任何属性。例:Attribs: hidden system

FontInstall :告诉安装程序,要复制的是一个字体文件,需要到用户的系统中。该参数的值将会被保存到注册表或WIN.INI中。该值必须和你在资源管理器中双击该字体文件时看到的字体名一致。
  注:安装程序将会自动增加" (TrueType)"在该值后面。如果不是TrueType 的字体文件,你必须使用
Flags参数标明为fontisnttruetype 。
  建议你在安装字体时,使用onlyifdoesntexist 模式的CopyMode 并加上值为uninsneveruninstall 的Flag参数。在Windows 2000/XP中,要安装字体时要求用户必须是超级用户或管理员组的成员。而Windows NT 4.0 及早期的版本中则没有这个限制,任何人都可以安装字体。
  例:Source: "OZHANDIN.TTF"; DestDir: "{fonts}"; FontInstall: "Oz Handicraft BT"; CopyMode: onlyifdoesntexist; Flags: uninsneveruninstall

Flags :该参数是一个额外的可选项,可用空格隔开多个选项。下面是该参数所支持的选项:
  allowunsafefiles :禁止编译自动检查不安全的文件。强烈建议你不要使用该选项,除非你绝对相信自己在干什么。
  comparetimestampalso :(特别用途) 让安装程序在遇到已有文件与该文件具有相同版本时比较两者的时间戳。通常,在这情况下,安装程序不会尝试去改写已有的文件,但使用该选项后,当已有文件的时间戳比要安装的文件旧时就会改写它。当copy mode不是normal或alwaysskipifsameorolder时,该标记选项不会生效。
  保留该选项只是为了向后兼容,建议不要使用。如果一定要用,当用户改变系统的时区或发改变时制时,NT的用户可能会遇到"existing file is newer" 的错误信息。另外,如果在NTFS下编译的安装程序在FAT上安装时也会出现类似的错误,因为FAT分区只有2位的秒数精度。
  confirmoverwrite :如果文件已存在,总是要求用户确认。
  deleteafterinstall :让安装程序正常地复制文件,但当安装结束或非法终止后即将其删除。这在脚本[Run]段中的程序需要解开临时数据时相当有用。该选项不会令已有的文件在安装过程中被删除。该选项不能与isreadme, regserver, regtypelib, restartreplace, sharedfile, 或 uninsneveruninstall 等标记合用。
  external :该标记不让Inno Setup 将Source 参数指定的文件包含在安装文件内。但会将该文件复制到发行介质上或用户的系统中。详见Source参数的说明。
  fontisnttruetype :当使用FontInstall参数并且所安装的文件不是TrueType字体时要使用此标记。
  isreadme :标明该文件是一个说明文件。安装文件中只能有一个文件带此标记。当安装结束后,安装程序会询问用户是否想查看该说明文件。如果用户回答是,则会使用此类文件所关联的程序打开此文件。为此,说明文件最好是TXT或DOC等类型的文件。
  注意:当安装文件带有restartreplace 标记或在[Setup]段中AlwaysRestart 属性为yes 而重新启动了计算机时,用户将无机会看到说明文件。
  noregerror :当与regserver 或 regtypelib 标记结合使用时,安装程序不会在注册出错时显示错误信息。
  onlyifdestfileexists :仅在用户系统中无同名文件存在时复制。该标记在你的补丁安装中,并且你不想在用户先前没有安装该文件时显得很有用。
  overwritereadonly :总是覆盖只读文件。当没有该标记时,安装程序会询问用户是否要覆盖已有的只读文件。
  recursesubdirs :让编译器在源目录下搜索源文件或通配文件。该标记不能与external 标记合用。
  regserver :注册OLE服务器(如ActiveX控件)。通过放置此标记,安装程序将会找到并执行注册DLL/OCX用的DllRegisterServer来注册它。卸载时会调用DllUnregisterServer来卸载它。当与sharedfile 合用时,只会在其引用参照计数器为0时才将它卸载。有关的详细说明请查阅下面的说明。
  regtypelib :注册类型函数库(.tlb)。卸载程序将会卸载该类型库(除非指定了uninsneveruninstall标记)。当与sharedfile 合用时,只会在其引用参照计数器为0时才将它卸载。有关的详细说明请查阅下面的说明。
  restartreplace :该标记通常在替换系统核心文件时使用。如果文件事先已经存在并且在安装程序替换它时被锁定的话,安装程序会记下该文件(在WININIT.INI中或使用MoveFileEx命令,视乎是在Windows 或 Windows NT下),等到系统在下次启动时才替换。如果遇到此情况时,安装程序会提示用户在安装结束后重启。为保持在Windows 95/98 and Me下的兼容性,请不要在此使用长文件名,因此只支持"8.3"格式。(Windows NT下就没有这个限制)
  重点:在Windows NT下, 要想使用restartreplace 标记成功替换一个正在使用的文件,用户必须拥有管理权限。否则,将会出现错误并显示如下提示: "RestartReplace failed: MoveFileEx failed; code 5." 因此,极力建议你在[Setup]段中加入"AdminPrivilegesRequired=1"命令以保证用户具有管理级的权限。
  sharedfile :(Windows 95/NT 4+ ) 使用共享文件计数特性,(在注册表中的位置为HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Windows/CurrentVersion/SharedDLLs)。这使得应用软件间可以共享一个文件时而无需担心文件被不小心删除。文件在每次安装时,参照计数器将会加1,当应用软件使用的文件在卸载时,计数器将被减1。如果计数器为0时,文件将被删除(将经用户确认)。
大部分被安装到Windows/System 目录下的文件都应该使用此标记,包括 .OCX 和.DPL (Delphi 包) 文件。少数的 MFC DLLs 可以例外,不应使用该标记,反而应该使用onlyifdoesntexist 复制模式结合uninsneveruninstall 标记。否则,如果安装最新版的特别MFC DLL 是一个发行版, 请使用alwaysskipifsameorolder复制模式,并结合uninsneveruninstall和restartreplace.标记。
当在NT 3.51 中执行安装,使用此标记将不会删除文件。
  skipifsourcedoesntexist :此标记只在与external标记连用时才生效。它令安装程序在源文件不存在时跳该行而不会给出错误信息。
  uninsneveruninstall :在卸载时不卸载此文件。请谨慎地使用此标记,通常会在onlyifdoesntexist复制模式时使用。它意味着在安装一个很普通的共享文件时使用,例如CTL3DV2.DLL或一个MFC DLL,因为你将不希望卸载程序在其他软件也使用该文件时删除该文件。例:Flags: isreadme

  备注:安装程序会在最后一步的安装中注册所有regserver或regtypelib标记的文件。然而,如果[Setup]段中的AlwaysRestart指令设为yes时,或者有文件使用了restartreplace 标记时,所有要注册的文件会在下次启动时注册(通过在注册表中的RunOnce 键下创建一个值),当卸载一个.HLP类型的文件(Windows 的帮助文件)时,相应的.GID和.FTS文件会被自动删除。

[Icons]段
  
虽然这段是可选段,但很多的安装都需要到。它定义了所有安装程序要在用户的开始菜单和/或桌面中要创建的快捷方式。卸载图标由安装程序内部创建,因此你无须在[Icons]段中加入。默认情况下,在Windows 95/NT 4+下运行安装程序不会创建卸载图标,仅在NT 3.51下才会。要强行创建卸载图标,请在[Setup]段中使用AlwaysCreateUninstallIcon指令。下面是[Icons]段的一个实例:
[Icons]
Name: "{group}/My Program"; Filename: "{app}/MYPROG.EXE"; WorkingDir: "{app}"

下面是该段所支持参数的列表:
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"

Parameters :快捷方式的命令行参数,可以包含常量。仅在Windows 95/NT 4+中可以包含引号。
  例:Parameters: "/play filename.mid"

WorkingDir :快捷方式的工作(开始)目录,即程序开始时所在的目录。如果不指定该参数或留空它, Windows 会使用一个默认的路径,该路径将随Windows 的版本而变。该参数也可以包含常量。
  例:WorkingDir: "{app}"

HotKey :快捷方式的快捷键,即能够启动程序的组合键。
  注:如果你改变了快捷键并且重装该软件,Windows将继续使用旧的快捷键直到你取消登录或者重新启动系统。
  例:HotKey: "ctrl+alt+k"

Comment :为快捷方式指定注释,该注释能在Windows 2000, Me, 和以后的版本中可以弹出作为提示,在此以前的版本则将被忽略。
  例:Comment: "This is my program"

IconFilename :将用于显示的自定义图标所在的文件名。它可以是一个包含图标的可执行文件或专门的图标文件。如果不指定该参数,Windows 将使用默认图标。该参数也可包含常量。
  例:IconFilename: "{app}/myicon.ico"

IconIndex :由0开始的IconFilename文件中的图标索引值,默认为0。如果IconIndex 不为0而且没有指定IconFilename,则默认IconFilename 为Filename参数的值。
  例:IconIndex: 0

Flags :该参数是一个额外的可选项,可用空格隔开多个选项。下面是该参数所支持的选项:
  closeonexit :当设置此标记时,安装程序会将该快捷方式的"Close on Exit"属性打开。该标记仅在快捷方式指向MS-DOS应用程序时生效。如果不指定此标记或dontcloseonexit 标记时,安装程序将不会改变其"Close on Exit"属性。
  createonlyiffileexists :当设置此标记时,安装程序只在Filename参数指定的文件存在时才尝试创建图标。
  dontcloseonexit :和closeonexit一样,不过就是取消"Close on Exit"属性。
  runmaximized :当设置此标记时,安装程序会设置图标的"Run"值为"Maximized",这样就能使程序在启动时达到最大化的窗口。该标记在NT 3.51中无效。
  runminimized :同上面一样,不过就是使程序启动时最小化窗口。
  uninsneveruninstall :令卸载程序在卸载时不删除此图标。
  useapppaths :当设置此标记时,安装程序自动将Filename参数中没有路径的文件名前补上注册表中"HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Windows/CurrentVersion/App Paths" 的键值。
  例:Flags: runminimized

[INI]段
  
这段是可选段。它定义了所有你想安装程序设置用户系统上的INI 文件内容,该操作将在复制完文件后进行。下面是[INI]段的一个实例:
[INI]
Filename: "{win}/MYPROG.INI";段: "InstallSettings"; Flags: uninsdeletesection
Filename: "{win}/MYPROG.INI";段: "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本身使用的段中。应该在软件私有的段中使用。
  uninsdeletesectionifempty :卸载时如果段中没有键内容时删除该段。可与uninsdeleteentry标记连用。
  例:Flags: uninsdeleteentry

[Messages]段
   [Messages]段用于定义安装或卸载时要显示的信息。正常情况下,你无须在你的脚本文件中创建[Messages]段,因为所有的信息都是从Inno Setup 自带的Default.isl文件中提取的。包括在[Setup]段 中使用MessagesFile 指定的文件。然而,特殊的信息可以由你脚本文件中[Messages]段取代。若真要这样,你必须清楚你想修改的信息ID,这可以很容易地在Default.isl搜索得到。例如,你想将"&Next >"按钮的内容变成"&Forward >",那么你要在[Messages]段中创建如下的内容:
[Messages]
ButtonNext=&Forward >

  有些信息包含%1、%2等内容其实是参数。你可以重新安排它们的位置或者按需要在信息中多次使用。参数中,使用两个连续的"%"字符来嵌入一个"%"符号。"%n" 将生成一个换行符。
  如果你想将Inno Setup的信息全部翻译为其他语言,你可以直接修改Default.isl文件或在每个脚本中重写所有的信息,将Default.isl文件做一个其他语言的副本,这样当你想在安装中使用该种语言时,只需简单地在[Setup]段中使用MessagesFile指令指向该文件即可。
  特殊用途的ID BeveledLabel能够在安装程序和卸载程序的左下角显示一行文字。例如:
[Messages]
BeveledLabel=Inno Setup

[LangOptions]段
   [LangOptions]段用于定义指定的语言设置,例如安装程序和卸载程序的字体。通常,你无须在你的脚本中创建[LangOptions],因为默认会使用Inno Setup 下Default.isl或[Setup]段中MessagesFile指令指向的文件中的设置。下面是[LangOptions]段的一个实例:(下面的设置采用默认值)
[LangOptions]
LanguageName=English
LanguageID=$0409
DialogFontName=MS Shell Dlg
DialogFontSize=8
DialogFontStandardHeight=13
TitleFontName=Arial
TitleFontSize=29
WelcomeFontName=Verdana
WelcomeFontSize=12
CopyrightFontName=Arial
CopyrightFontSize=8

LanguageName是语言名,通常不需要使用,但需在多语言安装时应用。

LanguageID是语言的数值式"语言标识",可以在http://msdn.microsoft.com/library/en-us/intl/nls_238z.asp 处看到有效的语言标识列表。当指定了LanguageName时,该项就不需要。但在多语言安装时还是需要的。具体地,LanguageID将用于自动检测用户首选的语言。

DialogFontName和DialogFontSize 指定了对话框的字体和字符大小。如果指定的字体在用户的系统中不存在,MS Shell Dlg 或MS Sans Serif字体会成为替代。(至于那一个就取决于先找到谁)

DialogFontStandardHeight 将影响对话框的比例。如果你使用的字体不是13像素(在96 DPI 模式下)时,你可能需要调整DialogFontStandardHeight,否则对话框可能出现膨胀或收缩。

TitleFontName和TitleFontSize 指定了底层窗口(仅在WizardStyle=classic或WindowVisible=yes时可见)中的软件名称的字体和大小。如果指定的字体在用户系统中不存在,则Arial字体将会代替。

WelcomeFontName和WelcomeFontSize 指定了在现代型向导的欢迎页中顶部文字的字体和大小。如果指定的字体在用户系统中不存在,则Arial字体将会代替。

CopyrightFontName和CopyrightFontSize 指定了底层窗口(仅在WizardStyle=classic或WindowVisible=yes时可见)中的版权信息的字体和大小。如果指定的字体在用户系统中不存在,则Arial字体将会代替。

[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)

Subkey (必须) :子键名。可以包含常量。例:Subkey: "Software/My Company/My Program"

ValueType :数据类型。必须是以下中的一个:
  none string expandsz multisz dword binary
  如果不指定类型(默认设置),安装程序将会创建子键而非键值。这时ValueName和ValueData参数将被忽略。如果指定了string,将创建一个string (REG_SZ)类型的键值。如果指定了expandsz,将创建一个expand-string (REG_EXPAND_SZ)类型的键值,该类型最初是用在Windows NT中的,但Windows 95/98中也被支持。如果指定multisz,将创建一个(REG_MULTI_SZ)类型的键值。如果指定dword,则创建一个integer (REG_DWORD) 型的键值。如果指定binary,则创建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 类型,但存在的键值却不是multi-string 类型(如REG_SZ or REG_EXPAND_SZ)时,该常量同样会被无声地移去,反之亦然。
对于一个multisz类型的值,你可以在此参数中使用一个称为{break}的常量来插入一个换行符。例:ValueData: "1.0"

Flags :该参数是一个额外的可选项,可用空格隔开多个选项。下面是该参数所支持的选项:
  createvalueifdoesntexist :当指定该标记时,安装程序只会在同名键值不存在时创建该键值。该标记在数据类型为none或者指定了deletevalue标记时不会生效。
  deletekey :当指定该标记时,安装程序将会先删除整个键(若存在的话),包括其中的所有键值和子键。如果ValueType 为none时,它才会创建新的键和键值。
deletevalue :当指定该标记时,安装程序会先删除这个键值(若存在的话)。如果ValueType 为none并且不曾存在时,它才会创建新的键值。
  dontcreatekey :当指定该标记时,如果指定的键在用户的系统中未曾存在时,安装程序不会尝试去创建指定的键或键值。如果指定的键已经存在,将不显示错误信息。典型的例子就是该标记与uninsdeletekey标记合用,以此达到在卸载时删除键而在安装时不会创建它们。
  noerror :无论任何原因而导致安装程序创建该键失败都不会显示错误信息。
  preservestringtype :这只在ValueType参数是string或expandsz时使用。当指定了该标记后,如果键值不存在并且它是字符串类型时,它将被换成先前值的相同类型。
  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: "{app}/README.TXT"; Description: "View the README file"; Flags: postinstall shellexec skipifsilent
Filename: "{app}/MYPROG.EXE"; Description: "Launch application"; Flags: postinstall nowait skipifsilent unchecked

下面是该段支持的参数列表:
Filename (必须) :要招待的程序名或要打开的文件或文件夹。如果Filename不是一个.exe或.com文件,你必须在此项中使用shellexec标记,该参数可以包含常量。
  例:Filename: "{app}/INIT.EXE"

Description :只在[Run]段中有效。是该项的说明。该说明用于postinstall标记。如果不指定说明,安装程序将使用默认的说明。该说明由该项的类型而定(normal or shellexec)。
  例:Description: "View the README file"

Parameters :为程序准备的可选命令行参数,可以包含常量。
  例:Parameters: "/x"

WorkingDir :启动程序时的目录。如果不指定该参数或留空它,它不会变为其他目录。该参数也可以使用常量。
  例:WorkingDir: "{app}"

StatusMsg :只在[Run]段中生效,确定了执行程序时向导上显示的信息。如果不指定该参数或留空它,将使用默认的信息"Finishing installation..."。 例:StatusMsg: "Installing BDE..."

RunOnceId :只在[UninstallRun]段中生效,如果相同的安装程序不止一次运行,那么"run"项将被复制到卸载记录文件中。通过指定一个字符串给RunOnceId,你可以保证特别的[UninstallRun]项在卸载时只执行一次。例如,若两个或多个"run"项在卸载记录文件中有一个RunOnceId 设为"DelService",只有最后的RunOnceId 中的"DelService"被执行,其余的都会被忽略。注意:RunOnceId中的内容是大小写敏感的。
  例:RunOnceId: "DelService"

Flags :该参数是一个额外的可选项,可用空格隔开多个选项。下面是该参数所支持的选项:
  hidewizard :如果指定此参数,向导会在程序运行期间被隐藏。
  nowait :如果指定此参数,安装程序不会等该进程结束就处理下个[Run]项或结束安装。该标记不能与waituntilidle合用。
  shellexec :该标记在Filename不是一个可直接执行的文件时才需要。当设置该标记时,Filename可以是一个文件夹或任何已注册了的文件类型,包括.hlp, .doc,和其他。文件将被用户系统中与该类型关联的程序打开,结果与用户在资源管理器中双击该文件一样。当在Filename 中使用文件夹名时,建议你在其后加上"/"字符(如"{group}/"),以保证同名的程序不会被执行。同样值得注意的是文件夹只能在Windows 95/NT 4+中打开,因为它是Explorer shell的新特性。
  使用shellexec标记的一点不利就是:它不能等到进程结束。因此,它执行的效果总是好似指定了nowait标记一样。
  skipifdoesntexist :如果指定该标记,并且Filename不存在时,安装程序将不会显示错误信息。该标记只应用在[Run]段,因为卸载程序在[UninstallRun]项执行失败时从不显示出错信息的。
  runmaximized :如果指定该标记,执行的程序或打开的文件的窗口将被最大化。
  runminimized :如果指定该标记,执行的程序或打开的文件的窗口将被最小化。
  waituntilidle :如果指定该标记,安装程序将会暂停执行直到没有需要用户输入时,并非进程结束。(这是调用Win32函数的WaitForInputIdle 来实现的) 不能与nowait合用。
  postinstall :只在[Run]段有效。它令到安装程序在安装结束页中创建一个复选项,让用户能够选择该项来决定是否执行该项。以前该标记称为showcheckbox.。
  [Files]段中项的isreadme标记此时将会搁置。如果编译器侦测到某项带有isreadme标记,它会去掉[Files]中的isreadme 标记,代之以在[Run]段列表的开头处生成一个新项。该生成的[Run]项以shellexec, skipifdoesntexist, postinstall and skipifsilent标记运行该readme文件。
  unchecked :只在[Run]段中有效。指示安装程序在开始时取消勾选该复选框。在用户勾选该复选框后才执行该项。该标记在postinstall 标记没有指定时被忽略。
  skipifsilent :只在[Run]段中有效。指示安装程序如果以后台程序方式运行时跳过此项。
  skipifnotsilent :只在[Run]段中有效。指示安装程序如果以非后台程序方式运行时跳过此项。
  例:Flags: postinstall nowait skipifsilent

[UninstallDelete]段
  
这段是可选段。用于定义卸载程序要删除的其他文件或目录,还有那些你的程序所安装的。删除你程序中创建的.INI文件是该段最普通的用法。卸载程序会在卸载的最后一步处理这些项。
下面是该段的一个实例:
[UninstallDelete]
Type: files; Name: "{win}/MYPROG.INI"

以下是该段所支持的参数列表:
Type (必须) :指定卸载程序要删除的东西。它必须是以下中的一种:
  files :指定一个特定的文件或通配文件。
  filesandordirs :功能与files相同,不过就是包括匹配的目录及其下的所有文件和子目录。
  dirifempty :当使用此标记时,Name参数必须是一个目录名,但就不可以包括通配符。只删除空目录。  
  例:Type: files

Name (必须) :要删除的文件或目录名。
  注意:在此不要冒险使用一个通配符去删除{app}目录中的所有文件。强烈建议你不要这样做的原因有两个:用户不赞赏他们在软件目录中放置的文件在没有警告下就将其删除(他们卸载它可能只是要将其移到其他驱动器中),最好是让用户在需要时自己手动去删除。同样,如果因为用户出错而将软件安装到一个错误的目录下时(如C:/WINDOWS),这样如果执行卸载,将会造成惨重的后果。因此,再次呼吁,不要这样做!
  例:Name: "{win}/MYPROG.INI"

 

原文:http://hi.baidu.com/boboduck/blog/item/83719551f6c3341f377abe28.html

 

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值