2008-10-13 34 views
23

Tôi cần cài đặt tệp vào thư mục Environment.SpecialFolder.ApplicationData, khác với XP và Vista. Có cách nào được xây dựng để tham chiếu đúng thư mục trong WiX hay tôi sẽ phải sử dụng kiểm tra có điều kiện cho OS và thực hiện thủ công không?WiX tương đương với môi trường.SpecialFolder.ApplicationData từ .NET là gì?

Nếu tôi phải thực hiện việc sau, làm cách nào để tham khảo thư mục người dùng cửa sổ hiện tại trong Vista?

phần tử với Id

Trả lời

45

Sử dụng thư mục thiết lập để AppDataFolder:

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

này sẽ dẫn đến test1.txt được cài đặt vào C: \ Users \ username \ AppData \ Roaming \ My trên Windows 7 và C : \ Documents and Settings \ tên người dùng \ Application Data \ My trên Windows XP.

MSDN có list of properties mà bạn có thể sử dụng để tham chiếu các thư mục đặc biệt.

+3

Lưu ý rằng thuộc tính 'Name =" AppDataFolder "' có thể được bỏ qua tại đây. Chỉ có thuộc tính Id được yêu cầu ở đó. Ngoài ra, bạn có thể bỏ qua thành phần 'Guid'; wix bây giờ sẽ tạo ra một Guid ổn định tự động. Cuối cùng, bạn có thể bỏ qua các thuộc tính 'Id',' Name' và 'KeyPath' trên phần tử' File'. 'Id' và' Name' sẽ có các giá trị đó theo mặc định dựa trên 'Source', và tệp sẽ tự động là keypath của thành phần vì thành phần không chứa bất kỳ thứ gì khác. –

+0

Cảm ơn bạn @WimCoenen, tôi đã cập nhật câu trả lời của mình. –

+2

Thật không may, bạn nhận được một _ "lỗi LGHT0204: ICE38: Thành phần MyComponent cài đặt vào hồ sơ người dùng. Nó phải sử dụng một khóa registry dưới HKCU như KeyPath của nó, không phải là một tệp." _, Vì vậy bạn phải thêm một RegistryValue làm KeyPath thanh phân. Tôi ước tôi có thể lấy đi chỉ với tập tin. – AnAurelian

Các vấn đề liên quan