# Cài đặt và mở ứng dụng

Kiểm tra trước. Đã cài thì mở; chỉ cài khi `status=not_installed` và người dùng cần cài. Lỗi phát hiện, hết giờ, JSON sai, `detection_inconclusive` không chứng minh chưa cài.

```bash
ml-cli client status --output-json
ml-cli client open --output-json
ml-cli client install --interactive --output-json
```

`client open` hỗ trợ Windows, macOS, Linux. `already_running` tránh mở trùng tiến trình. `launch_requested` chỉ là hệ điều hành nhận yêu cầu, không chứng minh có cửa sổ, đã đăng nhập hoặc API sẵn sàng. Kiểm tra status/doctor riêng. Phát hiện lỗi sẽ dừng trước khi mở.

Trên macOS, status thường trả `integrityStatus=not_checked`, không chạy codesign/Gatekeeper. Dùng `client status --require-integrity --output-json` để kiểm tra nghiêm ngặt; có thể trả `installed_with_integrity_warning`, mã 2 nhưng không phải chưa cài. Bản cũ không bị ghi đè; có thể đề nghị `nextAction=update_in_client`.

Windows x64 chỉ dùng lại bộ cài sau kiểm tra PE/sản phẩm/Authenticode/nhà phát hành. macOS tải DMG mới đúng kiến trúc; `installerVerified=false`, `signatureStatus=null`, `publisher=null` là dự kiến vì thiếu chữ ký/checksum độc lập. Kiểm tra ảnh đĩa không phải xác minh nhà phát hành. Linux không tải/cài ứng dụng; chỉ mở bản tiêu chuẩn đã cài.

`--interactive` yêu cầu hệ điều hành mở bộ cài, không chấp nhận giấy phép, UAC/Gatekeeper, hoàn thành trình cài hay chép App vào Applications; không chứng minh đã cài. Không thấy cửa sổ thì xem `installerPath`; sau khi hoàn tất thủ công, chạy lại status.