一个简单的CS系统打包过程图文版
一个简单的CS系统打包过程图文版
1. 打包内容
1.1. 此次打包的要求和特点
- 主工程是一个CS系统;
- 此CS系统运行的先决条件是要有.Net Framework 3.5;
- 主工程安装完成后自动安装系统运行的平台许可管理工具;
- 开始安装时显示许可协议。
1.1. 打包过程流程图
2. 打包软件
2.1. 选择软件
此次打包选择大名鼎鼎的打包软件Installshield。
2.2. 关于版本
- 在网上查了些关于Installshield版本的问题,主要是因为遇到我用的Installshield不支持中文,这个可不是一般的烦人,哪有软件包括的所有文件图片都只是英文和拼音啊,汗!
- 说,Installshield分Professional和Premier版本。到底是不是两个版本都支持中文,在网上查了资料,说法不一,本人没再深究,汗。
- 反正就是,我之前用了一个Installshield 12 Professional Edition不支持中文,那个没用啊;后来找了一个InstallShield 2010 Premier Edition,这回才开始正儿八经的打包中……
3. 打包过程
3.1. 基本打包——打包CS系统
所谓基本的打包过程,就是如果先决环境的.Net 3.5和系统运行需要的许可管理工具都自行另外安装的话,就只需要打包CS系统主工程。这也是此次打包目的安装包的核心系统,遂先实现核心系统的打包。
3.1.1. Create a new project
1. 首先启动 ,然后
2. 新建一个工程
- 新建InstallScript MSI Project类型的工程,如图啥也不说了:
- 上一步完成之后,自动换到Project Assistant选项卡,我们按下面显示条上的顺序实现基本打包过程。
3.1.2. Application Information
1. 点击如上图工具条上的 ,
2. 出现以下界面
3. 此处,具体怎么填写,填写的内容会有什么影响,以及为什么要填写,本人均无深究,只参考前人大神海洋女神的博文招办后如下,或君能效仿之:
(http://www.cnblogs.com/Cindy_weiwei/archive/2009/05/18/1459542.html)
4.继续
3.1.3. Installation Requirement
1. 点击
2. 出现以下界面:
3. 貌似,此页是选择软件安装的先决条件的,若在下面先决软件中选择yes,则可以找到.net Framework 3.5,但是安装.net Framework 3.5并不是只选这一步如此简单。此页暂默认,不设任何先决条件,均选No。.net Framework 3.5的安装稍候叙。
3.1.4. Installation Architecture
1. 点击
2. 出现以下界面,此处定义安装软件时显示的组件结构的;
3. 刚用此软件的我觉得很头大,不知道这是管什么用的。君是否曾见CAD、ArcGIS等庞大软件安装的过程中,出现一系列组件,可以自定义是否安装哪个的。组件有几个,安装过程中显示什么名字就在这里定义,当然我不知道那些个大名鼎鼎的软件具体是如何打包的啊。
4. 此处,本例中,核心的打包工程就是一个,所以最初偷懒此步默认未修改,但是后来发现,若不修改,打包后安装过程中,若选择了“定制”而不是默认安装的话,就会有一个叫“DefaultFeature”的组件出现在用户眼前,让人不知所云,故还是把这个DefaultFeature改了一下名字“主工程”。若君有若干个Feature需要添加,请参考大神们的作品。
5. 继续
3.1.5. Application Files
1. 点击 ,出现以下界面
2. 在这一步添加,要打包的文件和文件夹。
- 左边树状结构表示安装的路径,此处文件夹名字对应第一步Application Information中的公司名字和应用程序名称;如果不想把应用程序装在公司名称文件夹下,在此处直接拖放到Program Files下。
- 用右边的Add Files和Add Folders添加要打包的文件和文件夹。(友情提示:文件和文件夹都可以直接从电脑中拖入。此功能虽小,但在没有发现之前可不是一般的烦人,如果文件夹众多每次要打开一层又一层的目录的说。)
- 具体在添加文件和文件夹的过程中要进行的选择的可能会出现的问题,得视情况解决了。此处不能尽详述。我在添加文件的过程中需要如下图的错误。实践检验选择“否”就可以了,若选择了“是”在打包编译的过程中就会出问题。具体原因不详。
3. 添加文件和文件夹后如下图,若有不止一个Feature则要注意上面下拉框选择的feature与下面添加的文件夹对应,本例中不涉及:
4. 继续
3.1.6. Application Shortcuts
1. 点击 ,出现如下界面
2. 这是因为.exe的文件会被自动识别来创建快键方式。本例中,只需为其中一个exe创建快捷方式,
- 遂在这里删掉其他的exe
- 并为保留的exe重命名(此处什么名字创建出的快捷方式就是什么名字)
- 为exe的快捷方式选择一个.ico图标(此处选择的是上一步添加文件夹中的文件。)
3. 快捷方式的位置调整在Install Designer中进行,如下图,本例中默认不做修改;同样,如果不喜欢公司名称那一层的话可以删掉处理。
4. Application Registry在此例中没有用到,不叙。继续。
3.1.7. Installation Localization
1. 点击
2. 在此步为安装程序选择语言,我是要选择简体中文的。但是之前用那个professional版本确实不给力,什么语言都显示不出来除了English。正常的在左边的框里,应该显示很多种语言,如下图。
3. 至此,本例中的核心系统已经设置完成,可以进行打包了。
3.1.8. Build Installation
1. 点击
2. 如果想要让打包的文件浓缩到一个exe文件中的话就选择Single Executable如下图(之前本人不会弄,没有选这一项,发现打包后还是一堆复制过来的文件和文件夹,其貌万分拖沓。)
3. 进行打包之前可以为安装程序选择一下外观皮肤,如下图。在Installation Designer中找到User Interface下的Dialogue,然后再中间导航树中找到Skin,点击Select按钮即可选择安装程序的外观。
4. 设置完成之后对工程进行下编译Compile,点击工具条中的编译按钮;
5. 点击工具条上的Release Wizard按钮;
- 第一步弹出界面如下图,点击下一步:
- 第二步和第三步,是为生成的打包文件选择路径,测试几次就知道这个选项不同了;
- 第四步,本例中默认
- 第五步,显示打包文件的语言,本例中为中文简体
- 第六步,本例中选择CD-ROM,其他的选项都在什么情况下用,本人不懂。
- 第七步,默认
- 第八步,本例中选择Compress all files,把所有文件压缩到一起的意思。其他也没有深究。
- 此后默认直到完成。
6. 可爱的Installshield软件将为我们打包,请耐心等候。
7. 出现如下提示,即打包完成
8. 在工程文件的目录下找到打包的成果:路径前面为工程的存放目录,后面为在工程中打包成果的存放目录“\工程名\Product Configuration 1\Release 1\DiskImages\DISK1”。DISK1文件夹下的文件就是用提供给用户安装程序用的打包文件:
9. 基本打包完。
3.2. 判断打包先决环境——.Net Framework 3.5
1. 在基本打包工程的基础上进行;
2. 修改Installation Requirement中的先决条件,应用程序中选择.net 3.5 sp1(这里到底是需要什么先决条件,视实际情况);
- 点击
;
- 修改后如下界面:
- 若只做此修改,程序在安装时,若电脑环境中没有.net 3.5 sp1则安装在提示后即自动退出(亲可以自己测试一下)。而我要达到的目的是环境中若没有.net 3.5,则给它安装上。遂还要进行以下步骤。
3. 把.net 3.5 sp1下载到本地:
- 在Installation Designer选项卡中,
- 找到Application Data下面的Redistribute,
- 然后,在右面找到.net 3.5 sp1,勾选上,右键选择Dowload Selected Item,等待下载完成。图示中的此菜单显示灰色是因为我已经下载过了。
- 下载完成后可以看到,.net 3.5 sp1这一条后面变成了Installed Locally。
- 此步整体截图如下:
4. 重新编译并打包,具体步骤同3.1.8所述。
- 编译打包之前,有一个参数需要设置一下。还是在Installation Designer选项卡下,找到Media下的Releases,
- 在中间的导航树中,将要打包到哪个路径下就设置哪个Release。本例中是Product Configure 1下的Release 1,
- 然后,在右边出现的对话框里点击Setup.exe,在最后一行InstallShield Prerequisites Location中后显示的是“Copy From Source Media”
- 这里要说的参数就是这个InstallShield Prerequisites Location,
5.若选择Copy From Source Media,打包后上步下载到本地的.net 3.5 sp1就会复制到打包后的文件中,存放在一个ISSetupprerequisite文件夹中;选择Copy From Source Media打包后的安装程序:
6.若此参数修改为Eatract From Setup.exe,.net 3.5 sp1就会被打包在最终生成的Setup.exe中,看上去和基本打包生成的文件没有区别,只是文件大小改变了。
7.选择Eatract From Setup.exe打包后的安装程序:
3.3. 打包系统自动安装许可管理工具
1.在上一步的工程基础上修改;
2.在Installation Designer选项卡下找到Behavior and Logic下的InstallScript,
3.在中间的导航树上找到Setup.Rul,
4.在右边上面的下拉框中选择After Move Data和OnFirstUIAfter(记得一定要动手选择一下),
5.在下面的脚本代码中出现OnFirstUIAfter函数:
6.在OnFirstUIAfter函数中加入“LaunchAppAndWait (INSTALLDIR^"许可管理工具\\EarthView许可管理工具.exe","", LAAW_OPTION_WAIT);”(当然如果您有很好的研究精神和严谨态度的话,可以把这句话写的更完美点,加上判断文件是否存在等前提。本例这里就此一句了。)
7.此句加在After Move Data,OnFirstUIAfter下是因为本例中想让主工程的文件复制完成之后启动EarthView许可管理工具.exe自动安装,然后结束整个安装过程。具体要自动启动的exe程序加在哪个函数下按实际设计要求来定。
8.此句中exe文件的路径为INSTALLDIR^"许可管理工具\\EarthView许可管理工具.exe",是因为此exe文件在安装目录(“INSTALLDIR”)许可管理工具文件夹下:
3.4. 添加显示安装协议
1. 此节在上一节工程的基础上进行;
2.此节完全是前人的赘述,大神们早已总结过:
http://www.cnblogs.com/Cindy_weiwei/archive/2009/05/19/1460232.html
3.在Installation Designer选项卡下找到Behavior and Logic下的Support Files/Billboards;
4. 在中间导航器中点击Language Independent;
5. 在右面空白处右键点击Insert Files,
6.添加已准备好的安装协议文件,
7. 然后,找到上一节中的Setup.Rul,选择Before Move Data和OnBegin,因为是在安装程序之前显示协议的,
8. 在OnBegin函数中插入代码,如下图所示(大神的博文中有文字版的代码):
9. 最终打包后的安装文件如下图:
4. 安装过程
双击setup.exe开始安装。
一个简单的CS系统打包过程图文版的更多相关文章
- 使用gSoap做一个简单的CS系统
首先介绍一下gSoap,这是一个非常厉害的网络库,封装程度非常高而且跨平台. 支持SSL链接,数据格式为XML. 介绍地址: http://sourceforge.net/projects/gsoap ...
- 20135220谈愈敏Blog3_构造一个简单的Linux系统MenuOS
构造一个简单的Linux系统MenuOS 谈愈敏 原创作品转载请注明出处 <Linux内核分析>MOOC课程 http://mooc.study.163.com/course/USTC-1 ...
- Linux内核分析第三周学习总结:构造一个简单的Linux系统MenuOS
韩玉琪 + 原创作品转载请注明出处 + <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 一.Linux内 ...
- 第三节 构造一个简单的Linux系统MenuOS——20135203齐岳
第三节 构造一个简单的Linux系统MenuOS By 20135203齐岳 Linux内核源代码 arch/ 支持不同cpu的源代码 Documentations/ 文档存储 init/ 内核启动相 ...
- 20135202闫佳歆--week3 构造一个简单的Linux系统MenuOs--学习笔记
此为个人学习笔记存档 week 3 构造一个简单的Linux系统MenuOs 复习: 计算机有三个法宝:存储程序计算机,函数调用堆栈,中断 操作系统有两把剑: 1.中断上下文的切换,保存现场和恢复现场 ...
- Flask学习之旅--用 Python + Flask 制作一个简单的验证码系统
一.写在前面 现在无论大大小小的网站,基本上都会使用验证码,登录的时候要验证,下载的时候要验证,而使用的验证码也从那些简简单单的字符图形验证码“进化”成了需要进行图文识别的验证码.需要拖动滑块的滑动验 ...
- Linux内核设计第三周——构造一个简单的Linux系统
Linux内核设计第三周 ——构造一个简单的Linux系统 一.知识点总结 计算机三个法宝: 存储程序计算机 函数调用堆栈 中断 操作系统两把宝剑: 中断上下文的切换 进程上下文的切换 linux内核 ...
- Linux下一个简单的日志系统的设计及其C代码实现
1.概述 在大型软件系统中,为了监测软件运行状况及排查软件故障,一般都会要求软件程序在运行的过程中产生日志文件.在日志文件中存放程序流程中的一些重要信息, 包括:变量名称及其值.消息结构定义.函数返回 ...
- Linux内核分析— —构造一个简单的Linux系统MenuOS(20135213林涵锦)
Linux内核分析— —构造一个简单的Linux系统MenuOS 实验内容 Linux内核的启动过程,从start_kernel到init进程启动 使用实验楼的虚拟机打开shell cd LinuxK ...
随机推荐
- [Javascript] Functor law
Functor laws: 1. Identity: map(id) == id 2. Composition: compose(map(f), map(g)) == map(compose(f,g) ...
- ios开发——面试篇C语言精华
面试篇C语言精华 1.面向过程:分析解决问题所需要的步骤,然后用函数把这些步骤一步一步实 现. 面向对象:直接描述客观世界的对象及其相互关系.现实世界中任何实体都 可以看作是对象,对象之间通过消 ...
- MHA手动切换 原创4 (非交互式切换)
非交互式切换:不输 YES 或者 NO [root@monitor app1]# masterha_master_switch --conf=/etc/masterha/app1.conf --mas ...
- 隐藏gvim中的工具栏和菜单栏
在vim的配置文件.vimrc中添加如下代码: "Toggle Menu and Toolbar set guioptions-=m set guioptions-=T map <si ...
- SparkStreamingTest.scala
/** * Created by root on 9/8/15. */ import org.apache.spark._ import org.apache.spark.rdd.RDD import ...
- VBA Excel 单元格操作
1. 设置单元格边框: .Range("A3:M" & l + 1).SelectWith Selection.Borders() .LineStyle = xlConti ...
- 实例源码--Android时钟源码
下载源码 技术要点: 1.Android自定义时钟控件 2.源码带有非常详细的中文注释 ...... 详细介绍: 1.Android自定义时钟控件 通过继承视图继承类View进行自定义控制,实 ...
- VS VC++ 设置版本号
我并不是专职的VC++的开发者,只是有时候偶尔要开发一些C++的DLL,每当要发布新版本的时候,隔得时间长一点总会忘记了在那里设置生成文件的版本号. 在这里把VC++设置的步骤记录下来,以备忘! 设置 ...
- objc_msgSend消息传递学习笔记 – 消息转发
该文是 objc_msgSend消息传递学习笔记 – 对象方法消息传递流程 的基础上继续探究源码,请先阅读上文. 消息转发机制(message forwarding) Objective-C 在调用对 ...
- 3905 - Meteor
The famous Korean internet company nhn has provided an internet-based photo service which allows The ...