【问题标题】:Include ACE OLEDB 12 driver as part of a clickOnce install在 clickOnce 安装中包含 ACE OLEDB 12 驱动程序
【发布时间】:2012-02-03 02:59:31
【问题描述】:

我在 Visual Studio 2010 中开发了一个连接到 Access 2010 *.accdb 数据库的 C# winform 应用程序。它在我的电脑上运行良好,但是当我将它安装在另一台电脑上时,它会抛出错误“'Microsoft.ACE.OLEDB.12.0' 提供程序未在本地计算机上注册。” 按照建议,我尝试将其编译为 x86,但没有任何成功。

感谢任何帮助/建议,我认为我应该将此驱动程序作为 clickOnce 安装的一部分。如果是这样,我该怎么做? (它不会作为选项出现在需求清单中,在 VS 属性 > 发布 > 以前的需求中)

【问题讨论】:

    标签: c# ms-access clickonce oledb


    【解决方案1】:

    您必须使用更高级的方法来部署必要的驱动程序 - 据我所知,ClickOnce 不会自行完成。我也不认为它像单个 DLL 那样简单。驱动需要注册系统等。

    Access 驱动程序存在很大的问题,因为它们的设置方式。如果用户安装了带有 Access 的 Microsoft Office,他们将已经拥有 ACE 驱动程序。问题是,如果他们在 64 位机器上安装了 32 位 Access,您的 64 位应用程序将无法与 Access 通信,因为该机器只有 32 位驱动程序,您无法同时安装。

    如果您的用户都没有 Microsoft Office with Access,那么您应该能够根据需要为每台计算机部署独立的 32/64 位驱动程序安装程序。

    【讨论】:

    • 是的,我读到了关于 32/64 位 Access 驱动程序之间的问题。对我而言,64位应用程序并不是必需的,32位也可以。我如何部署应用程序,以便它可以根据需要在用户系统上检测/安装正确的驱动程序?
    • 这完全取决于您使用的安装方法。像 InnoSetup 这样的东西有一些脚本功能来检查某些注册表项(找出哪些与 ACE 驱动程序相关联)并在找不到时执行某些任务。我相信 NSIS 软件可以处理同样的事情 - 但我发现 InnoSetup 更易于与 InnoIDE 一起使用。
    【解决方案2】:

    通过将任意程序集和文件添加到项目并将其文件类型更改为内容,可以将任意程序集和文件作为 ClickOnce 安装的一部分。然后它们将出现在应用程序文件列表中。

    请注意,如果您这样做,您会收到来自 Visual Studio 的警告,但可以放心地忽略它。

    【讨论】:

    • 我认为这样文件被复制到本地机器,但不会被安装。
    【解决方案3】:

    您可以构建一个 msi 而不是 oneclick,并创建一个自定义操作以在安静模式下安装 ace 驱动程序。由于它是一个可执行文件,因此您可以在进程对象中运行它

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-06-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-09-11
      • 2013-04-28
      • 1970-01-01
      相关资源
      最近更新 更多