包含ACE OLEDB 12驱动程序作为clickOnce安装的一部分

时间:2012-02-03 02:59:31

标签: c# ms-access clickonce oledb

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

感谢任何帮助/建议,我认为我应该将此驱动程序作为clickOnce安装的一部分。如果是这样,我该怎么办? (在VS Properties> Publish> Previous requirements)中,它似乎不是需求清单中的一个选项。

3 个答案:

答案 0 :(得分:2)

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

Access驱动程序存在一个很大的问题,因为它们的设置方式。如果用户安装了Microsoft Office Access,则他们已经拥有ACE驱动程序。问题是,如果他们在64位计算机上安装了32位Access,那么64位应用程序将无法与Access通信,因为该计算机只有32位驱动程序,而且您无法同时安装这两种驱动程序。

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

答案 1 :(得分:0)

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

请注意,如果您执行此操作,将从Visual Studio收到警告,但可以安全地忽略它。

答案 2 :(得分:0)

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