Как зарегистрировать драйвер ODBC?

Я создал систему инвентаризации для своего школьного проекта и использую SqlLite как автономную базу данных. Я могу запустить его, пока устанавливаю соединение SqlLite ODBC (отдельный установщик).

Но я хочу создать установщик и установить драйверы SqlLite ODBC вместе с моим проектом в одном установщике вместо запуска двух отдельных установщиков (моего приложения и установщика драйвера sqlLite ODBC).

Любая идея, как это сделать? Или у вас есть рекомендации?

Что я сделал до сих пор. Я копирую dll SQLLite ODBC в папку приложения и запускаю ее, но появляется сообщение об ошибке, сообщающее, что драйвер ODBC не установлен. Мне не удалось зарегистрировать dll SqlLite odbc как в 32-, так и в 64-разрядной ОС Windows.


person Edang Jeorlie    schedule 14.05.2014    source источник


Ответы (3)


Я бы порекомендовал вам создать установочный пакет загрузчика. Вы не упомянули платформу, для которой поставляетесь, но поскольку вы пишете об установщиках, я предполагаю, что это платформа Windows.

Существует несколько фреймворков установщика, которые вы можете использовать для создания установщиков для вашего программного обеспечения в Windows, но я недавно использовал и рекомендую вам WixToolset. У них есть некоторая документация о том, как создавать пакеты начальной загрузки здесь

В большой простоте мой загрузчик wix сводился к установке одного установщика exe и одного установщика msi, и конфигурация выглядела примерно так (в большой простоте - ссылка, которую я предоставил, содержит полную документацию о том, как настроить все функции)

<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi" xmlns:bal="http://schemas.microsoft.com/wix/BalExtension"       xmlns:util="http://schemas.microsoft.com/wix/UtilExtension">
   <Bundle Version="..." Name="...">
        <Chain>
            <ExePackage Id = "x86redist" SourceFile="..." ... />
            <MsiPackage Id = "myApp" SourceFile ="..." ... />
        </Chain>
  </Bundle>
</Wix>

в итоге после сборки мой комплект загрузчика выглядел так

загрузчик

и убедился, что и мое программное обеспечение, и распространяемый пакет были установлены на машине, когда она была завершена.

Вы можете использовать точно такой же подход - пакет может установить драйвер odbc, используя его оригинальный установщик, а затем установить ваше программное обеспечение.

person Rafał Nowosielski    schedule 06.12.2014

Было трудно найти, поэтому я добавлю его в качестве ответа здесь, в Stackoverflow. Я знал ответ, копаясь в реестре, но мне нужен был поддерживаемый метод.

Из записи реестра для компонентов ODBC< /strong> архив, мы узнать, что драйверы ODBC зарегистрированы в реестре.

  • HKEY_LOCAL_MACHINE
    • SOFTWARE
      • ODBC
        • Odbcinst.ini
          • ODBC Drivers

будет содержать значение для каждого драйвера, равное "Installed":

введите здесь описание изображения

Итак, вам нужно создать что-то вроде:

HKLM\SOFTWARE\ODBC\Odbcinst.ini\ODBC Drivers
    "SqlLite": REG_SZ = "Installed"

Тогда для каждого драйвера будет существовать

  • HKEY_LOCAL_MACHINE
    • SOFTWARE
      • ODBC
        • Odbcinst.ini
          • [Driver name]

В этой папке находится ряд спецификаций драйвера:

введите здесь описание изображения

Microsoft хорошо документирует эти элементы в Подключи спецификации драйвера архив< /em> на странице MSDN.

В случае драйвера ODBC SqlLite это будет означать наличие ключа с именем:

HKLM\SOFTWARE\ODBC\Odbcinst.ini\SqlLite

и вы должны быть уверены, что создали все значения для драйвера SqlLite ODBC.

Но не делай этого

Другим элементом сведений о драйвере является счетчик ссылок (называемый UsageCount). Этот счетчик использования не предназначен для того, чтобы люди возились с ним; но вместо этого обновляется при вызове функций:

Таким образом, хотя вы и можете вносить данные в реестр самостоятельно, вам следует вызывать документированный API SQLInstallDriver.

И хотя, вероятно, безопасно читать реестр, чтобы увидеть, какие драйверы установлены, в документации говорится, что для получения списка драйверов:

person Ian Boyd    schedule 08.02.2016
comment
Здравствуйте, спасибо за ваше время. Я последовал идее, опубликованной выше, создав установщик, который сначала установит драйвер odbc, а затем продолжит установку моего. Боюсь по настройке с реестром. Поскольку драйверы odbc бесплатны, я включил их в программу установки и установил, если в системе нет драйвера odbc для sqlite. :) - person Edang Jeorlie; 10.02.2016

Вы можете использовать команду odbcconf для непосредственной регистрации dll драйвера. Обратите внимание, что существуют как 32-разрядные, так и 64-разрядные драйверы ODBC, поэтому вам потребуется использовать соответствующую команду odbcconf.

Например, чтобы установить 64-битный драйвер ODBC на 64-битную машину:

odbcconf /A {INSTALLDRIVER "My Driver Name|driver=Path to my driver dll"}

Чтобы установить 32-битный драйвер на 64-битную машину:

%systemroot%/systemwow64/odbcconf /A {INSTALLDRIVER "My Driver Name|driver=Path to my driver dll"}

Дополнительные сведения о команде odbcconf см. в Microsoft Docs.

person Hainan Zhao    schedule 08.12.2017