[分享]Chocolatey軟體管理神器

以前有聽人家說,重灌很簡單啊,不是硬碟切一切,按下一步、下一步就可以裝好。沒錯,這是一般電腦公司收800元的重灌費用,但是其實電腦剛裝好是非常陽春的,還要經過調教些設定,比如說關閉作業系統疑似連到官方伺服器偷傳有隱私的資訊,優化系統的登錄碼,系統碟的減肥,好用軟體安裝…等等的作業,如果是靠手工安裝,至少需要2~3小時,這些都是靠時間與經驗累積的技能,其實不簡單。
然而每次重灌之後其中一項工作是安裝基本的是安裝一些常用軟體,像是7-Zip、Notepad++、Filezilla等以及runtime一般人都是開google瀏覽器,下關鍵字找到官方網站,下載之後再安裝,這樣同樣動作非常繁瑣,所以一般人寧可讓電腦龜速的跑,也不願意重灌。
另一個進階用法是蒐集這些軟體到D槽,可是持續更新版本也是需要非常耗時間的,相較之下Llinux只需要下 yum update就可以完成所有軟體更新就輕鬆多了。

Chocolatey只是一個引導程序,它是使用PowerShell腳本和NuGet(NuGet是Windows開發人員用的package管理系統 )的格式封裝並為您安裝應用程序。

簡單說今天如果你想安裝7zip,並依照你作業系統安裝最新版,在Chocolatey中,只需要在命令提示字元下
choco install 7zip -y
要檢查所有透過choco安裝的軟體是否有更新只需要下
choco upgrade all

一個指令完成了繁瑣的工作,而且不用擔心軟體包被加料包含廣告軟體,或是木馬病毒、垃圾軟體等程式(見Scott文章的Security Issue一節)所有軟體包必須符合以下原則:
1.不包含非法(盜版)軟體、垃圾軟體、惡意程式
2.軟體需對其他使用者有用,只適用特定環境的程式就免了
3.使用無聲安裝模式(Slient Mode,指不需使用者輸入任何選項就完成安裝)時不可包含廣告、間諜軟體或不相干的附贈軟體
4.不要重複加入已有其他程式包提供過的程式,應利用相依性
宜將軟體包拆解細分以利組合相依。
5.一律使用直覺的小寫名稱


安裝方法如下,在命令提示字元系統管理權限下

@"%SystemRoot%\System32\WindowsPowerShell\v1.0\powershell.exe" -NoProfile -InputFormat None -ExecutionPolicy Bypass -Command "iex ((New-Object System.Net.WebClient).DownloadString('https://chocolatey.org/install.ps1'))" && SET "PATH=%PATH%;%ALLUSERSPROFILE%\chocolatey\bin"

這樣就可以安裝,以下分享我常用的軟體

choco install -y 7zip
choco install -y dropbox

choco install -y CentBrowser
choco install -y dotnet3.5
choco install -y dotnet4.0
choco install -y dotnet4.5.1
choco install -y dotnet4.5.2
choco install -y dotnet4.5
choco install -y dotnet4.6
choco install -y dotnet4.6.1
choco install -y everything
choco install -y fsviewer
choco install -y iTunes
choco install -y jdk10
choco install -y k-litecodecpackmega
choco install -y libreoffice
choco install -y notepadplusplus
choco install -y adobereader
choco install -y adobereader-update
choco install -y flashplayerplugin
choco install -y flashplayeractivex
choco install -y adobeair
choco install -y adobeshockwaveplayer
choco install -y vcredist-all

最後一個更懶惰的更新方法,在下列語法存成 檢查所有軟體是否有更新.bat

@ECHO OFF & CD /D %~DP0 & TITLE 自動更新軟體
>NUL 2>&1 REG.exe query "HKU\S-1-5-19" || (
    ECHO SET UAC = CreateObject^("Shell.Application"^) > "%TEMP%\Getadmin.vbs"
    ECHO UAC.ShellExecute "%~f0", "%1", "", "runas", 1 >> "%TEMP%\Getadmin.vbs"
    "%TEMP%\Getadmin.vbs"
    DEL /f /q "%TEMP%\Getadmin.vbs" 2>NUL
    Exit /b
)

echo Y| choco upgrade all -y
ping 127.0.0.1 -n 5 >NUL

這樣每次想更新系統軟體,只要點兩下就可以更新。