Hola, bienvenido al segundo capitulo de Crear Paquete de Instalación de una Aplicación con Base de Datos Integrada, Local, Red Local y en la Web-Nube/ Visual Studio.
Ahora crearemos el ejecutable, instalador o paquete de instalación de una aplicación con base de datos integrada, es decir, incrustada en la misma aplicación. Recuerden que en este caso, no se usan base de datos reales en un motor de base de datos, en su lugar se usan archivos que imitan una base de datos, es decir, son archivos que permiten almacenar datos permanentemente. Entre ellos tenemos:
- SQLite (Puedes manipular los datos mediante comandos Transact-SQL)
- Microsoft Access (Puedes manipular los datos mediante comandos Transact-SQL)
- XML (Puedes manipular los datos mediante LINQ)
- JSON (Puedes manipular los datos mediante LINQ)
- Entre otras.
Este modelo se usa principalmente para aplicaciones simples, o para guardar datos de configuración y caché de aplicaciones empresariales o complejas.
Para este tutorial, crearemos el paquete de instalación del Proyecto Login completo de WinForm y C#, con arquitectura en capas.
Las librerías que descargas desde NuGet u otra fuente se incluyen automáticamente en la carpeta de salida de la compilación (Debug), por lo tanto, también se incluirá en el paquete de instalación. Todos los archivos de la carpeta Debug (Carpeta de Salida), ya es el código ejecutable real de nuestra aplicación. Las herramientas que crean los instaladores simplemente empaquetan todos los archivos de la carpeta de salida, para luego poder instalarlos en cualquier otra computadora.
Inclusive no es necesario crear el instalador, puedes copiar todos los archivos de la carpeta Debug y pegarlos en otra computadora. Básicamente el contenido del directorio Debug, es una aplicación portable, que solamente necesitas abrir el ejecutable de la aplicación (.exe).
Pre-Tutorial: Preparar Archivo – Importante
Volviendo al tema, al crear la base de datos en un archivo (XML, JSON, Access, Etc), este no se incluye automáticamente en la carpeta Debug, por lo tanto no se incluirá en el paquete de instalación (Setup).
Es muy importante que el archivo también esté incluida en la carpeta de salida de la compilación, no solamente para que se incluya al paquete de instalación, sino que, para manipular los datos almacenados en el archivo, simplemente necesitamos indicar el nombre del archivo, por ejemplo para acceder a una base de datos Microsoft Access:
private OleDbConnection MyConnection = new OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source= myDataBase.accdb;");
En muchas ocasiones vi que apuntan al directorio de donde está el archivo, por ejemplo para acceder a una base de datos Microsoft Access:
private OleDbConnection MyConnection = new OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source= C:\myFolder\myDataBase.accdb;");
Obviamente esto te va a funcionar de maravilla en tiempo de desarrollo, ya que el archivo está en tu computadora. Pero cuando el usuario instale y ejecute la aplicación, simplemente le saldrá un error, indicando que el archivo no existe en tal ubicación, ya que el usuario inclusive no tiene ese directorio ni el archivo.
Es por ello, que debemos de incluir el archivo en la carpeta de salida de la compilación. Para lograr todo lo anterior hay dos pasos esenciales que realizar en las propiedades del archivo (XML, JSON, ACCESS):
- En Accion de Compilacion, colocamos Contenido.
- En Copiar en el Directorio de Salida, colocamos Copiar si es Posterior (Para que los datos se adicionen eventualmente y permanentemente. Si deseas que los datos se guarden temporalmente, selecciona copiar siempre.)
Luego de realizar lo anterior, podemos estar seguros que el archivo se incluirá en el instalador y podemos usarlo sin indicar un directorio determinado.
Tutorial: Crear Setup – ClickOnce
Visual Studio posee el componente ClickOnce, incorporado desde la versión de .NET Framework 2.0. Esta herramienta nos permite crear el paquete de instalación de manera rápida y sencilla.
Paso 1: Propiedades de la Aplicación
Abrimos las propiedades de la aplicación, en caso que uses arquitectura en capas, abre las propiedades de Capa de Presentación (Proyecto de aplicación), la capa de dominio, acceso a datos u otras capas se incluirán en el paquete de instalación, ya que la capa de presentación referencia/ importa la capa de dominio->acceso a datos->entre otros.
Paso 2: Opciones de Aplicación
Nos dirigimos a la pestaña Aplicación, en esta opción podemos:
- Puedes cambiar el Nombre del Ensamblado, con un nombre en específico para tu aplicación. En este caso, colocaré AppLoginXML.
- Puedes agregar Información de Ensamblado.
- Puedes agregar un Icono para el ejecutable de la aplicación.
Paso 3: Firmar Aplicación
Es opcional firmar la aplicación, pero es importante hacerlo, yo no firmaré porque no tengo instalada ClickOnce completamente.
Paso 4: Publicar Aplicación – Crear Instalador
Finalmente nos dirigimos a la pestaña publicar:
- Elegimos la ubicación donde se publicará la aplicación, podemos guardarlo en el sistema de archivos de nuestra computadora o en un servidor FTP. Sería recomendable guardarlo en un servidor FTP, para que la aplicación busque actualizaciones. En esta ocasión, guardaré en la carpeta Setup de mi escritorio.
- En archivos de aplicación, debemos asegurarnos que todos los archivos (DLL, XML, Access, JSON) deben tener como estado Incluir.
- Requisitos previos, son los componentes necesarios para que la aplicación funcione.
- Actualizaciones, es una opción muy importante si distribuyes aplicaciones para varios usuarios en un lugar determinado, para el mundo o aplicaciones. Supongamos que en algún momento es necesario cambiar la cadena de conexión, o algún método. Obviamente, una vez realizado el cambio, no desinstalarás la aplicación, y volver a instalarlo en todas las computadoras. Imagínate realizarlo en decenas de computadoras, sería muy tedioso.
Por lo tanto, podemos publicar las actualizaciones en un servidor local, un sitio FTP o en un recurso compartido en red.
- Opciones de publicación, podemos indicar el Nombre de editor, Nombre de producto, Opciones del manifiesto (Un manifiesto de aplicación es un archivo que describe e identifica los ensamblados en paralelo, a los que debe unirse una aplicación en tiempo de ejecución. Los manifiestos también describen los metadatos para archivos que son privados para la aplicación. la dependencia de las librerías y la información de las actualizaciones también son descritas en el manifiesto).
- Finalmente, para crear el paquete de instalación, seleccionamos publicar ahora.
Paso Final: Instalar aplicación en cualquier computadora
Puedes instalar la aplicación en cualquier computadora sin necesidad de un servidor de base de datos.
Bueno eso es todo en este tutorial. Sin embargo, la herramienta ClickOnce es muy limitada. Si se dieron cuenta al instalar la aplicación, no permite elegir la ubicación en dónde se instalará la aplicación, tampoco podemos diseñar la interfaz del instalador, ni agregar los términos y condiciones.
Existen otras herramientas para crear paquetes de instalación de manera más avanzada y profesional, por ejemplo:
- InstallShield
- Wix tool.
- Inno setup.
- Advance Install.
- Nullsoft ScriptTable Install System.
- Setup Factory.
- Entre otras.
Entre todos estos, con Wix tool, puedes crear paquetes de instalación muy complejos y profesionales, sin embargo, tiene una curva de aprendizaje muy compleja, por lo que te tomará algún tiempo aprenderlo.