Triển khai Win32 app bằng Intune: đóng gói, detection và assignment
Khi quản lý thiết bị Windows bằng Intune, nhu cầu không chỉ là đưa một bộ cài xuống máy: IT còn phải xác định máy nào đủ điều kiện, ứng dụng đã cài thành công hay chưa, và khi nào cần cập nhật hoặc gỡ bỏ. Một gói cài chạy được khi thao tác trực tiếp chưa đủ để bảo đảm triển khai hàng loạt đúng kết quả. Bài viết này tập trung vào môi trường thiết bị Windows đã enroll Intune, có Internet và cần triển khai ứng dụng Win32 bằng một quy trình thống nhất.
Tóm tắt nhanh: Dùng Microsoft Win32 Content Prep Tool để đóng gói bộ cài thành
.intunewin, sau đó tạoWindows app (Win32)trong Intune. Cấu hình đủ lệnh cài/gỡ, requirements, detection và assignment trước khi tạo app. Điểm cần kiểm tra kỹ là detection rule: chạy xong installer không đồng nghĩa Intune đã nhận diện ứng dụng là được cài đặt.
1. Bối cảnh và điều kiện cần
Win32 app giúp IT triển khai ứng dụng tùy chỉnh cho thiết bị được quản lý, thay vì cài thủ công từng máy. Ứng dụng được phân phối thông qua Microsoft Intune Management Extension (IME); thành phần này được cài tự động khi một PowerShell script hoặc Win32 app được assign cho user hoặc thiết bị qua Intune.
Trước khi bắt đầu, chuẩn bị:
- Thiết bị Windows đã enroll Intune.
- Kết nối Internet.
- Bộ cài ứng dụng và các file cần thiết.
- Công cụ Microsoft Win32 Content Prep Tool, thường gọi theo tên file
IntuneWinAppUtil.exe. - Tài khoản quản trị được phép tạo và cấu hình ứng dụng trong Intune.
Tên file, phiên bản và product code cần lấy từ bộ cài thực tế, không sao chép máy móc giữa các phiên bản.
2. Đóng gói thành intunewin
Microsoft Win32 Content Prep Tool chuyển các file cài đặt ứng dụng Win32 sang định dạng .intunewin để upload lên Intune.
Chuẩn bị source
- Tải công cụ từ kho Microsoft Win32 Content Prep Tool.
- Tải bộ cài ứng dụng cần triển khai.
- Đặt bộ cài và các file liên quan vào thư mục source.
- Mở Command Prompt bằng quyền Administrator và chuyển đến thư mục chứa
IntuneWinAppUtil.exe.
Ví dụ cấu trúc thư mục:
C:\Temp\Installers\
Telegram.msi
Chạy công cụ
IntuneWinAppUtil.exe -c "C:\Temp\Installers" -s "Telegram.msi" -o "C:\Temp"
| Tham số | Ý nghĩa |
|---|---|
-c |
Thư mục source chứa bộ cài và file liên quan |
-s |
File setup chính |
-o |
Thư mục xuất gói .intunewin |
Giữ file .intunewin để upload ở bước tiếp theo. Kích thước đầu ra phụ thuộc bộ cài; con số khoảng 72 MB trong ví dụ nguồn không phải kích thước cố định của mọi gói Telegram.
Tip: Nếu dùng PowerShell wrapper, cần đưa cả script và các file script gọi đến vào source trước khi đóng gói. Việc cấu hình lệnh
-Filetrong Intune không tự tạo nội dung cho script.
3. Tạo app và cấu hình Program
Upload và điền App information
- Đăng nhập Intune admin center bằng tài khoản quản trị.
- Theo đường dẫn:
Apps→All apps→Add. - Chọn
Windows app (Win32). - Chọn
Select app package file, upload.intunewinrồi xác nhận.
Các trường cần chú ý:
| Trường | Nội dung |
|---|---|
| Name | Tên app hiển thị trong Company Portal; nên đặt tên duy nhất |
| Description | Mô tả chức năng và hướng dẫn cần thiết cho user |
| Publisher | Nhà phát hành |
| Category | Nhóm ứng dụng để user dễ tìm |
| Show this as a featured app | Đưa app lên vị trí nổi bật trong Company Portal nếu cần |
| Information URL / Privacy URL | Liên kết thông tin và quyền riêng tư, nếu có |
| Developer / Owner / Notes | Thông tin phục vụ quản lý nội bộ |
| Logo | Biểu tượng hiển thị cùng app |
Install command và Uninstall command
Dùng lệnh phù hợp với đúng loại installer. Các ví dụ dưới đây là các lựa chọn thay thế, không phải chạy tất cả cho cùng một app.
Ví dụ MSI:
msiexec /i "Telegram.msi" /qn
Lệnh gỡ dùng product code thực tế của ứng dụng:
msiexec /x "{PRODUCT-CODE-CUA-BO-CAI}" /qn
{PRODUCT-CODE-CUA-BO-CAI} là placeholder, phải thay trước khi sử dụng.
Ví dụ EXE:
"Telegram.exe" /silent /install
Không mặc định /silent /install dùng được cho mọi EXE. Kiểm tra các tùy chọn installer bằng /? hoặc -help khi bộ cài hỗ trợ.
Ví dụ lệnh gỡ Telegram EXE trong nguồn có đường dẫn phụ thuộc phiên bản:
"%ProgramFiles%\Google\Telegram\Application\<APPLICATION_VERSION>\Installer\setup.exe" --uninstall --system-level --multi-install --force-uninstall
Cần thay <APPLICATION_VERSION> và kiểm tra đúng đường dẫn trước khi áp dụng.
Ví dụ gọi PowerShell script:
%SystemRoot%\Sysnative\WindowsPowerShell\v1.0\powershell.exe -NoProfile -WindowStyle Hidden -ExecutionPolicy Bypass -File .\install_Telegram.ps1
%SystemRoot%\Sysnative\WindowsPowerShell\v1.0\powershell.exe -NoProfile -WindowStyle Hidden -ExecutionPolicy Bypass -File .\uninstall_Telegram.ps1
Đây chỉ là lệnh gọi script, không phải nội dung script cài/gỡ hoàn chỉnh. Các file .ps1 phải tồn tại trong gói và đã được kiểm thử.
Các thiết lập Program khác
- Installation time required: thời gian chờ installer hoàn tất. Mặc định 60 phút, tối đa 1.440 phút; vượt thời gian cấu hình sẽ bị báo thất bại.
- Install behavior: chọn
SystemhoặcUser. Quy trình nguồn khuyến nghịSystem; vẫn cần chọn theo thiết kế bộ cài và phạm vi ứng dụng. - Allow available uninstall: quyết định có cho user gỡ app từ Company Portal hay không, không phải cơ chế ngăn mọi cách gỡ ứng dụng trên Windows.
4. Phân biệt Requirements và Detection
Hai phần này dễ bị cấu hình lẫn nhau nhưng có mục đích khác nhau:
| Thành phần | Câu hỏi cần trả lời |
|---|---|
| Requirements | Thiết bị có đáp ứng điều kiện để triển khai ứng dụng không? |
| Detection | Ứng dụng đã hiện diện trên thiết bị theo tiêu chí cấu hình chưa? |
Requirements: điều kiện triển khai
Cấu hình theo yêu cầu ứng dụng:
Operating system architecture.Minimum operating system.- Dung lượng trống, RAM, số logical processor và tốc độ CPU nếu cần.
- Additional requirement rules dựa trên File, Registry hoặc Script.
Với file rule, xác định path, tên file/folder và thuộc tính cần so sánh. Với registry rule, xác định key, value và kiểu so sánh.
Với script requirement, việc đánh giá STDOUT khi script trả exit code 0, rồi so sánh kết quả theo output data type đã chọn. Không nhầm cơ chế này với detection script.
Các lựa chọn khác gồm chạy script theo credentials người đang đăng nhập, kiểm tra chữ ký và chọn ngữ cảnh 32-bit hoặc 64-bit.
Detection: xác nhận ứng dụng đã cài
Yêu cầu ít nhất một detection rule và đưa ra các lựa chọn:
| Kiểu | Dữ liệu kiểm tra | Điểm cần chú ý |
|---|---|---|
| MSI | MSI product code; có thể kiểm tra thêm version | Dùng đúng product code của bộ cài |
| File | File/folder, ngày, version hoặc size | Đúng path và tiêu chí phát hiện |
| Registry | Key/value, string, integer hoặc version | Đúng registry view 32-bit/64-bit |
| Custom script | PowerShell script | Cần đúng exit code và STDOUT |
Đối với file hoặc registry, lựa chọn Associated with a 32-bit app on 64-bit clients ảnh hưởng ngữ cảnh kiểm tra. Nếu cấu hình sai, rule có thể tìm ở vị trí không tương ứng với ứng dụng đã cài.
Điều kiện của custom detection script
Ứng dụng được phát hiện khi script đồng thời:
- Trả exit code
0. - Ghi một chuỗi ra STDOUT.
Chỉ exit 0 mà không có output là chưa đủ. Agent đọc STDERR, STDOUT và exit code; cần kiểm soát cả thông báo lỗi khi kiểm thử script.
Khuyến nghị lưu script bằng UTF-8 BOM. Cấu hình thêm ngữ cảnh chạy 32-bit/64-bit và kiểm tra chữ ký theo yêu cầu môi trường.
Lưu ý: Detection rule cần phản ánh kết quả thực sự muốn quản lý. Kiểm tra file tồn tại và kiểm tra đúng phiên bản là hai tiêu chí khác nhau; hãy chọn tiêu chí phù hợp trước khi triển khai rộng.
5. Dependencies, Supersedence và Assignment
Dependencies: cài thành phần phụ thuộc trước
Dependencies dùng cho ứng dụng phải được cài trước app hiện tại. Đây là phần tùy chọn; chỉ cấu hình khi có quan hệ phụ thuộc thực tế.
Supersedence: cập nhật hoặc thay thế app
Trong bước Supersedence:
- Chọn
Add. - Chọn ứng dụng cũ cần được app hiện tại cập nhật hoặc thay thế.
- Cấu hình
Uninstall previous versioncho từng app.
| Tình huống | Hướng xử lý |
|---|---|
| Installer mới tự cập nhật app cũ | Không cần gửi lệnh gỡ riêng; tắt Uninstall previous version |
| Cần gỡ app cũ để thay bằng app khác | Bật Uninstall previous version nếu thiết kế triển khai yêu cầu |
Giới hạn 10 ứng dụng được cập nhật hoặc thay thế, bao gồm các quan hệ tham chiếu trong chuỗi. Không nên chỉ đếm số app trực tiếp được thêm ở một màn hình nếu đang thiết kế quan hệ nhiều tầng.
Scope tags
Kiểm tra Scope tags trước khi hoàn tất.
Assignments: chọn đúng mục đích
| Loại assignment | Kết quả |
|---|---|
| Required | Cài ứng dụng trên thiết bị thuộc nhóm được chọn |
| Available for enrolled devices | User chủ động cài từ Company Portal |
| Uninstall | Gỡ ứng dụng trên thiết bị thuộc nhóm được chọn |
Thực hiện:
- Chọn loại assignment.
- Chọn
Add groupvà nhóm user hoặc thiết bị phù hợp với kịch bản. - Kiểm tra chế độ
IncludedhoặcExcluded. - Cấu hình
End user notifications,AvailabilityvàInstallation deadlinenếu cần. - Chọn
Delivery optimization prioritytheo chế độ tải nền hoặc foreground của assignment.
Không coi Required, Available và Uninstall là ba nhãn tương đương. Đây là ba mục đích triển khai khác nhau, cần rà soát trước khi gán nhóm.
6. Các điểm dễ sai và checklist kiểm tra
| Biểu hiện cần kiểm tra | Thiết lập cần đối chiếu | Cách phòng tránh |
|---|---|---|
| Installer chạy nhưng app chưa được nhận diện | Detection rule | Kiểm tra đúng MSI code, file, version hoặc registry |
| Detection script chưa nhận diện app | Exit code, STDOUT và lỗi script | Kiểm tra đủ điều kiện, không chỉ exit 0 |
| App không đáp ứng điều kiện triển khai | Requirements | Đối chiếu OS, architecture và additional rules |
| Quá trình cài vượt thời gian chờ | Installation time required | Đặt thời gian phù hợp với bộ cài đã thử nghiệm |
| Lệnh gỡ không đúng phiên bản | Uninstall command | Không giữ nguyên GUID hoặc path của ví dụ |
| Cài/gỡ không đúng đối tượng dự kiến | Assignments | Rà soát nhóm, loại assignment và include/exclude |
Review + create
Trước khi chọn Create, kiểm tra:
- Source và file
.intunewinđúng phiên bản. - Tên app, publisher, description và logo rõ ràng.
- Lệnh cài và gỡ khớp bộ cài thực tế.
- Script được gọi đã có trong gói.
- Install behavior và timeout phù hợp.
- Requirements đúng kiến trúc và hệ điều hành.
- Detection phản ánh đúng trạng thái cần kiểm tra.
- Dependencies và supersedence không bị cấu hình nhầm.
- Scope tags và nhóm assignment đã được rà soát.
- Thông báo, lịch khả dụng và deadline phù hợp.
Sau đó chọn Review + create, kiểm tra lại cấu hình và tạo ứng dụng.
7. Kết luận
Đóng gói .intunewin là bước đầu, còn chất lượng triển khai phụ thuộc vào Program, Requirements, Detection và Assignments. Dependencies và supersedence giúp quản lý quan hệ giữa các app, nhưng chỉ nên cấu hình khi đã rõ cách installer hoạt động. Trước khi triển khai rộng, hãy dùng checklist trên để kiểm thử cài, nhận diện và gỡ trên nhóm pilot. Trong quy trình của bạn, phần nào thường tốn thời gian nhất: đóng gói, detection hay xử lý phiên bản cũ?
Bình luận