您的位置:首页 > 其它

Installshield 12 中文系列教程 之 Installscript 项目(二)

2008-07-14 17:12 363 查看
×××××××××××××××××××××××××××××××××××××××××××××××
声明:本文为《打包技术网》原创,转载请保留此声明并注明出处,仅供网友学习使用,勿用于商业用途。
作者:棒槌_007
联系方式:QQ 113984419 MAIL:bangchui_007@126.com

说明:本人E文实在一般,文中有翻译不准确的地方,请各位见谅。
×××××××××××××××××××××××××××××××××××××××××××××××

第二步:快捷方式和注册表数据
这个步骤说明如何使用IDE完成:

创建应用程序的快捷方式
创建注册表信息

创建快捷方式

你可以在Shortcuts(快捷方式)视图中创建或修改快捷方式。快捷方式的属性包括显示的名称,它的目标可执行文件及其参数,和显示的图标。使用项目助手,你已经在用户的开始菜单的程序文件夹中为Tutorial App创建了一个快捷方式。

在这一步中你要在用户的桌面上创建一个快捷方式:

1、切换到Shortcuts视图
2、右键单击Desktop图标,选择New Shortcut ,打开Browse forShortcut Target(浏览快捷方式目标)的对话框。
3、在对话框中,从Look in下拉菜单中选择ApplicationTarget Folder,从文件列表中选中Tutorial.exe
4、单击Open按钮关闭对话框
5、用内部名称重命名快捷方式图标,象tutorial

接下来为快捷方式设置下列属性:

特性

备注
Display Name
Tutorial App
IDE环境把显示的名称添加到项目的字符串表,所以这个名字能够很容易的引用到其他的语言中。
Target
<TARGETDIR>/Tutorial.exe
Icon File
<TARGETDIR>/Tutorial.exe
Icon Index
0
Working Directory
<TARGETDIR>
技巧:要为一个用户机器上已有的文件创建快捷方式,输入文件的路径即可,可以使用系统变量来表示文件的路径。比如,要使用用户Windows或着WinNT目录的Windows Notepad程序,输入快捷方式的目标为 <WINDIR>/ Notepad.exe

创建注册表数据

应用程序的另一个公共需求就是要向目标系统的注册表中写入信息。要为一个构件添加注册表数据,你可以使用Registry(注册表)视图。

例如,要在HKEY_LOCAL_MACHINE/Software/TutorialCo/Tutorial/1.00.0000下面添加一个注册表项叫做TutorialData

要建立这个注册表项:

切换到Registry视图
Destinationcomputer's Registry view area(目标计算机注册表区),右键单击Destination Computer选择New Registry Set(新建注册表项)
重命名这个注册表项为tutorial
在这个tutorial注册表项的下面,右键单击HKEY_LOCAL_MACHINE,从New的子菜单中选择Key(键)
重命名这个键为Software
重复这个过程建立名称分别为Tutorial Co, Tutorial, 和1.00.0000的子键
Destinationcomputer's Registry data area,右键单击然后选择New StringValue
重命名这个值为TutorialData
双击这个TutorialData值再Value data中输入<TARGETDIR>
单击tutorial 注册表项,然后Registry SetInstall Conditions(注册表项安装条件)中选择DefaultComponent(默认构件)

在运行时,如果最终用户选择一个安装类型或者自定义的功能部件中包含Tutorial.exe文件,这个注册表值就会添加到目标系统中。

验证创建的快捷方式

要验证你的安装程序创建的快捷方式:

1、重新编译你的项目,使用工具栏Build按钮或者按F7键
2、运行项目,使用Run按钮或者按Ctrl+F5(首先需要从你的系统中卸载已经存在的版本)。这时在你的Start(开始)菜单中的Programs程序目录中将会出现一个Tutorial App的快捷方式。

验证创建的注册表数据

要验证你的安装程序创建的注册表数据:

1、通过快捷方式来运行Tutorial App

2、从Tutorial 菜单中选择VerifyRegistry Data (验证注册表数据)。如果这册表的数据已经创建了,那么将会弹出一个对话框显示<TARGETDIR>的内容。

在教程中的下一个步骤中将会说明如何注册一个COM服务(自注册文件)。

第三步:注册 COM 服务程序

对于大多数文件,安装程序只需要从源安装介质拷贝文件到目标系统。另外的一下,安装程序也只需要在目标系统中注册这些文件。一些特别的文件种类,需要额外的处理是一个selfregisteringfile(自注册文件)

在这个步骤中,你将创建一个构件来安装和注册它使用的Tutorial.ocx和一个HTML文件。

一个COM服务程序通常是DLL文件或.ocx文件,它所需要的附件信息在应用程序和WEB页面使用这个自注册文件之前会被写到目标系统的注册表中。

要添加一个自注册文件:

1、切换到Files and Folders视图

2、在Files and Folders视图的顶部,从Add newcomponents to the feature菜单中选择Program Files功能部件。

3、在Sourcecomputer's folder 面板中,浏览你的原目录找到Tutorial.ocx

4、从Sourcecomputer's folders 面板中拖动Tutorial.ocx文件把它放到Destination computer's folders 面板的 ApplicationTarget Folder在Application Target Folder下面创建了一个SelfRegFiles的构件;这个构件中包含Tutorial.ocx 同时它的自注册属性中设置为Yes ,你可以通过右键单击这个构件选择Properties 来查看这些内容。

接下来为Program Files功能部件的新构件添加HTML文件。

要为Program Files功能部件的新构件添加HTML文件:

1、在Destination computer's folders面板中的Files andFolders视图中,右键单击ApplicationTarget Folder 选择New Component

2、重命名这个部件为OcxHTML

3、从Sourcecomputer's files视图中拖动TutorialCtrl.html到OcxHTML构件中。

重新编译你的版本(按F7),运行安装程序(按Ctrl+F5),你可以验证那些文件是否适当的注册了。

1、从开始菜单中找到Tutorial App的快捷方式或双击它的图标来运行程序。

2、从Tutorial菜单中选择COM Server测试

3、如果COM服务程序已经注册正确,那么HTML页面将显示“success”信息。

在教程的下一步中将示范如何有条件的安装文件。

第四步:条件和特性

安装程序一个公共的需求就是只有当目标系统满足特定条件时才安装指定的文件。例如,文件可能被指定到操作系统或语言,或应只能在用户如果有适当的权限时安装。

要在一个指定的操作系统中安装一个构件(文件和其他数据),你可以使用构件的操作系统属性。你可以打开Setup Design视图,展开相应功能部件找到相关的构件,来修改构件的属性,

要创建一个只能在Windows NT4.0 and Windows 2000系统上安装的构件:

1、切换到Setup Design 视图

2、右键单击HelpFiles 功能部件,选择New Component

3、重命名这个构件为windows_nt_files

4、单击构件的Files 图标,通过右键单击Files 面板中的源文件目录,找到ReadmeNT.txt添加到构件中。

5、单击windows_nt_files构件显示构件的属性列表

6、选择构件的操作系统属性,单击浏览按钮

7、在Operating Systems 对话框中,选择Windows NT 4.0 和 Windows 2000复选框。

8、单击OK

在重新编译(按F7)运行(按CTRL+F5)后,如果目标系统是Windows NT 4.0 或者 Windows 2000 那么构件包含的文件和其他数据都将安装上。

教程的下一步将描述如何修改你的项目脚本。

第五步:使用脚本工作

InstallShield 使用InstallScript语言来驱动安装程序。你可以在InstallScript视图中修改项目的脚本。

技巧:使用CTRL+M来最小化或者还原脚本编辑器。

InstallScript项目脚本使用一种事件驱动模式,通过特定的指令来调用一系列预定的功能。事件处理程序通过内置的事件信息来决定调用那些事件处理功能,参看Global Event Handlers(共用事件处理器)。

在脚本中出现的预定义函数会出现在Functions tree(函数树)。要查看或编辑一个现有函数,从函数树中单击它的名称即可。

事件处理程序函数即使不明确的出现在你的脚本中也会调用。如果一个事件处理函数没有在你的脚本中出现,那么它调用的是默认的代码。

要添加或编辑一个事件处理函数,从脚本编辑器的左侧的下拉列表中选择事件的种类,从右侧的下拉列表中寻则事件的名称,然后事件处理函数就明确的以粗体字显示在脚本编辑器中了。

例如,OnBegin事件函数是程序第一次运行或者维护模式中,安装脚本中调用的第一个函数。

要开始创建函数添加你自己的代码到OnBegin事件处理中:

1、在左边的事件类别列表中选择Before Move Data

2、从右边的事件处理列表中选择Begin

下列内容将将添加到你的脚本中:

//////////////////////////////////////////////////////////////////////
//
// FUNCTION:OnBegin
//
// EVENT: Beginevent is always sent as the first event during
installation.
//
//////////////////////////////////////////////////////////////////////
////////
function OnBegin()
begin

// TO DO: you maychange default non-UI settings, for example
//
// You may alsoperform your custom initialization steps, check

requirements, etc.
end;

在这个OnBegin函数中,你可以添加想在安装开始时执行的任何代码。

使用函数向导

这个例子示范如何使用Function Wizard(函数向导)添加一个调用MessageBox的函数,用来来用户开始安装时显示相关信息。

要在OnBegin函数中添加MassageBox函数:

1、删除在begin和end之间的以//开头的那些行,并将输入光标放到这个位置

2、按Ctrl+I 启动Function Wizard

3、在FunctionCategory(函数类别)列表中,选择Built-indialog box(内置对话框)

4、在Function Name(函数名)列表中,选择MessageBox

5、单击Next

6、在szMsg---包含你想要显示相关信息的区域,输入"Welcometo the Tutorial installation!"(包含双引号)

7、在nType下拉列表中(用来指定你的信息框的类型),选择INFORMATION

8、单击Finish ,将函数调用加入到你的脚本中。

你的OnBegin函数中应该出现了下列内容:

function OnBegin()

begin
MessageBox ("Welcome to the Tutorial installation!" , INFORMATION );
end;

编译脚本

修改脚本后,你必须重新编译脚本使更改生效。要编译脚本可以点击工具栏上的编译按钮,或者从编译菜单中选择编译命理,还可以Ctrl+F7 。编译期间的状态信息将会在IDE的输出窗口中显示。

技巧:如果编译的结果中有错误或者警告信息,你可以双击错误信息,那么相应的产生错误的脚本就会高亮显示出来。


当你运行安装程序的时候,这个消息框就会在欢迎对话框之前显示出来。

只为首次安装显示信息

无论在第一次安装还是维护安装模式,OnBegin函数都会被调用,这意味着不论用户是重新安装还是卸载,提示信息都会出现。要让这个信息只在第一次安装时显示,你可以把MessageBox调用放在一段能够判断用户是否是第一次运行安装程序的语句中。

InstallScript定义了一个系统变量MAINTENANCE ,用它来判断安装程序是否运行在维护模式还是其他模式。要让你的消息框只在第一次安装时显示,按照下列的方式修改OnBegin函数:

function OnBegin()

begin
if (!MAINTENANCE)then
MessageBox("Welcometo the Tutorial installation!", INFORMATION);
endif;
end;

当你编译后再次运行安装程序,这个信息框只会在第一次安装时运行,在维护模式下不会出现。

InstallScript

InstallScript语言包含了超过250个与安装相关的功能函数,象与注册表和INI文件共同起作用,测试目标系统的特征,显示对话框。详细资料和示例参看InstallScript语言参考。

教程的下一步中将说明如何修改安装程序中显示的对话框。

第六步:更改用户界面

这个步骤列举了你可以修改安装中的用户界面的三个办法:

1、基于用户的输入执行不同的操作

2、修改用户界面的关联脚本函数来显示不同的对话框

3、使用Dialog Editor(对话框编辑器)来修改对话框的布局和特性

处理用户输入

在你的InstallScript代码中,在事件处理函数中与对话框显示有关的是:

OnFirstUIBefore 在第一次运行时包含在数据传送之前的所显示的对话框。
OnFirstUIAfter 在第一次运行时包含在数据传送之后的所显示的对话框。
OnMaintUIBefore 在安装维护模式时包含在数据传送之前的所显示的对话框。
OnMaintUIAfter 在安装维护模式时包含在数据传送之后的所显示的对话框。

提示:如果项目的Maintenance Experience(维护)属性设置成“Nouninstall or maintenance”(不卸载或维护),安装中将不会调用OnMaintUIBefore OnMaintUIAfter 事件处理函数。

一个默认的InstallScript项目如果定义了第一次运行安装的用户界面,那么ProjectAssistant 会自动创建OnFirstUIBefore事件处理函数。OnFirstUIBefore是用来调用对话框函数显示你在ProjectAssistant's Installation Interview页中指定的对话框。例如,下列的代码用来显示对话框要求用户输入用户名和公司名称。

szMsg ="";
szTitle ="";
nResult =SdRegisterUser( szTitle, szMsg, szName, szCompany );

最终用户输入的用户名和公司名称赋值到两个变量中,你可以按照你的想法随意使用。比如,创建一个注册表键或者与文件中的信息进行校验。

更改对话框显示

InstallScript语言中包含许多预定义的对话框,你可以在安装程序的用户界面中使用。

要把默认的收集用户信息的对话框替换成提示用户输入序列号的对话框,你可以把SdRegisterUser函数替换成SdRegisterUserEx

1、在InstallScript 视图,从Functions 节点选择OnFirstUIBefore

2、在OnFirstUIBefore()函数之前输入下列内容声明脚本的字符串变量

string szSerial;

3、删除包含调用SdCustomerInformation的这些行。

Dlg_SdRegisterUser:
szMsg = "";
szTitle = "";
nResult = SdRegisterUser( szTitle,szMsg, szName, szCompany);
if (nResult = BACK) gotoDlg_SdLicense2;

4、用系列语句替换

Dlg_SdRegisterUserEx:
szMsg = "";
szTitle = "";
szSerial = "";
nResult = SdRegisterUserEx(szTitle,szMsg, szName,szCompany, szSerial );
if (nResult = BACK) gotoDlg_SdLicense2;

5、把跳转语句从原来的Dlg_SdRegisterUser点转向Dlg_SdRegisterUserEx点。

6、按Ctrl+F7 重新编译脚本。

使用这个方法你可以在安装程序中插入一个附件的对话框或者替换一个现有的对话框。

使用对话框编辑器

Dialog Editor允许你修改安装程序中显示的对话框外观。

前面的步骤说过,终端用户输入的序列号以明文的方式显示在SdRegisterUserEx对话框中。

要修改对话框,把最终用户输入的密码变成隐含的:

1、在Dialogs视图,右键单击SdRegisterUserEx图标选择EDIT

2、选择English(其他语言选择相应的语言版本)图标

3、在Dialog Editor中选择Serial Number标签下面的编辑区

4、把EditPassword 属性从False 改为 True 。

技巧:要最大化对话框编辑器视图,按Ctrl+M


重新编译后,运行程序,用户输入的序列号就变成隐藏的状态了。
技巧:要恢复对话框的默认外观,右键单击对话框图标然后选择Revert Dialog to Default(还原默认对话框)。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: