2009-05-28 18 views

回答

48

Josh-

非常感謝您抽出時間來回答。你的指示幫助了很多,並且非常接近我自己發現的。

有趣的是,我發現它可以稍微瘦一點。

對於那些在我的處境誰

  1. 不希望自己的用戶必須安裝ODAC或全尺寸的Oracle客戶端
  2. 不關心特定客戶製作安裝
  3. 的可重用性
  4. 需要「clickOnce」兼容解決方案

我找到了一種方法來做到這一點。

a。下載「Oracle Instant Client 11.1.0.6 - Basic Lite」。 b。解壓縮到任意文件夾,並將以下文件複製到您的Visual Studio項目根:

  • OCI.DLL
  • OCIW32.DLL
  • orannzsbb11.dll
  • oraocci11.dll
  • oraociicus11.dll
  • msvcr71.dll(不需要,應提供大多數Windows版本)

    (前五個是Oracle最終所需的即時客戶端,最後是他們使用的微軟公共運行時間。)

c。下載ODAC 11 XCopy(當前版本爲11.1.0。6)並解壓縮。

  • OraOps11w.dll - 位於odp.net20文件夾中,位於您的項目根目錄中。

    (該文件是Oracle.DataAccess.dll與之對話並用於使用Instant Client文件的內容)。

d。爲了與ClickOnce部署兼容,請在項目中選擇這些文件,並確保它們是項目中的「內容」和「複製本地」。清單然後將正確地部署它們。

結果..。添加到您的項目中的有效載荷是30MB,這還挺吮吸,但比100 + 400 +還是要好得多,支持西文字符,但在

  1. 它不需要路徑踢屁股,
  2. 不需要註冊表項,
  3. 在部署時被隔離,並且不會管理其他Oracle客戶端安裝,
  4. 工作將所有DB返回到9.2。
6
  1. 下載ODAC 11 XCopy部署。
  2. 把zip文件解壓並運行以下命令:

    INSTALL.BAT odp.net20 C:從11.1目錄\ ORACLE \ 11.1 \ ODAC myoraclehome真正

  3. 複製文件並將其放置在一個您的應用程序可執行文件的子目錄(例如debug \ bin \ oracle)

  4. 將下列語句添加到Main()方法中。他們將改變路徑,以便您的應用程序可執行文件將使用不受任何其他oracle主頁的影響的oracle客戶端。環境的變化是獨家的過程中,並沒有持久的影響時,應用程序終止:

    Environment.SetEnvironmentVariable("PATH", Environment.CurrentDirectory + "\\oracle\\11.1\\odac;" + Environment.CurrentDirectory + "\\oracle\\11.1\\odac\\bin;", EnvironmentVariableTarget.Process);

    Environment.SetEnvironmentVariable("ORACLE_HOME", Environment.CurrentDirectory + "\\oracle\\11.1\\odac", EnvironmentVariableTarget.Process);

+59

你忘了犧牲一隻山羊。 – 2009-05-28 21:58:06

+0

使用ODAC 11.2時,真正的xcopy部署的空間(如上述三維圖所示)會擴展到130MB。如果你部署了很多應用程序,這個腳印就會迅速增長。上面的Josh解決方案(安裝到一個目錄中,通過PATH可以訪問非託管DLL)是一個很好的選擇。 – 2012-01-24 01:45:56

+2

在運行時以編程方式更改PATH的替代方法是使用應用程序配置設置:configuration/oracle.dataaccess.client/settings/add name =「DllPath」告訴oracle驅動程序非託管dll路徑的位置。請參閱http://docs.oracle.com/html/E15167_01/InstallODP.htm部分「非託管DLL的搜索順序」。該方法還將確保支持並行版本控制。 – 2012-01-24 01:47:47

2

我用oracle即時客戶端11g運行。以下,並且很小,文件列表是什麼香港專業教育學院發現有必要進行部署:

OCI.dll 
Oracle.DataAccess.dll 
OraOCIEI11.dll 
OraOps11w.dll 

只需安裝完整的客戶端,並從bin文件夾複製這些文件。

3

一段時間後,這是讓我的程序工作(謝謝!)的線程。 我現在被告知Oracle不喜歡你挑選6個DLL並將它們放入可執行文件夾中。 所以,現在,運行install.bat odp.net2 c:\ oracle odac時得到安裝的每個dll都必須放在可執行文件夾中(佔用空間)

相關問題