Despliegue
Introducción
El final del ciclo de desarrollo es una fase crítica para cualquier proyecto. El código fuente de la aplicación se ha completado, probado, depurado y, eventualmente, optimizado, pero todavía es necesario abordar una problemática: ¿cómo proveer esta aplicación a los usuarios?
Se pueden utilizar diferentes técnicas de publicación. La más común es la implementación a través de un archivo de instalación de Windows Installer. Pero la publicación también se puede realizar como un paquete de archivos binarios con el SDK de .NET Core o con la tecnología ClickOnce para aplicaciones más antiguas dirigidas al framework .NET. Sin embargo, esta última forma de implementación, con toda probabilidad, nunca estará disponible con .NET Core, ya que Microsoft desea priorizar la tecnología MSIX. Esto le permite crear paquetes de aplicaciones que se pueden distribuir en particular a través de Microsoft Store. Por lo tanto, Visual Studio también incluye un tipo de proyecto para crear paquetes de instalación MSIX.
Windows Installer
Windows Installer es un servicio de despliegue disponible para todos los sistemas operativos de Microsoft. El principio de funcionamiento de este servicio consiste en la agrupación de todos los componentes de una aplicación en un único archivo ejecutable que puede distribuirse fácilmente a los usuarios.
Cuando una aplicación se instala mediante Windows Installer, muchas operaciones que identifican las operaciones realizadas se almacenan en el sistema. Esta información es relativa, en particular, a los archivos copiados, las modificaciones realizadas en el registro de Windows o el registro de componentes externos necesarios para el correcto funcionamiento de la aplicación. Esta información resulta esencial: permiten al servicio de Windows Installer realizar convenientemente la desinstalación de la aplicación, si se solicita.
Cada una de las modificaciones realizadas durante la instalación se aborda durante la desinstalación de cara a no dejar ninguna traza. No obstante, Windows Installer verifica la presencia de componentes compartidos antes de realizar cualquier eliminación para evitar afectar al comportamiento de otras aplicaciones que podrían estar utilizando estos componentes.
Cuando una aplicación utiliza Windows Installer, su proceso de instalación es transaccional, es decir, o bien la instalación funciona bien en su conjunto, o bien se anula completamente. Esta anulación supone la eliminación completa de los archivos que se hubieran copiado así como la restauración del estado original del sistema. Este último queda, siempre, en un estado coherente.
Windows Installer proporciona también un mecanismo de reparación de una aplicación que remplaza los archivos corruptos o faltantes.
La creación de un ejecutable Windows Installer se realiza mediante un tipo de proyecto específico de Visual Studio. De todos modos, los modelos de proyecto asociados no están disponibles en la instalación de Visual Studio 2017. Microsoft pone a disposición del usuario una extensión dedicada al soporte de este tipo de proyectos en Visual Studio Marketplace: Microsoft Visual Studio Installer Projects.
Se puede descargar rápidamente (menos de 5 MB) de la dirección: https://marketplace.visualstudio.com/items?itemName=VisualStudioProductTeam.MicrosoftVisualStudio2017InstallerProjects...
Archivos binarios (.exe, .dll)
.NET Core ha sido diseñado para permitir el desarrollo de aplicaciones multiplataforma: se admiten Windows, Mac OS X y Linux. Sin embargo, la tecnología que acabamos de describir permite el despliegue, como su nombre indica, solo en Windows ... lo que obviamente va en contra del objetivo inicial.
Afortunadamente, .NET Core SDK ofrece la posibilidad de publicar una aplicación de la forma más simple y, por lo tanto, más común: un conjunto de archivos binarios. El resultado de la operación se puede implementar tal cual desde una ubicación (por ejemplo) con una simple copia de archivos, y también puede ser el origen de una etapa de empaquetado específico, para la plataforma de destino.
La publicación de la aplicación se desencadena desde el menú contextual del proyecto, en el Explorador de soluciones.
Si no se define ningún destino de publicación para el proyecto, se muestra un asistente para definir una configuración de publicación. El tipo de proyecto determina los destinos disponibles. Para una aplicación de consola, las opciones son Azure y Carpeta. La primera permite implementar la aplicación como una tarea programada en la nube de Azure. Sin embargo, los detalles de cómo funciona no son relevantes para este libro. La segunda opción le permite desplegar los archivos que componen...
ClickOnce
ClickOnce es una tecnología de la que pueden sacar provecho los desarrolladores para desplegar sus aplicaciones y sus actualizaciones. Simplifica el proceso de instalación y requiere una mínima intervención por parte del usuario final.
Esta tecnología está, con toda probabilidad, al final de su vida útil. Se introdujo con el framework .NET 2.0, pero no es (y, a priori, no será) compatible con el despliegue de aplicaciones destinadas a .NET Core. Uno de los expertos de la rama "Visual Studio/.NET" de Microsoft, Scott Hunter, ha indicado en el blog del equipo .NET que Microsoft favorecerá la tecnología de implementación MSIX (sin anunciar, sin embargo, la retirada de ClickOnce). A pesar de esto, ClickOnce se sigue utilizando hasta el día de hoy para la publicación de aplicaciones de escritorio desarrolladas con el marco .NET y, por lo tanto, merece ser descrito por "razones de compatibilidad".
1. La tecnología ClickOnce
La tecnología ClickOnce se denomina "inteligente", pues permite superar ciertos escollos que se encuentran, con frecuencia, durante la fase de despliegue.
En términos generales, para poder instalar una aplicación, es necesario disponer de un ejemplar del programa de instalación correspondiente sobre un dispositivo físico o en descarga. En ambos casos, el usuario posee la totalidad de los componentes de la aplicación, a menudo como un paquete completo, antes de realizar la instalación efectiva.
Además de este modo de instalación clásico, ClickOnce ofrece la posibilidad de realizar la instalación de manera remota a través de Internet o de un recurso compartido de red. Se requiere, únicamente, un ejecutable mínimo para comenzar el proceso. Este está disponible, generalmente, mediante un vínculo en una página web o una intranet y no ocupa más que unos pocos kilobytes.
La gestión de las dependencias compartidas por varias aplicaciones puede volverse problemática muy rápidamente, en particular debido a conflictos entre versiones. ClickOnce simplifica esta gestión aislando las aplicaciones de manera que sean autónomas y no puedan encontrarse frente a situaciones de conflicto.
La actualización de una aplicación...
MSIX
La tecnología MSIX está destinada al despliegue de todo tipo de aplicaciones de escritorio para Windows. Ofrece la capacidad de crear paquetes de instalación que se pueden implementar a través de la Windows Store.
Visual Studio integra el soporte del packaging MSIX a través de un tipo de proyecto dedicado llamado Proyecto de paquete de aplicación de Windows.
Al crear un proyecto de este tipo, un cuadro de diálogo permite definir la versión mínima de Windows 10 soportada por la aplicación, así como la versión para la que se ha diseñado la aplicación.
La estructura del proyecto creado es relativamente simple: contiene solo un archivo Package.appxmanifest y algunos archivos PNG agrupados en un directorio llamado Images.
Además de estos elementos físicos, el proyecto contiene un elemento lógico: Aplicaciones. El menú contextual asociado con este elemento contiene solo una opción, Agregar una referencia, que le permite definir los archivos binarios que se pueden implementar usando el paquete de instalación.
Una vez referenciados los proyectos relevantes, es recomendable elegir cuál tendrá prioridad sobre todos los demás durante la ejecución del paquete instalado: este será el punto de entrada, que se puede definir mediante el Menú contextual.
Al hacer doble clic en el archivo Package.appxmanifest en el explorador de soluciones, se abre una página dedicada a la configuración del paquete. Los diversos parámetros asociados con el paquete se agrupan en seis pestañas....