visual-studio-2010 - siempre - el proyecto requiere datos del usuario visual studio
Proyecto de instalaciĆ³n VS2010-Ejecutar como administrador (3)
Tengo una solución VS2010 con 2 proyectos: un programa .NET 4 y un instalador para él. El instalador es solo un simple proyecto de instalación con un requisito previo: .NET Framework 4.
El problema es que necesito el instalador setup.exe para que siempre se ejecute como administrador; de lo contrario, la instalación fallará bajo el UAC. (No me pide la elevación de privilegios por defecto).
Traté de poner setup.exe.manifest (que se muestra a continuación) junto con setup.exe para forzarlo a ejecutar como administrador, pero desafortunadamente Windows lo ignora, muy probablemente porque ya hay otro archivo de manifiesto incrustado en el setup.exe y es configurado como inInvoker en lugar de requerirAdministrator .
<?xml version="1.0" encoding="utf-8"?>
<asmv1:assembly manifestVersion="1.0" xmlns="urn:schemas-microsoft-com:asm.v1" xmlns:asmv1="urn:schemas-microsoft-com:asm.v1" xmlns:asmv2="urn:schemas-microsoft-com:asm.v2" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<assemblyIdentity version="1.0.0.0" name="MyApplication.app"/>
<trustInfo xmlns="urn:schemas-microsoft-com:asm.v2">
<security>
<requestedPrivileges xmlns="urn:schemas-microsoft-com:asm.v3">
<requestedExecutionLevel level="requireAdministrator" uiAccess="false" />
</requestedPrivileges>
</security>
</trustInfo>
</asmv1:assembly>
También intenté agregar una condición de lanzamiento con las siguientes propiedades:
(name): Elevated
Condition: Privileged
Message: This installation requires elevated permissions to continue.
Eso tampoco hace nada.
Entonces, ¿alguien puede arrojar luz sobre cómo resolver este problema?
PD Sé que puede solucionar este problema cambiando la configuración de compatibilidad de setup.exe, pero este es un proceso manual y no se puede realizar a través de un proceso de compilación automático (TFS). Además, proporcionar un acceso directo con configuración de compatibilidad también es extraño, ya que nadie proporciona un acceso directo a setup.exe en la misma carpeta, sin mencionar que el acceso directo necesita conocer la ruta exacta de setup.exe de antemano. (El paquete de instalación se moverá).
Editar: Por cierto, mi problema es exactamente el mismo que el descrito aquí . Pero desafortunadamente, no se encontraron soluciones para ese tipo y el asker solo recurre para pedirle a sus clientes que utilicen Run As Administrator manualmente, que es lo que estoy tratando de evitar.
Como señaló Frank, el comportamiento del proyecto de instalación de Visual Studio está documentado en el sitio web de Microsoft:
Despliegue del instalador de Visual Studio
En otras palabras, setup.exe
producido por VS008 y VS2010 siempre se ejecutará sin pedir elevación de privilegios (a menos que lo ejecute explícitamente usando la opción del menú contextual " Ejecutar como administrador "). A su vez, ejecutará cada componente de requisito previo, así como el instalador de MSI principal como procesos separados y solicita elevación de privilegios para cualquiera de ellos que lo necesite. Esto significa que puede haber múltiples solicitudes de elevaciones.
Sin embargo, por alguna razón, esto no siempre funciona. En mi caso, el indicador de elevación para el prerrequisito de .NET Framework no aparece en absoluto cuando ejecuto setup.exe
. Pero si ejecuto el instalador de requisitos previos directamente, aparecerá el mensaje. Esto significa que el problema no radica en el componente de requisito previo, sino en setup.exe
o en el propio Windows.
La solución (o solución alternativa)? De acuerdo con Microsoft en el enlace anterior, podemos forzar setup.exe
para que ejecute cada componente de requisito previo y el MSI principal para ejecutar con indicaciones de elevación. Para hacer esto, necesitamos editar manualmente el archivo de proyecto de configuración (.vdproj) y cambiar el siguiente valor de RequireElevation a TRUE , como se muestra a continuación:
"MsiBootstrapper"
{
"LangId" = "3:1033"
"RequiresElevation" = "11:TRUE"
}
Esta no es la solución ideal, pero está lo suficientemente cerca de mi requisito original, por lo que estoy satisfecho con esta solución.
Si desea ejecutar MSI en modo de administrador, aquí está la manera, 1) Abra su Proyecto de configuración, Ver-> Condiciones de inicio.
2) Haga clic con el botón derecho en Lanzar condiciones y agregue una nueva condición en sus condiciones de lanzamiento.
3) Haga clic con el botón derecho en la condición, elija la ventana Propiedades.
4) Establecer condición para
AdminUser
. 5) Construye e instala.
Creo que tu problema tiene que ver con el nombre del instalador. Este enlace
¿Cómo evito el UAC cuando mi nombre de archivo EXE contiene la palabra "actualizar"?
dice que si el nombre tiene Update o Setup, entonces UAC entrará en acción.
¿Puedes cambiar el nombre de tu instalador a otra cosa?