INNO setup 制作安装包
1、获取SQLserver安装路径
var
dbpath:string;
rtn:boolean;
rtn := RegQueryStringValue(HKEY_LOCAL_MACHINE, 'SOFTWAREMicrosoftMSSQLServerSetup','SQLPath', dbpath);
if (!rtn) then dbpath := ExpandConstant('{app}');
2、获取本机的IP地址
ip:string;
rtn:boolean;
rtn :=RegQueryStringValue(HKEY_LOCAL_MACHINE, 'SYSTEMCurrentControlSetServices{083565F8-18F0-4F92-8797-9AD701FCF1BF}ParametersTcpIp','IpAddress', ip);
if (not rtn) or (ip='0.0.0.0') or (ip='') then ip := '127.0.0.1';
3.修改安装包左侧位图,其大小一般为164x314px,在INNO脚本的[Setup]段添加如下代码:
注:红色的标记为位图路径,可以用相对路径或绝对路径
4.修改安装包右上角位图,其大小一般为55x55px,在INNO脚本的[Setup]段添加如下代码:
WizardSmallImageFile=ResWizardSmallImage.bmp
5.修改安装包左下角的BeveledLabel内容,常见有两种方式:
(1)临时性修改 在INNO脚本的[Messages]段添加如下代码:
(2)永久性修改 用记事本打开INNO目录中的“Default.isl” 修改“BeveledLabel = ”后的内容:
6.修改安装包欢迎标签内容,即WelcomeLabel2
用记事本打开INNO目录中的“Default.isl” 修改“WelcomeLabel2 = ”后的内容:
注:%n在INNO脚本中为换行符
7.安装结束后动行主程序或打开文件等,只需在INNO脚本的[Run]段修改代码:
Filename: {app}汉化说明.txt; Description: 查看说明; Flags: nowait postinstall shellexec
8、自定义BeveledLabel文字
[Messages]
BeveledLabel=中天VIP工作室
9、自定义安装程序界面左上角“安装”文字
[message]
SetupAppTitle=需要的字
SetupWindowTitle=需要的字
10、自定义安装程序版本号
VersionInfoVersion=1.1
VersionInfoTextVersion=1.1
参考代码
1、系统进程监测
[Code]
var
is_value: integer;
function InitializeSetup(): Boolean;
begin
Result :=true;
is_value:=FindWindowByClassName(‘TfrmCmdCenter’);
while is_value<>0 do
begin
if Msgbox(‘安装程序检测到您的迅雷软件当前正在运行。’ #13#13 ‘您必须先关闭它然后单击“是”继续安装,或按“否”退出!’, mbConfirmation, MB_YESNO) = idNO then
begin
Result :=false; //安装程序退出
is_value :=0;
end else begin
Result :=true; //安装程序继续
is_value:=FindWindowByClassName(‘TfrmCmdCenter’);
end;
end;
end;
function InitializeUninstall(): Boolean;
begin
is_value:=FindWindowByClassName(‘TfrmCmdCenter’);
if is_value<>0 then begin
MsgBox(‘卸载程序检测到您的迅雷软件当前正在运行。’ #13#13 ‘为了更安全完整的卸载,您必须关闭它在进行卸载操作!’, mbError, MB_OK);
Result :=false;
end else Result :=true;
end;
2.自定义安装程序右上角图片大小
[code]
procedure InitializeWizard();
begin
WizardForm.WizardSmallBitmapImage.width:=150; //设置页眉图片的大小
WizardForm.WizardSmallBitmapImage.left:=WizardForm.width-150; //设置左边页眉留出的空隙
WizardForm.PAGENAMELABEL.width:=0; //设置标题文字显示的大小
WizardForm.PAGEDESCRIPTIONLABEL.width:=0; //设置标题文字显示的大小
end;
3.跳关安装程序的欢迎界面
INNO 的设计中本身可以跳过所有向导页面(用 ShouldSkipPage 函数),但是唯独不能跳过欢迎页面,据说作者是有意为了防止该功能被滥用,即产生完全没有界面的在后台运行的安装程序。
要跳过欢迎页面,只能调用系统的功能。
参考一
复制内容到剪贴板代码:
[Code]
const
WM_LBUTTONDOWN = 513;
WM_LBUTTONUP = 514;
procedure InitializeWizard();
begin
PostMessage(WizardForm.NextButton.Handle,WM_LBUTTONDOWN,0,0);
PostMessage(WizardForm.NextButton.Handle,WM_LBUTTONUP,0,0);
// 其它代码
end;
参考二
复制内容到剪贴板代码:
[Code]
procedure CurPageChanged(CurPageID: Integer);
begin
if CurPageID = wpWelcome then
WizardForm.NextButton.OnClick(WizardForm);
end;
两者都能跳过欢迎页面
4.跳过准备安装界面
使用inno打包,我们会注意到,在选择好安装向导所指定的所有项目后,安装向导会进入一个准备安装的界面提示你所有的安装信息。此时,我们只能点击安装按钮,安装才可以继续。有时候,为了某种需要,我们可能不想让程序显示这个准备安装的界面,那么如何去掉这个界面呢?请看以下的代码:
[code]
function ShouldSkipPage(PageID: Integer): Boolean;
begin
if PageID=wpReady then
result := true;
end;
5.判断注册表检查程序时候存在
有时候,我们制作软件的汉化或者补丁程序,需要判断软件是否已安装,如果软件已安装就安装此补丁,如果软件未安装就终止安装程序并且提示用户安装原版软件后再运行此补丁,那么如何实现此功能呢,这里就给大家提供一个我的判断实力。通过检查注册表相关键值来判断指定程序是否已安装,以下是我制作的一个程序的增强补丁,需要在源程序安装的基础上进行安装,具体脚本判断如下:
[CODE]
var
MyKeyExist: boolean;
function InitializeSetup(): boolean;
begin
MyKeyExist:= true;
if Not RegValueExists(HKEY_LOCAL_MACHINE, 'SOFTWAREAdobeAudition3.0', 'ApplicationPath') then
begin
MyKeyExist:= false;
MsgBox('安装程序检测到您的系统内没有安装Adobe Audition3.0,请先安装软件在运行此补丁。', mbInformation, MB_OK);
end;
Result:= MyKeyExist;
end;
6.如何让协议许可页面默认选中我同意按钮
为了让初学者更方便的安装软件,有时候我们会发现一些使用inno setup打包的程序在许可页面默认已经选中了我同意按钮,只需要点击下一步即可继续安装,那么这个效果是如何实现的呢?下面是代码:
[code]
procedure InitializeWizard();
begin
WizardForm.LICENSEACCEPTEDRADIO.Checked := true;
end;
7.安装前检测是否已经安装
function InitializeSetup(): boolean;
begin
Result := true;
if FileExists(ExpandConstant('{pf}我的程序我的程序.exe')) then
begin
MsgBox('程序已经安装在你的系统中了,请先卸载!', mbInformation, MB_OK );
Result := false;
end;
end;
其中{pf}我的程序我的程序.exe替换为你自己的路径即可
加入此代码的含义,就是检测目录下是否包括代码中指定的文件名的文件,如果有则当您运行程序后直接弹出提示告诉您软件已经存在,请先卸载。因此,这个代码有个局限性,就是只能检测固定的目录的文件,如果用户的文件并未安装到脚本所指定的检测目录,那么就将无法检测到。所以,判断也就失效了。
8、安装完成后显示新特性
[Run]
Filename: "{app}WhatsNew.Txt"; Description: "安装完成后显示新特性"; Flags: postinstall shellexec skipifsilent
[Run]
Filename: {app}vcredist_x86.exe; Parameters: /q; WorkingDir: {tmp}; Flags: skipifdoesntexist; StatusMsg: "Installing Microsoft Visual C++ Runtime ..."; Check: NeedInstallVC9SP1
[Code]
var
vc9SP1Missing: Boolean;
function NeedInstallVC9SP1(): Boolean;
begin
Result := vc9SP1Missing;
end;
function InitializeSetup(): Boolean;
var
version: Cardinal;
begin
if RegQueryDWordValue(HKLM, 'SOFTWAREMicrosoftWindowsCurrentVersionUninstall{9A25302D-30C0-39D9-BD6F-21E6EC160475}', 'Version', version) = false
then
begin
vc9SP1Missing := true;
end;
result := true;
end;
转载于:https://www.cnblogs.com/micro-chen/p/6040115.html
INNO setup 制作安装包相关推荐
- 解决Inno Setup制作安装包无法创建桌面快捷方式的问题
昨天想把个java程序做成exe安装软件,然后就去下载了Inno Setup这个软件安装包制作软件,Inno Setup这个软件确实非常好用,但是由于我下载的中文汉化版,根据向导一步步来就是不创建桌面 ...
- Inno Setup制作安装包教程
Inno Setup Compiler汉化版启动软件后的界面: 选择"创建新的空白脚本文件",点击[新建]空白脚本 直接[下一步]: 填好各项目内容然后[下一步] 在应用程序基本目 ...
- 【Inno Setup】安装包制作,项目打包方案
系列文章 MySQL安装教程(详细) 本文链接:https://blog.csdn.net/youcheng_ge/article/details/126037520 MySQL卸载教程(详细) 本文 ...
- Inno Setup制作应用程序安装包
我最近写了一个MFC应用程序,想发给其他的小伙伴玩一玩,直接发了个exe文件过去,结果发现小伙伴那边打不开.原来这个exe文件虽然是MFC静态编译的,但是还依赖了其他几个.dll文件,需要把这几个dl ...
- Inno Setup 制作exe安装包
Inno Setup 制作exe安装包 前言: 使用Inno Setup制作exe安装包,首先需要一个可运行的exe程序,然后下载Inno Setup工具,最后才是制作安装包的过程. exe主程序 此 ...
- 使用开源软件Inno Setup制作软件安装包
Inno Setup是一款免费开源的软件安装包制作工具,可以对工程的可执行文件进行打包.设置安装路径以及注册到系统中. 安装包下载地址:Inno Setup Downloads 选择欢迎界面的Crea ...
- 用inno setup制作管理员权限启动的安装包
inno setup制作的安装包,默认是不需要管理员权限启动的.我们制作安装包,往往需要做一些设置工作,这些设置工作可能用到管理员权限.使用Resource Hacker修改inno setup资源, ...
- inno setup 中文乱码问题_解决Inno Setup制作中文安装包在非中文系统上显示乱码的问题...
尼玛,好几个月没更新了.囧... 目前我司新的客户端开发已经接近尾声,该改的bug已经改完,该重构的地方也都差不多了.视觉效果也已经根据美工的样式改完了.所以,就差制作安装包了.正所谓万事俱备,只欠东 ...
- Qt打包成setup.exe安装包
Qt打包成setup.exe安装包 一.简述 Qt 项目开发完成之后,需要打包发布程序,而因为用户电脑上没有 Qt 配置环境,所以需要将 release 生成的 exe 文件和所依赖的 dll 文件复 ...
- Qt软件发布(版本信息,Release版程序,代码打包,制作安装包)
序言 当我们完成了Qt程序的开发,希望交予测试,或是正式发布的时候,需要将我们的程序进行层层封装,最终以一个安装包的形式呈现给用户.专业版的软件发布,以Qt软件为例,需要三个步骤:生成版本信息,生成R ...
最新文章
- Python -- Scrapy 命令行工具(command line tools)
- 你一定不知道的 Linux 使用技巧
- CImage与OpenCV兼容问题
- Python-DDoS攻击
- 解读全球热点,传递科研进展,这份AI内参要承包你的AI信息源
- UVA10010 Where's Waldorf?【水题】
- 嵌入式系统——系统安全之常见病毒漏洞刷题整理
- ubuntu 无法定位软件包
- eregi php 5.2,PHP5.3x不再支持ereg和eregi
- 椭圆部分面积计算公式及微积分推导过程
- loadstring的用法
- 漏电继电器LLJ-100FS
- 用计算机怎么求反三角函数图像及性质,反三角函数图像及性质
- 笔记本电脑安装 OMV 关闭屏幕自动休眠的问题
- 简述物联网感知技术_物联网综合测试试题及答案
- Android开源项目分类汇总【畜生级别】[转]
- 查找购买绿驹电动车配件联系方式(半小时获取)
- NVIDIA Cuda 7.5 on Ubuntu 14.04 64 bits
- .NET下的图形绘制控件
- A * 算法(机器人路径避障规划)