Directrices para paquetes
Dado que el Control de cuentas de usuario (UAC) de Windows Vista restringe los privilegios durante una instalación, los desarrolladores de paquetes de Windows Installer no deben asumir que su instalación siempre tiene acceso a todas las partes del sistema.
Un paquete de instalador que se puede implementar correctamente en usuarios estándar a través de la directiva de grupo debería funcionar en la mayoría de los casos con UAC en Windows Vista. Las excepciones a esto pueden producirse si la tabla InstallUISequence contiene la acción LaunchConditions o la tabla LaunchCondition contiene una condición basada en la propiedad Privileged. Por lo tanto, los desarrolladores de paquetes de Windows Installer deben cumplir las siguientes directrices para asegurarse de que su paquete funciona con UAC y Windows Vista.
- Al incluir una condición de contexto de instalación con una acción en la tabla InstallUISequence, use una instrucción condicional basada en la propiedad Privileged. No use una condición basada en la propiedad AdminUser.
- Al incluir el contexto de instalación con las condiciones de inicio de la instalación, use un tipo de acción personalizada 19 en la tabla InstallExecuteSequence y convierta la acción personalizada en condicional sobre la propiedad Privileged. No use una acción en la tabla LaunchCondition con una condición basada en la propiedad AdminUser o en la propiedad Privileged.
- Para leer o modificar la configuración del sistema, use una acción personalizada de ejecución diferida en la tabla InstallExecuteSequence. No use acciones personalizadas de ejecución inmediata en la tabla InstallUISequence para modificar la configuración del sistema.
- Para modificar partes del sistema que no son específicas del usuario, use una acción personalizada diferida en la tabla InstallExecuteSequence. Debe incluir el bit msidbCustomActionTypeNoImpersonate en el tipo de acción personalizada.
- Omita el bit 3 del valor de la propiedad Resumen de recuento de palabras para indicar que puede que sea necesario elevar el paquete. No incluya este bit a menos que no sea necesario tener privilegios elevados para instalar este paquete.
- Incluya un manifiesto con el nivel de ejecución solicitado de la aplicación.
- Incluya un certificado en la tabla MsiPatchCertificate del paquete original y firme todas las revisiones con el mismo certificado.
- Si se requieren privilegios elevados para instalar un paquete de Windows Installer, el autor del paquete debe incluir el atributo ElevationShield para el control PushButton usado para iniciar la instalación. Esto avisará al usuario de que, al hacer clic en el botón, se mostrará el cuadro de diálogo de UAC que solicita autorización de administrador para continuar la instalación.
- Establezca la propiedad MSIDEPLOYMENTCOMPLIANT en 1 para indicar a Windows Installer que el paquete se ha creado y probado para cumplir con UAC en Windows Vista. Si no se establece esta propiedad, el instalador determina si el paquete cumple con UAC.
Fuera de la directiva de grupo, se puede usar la siguiente comprobación de cumplimiento de UAC en Windows XP.
Para comprobar el cumplimiento de UAC fuera de la directiva de grupo
Inicie sesión en el equipo como administrador.
Anuncie el paquete para una instalación por máquina:
msiexec /jm package.msi
Cierre la sesión del equipo.
Inicie sesión en el equipo como usuario estándar.
Intente instalar el paquete anunciado:
msiexec /i package.msi
En la mayoría de los casos, si la instalación se realiza correctamente, el paquete es compatible con UAC.
Establezca la propiedad MSIDEPLOYMENTCOMPLIANT en el paquete en 1.
Pruebe la instalación correcta del paquete mediante Windows Vista.