Seguridad e implementación ClickOnce

ClickOnce es una tecnología de implementación para crear aplicaciones con actualización automática basadas en Windows, que se puede instalar y ejecutar con una interacción mínima por parte del usuario. Visual Studio proporciona compatibilidad completa con la publicación y actualización de aplicaciones implementadas con la tecnología ClickOnce si ha desarrollado sus proyectos con Visual Basic y Visual C#. Para obtener información sobre la implementación de aplicaciones de Visual C++, vea Implementación de ClickOnce para aplicaciones de Visual C++.

La implementación de ClickOnce supera tres problemas importantes de la implementación:

  • Dificultades en la actualización de aplicaciones. Con la implementación de Microsoft Windows Installer, cada vez que se actualiza una aplicación el usuario puede instalar una actualización, un archivo msp, y aplicarla al producto instalado; con la implementación de ClickOnce puede proporcionar actualizaciones automáticamente. Solo se descargan las partes de la aplicación que han cambiado y, a continuación, se vuelve a instalar la aplicación actualizada completa desde una nueva carpeta paralela.

  • Impacto en el equipo del usuario. Con la implementación de Windows Installer, las aplicaciones suelen depender de componentes compartidos, con el potencial de conflictos de control de versiones; con la implementación de ClickOnce, cada aplicación es independiente y no puede interferir con otras aplicaciones.

  • Permisos de seguridad. La implementación de Windows Installer requiere permisos administrativos y solo permite la instalación limitada de usuarios; la implementación de ClickOnce permite a los usuarios no administrativos instalar y conceder solo los permisos de seguridad de acceso al código necesarios para la aplicación.

    En el pasado, estos problemas a veces provocaban que los desarrolladores decidieran crear aplicaciones web en lugar de aplicaciones basadas en Windows, sacrificando una interfaz de usuario enriquecida para facilitar la instalación. Mediante el uso de aplicaciones implementadas mediante ClickOnce, puede tener lo mejor de ambas tecnologías.

¿Qué es una aplicación ClickOnce?

Una aplicación ClickOnce es cualquier Windows Presentation Foundation (.xbap), Windows Forms (.exe), aplicación de consola (.exe) o solución de Office (.dll) publicada mediante tecnología ClickOnce. Puede publicar una aplicación ClickOnce de tres maneras diferentes: desde una página web, desde un recurso compartido de archivos de red o desde medios heredados, como un CD-ROM. Una aplicación ClickOnce se puede instalar en el equipo de un usuario final y ejecutarse localmente incluso cuando el equipo está sin conexión o se puede ejecutar en un modo de solo conexión sin instalar permanentemente nada en el equipo del usuario final. Para más información, consulte el artículo Elección de una estrategia de implementación de ClickOnce.

Las aplicaciones ClickOnce pueden ser autoactualizables: pueden buscar versiones más recientes a medida que estén disponibles y reemplazar automáticamente los archivos actualizados. El desarrollador puede especificar el comportamiento de actualización, y un administrador de red puede igualmente controlar las estrategias del proceso, por ejemplo, al marcar actualizaciones como obligatorias. La actualizaciones también pueden revertirse a una versión anterior por el usuario final o por un administrador. Para obtener más información, consulte Selección de una estrategia de actualización de ClickOnce.

Dado que las aplicaciones ClickOnce están aisladas, la instalación o ejecución de una aplicación ClickOnce no puede interrumpir las aplicaciones existentes. Las aplicaciones ClickOnce son independientes; cada aplicación ClickOnce se instala y se ejecuta desde una caché segura por usuario y por aplicación. Las aplicaciones ClickOnce se ejecutan en las zonas de seguridad de Internet o intranet. Si resultara necesario, la aplicación puede solicitar permisos de seguridad elevados. Para más información, consulte Protección de las aplicaciones ClickOnce.

Funcionamiento de la seguridad de ClickOnce

La seguridad básica de ClickOnce se basa en certificados, directivas de seguridad de acceso de código y en el aviso de confianza de ClickOnce.

Certificados

Los certificados Authenticode se usan para comprobar la autenticidad del publicador de la aplicación. Al usar Authenticode para la implementación de aplicaciones, ClickOnce ayuda a evitar que un programa dañino se interprete como un programa legítimo procedente de un origen de confianza establecido. Opcionalmente, también se pueden usar certificados para firmar la aplicación y los manifiestos de implementación para demostrar que los archivos no se han alterado. Para obtener más información, consulte ClickOnce y Authenticode. Los certificados también se pueden usar para configurar equipos cliente para que tengan una lista de editores de confianza. Si una aplicación procede de un editor de confianza, se puede instalar sin ninguna interacción del usuario. Para más información, vea Introducción a la implementación de aplicaciones de confianza.

Seguridad de acceso del código

La seguridad de acceso del código contribuye a limitar el acceso que tiene el código a operaciones y recursos protegidos. En la mayoría de los casos, puede usar zonas de Internet o intranet local para limitar la aplicación a confianza parcial. Use la página Seguridad de ProjectDesigner para solicitar la zona adecuada para la aplicación. También puede depurar aplicaciones con permisos restringidos para emular la experiencia del usuario final. Para más información, vea Seguridad de acceso del código para aplicaciones ClickOnce.

Solicitud de fiabilidad de ClickOnce

Si la aplicación solicita más permisos de los que permite la zona, se puede pedir al usuario final que tome una decisión de confianza. El usuario final puede decidir si las aplicaciones ClickOnce, como las aplicaciones de Windows Forms, las aplicaciones de Windows Presentation Foundation, las aplicaciones de consola, las aplicaciones de explorador XAML y las soluciones de Office son de confianza para ejecutarse. Para obtener más información, vea Configuración de comportamiento de confirmaciones de confianza de ClickOnce.

Cómo funciona la implementación ClickOnce

La arquitectura de implementación básica de ClickOnce se basa en dos archivos de manifiesto XML: un manifiesto de aplicación y un manifiesto de implementación. Los archivos se usan para describir desde dónde se instalan las aplicaciones ClickOnce, cómo se actualizan y cuándo se actualizan.

Publicación de aplicaciones ClickOnce

El manifiesto de aplicación describe la propia aplicación. Esto incluye los conjuntos, las dependencias y los archivos que componen la aplicación, los permisos necesarios y la ubicación donde estarán disponibles las actualizaciones. El desarrollador de aplicaciones crea el manifiesto de aplicación mediante el Asistente para publicación en Visual Studio (herramienta Publicar de .NET Core y .NET 5 y versiones posteriores) o la Herramienta de generación y edición de manifiestos (Mage.exe) del Kit de desarrollo de software (SDK) de Windows. Para más información, consulte:

El manifiesto de implementación describe cómo se implementa la aplicación. Esto incluye la ubicación del manifiesto de aplicación y la versión de la aplicación que deben ejecutar los clientes.

Nota:

En ClickOnce para .NET Core 3.1 y .NET 5, o posterior, use dotnet-mage.exe en lugar de Mage.exe. Para obtener más información, consulte ClickOnce para .NET.

Implementación de aplicaciones ClickOnce

Una vez creado, el manifiesto de implementación se copia en la ubicación de implementaciones. Puede tratarse de un servidor web, un recurso compartido de archivos de red o algún medio heredado, como CD-ROM. El manifiesto de aplicación y todos los archivos de aplicación también se copian en una ubicación de implementación que se especifica en el manifiesto de implementación. Puede ser la misma que la ubicación de implementación o una ubicación diferente. Al usar el Asistente para publicación en Visual Studio, las operaciones de copia se realizan automáticamente.

instalación de aplicaciones ClickOnce

Después de implementarla en la ubicación de implementaciones, los usuarios finales pueden descargar e instalar la aplicación haciendo clic en un icono que representa el archivo de manifiesto de implementación en una página web o en una carpeta. En la mayoría de los casos, al usuario final se le presenta un cuadro de diálogo sencillo que pide al usuario que confirme la instalación, después de lo cual se inicia la instalación y la aplicación se inicia sin intervención adicional. En los casos en los que la aplicación requiera permisos elevados o si la aplicación no está firmada por un certificado de confianza, el cuadro de diálogo también pide al usuario que conceda permiso antes de que la instalación pueda continuar. Aunque las instalaciones ClickOnce son por usuario, la elevación de permisos puede ser necesaria si hay requisitos previos que requieren privilegios de administrador. Para obtener más información sobre los permisos elevados, consulte Protección de aplicaciones ClickOnce.

Los certificados pueden ser de confianza a nivel de equipo o empresa, de modo que las aplicaciones ClickOnce firmadas con un certificado de confianza se puedan instalar de forma silenciosa. Para más información sobre certificados de confianza, consulte Introducción a la implementación de aplicaciones de confianza.

La aplicación se puede agregar al menú Inicio del usuario y al grupo Agregar o quitar programas del Panel de control. A diferencia de otras tecnologías de implementación, no se agrega nada a la carpeta Archivos de programa ni al registro y no se requieren derechos administrativos para la instalación.

Nota

También es posible evitar que la aplicación se agregue al menú Inicio y al grupo Agregar o quitar programas, lo que hace que se comporte como una aplicación web. Para más información, consulte el artículo Elección de una estrategia de implementación de ClickOnce.

Actualización de aplicaciones ClickOnce

Cuando los desarrolladores de aplicaciones crean una versión actualizada de la aplicación, generan un nuevo manifiesto de aplicación y copian archivos en una ubicación de implementación, normalmente una carpeta del mismo nivel en la carpeta de implementación de la aplicación original. El administrador actualiza el manifiesto de implementación para que apunte a la ubicación de la nueva versión de la aplicación.

Nota

Para realizar estos pasos se puede usar el Asistente para publicación en Visual Studio. Para .NET Core y .NET 5 y versiones posteriores, estos pasos los proporciona la herramienta Publicar.

Además de la ubicación de implementación, el manifiesto de implementación también contiene una ubicación de actualización (una página web o un recurso compartido de archivos de red) donde la aplicación comprueba si hay versiones actualizadas. Las propiedades de publicación ClickOnce se usan para especificar cuándo y con qué frecuencia la aplicación debe comprobar si hay actualizaciones. El comportamiento de actualización se puede especificar en el manifiesto de implementación o se puede presentar como opciones de usuario en la interfaz de usuario de la aplicación mediante las API de ClickOnce. Además, las propiedades Publish se pueden emplear para que las actualizaciones sean obligatorias o para deshacer la instalación y volver a una versión anterior. Para más información, consulte Elección de una estrategia de actualización de ClickOnce.

Instaladores de terceros

Puede personalizar el instalador de ClickOnce para instalar componentes de terceros junto con la aplicación. Debe tener el paquete redistribuible (.exe o archivo .msi) y describir el paquete con un manifiesto de producto independiente del idioma y un manifiesto de paquete específico del idioma. Para obtener más información, consulte Creación de paquetes de programa previo.

Herramientas ClickOnce

En la tabla siguiente se muestran las herramientas que se pueden usar para generar, editar, firmar y volver a firmar los manifiestos de aplicación e implementación. Para .NET Core y .NET 5 y versiones posteriores, las opciones similares a los atributos de MSBuild se establecen mediante el perfil Publicación.

Herramienta Descripción
Página Seguridad, Diseñador de proyectos Firma los manifiestos de aplicación e implementación Para .NET Core y .NET 5 y versiones posteriores, esta configuración se encuentra en el perfil Publicación.
Panel Publicar, Diseñador de proyectos Genera y edita los manifiestos de aplicación e implementación para las aplicaciones de Visual Basic y Visual C#. Para .NET Core y .NET 5 y versiones posteriores, esta configuración se encuentra en el perfil Publicación.
Mage.exe (Herramienta de generación y edición de manifiestos) Genera los manifiestos de aplicación e implementación para las aplicaciones de Visual Basic y Visual C# y Visual C++.

Firma y vuelve a firmar los manifiestos de aplicación e implementación

Se puede ejecutar desde scripts por lotes y el símbolo del sistema.
dotnetmage.exe (herramienta de generación y edición de manifiestos) Genera los manifiestos de aplicación e implementación para las aplicaciones de .NET 5 y versiones posteriores, C# y Visual Basic. El uso es equivalente a Mage.exe.

Firma y vuelve a firmar los manifiestos de aplicación e implementación

Se puede ejecutar desde scripts por lotes y el símbolo del sistema.
MageUI.exe (Herramienta de generación y edición de manifiestos, cliente gráfico) Genera y edita los manifiestos de aplicación e implementación.

Firma y vuelve a firmar los manifiestos de aplicación e implementación
GenerateApplicationManifest (tarea) Genera el manifiesto de aplicación.

Se puede ejecutar desde MSBuild. Para más información, consulte la Referencia de MSBuild.
GenerateDeploymentManifest (tarea) Genera un manifiesto de implementación.

Se puede ejecutar desde MSBuild. Para más información, consulte la Referencia de MSBuild.
SignFile (tarea) Firma los manifiestos de aplicación e implementación

Se puede ejecutar desde MSBuild. Para más información, consulte la Referencia de MSBuild.
Microsoft.Build.Tasks.Deployment.ManifestUtilities Desarrolle su propia aplicación para generar los manifiestos de aplicación e implementación.

En la tabla siguiente se muestra la versión de .NET Framework necesaria para admitir aplicaciones ClickOnce en estos exploradores.

Browser Versión de .NET Framework
Internet Explorer 2.0, 3.0, 3.5, 3.5 SP1, 4
Firefox 2.0 SP1, 3.5 SP1, 4
Chrome 3,5
Microsoft Edge 3,5