简述

Inno Setup 是一个免费的 Windows 安装程序制作软件。第一次发表是在 1997 年,现在已经更新到Inno Setup 5了。Inno Setup是一个十分简单实用的打包小工具,可以按照我们自己的意愿设置功能,稳定性也十分好。

官方网址:http://www.jrsoftware.org/


安装教程

一、下载安装

官方下载地址:http://www.jrsoftware.org/isdl.php

下载后直接安装即可

二、修改安装包的管理员权限

Inno Setup打包的程序在安装时,安装步骤最后一步若选中运行程序,会跳出一个错误提示框。不能执行文件,请求的操作需要提升。这是因为系统运行程序时需要管理员权限,而打包的文件并没有这个权限就试图直接运行。解决方法需要给Inno Setup添加管理员权限。

1. 找到Inno Setup的安装路径,如E:\Inno Setup 5,在里面找到SetupLdr.e32文件。

2.下载一个eXeScope.exe,直接把SetupLdr.e32文件拖入程序中打开,eXeScope.exe可以百度直接搜索下载,或者在这里可以下载https://download.csdn.net/download/sakuya__/11107284

选择XPMainifest下1目录,修改level的值并把相应的ASCII码修改:

修改完后,记得保存。这样修改完后,Inno Setup打包的软件安装后的图标上右下就会有一个小盾牌的图标,表示已经获得管理员权限。


打包教程

(1)打开Inno setup 5软件,点击文件—>新建:

(2)点击下一步

(3)第一行填程序的名称,第二行为程序的版本,第三、四行的应用程序发布者和网站可以不填,填写完后选择下一步

(4)这里基本不用更改,点击下一步

(5)这里上面要选择程序的主执行文件,也就是你编译生成的exe文件,下面选择添加文件夹,把所有你的程序运行需要的dll和资源以及配置文件放在一个文件夹里,选择这个文件夹。然后下一步

(6)这里需要哪些功能,在前边打上对勾即可,点击下一步

(7)这里可以选择许可文件,安装前的文件(如Readme文件等),安装后显示信息等,点击下一步

(8) 此处选择安装语言

(9)在这里选择编译后安装包的输出文件夹,输出文件名等,还可以加载自定义的安装程序图标,填写完成后,点击下一步

(10)在这里选择是否使用define编译指令,选择是也就是在生成的脚本里使用#define宏定义一些常量,方便脚本编写,不勾选就是不用,看个人。选择后点击下一步,完后完成。

(11) 点击完成后会询问你是否立即编译新的脚本,这个脚本是根据刚才我们前面填写的那些内容自动生成的。可以直接使用编译,也可以自己重新编写,下面我会贴上我自己的写的一个把每行意思注释上,当做参考


脚本代码

#define MyAppName "test"
#define MyAppVersion "1.0"
#define MyAppPublisher "sakuya"
#define MyAppExeName "test.exe"[Setup]
; 注: AppId的值为单独标识该应用程序。
; 不要为其他安装程序使用相同的AppId值。
; (生成新的GUID,点击 工具|在IDE中生成GUID。)
AppId={{241FCDA1-8869-439C-9C7F-BF0061ADE5BC}
;应用程序名称
AppName={#MyAppName}
;应用程序版本号
AppVersion={#MyAppVersion}
;AppVerName={#MyAppName} {#MyAppVersion}
AppPublisher={#MyAppPublisher}
;默认安装文件夹名
DefaultDirName={pf}\{#MyAppName}
DefaultGroupName={#MyAppName}
;输出的exe的地址
OutputDir=C:\Users\Lenovo\Desktop
OutputBaseFilename=test
;exe的图标的路径
SetupIconFile=C:\Users\Lenovo\Desktop\heart.ico
;使用压缩类算法lzma
Compression=lzma
;固定压缩格式
SolidCompression=yes
;不需要管理权限也能安装
PrivilegesRequired=none[Languages]
;中文语言
Name: "chinesesimp"; MessagesFile: "compiler:Default.isl"[Tasks]
;Tasks: desktopicon 任务:生成快捷方式
Name: "desktopicon"; Description: "{cm:CreateDesktopIcon}"; GroupDescription: "{cm:AdditionalIcons}"; Flags: unchecked; OnlyBelowVersion: 0,6.1[Files]
;生成的快捷方式所指的原执行文件
Source: "C:\Users\Lenovo\Desktop\test\test.exe"; DestDir: "{app}"; Flags: ignoreversion
;打包的目录
Source: "C:\Users\Lenovo\Desktop\test\*"; DestDir: "{app}"; Flags: ignoreversion recursesubdirs createallsubdirs
; 注意: 不要在任何共享系统文件上使用“Flags: ignoreversion”[Icons]
;生成开始菜单可执行程序map.exe是你目录下的可执行文件 WorkingDir: {app}” WorkingDir后面加{app} app的意思是随安装目录生成
Name: "{group}\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}"
;生成开始菜单卸载
Name: "{group}\{cm:UninstallProgram,{#MyAppName}}"; Filename: "{uninstallexe}";WorkingDir:"{app}"
;Tasks: desktopicon 上面任务中的,生成快捷方式
Name: "{commondesktop}\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}"; Tasks: desktopicon[Run]
Filename: "{app}\{#MyAppExeName}"; Description: "{cm:LaunchProgram,{#StringChange(MyAppName, '&', '&&')}}"; Flags: nowait postinstall skipifsilent[Code]
var
ErrorCode: Integer;
IsRunning: Integer;
//判定程序已经被安装过而不需要重复安装,判断当前安装路径下已经有要安装的exe
// 安装时判断客户端是否正在运行
function InitializeSetup(): Boolean;
begin Result :=true; //安装程序继续if FileExists(ExpandConstant('{pf}\test\test.exe')) thenbeginMsgBox('程序已经安装在你的系统中了!', mbInformation, MB_OK );Result := false;end; IsRunning:=FindWindowByWindowName('test'); while IsRunning<>0 do begin if Msgbox('安装程序检测到客户端正在运行。' #13#13 '您必须先关闭它然后单击“是”继续安装,或按“否”退出!', mbConfirmation, MB_YESNO) = idNO then begin Result :=false; //安装程序退出 IsRunning :=0; end else begin Result :=true; //安装程序继续 IsRunning:=FindWindowByWindowName('test'); end; end;
end; // 卸载时判断客户端是否正在运行
function InitializeUninstall(): Boolean;
begin Result :=true; //安装程序继续 IsRunning:=FindWindowByWindowName('test'); while IsRunning<>0 do begin if Msgbox('安装程序检测到客户端正在运行。' #13#13 '您必须先关闭它然后单击“是”继续安装,或按“否”退出!', mbConfirmation, MB_YESNO) = idNO then begin Result :=false; //安装程序退出 IsRunning :=0; end else begin Result :=true; //安装程序继续 IsRunning:=FindWindowByWindowName('test'); end; end;
end; procedure CurUninstallStepChanged(CurUninstallStep: TUninstallStep);
begin case CurUninstallStep of usUninstall: begin // 开始卸载 end; usPostUninstall: begin // 卸载完成 //MsgBox('CurUninstallStepChanged:' #13#13 'Uninstall just finished.', mbInformation, MB_OK); //插入代码执行卸载后的任务//ShellExec('open', 'http://www.baidu.com', '', '', SW_SHOWNORMAL, ewNoWait, ErrorCode); end; end;
end;

Inno Setup打包教程相关推荐

  1. Inno setup 打包教程

    inno setup 是较常用且简单的软件打包工具. 1.安装并打开 inno setup 软件 ① 运行环境 系统:Windows 7 软件:inno setup 5.5.5 ② 安装 inno s ...

  2. 程序打包(安装包制作,Inno setup打包教程,QT程序打包)

    一.简介 本文主要讲述如何将QT程序打包成安装包,提供给其他人使用.(打包其他程序同理) 二.准备阶段: 2.1 下载并安装打包工具 Inno setup中文版 密码:id09 2.2 将QT程序DL ...

  3. inno setup打包软件学习

    目录 一  打包结果 二 示例打包脚本 三 错误解决 3.1 另一个程序正在使用此文件,进程无法访问 3.2 桌面图标无法修改 四 参考资料 一  打包结果 测试程序来自: 泽森科工 (zenuste ...

  4. Inno setup打包vc++运行库

    windows下打包应用程序,基本都要依赖vc++运行库,打包工具使用的Inno setup,记录一下inno setup打包vc运行库的方法 下载地址 https://support.microso ...

  5. Inno Setup 打包脚本笔记

    Inno Setup 打包脚本总结 1.1. 脚本段 1.1.1. #define宏定义常量 1.1.2. [Setup] 1.1.3. AppId 1.1.3.1. ShowLanguageDial ...

  6. Inno setup打包软件安装

    Inno setup打包软件特点是开源.简单.重点还是免费的. 软件下载官网 https://jrsoftware.org/isinfo.php 界面汉化包地址:https://jrsoftware. ...

  7. Inno Setup 打包发布exe程序的步骤及注意事项及解决发布后的exe解压后文件都在主目录下导致程序无法正常运行的问题

    目录 一.链接.exe文件的.dll动态链接库 1.1.可以利用QT官网提供的工具windeployqt 生成方式见如下: 1.2.使用脚本文件 二.使用绿色汉化版打包小程序inno setup5.5 ...

  8. Inno Setup 打包的文件以管理员权限运行

    近期发现一个问题,就是Inno Setup打包的程序安装完成后运行需求管理员权限的程序的时候会失败( inno createprocess   需要提升),解决这个问题的最简单办法就是打包的后的程序也 ...

  9. inno setup打包程序安装出现CreateProcess failed;code 740

    问题: 使用inno setup打包我们发布的程序test.exe,在安装结束后,勾选了Launch xxx运行程序,然后出现如下报错: Unable to execute file:xxx Crea ...

  10. 【Java】Java GUI制作Windows桌面程序,利用windowbuilder生成界面,使用exe4j打包成可执行文件,使用Inno Setup打包成安装包,超级详细教程

    目录 1.GUI插件 1.1 下载GUI绘制插件 1.2 eclipse中配置windowbuilder插件 2.绘制GUI界面 2.1 建立一个GUI的项目 3.配置Maven项目 3.1新建一个M ...

最新文章

  1. java坐标点对称点的输出,编程java来确定一个对称的单词
  2. C语言面试基础知识整理
  3. mysql 必读_MYSQL 调优和使用必读
  4. plsq如何快捷整理代码_我收藏的几个更快搬砖的vscode快捷键
  5. 修改eclipse皮肤
  6. 微信再次“杠上”支付宝!|畅言
  7. 三.apache 网页重写 squid
  8. Java棘手面试问题
  9. 带aidl文件的应用程序在android平台源码中的编译
  10. SpringBoot+FreeMarker实现单据打印功能
  11. 为什么蓝牙一主多从能解决集中式水表抄表难题?
  12. spring集成flyway
  13. 2021年转行软件测试能有前景吗?
  14. 头歌java 实训 答案 代码 java入门
  15. 这 6 个开源项目很 Cool
  16. CSS进阶之基线(参考线)
  17. 浏览器类应用后台耗电解析 教你三招让手机更省电!
  18. niagara在linux系统上的安装,TRIDIUM NiagaraAX目录遍历漏洞
  19. 深度学习:生成式对抗网络,让机器在博弈中实现“自我成长”
  20. esp32例子初始化流程

热门文章

  1. php文章排序,php实现的常见排序算法汇总
  2. 基于JavaWeb开发的智慧水务管理系统软件设计说明书
  3. 漫谈软件架构设计系列(一):可用性设计
  4. Cry with DX11
  5. 循环冗余校验码(计算机组成原理12)
  6. javascript设计模式--设计原则
  7. linux局邮软件,Unix/Linux平台上常用的邮件系统软件
  8. 老师给我推荐的经典管理书籍
  9. System Repair Engineer (SREng) 2.5 常用操作
  10. linux系统pdf文件转word文档,PDF如何转换为Word文件?用它,就是这么简单!