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

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

先手動建立 Access ODBC 資料源,再用 regedit 檢視 HKEY_CURRENT_USER\Software\ODBC\ODBC.INI\<DSN名> 關鍵值:
odbcjt32.dll)MS Access;
在 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 知識庫社群提供的寶貴參考資料。