InstallShield安装过程介绍

安装包怎么做?首先需要明确安装是什么?

记得从海洋女神的blog上看到这样的描述:"安装的本质,就是拷贝"。

对的,安装就是复制,将你开发调试的环境和代码"复制"到目标机器上。当然这个复制不是简单的将IDE编译生成的代码组件简单的复制到目标机器上这么简单,但是大体上也是类似,这里的复制需要如下的内容:

  • 将生成的模块复制到目标机器上
  • 将引用到的模块复制到目标机器上,
  • 将相关的配置复制到目标机器上

而安装包就是完成将这些内容复制到目标机器上的一个程序.

 

了解了安装的本质之后然我们进入整体,如何利用InstallShield来打包应用程序,创建出你自己的安装包.

首先我们需要下载安装InstallShield,这里我们选择2010Premier版本,不同的版本可能具有不同的限制.

当第一次打开InstallShield你会发现它多少有点类似我们开发人员经常接触的IDE

 

  1. 首先我们来创建一个工程

InstallShield支持很多种不同的工程这里主要介绍两种

    • InstallScript Project
    • Basic MSI Project

这里参考Kevin wang对这两种工程的介绍:

InstallScript脚本语言容易学习。

    1. 这种工程类型中,你可以显示全屏的广告板(背景图)。
    2. 这种工程类型利用了InstallScript脚本语言,能够让你写程序控制安装过程,而不是填写一些表格数据。
    3. InstallScript类型工程比Basic MSI类型的工程更容易学习。InstallScript工程的学习曲线比Basic MSI工程的短很多。
    4. InstallScript允许你在安装之前或之后执行自己的操作,可以利用事件驱动模型,这对于Windows开发是非常有用的。
    5. 如果你在维护一个InstallScript工程,那只能选择InstallScript工程类型。
    6. InstallScript工程没有使用Windows Installer,所以你的安装程序无法进行Windows Vista和Windows 7的Logo认证。

 

Basic MSI工程利用Windows Installer服务来进行安装,以下一些说明也许是你选择Basic MSI工程的理由:

    1. 你的安装程序需要进行Windows Vista和Windows 7的Logo认证。这也是使用Windows Installer的主要需求之一。
    2. 你不想利用脚本语言控制你的安装过程。
    3. 你进行Basic MSI工程的维护工作,不得不选择Basic MSI。
    4. 你想最大化的与Microsoft SMS管理工具兼容。
    5. 学习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 http://msmvps.com/blogs/installsite/default.aspx

Rod Maupin http://www.installationdeveloper.com/

海洋女神 http://www.cnblogs.com/Cindy_weiwei 

奕婷  http://www.cnblogs.com/sabrinahuang/

Kevin wang http://www.cnblogs.com/installshield/archive/2010/06/25/1765043.html

源文档 <http://www.cnblogs.com/installshield/archive/2010/06/25/1765043.html>

 Install Shield用户手册

posted @ 2012-02-06 23:44  Yarkin  阅读(16985)  评论(2编辑  收藏  举报