Desinstalar con msiexec recibe error UAC, a pesar de que he puesto los derechos de administrador

StackOverflow https://stackoverflow.com/questions/4147286

  •  30-09-2019
  •  | 
  •  

Pregunta

Estoy tratando de construir un actualizador usando msiexec para desinstalar un programa, a continuación, instalar la versión más reciente.
Aquí está mi código:

command = "/x{[uninstall string here]}";
command += "/qn+ /Le c:\\test\\msilog.txt";
ProcessStartInfo psi = new ProcessStartInfo("msiexec");
psi.Arguments = command;
//psi.UseShellExecute = true;
//psi.Verb = "runas";
Process.Start(psi);

tengo

<requestedExecutionLevel  level="requireAdministrator" uiAccess="false" />

set en mi manifiesto, y que se fija como manifiesto de la aplicación. Cuando ejecuto esto me sale el cuadro emergente que dice "AppSetup no" y el archivo de registro dice

Error 1730. Debe ser un Administrador para eliminar esta aplicación. Para eliminar esta aplicación, puede iniciar sesión como administrador o con su grupo de soporte técnico para obtener ayuda.

Si, sin embargo, corro cmd como administrador y escriba

msiexec /x{[uninstall string here]} /qn+ /Le c:\\test\\msilog.txt

Funciona bien y dandy.
¿Que me estoy perdiendo aqui?
(También he intentado descomentando esas dos líneas anteriores, ya que era una forma que encontré para funcionar como administrador, pero a continuación, hace aparecer el cuadro de diálogo UAC antes de intentar ejecutar, a pesar de que / qn es fijo.)

¿Fue útil?

Solución

Para elevar un proceso que necesita tener el usuario lo apruebe. Si cada proceso podría elevarse sin interacción del usuario sería algo contrario al propósito de la elevación.

No sé su escenario completo, pero si se puede logrado ejecutar el actualizador de de la cuenta de Servicio Local, entonces esto debería funcionar sin interacción del usuario. Algunas maneras que vienen a la mente son mediante la instalación de un servicio de Windows, clave RunOnce Run / de la cuenta de servicio local o usando psexec con -s. Por supuesto, para lograr esto, es necesario tener los permisos adecuados a sí mismo en la máquina cliente.

Buena suerte.

* Una cosa más: Si no ha examinado este, sin embargo, puede utilizar Windows Installer para actualizar su instalación y no es necesario para escribir su propia "actualizador". Hay 3 tipos diferentes de actualizaciones (pequeñas actualizaciones, mejoras menores y actualización mayor): http://msdn.microsoft.com/en-us/library/aa370579 (VS.85) .aspx

Una importante actualización desinstala la versión anterior e instala la versión más reciente que es lo más parecido a lo que usted ha descrito, aunque en la mayoría de los casos pequeñas actualizaciones y mejoras menores son más apropiado.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top