2011-09-07 28 views
9

Tôi đang sử dụng mã cổ điển mới nhất (Wix v3.5) và tạo dự án thiết lập Wix VS 2010 đơn giản. Tôi đã thêm tham chiếu trang web của mình và đặt tùy chọn Harvesttrue.Tệp thu thập dẫn đến lỗi LGHT0231

Bây giờ kể từ INSTALLDIR điểm của tôi vào một thư mục dưới IISROOT, tôi nhận được lỗi light.exe này:

[filepath]: error LGHT0231: The component 'cmp93982C4086FF8C75F07339DD7CEA8152' has a key file with path 'TARGETDIR\webdir...[filename].xml'. Since this path is not rooted in one of the standard directories (like ProgramFilesFolder), this component does not fit the criteria for having an automatically generated guid. (This error may also occur if a path contains a likely standard directory such as nesting a directory with name "Common Files" under ProgramFilesFolder.)

Trong khi tôi hiểu được lý do đằng sau lỗi này, tôi không nhất thiết phải đồng ý với lý trí của nó (có thể Tôi không hiểu các hoạt động bẩm sinh của thế hệ Wix MSI).

Tôi làm cách nào để giải quyết lỗi này?


Để cung cấp một số bối cảnh:

Tôi đang cố gắng để thiết lập này kết hợp với Team Build. Tôi có thể sử dụng định dạng cũ và chạy tác vụ Heat/Harvest đối với một thư mục để bỏ qua vấn đề này nhưng không muốn đi tuyến đường cũ.

Tôi chưa phát đủ với định nghĩa xây dựng dựa trên luồng công việc mới, vì vậy không chắc chắn cách tôi có thể kết hợp tác vụ tùy chỉnh này.

Tôi cần chạy thu hoạch mỗi khi dự án Thiết lập được tạo bởi vì tôi không muốn theo dõi hàng trăm tệp theo cách thủ công.

+0

Tôi có cùng một vấn đề; Tôi đang cố gắng đặt C: \ Inetpub \ wwwroot \ MyProject \ làm vị trí cài đặt mặc định, nhưng WiX sẽ không nghe thấy nó. –

+0

Bạn đã tìm thấy một số cách giải quyết? Cảm ơn –

+0

@SanjaMelnichuk: Thật không may là không. Tôi đã không đầu tư nhiều thời gian ở đó quá khi tôi chuyển sang các dự án khác nhưng tôi đoán những gì tôi đang cố gắng làm ở đó sẽ yêu cầu một số kiến ​​thức XAML và sự quen thuộc với quy trình công việc TFS. – Mrchief

Trả lời

9

Vấn đề là do thành phần được bắt nguồn từ TARGETDIR, mà WiX không thể sử dụng để tự động tạo một guid. Bạn có thể thêm Directory/@ComponentGuidGenerationSeed vào thư mục phía trên thành phần này để tránh sự cố. Bằng cách thêm thuộc tính này, bây giờ bạn phải chịu trách nhiệm đảm bảo thành phần không được cài đặt vào hai thư mục khác nhau trong các nâng cấp.

Trong Windows Installer, các thành phần cần phải có một guid không thay đổi giữa các bản vá, nâng cấp nhỏ và nâng cấp lớn. Để thuận tiện, WiX có thể tạo ra một version 5 UUID cho bạn bằng cách sử dụng hệ thống phân cấp thư mục của thành phần làm hạt giống. Tuy nhiên, TARGETDIR không đủ điều kiện cho việc này.

Tôi tin rằng lý do là TARGETDIR thay đổi trên các cài đặt (được đặt thành ổ đĩa có dung lượng trống lớn nhất). Một trong các quy tắc thành phần là "each component must be stored in a single folder". Nếu TARGETDIR thay đổi giữa các nâng cấp chính, thì bạn có thể sẽ cố gắng cài đặt cùng một thành phần vào thư mục thứ hai.

+0

Không phải cho đến khi tôi là tác giả của một dự án Wix khác mà tôi đã gặp phải điều này một lần nữa và sau đó tôi đã nhớ ra giải pháp của bạn. Xin lỗi đã mất quá lâu để chấp nhận nó! :) – Mrchief

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