程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> VC >> 關於VC++ >> 用InstallShield6.22制作帶ODBC安裝軟件

用InstallShield6.22制作帶ODBC安裝軟件

編輯:關於VC++

項目快接近尾聲了,總要給自己精心制作的東東做一件漂亮的嫁衣吧。我選擇 了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知識庫,他給了我很大的幫助,裡面有 很多同道中朋友的精誠奉獻。

  1. 上一頁:
  2. 下一頁:
欄目導航
Copyright © 程式師世界 All Rights Reserved