2008-10-13 5 views
23

J'ai besoin d'installer un fichier dans le dossier Environment.SpecialFolder.ApplicationData, qui diffère entre XP et Vista. Existe-t-il un moyen intégré de référencer le bon dossier dans WiX ou devrais-je utiliser des vérifications conditionnelles pour le système d'exploitation et le faire manuellement?Quelle est l'équivalence WiX de Environment.SpecialFolder.ApplicationData de .NET?

Si je dois faire ce dernier, comment puis-je référencer les fenêtres du répertoire en cours de l'utilisateur dans Vista?

Répondre

45

Elément de répertoire avec IDENTIF à AppDataFolder:

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

Cela se traduira par test1.txt en cours d'installation à C: \ Users \ nom d'utilisateur \ AppData \ Roaming \ Mes sous Windows 7 et C : \ Documents and Settings \ nom d'utilisateur \ application Data \ My sous Windows XP.

MSDN a une list of properties que vous pouvez utiliser pour référencer des dossiers spéciaux.

+3

Notez que l'attribut 'Name = "de AppDataFolder"' peut être omise ici. Seul l'attribut Id est requis ici. En outre, vous pouvez omettre le composant 'Guid'; wix va maintenant générer automatiquement un Guid stable. Enfin, vous pouvez omettre les attributs 'Id',' Name' et 'KeyPath' sur l'élément' File'. Le 'Id' et le' Name' auront ces valeurs par défaut basé sur le 'Source', et le dossier sera automatiquement le keypath du composant parce que le composant ne contient rien d'autre. –

+0

Merci @WimCoenen, j'ai mis à jour ma réponse. –

+2

Malheureusement, vous obtenez un _ « erreur LGHT0204: ICE38: Composant MyComponent installe au profil de l'utilisateur Il doit utiliser une clé de registre sous HKCU comme KeyPath, pas un fichier.. » _, Vous devez ajouter un RegistryValue comme KeyPath de le composant. J'aimerais pouvoir m'en tirer avec le fichier. – AnAurelian

Questions connexes