我的编程空间,编程开发者的网络收藏夹
学习永远不晚

Inno Setup简介

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

Inno Setup简介

简易打包:

选择使用向导创建一个新的脚本

填好图中的安装包名称、安装版本、安装包发布者、安装包的相关网站,安装包名称和版本是必填的,剩下那两个可以选填。

第一个是应用程序目标基本文件夹可以选择,第二个是应用程序文件夹名称,就是安装时新建的安装目录。下边有两个可供选择,第一个是用户是否可以更改应用程序文件夹、第二个是应用程序是否需要文件夹。点击下一步

选择相应应用程序的主执行文件点击浏览去选择要封装的主文件夹,如果需要添加其他文件可以在下边选择添加文件或添加文件夹,可以看到中间有两个可供勾选的条件,第一个是是否允许用户在安装后启动应用程序、第二个是应用有无主执行文件,一般是有的。

是否将文件关联到主执行文件,应用程序的类型名称、拓展名。

在开始菜单栏创建快捷方式、是否允许用户创建桌面快捷方式

许可文件、安装之前显示信息文件、安装之后显示信息文件,可以在这向导中进行配置,后续也可以在脚本中添加代码实现,选填

选择下载方式,为哪些用户下载,或者询问用户下载模式。

选择语言包

配置安装报的输出文件夹,安装包名称、和标志,设置密码

选择是否使用#define编译指令,点击下一步就完成了脚本向导

点击finish以后可以选择就此运行脚本,或者不运行,对脚本进行更改添加。

Inno Setup简介:

一、宏定义#define

自定义的一些全局变量,例如:#define MyAppName "test"在下文中使用时AppName={#MyAppName},要加{#}。

二、主要使用到的节

1.[Setup]节,用来设置安装包的名称、作者等基础信息。需要注意的是同一个程序的不同版本程序的id、name是一致的,不同程序是不同的,可以在Tools-GenerateGUID中生成随机唯一的id。

2.[Languages]节,主要是编写程序的语言包,根据前边向导选择语言生成

3.[Tasks],可选节,他定义了安装程序在安装过程中将执行的所有用户可自定义任务

4.[Files]节,定义安装程序要在用户系统上安装的文件,在这个段中有Source和DestDir两个主要属性,Source是指文件在设计者电脑上的位置,DestDir是指要安装在用户电脑上的位置。

5.[Registry],定义希望安装程序在用户系统上创建、修改或删除的注册表项/值

6.[Icons],定义安装程序在“开始”菜单栏和桌面上创建的快捷方式

7.[Run],可选节,在成功安装程序之后但在安装程序显示最终对话框之前要执行的任意数量的程序,比如安装后运行。

8.[Type],可选节,定义安装的类型,完全安装、简洁安装、自定义安装。例:

[Types]

Name: "full"; Description: "Full installation"

Name: "compact"; Description: "Compact installation"

Name: "custom"; Description: "Custom installation"; Flags: iscustom

9.[Components],可选节,受到[types]的影响,做组件选择,例如:

Name: "main"; Description: "Main Files"; Types: full compact custom; Flags: fixed

Name: "help"; Description: "Help Files"; Types: full

Name: "help\english"; Description: "English"; Types: full

Name: "help\dutch"; Description: "Dutch"; Types: full

  1. [Messages],更改显示在程序中的消息文本,例如:

ButtonNext=&Forward

将向导上的next修改为转发

  1. [Dirs]此可选部分定义除了用户选择的应用程序目录(自动创建)之外,安装程序要创建的任何其他目录。在主应用程序目录下创建子目录是本节的常见用途。

Name: "{app}\data"

Name: "{app}\bin"

({app}是指脚本项目所在的文件目录)

  1. [INI]此可选部分定义任何 .您希望安装程序在用户系统上设置的 INI 文件条目。

Filename: "MyProg.ini"; Section: "InstallSettings"; Flags: uninsdeletesection

13[Code]代码段,Pascal脚本

三、Pascal语言简介

基础语法:

赋值:”:=”

定义变量:var name:type;

if语句:

if 条件 then

begin

end else

begin

end;

(跟在if下的end后有else的话不用加分号)

for循环:

for i:=2 to n do

s:=s*i;

while语句:

while a>0 do

begin

a:=a-1;

end;

函数:

function name (形参名:形参类型):返回值类型;

(返回值直接是Result,不用自己定义变量作为返回值)

procedure name(形参名:形参类型);

换行:”#10#13”

  1. Setup event functions:

(事件函数,可以重载)

function InitializeSetup():Boolean;在初始化中调用,返回否则停止,否则返回是。可以使用这个函数做一些想到窗口显示之前做的事,比如判断用户是否安装了别的版本、安装环境是否满足条件。

procedure InitializeWizard();使用此事件函数可在启动时对向导页进行更改。不能为此使用 InitializeSetup 事件函数,因为在触发时,向导窗体尚不存在.

procedure DeinitializeSetup();在安装程序终止之前调用。请注意,即使用户在安装任何内容之前退出安装程序,也会调用此函数。

procedure CurStepChanged(CurStep:TSetupStep);您可以使用此事件功能执行自己的安装前和安装后任务。在实际安装开始之前使用 CurStep=ssInstall 调用,在实际安装完成后使用 CurStep=ssPostInstall 调用,在成功安装后安装程序终止之前使用 CurStep=ssDone调用。

procedure CurInstallProgressChanged(CurProgress,MaxProgress:Integer);可以使用此事件函数在安装程序提取文件、创建快捷方式、创建INI 条目和创建注册表项时监视进度。

function NextButtonClick(CurPageID:Integer):Boolean;点击next按钮时调用 。

function BackButtonClick(CurPageID:Integer):Boolean;点击back按钮调用。

procedure CancelButtonClick(CurPageID:Integer;var Cancle,Confirm:Boolean);点击取消按钮时调用。

function ShouldSkipPage(PageID:Integer):Boolean;向导调用此事件函数以确定是否应显示特定页面(由 PageID 指定)。如果返回 True,则将跳过该页面;如果返回 False,则可能会显示该页面。

procedure CurPageChanged(CurPageID:Integer);在显示新的向导页面后调用。

function CheckPassword(Password:String):Boolean;如果安装程序在 Pascal 脚本中找到密码查核事件函数,它会自动显示“密码”页并调用查核密码来检查密码。返回 True 接受密码,返回 False 拒绝密码。

function NeedRestart():Boolean;返回 True 指示安装程序在成功安装结束时提示用户重新启动系统,否则返回 False。

function UpdateReadyMemo(Space,NewLine,MemoUswrInfoInfo,MemoDirInfo,MemoTypeInfo,MemoComponentsInfo,MemoGroupInfo,MemoTasksInfo:String):String;如果安装程序在 Pascal 脚本中找到 UpdateReadyMemo 事件函数,则当“准备安装”向导页变为活动页时,将自动调用该函数。

function RegisterPreviousData(PreviousDataKey:Integer);若要存储自定义向导页上输入的用户设置,请在 Pascal 脚本中放置一个 RegisterPreviousData 事件函数,并在其中调用 SetPreviousData(PreviousDataKey, ...),每个设置一次。

function CheckSerial(Serial:String):Boolean;如果安装程序在 Pascal 脚本中找到 CheckSerial 事件功能,则序列号字段将自动出现在“用户信息”向导页上(必须在 [设置] 部分中使用 UserInfoPage=yes 启用该字段!返回 True 接受序列号,返回 False 拒绝序列号。

function GetCustomSetupExitCode:Integer;返回一个非零数字以指示安装程序返回自定义退出代码。仅当安装程序已成功运行到完成且退出代码为 0 时,才会调用此函数。

function PrepareToInstall(var NeedsRestart:Boolean):String;您可以使用此事件函数来检测和安装缺少的必备组件和/或关闭任何即将更新的应用程序.如果 CloseApplications 设置为 yes,则在安装程序检查正在使用的文件之前调用此函数。

function RegisterExtraCloseApplicationsResources;要注册额外的文件,如果 CloseApplications 设置为 yes,安装程序应检查是否正在使用,请在 Pascal 脚本中放置一个 RegisterExtraCloseApplicationsResources 事件函数,并在其中调用 RegisterExtraCloseApplicationsResource 每个文件一次。

五、Uninstall event functions:

function InitializeUninstall():Boolean;卸载程序

procedure InitializeUninstallProgressForm();使用此事件函数可在启动时更改进度窗体。不能为此使用 InitializeUninstall 事件函数,因为在触发时,进度窗体尚不存在。

procedure DeinitializeUninstall();

procedure CurUninstallStepChanged(CurUninstallStep:TUninstallStep);

function UninstallNeedRestart():Boolean;

六、如何使用DLLS和.NET依赖:

DLLS:

[Code]

function A(B: Integer): Integer;

external '@';

function A(B: Integer): Integer;

external '@ ';

function A(B: Integer): Integer;

external '@ ';

callingconvention:调用约定,一般是stdcall

options:delayload,延迟加载DLL,在使用到该函数时加载;loadwithalteredsearchpath,指定应使用 Windows 标志LOAD_WITH_ALTERED_SEARCH_PATH加载 DLL,这实质上会导致加载程序在包含 DLL 的目录中搜索任何依赖 DLL;setuponly,指定仅当脚本从安装程序运行时,才应加载 DLL;uninstallonly,指定在卸载时加载。

.NET依赖:

首先要将.net的安装包文件放在.iss文件目录下,在[Files]段添加如下代码:

Source:"E:\Inno setup\PRO\ndp48-x86-x64-allos-enu.exe";DestDir:"{tmp}";Flags:ignoreversion,将文件添加在用户安装后的系统临时文件夹中,需要注意的是,他会在用户点击安装后才会将文件解压到临时文件中,而我们需要在向导未开始之前判断用户是否安装了,没有安装的话我们来进行安装,所以我们的代码需要将.NET的安装包进行解压放进系统临时文件夹中:

ExtractTemporaryFile('ndp48-x86-x64-allos- enu.exe');

此时我们可以调用Exec函数来运行.NET的安装文件:

Exec(ExpandConstant('{tmp}\ndp48-x86-x64-allos-enu.exe'),'','',SW_SHOWNORMAL,ewWaitUntilTerminated,rc);

来源地址:https://blog.csdn.net/qq_55687486/article/details/128703329

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

Inno Setup简介

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

Inno Setup 3 :语法解析(二

接上回。安装脚本段用于解析脚本中各个段的含义及使用方法。其包括[Setup]段、[Files]段、[Run]段等共17个字段,下面逐一进行分析。[Setup]  [Setup]段包含用于安装程序和卸载程序的全局设置。某些提示对于你创建的任何
2023-01-31

MongoDB(一):NoSQL简介、MongoDB简介

1. NoSQL简介1.1 什么是NoSQLNoSQL(NoSQL= Not Only SQL),意即“不仅仅是SQL",是一项全新的数据库理念,泛指非关系型的数据库。1.2 为什么需要NoSQL随着互联网web2.0网站的兴起,非关系型的数据库现在成了一个极
MongoDB(一):NoSQL简介、MongoDB简介
2019-07-31

Elasticsearch简介

疫情已经持续了好几个月了,作为程序员滴我们也帮不上什么忙,只有老老实实呆在家里或者出门一定戴口罩准守一些规则,不给国家添乱。不过最近疫情开始有所扭转,但是还是对国家经济,对企业业务造成了很大的影响,我也被停止了实习。接下来,可能会面临着失业,破产等等严肃的问题
Elasticsearch简介
2014-08-14
2024-04-02

VMotion简介

源起:
2023-06-04
2023-10-11

MySQL简介

MySQL介绍:简介、特点与应用示例概述:MySQL是当前最常用的关系型数据库管理系统之一。作为一个开源的数据库管理系统,MySQL具有许多优点,如高性能、可靠性强以及易于使用等。本文将介绍MySQL的特点以及应用场景,并附上相关代码示例
MySQL简介
2024-02-22

Hive简介

1.1  Hive简介1.1.1 什么是HiveHive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供类SQL查询功能。1.1.2 为什么使用Hive直接使用hadoop所面临的问题人员学习成本太高项目周期要求太短Map
Hive简介
2019-06-16

Redis 简介

Redis 特性     1.速度快       官方给出的数字是读写性能可以达到10万/秒,当然这也取决于机器的性能。大致归纳速度快的四点原因如下:             # Redis 的所有数据都是放在内存中的,这也是最主要的原因;          
Redis 简介
2021-08-02

Cassandra 简介

Cassandra是云原生和微服务化场景中最好的NoSQL数据库。我信了~ 1. Cassandra是什么高可用性和可扩展的分布式数据库Apache Cassandra™是一个开源分布式数据,可提供当今最苛刻的应用程序所需的高可用性、高性能和线性可伸缩性。它提
Cassandra 简介
2015-01-20
2023-09-01
2023-09-03

python简介

Python是一种开源的面向对象编程语言随着人工智能与大数据分析的火热,python也随之火热起来Python应用广泛,特别适用以下几个方面1.系统编程:提供API(Application Programming Interface,应用程
2023-01-30

Python 简介

Python介绍与特点(自学python知识整理)Python 是一个高层次的结合了解释性、编译性、互动性和面向对象的脚本语言。Python 的设计:Python 是一种解释型语言: 这意味着开发过程中没有了编译这个环节。类似于PHP和Pe
2023-01-31

IPv6简介

IPv6仅仅只是“长”吗?IPv6的地址长什么样?平时我们是怎么使用IPv6的呢?编写网络程序的时候要怎么处理IPv6?且待本篇一一道来。为什么需要IPv6?全球的IP地址由一个名字叫IANA(Internet Assigned Numbe
2023-01-31

Redis简介

Redis官方网网站是:http://www.redis.io/ 。 Redis是一个开源,高级的键值存储和一个适用的解决方案,用于构建高性能,可扩展的Web应用程序。 Redis有三个主要特点,使它优越于其它键值数据存储系统 : a.Re
2022-06-04

编程热搜

目录