2008-11-19 45 views
17

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

10

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.

+0

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 –

+0

Đâ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

0

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ù!

0

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.

0

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.

3

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.

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