Chinaunix首页 | 论坛 | 博客
  • 博客访问: 2096122
  • 博文数量: 909
  • 博客积分: 4000
  • 博客等级: 上校
  • 技术积分: 12260
  • 用 户 组: 普通用户
  • 注册时间: 2008-05-06 20:50
文章分类

全部博文(909)

文章存档

2008年(909)

我的朋友

分类:

2008-05-06 22:21:50

一起学习
用 InstallShield6.22 制作带 ODBC 安装软件

作者:hoshine

  项目快接近尾声了,总要给自己精心制作的东东做一件漂亮的嫁衣吧。我选择了InstallShield6.22来制作带ODBC数据库的安装软件,InstallShield可以说是软件安装的最好制作工具。废话少说,让我们一齐动手!
  首先,用InstallShield的project wizard创建一个standard setup project,如图一中输入工程名,应用程序名、公司名、版本号、选择自己做好的可执行文件,选择下一步。


图一 步骤一

在向导的step2中选择语言,继续按下一步如图二所示:


图二 步骤 3

  其中Main App将要包括可执行文件、动态连接库等等文件,Tutorial是帮助文件包、Examples是事例包,你可以添加上述文件,这里继续下一步,一直到完成。当然中间可以加入自己的需要的文件。中间步骤这里就不累述,这样一个安装程序就“做好”了,当然这个安装程序只是一个空架,不能访问数据库。接下去我们来重点看看怎样注册一个数据库。
  打开上面已经做好的工程,我们可以看到如图三所示的画面,其中右边包括 file groups、resources、media、scripts、compenents、step types、setup files,


图三 installshield

  首先选择file groups,如图四,在static file links中添加待包装的可执行文件、你的*.mdb数据库文件、动态连接库、还包括你需要的帮助文件、和图标(ico)等等。


图四 假如必须文件

  然后选择resources更改安装画面的现实文字。如图五,其中TITLE_MAIN是安装程序背景显示文字等等,你可任意更改。


图五 添加安装背景文字

  接着在compenents中添加ODBC3.51对象运行文件,配置数据库,对目标机器进行ODBC组建安装,如图六


图六 数据组建添加

  总算罗嗦完了图形设置,接下去选择script看一看程序,installshield主程序结构通常是以program开始,endprogram结尾的,他相当于c语言中的main主入口函数,但是在installshield6.22中我们看到的只有两个功能函数:Onfirstuibefore,onmoving来处理安装过程,其实他的主函数已经被installsheild给打包了,所以我们要添加我们需要的效果是只要在这两个函数修改即可。其中Onfirstuibefore主要用来控制安装过程,onmoving主要用来控制显示效果。首先我们来设置安装时候的背景颜色,Onfirstuibefore函数的begin 后面添加源代码,在程序如下:
SetTitle( @TITLE_MAIN, 24, WHITE );//设置背景显示文字

SetTitle( @TITLE_CAPTIONBAR, 0, BACKGROUNDCAPTION );//安装开始提示软件名

Enable( FULLWINDOWMODE );?//背景全屏

Enable( BACKGROUND );//显示背景

SetColor(BACKGROUND,BK_BLUE|BK_SMOOTH);//背景色为蓝色渐变 

  有了背景,还得要给自己的程序加把锁——添加序列号,首先我们在Onfirstuibefore函数的变量声明中添加一个整型number nCount;用来纪录输入序列号的次数,然后在Onfirstuibefore函数中Dlg_SdRegisterUserEx后面添加代码:

....... 

Dlg_SdRegisterUserEx:

szMsg = "";

szTitle = "";?

nResult = SdRegisterUserEx( szTitle, szMsg, szName, szCompany, szSerial );

if (nResult = BACK) goto Dlg_SdShowInfoList;

//输入序列号!

if (szSerial!="123123")&&(nCount<3) then

nCount=nCount 1;

MessageBox("输入序列号不正确,请重新输入!",INFORMATION);

goto Dlg_SdRegisterUserEx;

endif;

if nCount=3 then

MessageBox("输入已超过三次,请申请序列号后再安装!",INFORMATION);

abort;

endif;

//序列号验证 

...... 

  最后我们要进行数据库注册,为了弄清楚建立数据库后注册表的变化,先在控制面板的管理工具得数据源中建立一个以Drive do Microsoft Access(*.mdb)为驱动的Access数据源,然后我们看一下注册表中的变化,在开始的运行中输入regedit进入注册表,在HKEY_USERS中的S-1-5-21-796845957-606747145-839522115-500的子键SOFTWARE目录下的ODBC目录下ODBC.ini发现我们了我们刚才建立的数据源,选择该项,在注册表的右边出现如图七所示几项键值:


图七 注册表项

  其中第一项无需设置,我们从第二项开始DBQ,他是数据库(*.mdb)的位置;第三个键值是Access的组建驱动,一般系统都包含这个动态连接库;第四个是驱动标志为十六进制的19;第五个说明了ODBC数据源的类型为微软的Access;第六个是安全标志一般都为0;第七个是用户ID莫认为空。好了,我们现在清除了注册表机制,那么我们就可以删掉我们手工建的数据源,因为我们的将要用程序来实现数据库的注册,在Onfirstuibefore函数的return 0前面加入代码如下:

......//注册表注册

RegDBSetDefaultRoot ( HKEY_CURRENT_USER );

if(RegDBKeyExist("Software\\ODBC\\ODBC.INI\\oil")<0) then

	if(RegDBKeyExist("Software\\ODBC\\ODBC.INI")<0) then

		if(RegDBKeyExist("Software\\ODBC")<0) then

			RegDBCreateKeyEx ("Software\\ODBC","");

		endif;

		RegDBCreateKeyEx ("Software\\ODBC\\ODBC.INI","");

	endif;

	RegDBCreateKeyEx ("Software\\ODBC\\ODBC.INI\\oil","");

else

	RegDBDeleteKey ("Software\\ODBC\\ODBC.INI\\oil");

	RegDBCreateKeyEx ("Software\\ODBC\\ODBC.INI\\oil","");

endif;



if(RegDBKeyExist("Software\\ODBC\\ODBC.INI\\ODBC Data Sources")<0) then

	RegDBCreateKeyEx ("Software\\ODBC\\ODBC.INI\\ODBC Data Sources","");

endif;



RegDBSetKeyValueEx ( "Software\\ODBC\\ODBC.INI\\oil", "DBQ" , REGDB_STRING ,  

TARGETDIR "\\data\\se.mdb" , -1);

  

RegDBSetKeyValueEx ( "Software\\ODBC\\ODBC.INI\\oil", "Driver" ,

                                   REGDB_STRING , WINSYSDIR "\\odbcjt32.DLL" , -1);

RegDBSetKeyValueEx ( "Software\\ODBC\\ODBC.INI\\oil", "FIL" , REGDB_STRING , "MS Access;" , -1);

RegDBSetKeyValueEx ( "Software\\ODBC\\ODBC.INI\\oil", "UID" , REGDB_STRING ,"" , -1);

RegDBSetKeyValueEx ( "Software\\ODBC\\ODBC.INI\\oil", "DriverID" , REGDB_NUMBER ,"25" , -1);

RegDBSetKeyValueEx ( "Software\\ODBC\\ODBC.INI\\oil", "SafeTransactions" , REGDB_NUMBER ,"0" , -1);

RegDBSetKeyValueEx ( "Software\\ODBC\\ODBC.INI\\ODBC Data Sources", "oil" ,

                                   REGDB_STRING ,"Driver do Microsoft Access (*.mdb) " , -1);

......       
呵呵,剩下的就是在桌面上创建一个快捷方式了我们在Onfirstuibefore函数里面加入:
//创建快捷方式

if(SprintfBox(OK|CANCEL,"请选择","%S","您想在桌面上创建快捷方式?")) then

   AddFolderIcon(FOLDER_DESKTOP,"**软件",TARGETDIR "OIL.exe",

               TARGETDIR,TARGETDIR "\\media\\GREEN.ICO",0,"",REPLACE);

endif;

AddFolderIcon(FOLDER_PROGRAMS,"**软件",TARGETDIR "oil.exe",

         TARGETDIR,TARGETDIR "\\media\\Applications HotSync.ico",0,"",REPLACE);

return 0;      
结束语:
  其实不一定是ODBC数据库,其他的如sql、oracle等等数据库都可以先手动创建一个数据源然后看一下注册表的变化,我们就知道怎样用程序来添加数据源了,大家可以举一反三。最后感谢vc知识库,他给了我很大的帮助,里面有很多同道中朋友的精诚奉献。
  下载本文示例代码


用 InstallShield6.22 制作带 ODBC 安装软件用 InstallShield6.22 制作带 ODBC 安装软件用 InstallShield6.22 制作带 ODBC 安装软件用 InstallShield6.22 制作带 ODBC 安装软件用 InstallShield6.22 制作带 ODBC 安装软件用 InstallShield6.22 制作带 ODBC 安装软件用 InstallShield6.22 制作带 ODBC 安装软件用 InstallShield6.22 制作带 ODBC 安装软件用 InstallShield6.22 制作带 ODBC 安装软件用 InstallShield6.22 制作带 ODBC 安装软件用 InstallShield6.22 制作带 ODBC 安装软件用 InstallShield6.22 制作带 ODBC 安装软件
阅读(536) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~