Microsoft 365 Intune Windows Win32 app

Triển khai Win32 app bằng Intune: đóng gói, detection và assignment

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ạo Windows 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

  1. Tải công cụ từ kho Microsoft Win32 Content Prep Tool.
  2. Tải bộ cài ứng dụng cần triển khai.
  3. Đặt bộ cài và các file liên quan vào thư mục source.
  4. 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 -File trong 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

  1. Đăng nhập Intune admin center bằng tài khoản quản trị.
  2. Theo đường dẫn: Apps → All apps → Add.
  3. Chọn Windows app (Win32).
  4. Chọn Select app package file, upload .intunewin rồ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 System hoặc User. 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:

  1. Trả exit code 0.
  2. 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:

  1. Chọn Add.
  2. Chọn ứng dụng cũ cần được app hiện tại cập nhật hoặc thay thế.
  3. Cấu hình Uninstall previous version cho 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:

  1. Chọn loại assignment.
  2. Chọn Add group và nhóm user hoặc thiết bị phù hợp với kịch bản.
  3. Kiểm tra chế độ Included hoặc Excluded.
  4. Cấu hình End user notifications, Availability và Installation deadline nếu cần.
  5. Chọn Delivery optimization priority theo 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ũ?

TN

Tam Nguyen

Senior System Administrator tại TP.HCM. Viết về Microsoft 365, Intune, Windows Server, macOS và bảo mật endpoint từ môi trường doanh nghiệp thật.

Bình luận