CẬP NHẬT, tháng 7 năm 2018 : Một bản tóm tắt cực kỳ nén các thông tin dưới đây có sẵn trên stackoverflow: Lợi ích chính của MSI ( "executive summary"
- thuộc loại).
Tôi đã làm việc trong lĩnh vực phát triển như một người quản lý phát hành , kỹ sư xây dựng , nhà phát triển thiết lập và là một nhà đóng gói ứng dụng và kỹ sư triển khai trong các tập đoàn lớn.
Đây là đánh giá về các tính năng khái niệm và thế giới thực tốt nhất (và tồi tệ nhất) của MSI. Các vấn đề thiết kế phổ biến nhất được tìm thấy trong các tệp MSI được trình bày dưới dạng một câu trả lời riêng bên dưới . Không giả vờ là hoàn chỉnh - thực sự chỉ là một "đống não" lộn xộn - dự định là "những thứ không thể tìm thấy trong sách" (có lẽ vì lý do chính đáng).
Tôi cũng muốn đề xuất bài viết MSDN này là một bài đọc tốt: Windows Installer: Lợi ích và triển khai cho Quản trị viên hệ thống .
Tiêu chuẩn hóa:
Nói một cách dễ hiểu, MSI nói về tiêu chuẩn hóa và về việc xử lý " mùi triển khai " của các công nghệ cài đặt cũ. Cả một bộ sưu tập các thiết kế kiến trúc cài đặt xấu gây ra các vấn đề triển khai lặp đi lặp lại.
Nhìn chung MSI cung cấp một khung toàn diện, được tiêu chuẩn hóa cho trình cài đặt, bao gồm cả các tính năng và tùy chọn tích hợp và gỡ cài đặt để chạy im lặng với GUI được tiêu chuẩn hóa có thể được kích hoạt từ xa .
Các tính năng này tạo thành một sự cải tiến lớn so với các công nghệ cài đặt trước đó đã xử lý việc gỡ cài đặt và chạy im lặng một cách ngớ ngẩn - có lẽ là các tính năng quan trọng nhất để triển khai công ty cùng với quản lý gói từ xa đáng tin cậy thông qua Active Directory hoặc các công cụ quản trị từ xa chuyên dụng như Microsoft SCCM (trước đây là SMS), IBM Tivoli , CA Unicenter và tương tự.
Ai đó đã nhân đôi một phiên bản trước của câu trả lời này . Có lẽ đọc nhanh hơn?
Trình cài đặt kế thừa "Mùi triển khai"
MSI chủ động ngăn chặn mùi triển khai kế thừa theo thiết kế. Các chủ đề này sẽ được thảo luận trong các phần sau bên dưới, nhưng như một danh sách nhanh các vấn đề dễ nhận biết nhất với các trình cài đặt cũ và công nghệ triển khai cũ hơn là:
- 1) đôi khi họ hạ cấp và ghi đè lên các tệp được chia sẻ và phiên bản mà ít quan tâm đến địa ngục dẫn đến kết quả
- 2) thường không có thói quen gỡ cài đặt thích hợp được cung cấp cùng với trình cài đặt hoặc nó không hoàn thành đúng và đáng tin cậy - đặc biệt nếu chạy âm thầm. Đây là một vấn đề rất lớn đối với quản lý doanh nghiệp nhà nước
- 3) cài đặt im lặng hiếm khi được hỗ trợ đúng cách. Độ tin cậy rất kém và người ta thường phải ghi lại quá trình cài đặt với các lựa chọn hộp thoại và điều này không giải quyết tốt các điều kiện bất ngờ như hộp thoại lỗi hoặc hộp thoại cảnh báo không được ghi lại trong lần chạy ban đầu
- 4) trình cài đặt không lưu bản ghi về những gì đã được cài đặt và do đó không có cách nào tự động xác minh các tệp trên đĩa để kiểm tra xem chúng có còn là phiên bản được cài đặt ban đầu bởi trình cài đặt không
- 5) chúng đặc trưng các tham số dòng lệnh không thể đoán trước, không đáng tin cậy và không chuẩn để thực thi cài đặt
- 6) tuân theo dòng lệnh không chuẩn và thiếu tiêu chuẩn, rất khó để tùy chỉnh trình cài đặt với các giá trị cụ thể cần thiết cho việc triển khai của công ty theo cách đáng tin cậy và có thể dự đoán được
- 7) người dùng bình thường không thể chạy các cài đặt này và người ta thường phải loay hoay với quyền quản trị tạm thời (sử dụng "chạy như" nếu đủ, hoặc đăng nhập với tư cách quản trị viên, cài đặt và sau đó đăng xuất - thế hệ đăng nhập và đăng nhập đầy đủ này đôi khi được yêu cầu để cài đặt hoàn tất)
- 8) trình cài đặt setup.exe thường không trả về mã lỗi hoặc mã thành công thích hợp và đôi khi nó sẽ thoát ngay lập tức và khởi động một quá trình khác sẽ hoàn tất quá trình cài đặt khiến việc xác định cài đặt đã hoàn tất - đặc biệt là thông qua một đợt tập tin
- 9) hầu hết các tệp setup.exe cho phép trích xuất các tệp, nhưng không phải theo kiểu đáng tin cậy, có thể dự đoán được - bạn thường phải mất rất nhiều thời gian để tìm đúng các công tắc để hoàn thành công việc
- 10) ghi nhật ký nói chung là kém và khá khó hiểu trong một số công cụ. Gỡ lỗi với các tệp nhật ký hiếm khi tạo ra sự rõ ràng, nhưng đã giúp một chút
- 11) không có sự minh bạch trong những gì trình cài đặt đang làm và không có hoặc không đáng tin cậy để hoàn tác các thay đổi sau khi cài đặt không thành công
- 12) đã có không có cách nào tiêu chuẩn công nghiệp của việc triển khai các thành phần runtime chia sẻ cho dù họ đang hoạt động thành phần hệ thống, thành phần của bên thứ ba hoặc của riêng bạn
Danh sách này tiếp tục với nhiều lỗ hổng triển khai quan trọng và được công nhận khác . Rõ ràng trong thế giới triển khai của công ty, những vấn đề này xuất hiện thường xuyên nhất và nó đã dẫn đến việc " đóng gói lại ứng dụng " trong đó trình cài đặt kế thừa được ghi lại bằng các công nghệ quét đĩa và đăng ký để tạo tệp MSI tuân thủ tiêu chuẩn để triển khai đáng tin cậy.
Đóng gói lại ứng dụng là một công việc chuyên môn và thường mang lại các tệp MSI chất lượng tuyệt vời nếu được thực hiện đúng bởi những người có kiến thức, nhưng không thể đóng gói lại tất cả các ứng dụng do logic đăng ký phức tạp phải được chạy tương tác để một số ứng dụng hoạt động.
Lợi ích MSI - Tóm tắt ngắn
Nói một cách dễ hiểu, những lợi ích thực sự quan trọng của MSI là (không theo thứ tự cụ thể nào):
- 1) gỡ cài đặt luôn có sẵn cho mọi gói trừ khi nó bị vô hiệu hóa tích cực
- 2) điều này giống với ghi nhật ký , rất tuyệt vời và được chuẩn hóa, mặc dù dài dòng (các công cụ như WiLogUtl.exe có thể được sử dụng để phân tích các tệp nhật ký)
- 3) những gì một tập tin MSI làm là (bán) trong suốt hoặc "có thể kiểm tra" đối với hầu hết các phần. Ngoại lệ là các hành động tùy chỉnh - (xem phần minh bạch bên dưới)
- 4) tùy chỉnh thiết lập được thực hiện theo cách chuẩn hóa ( biến đổi )
- 5) không cần phải lộn xộn với quyền quản trị tạm thời vì cài đặt chạy được nâng cao thông qua quảng cáo Active Directory, chính sách nhóm hoặc quản trị từ xa. Một số bằng cấp ở đây. Cũng xem ảnh chụp màn hình này từ trình soạn thảo đối tượng chính sách nhóm.
- 6) cài đặt / gỡ cài đặt im lặng thông qua các công cụ quản lý hoặc sử dụng msiexec.exe hoạt động tốt
- 7) có hỗ trợ rollback đầy đủ cho các cài đặt không thành công. Nếu bạn cài đặt thủ công trên hộp, có một số bằng cấp bạn cần biết.
- 8) tệp MSI cho vay cả kiểm tra và xác thực tính nhất quán và hợp lệ logic vì chúng tuân thủ lược đồ cơ sở dữ liệu ( xem ví dụ xác thực )
- 9) cập nhật là các loại được tiêu chuẩn hóa, mặc dù phức tạp và thường dễ bị lỗi đối với các trình đóng gói thiếu kinh nghiệm
- 10) các chiết xuất các tập tin từ msi là một tính năng built-in (kiểm tra bài viết liên quan cho một cái nhìn tổng quát tốt)
- 11) dòng lệnh Windows Installer, msiexec.exe , có tính năng kiểm soát chi tiết rất tốt về cách thực hiện trình tự cài đặt và tất cả các tùy chọn hoạt động với tất cả các tệp MSI tuân thủ tiêu chuẩn (đặt mức ghi nhật ký, chạy âm thầm / tương tác / bán im lặng , thiết lập các tham số cài đặt, áp dụng các biến đổi, v.v ...).
- 12) hợp nhất các mô-đun là cơ chế MSI để phân phối các tệp được chia sẻ với nhiều gói MSI. Nó là một mô-đun tiêu hao hoặc gói logic cài đặt có thể kết hợp với bất kỳ gói MSI nào trong thời gian biên dịch. Wix đã mở rộng và cải thiện khái niệm này với việc sử dụng Wix bao gồm các tệp - một khái niệm mà theo tôi là vượt trội so với các mô-đun hợp nhất - đặc biệt là đối với các tệp của riêng bạn (không phải là tệp OS)
- 13) chính công cụ cài đặt windows có cơ chế ngăn chặn ghi đè các tập tin được phiên bản hoặc sửa đổi khi cài đặt. Điều này được kiểm soát bởi một logic thay thế tập tin khá phức tạp . Mặc dù hiệu quả và tốt, logic cuối cùng có thể là một vấn đề vì nhiều nhà phát triển phải đối mặt với vấn đề không thể ghi đè lên các tệp cấu hình đã sửa đổi của họ khi nâng cấp. Giải pháp cho những vấn đề này nói chung là những thay đổi nhỏ trong thiết kế ứng dụng để tránh các kiểu chống triển khai phổ biến - mặc dù đó là một cuộc thảo luận lớn của riêng nó.
Trong thế giới thực, tôi đã tìm thấy các khía cạnh ít thành công hơn bao gồm vá lỗi (rất phức tạp), MSI-GUI (tính năng đơn giản, khá phức tạp, thiếu tính linh hoạt), khả năng phục hồi (có thể gây khó khăn cho việc sửa lỗi lặp lại các vấn đề tự sửa chữa ) và độ phức tạp chung về việc xử lý công nghệ cho người mới bắt đầu (độ phức tạp cao của các hoạt động cơ bản đôi khi - ví dụ như nâng cấp, GUI và nhiều chi tiết tương tác gây ra kết quả không mong muốn, v.v ...). Tốc độ của quá trình cài đặt cũng bị chậm lại đáng kể do chi phí hoạt động của MSI tăng. Xem một số mẹo để cải thiện tốc độ cài đặt MSI .
Phần còn lại của văn bản đề cập đến một số khía cạnh của MSI chi tiết hơn.
Độ trong suốt (định dạng trình cài đặt mở)
Một tệp MSI về cơ bản là một cơ sở dữ liệu SQL-Server bị loại bỏ được lưu trữ dưới dạng tệp lưu trữ có cấu trúc COM - về cơ bản là một hệ thống tệp trong một tệp hoặc một tập hợp các luồng dữ liệu. Đây là loại tệp được sử dụng trong các tài liệu Microsoft Office và nó mang lại một định dạng chuẩn có thể được xem xét và kiểm tra - một vấn đề lớn đối với các tập đoàn lớn.
Ngoại trừ các hành động tùy chỉnh được biên dịch, tệp MSI là một hộp màu trắng . Nếu thiết lập thay đổi một cái gì đó điên rồ, chẳng hạn như cài đặt mạng toàn hệ thống, bạn thực sự có thể thấy nó bằng các công cụ thích hợp . Ngoại lệ đáng chú ý là các hành động tùy chỉnh được biên dịch - đó là hộp đen . Yêu cầu logo của Windows yêu cầu các hành động tùy chỉnh phải được chú thích để giải thích những gì họ đang làm, nhưng điều này thường bị các nhà phát triển thiết lập bỏ qua. Hy vọng sự ra đời của Wix sẽ cải thiện điều này.
Để xác định những hành động tùy chỉnh được biên dịch như vậy thực sự làm theo nghĩa kỹ thuật, việc chụp thiết lập là cần thiết. Điều này hầu như không bao giờ được thực hiện trong kinh nghiệm của tôi. Thông thường hơn là liên hệ với nhà cung cấp để biết thông tin nếu phần mềm cần phê duyệt để triển khai cho công ty, và sau đó có thể chính ứng dụng đó ngăn cản việc sử dụng của nó và không chỉ là thiết lập.
Khả năng tùy biến (biến đổi)
Một MSI có thể được tùy chỉnh thông qua các biến đổi để phù hợp với nhu cầu và tiêu chuẩn của tổ chức trong khi vẫn cho phép khả năng tương tác với các bản cập nhật trình cài đặt của nhà cung cấp. Bạn không tự thay đổi trình cài đặt, bạn tạo tùy chỉnh của mình trong một tệp riêng, tổ chức cụ thể được gọi là biến đổi (tệp .mst) (một đoạn cơ sở dữ liệu hoặc thay đổi giao dịch nếu bạn muốn). Bạn có thể tự do vô hiệu hóa các hành động tùy chỉnh và nói chung là thay đổi, ghi đè hoặc vô hiệu hóa mọi thứ trong trình cài đặt và thậm chí bạn có thể thêm những thứ mới, bao gồm các tệp. Các tệp biến đổi đôi khi cũng được sử dụng để bản địa hóa một tệp MSI sang các ngôn ngữ khác nhau. Một số biến đổi có thể được áp dụng cho một MSI duy nhất, đây là một mẫu với các đường dẫn bị cắt ngắn :
msiexec.exe /I "My.msi" /QN /L*V "C:\My.log" TRANSFORMS="C:\1031.mst;C:\My.mst"
Giải thích thông số nhanh:
/QN = run completely silently
/L*V "C:\My.log"= verbose logging
TRANSFORMS="C:\1031.mst;C:\My.mst" = Apply transforms 1031.mst and My.mst.
Quản lý và báo cáo
Windows Installer duy trì cơ sở dữ liệu toàn diện về tất cả các mục mà sản phẩm đã cài đặt trong sổ đăng ký ( HKEY_CLASSES_ROOT \ Installer - không bao giờ thay đổi trực tiếp bất cứ điều gì ở đây! Điều đó cũng đúng với các chuyên gia).
Bạn có thể xác định một cách đáng tin cậy nếu một sản phẩm được cài đặt, những tính năng nào đã được cài đặt và phiên bản tệp nào đã được cài đặt. Ngoài ra, bạn có thể nhận được một danh sách bất kỳ bản vá nào đã được áp dụng cho sản phẩm cơ sở, nếu có. Bạn có thể truy cập cơ sở dữ liệu này thông qua API hỗ trợ Win32, COM hoặc .NET bằng nhiều công cụ quản trị, cấu hình và quản trị tập lệnh như Microsoft SCCM , IBM Tivoli , CA Unicenter, v.v.
Bảo mật (quyền nâng cao tạm thời)
MSI cũng bao gồm các nguyên tắc "quyền nâng cao" cho phép người dùng bị hạn chế kích hoạt cài đặt sản phẩm yêu cầu quyền quản trị viên để cài đặt. Đây là một phần của " tính năng quảng cáo " cho phép quản trị viên cung cấp trình cài đặt cho người dùng mà không cần cài đặt chúng trên tất cả các máy trạm. Bản thân trình cài đặt phải được cấp phép chính xác trên một số tài khoản cốt lõi để khái niệm quyền nâng cao này hoạt động chính xác. Người dùng có thể tự kích hoạt cài đặt sản phẩm hoặc cài đặt có thể được kiểm soát bởi hệ thống triển khai chuyên dụng như SCCM, Tivoli, Unicenter (thông thường các công ty lớn hơn). Không cần phải lộn xộn với quyền quản trị tạm thời để mọi thứ hoạt động đó thường là trường hợp với trình cài đặt cũ.
Cơ sở dữ liệu cài đặt toàn diện cũng đảm bảo rằng bạn có tổng quan đầy đủ về các bản vá đã cài đặt và do đó có khả năng phát hiện các lỗ hổng bảo mật thông qua các công cụ quản trị và tự động hóa.
Thẩm định
Các tệp MSI có thể được kiểm tra bằng các quy tắc xác thực để đảm bảo nó tuân thủ một số quy tắc nhất quán nội bộ (gọi là ICE). Các tập đoàn có thể tạo séc ICE của riêng họ để thực thi các quy tắc và yêu cầu đặc biệt của công ty. Điều này giúp rất nhiều với QA. Lý do xác thực là có thể là do bản chất tự tham chiếu của cơ sở dữ liệu quan hệ và lược đồ cơ sở dữ liệu liên quan. Cơ sở dữ liệu phải nhất quán nội bộ và tuân thủ lược đồ riêng liên quan đến khóa ngoại, kiểu dữ liệu, độ rộng trường, phiên bản lược đồ, v.v ... Xác thực cũng vượt xa điều này và có khả năng phát hiện lỗi và lỗi logic chính hãng trong gói , không chỉ định dạng và gõ sai sót. Ví dụ: nó có thể phát hiện các tệp hoặc loại tệp đang được triển khai đến các đích đích sai.
Khả năng phục hồi (Tự sửa chữa)
Các cài đặt quản trị tính năng của Windows cài đặt cung cấp một cách tiêu chuẩn để trích xuất các tập tin nguồn từ một MSI ( ở đây là thêm một số thông tin về chủ đề này ). Các tệp nguồn này sau đó có thể được chia sẻ và có sẵn cho tất cả các máy trạm để cài đặt. Điều này đảm bảo sửa chữa, gỡ cài đặt và sửa đổi các hoạt động hoàn tất mà không yêu cầu phương tiện cài đặt trên CD hoặc tương tự. Điều này đặc biệt quan trọng để vá và cập nhật các hoạt động có thể yêu cầu quyền truy cập vào các tệp nguồn phiên bản cũ trong các trường hợp đặc biệt.
Cũng có những vấn đề phổ biến với tính năng phục hồi này. Hầu hết các quản trị viên có kinh nghiệm máy móc với chu kỳ tự sửa chữa theo chu kỳ dường như không bao giờ dừng lại. Theo liên kết cho một danh sách dài các nguyên nhân của vấn đề này. Và một lần nữa, đây là một phiên bản ngắn hơn có thể dễ đọc hơn.
Phục hồi
Việc cài đặt tệp MSI thường sẽ kích hoạt việc tạo điểm khôi phục . Hơn nữa, tất cả các tệp và mục đăng ký được thay thế hoặc ghi đè trong quá trình cài đặt sẽ được lưu và khôi phục nếu quá trình cài đặt không hoàn thành, chặn mọi thay đổi được thực hiện trong các hành động tùy chỉnh.
Các hành động tùy chỉnh phải thực hiện hỗ trợ rollback của riêng họ để tuân thủ logo Windows. Điều này thường bị bỏ qua, nhưng liên quan đến việc tạo hành động tùy chỉnh thứ hai để hoàn tác các thay đổi được thực hiện bởi hành động tùy chỉnh chính.
Rollback đảm bảo rằng máy trạm được để ở trạng thái ổn định ngay cả khi cài đặt không thành công. Tập lệnh rollback thực tế được lưu trữ trong một thư mục ẩn trực tiếp trên ổ đĩa hệ thống - thường là C: \ Config.MSI và nó chứa các tệp có phần mở rộng .RBS và .RBF - Tập tin Rollback Script . Như bạn có thể mong đợi các tệp MSI được thiết kế kém có thể vi phạm các tính năng tích hợp sẵn của Windows tại đây, hãy xem bài đăng khác của tôi trong chuỗi này để biết thêm chi tiết.
Có nhiều cách để vô hiệu hóa rollback và tăng tốc độ cài đặt. Nói chung không được khuyến nghị, nhưng đây là chi tiết về thuộc tính MSIFASTINSTALL và DISABLEROLLBACK . Đây là một tính năng phức tạp, nhưng đây là một tổng quan nhanh chóng .
Vá và cập nhật
Mặc dù rất phức tạp, việc vá lỗi trong trình cài đặt Windows được quản lý và đăng ký đầy đủ trên hệ thống để có thể xác định trạng thái bảo mật hệ thống bằng cách kiểm tra những gì đã được cài đặt. Các bản cập nhật được chuẩn hóa cho một vài biến thể cơ bản và điều này cho phép các bản cập nhật được thực hiện với mức độ chắc chắn cao hơn với điều kiện bạn có thể xử lý sự phức tạp liên quan. Hệ thống triển khai sẽ có thể báo cáo những cập nhật thất bại và tại sao.
Trong chế độ xem chủ quan, vá lỗi hoạt động tốt cho 2 mục đích sử dụng cơ bản : 1 ) hotfix nhỏ cho các sản phẩm được giao và 2 ) vá một sản phẩm đã cài đặt để khắc phục trình tự gỡ cài đặt bị lỗi nhằm ngăn chặn việc gỡ cài đặt sản phẩm.
Một bản vá chỉ là một cơ chế phân phối cho một bản cập nhật đã hoạt động . Vì vậy, nó chỉ là một container phức tạp và dễ bị lỗi hơn so với thiết lập ban đầu. Nguyên tắc số một cho một bản vá là nó phải nhỏ hơn MSI gốc hoặc không có lý do rõ ràng nào để cung cấp một bản vá. Một bản vá có thể nhận được rất lớn một cách nhanh chóng nếu nó nhắm mục tiêu nhiều phiên bản sản phẩm.
Ghi nhật ký (thực sự dài dòng)
Windows Installer cung cấp một tính năng ghi nhật ký được tiêu chuẩn hóa , vượt trội hơn rất nhiều so với các phiên bản trước, mặc dù gần như quá dài dòng. Các tệp nhật ký có thể được giải mã bằng cách sử dụng các máy phân tích nhật ký và các mức nhật ký tùy chỉnh có thể được sử dụng để loại bỏ việc tạo các tệp nhật ký quá lớn với thông tin không cần thiết. Đối với mục đích gỡ lỗi, đăng nhập verbose là vô cùng hữu ích. Xem blog của Rob Mensching để biết cách thủ công tốt để đọc tệp nhật ký MSI (về cơ bản bạn tìm kiếm " giá trị 3 " trong tệp nhật ký). Đây là một dòng lệnh mẫu thực hiện ghi nhật ký chi tiết:
msiexec.exe /I "C:\Installer.msi" /QN /L*V "C:\msilog.log"
Bài viết này của Robert Macdonald từ Nhóm cài đặt Windows rất được khuyến khích như một cái nhìn thực tế về ghi nhật ký MSI: Cách diễn giải Nhật ký trình cài đặt Windows .
Phần kết luận
Không phải mọi thứ đều tốt về Windows Installer . Sự phức tạp của nó đôi khi có thể gây trở ngại , nhưng đối với các tập đoàn lớn, các tệp MSI vượt trội hơn rất nhiều so với bất kỳ hình thức triển khai nào khác khi bạn tính đến danh sách các lợi ích ở trên.
Mô hình trình cài đặt mới (câu lệnh SQL lớn)
Để hiểu " mô hình " mới, điều quan trọng là phải hiểu rằng MSI được dự định là một mô tả khai báo về những gì sẽ xảy ra trên hệ thống đích, chứ không phải là một chuỗi các sự kiện cố định. Tôi cho rằng bạn có thể nghĩ về nó như một câu lệnh SQL khổng lồ . Ví dụ: bạn khai báo các mục bạn muốn thêm hoặc sửa đổi vào tệp INI. Khi cài đặt chạy các thay đổi được theo dõi và khôi phục có sẵn để thay đổi có thể được hoàn nguyên nếu cài đặt thất bại. Điều này thực sự hoạt động như " automagic ", và đáng tin cậy khi được thực hiện đúng.
Hành động tùy chỉnh (nghi phạm thông thường)
Thật đau đầu cho các nhà phát triển MSI có kinh nghiệm khi thấy mọi người dựa vào các hành động tùy chỉnh phức tạp, không đáng tin cậy cho chức năng được triển khai tốt hơn với các tính năng MSI tích hợp. Một phần đáng kể của tất cả các lỗi MSI và các sự cố khôi phục được gây ra bởi các hành động tùy chỉnh sai lầm và hầu hết các lỗi khác là do sử dụng sai thiết kế MSI (xem câu trả lời riêng cho danh sách các lỗi MSI phổ biến).
Ngoài các tính năng MSI tích hợp, ngày càng có nhiều chức năng tùy chỉnh hơn thông qua khung mới như Wix - cách XML để biên dịch các tệp MSI, do đó, ngày càng ít cần logic hành động tùy chỉnh phức tạp cho hầu hết các hoạt động.
MSI có tính năng hỗ trợ đầy đủ để xử lý việc hợp nhất các cài đặt tệp ini, phông chữ, biến môi trường, khóa đăng ký, thông tin COM, phím tắt, tiện ích mở rộng tệp, điều kiện khởi chạy, cài đặt GAC, ODBC, v.v ...
WIX đi xa hơn với sự hỗ trợ cho các tính năng rất tiên tiến như tiện ích mở rộng máy chủ SQL, cài đặt và cấu hình IIS, bộ đếm hiệu suất, kiểm tra DirectX và các tác vụ liên quan đến trò chơi khác, tạo hình ảnh gốc .NET, COM +, trình điều khiển, quy tắc tường lửa, tiện ích mở rộng PowerShell, đóng ứng dụng, quản lý người dùng, nhóm, chia sẻ và nhiều hơn nữa. Một số liên quan để giải quyết, nhưng đáng tin cậy hơn nhiều so với hành động tùy chỉnh của riêng bạn.
Tránh các hành động tùy chỉnh bằng mọi giá nếu có thể
Để cố gắng đặt nó trong quan điểm: các built-in và các giải pháp làm sẵn được thực hiện bởi các chuyên gia triển khai tốt nhất có thể , và chúng được thử nghiệm bởi hàng ngàn, hàng chục ngàn hoặc thậm chí hàng triệu người dùng (đối với built-in nội dung trong MSI Chính nó). Bạn có thực sự nghĩ rằng bạn có thể làm tốt hơn các hành động tùy chỉnh của riêng bạn? Sử dụng một hành động tùy chỉnh sẽ là một sự kiện hiếm gặp và cần phải đạt được điều gì đó độc đáo cho sản phẩm bạn cài đặt . Và bạn cũng phải viết hỗ trợ rollback thích hợp, điều này khá liên quan.
Viết một hành động tùy chỉnh hầu như luôn luôn là một sai lầm , nhưng có những trường hợp chính hãng khi bạn thực sự cần sự linh hoạt là tốt. Như mọi khi, điều quan trọng là chọn các trận đánh của bạn tốt. Nó có thể là một nhiệm vụ thú vị lúc đầu, nhưng bạn có thể sẽ phải đối mặt với nhiều vấn đề bất ngờ và lãng phí rất nhiều thời gian tốn kém. Tôi có ý này rất nghiêm túc. Tôi đã tự viết một bộ các hành động tùy chỉnh C ++ cho công ty sử dụng (để loại bỏ các hành động tùy chỉnh VBScript dễ bị lỗi) - đó không phải là đi bộ trong công viên, và mặc dù việc mã hóa có thể không khó khăn nhất trên thế giới, việc gỡ lỗi và kiểm tra và hookup vào một tập tin MSI thực tế là không có gì liên quan. Đôi khi nghiên cứu những tùy chọn làm sẵn có sẵn có thể sẽ giúp bạn tiết kiệm hàng tuần công việc phát triển và mang lại độ tin cậy triển khai lớn hơn nhiều.
Sử dụng Trình tự khởi chạy ứng dụng
Một điểm rất quan trọng là rất nhiều cấu hình ứng dụng sẽ xảy ra khi khởi chạy ứng dụng khi bạn có bối cảnh thời gian chạy dự đoán và xử lý lỗi tốt, và không phải trong thiết lập chỉ chạy một lần và có tính năng mạo danh , giải trình tự , điều hòa và thời gian chạy rất phức tạp phức tạp .
Thiết lập của bạn không nên cấu hình ứng dụng, nó nên chuẩn bị cho ứng dụng cấu hình trong lần khởi chạy đầu tiên . Cụ thể, thiết lập của bạn nên viết tất cả các cài đặt yêu cầu quyền nâng cao - ghi vào HKLM, đăng ký dịch vụ, cài đặt theo đường dẫn trên mỗi máy và bất kỳ điều gì mà ứng dụng không thể tự viết bằng quyền người dùng thông thường.
Nếu bạn là nhà phát triển thiết lập, bạn nên đề nghị tham gia mã hóa trình tự khởi chạy ứng dụng thay vì viết các hành động tùy chỉnh thiết lập . Nếu không có gì khác, để tránh trông giống như bạn đang cố gắng "vượt qua" cho người khác. Trong trình tự khởi chạy này, bạn có thể viết mã đáng tin cậy và có thể kiểm tra hơn, dễ dàng hơn để nhận trợ giúp từ nhân viên QA để kiểm tra (họ thường không hiểu thử nghiệm triển khai cũng như thử nghiệm ứng dụng).
Thiết lập độ phức tạp
Cốt lõi của sự phức tạp thiết lập xoay quanh thực tế là các lỗi được tích lũy (bạn đang quản lý quá trình phân phối, không chỉ là biên dịch lại nhanh), các lỗi rất khó gỡ lỗi (không có quyền truy cập vào các hệ thống xảy ra lỗi) và hệ thống đích trạng thái khác nhau về mọi cách có thể tưởng tượng . Vui lòng xem câu trả lời này để thảo luận kỹ hơn về sự phức tạp này và cách các hệ thống mục tiêu có thể cảnh giác theo một số cách gây sốc: Windows Installer và tạo WiX, và Độ phức tạp của Triển khai (xem phía dưới).
WiX (giải pháp MSI tốt nhất cho một số mục đích)
Đọc phần giới thiệu nhanh về WiX này để biết mô tả về cách dựa trên XML mới để biên dịch các tệp MSI. Các tệp nguồn dựa trên văn bản cung cấp kiểm soát nguồn tốt hơn nhiều so với trước đây. Đây là một bộ công cụ mã nguồn mở miễn phí rất được khuyến khích .
Lưu ý : Xem các phần khác trong luồng để biết nhanh các vấn đề thiết kế phổ biến với các tệp MSI - nó không đầy đủ, nhưng đáng để đọc. Tôi không muốn thêm câu trả lời này vì nó không liên quan 100%, nhưng đối với thế giới thực, đây là một chủ đề quan trọng.
Một số thông tin cốt lõi của MSI cho quản trị viên hệ thống:
(tha thứ cho "khuyến mãi" không biết xấu hổ - đó là để dễ dàng truy cập và truy xuất)
Đây chỉ là một vài liên kết đến các chủ đề có thể hữu ích cho các quản trị viên hệ thống trong nỗ lực kiểm soát việc triển khai trên mạng của họ:
Các chủ đề hướng dẫn đặc biệt:
Chủ đề khái niệm / Thực hành tốt nhất: