inno setup?图解Inno Setup安装篇

AI介绍2026-09-20408

大家好,今天来为大家分享inno setup的一些知识点,和图解Inno Setup安装篇的问题解析,大家要是都明白,那么可以忽略,如果不太清楚的话可以看看本篇文章,相信很大概率可以解决您的问题,接下来我们就一起来看看吧!

图解Inno Setup安装篇

Inno Setup安装步骤如下:

inno setup?图解Inno Setup安装篇

下载Inno Setup打开百度浏览器,搜索Inno Setup,进入官方或可信下载页面。

选择最新版本(如innosetup-5.5.9-unicode.exe或innosetup-5.5.9.exe,后者支持中文安装向导)。

启动安装程序双击下载的安装包,进入安装向导。

选择安装语言安装向导默认语言为英文(无中文选项),直接点击“OK”继续。

同意许可协议阅读软件许可协议,勾选“I accept the agreement”后点击“Next”。

设置安装路径

点击“Browse”选择安装目录(如C:Program Files(x86)Inno Setup 5),或使用默认路径。

inno setup?图解Inno Setup安装篇

确认路径后点击“Next”。

选择安装组件

勾选“Install Preprocessor”(可选,用于脚本预处理)。

点击“Next”继续。

创建快捷方式

勾选“Create a desktop icon”以在桌面生成快捷方式。

点击“Next”进入下一步。

inno setup?图解Inno Setup安装篇

完成安装

点击“Install”开始安装,等待进度条完成。

安装完成后勾选“Run Inno Setup”立即启动程序,或取消勾选稍后手动运行。

点击“Finish”退出安装向导。

验证安装结果启动Inno Setup,界面如下(包含脚本编辑器、编译器等核心模块):

注意事项

若需中文支持,建议下载innosetup-5.5.9.exe版本(安装向导为中文)。安装路径避免使用中文或特殊字符,防止脚本编译错误。Preprocessor组件为高级功能,普通用户可跳过安装。

【干货】如何使用Inno Setup制作安装包

使用Inno Setup制作安装包的步骤如下:

创建脚本模板:

打开Inno Setup软件。选择向导模式,开始创建一个新的脚本模板。填写程序基本信息:

在向导中填写程序的基本信息,如名称、版本等。选择主程序文件:

浏览并选择已准备好的exe文件作为主程序。添加文件和文件夹:

添加exe文件同目录下的所有内容。添加程序所在目录下的其他必要文件夹。创建快捷方式:

在向导中选择创建桌面或开始菜单的快捷方式。添加许可文件和其他信息:

可选地添加许可文件。添加安装前和安装后显示的信息文件。设置语言、保存位置和图标:

选择中文作为安装包的语言。设置安装包的保存位置、名称和图标。安装密码可省略不填。使用编译指令:

勾选“是,使用#define编译指令”。点击下一步,但不立即编译,因为模板生成的代码可能需要调整。调整代码:

根据需要修改文件夹处理部分的代码,以避免安装后exe文件报错。添加用户协议确认:

在安装前文件显示页面,添加一个复选框,要求用户确认协议才能继续安装。设置管理员权限:

在脚本的[Setup]节点添加”PrivilegesRequired=admin”,以确保安装时的权限。使用ResHacker.exe修改SetupLdr.e32文件,使安装包右下角带有小盾牌图标,表示权限添加成功。通过以上步骤,你就可以使用Inno Setup成功制作一个包含管理员权限的安装包,确保用户在安装过程中顺利进行。

inno setup安装包制作问题

软件安装打包工具----Inno Setup使用说明

特殊用途的标识

有几个 [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"

公共参数

编译器相关

[Setup]: Bits

有效值: 32

说明:

1.3版本以后已废弃。 1.3以前的版本的 Inno Setup有一个 16位的版本,编译器将检查 Bits

关键字以判断是否使用了正确的编译器来编译脚本。以后 Inno Setup的更新的版本只有 32位的版本可用,你将不再需要设置该关键字。无论什么时候如果

Bits被设置为“16”,编译器都将会失败并提示一个错误消息。

[Setup]: UseSetupLdr

有效值: yes或 no

默认值: yes

说明:

告诉安装程序编译器要创建的安装程序的类型,如果是 yes,将把所有的安装程序数据编译成一个单独的 SETUP.EXE

(如果你愿意也可以重新命名为任何名称)。如果是 no,将把安装程序数据编译成至少三个文件:SETUP.EXE, SETUP.0和 SETUP.1.你想使用

no的仅有的理由大概是为了调试的目的。

注意:不要在一个使用了多磁盘生成(DiskSpanning=yes)的安装程序中使用 UseSetupLdr=no,当 UseSetupLdr是 yes

时,安装程序被复制到用户的临时(TEMP)目录并在那里运行,这不会发生在 UseSetupLdr是 no的情况下,如果 Windows

试图去在磁盘上寻找 setup.exe文件却不能找到,因为在驱动器中的是一个不同的磁盘,所以会产生错误的结果。

[Setup]: BackColor, BackColor2

有效值:一个值形如$bbggrr,这里的 rr, gg和 bb

指定了两位的亮度值(以十六进制表示)分别为红色,绿色和蓝色。或者也可以是下列预定义的颜色名称之一:clBlack(黑色),clMaroon(暗红),clGreen(绿色),clOlive(橄榄绿),clNavy(深蓝),clPurple(紫色),clTeal(深青),clGray(灰色),clSilver(浅灰),clRed(红色),clLime(浅绿),clYellow(黄色),clBlue(蓝色),clFuchsia(紫红),clAqua(青绿),clWhite(白色)。

默认值: BackColor为 clBlue,

BackColor2为 clBlack

说明:

BackColor关键字自定的颜色被用在安装程序窗口背景渐变色的上面(或左面,如果

BackColorDirection=lefttoright),BackColor2指定的颜色被用在下面(或右面)。

如果 BackSolid=yes则 BackColor2的设置被忽略。

示例:

BackColor=clBlue

BackColor2=clBlack

BackColor=$FF0000

BackColor2=$000000

[Setup]: BackColorDirection

有效值: toptobottom或 lefttoright

默认值: toptobottom

说明:

决定了安装程序窗口的背景渐变色的渐变方向,如果 BackColorDirection是 toptobottom,将自上而下绘出,如果是

lefttoright,将从左到右绘出。

[Setup]: BackSolid

有效值: yes或 no

默认值: no

说明:

它决定了安装程序窗口的背景色是使用单一颜色还是渐变色,如果是 yes,背景色会是一单一颜色(颜色由 BackColor指定,忽略 BackColor2)。

[Setup]: AppName

说明:

这个必需的关键字指定了你正在安装的应用程序的标题。不要包含版本号,那样应该使用 AppVerName关键字。AppName

在安装程序的全部过程始终被显示,位于安装程序屏幕的左上角和向导中。

示例: AppName=My Program

[Setup]: AppVerName

说明:

这个必需的关键字的值应该和 AppName的值相同(或相似),但是它还应当包含程序的版本号。

示例: AppVerName=My Program version 3.0

[Setup]: AppId

默认值:如果没有指定 AppId或者它是空值,编译器将会把 AppName的值作为 AppId来使用。

说明:

AppId的值是被存储在卸载记录文件(unins???.dat)

里面的,以便随后的安装程序检查后决定是否可以被添加到一个特定的已存在的卸载记录,安装程序只有在已存在的卸载记录中的 AppId和当前的安装程序的 AppId

相同是才能添加到卸载记录。举一个实际的例子,比方说你右两个安装程序,一个叫做《我的程序》而另外一个叫做《我的程序 1.1升级版》,要想把《我的程序 1.1

升级版》添加到《我的程序》的卸载记录中,你应该设置两个安装程序的 AppId为相同的值。

AppId还决定了卸载注册表键的实际名称,被 Inno Setup在其末尾附加上“_is1”(因此,如果 AppId是

“MyProgram”,那么这个键将会被命名为“MyProgram_is1”)。Inno Setup的早于 1.3的版本的键的名称是基于

AppVerName的值的。

无论什么时候 AppId都不会被显示出来,因此你要求非常隐讳的感觉很轻松。

示例: AppId=MyProgram

[Setup]: AppMutex

说明:

如果用户要为当前的应用程序升级为新的版本,然而当前的应用程序正在运行,该关键字就是用来防止这类事情的发生的,而且它也可以防止用户卸载正在运行的应用程序。它指定了一个或多个同名互斥体的名称(多个互斥体用逗号隔开),安装程序和卸载程序将会在启动时检查,如果存在,安装程序/卸载程序将显示如下的信息:“[安装程序或卸载程序]

检测到 [应用程序]现在正在运行。请立即关闭它的全部实例,然后单机‘确定’继续,或者‘取消’退出。”

如果你要使用这个关键字就必须在你的应用程序中以该关键字指定的名称添加一个同名的互斥体。例如在 Delphi和 C

中创建如下显示的同名互斥体,该代码应该在应用程序启动是被执行。

Delphi:

CreateMutex(nil, False,'MyProgramsMutexName');

C:

CreateMutex(NULL, FALSE,"MyProgramsMutexName");

并不是必需在应用程序被结束之前显示的销毁同名互斥体对象,系统会自动完成此功能,也不推荐你这样做,因为理想状态下同名互斥体对象必须存在直到进程被完全终止。

注意在 Windows下同名互斥体是大小写敏感的。

要想获得有关同名互斥体的更多信息请参阅 MS SDK帮助的 CreateMutex主题。

示例: AppMutex=MyProgramsMutexName

[Setup]: AppCopyright

说明:

可选的,它只是用来在安装程序屏幕的右下角显示一个版权消息。

示例: AppCopyright=Copyright? 1997 My Company, Inc.

[Setup]: AppPublisher, AppPublisherURL, AppSupportURL, AppUpdatesURL, AppVersion

说明:

所有这些关键字都是用来在 Windows 2000的控制面板“添加/删除程序”的“支持”对话框中显示一些信息。这些设置是可选的,并且在早期的 Windows

版本中是没有作用的。

示例:

AppPublisher=My Company, Inc.

AppPublisherURL=

AppVersion=1.5

[Setup]: DefaultDirName

说明:

这是个必需的关键字,该值是默认的目录名称,用于“选择目录页”向导。通常它有一个目录常量前缀。

如果 UsePreviousAppDir是 yes(默认值)并且安装程序发现已经安装了一个相同应用程序的早期版本,它将用先前选择的目录代替默认的目录名称。

示例:

如果你使用:

DefaultDirName={sd}\MYPROG

在 Setup中,典型地应有如下显示:

C:\MYPROG

如果你使用:

DefaultDirName={pf}\My Program

在 Setup中,典型地应有如下显示:

C:\Program Files\My Program

[Setup]: Uninstallable

有效值: yes或 no

默认值: yes

说明:

它决定了 Inno Setup的自动卸载程序是否被包含在安装程序中。如果是 yes将包含卸载程序,如果是 no

将不会包括可卸载支持,最终用户只能用手工的方法删除属于你的应用程序的文件。

[Setup]: MinVersion

格式: a.bb,c.dd,这里的 a.bb是表示 Windows的版本,c.dd是表示 Windows NT的版本。

默认值: 4,4

说明:

该关键字让你指定运行你的软件所需要的最低的 Windows或 Windows NT的版本,默认值是“4,4”,实际上它也可以被设置为“4,3.51”来支持

NT 3.51.要防止你的程序被运行在 Windows或 Windows NT上,指定“0”为其中之一的最低版本。版本创建编号(Build

numbers)和(或)服务包级别(Service pack levels)可以被包括在版本号中。

如果用户的系统不适合所要求的最低版本,安装程序将给出一个错误消息然后退出。

[Setup]: OnlyBelowVersion

格式: a.bb,c.dd,这里的 a.bb是表示 Windows的版本,c.dd是表示 Windows NT的版本。

默认: 0,0

说明:

该关键字让你指定不能运行你的软件的最低的 Windows或 Windows NT的版本(亦即高于此版本则无法运行)。指定 0

为其中之一的版本的意思是没有版本上限。版本创建编号(Build numbers)和(或)服务包级别(service pack

levels)可以被包括在版本号中。

该关键字实际上是和 MinVersion恰好相反。

[Setup]: AdminPrivilegesRequired

有效值: yes或 no

默认值: no

说明:

如果设置为 yes,而且用户没有管理员的权限,那么安装程序在启动的时候将给出一个错误消息(“安装这个程序时你必须以管理员的身份登录。”)。它只适用于

Windows NT/2000.

具体的把你邮箱留下我发给你!

OK,关于inno setup和图解Inno Setup安装篇的内容到此结束了,希望对大家有所帮助。

全职高手第二季在线观看(全职高手第二季在线观看免费完整版)
« 上一篇2026-09-20
没有网也可以玩的手机游戏(无网游戏)
下一篇 »2026-09-20