Inno Setup打包注意事项
Inno Setup是一个开源的,商业的,快捷的脚本打包工具。
具体打包流程根据界面提示就可以搞定,下面讲解几个注意事项
1.在安装包进行安装的过程当中,很多程序都需要修改配置信息,这就要求我们在安装完成那一刻调用一个窗体程序来修改配置信息,那么这应该怎么来编写打包脚本呢?
首先最好在编辑脚本以前就应该把修改配置文件信息的exe文件打包进入安装包,比如我们现在想调用一个WindowsFormsApplication1.exe文件,首先把它打包进入安装包,如下:
Source: "D:\C#\暑假\XmlDeal\WindowsFormsApplication1\bin\Release\WindowsFormsApplication1.exe"; DestDir: "{app}"; Flags: ignoreversion
然后在[Run]段添加如下代码:
[Run]
Filename: "{app}\WindowsFormsApplication1.exe";
Filename: "{app}\{#MyAppExeName}"; Description: "{cm:LaunchProgram,{#StringChange(MyAppName, "&", "&&")}}"; Flags: nowait postinstall skipifsilent
这样就可以在程序安装成功前一刻调用该程序修改配置文件,修改成功以后,才安装完成。
2.如何处理安装文件夹
我们的安装文件如果文件和文件夹的路径与Debug或者Release不相同,安装的程序就无法正常运行,下面就是如何处理文件夹。
比如一个Log文件夹下有一个LogInfo,LogError子文件夹,子文件夹有文件
我们应该这样编辑其打包文件夹脚本。
Source: "C:\Users\G50\Desktop\MAS\MASClient\bin\Debug\Log\LogError\*"; DestDir: "{app}\Log\LogError"; Flags: ignoreversion
Source: "C:\Users\G50\Desktop\MAS\MASClient\bin\Debug\Log\LogInfo\*"; DestDir: "{app}\Log\LogInfo"; Flags: ignoreversion
3.如何处理.net版本问题
我们写的.net程序都有对应的.net版本,如果用户电脑没有相应的版本,程序无法正常运行,这就需要我们打包时把.net安装包打包进去,编辑好脚本,在安装时,检测用户电脑有没有对应的.net版本信息,如果有,则正常安装,否则就安装.net,安装完毕之后.net安装包自动删除。
代码如下:
Source: "D:\dotNetFx40_Full_x86_x64.exe"; DestDir: "{tmp}"; Flags: ignoreversion
添加[Code]段代码
[Code]
function CheckDotNet4_0():boolean;
begin
Result:=not RegKeyExists(HKLM, 'SOFTWARE\Microsoft\.NETFramework\policy\v4.0');
end;
function InitializeSetup(): Boolean;
var Path:string;
ResultCode: Integer;
begin
if CheckDotNet4_0() then
begin
if MsgBox('系统检测到您没有安装.Net Framework4.0,是否立刻下载并安装?', mbConfirmation, MB_YESNO) = idYes then
begin
ExtractTemporaryFile('dotNetFx40_Full_x86_x64.exe');
Exec(ExpandConstant('{tmp}\dotNetFx40_Full_x86_x64.exe'), '', '', SW_SHOWNORMAL, ewWaitUntilTerminated, ResultCode);
Result := true;
end
else
begin
MsgBox('没有安装.Net Framework4.0环境,无法运行【XX】程序,本安装程序即将退出!',mbInformation,MB_OK);
Result := false;
end;
end
else
begin
Result := true;
end;
end;
Inno Setup打包注意事项的更多相关文章
- Inno Setup 打包工具总结
Inno Setup 打包工具总结 分类: Install Setup 2013-02-02 15:44 2386人阅读 评论(0) 收藏 举报 最近打包用到了Inno setup,在这个过程中容易犯 ...
- 使用Inno Setup 打包.NET程序,并自动安装.Net Framework
使用Inno Setup 打包.NET程序,并自动安装.Net Framework http://www.cnblogs.com/xiaogangqq123/archive/2012/03/19/24 ...
- (Inno setup打包)检测系统是否已安装程序,若已安装则弹出卸载提示的代码
原文 http://bbs.itiankong.com/thread-30983-1-5.html 有6天没研究pascal代码了,昨天晚上突然来了灵感,终于解决了苦思冥想好几天没能解决的问题, 因此 ...
- Inno Setup打包的程序提升为管理员权限
Inno Setup打包的程序在Win7 64位系统上安装,安装步骤最后一步若选中运行程序,会跳出一个错误提示框. 这是因为64位win7系统运行程序时需要管理员权限,而打包的文件并没有这个权限就试图 ...
- Inno Setup打包添加和去除管理员权限
原文:Inno Setup打包添加和去除管理员权限 添加管理员权限 1.在[Setup]节点添加 PrivilegesRequired=admin 2.进入安装目录,找到文件SetupLdr.e32, ...
- inno setup 打包exe程序
inno setup 用于打包生成安装程序, 是通过的一个脚本 可以将 exe 执行文件以安装的形式,解压,添加依赖,创建快捷方式. 例如,我们写了个winform,我们怎么通过安装的形式,给客户的机 ...
- Inno Setup 打包的文件以管理员权限执行
最近发现一个问题,就是Inno Setup打包的程序安装完毕后执行需求管理员权限的程序的时候会失败( inno createprocess 须要提升),解决问题的最简单办法就是打包的后的程序也以管 ...
- 【程序打包工具 Inno Setup】CreateProcess 失败:代码 740(Inno Setup打包的程序提升为管理员权限)
原文参考 https://www.cnblogs.com/SnailProgramer/p/4243666.html http://blog.csdn.net/x356982611/article/d ...
- Inno Setup CreateProcess 失败:代码 740(Inno Setup打包的程序提升为管理员权限)
原文参考 https://www.cnblogs.com/SnailProgramer/p/4243666.html http://blog.csdn.net/x356982611/article/d ...
随机推荐
- 201521123107 《Java程序设计》第14周学习总结
第14周-数据库 1.本周学习总结 2.书面作业 1. MySQL数据库基本操作 建立数据库,将自己的姓名.学号作为一条记录插入.(截图,需出现自己的学号.姓名) 在自己建立的数据库上执行常见SQL语 ...
- week2-结对编程【网页实现四则运算】
题目描述: 不知道大家是否尝试过这样一种开发模式:你有一个伙伴,你们坐在一起,并肩作战,面对着同一台显示器,使用着同一键盘,同一个鼠标,你们一起思考,一起分析,一起编程?这次,就让我们来体验一下结对编 ...
- 扫雷游戏制作过程(C#描述):第一节、创建项目
前言 起初做扫雷是同学在做,我也跟着做了.做的比较low,其实第一次做这种东西,自己对自己的要求也不高,注重在了解一下,一个app应用程序是怎么产生的..net开发平台,用c#敲的.建议大家一些不懂的 ...
- 201521123121 《JAVA程序设计》第7周学习总结
1. 本周学习总结 以你喜欢的方式(思维导图或其他)归纳总结集合相关内容. 参考资料: XMind 2. 书面作业 ArrayList代码分析 1.1 解释ArrayList的contains源代码 ...
- 201521123110 java课程设计
一.需求分析 功能要求:计算机产生随机数,猜中即胜,猜不中,提示是大了还是小了,继续猜,直至猜到,给出所用时间和评语.保留用户测试成绩,做出成绩排行榜.排行榜存放到文件中. 二.本组课题及本人任务 • ...
- session和cookie介绍以及session简单应用
介绍http协议与TCP协议: http协议:是短连接,关闭浏览器的时候断开与服务器的连接 TCP协议:是长连接,连接一直存在 http协议是在TCP协议 ...
- 三级菜单的实现(python程序)
这是刚开始写程序,三级菜单的程序基本是用字典实现,很low,以后学习了其他更好的东西,我会继续上传,然后争取在我水平高深之后,把这个简单的东西实现的狠高大上. _author_ = "zha ...
- Mybatis第四篇【多表连接】
Mybatis多表连接 我们在学习Hibernate的时候,如果表涉及到两张的话,那么我们是在映射文件中使用<set>..<many-to-one>等标签将其的映射属性关联起来 ...
- birt-j脚本调试 & 动态sql的实现
一个比较好的birt问题解决网址: http://www.myexception.cn/h/1335919.html 1,Birt的JavaScript脚本简单调试 Birt中的js脚本不能用aler ...
- 【京东账户】——Mysql/PHP/Ajax爬坑之添加购物车
一.引言 做京东账户项目中的购物车模块,功能之一就是添加购物车.要用到的是Apach环境,Mysql.PHP以及Ajax. 预计效果:用户点击->"加入购物车" 添加成功 ...