inno开始菜单1

 

一个 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} 相同的目录。 
其他的常量 

{/} 
一个反斜杠字符,请参见本页前面提到的关于常量 {/} 和单字符 / 在使用上有何不同的说明。 
{%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, 那么该命令行参数将被忽略。

发表于 2011-5-27 07:38:05 PM |显示全部楼层
 

帮助文件常量部分:
其它常量{\} 
反斜杠字符。查阅本页顶部的注释获取使用 {\} 和只使用一个 \ 字符之间的差异。{% NAME | DefaultValue } 
嵌入一个环境变量值。

  • NAME 用于指定要使用的环境变量的名字。
  • DefaultValue 确定如果指定的变量在用户系统中不存在时置入的字符串。
  • 如果你想在常量内部包含一个逗号、竖条 (“|”),或括弧后半部 (“}”),你必须通过“%-encoding.”先用一个“%”字符然后跟随它的两上数字的十六进制代码替换,从而避开它。逗号是“%2c”,竖条是“%7c”括弧后半部是“%7d”。如果你想实际使用“%”,使用“%25”。
  • NAME 和 DefaultValue 可以包含常量。注意,你需要将常量中的括弧替换成上面所说的字符;上面所说的括弧后半部只在使用于其它地方时需要替换。

示例:
{%COMSPEC}{%PROMPT|$P$G}

你要的目录表示方法:
{%USERPROFILE}

测试例子:

  1. #define MyAppName "我的程序"
  2. #define MyAppVersion "1.5"
  3. #define MyAppPublisher "我的公司"
  4. #define MyAppURL "http://www.example.com/"
  5. [Setup]
  6. ; 注意: AppId 的值是唯一识别这个程序的标志。
  7. ; 不要在其他程序中使用相同的 AppId 值。
  8. ; (在编译器中点击菜单“工具 -> 产生 GUID”可以产生一个新的 GUID)
  9. AppId={{3C414D14-15FB-4637-92EC-7BE666CC1A28}
  10. AppName={#MyAppName}
  11. AppVersion={#MyAppVersion}
  12. ;AppVerName={#MyAppName} {#MyAppVersion}
  13. AppPublisher={#MyAppPublisher}
  14. AppPublisherURL={#MyAppURL}
  15. AppSupportURL={#MyAppURL}
  16. AppUpdatesURL={#MyAppURL}
  17. DefaultDirName={pf}\{#MyAppName}
  18. DisableDirPage=yes
  19. DefaultGroupName={#MyAppName}
  20. OutputBaseFilename=setup
  21. Compression=lzma
  22. SolidCompression=yes
  23. [Languages]
  24. Name: "chinesesimp"; MessagesFile: "compiler:Languages\ChineseSimp.isl"
  25. [Code]
  26. procedure InitializeWizard();
  27. begin
  28. MsgBox('当前用户的程序文件夹:'+ #13 + ExpandConstant('{%USERPROFILE}'), mbInformation, MB_OK);
  29. end;

复制代码

 
 
 
 
   
 
 
 
 
 
 
 
 
 

 

  • TA的每日心情

      开心
    2011-12-11 11:04:37 AM

签到天数: 4 天

[LV.2]偶尔看看I

 
发表于 2011-5-27 07:40:04 PM |显示全部楼层
 

多看帮助文件,多百度,谷歌比我们回复你快多了
%ALLUSERSPROFILE% (allusersprofile)本地 返回“所有用户”配置文件的位置。 C:\Documents and Settings\All Users 
%APPDATA% (appdata)本地返回默认情况下应用程序存储数据的位置。 C:\Documents and Settings\Administrator\Application Data 
%CD% (cd)本地返回当前目录字符串。 C:\Documents and Settings\Administrator\桌面 
%CMDCMDLINE% (cmdcmdline)本地返回用来启动当前的 Cmd.exe 的准确命令行。 cmd /c ""C:\Documents and Settings\Administrator\桌面\a.bat" " 
%CMDEXTVERSION%(cmdextversion)系统返回当前的“命令处理程序扩展”的版本号。2 
%COMPUTERNAME% (computername)系统返回计算机的名称。 xxxx 
%COMSPEC% (comspec) 系统返回命令行解释器可执行程序的准确路径。 C:\WINDOWS\system32\cmd.exe 
%DATE% 系统返回当前日期。使用与 date /t 命令相同的格式。由 Cmd.exe 生成。有关 date 命令的详细信息,请参阅 Date。 
%ERRORLEVEL% (errorlEVEl) 系统返回上一条命令的错误代码。通常用非零值表示错误。 
%HOMEDRIVE% (homedrive)系统返回连接到用户主目录的本地工作站驱动器号。基于主目录值而设置。用户主目录是在“本地用户和组”中指定的。 C: 
%HOMEPATH% (homepath) 系统返回用户主目录的完整路径。基于主目录值而设置。用户主目录是在“本地用户和组”中指定的。 \Documents and Settings\Administrator 
%HOMESHARE% (homeshare) 系统返回用户的共享主目录的网络路径。基于主目录值而设置。用户主目录是在“本地用户和组”中指定的。 
%LOGONSERVER% (logonserver) 本地返回验证当前登录会话的域控制器的名称 \\ xxxx 

%NUMBER_OF_PROCESSORS% (numeer_of_processors) 系统指定安装在计算机上的处理器的数目。 

%OS% (os)系统返回操作系统名称。Windows 2000 显示其操作系统为 Windows_NT。 Windows_NT 
%PATH% (path)系统指定可执行文件的搜索路径。 C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\Program Files\Vc++\Tools\WinNT;C:\Program Files\Vc++\MSDev98\Bin;C:\Program Files\Vc++\Tools;C:\Program Files\VC98\bin 

%PATHEXT% (pathext)系统返回操作系统认为可执行的文件扩展名的列表。 .COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH 

%PROCESSOR_ARCHITECTURE% (processor_architecture) 系统返回处理器的芯片体系结构。值:x86 或 IA64 基于Itanium x86 
%PROCESSOR_IDENTFIER% (processor_identfier)系统返回处理器说明。 
%PROCESSOR_LEVEL% (processor_lEVEl)系统返回计算机上安装的处理器的型号。 15 
%PROCESSOR_REVISION% (processor_revision)系统返回处理器的版本号。 4f02 
%PROMPT% (prompt)本地 返回当前解释程序的命令提示符设置。由 Cmd.exe 生成。$P$G 
%RANDOM% (random)系统返回 0 到 32767 之间的任意十进制数字。由 Cmd.exe 生成。 30580 
%SYSTEMDRIVE% (systemdrive)系统返回包含 Windows server operating system 根目录(即系统根目录)的驱动器。 C: 
%SYSTEMROOT% (systemroot)系统返回 Windows server operating system 根目录的位置。C:\WINDOWS 
%TEMP%(temp) C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp和 %TMP% (tmp)C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp系统和用户返回对当前登录用户可用的应用程序所使用的默认临时目录。有些应用程序需要 TEMP,而其他应用程序则需要 TMP。 
%TIME% 系统 返回当前时间。使用与 time /t 命令相同的格式。由 Cmd.exe 生成。有关 time 命令的详细信息,请参阅 Time。 
%USERDOMAIN% (userdomain)本地返回包含用户帐户的域的名称。 xxxx 
%USERNAME% (username)本地返回当前登录的用户的名称。 Administrator 
%USERPROFILE% (userprofile)本地返回当前用户的配置文件的位置。 C:\Documents and Settings\Administrator 
%WINDIR%(windir) 系统 返回操作系统目录的位置。 C:\WINDOWS

 

 

原文链接: https://www.cnblogs.com/boxwork/archive/2012/08/22/2651675.html

欢迎关注

微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍

    inno开始菜单1

原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/60655

非原创文章文中已经注明原地址,如有侵权,联系删除

关注公众号【高性能架构探索】,第一时间获取最新文章

转载文章受原作者版权保护。转载请注明原作者出处!

(0)
上一篇 2023年2月9日 上午9:33
下一篇 2023年2月9日 上午9:33

相关推荐