2008-10-13 5 views
23

Ich muss eine Datei in den Ordner Environment.SpecialFolder.ApplicationData installieren, der zwischen XP und Vista unterscheidet. Gibt es eine eingebaute Möglichkeit, den korrekten Ordner in WiX zu referenzieren oder muss ich bedingte Prüfungen für das Betriebssystem durchführen und manuell machen?Was ist das WiX-Äquivalent von Environment.SpecialFolder.ApplicationData von .NET?

Wenn ich Letzteres tun muss, wie referenziere ich das aktuelle Windows-Benutzerverzeichnis in Vista?

Antwort

45

Verwendung Verzeichnis Element mit der Id auf AppDataFolder:

<Directory Id="AppDataFolder"> 
    <Directory Id="MyAppFolder" Name="My"> 
    <Component Id="MyComponent"> 
     <File Source="Files\test1.txt" /> 
    </Component> 
    </Directory> 
</Directory> 

Die in test1.txt führt zu C installiert werden: \ Benutzer \ Benutzername \ AppData \ Roaming \ My auf Windows 7 und C : \ Dokumente und Einstellungen \ Benutzername \ Anwendungsdaten \ My unter Windows XP.

MSDN verfügt über eine list of properties, die Sie zum Verweisen auf spezielle Ordner verwenden können.

+3

Beachten Sie, dass das Attribut 'Name =" AppDataFolder "hier weggelassen werden kann. Nur das Id-Attribut ist dort erforderlich. Sie können auch die Komponente 'Guid' weglassen; wix erzeugt nun automatisch eine stabile Guid. Schließlich können Sie die Attribute "Id", "Name" und "KeyPath" im Element "File" weglassen. Die 'Id' und' Name' haben diese Werte standardmäßig basierend auf der 'Quelle', und die Datei wird automatisch der Schlüsselpfad der Komponente sein, da die Komponente nichts anderes enthält. –

+0

Danke @WimCoenen, ich habe meine Antwort aktualisiert. –

+2

Leider erhalten Sie ein _ "Fehler LGHT0204: ICE38: Komponente MyComponent installiert Benutzerprofil. Es muss einen Registrierungsschlüssel unter HKCU als KeyPath, keine Datei verwenden." _, Also müssen Sie einen Registrierungswert als KeyPath von hinzufügen die Komponente. Ich wünschte, ich könnte nur mit der Akte davonkommen. – AnAurelian

Verwandte Themen