# 5.3. Đóng gói & Cài đặt Signing Desktop App (Client)

Client App được tối ưu hóa đặc biệt. Thay vì phải yêu cầu hàng trăm nhân sự dùng máy tính văn phòng tự tải JDK/JRE về để chạy lệnh `java -jar`, ứng dụng Desktop được **nhúng (bundle) thẳng JRE** (Custom JRE) vào bên trong thông qua công cụ `jlink` và `jpackage`. Nó biến Web Service local thành một file `<Tên-App>.exe` hoặc `<Tên-App>.msi` độc lập.

Quy trình đóng gói đã được gom gọn tự động hóa toàn bộ trong script **<span class="inline-flex break-all leading-tight">package\_desktop.bat</span>**.

### Hướng dẫn chạy chạy script đóng gói:

1. Đảm bảo biến môi trường máy tính của bạn đã trỏ chuẩn xác `%JAVA_HOME%` (JDK 17 của thư mục bin). Nếu quên, script sẽ báo lỗi không tìm thấy `jlink` hay `jpackage`.
2. (Tùy chọn) Cài đặt phần mềm **WiX Toolset (v3.x)** tại `https://wixtoolset.org/releases/`. Đây là thư viện gốc do Microsoft hỗ trợ để đóng gói hệ thống dưới định dạng Cài đặt chuẩn `.msi` (Dễ dàng để IT cảng push policy GPO tự động cài cho toàn bộ máy nhánh).
3. Mở cửa sổ Command Prompt (<span class="context-scope-mention"><span class="inline-flex items-center gap-0.5 rounded-md align-middle text-sm font-medium transition-[opacity,background-color] cursor-pointer hover:bg-gray-500/20 select-text translate-y-[-1px]" draggable="true"><span class="inline-flex break-all leading-tight">cmd</span></span></span>) hoặc Terminal, chạy lệnh:

```bash
package_desktop.bat
```

### Diễn giải 5 bước cấu thành của Script:

- **\[1/5\] Build Source Code:** Script tự động gọi `mvn clean package -DskipTests` riêng cho module `signing-desktop` (và các module con tham chiếu).
- **\[2/5\] Custom JRE (jlink):** Lọc bỏ bớt các thư viện thừa (như javafx, jdk.compiler không cần thiết), tạo ra một máy ảo Java thu nhỏ (giảm dung lượng) vào thư mục `custom-jre`. Tính năng `java.smartcardio` được thêm vào bắt buộc để tương tác được USB Token lõi.
- **\[3/5\] Portable Image (jpackage):** Gom mã nguồn Desktop (file `.jar`) làm nhân của file EXE (App Image). Kết quả cho ra ở thư mục `dist/signing-desktop`. Ai copy thư mục này ném sang máy tính khác chạy luôn file `.exe` bên trong là hệ thống sẽ bật.
- **\[4/5\] Check WiX Toolset:** Kiểm tra tool `candle` của WiX. Nếu không có ở máy build, sẽ skip Bước 5.
- **\[5/5\] Build Windows Installer (.msi):** Gom cả Bundle thư mục Portable thành 1 file Install System duy nhất. Khi người dùng chạy, nó sẽ tự cài vào `C:\Program Files\`, tạo lối tắt đè ngoài màn hình Desktop (Shortcut) và trong thanh Start Menu.

Kể từ nay, bạn chỉ việc gởi file **`.msi`** hoặc file **`.exe` portable** đã sinh ở thư mục `dist/` cho kế toán/nhân sự để cài đặt sử dụng ký bằng Token một cách mượt mà.