Tôi không nghĩ rằng bạn sẽ thấy quá nhiều bất đồng ở đây, đặc biệt là về MSI. Tôi nghĩ rằng một điều cần lưu ý là để xem cách nhiều chương trình đang sử dụng các tập tin MSI những ngày này. Hiển thị hộp thoại giao diện người dùng và thực hiện các lựa chọn cấu hình phức tạp với MSI rất yếu do cách cài đặt Windows Installer, vì vậy tôi đã nhận thấy rất nhiều chương trình được chia thành một loạt các MSI con được cài đặt với giao diện người dùng tối thiểu chương trình cài đặt gốc. Trình hướng dẫn thiết lập SQL Server 2008 thực hiện việc này. UPS WorldShip thực hiện việc này. Và Sơn.NET này cũng vậy - wizard bạn thấy là một ứng dụng Windows Forms, và nó tự khởi chạy msiexec
(bạn có thể thấy giao diện người dùng tối thiểu của Windows Installer bật lên trên đầu cửa sổ thuật sĩ trắng), truyền bất kỳ tham số cấu hình nào như thuộc tính đối số cho msiexec
.
Một trường hợp phổ biến mà điều này xuất hiện là nơi ai đó được giao nhiệm vụ xây dựng trình cài đặt cho ứng dụng có cả máy chủ và máy khách. Nếu người dùng chọn tùy chọn máy chủ, thì họ có thể hoặc không muốn cơ sở dữ liệu mới được cài đặt, có nghĩa là cài đặt SQL Server. Nhưng bạn không thể chỉ cần cài đặt SQL Server trong khi bạn đang ở giữa cài đặt của riêng bạn bởi vì Windows Installer sẽ không cho phép bạn làm điều đó. Vì vậy, một giải pháp thường xuyên là viết một ứng dụng hiển thị trình hướng dẫn cho phép người dùng định cấu hình tất cả các tùy chọn thiết lập và sau đó ứng dụng của bạn khởi chạy tệp MSI khi cần cho SQL Server, ứng dụng máy chủ và ứng dụng khách của bạn ở mức tối thiểu Chế độ giao diện người dùng; về cơ bản, tránh các khía cạnh "tính năng" của Windows Installer hoàn toàn và di chuyển nó lên đến mức MSI. Cài đặt nhiều gói của 4.5 có vẻ là một bước xa hơn theo hướng này. Định dạng này cũng đặc biệt hữu ích nếu bạn cũng cần lặp trong trình cài đặt không phải của MSI từ bên thứ ba như một phần của quá trình cài đặt, như cài đặt trình điều khiển máy in cho một số máy in bán kỳ lạ.
Tôi cũng đồng ý rằng Windows Installer thiếu hỗ trợ tích hợp cho các tình huống triển khai chung. Nó có nghĩa là cho khi thiết lập không phải là XCOPY, nhưng họ dường như bỏ lỡ một thực tế là thiết lập thường không chỉ là "tập tin + phím tắt + khóa registry," một trong hai. Không có các hành động tích hợp để thiết lập các trang Web IIS, đăng ký chứng chỉ, tạo và cập nhật cơ sở dữ liệu, thêm các assembly vào GAC, v.v. Tôi đoán họ đưa ra ý kiến rằng một số điều này sẽ xảy ra trong lần chạy đầu tiên thay vì là một phần giao dịch của quá trình cài đặt. Các công cụ và tài liệu có sẵn miễn phí đã trở nên khủng khiếp - hoàn toàn kinh khủng - cho phần tốt hơn của một thập kỷ. Cả hai vấn đề này phần lớn được giải quyết bởi dự án WiX và DTF (cho phép bạn cuối cùng sử dụng các hành động tùy chỉnh mã được quản lý), đó là lý do tại sao chúng tôi rất biết ơn Rob Mensching và công việc của người khác về dự án đó.
Tôi đã có cùng trải nghiệm. Cài đặt có thể nhanh chóng hút thời gian của bạn khi bạn đi xuống hố thỏ "Ôi Chúa ơi, tôi đoán tôi phải trở thành một chuyên gia trong số điều này cũng có nghĩa là". Tôi thứ hai ý tưởng đó là tốt nhất để giải quyết nó sớm trong dự án của bạn và giữ nó được duy trì như là một phần của quá trình xây dựng của bạn. Bằng cách này, bạn có thể giúp tránh tình huống đó khi phát triển một sản phẩm có thể gỡ cài đặt thực tế. (Trac là một ví dụ về điều này trong một thời gian, đòi hỏi phải theo dõi các phiên bản cụ thể của các thư viện Python lạ.)
(Tôi có thể đi về cách Windows Installer đôi khi quyết định sử dụng ổ đĩa USB chậm, bên ngoài của tôi như một nơi để giải nén các tập tin của nó, làm thế nào nó có vẻ ngồi ở đó không làm gì trong vài phút khi kết thúc trên các máy tính đã cài đặt nhiều MSI, và thanh tiến trình đó tự cài đặt lại bao nhiêu lần trong một lần cài đặt là điều ngu ngốc nhất mà tôi có đã từng thấy, nhưng tôi sẽ tiết kiệm những số tiền đó trong một ngày khác. =)
Hai xu của tôi; xin lưu ý rằng tôi thực sự chỉ biết đủ về Windows Installer để làm thiệt hại, nhưng đây là đánh giá của tôi đến từ một nhà phát triển kinh doanh nhỏ chỉ cố gắng sử dụng nó. Chúc may mắn!
8 giờ? Đó là khá nhanh chóng! Mã hóa cài đặt InnoSetup cuối cùng của tôi mất TEN DAYS, và nó vẫn không hoạt động ngay trên Vista. Nó đã cài đặt thư viện ứng dụng, một số ứng dụng mẫu, tạo cơ sở dữ liệu, cài đặt và bắt đầu dịch vụ 2 cửa sổ và xuất bản trang web nhưng 10 ngày vẫn còn quá dài ... –