首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> VC >> 關於VC++

InstallShield 6.22 打包含 ODBC 資料庫的安裝程式完整教學

     編輯:關於VC++

專案收尾:打造專業安裝包

專案接近尾聲,選用 InstallShield 6.22 製作支援 ODBC 資料庫的安裝程式。本文以實戰步驟詳解關鍵設定。

基本專案建立流程

  1. 用 Project Wizard 建立 Standard Setup Project,填入專案名、應用程式名、公司名、版本號、選擇主執行檔
  2. Step 2 選擇語言(繁體中文)
  3. 設定 File Groups:Main App(主程式、DLL)、Tutorial(說明)、Examples(範例)等
  4. Resources 中自訂安裝介面文字(TITLE_MAIN 等)

核心難點:ODBC 資料源自動註冊

1. 新增 ODBC 元件

在 Components 中加入 ODBC 3.51 執行檔,勾選目標機器安裝 ODBC 驅動程式。

2. 解析註冊表結構

先手動建立 Access ODBC 資料源,再用 regedit 檢視 HKEY_CURRENT_USER\Software\ODBC\ODBC.INI\<DSN名> 關鍵值:

  • DBQ:.mdb 檔案路徑
  • Driver:驅動程式路徑(如 odbcjt32.dll)
  • FIL:MS Access;
  • DriverID:25 (0x19)
  • SafeTransactions:0
  • UID:空字串

3. 安裝腳本自動寫入註冊表

在 OnFirstUIBefore() 的 return 0 前插入:


// 註冊表建立金鑰與設定值
RegDBSetDefaultRoot(HKEY_CURRENT_USER);
if (RegDBKeyExist("Software\\ODBC\\ODBC.INI\\oil") < 0) {
    // 遞迴建立 ODBC.INI\oil 及 ODBC Data Sources
    RegDBCreateKeyEx("Software\\ODBC", "");
    RegDBCreateKeyEx("Software\\ODBC\\ODBC.INI", "");
    RegDBCreateKeyEx("Software\\ODBC\\ODBC.INI\\oil", "");
    RegDBCreateKeyEx("Software\\ODBC\\ODBC.INI\\ODBC Data Sources", "");
}
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);

其他實用功能

序號驗證機制

在 Dlg_SdRegisterUserEx 後加入計數器,最多允許輸入 3 次錯誤序號,超過則中止安裝。

桌面捷徑建立


if (SprintfBox(OK|CANCEL, "請選擇", "%S", "您想在桌面上建立捷徑?")) {
    AddFolderIcon(FOLDER_DESKTOP, "**軟體", TARGETDIR+"OIL.exe", TARGETDIR, TARGETDIR+"\\media\\GREEN.ICO", 0, "", REPLACE);
}
AddFolderIcon(FOLDER_PROGRAMS, "**軟體", TARGETDIR+"oil.exe", TARGETDIR, TARGETDIR+"\\media\\Applications HotSync.ico", 0, "", REPLACE);

安裝介面美化


SetTitle(@TITLE_MAIN, 24, WHITE);
SetTitle(@TITLE_CAPTIONBAR, 0, BACKGROUNDCAPTION);
Enable(FULLWINDOWMODE);
Enable(BACKGROUND);
SetColor(BACKGROUND, BK_BLUE|BK_SMOOTH); // 藍色漸層背景

舉一反三

同理可推廣至 SQL Server、Oracle 等資料庫:先手動建立 DSN,對比註冊表差異,再以腳本自動化寫入。

感謝 VC 知識庫社群提供的寶貴參考資料。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved