2013-07-16 11 views
8

Nel mio file wxi, voglio impostare una variabile che abbia la directory Programmi. Voglio che scelga il valore localizzato di Program Files. LocalizedProgramFilesFolderCome utilizzare il valore ProgramFilesFolder in una variabile in un file wxi

<?define MyDirectory="!(wix.LocalizedProgramFilesFolder)\MyFiles"?> 

ho definito come:

<WixVariable Id="LocalizedProgramFilesFolder" Value="[ProgramFilesFolder]"/> 

Tuttavia durante l'installazione i MyDirectoryis scelto come:

"[ProgramFilesFolder]\MyFiles". 

Esso non si espande ProgramFilesFolder. Come si usa il valore ProgramFilesFolder in una variabile nel mio file wxi?

risposta

7

Non sono sicuro del motivo per cui si sta utilizzando una variabile MyDirectory. Come il WixVariable docs dicono: variabili

WiX non persistono nel file MSI/MSM/PCP, in modo che non possono essere usati quando si installa un file MSI; è un concetto solo WiX.

Il suo valore è scritto come testo ovunque lo si usi. Quindi, se si desidera che il valore abbia le proprietà sostituite al momento dell'installazione, è necessario utilizzarlo solo in tale contesto.

L'utilizzo tipico di ProgramFilesFolder è come Directory/@ Id, che può avere una directory discendente, ad esempio MyFiles. Nota: una Directory/@ Id è anche una proprietà quindi può essere utilizzata come tale.

<Directory Id="TARGETDIR" Name="SourceDir"> 
     <Directory Id="ProgramFilesFolder"> 
      <Directory Id="INSTALLFOLDER" Name="MyFiles" /> 
     </Directory> 
    </Directory> 

INSTALLFOLDER è usato al posto di MyDirectory. Puoi usare quello che vuoi ma quello predefinito dal modello di progetto. È tutto maiuscolo, il che lo rende una proprietà pubblica. Un valore di proprietà pubblica può essere passato nella sequenza di installazione dall'interfaccia utente o utilizzando msiexec o altri programmi, come bootstrap.