Sự khác biệt cụ thể giữa tệp .msi và setup.exe là gì?


193

Tôi đã tìm kiếm rất nhiều, nhưng tất cả đều là câu trả lời đoán. Giúp tôi tìm câu trả lời chính xác.




Tôi muốn cài đặt một chương trình đi kèm với cả trình cài đặt EXE và MSI. Lần đầu tiên tôi cài đặt từ MSI, chỉ cài đặt các tệp chương trình (không phải bất kỳ điều kiện tiên quyết hoặc phụ thuộc nào và không tạo biểu tượng Menu Bắt đầu). Khi tôi tự khởi chạy chương trình, nó không thành công khi nói một số DLL bị thiếu. Cài đặt từ EXE cũng cài đặt những thứ khác và sản phẩm chạy tốt. Tôi có thể nói, nếu một nhà sản xuất phần mềm cung cấp cả tùy chọn EXE và MSI để cài đặt, hãy sử dụng EXE.
James L.

Câu trả lời:


232

MSI là cơ sở dữ liệu Windows Installer. Windows Installer (một dịch vụ được cài đặt với Windows) sử dụng phần mềm này để cài đặt phần mềm trên hệ thống của bạn (tức là sao chép tệp, đặt giá trị đăng ký, v.v ...).

Một setup.exe có thể là bootstrapper hoặc trình cài đặt không msi. Trình cài đặt không phải msi sẽ trích xuất tài nguyên cài đặt từ chính nó và quản lý cài đặt của chúng trực tiếp. Một bootstrapper sẽ chứa MSI thay vì các tệp riêng lẻ. Trong trường hợp này, setup.exe sẽ gọi Windows Installer để cài đặt MSI.

Một số lý do bạn có thể muốn sử dụng setup.exe :

  • Windows Installer chỉ cho phép một MSI được cài đặt cùng một lúc. Điều này có nghĩa là rất khó để MSI cài đặt các MSI khác (ví dụ: các phụ thuộc như .NET framework hoặc C ++ runtime). Vì setup.exe không phải là MSI, nên nó có thể được sử dụng để cài đặt một số MSI theo trình tự.
  • Bạn có thể muốn kiểm soát chính xác hơn cách quản lý cài đặt. Một MSI có các quy tắc rất cụ thể về cách nó quản lý các cài đặt, bao gồm cài đặt, nâng cấp và gỡ cài đặt. Một setup.exe cho phép kiểm soát hoàn toàn quá trình cấu hình phần mềm. Điều này chỉ nên được thực hiện nếu bạn thực sự cần sự kiểm soát bổ sung vì nó là rất nhiều công việc, và nó có thể là khó khăn để làm cho nó đúng.

7
Tôi định gõ cái này - đây có lẽ là thứ anh ta đang tìm kiếm
Mongoose

1
Theo kinh nghiệm của tôi, việc xây dựng trình cài đặt MSI là rất nhiều công việc so với việc xây dựng trình cài đặt dựa trên exe. Điều này phụ thuộc rất nhiều vào các công cụ bạn sử dụng để xây dựng trình cài đặt ở nơi đầu tiên. Thật không may, tất cả các công cụ cài đặt dựa trên MSI mà tôi thấy đều là các công cụ GUI thương mại hoặc các công cụ dựa trên WiX phức tạp. Cả hai đều không phù hợp với nhu cầu của tôi đặc biệt tốt (tức là tự động xây dựng trình cài đặt với tập lệnh).
craftworkgames

Vì vậy, tôi vẫn đang tự hỏi tại sao MSI tồn tại. Vấn đề gì đã cố gắng giải quyết khi exe dường như hoạt động tốt?
Người đàn ông Muffin

14

Các tệp .msi là các tệp trình cài đặt windows không có thời gian chạy trình cài đặt windows, setup.exe có thể là bất kỳ chương trình thực thi nào (có thể là cài đặt nội dung trên máy tính của bạn)


9

MSI là một tệp cài đặt cài đặt chương trình của bạn trên hệ thống thực thi.

Setup.exe là một ứng dụng (tệp thực thi) có (các) tệp msi là một trong những tài nguyên. Thực thi Setup.exe sẽ lần lượt thực thi msi (trình cài đặt) ghi ứng dụng của bạn vào hệ thống.

Chỉnh sửa (như được đề xuất trong nhận xét): Thiết lập các tệp thực thi không nhất thiết phải có tài nguyên MSI trong nội bộ


Thiết lập các tệp thực thi không nhất thiết phải có tài nguyên MSI trong nội bộ.
jkmartindale

-9

MSI về cơ bản là một trình cài đặt từ Microsoft được tích hợp vào windows. Nó liên kết các thành phần với các tính năng và chứa thông tin kiểm soát cài đặt. Không cần thiết rằng tệp này chứa các tệp yêu cầu người dùng thực tế, tức là các chương trình ứng dụng mà người dùng mong đợi. MSI có thể chứa một setup.exe khác bên trong mà MSI bao bọc, trong đó thực sự chứa các tệp yêu cầu của người dùng.

Hy vọng điều này sẽ xóa bạn nghi ngờ.


13
Điều này gây nhầm lẫn và thường không chính xác - trong đó MSIcác tệp thường KHÔNG bọc setup.execác tệp, nhưng ngược lại.
Flak DiNenno

"MSI có thể chứa một setup.exe khác bên trong nó mà MSI kết thúc" không chính xác! Thay vào đó, điều ngược lại là đúng: một .exe có một .msi bên trong nó.
MỘT
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.