InstallShield製作帶ODBC的安裝軟體
阿新 • • 發佈:2018-11-12
分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow
也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!
專案快接近尾聲了,總要給自己精心製作的東東做一件漂亮的嫁衣吧。我選擇了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等等資料庫都可以先手動建立一個數據源然後看一下注冊表的變化,我們就知道怎樣用程式來新增資料來源了,大家可以舉一反三。