2011-05-25 17 views
11

Desarrollé un instalador personalizado con WiX para una aplicación .NET WPF. Funciona bien si hago clic con el botón derecho y lo ejecuto como administrador; sin embargo, cuando se ejecuta sin él, algunos componentes no se pueden instalar debido a privilegios insuficientes.El instalador de WiX siempre debe ejecutarse como administrador

Los componentes incluyen SQL Server Express 2008 R2, FoxIt Reader, un componente ActiveX y algunos otros. También requiere que algunos scripts SQL se ejecuten en la base de datos recién instalada, de todos modos, todos requieren privilegios de administrador.


He intentado añadir el InstallScope = "perMachine" y InstallPrivileges = "elevado" atribuye al nodo de paquete, pero esto no parece hacer una diferencia.

Estoy seguro de que es algo tonto, pero no pude encontrar nada en la referencia o en línea.

Respuesta

21

Creo que si se acaba de añadir

<Property Id="MSIUSEREALADMINDETECTION" Value="1" /> 

que debe resolver el problema. Avíseme si no y puedo verificarlo un poco más.

+0

Gracias - Voy a ver alrededor de él. ¿Dónde exactamente debería poner esto? – rumblefx0

+0

Va a cualquier parte debajo del elemento Producto. Me gusta mantener todas mis propiedades agrupadas en la parte inferior, pero eso es solo preferencia personal. – Adkins

+0

Gracias ... esto me ayudó con el mismo problema. – Brandon

0

Para mí se suponía que debía ejecutar un comando de registro para eliminar una variable de entorno del sistema mediante el elemento CustomAction WiX, que requería privilegios de administrador.

Usando CustomAction → Impersonate = "no" funcionó para mí como se menciona en la publicación https://stackoverflow.com/a/8657472/3205679.

código WiX acción personalizada:

<CustomAction Id = "Uninstall_MYSYSENV" 
       Directory = "INSTALLFOLDER" 
       ExeCommand = 'cmd.exe /c &quot;reg delete  "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment" /v MYSYSENV /f&quot;' 
       Execute = "deferred" 
       Impersonate= "no" 
       Return  = "asyncNoWait" 
       /> 

<InstallExecuteSequence> 
     <Custom Action="Uninstall_MYSYSENV" 
       After="InstallInitialize">Installed AND NOT UPGRADINGPRODUCTCODE</Custom> 
</InstallExecuteSequence> 
Cuestiones relacionadas