2008-10-13 9 views
23

Necesito instalar un archivo en la carpeta Environment.SpecialFolder.ApplicationData, que difiere entre XP y Vista. ¿Existe una forma integrada de referenciar la carpeta correcta en WiX o tendré que usar verificaciones condicionales para OS y hacerlo manualmente?¿Cuál es el equivalente de WiX de Environment.SpecialFolder.ApplicationData from .NET?

Si tengo que hacer esto último, ¿cómo hago referencia al directorio actual del usuario de Windows en Vista?

elemento

Respuesta

45

Usar directorio con el ID de unidad para AppDataFolder:

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

Esto dará lugar a test1.txt se va a instalar en C: \ Users \ nombre de usuario \ AppData \ Roaming \ Mi en Windows 7 y C : \ Documents and Settings \ nombre de usuario \ Application Data \ My en Windows XP.

MSDN tiene un list of properties que puede utilizar para hacer referencia a carpetas especiales.

+3

Tenga en cuenta que el atributo 'Name =" AppDataFolder "' se puede omitir aquí. Solo el atributo Id se requiere allí. Además, puede omitir el componente 'Guid'; wix ahora generará un Guid estable automáticamente. Finalmente, puede omitir los atributos 'Id',' Name' y 'KeyPath' en el elemento' File'. El 'Id' y' Name' tendrán esos valores por defecto basados ​​en 'Source', y el archivo será automáticamente el keypath del componente porque el componente no contiene nada más. –

+0

Gracias @WimCoenen, he actualizado mi respuesta. –

+2

Desafortunadamente, aparece un _ "error LGHT0204: ICE38: el componente MyComponent se instala en el perfil del usuario. Debe utilizar una clave de registro en HKCU como su KeyPath, no como un archivo." _, Por lo que debe agregar RegistryValue como KeyPath de el componente. Ojalá pudiera salirme con solo el archivo. – AnAurelian

Cuestiones relacionadas