Desde hace algún tiempo, he leído u oído hablar de personas que quieren saber como ejecutar sus aplicaciones desde un CD, ya sea para distribuir un demostración, o para mantener sus datos residentes en el CD, de tal modo que los datos no puedan ser modificados. Afortunadamente, tuve la oportunidad de poner algunas de mis ideas en práctica para saber si podrían funcionar. unas cuantas de esas ideas fueron completamente o en parte inspiradas por los grandes aportaciones de los grupos de noticias de Visual dBASE. Reflexionando sobre ellas, puede afrontar muchos problemas y encontrar muchas soluciones.
Algunos Problemas
Ejecutar sus aplicaciones desde un CD no es posible sin sus problemas. Cuando decida continuar, necesita ser consciente de algunos de estos problemas. Algunos pueden ser superados usando atajos o rodeos usuales, mientras otros deben aceptarse debido a su naturaleza.
Tenga presente que al ejecutar una aplicación desde un CD, la velocidad de carga como acceso a datos será substancialmente más lenta que al ejecutar la aplicación desde su unidad de disco duro o incluso de una conexión de red LAN. De modo que, al diseñar su aplicación, tenga presente la falta de velocidad y diseñe con sensatez.
Para que su aplicación funcione, necesitará instalar los archivos runtime de dBASE, y si usted quiere acceder a cualquier tabla de datos, el Motor de Datos de Borland (BDE por sus siglas en inglés) . Aquí necesita decidir si ejecutar los archivos runtime y el BDE desde el CD o instalarlos “formalmente” en la unidad de disco duro con entradas apropiadas de registro, o en su lugar, copiar tanto la aplicación como los archivos runtime y el BDE a una nueva carpeta en la unidad de disco duro y ejecutar todo desde allí. Cada una de estas alternativas tiene algún efecto sobre la velocidad o bien problemas de compatibilidad.
Si está usando imágenes, también pueden acceder a ellas desde el CD. Pero minimice el tamaño de los archivos porque he encontrado que los archivos grandes de imágenes provocan el fallo de dBASE cuando se ejecutan desde el CD. Intente usar archivos JPEG puesto que son mucho más pequeños. También, intente mantener el tamaño de los archivos por debajo de los 50 Kb. La razón es que cargar las imágenes desde el CD toma demasiado tiempo, y parece haber algún tipo de suspensión (timeout) asociado cuando se ejecutan aplicaciones desde el CD.
Addendum (por Juan Manuel Espinosa Gómez - Junio/2002)
Redireccionando la creación de archivos de Salida
Recientemente un miembro de la Comunidad de dBASE en Español inició una discusión para solucionar un problema que se presentaba al intentar escribir archivos temporales a una unidad de solo lectura. Cuando el dBL ejecuta un enunciado SQL que contiene la sentencia ORDER BY el BDE genera un archivo temporal _qsqlnnnn.dbf al directorio de trabajo predeterminado por lo que debemos encontrar una solución a este problema
Veamos el ejemplo siguiente.
En un archivo
.rep (reporte) existe
la declaración del siguiente objeto query:
this.QINSPECCIONES1 = new QUERY() this.QINSPECCIONES1.parent = this with (this.QINSPECCIONES1) left = -15 top = -15 database = form.database1 sql = 'select * from inspecciones ORDER BY FechaRep' active = true endwith |
|
La linea
sql = 'select * from inspecciones ORDER BY FechaRep' al
ser ejecutada (active :=true)
genera el archivo temporal al directorio de trabajo predeterminado, cuando
la unidad es de solo lectura no permite hacer la escritura del archivo
temporal originando un intento fallido por ejecutar la sentencia SQL y
por consiguiente su demo no funcionaría. Para resolver esto necesitamos
redirigir el directorio de trabajo y ejecutar nuestra sentencia antes de
que entre en ejecución el reporte o informe, esto lo haremos ejecutando
el siguiente código en la cabecera del archivo
.rep, como se ilustra
en el siguiente código:
LOCAL wdTemp, wdActual, cSQL wdTemp = space(50)
// Declara la funcion para extraer el directorio
de Windows
// Extrae el directorio de Windows
// Indicamos el directorio temporal
// Ejecutamos la sentencia SQL con salida
a nuestro directorio
// Declaramos la cadena que contiene la
sentencia ORDER BY
// Posiciona la salida de archivos a la
ruta temporal
// Ejecuta la sentencia SQL
If nResult # 0
*** END HEADER -- no elimine esta línea
class ListInspeccionesClienteReport of REPORT
this.QISPECCIONES1 = new QUERY()
endclass |
|
Observe que la línea sql queda como Código Duro o Hardcode (cuando algo es programado de modo que no se puede alterar sin tocar el código fuente, en este caso la ruta del archivo .dbf), a menos que usted quiera asignar las propiedades .datalink también en el encabezado del archivo .rep .
Sin duda que debe haber más formas de lograr el rodeo o atajo para evitar estos problemas y cualquier ejemplo o mejora que tengan será bienvenido para ofrecer mayores alternativas a la comunidad de programadores de dBL
Reuniendo los Archivos
Cree y compile su aplicación. A menos que sea inevitable, no vincule sus imágenes a su programa ejecutable. Cree una carpeta (directorio) de CD. Si es posible, cree carpetas separadas para los datos e imágenes. Asegúrese de que sus rutas a estas carpetas sean correctas para que sus aplicaciones puedan encontrar los datos e imágenes en el CD. Después reúna los archivos del runtime de dBASE. Estos archivos necesitan ser puestos en el directorio de la raíz del CD junto con la aplicación y el BDE. Si sólo los archivos de los datos permanecerán en el CD, entonces necesitará crear un programa de instalación para los archivos del runtime y BDE (como se comentó antes). La lista de archivos del runtime puede obtenerse en su directorio /Bin de dBASE.
Tabla de archivos Runtime para
el Visual dBASE 7.x
Nombre de Archivo para VdB 7.5 | Explicación | |
VDB7RUN.EXE | Archivo núcleo del Runtime de dBASE | |
VDB70009.DLL | Biblioteca predeterminada del Idioma Inglés | |
VDB70007.DLL | Biblioteca predeterminada del Idioma Alemán | |
VDB70010LL | Biblioteca predeterminada del Idioma Italiano | |
VDB7000a.DLL | Biblioteca predeterminada del Idioma Español | |
VDB7000c.DLL | Biblioteca predeterminada del Idioma Frances | |
RESOURCE.DLL | Biblioteca de recursos para iconos, bitmaps, etc | |
Tabla de archivos Runtime para
dB2K
Nombre de Archivo para dB2K | Explicación | |
DB2KRUN.EXE | Archivo núcleo del Runtime de dB2K runtime | |
DB2Kr_en.DLL | Biblioteca predeterminada del Idioma Inglés | |
DB2Kr_xx.DLL | Libreria del Runtime | |
RESOURCE.DLL | Biblioteca de recursos para iconos, bitmaps, etc | |
Estos archivos necesitarán ser puestos en el directorio raíz del CD si es donde se halla el archivo exe de la aplicación o en cualquier carpeta del CD que lo contenga. Si va a ejecutar su aplicación desde otra unidad que no sea el CD, pero quiere acceder los datos de ese CD, puede copiar los archivos runtime (y tambien los archivos del BDE) a la carpeta donde se encuentra su aplicación. teniendo todos estos archivos en la misma carpeta, usted no tiene que modificar el registro o cualquier archivo ini, o tener conflictos mezclando archivos de configuración del BDE, o preocuparse por otros programas instalados que también usan el BDE, como Delphi o Corel Suite.
Notas acerca de la ejecución de una copia de los archivos runtime de db2K y el BDE: Cuando es cargado un archivo exe de dBASE, necesita encontrar los archivos del runtime de dBASE y del BDE para funcionar. En primer lugar busca estos archivos en la misma carpeta que residen los archivos exe, y para hacer esto no necesita información del registro. De modo que, aunque esto necesite más espacio extra de la unidad de disco duro por cada aplicación de dB2K que tenga en el disco duro de su computadora de desarrollo, podría tener una copia de los archivos runtime/BDE en la carpeta de cada aplicación y no necesita entradas de registro para estos archivos. Puede aprovechar esta ventaja al distribuir una demostración u otra aplicación en un CD—sólo incluya los archivos del runtime y el BDE en la misma carpeta como el archivo SuAplicacion.exe en el CD, y no habrá necesidad de lidiar en configuraciones de registro. Por otra parte, si usted prefiriera ejecutar el runtime y BDE de la unidad de disco duro, puede usar un programa de instalación como el Inno Setup para instalar “formalmente” los archivos del BDE y el runtime en la unidad de disco duro con sus entradas apropiadas de registro. Lea otro artículo en el dBulletin y el documento HowTo sobre Inno Setup de Ken Mayer.
El BDE es necesario para acceder
a cualquier tabla relacionada con datos.
Tabla de archivos requerida para
el BDE. Estos archivos pueden encontrarse en la carpeta de BDE.
Archivos núcleo del BDE | Comentarios | |
IDASCI32.DLL | Para acceso de archivos ASCII | |
IDBAT32.DLL | Para movimientos de archivos por lotes | |
IDDA3532.DLL | Para acceso a base de datos Microsoft Access | |
IDDAO32.DLL | Para acceso a base de datos Microsoft Access | |
IDDBAS32.DLL | Para acceso a base de datos dBASE | |
IDDR32.DLL | Para Repositorio de Datos (solo Paradox) | |
IDODBC32.DLL | Para acceso de BDE a drivers ODBC | |
IDPDX32.DLL | Para acceso a bases de datos Paradox | |
IDQBE32.DLL | motor de consultas de QBE | |
IDR20009.DLL | recuros de BDE | |
IDAPI32.DLL | DLL Principal del Sistema Main BDE | |
IDSQL32.DLL | motor de consultas SQL (incluyendo SQL Local) | |
IDPROV32.DLL | Para provedores de MIDAS | |
Archivos Driver de Lenguaje | ||
BANTAM.DLL | Imotor de Internacionalización | |
*.CVB | Archivos de configuración de Caracter | |
*.BTL | Locales | |
BLW32.DLL | motor de Expresión | |
Otros archivos que también son necesarios
Otros archivos que se necesitan absolutamente son su SuAplicacion.exe y todos sus archivos de imágenes que necesite. Los archivos de imágen pueden residir en su propio directorio de imágen; sólo tenga cuidado sobre la ruta de VdB7.5 que apunte a la carpeta correcta para acceder esas imágenes. En dB2K, el DEO se encarga de esto.
También necesitará
crear un archivo de SuAplicacion.ini que
pondría en el mismo directorio como
SuAplicacion.exe en el
CD. Como con cualquiera aplicación compilada de dBASE, el
archivo ini debe tener el mismo nombre de archivo que el archivo exe. Si
está instalando su aplicación en la unidad de disco duro,
asegurese que su archivo ini sea marcado como “sólo lectura” y que
no haya ninguna sección [Directory]
dentro del archivo ini.
Parece que a dBASE le gusta escribir el último directorio al que
accedió en el archivo ini. La próxima vez que usted
intente ejecutar la aplicación, fallará porque no hay ninguna
entrada del registro para el runtime y los archivos del BDE. Ésta
es una cosa muy importante para recordar. También antes de
que marque sus archivos ini como “sólo lectura”, necesita agregar
una sección a su archivo ini. Abra su archivo ini en un editor
del texto y agregue una seccion BDE [IDAPI]
que presente su archivo
de configuración BDE. Algo así:
[IDAPI] ConfigFile01=IDAPI32.cfg |
|
Después de hacer esto, cree
un nuevo archivo idapi32.cfg o
uno que ya haya usado antes. Puede usar la herramienta de configuración
BDE (bdecfg32.exe)
que se encuentra en su directorio del BDE, agregando o eliminamos drivers
o alias innecesarios. Ambos tipos de archivo (.ini
y
.cfg) necesitan ser puestos
en el directorio de la raíz del CD o en el mismo directorio como
su aplicación, si está instalando a la unidad de disco duro.
Despues, si usted quiere que su
aplicación se ejecute automáticamente cuando el CD es colocado
en el drive de CD-ROM, también necesitará crear un archivo
de autorun.inf y ponerlo en la raíz del CD. El autorun.inf
necesita tener el comando de ejecución (open)
en él con el nombre del archivo necesita ser ejecutado. Algo así:
[autorun] open=SuAplicacion.exe |
|
Precaucion: no he probado ningún control ActiveX (ocx) que se ejecute desde el CD. Normalmente, los archivos ocx necesitan ser registrados. Si usted va a usar un ocx, necesita tener un procedimiento de la instalación o encontrar alguna otra manera de registrar el ocx (esto puede hacerse de dentro del dBASE copiando el ocx a una carpeta en la unidad de disco duro y entonces usar el comando de ejecución para registrar el ocx).
Grabando el CD
Todos lo que queda ahora es crear una imágen del CD y grabarlos. yo cerraría el CD después, esto detendría a cualquiera de intentar borrar o cambiar archivos en el CD con su propio escritor de CD.
Conclusión
Ésta puede no ser la única y mejor manera de correr un demo u otra aplicación desde un CD, pero espero que este artículo le proporcionará un útil punto de partida. Si cualquiera tiene un mejor método o una mejora del tema descrito arriba será bienvenido.
Usando las técnicas descritas en este artículo, otras posibilidades interesantes para dBASE vienen a mi mente, usted podría crear su propia aplicación de auto-ejecución, o su propio programa de instalación para distribuir sus aplicaciones. Imagine que tiene todo escrito incluyendo el paquete de instalación en dBASE. Eso puede hacerse!
Gracias a Santiago Gil por su excelente revisión y mejoras aportadas para la traducción al Español.
Traducción por : Juan Manuel
Espinosa, Desarrollador de Software en México, D.F.
Administrador de la Comunidad
de dBASE en Español
puede contactarlo por e-mail en:
juan_espinosa_mx ARROBA yahoo PUNTO com
ó db2kSistemas ARROBA netscape PUNTO net