Tôi đã kiểm tra lại điều này và đây là một số thông tin cập nhật :
Có thể triệt tiêu GUI MSI và đặt GUI bên ngoài do bên thứ ba triển khai. GUI bên ngoài này có thể nhận tin nhắn từ msiexec.exe khi nó thực hiện cài đặt. Điều này chủ yếu là để thực hiện một thanh tiến trình tùy chỉnh , nhưng có vẻ như bạn cũng có thể chặn hầu hết các thông báo lỗi và thông báo trạng thái khác: chức năng MsiSetExternalUI .
Tham số thú vị là dwMessageFilter . Ví dụ, bằng cách cài đặt, bạn chỉ có thể nhận được các thông báo lỗi xảy ra trong quá trình cài đặt - hoặc có vẻ như vậy. Tôi cho rằng điều này có thể là đủ cho hầu hết các mục đích.
INSTALLUI_HANDLER MsiSetExternalUI(
_In_ INSTALLUI_HANDLER puiHandler,
_In_ DWORD dwMessageFilter,
_In_ LPVOID pvContext
);
Đáng tiếc hiện tại tôi không có mã mẫu cho việc này. Tôi sẽ kiểm tra điều này sau, khi tôi thiết lập hệ thống của mình đúng cách. Hàm MsiEnableLog là một lệnh gọi hàm liên quan sẽ cho phép đăng nhập vào tệp. Cập nhật: Đây là những gì trông giống như một ví dụ SDK đang hoạt động .
Ở cấp độ giao diện dòng lệnh , bạn cũng có thể đặt ghi nhật ký để xóa bộ đệm ngay lập tức thành tệp bằng cách thêm ! tham số:
msiexec.exe /I "IsWiX.msi" /QN /L*V! "C:\msilog.log"
Điều này có nghĩa là tệp nhật ký được ghi liên tục để không có bộ đệm nhật ký bị mất nếu msiexec.exe gặp sự cố. Chi phí là một trình cài đặt chậm hơn đáng kể do chi phí IO.