2012-08-14 15 views
5

Eventuali duplicati:
Wix - change the installation folder based on privilegeWiX - Come impostare proprietà condizionalmente

Beh, questa domanda arised quando stavo cercando di risolvere il mio problema in How do I get different registry keys for allusers and single user.

Fondamentalmente quello che sto cercando di fare è:

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

Qualcuno sa per fare questo?

+2

Sembra che questa domanda sia stata abbastanza [esaurientemente risposta qui] (http://stackoverflow.com/questions/1017294/wix-change-the-installation-folder-based-on-privilege). – shambulator

risposta

6

Ok, ho appena finito. Il mio wxs assomiglia a:

<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> 

Grazie a @shambulator per il collegamento. Si noti che io uso After="AppSearch" invece di Before="CostFinalize" perché eseguirà l'azione subito dopo la ricerca nel registro.

3

Molti elementi WiX accettano una condizione come testo interno. Dato che è XML, dovrai spesso sfuggire a caratteri speciali. Ecco un puntatore a come funzionano le condizioni:

Conditional Statement Syntax

Inoltre, io non sono sicuro perché avete INSTALLDIR1 e INSTALLDIR2. Senza vedere il resto del tuo codice, dovrei dire che non lo stai facendo correttamente. Si dovrebbe avere un INSTALLDIR e quindi impostarlo in posizioni diverse a seconda dell'utente o per macchina. Ecco un buon articolo di blog sul tema:

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

Personalmente, io raramente fastidio con installazioni per utente. Sono un dolore di scarso valore, oltre a quello "virale" (non un virus, ma diffuso attraverso i social media agli utenti non privati).

Problemi correlati