制作安装程序是数据库软件开发的最后一步,InstallShield无疑是众多可选工具中的佼佼者。它除了提供直观方便的向导外,还提供内容丰富的编程。利用这种类似VC的脚本语言可以创建功能强大的安装程序。
在很多情况下,没有必要自己动手编写代码,只需从InstallShield的帮助文件中把示例代码复制过来,稍加修改就可使用。当利用Project Wizard创建一个新的项目,就会生成一个脚本文件Setup.rul,它只是一个框架,功能仅限于将所选的组件(Components)复制到指定的位置。本文介绍如何以最少的代码完善Setup.rul的功能。
一、验证序列号
在使用Project Wizard时,选择用户信息(User Information)对话框,它将在ShowDialogs函数中显示:询问用户名、公司名、序列号。可在此对话框显示之后判断序列号的有效性,以决定是否继续安装。
Dlg_SdRegisterUserEx:
nResult=DialogShowSdRegisterUserEx();
if (nResult=BACK) goto Dlg_SdLicense;
if (svSerial!=″35296-0017544-62261″) then
//如果序列号与给定值不匹配
MessageBox(″Serial Number is incorrect!″,SEVERE);
Exit; //退出安装
endif;
二、安装时播放声音
PlayMMedia (MMEDIA_MIDI , ″c:\\\\Windows\\\\Temp\\\\_istmp0.dir\\\\start.mid″,
MMEDIA_PLAYCONTINUOUS, 0);
//连续播放MIDI文件
三、显示图片
安装程序在运行的过程中可以显示一些图片来介绍软件的新特性,这在InstallShield中称为BillBoards,可显示的图片类型为wmf、bmp、dib。自动显示图片的方法是把图片命名为Bbrdn.bmp(其中n为序数1,2,3…),并将它们加到Setup Files面板中。若你的软件可能安装到低分辨率的机器上,你就应该再准备一套低分辨率的图片,并按顺序命名为Bbrdln(l表示“low”,n为序数1,2,3…)。自动显示图片的缺点是:图片在数据复制过程中以一定的时间间隔自动显示,不受程序控制。下面介绍一种控制图片显示的方法:
szBitmap=″C:\\\\Windows\\\\Bubbles.bmp″;
//包括完整路径信息的图片名
nID_BITMAP=12;
//若图片来自Dll,它是图片在资源文件中的ID,若图片来自一个文件,任意设一个值
nCorner=UPPER_LEFT;
//指定图片显示的位置,此处为左上角
SetDisplayEffect(EFF_FADE);//设置显示效果
PlaceBitmap(szBitmap, nID_BITMAP, 10, 10, nCorner);//在左上角(10,10)处显示图片
四、创建程序组和快捷方式
要在SetupFolders函数中编写代码。创建如下图所示的程序组和快捷方式。
代码如下:
function SetupFolders()
STRING szProgram,szFolder;
begin
szFolder=″膝关节病案管理系统″;
CreateProgramFolder( szFolder );
ShowProgramFolder( szFolder, SW_SHOW );
szProgram=TARGETDIR ^ ″\\\\DBSet.EXE″;
LongPathToQuote(szProgram, TRUE);//给命令行加上引号,因为路径中可能包含空格
AddFolderIcon( szFolder, ″数据库访问设置″, szProgram, TARGETDIR,″″, 0, ″″, REPLACE);//创建快捷方式″数据库访问设置″
Delay(1);//延时1秒
szProgram= UNINST+′ -f″ ′+TARGETDIR ^ ′\\\\Uninst.isu″ ′;
AddFolderIcon( szFolder, ″卸载病案管理系统″, szProgram, TARGETDIR,″″, 0, ″″, REPLACE ); //不能用LongPathToQuote给该程序项加引号,否则不能正常执行!
ReloadProgGroup (szFolder);//刷新程序组
Return 0;
end;
AddFolderIcon函数的功能是在它的第一个参数szFolder处插入快捷方式。szFolder可以取如下值:
FOLDER_DESKTOP 在桌面创建快捷方式
FOLDER_STARTMENU在″开始″菜单中创建快捷方式
FOLDER_STARTUP 在″启动″组中创建快捷方式
FOLDER_PROGRAMS 在″程序″组中创建快捷方式
五、修改注册表
如果你的软件有一些设置(如是否有启动声音等)要保存在注册表中,就必须修改注册表。注册表的修改是在SetupRegistry中完成的。
下面的代码演示了如何在注册表的 HKEY_LOCAL_MACHINE\\SOFTWARE\\Joint主键下创建一个DWORD类型的标记Wav来记录Joint程序是否有启动声音。Wav值为1时,表示有启动声音,为0时表示没有。
function SetupRegistry()
NUMBER nRootKey,nType;
STRING szKey,szClass;
begin
nRootKey=HKEY_LOCAL_MACHINE;
RegDBSetDefaultRoot(nRootKey);
szKey=″SOFTWARE\\\\Joint
szClass=″″;
RegDBCreateKeyEx(szKey, szClass); ″;
nType = REGDB_NUMBER;
RegDBSetKeyvalueEx(szKey, ″Wav″, nType, ″1″,-1);
return 0;
end;
(作者:经乾 1999年12月28日 16:02)
(经乾) |