Chuyên mục
Windows

Chocolatey: Công cụ quản lý ứng dụng trên Windows bằng dòng lệnh CLI

Việc cài đặt ứng dụng trên Windows xưa nay là công việc mất thời gian và nhàm chán. Mỗi ứng dụng muốn cài đặt phải đi qua các bước sau:

  • Truy cập vào website của ứng dụng
  • Tải ứng dụng về máy tính
  • Chạy file cài đặt, bấm Next chục lần
  • Hoàn tất cài đặt

Việc xoá ứng dụng còn phiền hà hơn:

  • Truy cập vào công cụ Add or remove programs
  • Tìm ứng dụng cần xoá và bấm Uninstall
  • Bấm Next thêm chục lần
  • Hoàn thành

Trước đây khi còn hành nghề cài Windows dạo, mình thường sử dụng công cụ Ninite để tự động cài đặt các ứng dụng quen thuộc: Google Chrome, FireFox, Visual Studio Code, foobar2000,…

  • Ưu điểm: Chỉ tải và chạy 1 lần duy nhất để cài đặt nhiều ứng dụng cùng lúc, giúp tiết kiệm rất nhiều thời gian so với việc phải tải và cài đặt từng ứng dụng riêng lẻ.
  • Nhược điểm: Số lượng ứng dụng được hỗ trợ bị hạn chế và không hỗ trợ cập nhật ứng dụng.

Tuy nhiên, cách thức cài đặt và xoá bỏ ứng dụng vẫn không có gì thay đổi. Vẫn nhàm chán và mất thời gian.

Tại sao Windows không có công cụ quản lý ứng dụng tiện lợi như trên Linux: chỉ gõ 1 dòng lệnh là có thể cài đặt hoặc xoá bỏ một hay nhiều ứng dụng cùng lúc?

Thật ra là đã có lâu rồi, mà giờ mình mới tìm ra: Chocolatey – công cụ quản lý ứng dụng trên Windows bằng dòng lệnh CLI cực kỳ tiện lợi.

Giới thiệu Chocolatey

Được ra mắt từ năm 2011, Chocolatey là công cụ quản lý ứng dụng dành riêng cho Windows. Nó hoạt động dựa trên giao diện dòng lệnh CLI (Command Line Interface), tương tự như brew trên MacOS, apt trên Ubuntu/Debian, yum trên CentOS hay pacman trên Arch.

Bên cạnh giao diện dòng lệnh, Chocolatey còn hỗ trợ quản lý ứng dụng bằng giao diện người dùng qua Chocolatey GUI. Tuy nhiên, mình sẽ không sử dụng cái này, do nó đi ngược lại với mục đích ban đầu của mình khi chuyển qua dùng Chocolatey: quản lý ứng dụng bằng dòng lệnh CLI.

Ở thời điểm mình viết bài này, Chocolatey đang hỗ trợ cài đặt 8745 ứng dụng: Chocolatey Packages. Mọi ứng dụng mình thường dùng trên Windows đều có mặt trong kho ứng dụng:

  • Visual Studio Code: lập trình
  • Foobar2000: nghe nhạc
  • Firefox, Edge: trình duyệt web
  • Notion, Typora: trình soạn thảo Markdown
  • Parsec, NoMachine: remote desktop
  • Putty: SSH Client
  • XnView, XnConvert, Greenshot: quản lý ảnh, chụp màn hình

Cài đặt Chocolatey

Để sử dụng Chocolatey để quản lý ứng dụng, trước tiên bạn cần phải cài đặt Chocolatey vào máy tính thông qua PowerShell.

Mở PowerShell dưới quyền Administrator: bấm Start Menu, tìm PowerShell, sau đó bấm chuột phải vào PowerShell, chọn Run as Administrator.

Chocolatey yêu cầu Windows phải set quyền ExecutionPolicy thành AllSigned. Kiểm tra bằng cách gõ lệnh sau vào PowerSheel

Get-ExecutionPolicy

Nếu kể quả trả lại là Restricted, bạn cần phải chạy thêm lệnh này, chọn Y và Enter

Set-ExecutionPolicy AllSigned

Gõ lại lệnh Get-ExecutionPolicy sẽ thấy kết quả là AllSigned.

Cài đặt Chocolatey bằng lệnh sau

Set-ExecutionPolicy Bypass -Scope Process -Force; iex ((New-Object System.Net.WebClient).DownloadString('https://community.chocolatey.org/install.ps1'))

Chờ vài phút cho hệ thống cài đặt. Nếu không thấy báo lỗi, Chocolatey đã được cài đặt thành công và sẵn sàng hoạt động.

Cài đặt Chocolatey thành công

Cài đặt ứng dụng

Bạn cần tắt PowerShell và khởi động lại. Nhớ vẫn mở PowerShell dưới quyền Administrator.

Để cài đặt ứng dụng, bạn sử dụng lệnh choco install <mã ứng dụng>

Mỗi ứng dụng trên Chocolatey sẽ có 1 mã riêng. Bạn có thể tìm mã trên website Chocolatey Software | Packages hoặc sử dụng lệnh chocolatey search <tên ứng dụng>

Ví dụ mình cần tìm mã của Foobar2000 bằng dòng lệnh

choco search foobar
PS C:\WINDOWS\system32> choco search foobar
Chocolatey v0.10.15
foobar2000 1.6.7 [Approved]
freeencoderpack 2021.01.26 [Approved]
2 packages found.
PS C:\WINDOWS\system32>

Foobar2000 có mã là foobar2000, và có thể cài đặt bằng lệnh sau

choco install foobar2000

Bạn có thể cài đặt cùng lúc nhiều ứng dụng, chỉ cần thêm khoảng trắng giữa các mã ứng dụng. Chẳng hạn trong ví dụ đưới đây mình cài đặt Visual Studio Code, Firefox, Foobar2000, Tabby, Greenshot chỉ bằng 1 lệnh

choco install firefox foobar2000 terminus vscode greenshoot
Choco sẽ tự động cài đặt thêm các ứng dụng phụ trợ cần thiết nếu máy chưa có.

Truy cập vào mục Add & remove programs của Windows sẽ thấy ứng dụng đã được cài đặt thành công.

Gỡ bỏ ứng dụng

Bạn có thể gõ bỏ ứng dụng bằng tiện ích Add & remove programs của Windows. Hoặc sử dụng Chocolatey cho nhanh gọn.

Kiểm tra danh sách ứng dụng đang cài đặt trên máy bằng lệnh

choco list --localonly
PS C:\WINDOWS\system32> choco list --localonly
Chocolatey v0.10.15
chocolatey 0.10.15
chocolatey-core.extension 1.3.5.1
chocolatey-dotnetfx.extension 1.0.1
chocolatey-visualstudio.extension 1.9.0
chocolatey-windowsupdate.extension 1.0.4
dotnetfx 4.8.0.20190930
foobar2000 1.6.7
KB2919355 1.0.20160915
KB2919442 1.0.20160915
KB2999226 1.0.20181019
KB3033929 1.0.5
KB3035131 1.0.3
python 3.9.6
python3 3.9.6
vcredist140 14.29.30133
vcredist2015 14.0.24215.20170201
visualstudio-installer 2.0.1
visualstudio2017-workload-vctools 1.3.3
visualstudio2017buildtools 15.9.38.0
18 packages installed.

Ví dụ mình muốn xoá foobar2000, dùng lệnh

choco uninstall foobar2000

Cập nhật ứng dụng

Sử dụng lệnh choco upgrade <mã ứng dụng> để cập nhật ứng dụng đã cài đặt trên máy. Hoặc bạn có thể dùng thông số all để cập nhật tất cả

choco upgrade all

Hệ thống sẽ tự động chạy và sau dó thông báo tổng kết như sau

Chocolatey upgraded 3/19 packages.
 See the log for details (C:\ProgramData\chocolatey\logs\chocolatey.log).

Upgraded:
 - python v3.9.7
 - python3 v3.9.7
 - chocolatey v0.11.1

Để tránh việc phải trả lời các câu hỏi xác nhận khi sử dụng choco, bạn có thể thông số -y khi gõ tất cả các lệnh để hệ thống tự động xác nhận. Đỡ mất thời gian ngồi xem và xác nhận thủ công. Ví dụ

choco upgrade all -y

Khi đã sử dụng thành thạo, bạn sẽ thấy Chocolatey cực kỳ hữu dụng trong việc giúp bạn quản lý ứng dụng trên Windows hiệu quả hơn. Các thao tác cài đặt và gỡ bỏ ứng dụng nhàm chán và mất thời gian trước đây giờ có thể xử lý chỉ bằng 1 dòng lệnh duy nhất. Quá khoẻ!

Trả lời