2012-02-03 34 views
2

我在Visual Studio 2010中開發了一個C#winform應用程序,該應用程序連接到Access 2010 * .accdb數據庫。它在我的電腦上正常工作,但是當我將它安裝在另一個上時,它會引發錯誤「'Microsoft.ACE.OLEDB.12.0'提供程序未在本地計算機上註冊。」 我試圖按照建議將它編譯爲x86,但沒有任何成功。包含ACE OLEDB 12驅動程序作爲clickOnce安裝的一部分

任何幫助/建議表示讚賞,我認爲我應該包括此驅動程序作爲我的clickOnce安裝的一部分。如果是這樣,我該怎麼做? (在VS屬性>發佈>以前的需求中,它不會顯示爲需求清單中的一個選項)

回答

0

可以通過將任意程序集和文件添加到項目並更改它們作爲ClickOnce安裝的一部分他們的文件類型爲內容。它們將出現在應用程序文件列表中。

請注意,如果您這樣做,您將從Visual Studio中收到警告,但可以安全地忽略它。

+0

我認爲文件被複制到本地機器,但不會被安裝。 – mbmihura 2012-02-03 03:18:37

2

您必須使用更高級的部署必要驅動程序的方法 - 據我所知,ClickOnce本身不會執行此操作。我也不認爲它像單個DLL一樣簡單。驅動程序需要註冊系統等。

Access驅動程序存在一個大問題,因爲它們的設置方式。如果用戶安裝了帶有Access的Microsoft Office,他們將已經擁有ACE驅動程序。問題是,如果他們在64位計算機上安裝了32位Access,則64位應用程序將無法與Access進行通信,因爲該計算機只有32位驅動程序,並且無法同時安裝兩者。

如果您的用戶都沒有使用Access的Microsoft Office,那麼您應該能夠根據需要爲每臺計算機部署32/64位的獨立驅動程序安裝程序。

+0

是的,我讀了32/64位訪問驅動程序之間的問題。對我來說,做一個64位應用並不是非常必要的,32也可以。 如何根據需要部署應用程序,以便能夠在用戶系統上檢測/安裝正確的驅動程序? – mbmihura 2012-02-03 03:35:18

+2

這一切取決於您使用的安裝程序方法。像InnoSetup之類的東西有一些腳本功能來檢查某些註冊表項(找出哪些與ACE驅動程序關聯),並執行某些任務(如果找不到)。我相信NSIS軟件可以處理同樣的事情 - 但我發現InnoSetup更容易與InnoIDE一起使用。 – Origin 2012-02-03 04:22:54

0

您可以構建msi而不是oneclick,並創建一個自定義操作,以便在安靜模式下安裝ace驅動程序。由於它的可執行文件,你可以運行它在一個過程對象

相關問題