2009-05-28 19 views

Trả lời

48

Josh-

Cảm ơn bạn rất nhiều vì đã dành thời gian để câu trả lời. Hướng dẫn của bạn đã giúp rất nhiều, và rất gần với những gì tôi đã tìm thấy trên của riêng tôi.

Thú vị đủ, tôi thấy nó có thể được làm mỏng hơn một chút.

Đối với những người trong hoàn cảnh của tôi người

  1. Không muốn người dùng của họ có cài đặt ODAC hoặc kích thước đầy đủ Oracle Khách hàng
  2. Đừng quan tâm đến việc tái khả năng sử dụng của installtion đặc biệt khách hàng
  3. Cần một giải pháp tương thích "clickOnce"

Tôi đã tìm được cách để thực hiện điều đó.

a. Tải về "Oracle Instant Client 11.1.0.6 - Basic Lite". b. giải nén với bất kỳ thư mục và sao chép các tập tin sau đây cho Visual Studio gốc của dự án của bạn:

  • oci.dll
  • ociw32.dll
  • orannzsbb11.dll
  • oraocci11.dll
  • oraociicus11.dll
  • msvcr71.dll (không cần thiết, nên được cung cấp với hầu hết các phiên bản Windows)

    (năm đầu tiên là mức tối thiểu cần thiết cho Oracle Instant Client, cuối cùng là thời gian chạy chung của microsoft mà họ sử dụng.)

c. Tải xuống bản XACopy ODAC 11 (phiên bản hiện tại là 11.1.0.6) và giải nén.

  • OraOps11w.dll - trong thư mục odp.net20, nằm trong thư mục gốc của dự án.

    (tệp này là những gì Oracle.DataAccess.dll trao đổi và sử dụng để làm việc với các tệp Instant Client).

d. Để tương thích với triển khai ClickOnce, hãy chọn những tệp này trong dự án của bạn và đảm bảo chúng là "Nội dung" và "Sao chép Địa phương" trong dự án của bạn. Tệp kê khai sau đó sẽ triển khai chúng đúng cách.

Kết quả ... payload bổ sung vào dự án của bạn là 30MB, mà kinda sucks, nhưng tốt hơn nhiều so với 100 hoặc 400 +, hỗ trợ nhân vật phương Tây, nhưng đá mông ở chỗ

  1. nó đòi hỏi không có đường dẫn,
  2. không đòi hỏi các khóa registry ,
  3. bị cô lập trong quá trình triển khai và không cài đặt các ứng dụng Oracle Client khác,
  4. hoạt động sẽ tất cả DB trở lại 9.2.
+0

Cảm ơn bạn. Tôi đã không thể chạy một ứng dụng xây dựng cho ODAC, và điều được, tôi quên DLL cần thiết của. – maxwellb

+0

oraociicus.dll nên là oraociicus11.dll – cjbarth

+0

Điều này làm việc rất tốt nếu không có khách hàng Oracle được cài đặt. Nhưng tôi đã quan sát thấy một số xung đột nếu một máy khách hoặc máy chủ Oracle (ví dụ: trên máy phát triển của tôi) được cài đặt (phiên bản khác với được triển khai). Trong trường hợp này, tôi phải tránh đặt các DLL khách hàng tức thời trong thư mục bin của dự án Visual Studio. –

6
  1. Tải xuống triển khai ODAC 11 XCopy.
  2. Giải nén file zip và chạy như sau:

    install.bat odp.net20 c: \ oracle \ 11.1 \ myoraclehome odac đúng

  3. Sao chép các tập tin từ thư mục 11.1 và đặt chúng trong một thư mục con của tệp thực thi của ứng dụng của bạn (ví dụ: debug \ bin \ oracle)

  4. Thêm các câu lệnh sau vào phương thức Main() của bạn. Họ sẽ thay đổi đường dẫn như vậy mà ứng dụng của bạn thực thi sẽ sử dụng ứng dụng oracle độc ​​quyền của bất kỳ nhà oracle nào khác. Sự thay đổi môi trường là độc quyền cho quá trình của bạn và không có tác động lâu dài khi ứng dụng chấm dứt:

    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

Bạn quên mất một con dê. –

+0

Với ODAC 11.2, dấu chân của việc triển khai xcopy thực sự (như được mô tả bởi trey ở trên) là 130MB. Nếu bạn đang triển khai nhiều ứng dụng, dấu chân này sẽ phát triển nhanh chóng. Giải pháp của Josh ở trên (cài đặt vào một thư mục, có DLL không quản lý địa chỉ thông qua PATH) là một lựa chọn tốt. –

+2

Một thay thế cho thay đổi có lập trình PATH trong thời gian chạy là sử dụng cài đặt cấu hình ứng dụng: configuration/oracle.dataaccess.client/settings/add name = "DllPath" để báo cho trình điều khiển oracle biết đường dẫn dll không được quản lý ở đâu. Xem http://docs.oracle.com/html/E15167_01/InstallODP.htm Phần "Tìm kiếm đơn đặt hàng cho DLL không được quản lý". Phương pháp này cũng sẽ đảm bảo hỗ trợ cho phiên bản bên cạnh. –

2

Im chạy với ứng dụng khách nhanh oracle 11g. Sau đây, và rất tối thiểu, danh sách các tập tin là những gì ive thấy cần thiết cho việc triển khai:

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

Chỉ cần cài đặt đầy đủ cho khách hàng và sao chép các tập tin từ thư mục bin.

+1

Đã xác nhận cho W2K8R2 .Net 4.0 application –

+0

Man, bạn là người tiết kiệm cuộc sống! Làm việc như người ở! Tks rất nhiều – Pascal

+1

Than ôi, tôi không thể làm điều này để làm việc. Tôi đã thêm các DLL vào dự án thiết lập của tôi và chúng được triển khai cùng với .EXE của tôi (là một Dịch vụ Windows, nếu vấn đề đó). Khi cố gắng khởi động dịch vụ, tôi nhận được xác nhận TypeInitializationException "Nhà cung cấp không tương thích với phiên bản của máy khách Oracle" - đó là điều tương tự khi tôi chỉ có Oracle.DataAccess.dll (nhà cung cấp/trình bao bọc). Có lẽ các DLL không được quản lý, vì vậy tôi không nghĩ rằng tôi nên (hoặc có thể) đặt chúng trong GAC. Có cần đăng ký/cài đặt nào ngoài "triển khai xcopy" không? –

3

Cách đây một lúc, đây là chủ đề mà chương trình của tôi hoạt động (THANKS!). Tôi đã được thông báo rằng Oracle không thích bạn chọn ra 6 dll và thả chúng vào thư mục thực thi của bạn. Vì vậy, bây giờ, mọi dll được cài đặt khi chạy install.bat odp.net2 c: \ oracle odac phải được đặt trong thư mục thực thi của bạn (chiếm không gian)

+0

Rất hữu ích, tôi đã cố gắng và cố gắng để triển khai các dlls không thành công như nhiều người đã nói rằng bạn có thể. Sau đó, tôi thấy câu trả lời này với một ngày gần đây và reliased tất cả các bài viết khác là tương đối cũ. Tôi đã từ bỏ cố gắng để bin triển khai các dlls, và chỉ cần chạy 'install.bat odp.net4 c: \ oracle odac' trên máy chủ. –

Các vấn đề liên quan