Jitrak Blog

Winget

แนะนำ Winget สำหรับคนที่ใช้ Windows และต้องการจะติดตั้ง Application ผ่าน Command-line

07 Sep 2023 07:00

Written by: Yosapol Jitrak

Tags:

Winget

Automation

Package manager

Windows

การติดตั้ง Application ผ่าน Command-line นั้นเป็นอีกหนึ่งวิธีที่ช่วยให้เราสามารถติดตั้ง Application ได้ง่าย ๆ และรวดเร็ว โดยไม่ต้องเสียเวลากดติดตั้ง กด Next, Agree, Install และการลางวางต่าง ๆ ด้วยความที่ผมทำพวก Infra as Code (IaS) อยู่แล้ว จึงนำแนวคิด as Code มาใช้กับการ Setup ทั้ง Windows, macOS และ Windows Subsystem for Linux (WSL)

ก่อนหน้านี้ผมเคยแนะนำ Homebrew, Cask and mas-cli ไว้ในบทความก่อนหน้านี้ ซึ่งเป็นการติดตั้ง Application บน Mac ผ่าน command line บทความนี้จะมาแนะนำฝั่ง Windonws กันบ้างครับ

โดย Package manager สำหรับ Windows จะมีตัวที่นิยมอยู่ ดังนี้

  1. Winget จาก Microsoft ซึ่งเป็น Package manager ของ Windows อย่างเป็นทางการ และเป็น Open source
  2. chocolatey ซึ่งเป็น Package manager ที่เป็น Open source และเป็น Package manager ที่นิยมใช้กันมากที่สุด
  3. Scoop ตัวนี้ผมพอเห็นผ่าน ๆ บ้างครับ แต่ไม่รู้รายละเอียดเลยครับ

ในที่นี้ผมจะกล่าวถึง Winget นะครับ เพราะเป็น Package manager อย่างเป็นทางการของ Windows

ก่อนอื่นเลยเราจะต้อง Update App Installer ให้เป็น Version ใหม่ก่อนนะครับ โดยไปที่ Microsoft Store แล้วค้นหา App Installer แล้วกด Update หรือถ้ายังไม่เคยติดตั้งก็ Install ใหม่ได้เลยครับ

MS store search App Installer App Installer

หลังจากนั้นก็เปิด Windows PowerShell ขึ้นมาเลยครับ อย่างแรกเลยเราต้องหา Id ของ Application ที่เราต้องการติดตั้งก่อน โดยเราจะใช้คำสั่ง search ค้นหาก่อน ในที่นี้ผมจะลองยกตัวอย่างเป็น LINE นะครับ

winget search LINE

ผลลัพธ์ที่ได้จะเป็นดังนี้ครับ

Winget search LINE

โดยจะเห็นว่ามีตัวเลือกเยอะมาก แต่ผมจะให้สังเกตุเพียงแค่ 2 ที่นะครับ คือ

เราสามารถนำ Id ของทั้ง 2 ตัวมาใช้ได้ครับ แล้วแต่เราเลือกว่าจะติดตั้งจากที่ไหน

สำหรับใครที่ไม่ชอบใช้ Command line ในการ Search เพราะผลลัพธ์ดูยาก สามารถใช้ Web site winget.run หรือ winstall แล้วค้นหา Application ที่เราต้องการ จากนั้นก็เลือก Application ที่เราต้องการ แล้วจะได้คำสั่งพร้อมติดตั้งเลยครับ

winget-run winstall-app

เมื่อได้คำสั่งมาแล้ว ก็สามารถติดตั้งได้เลยครับ

winget install -e --id LINE.LINE

แต่เราอาจจะเจอปัญหาครับ เพราะ Hash ของ Winget บางที่จะไม่ Update ตามทีทาง LINE update version ใหม่มา

Install hash does not match

ปัญหานี้คือรอให้ Community Winget update หรือเราไปช่วย Contribute ก็ได้ครับ แต่ถ้าอยาก By pass ก็สามารถทำได้ครับ

ก่อนอื่นเลยเราจะต้องเปิด Windows PowerShell เป็น Run as Administrator ก่อนนะครับ แล้วใช้คำสั่งนี้ครับ

winget settings --enable InstallerHashOverride

Winget hash override

หลังจากนั้นก็เปิด Windows PowerShell แบบไม่ต้อง Run as Admin ครับ แล้วลองกดติดตั้งอีกครั้ง ผลลัพธ์จะเปลี่ยนไปนิดหน่อย

winget install -e --id LINE.LINE

Winget hash not match after set admin

จะเห็นว่ามีข้อความเพิ่มเติมขึ้นมาว่า

to override this check use —ignore-security-hash

เราก็เติม Option ตามที่เขาบอกเลยครับ

winget install -e --id LINE.LINE --ignore-security-hash

Winget by pass hash check

เพียงแค่นี้เราก็สามารถติดตั้งได้แล้วครับ แต่โดยส่วนตัวถ้ามีให้เลือกจาก MS store ก็ไปลงจาก Store ดีกว่าครับ

การ Update version ทั้งหมดก็ง่ายมากครับ แค่ใช้คำสั่งนี้เลยครับ

winget upgrade -r

ผมได้เตรียมชุดคำสั่งส่วนตัว เอาไว้สำหรับเมื่อต้องทำการติดตั้ง Windows ใหม่ไว้ตามนี้ครับ

winget install -e --id Microsoft.WindowsTerminal

winget install -e --id Google.Chrome
winget install -e --id Mozilla.Firefox
winget install -e --id Bitwarden.Bitwarden
winget install -e --id Notion.Notion

winget install -e --id Nvidia.GeForceExperience
winget install -e --id Nvidia.PhysX
winget install -e --id Piriform.CCleaner
winget install -e --id FastCopy.FastCopy
winget install -e --id NZXT.CAM
winget install -e --id RARLab.WinRAR

winget install -e --id AnyDeskSoftwareGmbH.AnyDesk
winget install -e --id Discord.Discord
winget install -e --id Kakao.KakaoTalk
winget install -e --id LINE.LINE

winget install -e --id OpenWhisperSystems.Signal
winget install -e --id TeamSpeakSystems.TeamSpeakClient
winget install -e --id Telegram.TelegramDesktop
winget install -e --id Zoom.Zoom

winget install -e --id Daum.PotPlayer
winget install -e --id OpenMedia.4KVideoDownloader
winget install -e --id OBSProject.OBSStudio
winget install -e --id XSplit.Broadcaster
winget install -e --id XSplit.VCam

winget install -e --id Amazon.AWSVPNClient
winget install -e --id Amazon.Kindle
winget install -e --id Cloudflare.Warp
winget install -e --id Google.AndroidStudio
winget install -e --id Microsoft.DotNet.SDK.6
winget install -e --id Microsoft.VisualStudioCode
winget install -e --id MongoDB.Compass.Full
winget install -e --id Oracle.JavaRuntimeEnvironment
winget install -e --id Postman.Postman
winget install -e --id SteelSeries.GG
winget install -e --id Unity.UnityHub
winget install -e --id Valve.Steam
winget install -e --id WireGuard.WireGuard

## X410
winget install -e --id 9PM8LP83G3L3

## Paint 3D
winget install -e --id 9NBLGGH5FV99

## Require Admin
winget install -e --id Docker.DockerDesktop

พูดถึงข้อดีมาเยอะแล้ว เรามาดูข้อเสียของ Winget กันบ้างครับ ข้อเสียคือ Package หลายตัวไม่มีให้ติดตั้งครับ ถ้าใช้ chocolatey จะมีครบถ้วนมากกว่า

หวังว่าบทความนี้จะเป็นประโยชน์สำครับคนที่ใช้ Windows นะครับ