1. 程式人生 > >InstallShield製作帶ODBC的安裝軟體

InstallShield製作帶ODBC的安裝軟體

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow

也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!

               

  專案快接近尾聲了,總要給自己精心製作的東東做一件漂亮的嫁衣吧。我選擇了InstallShield6.22來製作帶ODBC資料庫的安裝軟體,InstallShield可以說是軟體安裝的最好製作工具。廢話少說,讓我們一齊動手!

  首先,用InstallShield的project wizard建立一個standard setup project,如圖一中輸入工程名,應用程式名、公司名、版本號、選擇自己做好的可執行檔案,選擇下一步。

221898.gif
圖一 步驟一

  在嚮導的step2中選擇語言,繼續按下一步如圖二所示:

221899.gif
圖二 步驟 3

  其中Main App將要包括可執行檔案、動態連線庫等等檔案,Tutorial是幫助檔案包、Examples是事例包,你可以新增上述檔案,這裡繼續下一步,一直到完成。當然中間可以加入自己的需要的檔案。中間步驟這裡就不累述,這樣一個安裝程式就“做好”了,當然這個安裝程式只是一個空架,不能訪問資料庫。接下去我們來重點看看怎樣註冊一個數據庫。

  開啟上面已經做好的工程,我們可以看到如圖三所示的畫面,其中右邊包括 file groups、resources、media、scripts、compenents、step types、setup files,

221900.gif
圖三 installshield

  首先選擇file groups,如圖四,在static file links中新增待包裝的可執行檔案、你的*.mdb資料庫檔案、動態連線庫、還包括你需要的幫助檔案、和圖示(ico)等等。

221901.gif
圖四 假如必須檔案

  然後選擇resources更改安裝畫面的現實文字。如圖五,其中TITLE_MAIN是安裝程式背景顯示文字等等,你可任意更改。

221902.gif
圖五 新增安裝背景文字

  接著在compenents中新增ODBC3.51物件執行檔案,配置資料庫,對目標機器進行ODBC組建安裝,如圖六

221903.gif
圖六 資料組建新增

  總算羅嗦完了圖形設定,接下去選擇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發現我們了我們剛才建立的資料來源,選擇該項,在登錄檔的右邊出現如圖七所示幾項鍵值:

221904.gif
圖七 登錄檔項

  其中第一項無需設定,我們從第二項開始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等等資料庫都可以先手動建立一個數據源然後看一下注冊表的變化,我們就知道怎樣用程式來新增資料來源了,大家可以舉一反三。

           

給我老師的人工智慧教程打call!http://blog.csdn.net/jiangjunshow

這裡寫圖片描述