最早时用过一次的是5.0版本的,后来软件发布就转给另一个同事做了。前段时间,同事离职了,可巧前几天突然要修改一个软件发布包。没办法,拿过来做吧!
这个是当时的参考贴,保留下来,有备无患!
 
摘要
  本篇文档会告诉你如何使用InstallShield开发平台来创建,编译,运行一个安装程序。在这篇文档中你会学习到安装过程中碰到的下面一些内容:加载安装文件,设置快捷方式,修改注册表,条件安装一些文件,注册com组件,更换安装界面,调试以及发布安装程序。
本篇文档主要分下面的6个部分内容:
创建,编译,测试安装的工程 设置快捷方式以及修改注册表 注册COM组件 Conditions and Properties 使用脚本修改安装程序 修改安装界面 下面我们来一步一步地跟我来学习如何制作安装程序
1、创建,编译,测试安装的工程
  这一部分主要讲述如何快速的创建一个安装Project。
1.1创建一个安装的工程
首先来看看InstallShield8.0的开发控制台界面,熟悉一下开发环境。 InstallShield8.0制作自己的安装程序_休闲
图1
  我们可以从文件菜单中选择开始一个新的工程向导,或者可以直接从工具栏中选中开始一个新的工程向导按钮,更直接的就是单击控制台界面上的Start the Project Wizard超链接即可弹出一个创建新工程的对话框如图2,你可以安装提示一步一步地往下走就是了。
InstallShield8.0制作自己的安装程序_休闲_02
图2
单击下一步,给我们的工程设置名称,见图3
InstallShield8.0制作自己的安装程序_软件发布_03
图3
  在上图中,当你输入一个工程的名字并单击下一步的时候,向导就会创建一个ProjectName.ism,被例子中则创建了liqiang_test.ism文件,你在IDE中对工程所做的设置都保存在这个文件中,如果你想将你的工程移植到其他机器上,你只需要将.ism文件复制到其他机器上即可。
单击下一步,选择安装工程的类型,见图4
InstallShield8.0制作自己的安装程序_职场_04
图4
  这个属性页允许你选择创建工程的类型,这里我们选择了InstallScript MSI Project,这种类型的安装程序使用脚本来驱动安装界面,使用windows installer来改变目标系统,比如添加文件,创建快捷方式,修改注册表,关于InstallScript MSI Project和Basic MSI Project两种方式详细的区别,你可以参考帮助文件。
单击下一步,设置应用程序的信息,图5
InstallShield8.0制作自己的安装程序_休闲_05
图5
  你在Application Name中填写的应用程序的名称会出现在安装对话框中,并且你在控制面板的添加和删除程序对话框中显示的名称也就是这个名称。
  还有一个就是设置安装路径,默认的情况下都是安装到C:\Program Files下,但是有一些例外,比如有的系统盘不在C上,为了使安装路径可以动态改变,installshield提供了ProgramFilesFolder属性,这个属性的值在安装的时候动态的初始化为目标系统的Program file 目录。
单击下一步
InstallShield8.0制作自己的安装程序_休闲_06
图6
  这个属性页用来选择是否采用Installshield update service 自动地给你的用户发送更新消息,这里我们没有选择。
单击下一步,填写关于你们公司的信息
InstallShield8.0制作自己的安装程序_职场_07
图7
填写公司的名称和电话,网址等
单击下一步,选择语言
InstallShield8.0制作自己的安装程序_职场_08
图8
单击下一步,添加Features,见图9
InstallShield8.0制作自己的安装程序_职场_09
图9
  我们将缺省的Features删除,添加ProgramFiles and HelpFiles两个Features。
当你的安装程序很多情况下,可以通过这个属性页将你的所有的安装程序分组,然后在安装的过程中,用户可以选择自定义安装方式来自己选择需要安装的内容,这里为了简单举例子,我就分了两组。
单击下一步,将安装文件添加到相应的分组类。
InstallShield8.0制作自己的安装程序_职场_10
图10
单击 Add Files,在弹出的对话框中选择相应的文件,
为了使你的安装工程可以很容易的移植到其他的机器上,工程向导或者IDE对你添加的每一个文件都创建了一个path variable,
InstallShield8.0制作自己的安装程序_职场_11
图11
单击下一步,设置快捷方式,图12
InstallShield8.0制作自己的安装程序_休闲_12
图12
  我们可以在下面的第二部分中可以看到关于设置快捷方式的详细描述,我们不在这一步骤设置快捷方式,单击下一步,
InstallShield8.0制作自己的安装程序_职场_13
图13
通过导入reg文件来修改注册表的键值,直接跳过,关于修改注册表,后面有详细的描述
单击下一步,选择安装的对话框
InstallShield8.0制作自己的安装程序_软件发布_14
图14
  这里你可以选择你安装过程中需要的对话框,向导会自动将你选择的对话框脚本函数添加到工程的脚本中,在第6部分你可以了解到脚本的内容。
单击下一步,选择安装对话的皮肤,见图15
InstallShield8.0制作自己的安装程序_职场_15
图15
这里我选择了Blue,你也可以选择None
单击下一步,进入向导的最后一步,
InstallShield8.0制作自己的安装程序_职场_16
图16
  检查你在向导中设置的选项是否正确,如果确认无误,单击完成,就创建了一个新的安装工程,这个工程一般都在你的机器,我的文档目录下,下面进入第二部分,利用IDE修改我们创建的安装工程
1.2 利用IDE修改安装工程
设置Features的属性
InstallShield8.0制作自己的安装程序_职场_17
图17
Featrues的一些属性如下,你可以分别设置
InstallShield8.0制作自己的安装程序_职场_18
图18
设置安装类型的属性,图19
InstallShield8.0制作自己的安装程序_休闲_19
图19
对应三种安装方式,最小,典型,自定义,你可以分别选择不同的安装组件相匹配。
从IDE中向工程中添加文件
下面我们演示如何向工程中添加文件,
首先打开Files and Folders视图
InstallShield8.0制作自己的安装程序_软件发布_20
图20
  然后从上面的source 文件夹中选中要添加的文件,然后拖动到下面的工程中,然后会弹出一个让你添加路径变量的对话框。
Ok,下面讲述一下如何编译我们的这个安装工程。
1.3 编译安装工程
单击“Build”菜单,如图21
InstallShield8.0制作自己的安装程序_职场_21
图21
选择Realse 向导,弹出下面的对话,单击下一步,按照提示,一路走来。
InstallShield8.0制作自己的安装程序_软件发布_22
图 22
InstallShield8.0制作自己的安装程序_职场_23
图23
在这个属性页中我们可设置我们安装文件的名称,单击下一步
InstallShield8.0制作自己的安装程序_职场_24
图24
这是用来指定一个文件夹名称,你编译出来的安装文件将来就存放在这个文件夹下面。
下面的这个属性页可以直接跳过
InstallShield8.0制作自己的安装程序_休闲_25
图25
InstallShield8.0制作自己的安装程序_休闲_26
图26
上面的这个属性页可以设置语言
单击下一步,进入选择媒体类型的页面,这里我们选择我们安装程序的发布介质,我们选择CDrom,
InstallShield8.0制作自己的安装程序_休闲_27
图27
InstallShield8.0制作自己的安装程序_软件发布_28
图28
单击下一步,
InstallShield8.0制作自己的安装程序_职场_29
图29
Ok,这里我们选择了Compress all Files,
单击next,
InstallShield8.0制作自己的安装程序_软件发布_30
图30
单击下一步,我们来指定如何定位安装源文件
InstallShield8.0制作自己的安装程序_休闲_31
图31
这里我们选择了从我们的安装文件中复制,单击下一步
InstallShield8.0制作自己的安装程序_软件发布_32
图32
这个属性页同上
下一步,用来选择是否要添加NET framework组件。
InstallShield8.0制作自己的安装程序_软件发布_33
图33
这里我们选择不包含net framework。下一步,包含Visual J#
InstallShield8.0制作自己的安装程序_职场_34
图34
单击下一步,进入高级选项选择,图35
InstallShield8.0制作自己的安装程序_休闲_35
图35
呵呵,终于快要大功告成了,单击下一步,检查一下啊我们的选择是否正确,如果正确无误,单击完成,
InstallShield8.0制作自己的安装程序_职场_36
图36
  Ok,至此,单击完成后,我们的工程就会自动编译,在你的安装工程下生成安装文件。目录就是你指定的。Ok,看看我编译的安装文件吧
InstallShield8.0制作自己的安装程序_职场_37
图37
Ok,下面就是运行我们的安装文件了,来吧,试验一下,还有很多功能需要后面添加,,但是这个已经可以安装运行了。
1.4运行安装工程
单击上面的setup.exe文件,就开始运行我们刚制作的安装程序了,
InstallShield8.0制作自己的安装程序_休闲_38
图38
  具体的页面省略了,如果你一路跟我做到这里,我相信你的安装文件也可以运行了,下面我看看如果添加其他的东西,更精彩的内容在后面的呢,如果修改注册表,注册com组件,修改安装界面,等等内容。

2、设置快捷方式以及修改注册表

  先讲一下如何设置快捷方式。下面我在开始的programes菜单中添加Imclient.exe的快捷方式。首先我们在IDE中打开ShortCuts视图,见图39
InstallShield8.0制作自己的安装程序_软件发布_39
图39
  右键单击Programs Menu项,在弹出的菜单中选择New Advertised Shortcut,如图39,然后在弹出的Browse for a Component 对话框中,从列表中选择Imserver.exe。如图40:
InstallShield8.0制作自己的安装程序_职场_40
图40
然后单击Open按钮。设置下面的属性
InstallShield8.0制作自己的安装程序_职场_41
图41
当然,在这里,你还可以根据上面的提示分别设置桌面快捷方式,等等。下面一个内容就是如何修改注册表,假如我们向注册表的 HKEY_LOCAL_MACHINE\SOFTWARE\linkrun\imserver下添加一个liqdata的键:
3、注册COM组件

  对于很多文件而言,安装程序只要将他们从源文件处复制到目标系统中就可以了,但是对于某些文件,安装程序就要在目标系统中注册他们,比如,自注册文件或者ActiveX 控件。下面我演示一下如何在你的安装工程中注册一个G729AEC.dll,一个com组件。
1、首先打开File 和Folders视图如下图
InstallShield8.0制作自己的安装程序_职场_42
图42
2、在Files and Folders视图的上部,Add new components to the feature列表框中选择一个你的安装程序名称。这里我选择client
3、在下面的安装目录上右键单击,在弹出菜单上选择Launch Component wizard项。
InstallShield8.0制作自己的安装程序_职场_43
图43
4、在弹出的添加组件向导中选择“Let me select a type and define the component myself”,单击下一步。
InstallShield8.0制作自己的安装程序_软件发布_44
图44
5、选择你要添加组件的类别,然后写下你的组件的名称
InstallShield8.0制作自己的安装程序_软件发布_45
图45
6、下面选择你的组件在目标机器上的位置你可以选择放到安装目录下,也可以选择放到WinNT系统目录下
InstallShield8.0制作自己的安装程序_软件发布_46
图46
7、单击右侧的浏览按钮,选择你的组件。见图47,48
InstallShield8.0制作自己的安装程序_休闲_47
图47
InstallShield8.0制作自己的安装程序_休闲_48
图48
8、单击完成就将一个com组件添加到安装工程中了
InstallShield8.0制作自己的安装程序_职场_49
图49
Ok,现在运行我们的安装包就可以将G729AEC.dll安装目标机器上,并注册。
4、条件安装
  通常我们在制作安装程序的时候,我们总是要考虑我们程序的运行环境,比如,操作系统的语言,用户是否有权限。
  如果你想在某些特定的操作系统中安装你的程序,你可以通过设置组件的操作系统特性来防止你的程序在其他系统上安装。这个可以在Setup Design视图中完成。
  下面我演示一下,如果创建一个只能安装到Windows NT 4.0 and Windows 2000 systems:下的组件:
1、打开Setup Design视图,图50
InstallShield8.0制作自己的安装程序_职场_50
图50
2、右键单击Client项,在弹出菜单中选择New Component;
3、然后将你新添加的这个组件,改名windows_nt_files
InstallShield8.0制作自己的安装程序_软件发布_51
图51
4、右键单击File面板,添加相应的文件
InstallShield8.0制作自己的安装程序_职场_52
图52
5、右键单击你的文件,将你添加的文件设置为Set Key File。
6、然后将window的操作系统属性设置为Windows NT 4.0 and Windows 2000。这样你的组件就只能安装到Windows NT 4.0 and Windows 2000系统上了。
InstallShield8.0制作自己的安装程序_职场_53
图53
我们还可以设置Windows Installer Conditions来进行条件安装,具体的可以参考帮助文档。
5、使用脚本修改安装程序
  InstallShield开发工具是采用InstallScript语言来运行一个安装程序的,你可以在InstallScript视图中来修改工程的脚本程序。如下图
InstallShield8.0制作自己的安装程序_软件发布_54
图54
  InstallScript MSI脚本语言采用的事件驱动模式,也就是说,所有的函数调用是安装一定的顺序来进行的。
  在你的工程中自己定义的函数都会出现你的函数树上,见上图,你可以单击树上函数名称来编辑或者修改该函数。
  事件处理函数(event-handler functions)是不会出现你的函数树上,但是这些函数你的工程也可以使用,当然,此时我们使用的该函数的缺省代码,如果你想修改某个事件处理函数,你可以从事件列表中选择一个事件比如我们选择(Befor Move Data),然后选择一个关于这个事件的函数(比如Begin),然后这个函数的定义就会出现在你的脚本中,在你的脚本中会出现下面的代码。
InstallShield8.0制作自己的安装程序_软件发布_55
图55
//////////////////////////////////////////////////////////////////////////////   //   // FUNCTION: OnBegin   //   // EVENT: Begin event is always sent as the first event during installation.   //   //////////////////////////////////////////////////////////////////////////////   function OnBegin( )   begin   // TO DO: you may change default non-UI settings, for example   //   // You may also perform your custom initialization steps, check requirements,   etc.   end;
你可以在这个函数执行自己的代码了。
下面我们演示一下如何在这个函数添加一个MessageBox函数。
1、首先将begin和end间的//开头的都删除
2、按下CTRL+I弹出添加函数的向导。
3、在函数的种类列表中,选择“Built-in dialog box”.
4、在函数名称中,选择“MessageBox”.单击下一步。
5、In the szMsg field—which contains the message you want to display—type "Welcome to the Tutorial installation!" (including the quotation marks).
6、In the nType drop-down list—which specifies the type of message box to display—select INFORMATION.
7、Click Finish to paste your function call into the script.
最后,其实就是在你的OnBegin函数中添加了如下的代码:function OnBegin( )
  begin
  MessageBox ( "Welcome to the Tutorial installation!" , INFORMATION   );
  end;
  当你修改了你的脚本时,你就要重新编译它,这样,当你运行安装程序的时候,在弹出欢迎对话框之前就会弹出这个消息框。InstallScript语言包含了大概250个函数用来处理相关的任务,详细内容参见帮助文档。

6、修改安装界面

处理用户的输入:
在你的安装脚本中,所有处理用户输入对话框的显示只在下面的四个函数中出现
OnFirstUIBefore,这个函数里包含了用户第一次安装该程序,在复制文件之前的所有的对话框。
OnFirstUIAfter,这个函数包含用户第一次安装该程序,在复制文件之后所用到的对话框显示
OnMaintUIBefore,这个函数中包含了用户采用maintenance模式安装时,在复制文件之前的所用到的所有的对话框。
OnMaintUIAfter,这个函数中包含了用户采用maintenance模式安装,在复制文件之后所用到的对话框。
对于InstallScript MSI工程来说,其实这里最重要的还是OnFirstUIBefore and OnMaintUIBefore两个函数,用户无论是第一次安装还是maintenance安装,对话框显示都在这两个函数中,
OnFirstUIBefore函数缺省的情形应该像下面这样吧
Dlg_Start:   // beginning of dialogs label   Dlg_SdWelcome:   szTitle = ""   szMsg = ""   nResult = SdWelcome( szTitle, szMsg );   if (nResult = BACK) goto Dlg_Start;     Dlg_SdCustomerInformation:   szMsg = "";   szTitle = "";    nResult = SdCustomerInformation( szTitle, szName, szCompany, nUser );   if (nResult = BACK) goto Dlg_SdWelcome;    
  ok,关于InstallShield8.0的入门就简单介绍到这里,关于安装程序的制作,以后有机会我会写一些更加详细关于InstallShield的帮助文档,如果大家有有什么问题,希望多交流。