แนะนำ Winget สำหรับคนที่ใช้ Windows และต้องการจะติดตั้ง Application ผ่าน Command-line
07 Sep 2023 07:00
Written by: Yosapol Jitrak
การติดตั้ง 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 จะมีตัวที่นิยมอยู่ ดังนี้
ในที่นี้ผมจะกล่าวถึง Winget นะครับ เพราะเป็น Package manager อย่างเป็นทางการของ Windows
ก่อนอื่นเลยเราจะต้อง Update App Installer ให้เป็น Version ใหม่ก่อนนะครับ โดยไปที่ Microsoft Store แล้วค้นหา App Installer แล้วกด Update หรือถ้ายังไม่เคยติดตั้งก็ Install ใหม่ได้เลยครับ
หลังจากนั้นก็เปิด Windows PowerShell ขึ้นมาเลยครับ อย่างแรกเลยเราต้องหา Id ของ Application ที่เราต้องการติดตั้งก่อน โดยเราจะใช้คำสั่ง search ค้นหาก่อน ในที่นี้ผมจะลองยกตัวอย่างเป็น LINE นะครับ
winget search LINE
ผลลัพธ์ที่ได้จะเป็นดังนี้ครับ
โดยจะเห็นว่ามีตัวเลือกเยอะมาก แต่ผมจะให้สังเกตุเพียงแค่ 2 ที่นะครับ คือ
เราสามารถนำ Id ของทั้ง 2 ตัวมาใช้ได้ครับ แล้วแต่เราเลือกว่าจะติดตั้งจากที่ไหน
สำหรับใครที่ไม่ชอบใช้ Command line ในการ Search เพราะผลลัพธ์ดูยาก สามารถใช้ Web site winget.run หรือ winstall แล้วค้นหา Application ที่เราต้องการ จากนั้นก็เลือก Application ที่เราต้องการ แล้วจะได้คำสั่งพร้อมติดตั้งเลยครับ
เมื่อได้คำสั่งมาแล้ว ก็สามารถติดตั้งได้เลยครับ
winget install -e --id LINE.LINE
แต่เราอาจจะเจอปัญหาครับ เพราะ Hash ของ Winget บางที่จะไม่ Update ตามทีทาง LINE update version ใหม่มา
ปัญหานี้คือรอให้ Community Winget update หรือเราไปช่วย Contribute ก็ได้ครับ แต่ถ้าอยาก By pass ก็สามารถทำได้ครับ
ก่อนอื่นเลยเราจะต้องเปิด Windows PowerShell เป็น Run as Administrator ก่อนนะครับ แล้วใช้คำสั่งนี้ครับ
winget settings --enable InstallerHashOverride
หลังจากนั้นก็เปิด Windows PowerShell แบบไม่ต้อง Run as Admin ครับ แล้วลองกดติดตั้งอีกครั้ง ผลลัพธ์จะเปลี่ยนไปนิดหน่อย
winget install -e --id LINE.LINE
จะเห็นว่ามีข้อความเพิ่มเติมขึ้นมาว่า
to override this check use —ignore-security-hash
เราก็เติม Option ตามที่เขาบอกเลยครับ
winget install -e --id LINE.LINE --ignore-security-hash
เพียงแค่นี้เราก็สามารถติดตั้งได้แล้วครับ แต่โดยส่วนตัวถ้ามีให้เลือกจาก 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 นะครับ