安装包怎么做?首先需要明确安装是什么?
记得从海洋女神的blog上看到这样的描述:"安装的本质,就是拷贝"。
对的,安装就是复制,将你开发调试的环境和代码"复制"到目标机器上。当然这个复制不是简单的将IDE编译生成的代码组件简单的复制到目标机器上这么简单,但是大体上也是类似,这里的复制需要如下的内容:
- 将生成的模块复制到目标机器上
- 将引用到的模块复制到目标机器上,
- 将相关的配置复制到目标机器上
而安装包就是完成将这些内容复制到目标机器上的一个程序.
了解了安装的本质之后然我们进入整体,如何利用InstallShield来打包应用程序,创建出你自己的安装包.
首先我们需要下载安装InstallShield,这里我们选择2010Premier版本,不同的版本可能具有不同的限制.
当第一次打开InstallShield你会发现它多少有点类似我们开发人员经常接触的IDE
- 首先我们来创建一个工程
InstallShield支持很多种不同的工程这里主要介绍两种
-
- InstallScript Project
- Basic MSI Project
这里参考Kevin wang对这两种工程的介绍:
InstallScript脚本语言容易学习。
-
- 这种工程类型中,你可以显示全屏的广告板(背景图)。
- 这种工程类型利用了InstallScript脚本语言,能够让你写程序控制安装过程,而不是填写一些表格数据。
- InstallScript类型工程比Basic MSI类型的工程更容易学习。InstallScript工程的学习曲线比Basic MSI工程的短很多。
- InstallScript允许你在安装之前或之后执行自己的操作,可以利用事件驱动模型,这对于Windows开发是非常有用的。
- 如果你在维护一个InstallScript工程,那只能选择InstallScript工程类型。
- InstallScript工程没有使用Windows Installer,所以你的安装程序无法进行Windows Vista和Windows 7的Logo认证。
Basic MSI工程利用Windows Installer服务来进行安装,以下一些说明也许是你选择Basic MSI工程的理由:
-
- 你的安装程序需要进行Windows Vista和Windows 7的Logo认证。这也是使用Windows Installer的主要需求之一。
- 你不想利用脚本语言控制你的安装过程。
- 你进行Basic MSI工程的维护工作,不得不选择Basic MSI。
- 你想最大化的与Microsoft SMS管理工具兼容。
- 学习Basic MSI工程需要更长时间的学习曲线。
简单来讲
-
- InstallScript需要自己来对安装的走向通过编写InstallScript的方式进行调度,所以该工程的有点就是比较容易控制,但是相应的编码工作量比较大,但是只要掌握了InstallScript基本上就掌握了该类型项目的安装包制作.
- Basic MSI执行过程则由Windows Installer驱动msi来一步步执行安装过程.相对来说Basic Msi工程的优点是界面有现成的可以借用,之需要在需要控制的过程进行编码即可,但是因为该工程由Windows Installer驱动所以需要理解Windows Installer的一些知识,同时对msi的原理也要有相应的理解才能比较好的掌握基于Basic Msi工程的安装包开发.
在理解了InstallShield提供的工程类型的基本原理之后,然我们来动手实践一下,这里将使用Basic MSI的工程类型来进行演示.
1,基本安装操作
首先设定要要安装的内容,需要将哪些程序发布到目标机器中?
这里我们就演示发布一个txt文件为例.应用程序只是需要将需要引用的模块同时发布到目标机器中即可.
接着开发应用程序一样,首先我们需要创建一个InstallShield工程项目,这里选择Basic Msi Project.
输入基本内容信息
按照向导一步步填写
添加发布内容
如果不需要任何自定义操作,则不需要编写任何InstallShieldScript
2,添加自定义控制
首先需要添加脚本,这里编写一个简单的Hello Msi弹出窗口
在Designer tab页中选择InstallScript
在右侧的Files中右键添加Script File来添加一个脚本文件
添加如下脚本
export prototype MyFunction(HWND); //如果该函数需要供事件处理直接调用需要如此声明,且参数必须为HWND
//如果内部调用则之需要如下声明
/
function MyFunction(hMSI)//对应声明中的HWND用于标示MSI的Handle
// To Do: Declare local variables.
STRING szMsg;//局部变量声明
begin
// To Do: Write script that will be executed when MyFunction is called.
szMsg = "This will install Example Program.";
MessageBox (szMsg, INFORMATION);
end;
将脚本绑定到事件处理中
选择Customer Action栏
选择右侧的Customer Actions右键点开Wizards将会弹出相应的向导
输入名称备注
选择InstallScript类型
选择添加的函数
一路Next,完成之后将会在Customer Actions中显示你添加的名称
将User Interface->InstallWelcome点开右键Edit Behavior(编辑事件处理),Edit Layout(编辑外观)选择Edit Behavior
选择Next PushButton
在右侧的列表框中添加一个新的Action:
Event | DoAction |
Argument | 选择Customer Actions下的自定义名称 |
Condition | 选择1(总是执行) |
编译点击Test User Interface 测试运行
在欢迎界面中点击下一步将会弹出"This will install Example Program."
3,发布
选择Build Project即可完成发布
OK,大功告成,InstallShield安装包的打包流程就介绍到这里了.详细的信息请参考如下资料
参考资料
Stefan Krueger
Rod Maupin
海洋女神
奕婷
Kevin wang
源文档 <>
Install Shield用户手册