Đang tải...

 Setup Môi Trường Lập Trình Nhanh Chóng Cho Desktop. Phần 2: Setup cho Windows

Hồ Dũng
Hồ Dũng

4 năm trước · 11 phút đọc

Trong phần trước, mình đã cũng các bạn tìm hiểu về một cách setup phần mềm nhanh gọn lẹ. Trong phần này, mình sẽ cùng các bạn setup môi trường làm việc cho Windows bằng các dòng lệnh nhé.

Trước khi bạn đi tiếp:

  • Mình khuyến khích các bạn dành thời gian đọc phần 1 để hiểu bản chất những gì mình sẽ làm trong phần này.
  • Cách setup trong phần này có thể khá phức tạp và lằng nhằng với một số bạn. Bạn nên chuẩn bị một chút kiên định và thật bình tĩnh để đọc tiếp. Người ta có câu là: "Khổ trước sướng sau, thế mới giàu" =))
  • Bạn không nên áp dụng cái này thẳng vào máy bạn vội. Thay vào đó, mình khuyến khích bạn dùng máy ảo Windows để thí nghiệm với các câu lệnh trước, để biết được những khả năng có thể xảy ra khi sử dụng phương pháp này. Về máy ảo mình khuyên các bạn nên dùng VirtualBox của Oracle bởi dễ sử dụng và có nhiều tính năng hay ho mà chúng ta sẽ cần. Còn về cách cài máy ảo Windows trên VirtualBox thì các bạn nên tự search và tự làm nhé.

Tips nhỏ: lưu snapshot của máy ảo Windows để tránh phải cài lại máy và gỡ cài đặt nếu xảy ra lỗi

Ngay sau khi các bạn cài xong máy ảo, mở máy ảo lên và để cho vào được Windows lần đầu. Lúc này, mở giao diện của VirtualBox lên.

Ở bên trái phần máy ảo đang chạy, click vào phần ba gạch ngang, và click vào Snapshots:

Screenshot from 2022-06-23 18-52-31.png

Nhấn vào Take: image.png

Đặt tên, description rồi click OK:

image.png

Kể từ giờ nếu muốn reset lại máy ảo quay trở về nguyên vẹn ban đầu thì trong phần Snapshots đó, nhấn vào cái snapshot mình đã tạo và nhấn Start:

image (1).png

Note: ở đây mình đã chọn snapshot đầu tiên rồi nhấn Start rồi nên nút Start sẽ hiện xám. Hoặc nếu các bạn vừa mới tạo snapshot xong thì nút cũng hiện xám như thế. Các bạn phải cài cái gì trong máy ảo đó thì nút Start sẽ hiện màu xanh


OK, bây giờ chúng ta vào việc cài đặt nhé. Mình sẽ dùng một cái package manager tên là chocolatey để cài phần mềm nhé!

Cài đặt chocolatey

Mở Command Prompt hoặc Powershell với quyền Admin: image (2).png

Sau đó nhập 1 trong 2 lệnh sau:

  • Nếu dùng Command Prompt:
@"%SystemRoot%\System32\WindowsPowerShell\v1.0\powershell.exe" -NoProfile -InputFormat None -ExecutionPolicy Bypass -Command "[System.Net.ServicePointManager]::SecurityProtocol = 3072; iex ((New-Object System.Net.WebClient).DownloadString('https://community.chocolatey.org/install.ps1'))" && SET "PATH=%PATH%;%ALLUSERSPROFILE%\chocolatey\bin"
  • Nếu dùng Powershell
Set-ExecutionPolicy Bypass -Scope Process -Force; [System.Net.ServicePointManager]::SecurityProtocol = [System.Net.ServicePointManager]::SecurityProtocol -bor 3072; iex ((New-Object System.Net.WebClient).DownloadString('https://community.chocolatey.org/install.ps1'))

Cài đặt thành công, màn hình hiện như sau (ví dụ với Powershell): image.png

Sau đó, bạn hãy nhậpchoco trong Command Prompt hoặc Powershell để kiểm tra xem chocolatey có thể sử dụng được hay chưa. Nếu chưa sử dụng được, bạn cần phải tắt shell đi và mở lại, hoặc là nhập lệnh refreshenv (mình sẽ ưu tiên cách dùng lệnh refreshenv, mình sẽ nói lý do ở đoạn sau bài viết).

Cách sử dụng chocolatey:

  • Để cài đặt một gói: choco install -y <tên-gói>
  • Để update: choco update -y <tên-gói>
  • Để gỡ cài đặt choco uninstall -y <tên-gói>

Tương đối là đơn giản, đúng không?


Sau đây mình sẽ cài mẫu một số phần mềm, bạn muốn cài phần mềm gì thì đa số trên chocolatey sẽ đều có cả (đặc biệt là các phần mềm cho dev), nếu không có thì bạn có thể search là: "how to install <tên-phần-mềm> with powershell", hoặc là "how to silent install <tên-phần-mềm>". Mình sẽ sử dụng powershell để nhập lệnh do powershell có nhiều lệnh cực kì hữu dụng


Cài đặt Unikey bằng chocolatey

Tưởng là khó tin nhưng mà Unikey thực sự có trên chocolatey, và bạn chỉ cần nhập lệnh sau để cài đặt

choco install -y unikey

Khi cài đặt thành công, bạn thử nhấn phím Win và nhập unikey để windows search ra Unikey mình vừa cài đặt, nếu có hiện ra shortcut là UnikeyNT thì bạn đã cài đặt thành công. Nhưng shortcut lúc này chưa có trên màn hình desktop, do đó nhập lệnh này trong powershell để đưa shortcut ra desktop (copy lệnh này là ok):

Copy-Item "$env:UserProfile\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Unikey\UnikeyNT.lnk" -Destination "$env:UserProfile\Desktop"

Cài đặt Google Chrome

choco install -y googlechrome

Cài đặt Chrome thành công, sẽ có shortcut của Chrome ngay trên desktop.

Cài đặt Git

choco install -y git

Khi cài thành công thì dòng này sẽ xuất hiện:

image.png

Với những phần mềm có xuất hiện dòng này, bạn cần tìm xem git thực chất nằm ở đâu. Vào This PC, ổ C:\ (hoặc ổ cài Win tương ứng), vào folder Program Files, hoặc ProgramData (cho hiện Hidden files thì sẽ thấy), tìm đến folder có chứa phần mềm tương ứng. Ở đây: folder chứa Git nằm ở C:\Program Files\Git\bin. Lúc này lần lượt chạy các lệnh sau:

> $Path = (Resolve-Path -Path "$env:UserProfile\..\..\Program Files\Git\bin").Path
> $env:PATH += ";$Path"
> refreshenv

Cài đặt NodeJS

choco install -y nodejs-lts Cách cài giống git nhưng sau ba câu lệnh sau đó lần lượt là:

> $Path = (Resolve-Path -Path "$env:UserProfile\..\..\Program Files\nodejs").Path
> $env:PATH += ";$Path"
> refreshenv

Mình biết, mình biết là nhớ được các câu lệnh như này rất ... mệt, cài phần mềm đáng ra là phải dễ dàng, và phải nhanh (từ đầu mình có nói thế mà). Cho nên thay vì nhớ từng lệnh một thì mình sẽ tạo một file script, sau đó chạy một lần, nó tự động cài hết tất cả những tool mà mình cần. File này có thể dùng cho hầu hết máy Win (Write Once, Run Anywhere).

Tạo file script

Từ bất cứ máy nào, tạo ra một file có tên là install.ps1

Copy đoạn này vào file:

# Kiểm tra xem file này có chạy trên quyền Admin không
$currentPrincipal = New-Object Security.Principal.WindowsPrincipal([Security.Principal.WindowsIdentity]::GetCurrent())
$RunningAsAdmin = $currentPrincipal.IsInRole([Security.Principal.WindowsBuiltInRole]::Administrator)
if( $RunningAsAdmin -eq $False)
{
	Write-Host "ERROR: This script must be run as administrator" -Foreground "Red" -Background "Yellow"
	pause # Press any key to continue ...
	exit
}

Paste tất cả dòng code cài đặt vào bên dưới, sẽ ra một cái file như này:

# Script cài đặt cho Windows
# Author: dung204
# --------------------------------

# Các package sẽ cài đặt: Chocolatey, Unikey, Git, Google Chrome, NodeJS, yarn, OpenJDK (java), MinGW (gcc), WSL 

# --- Kiểm tra xem file này có chạy trên quyền Admin không
$currentPrincipal = New-Object Security.Principal.WindowsPrincipal([Security.Principal.WindowsIdentity]::GetCurrent())

$RunningAsAdmin = $currentPrincipal.IsInRole([Security.Principal.WindowsBuiltInRole]::Administrator)

if( $RunningAsAdmin -eq $False)
{
	Write-Host "ERROR: This script must be run as administrator" -Foreground "Red" -Background "Yellow"
	pause # Press any key to continue ...
	exit
}


# --- Cài  chocolatey
Write-Host "Installing Chocolatey ..." -Foreground "Green"
Set-ExecutionPolicy Bypass -Scope Process -Force
[System.Net.ServicePointManager]::SecurityProtocol = [System.Net.ServicePointManager]::SecurityProtocol -bor 3072 
iex ((New-Object System.Net.WebClient).DownloadString("https://community.chocolatey.org/install.ps1"))
refreshenv

# --- Cài Git
Write-Host "Installing git ..." -Foreground "Green"
choco install -y git
refreshenv

# Thêm git vào PATH để git có thể hoạt động được
$GitBinPath = (Resolve-Path -Path "$env:UserProfile\..\..\Program Files\Git\bin").Path
$env:PATH += ";$GitBinPath"
refreshenv

# --- Cài Unikey
Write-Host "Installing Unikey ..." -Foreground "Green"
choco install -y unikey
Copy-Item "$env:UserProfile\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Unikey\UnikeyNT.lnk" -Destination "$env:UserProfile\Desktop" # Copy unikey shortcut to desktop

# --- Cài Google Chrome
Write-Host "Installing Google Chrome ..." -Foreground "Green"
choco install -y googlechrome

# --- Cài VSCode
Write-Host "Installing Visual Studio Code ..." -Foreground "Green"
choco install -y vscode
refreshenv

# --- Cài NodeJS LTS
Write-Host "Installing NodeJS LTS ..." -Foreground "Green"
choco install -y nodejs-lts
refreshenv

# Thêm node vào PATH (giống như git)
$NodeBinPath = (Resolve-Path -Path "$env:UserProfile\..\..\Program Files\nodejs").Path
$env:PATH += ";$NodeBinPath"
refreshenv

# --- Cài yarn
Write-Host "Installing yarn ..."
cmd.exe /c "npm install -g yarn"

# --- Cài OpenJDK (java)
Write-Host "Installing OpenJDK (java) ..." - Foreground "Green"
choco install -y openjdk
$JDKBinPath = (Resolve-Path -Path "$env:UserProfile\..\..\Program Files\OpenJDK\*\bin").Path
$env:PATH += ";$JDKBinPath"
refreshenv

# --- Cài MinGW (gcc, g++ and gdb)
Write-Host "Install MinGW (gcc, g++ and gdb) ..." -Foreground "Green"
choco install -y mingw
refreshenv

# --- Cài WSL (Windows Subsystem for Linux)
Write-Host "Install WSL (and Ubuntu as well) ..." -Foreground "Green"
wsl --install # Also installed Ubuntu
Write-Host "Please restart to start using WSL"

Note: các dòng có ghi là "Write-Host" dùng để in ra các dòng "Install gì đó ..." để biết rõ là đang cài gì

Thực chất việc chạy các câu lệnh cài đặt mình nói ở phần trên là các bạn sẽ chạy từng câu lệnh trong máy ảo để test trước khi đưa vào file script.

Sau khi paste vào xong, lưu file đó lại. Nhưng đừng vội chạy file đó luôn nhé. Việc bạn cần làm bây giờ là tạo một cái git repo, commit và đẩy lên github. Ví dụ với repo của mình:

image.png

Trong trường hợp của mình, file install.ps1 nằm trong folder windows. Bây giờ mở file đó lên trong github, và nhấn vào Raw:

image (3).png

Sử dụng snapshot để reset lại windows về lúc chưa cài gì (xem phần bên trên, chỗ "Tips nhỏ ..."), vào máy ảo, mở powershell với quyền Admin và nhập lệnh sau:

Set-ExecutionPolicy Bypass -Scope Process -Force; [System.Net.ServicePointManager]::SecurityProtocol = [System.Net.ServicePointManager]::SecurityProtocol -bor 3072; iex ((New-Object System.Net.WebClient).DownloadString(<url-file-script>))

Trong đó <url-file-script> là link của file script mà bạn vừa bấm vào Raw. Ví dụ với trường hợp của mình:

Set-ExecutionPolicy Bypass -Scope Process -Force; [System.Net.ServicePointManager]::SecurityProtocol = [System.Net.ServicePointManager]::SecurityProtocol -bor 3072; iex ((New-Object System.Net.WebClient).DownloadString('https://raw.githubusercontent.com/dung204/installed-scripts/main/windows/install.ps1'))

Quá trình cài đặt sẽ bắt đầu

Bạn tiếp tục chạy trong máy ảo để test cho đến thành công thì thôi. Kể từ giờ, bạn hãy dùng lệnh trên để setup cho máy Win mới nhé.

Bonus: Thêm file README để chú thích cho file script

Đôi khi, chúng ta sẽ cảm thấy file script này nó lằng nhằng quá mà mình không biết nó cài cái gì. Một file README sẽ liệt kê tất cả những tool sẽ được cài, ghi ra hướng dẫn cách chạy file script để cài đặt. Và bạn có thể có một danh sách Todos - những điều cần làm sau khi chạy file script đó.

Đây là link file README của mình, các bạn tham khảo rồi làm một cái cho riêng mình nhé: https://github.com/dung204/installed-scripts/blob/main/README.md


Vừa rồi mình vừa hướng dẫn các bạn cách setup môi trường lập trình cho Windows nhanh chóng. Mình biết là quá trình chuẩn bị rất là lâu và lằng nhằng, nhưng nếu thành công thì khi cài trên máy khác thì quá trình cài sẽ mất tầm 5 - 15 phút (tùy vào số phần mềm cài, mạng, và cấu hình máy). Trong phần sau mình cùng các bạn setup cho Linux. Đảm bảo là khâu chuẩn bị bên Linux sẽ nhanh hơn Windows nhiều =))

Thân ái