2012-08-14 12 views
5

Duplicar posible:
Wix - change the installation folder based on privilegeWiX - ¿Cómo puedo configurar la propiedad condicional

bien esta pregunta arised cuando yo estaba tratando de resolver mi problema en How do I get different registry keys for allusers and single user.

Básicamente lo que estoy tratando de hacer es:

if ALLUSERS=1 then 
    set InstallDir to Property1 
else 
    set InstallDir to Property2 

Alguien sabe hacer esto?

+2

Parece que esta pregunta ha sido bastante [completamente respondida aquí] (http://stackoverflow.com/questions/1017294/wix-change-the-installation-folder-based-on-privilege). – shambulator

Respuesta

6

Ok, acabo de terminar. Mi wxs se ve así:

<CustomAction Id="PerUserInstall" Property="InstallDir" Value="[INSTALLDIR1]" Execute="immediate" /> 
<CustomAction Id="PerMachineInstall" Property="InstallDir" Value="[INSTALLDIR2]" Execute="immediate" /> 
<InstallExecuteSequence> 
    <Custom Action="PerUserInstall" After="AppSearch">ALLUSERS="" OR (ALLUSERS=2 AND (NOT Privileged))</Custom>  
    <Custom Action="PerMachineInstall" After="AppSearch">ALLUSERS=1 OR (ALLUSERS=2 AND Privileged)</Custom> 
</InstallExecuteSequence> 

Gracias @shambulator para el enlace. Tenga en cuenta que utilizo After="AppSearch" en lugar de Before="CostFinalize" porque eso hará que la acción se ejecute justo después de la búsqueda de registro.

3

Muchos elementos de WiX toman una condición como texto interno. Como es XML, con frecuencia necesitará escapar de caracteres especiales. Aquí hay un puntero a cómo funcionan las condiciones:

Conditional Statement Syntax

Además, no estoy seguro de por qué tiene INSTALLDIR1 y INSTALLDIR2. Sin ver el resto de tu código, debo decir que no lo estás haciendo correctamente. Debería tener un INSTALLDIR y luego configurarlo en diferentes ubicaciones según usuario o máquina. He aquí un buen artículo de blog sobre el tema:

Authoring a single package for Per-User or Per-Machine Installation context in Windows 7

Personalmente, rara vez se molestan con instalaciones por usuario. Son un dolor con poco valor aparte de las aplicaciones 'virales' (no un virus, sino que se propaga a través de las redes sociales a usuarios no privilegiados).

Cuestiones relacionadas