如何注册ODBC驱动程序?

5
我为我的学校项目创建了一个库存系统,并使用SqlLite作为独立的数据库。只要安装SqlLite ODBC连接(单独的安装程序),我就能够运行它。
但是,我想创建一个安装程序,并在一个安装程序中安装SqlLite ODBC驱动程序和我的项目,而不是运行两个单独的安装程序(我的应用程序和sqlLite ODBC驱动程序安装程序)。
有什么好的建议吗?或者你有什么建议吗?
到目前为止,我已经将SQLLite ODBC dll复制到我的应用程序文件夹中并运行它,但是出现了一个错误,告诉我没有安装ODBC驱动程序。我无法在32位和64位Windows操作系统上注册SqlLite odbc dll。
3个回答

8

您可以使用odbcconf命令直接注册驱动程序dll。请注意,有32位和64位ODBC驱动程序,因此您需要使用相应的odbcconf命令。

例如,在64位机器上安装64位ODBC驱动程序:

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

在64位系统上安装32位驱动程序:

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

您可以在 Microsoft Docs 上找到有关 odbcconf 命令的更多信息。


7
我发现很难找到答案,所以我在Stackoverflow上将其作为答案添加了进来。我通过查找注册表得出了答案,但我想要一个官方支持的方法。
ODBC组件的注册表条目档案中,我们可以了解到ODBC驱动程序是在注册表中注册的。
  • HKEY_LOCAL_MACHINE
    • SOFTWARE
      • ODBC
        • Odbcinst.ini
          • ODBC Drivers

将包含每个驱动程序的等于"已安装"

enter image description here

所以你需要创建类似于:

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

对于每个驱动程序,都会存在一个
  • HKEY_LOCAL_MACHINE
    • SOFTWARE
      • ODBC
        • Odbcinst.ini
          • [驱动程序名称]

在这个文件夹中有一系列的驱动程序规格:

enter image description here

在MSDN页面上,Microsoft很好地记录了这些内容,包括驱动程序规范子键 档案

对于SqlLite ODBC驱动程序,这意味着有一个名为:

HKLM\SOFTWARE\ODBC\Odbcinst.ini\SqlLite

您需要确保为SqlLite ODBC驱动程序创建所有

但不要这样做

驱动程序详细信息中的另一项是引用计数(称为UsageCount)。此使用计数不应由人来操作,而是在调用以下函数时进行更新:

因此,虽然您可以自己将内容推送到注册表中,但您应该调用文档化的API SQLInstallDriver

虽然从注册表中读取已安装的驱动程序可能是安全的,但文档说获取驱动程序列表的方法是:


你好,感谢您的时间。我按照上面发布的想法创建了一个安装程序,它将首先安装ODBC驱动程序,然后继续安装我的驱动程序。我不敢随意调整注册表。由于ODBC驱动程序是免费的,所以我在安装程序中包含了它,并在系统没有SQLite ODBC驱动程序时进行安装。 :) - Edang Jeorlie

5
我建议你创建一个引导程序安装包。你没有提到你要交付的平台是什么,但既然你在写有关安装程序的内容,我会假设该平台是Windows。
有多个安装程序框架可用于在Windows上创建软件安装程序,但我最近使用并推荐的是WixToolset。他们有一些关于如何构建引导程序捆绑包的文档here
简而言之,我的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>

最终,在构建完成后,我的引导程序包看起来像这样。

bootstrapper

我确保在完成时,机器上安装了我的软件和可再分发包。

你可以使用完全相同的方法 - 捆绑包可以使用其原始安装程序安装odbc驱动程序,然后安装你的软件。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接