Implementación de Windows Installer en Windows Vista
Actualización: noviembre 2007
La tecnología de Windows Installer admite la instalación de software en el sistema operativo Windows Vista. El usuario final que instala aplicaciones en Windows Vista solo debe recibir solicitudes para cada instalación de componente que requiera elevación, aunque el equipo del usuario se ejecute bajo Control de cuentas de usuario (UAC). Para obtener información sobre cómo configurar UAC, vea Windows Vista y Visual Studio.
Elevación de aplicaciones
Normalmente, Setup.exe (también conocido como el arranque) no se ejecuta con permisos elevados; se ejecuta en el nivel de permisos del usuario actual. Por tanto, la instalación no solicita la elevación cuando se inicia la instalación de la aplicación final. Sin embargo, conviene observar que un archivo .msi normalmente pregunta al usuario, mientras que el archivo Setup.exe no lo hace.
En el manifiesto incrustado de UAC del arranque, el nodo requestedExecutionLevel especifica que la instalación se ejecuta como usuario actual (asInvoker):
<requestedExecutionLevel level="asInvoker" />
Sin embargo, puede elevar la instalación de la aplicación si debe hacerlo. Por ejemplo, la modificación de valores de configuración de Internet Information Services (IIS) en un proyecto de programa de instalación web requiere privilegios administrativos, al igual que la instalación de ensamblados en la caché de ensamblados global. La solicitud de elevación se produce después de la instalación de los requisitos previos pero antes de la instalación de la aplicación.
Para elevar los permisos para una instalación, abra el archivo de proyecto (.vdproj). En la sección MsiBootstrapper del archivo de proyecto, establezca la propiedad RequiresElevation en True. Esta propiedad no está disponible en el entorno de desarrollo integrado (IDE) de Visual Studio. Por consiguiente, debe usar el archivo de proyecto. Para obtener más información, vea RequiresElevation (Propiedad).
Elevación asistida por administrador
Windows Installer admite la elevación asistida por administrador en Windows Vista. En este escenario, se piden al usuario credenciales de administrador, y el administrador escribe la contraseña del usuario. Para que se admita este escenario, el arranque establece la propiedad AdminUser en True cuando en el equipo se está ejecutando Windows Vista o una versión de Windows posterior.
Nota: |
---|
Si está ejecutando Windows Vista en un equipo que no utiliza UAC y no es administrador, AdminUser seguirá establecido en True. Por consiguiente, se deben escribir los instaladores .exe (como SQLExpress32.exe) para detectar los permisos adecuados y generar un código de salida concreto en caso de no disponer de permisos suficientes. Debe crear Setup.exe para que se detecte este código de salida y se muestre un mensaje indicando que se necesita un administrador. |
Elevación de requisitos previos
Windows Vista elevará los requisitos previos para la instalación de componentes cuando sea preciso. El arranque no realiza ninguna elevación; cuando Windows Vista se ejecuta bajo UAC, emite un mensaje para cada componente necesario que debe elevarse, a menos que ya esté instalado. Si se produce un error al elevar un paquete, también se produce un error en el arranque y se envía el mensaje correspondiente.
Elevación de acciones personalizadas
Las acciones personalizadas que se crean en el Editor de acciones personalizadas se ejecutan con permisos elevados. Las acciones personalizadas no deben tener acceso a los datos específicos del usuario, como el Registro o el sistema de archivos, porque la acción personalizada no se ejecutará en la cuenta del usuario que invoca.
De forma predeterminada, las acciones personalizadas se ejecutan con permisos elevados porque el valor predeterminado de la propiedad NoImpersonate es True en el Editor de acciones personalizadas. El cambio de NoImpersonate a False exigiría que la acción personalizada suplantase al usuario que invoca, que podría haber reducido los permisos.
Diferencias entre las versiones de Visual Studio
Conviene observar también que habrá diferencias entre la manera en que se ejecutarán los proyectos de programa de instalación de Visual Studio 2005 y Visual Studio 2008 bajo UAC de Windows Vista.
La detección del instalador integrado de Windows Vista solicita consentimiento cuando se ejecuta bajo UAC. Un arranque (Setup.exe) generado con Visual Studio 2005 siempre solicita consentimiento, con independencia de lo que se esté instalando. Dado que Setup.exe y todos sus procesos se ejecutan con un token de administrador en Windows Vista, la instalación de la aplicación final se realizará con privilegios elevados. Si un usuario ejecuta Setup.exe con elevación asistida por administrador, la aplicación se instalará bajo el perfil del usuario elevado (no bajo el perfil de administrador).
En Visual Studio 2008, el comportamiento de Setup.exe cambia; no solicita la elevación cuando se inicia. Para evitar la solicitud de elevación, el manifiesto incrustado del arranque especifica que Setup.exe se ejecute con un nivel de ejecución solicitado de asInvoker. Esto proporciona la ventaja de que la instalación de la aplicación final no se ejecuta con permisos elevados, aunque se sigue permitiendo la instalación de los componentes necesarios con permisos elevadas cuando sea preciso. El arranque llama a ShellExecute para iniciar los requisitos previos. Windows Vista recibe esta llamada, realiza la detección de la instalación y emite un mensaje de usuario antes de la instalación.
La desventaja de este cambio es que se emite un mensaje para cada componente necesario que debe instalarse, además de la propia aplicación. Sin embargo, si todos los requisitos previos ya están en el equipo, puede que la instalación no emita mensajes. Además, no debe haber comprobaciones externas que necesiten elevación. Las comprobaciones externas funcionarán, pero el usuario recibirá varias solicitudes de elevación por cada comprobación externa, además de emitirse mensajes para el instalador.
Vea también
Conceptos
Implementación de Windows Installer en Windows Vista
Derechos de usuario y Visual Studio