Tình huống
Bạn đang thực hiện dở dang việc thiết lập môi trường phát triển mới—có lẽ là khoảng 10 phút sau khi bắt đầu cài đặt .NET 8 SDK hoặc Android Studio—thì mọi thứ dừng lại đột ngột. Một cửa sổ bật lên: Error 1618. Điều này thường xảy ra ngay khi bạn đang đối mặt với thời hạn triển khai lúc 5 giờ chiều.
Error 1618. Another installation is already in progress. Complete that installation before proceeding with this one.
Windows Installer (msiexec.exe) hoạt động theo cơ chế đơn nhiệm. Nó được lập trình cứng để chỉ xử lý một gói .msi hoặc .msp tại một thời điểm. Nếu một tiến trình chạy ngầm đang sử dụng dịch vụ này, tác vụ hiện tại của bạn sẽ bị kẹt trong hàng đợi.
Tại sao lỗi này xảy ra?
Dịch vụ Windows Installer sử dụng một global mutex. Hãy coi đây như một chiếc chìa khóa vật lý; chỉ một tiến trình có thể giữ nó để chỉnh sửa registry hệ thống hoặc hệ thống tệp. Điều này ngăn cản hai trình cài đặt khác nhau cố gắng ghi vào cùng một registry hive cùng lúc, vốn có thể gây hỏng hệ thống.
Các nguyên nhân phổ biến gây ra việc khóa này bao gồm:
- Cập nhật Windows ngầm (Silent Windows Updates): Đây là nguyên nhân phổ biến nhất. Windows có thể đang cài đặt một bản vá bảo mật 200MB trong nền mà không thông báo cho bạn.
- Tiến trình "thây ma" (Zombie Processes): Một lần cài đặt trước đó đã bị lỗi, nhưng
msiexec.exevẫn chạy ngầm và không chịu giải phóng khóa. - Dịch vụ tự động cập nhật: Các ứng dụng như Google Chrome hoặc Adobe Acrobat thường kích hoạt các trình cài đặt nhỏ chiếm dụng mutex trong khoảng 30–60 giây.
Cách khắc phục nhanh: Cưỡng bức dừng các tiến trình bị kẹt
Nếu không có trình cài đặt nào đang hiển thị, bạn có thể giải phóng khóa thủ công bằng cách đóng các phiên bản trình cài đặt đang hoạt động. Việc này mất khoảng năm giây và thường giúp bạn tránh phải khởi động lại máy.
Mở PowerShell với quyền Administrator và chạy lệnh sau:
taskkill /F /IM msiexec.exe
Lệnh này sẽ cưỡng bức chấm dứt engine cài đặt. Nếu bạn thấy thông báo nói rằng không tìm thấy tiến trình, có thể khóa đang được giữ bởi dịch vụ TrustedInstaller thay vì một tiến trình người dùng thông thường.
Phương pháp thiết lập lại: Khởi động lại dịch vụ Installer
Đôi khi tiến trình đã kết thúc, nhưng trạng thái dịch vụ vẫn bị kẹt ở "Pending" (Đang chờ). Bạn cần khởi động lại dịch vụ Windows Installer (msiserver) để làm mới trạng thái của nó.
- Nhấn
Win + R, gõservices.mscvà nhấn Enter. - Tìm Windows Installer trong danh sách.
- Chuột phải vào nó và chọn Stop (Dừng).
- Sau khi dịch vụ dừng hẳn, chuột phải lần nữa và chọn Start (Bắt đầu).
Bạn thích sử dụng dòng lệnh hơn? Hãy chạy hai lệnh này trong cửa sổ lệnh với quyền admin (elevated prompt):
net stop msiserver
net start msiserver
Kiểm tra sự can thiệp từ Windows Update
Nếu lỗi xuất hiện lại ngay lập tức, có khả năng Windows Update đang giữ mutex. Windows Update sử dụng dịch vụ TrustedInstaller, có ưu tiên cao hơn so với việc cài đặt thủ công của bạn.
Kiểm tra trạng thái dịch vụ qua PowerShell:
Get-Service -Name wuauserv
Nếu trạng thái là Running, hãy mở cài đặt Windows Update. Nếu bạn thấy thanh tiến trình như "Installing - 45%", bạn chỉ cần chờ đợi. Đừng cưỡng bức dừng Windows Update trong khi đang cập nhật kernel hoặc driver, vì điều này có thể dẫn đến Màn hình xanh chết chóc (BSOD) hoặc hỏng hệ điều hành.
Nâng cao: Xóa các thao tác tệp đang chờ xử lý
Trong một số trường hợp hiếm hoi, trình cài đặt trước đó đánh dấu các tệp cần được đổi tên hoặc xóa chỉ sau khi khởi động lại. Điều này khiến hệ thống luôn ở trạng thái "bận" vô thời hạn. Nếu bạn không thể khởi động lại ngay bây giờ, bạn có thể xóa các cờ này trong Registry Editor.
- Mở
regedit.exe. - Truy cập đường dẫn:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager - Tìm giá trị
PendingFileRenameOperations. - Sao lưu key bằng cách export, sau đó xóa nội dung chuỗi của giá trị đó.
Lưu ý: Chỉ sử dụng cách này như là giải pháp cuối cùng. Giá trị này thường chứa các bản cập nhật driver quan trọng cần được hoàn tất.
Xác minh: Xác nhận việc khắc phục
Trước khi bạn bắt đầu lại việc cài đặt SDK dung lượng 2GB, hãy xác nhận rằng engine cài đặt thực sự đang rảnh. Chạy lệnh sau:
msiexec /query
Nếu một cửa sổ trợ giúp nhỏ xuất hiện với thông tin phiên bản, engine đã sẵn sàng. Bây giờ, hãy chạy trình cài đặt của bạn với tính năng ghi log được bật để phát hiện bất kỳ lỗi ẩn nào khác:
msiexec /i "your_installer.msi" /L*V "install_log.txt"
Nếu giao diện cài đặt xuất hiện, bạn đã giải phóng thành công khóa mutex 1618.

