InnoSetup使用说明

Inno Setup 是什么

Inno Setup 是一个免费的 Windows 安装程序制作软件。第一次发表是在 1997 年,Inno Setup 今天在功能设置和稳定性上的竞争力可能已经超过一些商业的安装程序制作软件。

创建安装程序

安装程序用编译脚本的方式创建,脚本其实就是一个类似 .INI 文件格式的 ASCII 码文本 文件。 (它不象你想象的那么复杂) 脚本用一个“.iss” (表示 Inno Setup Script) 的扩展名

脚本文件一般可以用安装程序编译器程序内置的编辑器进行编辑。在你编写完脚本后,下一个最终步骤就是选择安装程序编译器中的“编译”。 创建完成后,就可以运行根据你脚本编 译的安装程序了

例子:Inno Setup 安装目录下的 Samples 子目录中

脚本格式概述

Inno Setup 准备了一些段。每个段控制一个不同方面的安装程序部分。每个段用包含在括号 [] 中的段名开始,每个段里面是一些相关的条目。 其中有两种不能类型的段: 有些就象 [Setup] 段,条目包含指示名和值 (格式为 Directive=Value),还有一些就象 [Files] 段,条目被参数分隔。 这里是一个例子:

[Setup] 
AppName=My Program  
[Files]  
Source: "MYPROG.EXE"; DestDir: "{app}" 

你可以通过在行起始位置加个分号“;”在脚本中写入“注释” (编译时被编译时忽略)。例 如: ; 这是一条注释,放在这里只是要提醒我自己...

段中参数

所有脚本中的段,除 [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

常量

脚本中的项目大部分可以嵌入常量。这些预定义的字符被包含在括弧 { } 中。安装程序或 卸载程序会根据用户选择和系统配置将这些常量翻译为文字值。例如,{win} 在大部分系统 中会被翻译为“C:\WINDOWS”。 字 符 “ { ” 视 作 为 常量开始。如果你想将它作为实际字符使用,你必须使用两个连续的“{” 字符。(对于“}”则不需要。) 当在常量后面直接跟随一个反斜杠时,如 果 常量的值末端已经包含了一个反斜杠号,安装程 序或卸载程序将自动删除该反斜杠号。 因此,如果一个特殊常量值是“C:\”, {constantname}\file 将翻译为“C:\file”, 而 不是“C:\file”。如果你想防止意外,将反斜框放 入 { } 字符中,例如,{app}{\}

[Setup] 段

这个段包含用于安装程序和卸载程序的全局设置。某些提示对于你创建的任何安装程序都是 必需的。这是 [Setup]段的一个示例:

[Setup]  
AppName=My Program  
AppVerName=My Program version 1.4  
DefaultDirName={pf}\My Program  
DefaultGroupName=My Program 

[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 

[Dirs] 段

这个可选段用来定义除创建用户选择的应用程序目录外安装程序自动创建的另外目录。在 主 应 用程序目录下创建子目录对于这个段是公共使用的。 请注意,在使用 [Files] 段安装文件前你无需一定要创建目录,这个段起初用于创建一个空 的目录。 这里是一个 [Dirs] 段的示例:

[Dirs]  
Name: "{app}\data"  
Name: "{app}\bin" 

上面的示例中,在安装程序创建应用程序目录后,又在应用程序目录下创建了两个子目录。

[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 

[Icons] 段

这个可选段定义所有创建在开始菜单和/或其它位置 (比如桌面) 的快捷方式。 这里是 [Icons] 段的例子:

[Icons]  
Name: "{group}\My Program"; Filename: "{app}\MYPROG.EXE"; WorkingDir: "{app}"  
Name: "{group}\Uninstall My Program"; Filename: "{uninstallexe}"

[INI] 段

这是你希望安装程序在用户系统中设置 .INI 文件条目的可选段。 这里是 [INI] 段的例子:

[INI]  
Filename: "{win}\MYPROG.INI"; Section: "InstallSettings"; Flags: uninsdeletesection  
Filename: "{win}\MYPROG.INI"; Section: "InstallSettings"; Key: "InstallPath"; String: "{app}" 

[Run] & [UninstallRun] 段

[Run] 段是可选的,用来指定程序完成安装后、在安装程序显示最终对话框之前要执行的程 序数,[UninstallRun] 段也可样是可选的,用来指定在卸载第一步要执行的程序数。除在下 面有注释的外,两个段用相同的语法。 程序按它们在脚本中的出现顺序执行。按默认,当处理 [Run]/[UninstallRun] 段条目时,安 装程序/卸载程序将在处理下一个任务之前等待,直到程序终止。除非使用了 nowait, shellexec 或 waituntilidle 标记。 注意,按默认,如果 [Run] 段队列文件中的一个正在执行的程序要在下一次重新启动后替 换 (通过调用 MoveFileEx 或通过修改 wininit.ini),安装程序将进行侦测,并在安装结束后 提示用户重新启动电脑。如果你不想这么做,设置 RestartIfNeededByRun 指示为 no。 下面是 [Run] 段的一个示例。

[Run]  
Filename: "{app}\INIT.EXE"; Parameters: "/x"  
Filename: "{app}\README.TXT"; Description: "查看自述文件"; Flags: postinstall shellexec skipifsilent  
Filename: "{app}\MYPROG.EXE"; Description: "运行应用程序"; Flags: postinstall nowait skipifsilent unchecked

摘自百度文库

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 213,417评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,921评论 3 387
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 158,850评论 0 349
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,945评论 1 285
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,069评论 6 385
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,188评论 1 291
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,239评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,994评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,409评论 1 304
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,735评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,898评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,578评论 4 336
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,205评论 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,916评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,156评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,722评论 2 363
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,781评论 2 351

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,644评论 18 139
  • Spring Boot 参考指南 介绍 转载自:https://www.gitbook.com/book/qbgb...
    毛宇鹏阅读 46,788评论 6 342
  • Ubuntu的发音 Ubuntu,源于非洲祖鲁人和科萨人的语言,发作 oo-boon-too 的音。了解发音是有意...
    萤火虫de梦阅读 99,217评论 9 467
  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,605评论 18 399
  • 前几天我跟郭先生说:我说我要来练写字,我的字太难看了。 郭先生:写好字很难的呢,我跟你说中国有一个书圣,他字就真的...
    南雅妈妈阅读 132评论 0 0