Inno Setup入门(十一)——完成安装后执行某些程序
Inno Setup入门(十一)——完成安装后执行某些程序
2011-02-16 16:24:23| 分类: Inno Setup | 标签:inno setup |举报 |字号 订阅
有些时候我们的程序虽然能够很好的完成安装,但是程序的配置工作可能需要其他的一些程序来辅助完成,如果不执行这些程序,主程序就不能很好的完成工作,甚至不能完成工作,一个很明显的例子是,目前许多程序是通过NET技术开发的,这就要求计算机上必须安装有.net Framework,否则主程序运行不了,只有预先安装了NET Framework后主程序才能得以运行。这个时候可以通过Run段,指定程序完成安装后、在安装程序显示最终对话框之前要执行的程序。
设想有个主程序为ipmsg.exe,初始化程序为init.exe,主程序必须在init.exe运行一次之后方可很好的运行,这个时候可以这样做(这里的init.exe是我随便找的一个文件,和ipmsg没有必然的联系,只是用来演示):
DefaultDirName="E:\TEST" AppVersion=1.0 Compression=lzma2/max ShowLanguageDialog=yes [components] Name: main; Description:"主程序(必选)";Types:full compact custom;Flags: fixed Name: data; Description:"数据文件";Types:full Name: help;Description:"帮助文件";Types:full compact [files] ;需要打包的文件 Source: "F:\desktop\test\ipmsg.exe"; DestDir: "{app}";Components:main Source: "F:\desktop\test\init.exe"; DestDir: "{app}";Components:main Source: "F:\desktop\test\bin.dat"; DestDir: "{app}";Components:data Source: "F:\desktop\test\help.chm"; DestDir: "{app}" ;Components:help Source: "F:\desktop\test\readme.txt"; DestDir: "{app}";components:help;Flags:isreadme [run] Filename: "{app}\INIT.EXE"; |
测试上面代码生成的打包文件,运行到最后出现finish之前,将会出现如下画面,后面的安装程序将挂起,等待run段下的程序执行完毕后方可继续运行。
聪明的读者可能已经想到,使用该方法也可以实现readme的功能。这里再谈谈该段的各个参数:
Filename:
该参数是必须的,用于说明需要执行的文件,或者需要打开的文件夹。如果Filename 不是可执行文件(.exe或.com) 或批处理文件(.bat 或.cmd),你必须在条目中使用shellexec 标记,由上面的代码可知,这个参数可以包含常量。
Description:
仅在[Run] 段有效。这是条目的描述,可以包含常量,如果没有指明,将会使用默认的描述
Parameters:
程序的可选命令行参数,可以包含常量例如有的控制台程序需要传递参数,这个时候就可以使用该参数了,示例如下:
Filename: "{app}\INIT.EXE";Description:"初始化程序";Parameters:"/t" |
注意:如果你的程序不接受参数,传递的参数将会被忽略。
WorkingDir
程序在哪个目录启动。如果这个参数未指定则使用Filename 参数中的目录。如果Filename 不包含路径,它将使用默认目录。这个参数可以包含常量。
StatusMsg
仅在[Run] 段有效。由于某些程序在执行期间是不可见的(处于安全或者其他原因),但是又不想让用户以为安装程序没有响应,可以通过该参数指定程序执行时显示在向导页的消息,如果这个参数未指定可是空白的,将使用默认的消息“正在完成安装...”。这个参数可以包含常量。例如下例:
[run] Filename: "{app}\INIT.EXE";Description:"初始化程序"; StatusMsg:"别急,等一下就好" |
则效果如下:
Flags:
这个参数是额外选项设置。多个选项可以使用空格隔开。支持下面的选项:
选项 |
说明 |
hidewizard |
如果指定了这个标记,向导将在程序运行期间隐藏 |
nowait |
如果指定了这个标记,它将在处理下一个[Run] 条目前或完成安装前不等待进程执行完成,不能与waituntilidle 或waituntilterminated 组合使用 |
postinstall |
仅在[Run] 段有效。告诉安装程序在安装完成向导页创建一个选择框,用户可以选中或不选中这个选择框从而决定是否处理这个条目。以前这个标记调用showcheckbox。如果安装程序已经重新启动了用户的电脑 (安装了一个带restartreplace 标记的文件或如果[Setup] 段的AlwaysRestart 指示是yes 引起的),选择框没有机会出现,因此这些条目不会被处理。 |
runhidden |
如果指定了这个标记,它将在隐藏窗口中运行程序。 |
runmaximized |
如果指定了这个标记,将在最大化窗口运行程序或文档 |
runminimized |
如果指定了这个标记,将在最小化窗口运行程序或文档。 |
shellexec |
如果Filename 不是一个直接可执行文件(.exe 或.com 文件),这个标记是必需的。当设置这个标记时,Filename 可以是一个文件夹或任何已注册的文件类型,当使用shellexec 标记时,将不等待,直到生成的进程终止,如果确实需要,则必须添加标记waituntilterminated |
skipifdoesntexist |
如果这个标记在[Run] 段中指定,如果文件名不存在,安装程序不显示错误消息;如果这个标记在[UninstallRun] 段中指定,如果文件名不存在,卸载程序不显示“一些元素不能删除”的警告 |
skipifnotsilent |
仅在[Run] 段有效。告诉安装程序如果安装程序未在后台运行则跳过这个条目 |
skipifsilent |
告诉安装程序如果安装程序在后台运行则跳过这个条目 |
unchecked |
告诉安装程序初始为不选中选择框。如果用户希望处理这个条目,可以通过选取选择框执行,如果postinstall 标记未同时指定,这个标记被忽略 |
waituntilidle |
如果指定了这个标记,它将在未输入期间等待,直到进程等待用户输入,而不是等待进程终止。(调用WaitForInputIdle Win32 函数。) 不能与nowait 或waituntilterminted 组合使用 |
waituntilterminated |
如果指定这个标记,将等待到进程完全终止。注意这是一个默认动作 (也就是你不需要指定这个标记),除非你使用了shellexec 标记,在这种情况下,如果你要等待,需要指定这个标记。不能与nowait 或waituntilidle 组合使用 |
Inno Setup入门(十一)——完成安装后执行某些程序的更多相关文章
- Inno Setup入门(十一)——完成安装后执行某些程序
有些时候我们的程序虽然能够很好的完成安装,但是程序的配置工作可能需要其他的一些程序来辅助完成,如果不执行这些程序,主程序就不能很好的完成工作,甚至不能完成工作,一个很明显的例子是,目前许多程序是通过N ...
- (转)Inno Setup入门(十一)——完成安装后执行某些程序
本文转载自:http://blog.csdn.net/yushanddddfenghailin/article/details/17250901 有些时候我们的程序虽然能够很好的完成安装,但是程序的配 ...
- Inno Setup入门(一)——最简单的安装脚本
地址:http://379910987.blog.163.com/blog/static/3352379720110238252326/ 一个最简单的安装脚本: 1.最简单的安装文件脚本: [setu ...
- Inno Setup入门(十六)——Inno Setup类参考(2)
Inno Setup入门(十六)——Inno Setup类参考(2) http://379910987.blog.163.com/blog/static/33523797201112755641236 ...
- 用Inno Setup来解决.NetFramework安装问题
用Inno Setup来解决.NetFramework安装问题 2010-03-01 09:59:26 标签:.Net Framework Setup 休闲 Inno 原创作品,允许转载,转载时请务必 ...
- Inno Setup技巧[界面]自定义安装向导小图片宽度
原文 blog.sina.com.cn/s/blog_5e3cc2f30100cj7e.html 英文版中安装向导右上角小图片的大小为55×55,汉化版中为55×51.如果图片超过规定的宽度将会被压 ...
- linux下Tomcat 安装后执行startup.sh,出现– Cannot find …bin/catalina.sh
linux下Tomcat 安装后执行startup.sh,出现– Cannot find …bin/catalina.sh 是因为权限不够,执行以下命令就可以: chmod +x startup.sh ...
- MySQL入门——Linux下安装后的配置文件
MySQL入门——Linux下安装后的配置文件 摘要:本文主要了解了在Linux环境下安装MySQL后的配置文件的位置,以及如何创建配置文件. 查看配置文件的加载顺序 找到mysqld的路径 通过wh ...
- Inno Setup入门(九)——修改安装过程中的文字显示
前面说到过可以使用不用的语言文件实现不同的显示方式,方便与国际接轨,事实上即使没有语言文件也可以实现修改.[Messages]段用于定义安装程序和卸载程序中显示的消息.一般不需要创建 [Message ...
随机推荐
- 移动前端开发的viewport总结整理
1.通俗讲移动设备上的viewport就是设备的屏幕上能用来显示我们的网页的那块区域,但不是浏览器可视区域.一般来讲,移动设备上的viewport都要大于浏览器的可视区域.移动设备上的浏览器会把默认的 ...
- 初始hibernate(一)
Hibernate(开放源代码的对象关系映射框架) Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,它将POJO与数据库表建立映射关系,是一个全自动的or ...
- 串口调试,提示the given port name does not start with COM/com异常解决办法,,发现是打印机在搞怪
串口测试时,用到串口,把打印机的拔下来,换上测试的,程序一打开就提示错误:the given port name does not start with COM/com or does not res ...
- ASP.NET-【缓存】-使用ASP.NET缓存
缓存一个List 泛型结构 1.显示 var s = Get("personsl"); foreach (var item in s) { Response.Write(item. ...
- 使用Obsolete特性来标记方法过时或弃用
我们在维护一些老的系统的时候,经常会遇到某个方法不再使用的情况,我们又不能直接将其删除,因为系统中可能还有很多地方有引用它,所以比较安全保险的做法是,使用Obsolete特性来标记它过时或弃用.如下代 ...
- 转载:完全卸载oracle11g步骤
完全卸载oracle11g步骤: 1. 开始->设置->控制面板->管理工具->服务 停止所有Oracle服务. 2. 开始->程序->Oracle - OraHo ...
- bzoj 2244: [SDOI2011]拦截导弹
#include<cstdio> #include<iostream> #include<algorithm> #define M 100009 using nam ...
- Operating System Concepts with java 项目: Shell Unix 和历史特点
线程间通信,fork(),waitpid(),signal,捕捉信号,用c执行shell命令,共享内存,mmap 实验要求: 1.简单shell: 通过c实现基本的命令行shell操作,实现两个函数, ...
- zatree第三方插件
Zabbix安装第三方插件zatree2.4.5 1.下载zatree第三方插件https://github.com/spide4k/zatree.git 2.检查PHP环境需要支持php-xml.p ...
- ASP.NET MVC学习之路由篇(2)
7.解决与物理路径的冲突 当发送一个请求至ASP.NET MVC时,其实会检查网站中存不存在这个请求的物理路径文件,如果存在的话,就会直接将这个物理文件返回.但是有时候我们需要它执行控制器的某个方法, ...