2009-05-28 8 views

Respuesta

48

Josh-

muchas gracias por tomarse el tiempo para responder. Tus instrucciones me ayudaron mucho, y están muy cerca de lo que he encontrado por mi cuenta.

Curiosamente, descubrí que se puede adelgazar un poco más.

Para aquellos en mi situación que

  1. no quieren que sus usuarios tengan que instalar ODAC o el tamaño completo del cliente de Oracle
  2. No se preocupan por la posibilidad de reutilización de la Installtion cliente particular
  3. necesita una "ClickOnce" solución compatible

he encontrado una manera de hacer eso.

a. Descargue el "Oracle Instant Client 11.1.0.6 - Basic Lite". b. descomprimir en cualquier carpeta y copiar los siguientes archivos en el Visual Studio raíz del proyecto:

  • oci.dll
  • OCIW32.DLL
  • orannzsbb11.dll
  • oraocci11.dll
  • oraociicus11.dll
  • msvcr71.dll (no es necesario, se debe suministrar con la mayoría de las versiones de Windows)

    (los primeros cinco son el mínimo necesario para Oracle Instant Client, el último es el tiempo de ejecución común de Microsoft que utilizan.)

c. Descargue el ODAC 11 XCopy (la versión actual es 11.1.0.6) y descomprimir.

  • OraOps11w.dll - en la carpeta odp.net20, va en la raíz del proyecto.

    (este archivo es el que utiliza Oracle.DataAccess.dll y lo utiliza para trabajar con los archivos de Instant Client).

d. Para compatibilidad con la implementación de ClickOnce, seleccione estos archivos en su proyecto y asegúrese de que sean "Contenido" y "Copiar local" en su proyecto. El manifiesto los desplegará correctamente.

Resultado .... la carga útil añadido a su proyecto es de 30 MB, que aspira un poco, pero mucho mejor que 100 + 400 + o, compatible con caracteres occidentales, pero patea traseros en que

  1. requiere ninguna ruta,
  2. no requiere de entradas de registro ,
  3. está aislado en la implementación y no conecta otras instalaciones de Oracle Client,
  4. funciona todos los DB hasta el 9.2.
+0

Gracias. No pude ejecutar una compilación de la aplicación para ODAC, y el asunto era que olvidé las DLL necesarias. – maxwellb

+0

oraociicus.dll debería ser oraociicus11.dll – cjbarth

+0

Esto funcionó muy bien si no hay un cliente de Oracle instalado. Pero observé algunos conflictos si un cliente o servidor de Oracle (por ejemplo, en mi máquina para desarrolladores) está instalado (de una versión diferente a la que se debe implementar). En este caso, debo evitar poner las DLL de los clientes instantáneos en la carpeta bin del proyecto de Visual Studio. –

6
  1. Descargue la implementación de ODAC 11 XCopy.
  2. Extrae el archivo zip y ejecute el siguiente:

    install.bat odp.net20 c: \ oracle \ 11.1 \ myoraclehome ODAC cierto

  3. Copiar los archivos del directorio 11.1 y colocarlos en una subdirectorio del archivo ejecutable de la aplicación (por ejemplo, depuración \ bin \ oracle)

  4. Agregue las siguientes instrucciones a su método Main(). Cambiarán la ruta de tal manera que el ejecutable de su aplicación usará el cliente de Oracle exclusivo de cualquier otro hogar de Oracle. El cambio medio ambiente es exclusivo de su proceso y no tiene efectos duraderos cuando la aplicación termina:

    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

Olvidaste sacrificar una cabra. –

+0

Con ODAC 11.2, la huella de la verdadera xcopy se despliega (según lo descrito por trey arriba) globos a 130MB. Si está implementando muchas aplicaciones, esta huella crece rápidamente. La solución de Josh anterior (instalar en un directorio, tener archivos DLL no administrables direccionables a través de PATH) es una buena alternativa. –

+2

Una alternativa para cambiar programáticamente la RUTA durante el tiempo de ejecución es usar la configuración de configuración de la aplicación: configuration/oracle.dataaccess.client/settings/add name = "DllPath" para indicar a los controladores oracle dónde está la ruta dll no administrada. Consulte la sección http://docs.oracle.com/html/E15167_01/InstallODP.htm "Orden de búsqueda para archivos DLL no administrados". Este método también asegurará el soporte para el control de versiones lado a lado. –

2

Estoy ejecutando con el cliente instantáneo de Oracle 11g. La siguiente, y muy mínimo, lista de archivos es lo que he encontrado que es necesario para el despliegue:

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

sólo tiene que instalar todo el programa y copiar los archivos de la carpeta bin.

+1

Confirmado para la aplicación W2K8R2 .Net 4.0 –

+0

¡Hombre, eres un salvavidas! ¡Trabajado como un encanto! Tks tanto – Pascal

+1

Por desgracia, no puedo hacer que esto funcione. He agregado los archivos DLL a mi proyecto de instalación y se implementan junto con mi .EXE (que es un servicio de Windows, si eso importa). Al intentar iniciar el servicio, recibo una TypeInitializationException que dice "El proveedor no es compatible con la versión del cliente de Oracle", que es lo mismo que dijo cuando solo tenía Oracle.DataAccess.dll (el proveedor/envoltorio). Es de suponer que los archivos DLL no están administrados, por lo que no creo que deba (o podría) ponerlos en el GAC. ¿Se requiere algún registro/instalación más allá de la "implementación de xcopy"? –

3

Hace un tiempo, este es el hilo que hizo funcionar mi programa (¡GRACIAS!). Ahora me han dicho que a Oracle no le gusta que selecciones 6 dlls y los dejes caer en tu carpeta ejecutable. Ahora, cada dll que se instala al ejecutar install.bat odp.net2 c: \ oracle odac tiene que colocarse en la carpeta ejecutable (espacio para comer)

+0

Muy útil, intenté e intenté distribuir los dlls sin éxito, ya que muchas personas decían que podía hacerlo. Luego vi esta respuesta con una fecha más reciente y reclamé que todas las demás publicaciones eran relativamente antiguas. Dejé de intentar bin desplegar los dlls, y acabo de ejecutar 'install.bat odp.net4 c: \ oracle odac' en el servidor. –

Cuestiones relacionadas