2013-11-29 6 views
1

У меня есть приложение, которое работает в базе данных asa8. Я использую inno-setup для компиляции установочного файла. Я ищу пример кода inno-setup для ввода записи ODBC в реестре. Я основывал свою текущую логику на приведенной ниже статье.адаптивный сервер где угодно 8 параметров реестра

Adaptive server anywhere ASA SqlAnywhere 8.0 ODBC driver

В настоящее время у меня есть в файле INNO-настройки в разделе [регистрации]:

[Registry] 

;ASA DB drivers 

Root: HKLM; Subkey: "SOFTWARE\ODBC\ODBCINST.INI\Adaptive Server Anywhere 8.0"; Flags: uninsdeletekeyifempty 

Root: HKLM; Subkey: "SOFTWARE\ODBC\ODBCINST.INI\Adaptive Server Anywhere 8.0"; ValueType: string; ValueName: "Driver"; ValueData: "{app}\dbodbc8.dll" 

Root: HKLM; Subkey: "SOFTWARE\ODBC\ODBCINST.INI\Adaptive Server Anywhere 8.0"; ValueType: string; ValueName: "Setup"; ValueData: "{app}\dbodbc8.dll" 

Root: HKLM; Subkey: "SOFTWARE\ODBC\ODBCINST.INI\ODBC Drivers"; ValueType: string; ValueName: "Adaptive Server Anywhere 8.0"; ValueData: "Installed" 


;ODBC entry 

Root: HKLM; Subkey: "SOFTWARE\ODBC\ODBC.INI\LOADCON"; Flags: uninsdeletekeyifempty 

Root: HKLM; Subkey: "SOFTWARE\ODBC\ODBC.INI\LOADCON"; ValueType: string; ValueName: 
"AutoStop"; ValueData: "Yes" 

Root: HKLM; Subkey: "SOFTWARE\ODBC\ODBC.INI\LOADCON"; ValueType: string; ValueName: 
"DatabaseFile"; ValueData: "{app}\db_loadcon\loadcon.db" 

Root: HKLM; Subkey: "SOFTWARE\ODBC\ODBC.INI\LOADCON"; ValueType: string; ValueName: "Driver"; ValueData: "{app}\dbodbc8.dll" 

Root: HKLM; Subkey: "SOFTWARE\ODBC\ODBC.INI\LOADCON"; ValueType: string; ValueName: "Integrated"; ValueData: "NO" 

Root: HKLM; Subkey: "SOFTWARE\ODBC\ODBC.INI\LOADCON"; ValueType: string; ValueName: "PWD"; ValueData: "sql" 

Root: HKLM; Subkey: "SOFTWARE\ODBC\ODBC.INI\LOADCON"; ValueType: string; ValueName: "UID"; ValueData: "dba" 

Все это работает отлично (СНП-офф) в WINXP (32bit). Он не работает в Win7 (64 бит). Может ли кто-то показать нестандартный код, который будет работать как для 32, так и для 64-битной ОС. Я знаю WOW6432Node в реестре и знаю, что в WIN7 есть 64-х и 32-разрядный администратор источников данных ODBC. Я знаю, что 32-битное соединение ODBC ASA8 может быть выполнено только через ODBCAD32.exe, который находится в папке C: \ Windows \ SysWOW64 \. Я поиграл с нестандартным кодом, но не был успешным. Мне теперь нужно чье-то экспертное мнение.

Также, когда я запускаю приведенный выше код инно-настройки в WINXP, он создает запись ODBC в реестре, но не отображает запись в фактическом GUI-интерфейсе источника данных ODBC Data Source. Однако соединение ODBC работает. Любая идея о том, как показать соединение в графическом интерфейсе?

+0

Неужели никто не может мне помочь? Пожалуйста. –

ответ

0

Вы должны убедиться, что запись LOADCON также указана под номером HKLM\SOFTWARE\ODBC\ODBC.INI\ODBC Data Sources в реестре, чтобы она отображалась в графическом интерфейсе. (Например, "LOADCON" ="Adaptive Server Anywhere 8.0")

Что касается 32/64 проблемы установите те же ключи к \SOFTWARE\Wow6432Node\ODBC\ODBC.INI и \SOFTWARE\Wow6432Node\ODBC\ODBC.INI\ODBC Data Sources (я использовал бы копировать/вставить & изменить ключи в файле Inno). Красота заключается в том, что если вы установите 64-битные ключи в 32-битной системе, их просто игнорируют.

Один из способов увидеть это, чтобы вручную создать запись ODBC в 64-разрядной системе. Вам нужно будет запустить 64-разрядную версию администратора источника данных ODBC (odbcad32.exe обычно находится в C:\Windows\SysWOW64). После того, как вы создадите запись вручную, загляните в реестр в разделе HKLM\SOFTWARE\Wow6432Node\ODBC.