InstallShield打包实例.docx

上传人:b****2 文档编号:557162 上传时间:2023-04-29 格式:DOCX 页数:50 大小:725.33KB
下载 相关 举报
InstallShield打包实例.docx_第1页
第1页 / 共50页
InstallShield打包实例.docx_第2页
第2页 / 共50页
InstallShield打包实例.docx_第3页
第3页 / 共50页
InstallShield打包实例.docx_第4页
第4页 / 共50页
InstallShield打包实例.docx_第5页
第5页 / 共50页
InstallShield打包实例.docx_第6页
第6页 / 共50页
InstallShield打包实例.docx_第7页
第7页 / 共50页
InstallShield打包实例.docx_第8页
第8页 / 共50页
InstallShield打包实例.docx_第9页
第9页 / 共50页
InstallShield打包实例.docx_第10页
第10页 / 共50页
InstallShield打包实例.docx_第11页
第11页 / 共50页
InstallShield打包实例.docx_第12页
第12页 / 共50页
InstallShield打包实例.docx_第13页
第13页 / 共50页
InstallShield打包实例.docx_第14页
第14页 / 共50页
InstallShield打包实例.docx_第15页
第15页 / 共50页
InstallShield打包实例.docx_第16页
第16页 / 共50页
InstallShield打包实例.docx_第17页
第17页 / 共50页
InstallShield打包实例.docx_第18页
第18页 / 共50页
InstallShield打包实例.docx_第19页
第19页 / 共50页
InstallShield打包实例.docx_第20页
第20页 / 共50页
亲,该文档总共50页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

InstallShield打包实例.docx

《InstallShield打包实例.docx》由会员分享,可在线阅读,更多相关《InstallShield打包实例.docx(50页珍藏版)》请在冰点文库上搜索。

InstallShield打包实例.docx

InstallShield打包实例

第一部分:

基本设置1

新建InstallscriptMSIProject1

引导动作条2

1.ApplicationInformation2

2.InstallationRequirement3

3.InstallationArchitecture3

4.ApplicationFiles5

5.ApplicationShortcuts7

6.ApplicationRegistry9

7.InstallationLocation10

8.BuildInstallation11

第二部分:

XML文件修改11

第三部分:

自定义对话框16

第四部分:

安装windows服务18

一、脚本方式18

二、视图配置方式21

添加InstallService组件21

添加ControlService组件24

第五部分:

脚本编程26

Setup.rul文件头部27

OnFirstUIBefore28

OnFirstUIAfter31

SetTomportInfo34

完整脚本代码36

第六部分:

参考文章43

注:

我使用的是Installshield2010PremierEdition,安装后自行汉化,所以有部分截图有中文;

2010SP1的官方下载地址:

第一部分:

基本设置

新建InstallscriptMSIProject

打开Installshield2010PremierEdition,新建一个InstallscriptMSIProject,这种被称之为半脚本程序,因为兼具BasicProject基本类型和InstallscriptProject全脚本类型两者的优点。

选择类型为WindowsInstaller|InstallScriptMSIProjcet,输入工程名,指定工程所在的文件夹。

界面会切换到ProjectAssistant,我们先从这里开始把工程的基本组件和基本文件建立好。

引导动作条

在ProjectAssistant界面的底部,会有一个引导动作条,在建立该工程的基本结构和文件时,我们都将在此界面进行操作,下文都将以“引导条”来指代这个引导动作条。

1.ApplicationInformation

这里输入:

公司名,公司名将会出现在Setup.exe的注解中

软件名,将会出现在安装过程的左上角标题栏上

版本号,软件版本

公司网址,必填

选择一个图标,这个图标会出现在“添加或删除程序”里,一般用默认的,当然可以替换成自己想要的图标。

2.InstallationRequirement

这里选择对操作系统和一些软件的需求。

根据自己需要来选择是否要求操作系统的版本,以及是否要求安装了某些软件。

3.InstallationArchitecture

这是个十分有用的设置,对于本文所用的分布式软件来说非常合适,分布式软件的每个组件可以设置为一个Feature,用户可以自由选择安装某些功能。

将选项DoyouwanttocustomizeyourInstallation选择为Yes。

点击选中根节点InstallationArchitecture,点击New创建新的Feature,可以为每个Feature指定新名称。

还可以在Feature下创建子Feature,比如如果文档Feature下包括软件本身文档,和软件所需的运行环境的文档,那么可以创建两个子Feature,分别包含两种文档,用户在安装时就可以选择安装部分或者全部文档了。

这里我们没有用到子Feature,用途和普通Feature一样。

这里,建立好所有Feature后,我们将切换到InstallationDesigner做一个设置

找到InstallationDesigner页面上左边导航树Organization|Features分支,你会看到这里Features都显示为原始的名称,而非我们改过的名字,因为Feature有Name和DisplayName两种名称,我们刚才改的不过是DisplayName,为了便于查看和使用,我们在这里把Name也改一下。

注意:

Name不可以有空格,可以使用下划线。

4.ApplicationFiles

我们将在这里对安装路径进行微调,并且为每个Feature指定需要安装的文件。

这里不想使用ProgramFiles|CompanyName|ProductName这个路径,想使用ProgramFiles|ProductName,直接点击选中MyProductName[INSTALLDIR]拖动到ProgramFileFolder下,还可以直接将MyProductName改成自己想要的文件夹名字,这里改为CKMH。

接下来,为每个Feature指定要安装的文件。

打开下拉列表,所有的Feature都在这里,按顺序来给每一个Feature建立文件夹,并且导入所需的文件。

选择一个Feature,即ckmh,点击CKMH[INSTALLDIR]节点,右键点击,在菜单上选择NewFolder来创建一个文件夹。

创建一个tomcat7文件夹,依次创建文件夹及子文件夹,然后为该Feature添加安装时该Feature要安装的文件。

点击选中要添加文件的文件夹,然后点击右下角的AddFiles,然后添加文件。

接下来为Feature添加文件夹,如果这个文件夹中的全部文件都为这个Feature所需。

添加文件夹的好处在于只要文件夹位置和名称不变,那么文件夹里面的文件都是动态加载的,有多少加载多少,不用考虑文件名的改动带来的影响。

点击选中要添加文件夹的文件夹,然后点击右下角的AddFolders,然后添加文件夹。

选中文件夹,点击确定。

会询问你是否要使用动态文件链接,选择确定,好处就在于刚才上面所述。

显示了源文件夹,如果这个文件夹下有子文件夹,并且也需要一并添加进来的话,务必钩选Includesubfolders选项。

这里还允许做一些简单设置来包含或者排除一些特定文件,支持通配符。

点击OK确定加入文件夹。

如法炮制为每个Feature建立文件夹,并且添加文件。

5.ApplicationShortcuts

接下来为可执行文件创建快捷方式。

点击New新建一个快捷方式

选择一个要建立快捷方式的Feature。

如果要建立快捷方式的程序为非.exe形式,请把FilesOf选择选为AllFiles(*.*)格式。

程序安装目标路径设置在ProgramFiles下,因此双击[ProgramFilesFolder]打开,层层点击进入。

这里要为startup.bat建立一个快捷方式。

选中快捷方式,点击Rename,并且为这个快捷方式改一个适当的名字。

Installshield可以自动监测到.exe文件的存在,自动生成快捷方式,用户只需要做一些适当修改即可。

免安装版Tomcat7的bin目录下有tomcat7.exe、tomcat7w.exe两个.exe文件,Installshield会自动为其创建快捷方式,这里已被移除,以下是创建好的快捷方式。

注意右边的几个选项。

CreateshortcutinStartMenu,将在开始菜单里创建一个快捷方式。

CreateshortcutonDesktop,将在桌面上创建一个快捷方式。

UsealternateshortcutIcon,替换快捷方式的图标。

Associateafileextensionwiththeshortcut’starget,没用过,不知道什么意思。

再切换去InstallationDesigner,找到SystemConfiguration|Shortcuts。

看到快捷方式在开始菜单中是以 公司名 | 软件名 | 快捷方式 这种形式存在的,这里改成了如下设置:

直接拖动CKMH文件夹往ProgramMenu(即开始菜单下的那个“所有程序”)下一塞即可,然后删除掉多余的CompanyName文件夹。

可能刚才在ProjectAssistant界面有人已经注意到了左边栏上MoreOptions下Createanuninstallationshortcut这个诱人的字样了。

如果选择了这种方式建立卸载快捷方式的话,会很沮丧地发现:

a)似乎只有在安装某个feature的时候这个卸载快捷方式才会出现(当然,就是那个defaultfeature,这种要命的feature形式决定了每个文件或者快捷方式都必须明确地归属到某个feature下),因此,当客户只选择了其他feature安装时,这个卸载方式不会出现,而他必须去“添加或卸载程序”里面去卸载。

b)如果写脚本使得安装时会拷贝一些外部文件进来,那么这些文件在这种卸载方式下是删除不掉的。

(如果确实想保存这些文件,可以在脚本里设置它们属性为permanent,这个属性可以保证什么卸载方式都不能删除你的这些文件)。

可以根据软件情况选择这种卸载快捷方式,或者采用后面脚本形式实现的卸载。

6.ApplicationRegistry

向注册表写键和键值。

有需要的朋友可以查阅相关资料。

在脚本中有一段修改注册表的代码:

7.InstallationLocation

这个是用来设置安装包的语言。

这里没有改动,使用默认的简体中文。

8.BuildInstallation

选择要创建的安装映像类型。

至此,第一部分基本完成。

如果是一些没有特别要求的安装包,这部分讲解的内容足够可以做一个基本的安装包了。

第二部分:

XML文件修改

以修改tomcat7\conf\server.xml为例:

找到InstallationDesigner页面上左边导航树SystemConfiguration|XMLFileChanges节点,打开XML文件更改界面,

导入原始XML文件,右键点击根节点XMLFile,选择Import,打开导入向导界面,

点击Browse,选择需要导入的XML文件,Next>

选择XML元素,这里全选,点击Import,

点击完成,即可看到导入的XML文件,选中导入的server.xml文件,右侧有配置项,

在General页签,指定该文件在安装文件中的位置,以及所属Feature;

左侧树展开server.xml文件,显示所有元素,以Connector元素的port属性为例,右侧General页签中,其默认值为8080,这里将其改为:

[TOM_PORT],(带有括号)。

TOM_PORT是BehaviorandLogic|PropertyManager下已经存在的属性。

注:

属性定义必须大写,原因不知。

自定义安装界面(参考第三部分)获取用户输入的端口号,通过脚本为该属性赋值,进而改变XML文件中的值。

注:

脚本中的数字‘1306’是自定义安装界面中输入框的ControlIdentifier。

以上为修改XML文件元素属性值,如果是修改元素内容,例如:

修改dsn.xml文件中name元素的内容,在右侧Advanced页签中,选中Setelementcontent,设置元素内容,在输入框中输入已定义的属性,如:

[NAME],要加方括号,并通过脚本为该属性赋值。

第三部分:

自定义对话框

找到InstallationDesigner页面上左边导航树UserInterface|Dialogs节点,打开Dialog视图。

1.在Dialogs视图中,右键AllDialog,选择新建对话框(NewDialog);

2.创建一个空白对话框,命名为Tomport.

3.双击MyDlg下的子项即可进入对话框的编辑模式;

注意:

点击窗体,显示右侧属性ResourceIdentifier需要根据需要自己定义,此值会在代码中使用到;需特别注意,为防止与其他的Id冲突,可设置较大一点,其后的ID会根据此ID自动递增。

4.工具栏有各种对话框组件,在工具栏上选择组件,然后在对话框界面上拖拉出相应组件,这里添加一个文本域和一个输入框,右侧可以修改组件属性,注意一下这里的ControlIdentifer属性值,后面脚本中会用到。

其ControlIdentifier值会根据ResourceIdentifier自增(窗体的Id叫ResourceIdentifier,而组件的Id就称为ControlIdentifier)然后根据实际需要设计窗体布局。

其他的组件,如:

上一步、下一步等,我是从其他已有的对话框中复制过来的,根据需要稍作修改,按钮的ControlIdentifier值要与其他对话框一样,否则不起作用,不清楚为什么。

注意:

在dialog中必须添加一个ControlIdentifier为2的控件,否则点击右上角Closebutton的时候,是没有响应的。

界面部分已经完成,还需要写相应脚本,初始化对话框,给文本框赋值,或从文本框取值,具体脚本在第四部分》SetTomportInfo。

第四部分:

安装windows服务

1、脚本方式

以Tomcat7注册为windows服务为例,将服务设置为开机启动,安装完成后启动该服务,脚本代码如图:

代码写在OnFirstUIAfter事件中,详细代码见第五章脚本编程》OnFirstUIAfter。

此处是利用免安装版Tomcat自带的service.bat批处理文件,注册服务,将Tomcat注册为windows服务,建议使用脚本方式,视图配置方式不太好用。

代码解释:

1 szRegTomcat=INSTALLDIR^"tomcat7\\bin\\service.bat";

INSTALLDIR表示安装路径,tomcat7\bin\service.bat为安装文件(根据实际安装文件目录修改),并且该文件一定要放到SUPPORTDIR文件夹去,方法如下:

找到InstallationDesigner页面上左边导航树BehaviorandLogic|SupportFiles/Billboards节点,将service.bat文件放到SupportFiles/LanguageIndependent下。

2 nAddServer=LaunchAppAndWait(szRegTomcat,"install",WAIT);

执行批处理文件,第二个参数"install"为执行时的参数,表示安装服务,如果返回值小于0,表示安装失败。

3 MessageBox("添加Tomcat服务出错",SEVERE);

消息弹框。

4 RegDBSetDefaultRoot(HKEY_LOCAL_MACHINE);

szKeyRoot="SYSTEM\\CurrentControlSet\\Services\\Tomcat7";

RegDBSetKeyValueEx(szKeyRoot,"Start",REGDB_NUMBER,"2",-1);

修改注册表,服务安装后,启动类型默认为手动,修改注册表将启动类型改为自动,注册表位置HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tomcat7,将Start的值改为2(其中2为Automatic自动,3为Manul手动,4为Disabled禁用)。

5 ServiceStartService("Tomcat7","");

启动服务。

注:

‘Tomcat7’为服务名,此名称为service.bat文件中的默认服务名,且与tomcat7\bin目录下的tomcat7.exe、tomcat7w.exe显示名称一致,否则tomcat7.exe、tomcat7w.exe无法使用。

服务安装完成后,要为该服务添加一个控制组件,针对该服务配置组件安装完成和卸载时触发的事件,方法类似下面视图方式的添加ControlService组件,具体步骤如下:

1 导航树Organization->SetupDesign节点,在左边工作区,右击服务所在feature,选择ComponentWizard:

2 进入Wizard后,选择第2项:

Letmeselectatypeanddefinethecomponent:

3 设置组件名称,选择ControlService:

4 选择Serviceispresentontargetsystem,输入上面安装的服务名称Tomcat7:

5 组件安装完成后触发的事件,这里选择Noevent(donothing)。

如果脚本中没有写安装完成启动服务的代码,可以在这里配置,选择Starttheservice。

6 设置在组件被卸载的时候触发的事件,这里设置停止并删除服务:

7 设置安装和卸载时,进程的等待状态,选默认就可以了,下一步到完成。

二、视图配置方式

添加InstallService组件

1 找到InstallationDesigner页面上左边导航树Organization->Components节点:

2 在左边工作区,右击Components,选择ComponentWizard:

3 第一个对话框是要求建立feature的,这里点Yes就可以了,我选择了叫它在需要的时候自动生成feature;

注:

如果要在已有的feature下新建InstallService组件或ControlService组件,①-

会有不同,导航树Organization->SetupDesign节点,在左边工作区,右击目标feature,选择ComponentWizard,后续步骤相同。

4 进入Wizard后,选择第2项:

Letmeselectatypeanddefinethecomponent:

5 设置组件名称,选择InstallService:

6 在ServiceExecutable里,选择要安装的windowsservice文件,在Services里,点Add按钮,添加这个文件包含的服务,这里写的服务名称要和程序里的对应:

7 设置DisplayName,按自己的服务设置ServiceType:

8 设置服务的启动方式,这里设置的是随机器启动:

Automaticallywhenthesystemstartsup:

9 下一步,下一步,设置服务启动出错的时候要做什么操作,后面的就一直下一步到完成:

注:

如果要修改所加服务组件的‘可执行文件路径’,可在组件的信息界面更改‘destination’:

按这种方式安装Tomcat服务后,打开Tomcat7w.exe,会发现需要的配置信息都是空的,且服务无法启动,所以安装Tomcat服务推荐使用脚本方式。

其他服务视情况而定。

添加ControlService组件

1 重复上面①-④;

2 设置组件名称,选择ControlService:

3 选择该组件要控制的服务,这里直接选择Serviceisincludedinthissetup,选择刚才添加的服务,就是说这个组件要控制的服务是刚才添加的组件里的服务:

4 设置在组件安装完后要触发的事件,这里设置为启动服务:

5 设置在组件被卸载的时候触发的事件,这里设置停止并删除服务:

6 设置安装和卸载时,进程的等待状态,选默认就可以了,下一步到完成。

 

第五部分:

脚本编程

找到InstallationDesigner页面上左边导航树BehaviorandLogic|Installscript节点,进入脚本编程视图。

下面就是脚本的主要实现:

脚步主要包括六个部分,即六个事件处理过程:

OnBegin

OnEnd

OnFirstUIAfter

OnFirstUIBefore

OnMainUIAfter

OnUninstall

这六个事件都是自动生成的,需要特殊的处理就在事件里面写脚步就可以了。

下面就是具体的脚本,全都在Setup.rul文件中,用到OnFirstUIAfter、OnFirstUIBefore,及自定义对话框出处理函数SetTomportInfo:

Setup.rul文件头部

//===========================================================================

//

//FileName:

Setup.rul

//

//Description:

Blanksetupmainscriptfile

//

//Comments:

Blanksetupisanemptysetupproject.Ifyouwantto

//createanewprojectvia.step-bystepinstructionsusethe

//ProjectAssistant.

//

//===========================================================================

//Includedheaderfiles----------------------------------------------------

#include"ifx.h"

//Note:

InordertohaveyourInstallScriptfunctionexecutedasacustom

//actionbytheWindowsInstaller,itmustbeprototypedasan

//entry-pointfunction.

//ThekeywordexportidentifiesMyFunction()asanentry-pointfunction.

//TheargumentitacceptsmustbeahandletotheInstallerdatabase.

/*exportprototypeMyFunction(HWND);*/

exportprototypeSetTomportInfo(BYREFSTRING,BYREFSTRING);

OnFirstUIBefore

此处定义安装界面需要展示的对话框,及对话框出现的顺序。

functionOnFirstUIBefore()

NUMBERnResult,nSetupType,nvSize,nUser;

STRIN

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > IT计算机 > 电脑基础知识

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2