2013-07-16 11 views
8

In meiner WXI-Datei möchte ich eine Variable festlegen, die das Verzeichnis Programme hat. Ich möchte, dass es den lokalisierten Wert von Programmdateien auswählt.Wie ProgramFilesFolder-Wert in einer Variablen in einer WXI-Datei

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

Ich habe definiert LocalizedProgramFilesFolder als:

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

jedoch während der Installation nahm die MyDirectoryis als:

"[ProgramFilesFolder]\MyFiles". 

Es spielt keine Program erweitern. Wie verwende ich ProgramFilesFolder-Wert in einer Variablen in meiner WXI-Datei?

Antwort

7

Nicht sicher, warum Sie eine MyDirectory Variable verwenden. Als WixVariable docs sagen:

WiX Variablen bestehen nicht in den msi/msm/pcp-Datei, so dass sie nicht verwendet werden, wenn eine MSI-Datei installiert wird; Es ist ein reines WiX-Konzept.

Sein Wert wird als Text geschrieben in, wo immer Sie es verwenden. Wenn Sie möchten, dass der Wert zum Installationszeitpunkt Eigenschaften hat, müssen Sie ihn nur in einem solchen Kontext verwenden.

Die typische Verwendung von ProgramFilesFolder ist ein Verzeichnis/@ Id, das ein nachstehendes Verzeichnis haben kann, z. B. MyFiles. Hinweis: Ein Verzeichnis/@ Id ist auch eine Eigenschaft, so dass es als solches verwendet werden kann.

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

INSTALLFOLDER statt MyDirectory verwendet. Sie können verwenden, was Sie wollen, aber das ist der Standard aus der Projektvorlage. Es ist alles Caps, was es zu einem öffentlichen Eigentum macht. Ein Wert für eine öffentliche Eigenschaft kann über die Benutzeroberfläche oder mithilfe von msiexec oder anderen Programmen, z. B. Bootstrappern, an die Installationsreihenfolge übergeben werden.

Verwandte Themen