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 ...
随机推荐
- 团队作业3——需求改进&系统设计
Deadline: 2017-4-21 22:00PM,以博客发表日期为准 评分基准: 按时交 - 有分,检查的项目包括后文的四个方面 需求&原型改进 系统设计 Alpha任务分配计划 测试计 ...
- 201521123036 《Java程序设计》第3周学习总结
本周学习总结 初学面向对象,会学习到很多碎片化的概念与知识.尝试学会使用思维导图将这些碎片化的概念.知识组织起来. 书面作业 Q1:代码阅读 public class Test1 { private ...
- 201521123029《Java程序设计》第三周学习总结
1.本周学习总结 2.书面作业 Q1.代码阅读 public class Test1 { private int i = 1;//这行不能修改 private static int j = 2; pu ...
- 201521123112《Java程序设计》第2周学习总结
1.本周学习总结 本周在课堂面授课粗略讲了<Java学习笔记>中的第三章,其内容大部分都与上学期学习的数据结构差不多,所以只是粗略的复习了一下就带过,然后通过将PTA上的实验便于我们本周的 ...
- Java-TreeSet的用法-入门
Java语言中,Set接口有3种通用实现:HashSet, TreeSet,LinkedHashSet.TreeSet是一种能够对内部元素进行排序的集合,它使用红黑树来存储内部元素,基于元素的值进行排 ...
- 201521123109《java程序设计》第十周学习总结
1. 本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结异常与多线程相关内容. 2. 书面作业 本次PTA作业题集异常.多线程 1. finally 题目4-2 1.1 截图你的提交结果( ...
- Ajax练习题
1.使用Ajax跳转处理页面连接数据库,完成下拉列表 首页: <body> <select id="sel"> </select> < ...
- Java:@Override标签的多态性详解
Override(重写)是子类与父类的一种多态性体现. Override允许子类改变父类的一些行为. 为什么需要Override:当父类不满足子类的一些要求时我们就需要子类对父类的一些行为进行重写. ...
- grep与正则表达式基础
目录 grep 正则表达式 grep用法简介 我们介绍GREP的用法,主要用于匹配行,我们借助下面的正则表达式来介绍如何使用grep,还有就是正则表达式在linux中是极为重要的一部分. 命令:gre ...
- GCD之after
先介绍下C中的modf函数 函数名:modf 头文件:<math.h> 函数原型:double modf(double x, double *ipart) 函数用途:分解x,以得到x的整数 ...