2009-10-13 43 views

Trả lời

11

Đơn giản chỉ cần tạo ra nhiều thành phần tham chiếu cùng một tệp nhưng cài đặt nó vào các vị trí khác nhau. Lưu ý duy nhất là bạn không thể sử dụng hai phần tử <File Source="somefile"/> tham chiếu cùng một tệp vì chúng sẽ nhận được cùng một ID được tạo tự động. Rõ ràng cung cấp cho các yếu tố tập tin ID khác nhau để tránh vấn đề đó.

<DirectoryRef Id="directory1"> 
    <Component Id="somefile-component1"> 
     <File Id="somefile-id1" Source="/path/to/somefile"/> 
    </Component> 
</DirectoryRef> 

<DirectoryRef Id="directory2"> 
    <Component Id="somefile-component2"> 
     <File Id="somefile-id2" Source="/path/to/somefile"/> 
    </Component> 
</DirectoryRef> 
+0

yeah, tôi kindda figured tôi có thể làm điều đó, nhưng đó là đau đớn, nó có nghĩa là ID riêng và GUIDs, v.v. Tùy chọn khác là CopyFile có vẻ như, nhưng sau đó bạn phải xử lý việc gỡ cài đặt chúng –

+0

Bạn cũng có thể sử dụng cùng một thành phần trong nhiều trình cài đặt. thư mục khác nhau. Nhưng sau đó bạn sẽ kết thúc với nhiều tập tin MSI. Bạn có muốn cho tôi để xây dựng trên phương pháp đó? –

+2

Tôi sẽ chấp nhận câu trả lời này vì đây là những gì tôi đã kết thúc một cách hiệu quả. Tôi không thích ý tưởng của tất cả các sao chép vì vậy tôi đã kết thúc bằng văn bản một chương trình mà tạo ra các xml Wix cho tôi và xử lý tự động sao chép. Cảm thấy như wix là quá thô và một mức độ trừu tượng cao hơn là cần thiết để viết trình cài đặt. –

7

Trình cài đặt Windows có khái niệm riêng về điều này được gọi là "DuplicateFiles". Nó chỉ hoạt động nếu các tập tin thực sự giống hệt nhau, nhưng nó có vẻ như đó là những gì bạn muốn. Trong WIX bạn thực hiện điều này thông qua các yếu tố CopyFile:

http://wix.sourceforge.net/manual-wix2/wix_xsd_copyfile.htm

tôi đã không thực sự cố gắng đó, nhưng nó sẽ giống như thế này

<Component Id='Manual' Guid='*' > 
    <File Id='Manual' Name='Manual.pdf' Source='Manual.pdf' KeyPath='yes'> 
    <CopyFile Id='MyDuplicateFile1' DestinationProperty ='DesktopFolder'/> 
    </File> 
</Component> 
+2

Điều này có xóa bản sao khi gỡ cài đặt không? –

+0

Có, nó thực sự - miễn là thành phần đã làm sao chép đang được gỡ cài đặt (nó có thể không được nếu nó được thiết lập vĩnh viễn). –

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