Tôi chỉ mới bắt đầu với WiX khi tôi cần để có thể tự động hóa việc xây dựng một MSI trên máy chủ CI của chúng tôi. Có anyway để tự động bao gồm tất cả các phụ thuộc của một dự án?Bao gồm tất cả các phụ thuộc
Trả lời
Phần mở rộng "proj" của heat.exe đang trở nên tốt hơn. Heat chưa hoàn toàn sẵn sàng để được sử dụng để sản xuất theo kiểu tự động. Đó là một cách rất hợp lý để có được cấu trúc ban đầu được đặt lại với nhau nhưng không hoàn toàn làm điều đúng với các lần chạy lặp lại (ví dụ, Component/@ Guids không ổn định, nhưng ...).
Khi các vấn đề trên được giải quyết trong heat.exe sau đó tích hợp nó vào quá trình xây dựng của bạn chắc chắn sẽ lưu tất cả những rắc rối mà mọi người đề cập ở trên. Đó là trong danh sách của chúng tôi để làm tốt hơn sau khi các lỗi nghiêm trọng nhất được cố định trong bộ công cụ cốt lõi.
Theo kinh nghiệm của tôi, Wix vẫn là một quá trình rất thủ công. Bạn phải thêm từng phụ thuộc một cách đơn giản - tôi nghĩ ý tưởng là bạn sẽ xây dựng trình cài đặt Wix cùng lúc bạn đang xây dựng dự án của mình và thêm từng mục vào khi bạn thêm nó vào mã. Bằng cách này nó có vẻ ít khó khăn hơn là phải quay trở lại và làm một nhìn lại về dự án. Nó chắc chắn sẽ là một gợi ý tuyệt vời cho một tăng cường mặc dù!
Tôi chưa thấy điều gì đó trong WIX có thể làm điều đó, bạn có nghĩa vụ phải biết tất cả các phụ thuộc mà giải pháp/dự án của bạn yêu cầu. Đọc blog này, bên trong là một trích dẫn:
Giữ nguồn của bạn gần gũi và phụ thuộc của bạn gần gũi hơn (. Xin lỗi Sun-tzu)
Cách tốt nhất mà tôi tìm thấy để đảm bảo không có gì bị lãng quên trong MSI, đã thử nghiệm trình cài đặt trên một máy tính ảo được cài đặt sạch.
Gần nhất tôi đã nhìn thấy, đối với nội dung bạn muốn là anh chàng này là blog.
Hiện tại, chúng tôi đang cố gắng thực hiện việc đó bằng tay.
Tôi mới bắt đầu với WIX và nghĩ rằng WixEdit (http://wixedit.sourceforge.net/) đá để thêm nhiều tệp/dll, đã giải quyết được sự thất vọng của tôi với Wix khi tải tệp dễ dàng. Chỉ cần giữ cho các tệp của bạn được sắp xếp và sau đó sử dụng chức năng thư mục nhập. Tất nhiên nó không hỗ trợ các khuyến nghị 3.0 mới của việc có một thành phần cho mỗi tập tin.
Nhiệt cũng tốt và hỗ trợ một thành phần cho mỗi tệp. Tiếp theo trong danh sách của tôi là để có được một số tự động hóa, do đó các tập tin này được cập nhật tự động một phòng thu trực quan.
Hãy xem paraffin, từ Wintellect.
Tôi vừa mới bắt đầu với WIX và tôi đã thực hiện một mẹo nhanh chóng và bẩn để thêm tự động tham chiếu. Ý tưởng là quét tất cả .dll trong thư mục đầu ra của dự án bạn muốn đóng gói.
Trong pre-build của dự án WIX của bạn, thêm
call "$(ProjectDir)GenerateDependency.bat" "$(SolutionDir)" "$(ProjectDir)Dependencies.wxs"
Thêm một tập tin GenerateDependency.bat trong dự án WIX của bạn có chứa
@echo off
set SOLUTIONDIR=%1
set OUTPUTFILE=%2
echo Starting Dependency check...
echo ^<?xml version="1.0" encoding="UTF-8"?^> > %OUTPUTFILE%
echo ^<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi"^> >> %OUTPUTFILE%
echo ^<Fragment^> >> %OUTPUTFILE%
echo ^<ComponentGroup Id="MesDependance" Directory="INSTALLFOLDER"^> >> %OUTPUTFILE%
for %%F in (%SOLUTIONDIR%WixServiceInstallerExample\bin\Debug\*.dll) do (
echo "-- Adding %%~nxF"
echo ^<Component Id="%%~nF"^> >> %OUTPUTFILE%
echo ^<File Id="%%~nF" Name="%%~nxF" Source="%%~dpnxF" Vital="yes" KeyPath="yes" DiskId="1"/^> >> %OUTPUTFILE%
echo ^</Component^> >> %OUTPUTFILE%
)
echo ^</ComponentGroup^> >> %OUTPUTFILE%
echo ^</Fragment^> >> %OUTPUTFILE%
echo ^</Wix^> >> %OUTPUTFILE%
echo Dependency check done.
Sửa đổi "WixServiceInstallerExample \ bin \ Debug" theo nhu cầu của bạn.Soulhd này là thư mục đầu ra của dự án bạn muốn đóng gói
Lưu ý: Hãy coi chừng thường VisualStudio gây rối với mã hóa. Chỉnh sửa tốt hơn tệp này bằng Notepad ++ và đảm bảo tệp trong ANSI chứ không phải UTF8.
Điều này sẽ tạo ra Dependencies.wxs mà bạn có thể đưa vào dự án của mình. Nếu bạn đang ở dưới sự kiểm soát nguồn, hãy loại trừ nó khỏi nó.
Mỗi bản dựng sẽ rescan .dll và xây dựng lại Dependencies.wxs trước khi thực sự tạo gói.
- 1. Xây dựng JAR bao gồm tất cả các phụ thuộc của nó
- 2. Không bao gồm phụ thuộc Maven
- 3. C - Biên dịch với các phụ thuộc bao gồm
- 4. Bao gồm phụ thuộc JSTL với Maven
- 5. Phản ánh trên tất cả các thuộc tính của giao diện, bao gồm cả các thuộc tính được kế thừa?
- 6. Bắt tất cả các thuộc tính (Bao gồm cả các thuộc tính ẩn) của 0 (Đối tượng gốc)
- 7. Maven - bao gồm tất cả các môđun con của một pom như phụ thuộc trong một mô-đun
- 8. Android.mk, bao gồm tất cả các tệp cpp
- 9. Trả về tất cả các giá trị bao gồm NULL
- 10. Thêm thuộc tính tùy chỉnh để bao gồm trong tất cả các thông điệp log4net
- 11. Có thể resharper tạo ra tostrings bao gồm tất cả các thuộc tính của lớp?
- 12. C#: Làm thế nào để bao gồm DLL phụ thuộc?
- 13. Vấn đề với maven xây dựng OSGi bao gồm cả phụ thuộc
- 14. Dỡ bỏ một gói và tất cả các phụ thuộc
- 15. Tìm hiểu phụ thuộc của tất cả các tệp DLL?
- 16. Lặp lại các mục của menu chính (bao gồm cả các mục phụ)
- 17. g ++ bao gồm tất cả/usr/include đệ quy
- 18. Maven-webstart-plugin để bao gồm các phụ thuộc thời gian chạy
- 19. Làm thế nào để bao gồm tất cả các trang SetUp tổ tiên trong Subwikis FitNesse?
- 20. tìm thấy tất cả các chức năng (bao gồm cả tư nhân) trong một gói
- 21. cmake: bao gồm các phụ thuộc thư viện trong static lib
- 22. Lồng nhau ROR: bao gồm để bao gồm các tài nguyên phụ trong to_xml/to_json
- 23. Cách tạo biểu đồ phụ thuộc giữa tất cả các mô-đun của dự án Maven?
- 24. Cần chụp UIView thành UIImage, bao gồm tất cả các bản xem trước
- 25. Chạy "sạch" tất cả các tiểu dự án SBT phụ thuộc
- 26. Thêm UIView trên tất cả các chế độ xem khác, bao gồm StatusBar
- 27. kiểm tra tất cả các hộp kiểm trong DataTable bao gồm các hàng ẩn
- 28. Làm thế nào để đóng gói một ứng dụng Python bao gồm các phụ thuộc?
- 29. Làm cách nào để bao gồm các phụ thuộc trong tệp WAR?
- 30. Không nên "nhập foo. *" Cũng bao gồm gói phụ "foo.bar. *"?
Nhiệt phát hiện khoảng 10 phút trước. Có danh sách phụ thuộc ngay bây giờ, vì vậy tôi không phải loại nó ra. Có vẻ hứa hẹn: D –
Đây là một câu trả lời cũ, nhưng tôi hy vọng nó không đúng sự thật nữa và heat.exe đã được thực hiện đủ ổn định để sử dụng sản xuất .. :) – ostati