Windows Installer thực sự có tiếng là chậm. Có một vài điều đóng góp cho điều này và tôi sẽ giải quyết chúng dưới đây. Nhưng cuối cùng, người ta nên tự hỏi nếu một, hai hoặc ba phút thực sự là một vấn đề gây tranh cãi khi cài đặt và gỡ cài đặt phần mềm. Tôi mất nhiều thời gian hơn việc lướt qua các kênh truyền hình :)
Sổ đăng ký
Đây là thủ phạm số một. Windows Installer sử dụng rất nhiều registry cho các hoạt động của nó. Khi hệ thống của bạn đáo hạn, khi bạn cài đặt và gỡ cài đặt các ứng dụng và khi sổ đăng ký tăng kích thước hoặc bị phân mảnh, MSI sẽ trở nên chậm hơn. Ứng dụng tương tự sẽ cài đặt và gỡ cài đặt nhanh hơn nhiều trên bản cài đặt Windows nguyên sơ, so với trên hệ thống trưởng thành. Giải pháp ở đây là thử và giữ cho registry sạch sẽ và chống phân mảnh.
Để làm sạch registry, sử dụng một trong nhiều công cụ có sẵn trên mạng. Nhưng đối với phân mảnh đăng ký, tôi không thể đề xuất đủ NTREGOPT để tối ưu hóa tổ ong nội bộ và PageDefrag cho phân mảnh tệp vật lý.
Lý do hoạt động của MSI có thể trở nên chậm trên sổ đăng ký phải liên quan đến cách MSI sử dụng nó. Windows Installer sử dụng sổ đăng ký để theo dõi Sản phẩm nào đã cài đặt Thành phần nào và Vị trí được cài đặt. GUID cài đặt ban đầu được sử dụng ở định dạng nén. Thông tin trên mỗi máy về cài đặt có thể được tìm thấy tại HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Installer\UserData\S-1-5-18
, trong khi dữ liệu của mỗi người dùng được tìm thấy bên cạnh nó ở bên dưới HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Installer\UserData\
và trên khóa có SID người dùng.
Cả hai khóa này có thể khá lớn và chứa nhiều khóa con và giá trị. Họ kiểm soát Sản phẩm, Thành phần và KeyPath của từng ứng dụng được cài đặt. Tất cả thông tin này phải được đọc và xử lý cho một quy trình gỡ cài đặt chính xác. Tuy nhiên, định dạng đăng ký liệt kê các khóa theo thứ tự chữ cái cho phép tìm kiếm nhị phân. Nhưng các giá trị thì không. Chúng được lưu trữ khi chúng được tạo, do đó, một quy trình tìm kiếm tuyến tính phải được thực hiện. Mà làm chậm hiệu suất thuật toán.
Nói chung, MSI là một phương pháp khá đầy đủ và chính xác để cài đặt và gỡ cài đặt phần mềm. Nhưng nó bị phụ thuộc đăng ký của nó. Hệ thống này là tuyệt vời. Đó là Windows registry nên đã được đại tu từ lâu :)
Để biết thêm thông tin nâng cao:
Để phân tích sâu về những gì MSI đang làm trong mỗi quy trình cài đặt hoặc gỡ cài đặt, hãy tham khảo bài viết này giải thích cách thiết lập MSI Debug. Hoặc, với thông tin ít hơn nhưng vẫn có giá trị, đây là cách để kích hoạt đăng nhập.