2012-01-19 35 views
6

Xin chào Tôi đang cài đặt tệp vào thư mục bằng WIX với mã bên dưới.WIX cài đặt tệp, ghi đè

<Directory Id="CMSICONSDIR" Name="CMSIcons"> 
    <Component Id="CMSICONSDIR_C" Guid="B0328FBF-D9F7-4278-B16C-28650016FF86" SharedDllRefCount="no" KeyPath="no" NeverOverwrite="no" Permanent="no" Transitive="no" Location="either"> 
     <CreateFolder/> 
     <File Id="AddCamera.png" Name="AddCamera.png" DiskId="1" Source="..\..\OrionVEWorld\bin\Release\CMSICons\AddCamera.png" KeyPath="no" /> 
     <File Id="aldownloadsmall.png" Name="al-download-small.png" DiskId="1" Source="..\..\OrionVEWorld\bin\Release\CMSICons\al-download-small.png" KeyPath="no" /> 

Cách thức hoạt động của ứng dụng là người dùng có thể sao chép tệp riêng của họ trong thư mục đó ghi đè những gì họ thích.

Vấn đề là khi tôi cài đặt tiếp theo để cập nhật, nó sẽ ghi đè các tệp đó bằng các tệp được quy định trong bản cài đặt.

Làm cách nào để đảm bảo rằng khi tôi chạy cài đặt, nó không ghi đè các tệp hiện có ở đó và chỉ thêm các tệp mới.

Thật không may trong trường hợp khác tôi cần các tệp ghi đè những gì ở đó.

tôi có một phần kịch bản nâng cấp có thể ảnh hưởng này như sau

<Upgrade Id="$(var.UpgradeCode)"> 
    <UpgradeVersion Minimum="$(var.ProductVersion)" OnlyDetect="no" Property="NEWERVERSIONDETECTED"/> 
    <UpgradeVersion Minimum="1.0.0.0" 
        IncludeMinimum="yes" 
        OnlyDetect="no" 
        Maximum="$(var.ProductVersion)" 
        IncludeMaximum="no" 
        Property="PREVIOUSVERSIONSINSTALLED" /> 
</Upgrade> 

Bất kỳ lời đề nghị được đánh giá cao.

Trả lời

5

Bạn có thể thử thay đổi thứ tự nâng cấp bằng cách sửa đổi chuỗi hành động RemoveExistingProducts. Bạn có thể đặt nó sau InstallFinalize (không có tùy chọn 4 trong bài viết liên kết).

Ngoài ra this bài viết giải thích cách trình cài đặt cửa sổ xử lý toàn bộ tệp ghi đè logic.

EDIT: Cũng thêm thuộc tính "Không bao giờ ghi đè" vào các thành phần.

+0

Xong và đã NeverOverwrite = "yes" vĩnh viễn = "yes" trong thành phần của tôi và nó vẫn ghi đè file trước đây của tôi . Không chắc chắn những gì tôi đang làm sai – TheWommies

2

Thử thêm thuộc tính NeverOverwrite vào các thành phần của bạn. Nó sẽ làm các trick.

+0

Điều này là không đủ nếu hành động RemoveExistingProducts là trước InstallExecute. – Ciprian

+0

@Ciprian - Không WIX lịch trình RemoveExistingProducts hành động sau khi InstallExecute theo mặc định? – imagi

+0

Bạn có thể đúng về điều này. Tôi không có kiến ​​thức sâu rộng về WIX. – Ciprian

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