visual usar studio para crear vb6 regfreecom

studio - ¿Cómo se puede forzar a VB6 a usar los archivos DLL y OCX desde el directorio de la aplicación?



crear dll en visual basic 6 (5)

Quiero poner mis archivos dependientes en el directorio de la aplicación.

Me parece recordar que puede forzar a VB6 a usar los archivos en el directorio local solamente.

¿Algún consejo?


Lo encontré yo mismo:

Primero, Windows busca en el Directorio de aplicaciones: si SafeDllSearchMode está habilitado, el orden de búsqueda es el siguiente:

  1. El directorio desde el que se cargó la aplicación.
  2. El directorio del sistema Use la función GetSystemDirectory para obtener la ruta de este directorio.
  3. El directorio del sistema de 16 bits. No hay ninguna función que obtenga la ruta de este directorio, pero se busca.
  4. El directorio de Windows. Use la función GetWindowsDirectory para obtener la ruta de este directorio.
  5. El directorio actual.
  6. Los directorios que se enumeran en la variable de entorno PATH. Tenga en cuenta que esto no incluye la ruta por aplicación especificada por la clave de registro App Paths. La clave App Paths no se usa al calcular la ruta de búsqueda de DLL.

Si SafeDllSearchMode está deshabilitado, el orden de búsqueda es el siguiente:

1. El directorio desde el que se cargó la aplicación. 2. El directorio actual. 3. El directorio del sistema. Use la función GetSystemDirectory para obtener la ruta de este directorio. 4. El directorio del sistema de 16 bits. No hay ninguna función que obtenga la ruta de este directorio, pero se busca. 5. El directorio de Windows. Use la función GetWindowsDirectory para obtener la ruta de este directorio. 6. Los directorios que se enumeran en la variable de entorno PATH. Tenga en cuenta que esto no incluye la ruta por aplicación especificada por la clave de registro App Paths. La clave App Paths no se usa al calcular la ruta de búsqueda de DLL.

de acuerdo con: http://msdn.microsoft.com/en-us/library/ms682586.aspx

Pero puedes redirigir hacia dónde busca .dll está usando un Manifiesto:

http://msdn.microsoft.com/en-us/library/aa375365(VS.85).aspx


Puede ser un poco confuso porque cada versión de Windows, las reglas cambian. Las versiones anteriores de Windows buscan la ruta antes del directorio actual.

Una solución simple sin manifiestos:

Si su archivo ejecutable es A.EXE , agregue un archivo (0 bytes, vacío) en el mismo directorio denominado A.EXE.local : para versiones anteriores de Windows, esto coloca el directorio de la aplicación por delante de la ruta en el orden de búsqueda.


Colocar bibliotecas de componentes en la carpeta EXE (con o sin archivos .local) puede ser nocivo para la seguridad de las máquinas de destino también.

Los programas VB6 registrarán los componentes aquí a través del punto de entrada de autoregistro detrás de su espalda si no están previamente registrados. Luego, si la aplicación se mueve o quita, deja al usuario con una reinscripción interrumpida, posiblemente fatal para las aplicaciones instaladas posteriormente que utilizan algunos de los mismos componentes. Sin embargo, esto está bien para los componentes específicos de la aplicación, es decir, su propia DLL u OCX que nunca será necesaria para otra aplicación.

El truco .local en realidad no fue diseñado para usarse con los programas VB6 y, si lo usa, su instalador debe tener en cuenta e instalar y registrar adecuadamente los componentes si aún no están en la máquina. Se suponía que era un truco manual para solucionar problemas de compatibilidad de versiones de DLL en máquinas individuales, no una estrategia de implementación.

Vaya a la aplicación SxS y manifiestos de ensamblaje (COM Reg-Free y más) para una mejor solución. La redirección de DLL / COM (.local) fue un buen intento, pero tiene muchas verrugas.


Es posible que también desee probar configurar Reg-Free COM para su proyecto. Hay un programa gratuito llamado Make My Manifest que hará la mayor parte del trabajo por usted

EDITAR El sitio web de MMM está inactivo. Veo aquí que el autor estaba teniendo problemas con su hosting y ha proporcionado otra ubicación para obtener Make My Manifest. Descárguelo aquí .


La respuesta de Clay Nichol sobre la orden de búsqueda no es del todo correcta. Esa orden de búsqueda solo se aplica a los componentes que no son COM. Es decir, solo algunas DLL, y no OCX. Si registra sus objetos COM, se usarán desde el directorio donde están registrados independientemente de lo que esté en el directorio local, a menos que use un COM libre de registro o un archivo .local.

EDITAR:

Se habla bien de MakeMyManifest como una herramienta automática para crear manifiestos para proyectos VB6, no lo he probado yo mismo. DirectCOM también tiene seguidores, de nuevo no lo he probado.

EDITAR El sitio web de MMM está inactivo. Veo aquí que el autor estaba teniendo problemas con su hosting y ha proporcionado otra ubicación para obtener Make My Manifest. Descárguelo aquí .

Hay una técnica semiautomática para generar manifiestos COM sin registro. Puede crear los manifiestos con Visual Studio 2008 (puede usar una versión gratuita como Visual Basic Express Edition). Luego haga un par de ediciones a mano para hacer que los manifiestos sean adecuados para usar desde VB6. Consulte esta sección de este artículo de MSDN para obtener instrucciones paso a paso: ignore el resto del artículo sobre ClickOnce.