Inno Setup入门(十一)——完成安装后执行某些程序

摘要:
StatusMsg仅在[Run]部分有效。如果runhidden指定此标志,它将在隐藏窗口中运行程序。Shelxec如果文件名不是直接可执行文件,则需要此标志。如果安装程序未在后台运行,请告诉安装程序跳过此项。如果安装程序在后台运行,Skipifsilent会告诉安装程序跳过此项。未选中告诉安装程序该复选框最初未选中。不能与nowait或waitunidle组合

有些时候我们的程序虽然能够很好的完成安装,但是程序的配置工作可能需要其他的一些程序来辅助完成,如果不执行这些程序,主程序就不能很好的完成工作,甚至不能完成工作,一个很明显的例子是,目前许多程序是通过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 estipmsg.exe"; DestDir: "{app}";Components:main

Source: "F:desktop estinit.exe"; DestDir: "{app}";Components:main

Source: "F:desktop estin.dat"; DestDir: "{app}";Components:data

Source: "F:desktop esthelp.chm"; DestDir: "{app}" ;Components:help

Source: "F:desktop est eadme.txt"; DestDir: "{app}";components:help;Flags:isreadme

[run]

Filename: "{app}INIT.EXE";

测试上面代码生成的打包文件,运行到最后出现finish之前,将会出现如下画面,后面的安装程序将挂起,等待run段下的程序执行完毕后方可继续运行。

Inno Setup入门(十一)——完成安装后执行某些程序 - Castor - 趁年轻,多折腾~~

聪明的读者可能已经想到,使用该方法也可以实现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:"别急,等一下就好"

则效果如下:

 

Inno Setup入门(十一)——完成安装后执行某些程序 - Castor - 趁年轻,多折腾~~

Flags:

这个参数是额外选项设置。多个选项可以使用空格隔开。支持下面的选项:

选项

说明

hidewizard

如果指定了这个标记,向导将在程序运行期间隐藏

nowait

如果指定了这个标记,它将在处理下一个[Run] 条目前或完成安装前不等待进程执行完成,不能与waituntilidlewaituntilterminated 组合使用

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入门(十一)——完成安装后执行某些程序》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇linux中查看nginx、apache、php、mysql配置文件路径Ajax基本知识点(学习笔记)下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

随便看看

element 导航菜单 控制路由跳转

处理中心<我的平台<templateslot=“title”>选项1<el menu itemindex=“2-4-3”>选项3<消息中心<el menu itemindex=“4”>//www.ele.me“rel=”externalnofall...

java.net.URISyntaxException的解决办法

直接采用Stringurl=“http:count=1”;HttpGethttpget=新的HttpGet(url);HttpResponseresponse=client.execute(httpget);例如,“|”&因此,不能直接使用String而不是URI来访问。然后我们可以使用URL生成URI的方法来解决这个问题。代码如下:URLu...

bootstrap删除模态框弹出并询问是否删除【通用删除模态框】

divclass=“模态对话框”>divclass=“modal header”>spanaria hidden=“true”>h4class=“模态标题”>divclass=“modal body”>divclass=“模态页脚”>...

Windows系统下MySQL添加到系统服务方法(mysql解压版)

您可能感兴趣的文章:Windows7中配置安装MySQL5.6解压缩版windows下安装、卸载mysql服务的方法Mysql5.7.11在windows10上的安装与配置(解压版)在Windows10上安装解压缩版MySql(推荐)Windows安装MySQL5.7.18解压版的教程windowsserver2016安装MySQL5.7.19解压缩版教程详...

删除隐藏网卡(本机IP地址被占用)4个方法

关闭注册表,重新启动windowsxp或重新登录,在设备管理器中单击查看->显示隐藏设备,展开“网络适配器”卸载原来的老网卡,在重设IP就不会显示IP地址被占用了。方法2:要删除系统中隐藏的网卡,我们必须运行regedit打开注册表编辑器,找到HKEY_LOCAL_MCHINE\SYSTEM\CurrentControlSetControl\Network\...

C#实现图片的无损压缩

//////图像缩略图处理//////图像源数据///压缩质量1-100///缩略图的宽///缩略图的高///publicstaticbyte[]ConvertToThumbnail{byte[]bs=null;try{if(bytes!...