跟我制作安装包 ----byRuralMouse |
一天下午,某某项目经理找到我,要求我做一个安装包,并和我讨论了所有的约束,下面是我们的对话:
经理:现在忙吗?
我:还行,刚处理完手头的工作,暂时还没有新的安排,有什么事吗?
经理:很好,帮我制作一个FARS比对引擎的安装包。
我:要打包哪些文件?
经理:给,把我的U盘插到你的机器上。
(插U盘)
经理:上面有两个文件夹,分别叫做“比对控制器”和“比对服务器”,这里面所有的东西都需要打在一个 安装包里面。(旁白:文件夹里面的内容如下图所示:)
我:呃,两个文件夹里面有很多相同的文件,为什么要有两个文件夹,什么意思?
经理:是这样的,我们的FARS中,核心比对子系统采用分布式部署,整个系统中只会部署一个比对控制器, 但是可以部署多个比对服务器。整个系统中可能有一台机器上同时部署比对控制器和比对服务器,在制作完成后的安装包 里面要让用户或工程实施人员选择安装哪个模块;为了区分比对控制器和比对服务器必须使用的文件,我根据模块划分 把他们放到了两个文件夹里面,只要把文件夹里面的内容放到客户机器上就是相应的程序。因为比对控制器和比对服务器 有相同的依赖模块,所以两个文件夹里面有相同的内容,在制作安装包的时候不要重复的安装这些文件。
我:哦?就是说安装包里面要运行用户选择要安装的模块,我知道了。还有其他的要求吗?
经理:有,但是,不写脚本的话只能完成这些要求,你先熟悉一下InstallShield,在下一个例子中我们在进行改进。
我:好的,那我开动了。
经理:好。
安装前的设计与准备
这个安装包很简单,只要让用户选择安装什么模块就可以了。我需要做的是在用户做出选择后可以正确的把指定模块需要的 文件拷贝到指定位置。为了避免出错,我建立了一个单独的文件夹叫做Example1用来存放制作安装包所需要的源文件和工程文件。 我没有按照经理给我的文件夹的形式存放源文件,而是在Example1下面建立了三个文件夹:MatchControl用来存放仅用于比对控制器的 源文件,MatchServer用来存放仅用于比对服务器的源文件,Common用于存放这两个模块都需要使用的源文件。做好这些后, 我启动了我的InstallShield。
InstalScript MSI Project向导
在Start Page出现后,我毫不犹豫的点击了Create a new Project,这时弹出了New Project对话框,切换上面的Tab页到Windows Installer选项卡,选中InstalScript MSI Project,在Project Name:下面的编辑框输入了FARSMatchengine,然后在 Location 下面的编辑框中输入了我的Example1文件夹所在的路径,如下图所示,然后断然的点击了OK按钮。
这时InstallShield跳到了project assistant界面,我们今天的例子从这里开始,使用向导可以简化很多操作, 它可以方便的帮助我们实现很多功能,更专业的定制可以通过Installation Designer进行设计。 project assistant界面就是一些箭头,通过点击向左或向右的箭头可以跳到不同的向导界面,也可以直接点击下方一排图标下面的 链接跳到指定的向导界面。初次使用,我们还是按顺序来。
首先点击Application Infomation链接,进入到Application Infomation界面,界面如下图所示,Application Infomation界面 主要用于设置安装包文件setup.exe的属性信息,包括公司信息、软件及版本信息,本例中我们只改变一下公司名称,其余的使用默认。
Installation Requirements界面用于设置安装需要满足的先决条件,在这里可以指定目标机器的操作系统要求,应用软件环境要求, 也可以自定义安装约束,在目标机器上搜索指定文件,本示例采用了所有的默认设置。
切换到Installation Architecture界面,我们要在这里设置安装类型,允许用户选择自己要安装的模块。选择Yes按钮,将Installation Architecture下面的图标命名为MatchEngine,然后两次点击New按钮,在MatchEngine下面添加MatchServer和MatchControl两个选项,并将 MatchServer设置为默认。设置完成后如下图所示:
点击左侧的Setup Design链接,跳转到Installation Designer界面,修改这里的名称与Installation Architecture向导界面一致 并为各个属性添加描述,如下图所示,如果要将每个属性安装到不同的路径可以在最右侧界面的Destination处进行设置。
点击Project Assistant选项卡后接着点击下面的Application Files链接,在这里将FARSMatchEngine拖动到[ProgramFilesFolder] 下面,去掉原来的公司名称文件夹(个人喜好,哈哈)。然后在上面的ComboBox下拉框中依次选择MatchEngine、MatchControl和MatchServer 并相应在右侧添加Example1下面Common、MatchControl和MatchServer下面的文件,通过准备阶段的设计,这里应该不会出现文件选择错误的 问题。
点击Application Shortcuts进入快捷方式选项卡,InstallShield 的向导已经自动为所有的exe添加了快捷方式,我们在这里可以修改 快捷方式的名称、位置和图标,也可以将指定的exe与目标机器上特定的文件扩展名相关联。胡乱的修改了一下快捷方式的名称并添加了 一个卸载的快捷方式,如下图所示,(很丑,我会在后面的例子中进行修改)我离开了这个界面。
Application Registry界面用于在目标机器上写注册表项,本示例没有这个要求,飘过。
Installation Localization界面用于设置安装包界面语言,只选择了“中文(中国)”,完成了这个界面的设计。
终于到了向导的最后一步Build Installation,在这里可以设置安装包最终的形式,我只使用过单文件安装包和CD-ROM两种形式, 顾名思义,前者是将所有的安装包文件打包到一个单一的文件里,后者可以以不同的形式刻录到光盘上,一般会生成一个自启动文件。
切换回Application Files链接,观察右侧的Link To下面的内容,可以看到一些带“<>”的内容,这里指出了源文件的位置信息, 我们可以通过修改其对应的值来修改源文件的位置,在前面的设计中我将源文件与工程文件放到了一起,下面就可以知道我这么做的好处。 点击Installation Designer选项卡,找到Media下面的Path Variables并点击,在右侧Name下面就可以看到尖括号中的名称,仔细观察一下 各个名称的取值,并将Defined Value修改如下图所示。这样无论工程拷贝到什么位置,都可以正常的编译。
至此一个简易的“安装包”就完成了,整个安装工程中有用的文件除了工程文件外都保存在Script Files文件夹下。