讓 VSCode 免安裝版也支援一鍵更新

使用 VSCode 免安裝版

由於免安裝程式的方便攜帶特性和不會在作業系統中留下註冊表設定及散落檔案在各處資料夾中,只要有提供免安裝版本的程式,我都會優先以免安裝版做為安裝優先考量,

VSCode 在 Windows 上其實也有提供免安裝版,包含 Stable(發行版)[1] 和 Insiders(開發版)[2] 都有分別提供免安裝版下載連結,藏在 Other downloads 區塊中:

[1] Visual Studio Code Other downloads

[2] Download Visual Studio Code Insiders

 

VSCode 免安裝版和安裝版最大的差別就是所有使用者檔案、擴充功能(Extensions)都會存放在程式目錄中的 data 資料夾,便於集中管理或移動,

如果正在使用安裝版的使用者,也可以依照官方文檔中的說明,將 VSCode 無痛轉換為免安裝模式 [3]

[3] Migrate to Portable mode

 

更新痛點

在 Windows 上的免安裝版有一個煩人的問題,就是每當 VSCode 推出更新時,沒辦法像安裝版一樣直接重新啓動來完成更新,

取而代之的是,VSCode 會提醒你要「下載更新」,手動下載完 zip 檔案後,再自行覆蓋所有檔案,過程相當繁瑣。

 

解決方案

想要輕鬆完成更新,就讓一切自動化吧,之前在 GitHub issue 中找到了相關討論串 [4],裡面有網友提供了 PowerShell 腳本,

這裡將分享基於該腳本修改過的版本,並搭配 VSCode 其他的擴充功能達成在 VSCode 使用者界面中直接完成更新。

[4] Support auto update for Windows and Linux ZIP

 

首先,在 VSCode 中新增一個檔案,貼上以下腳本程式碼,並儲存為 update.ps1,建議存在 VSCode 的根目錄下以方便管理。

curl.exe -L "https://code.visualstudio.com/sha/download?build=stable&os=win32-x64-archive" -o "vscode.zip"
Stop-Process -name Code -Force
Get-ChildItem -Exclude @("data", "update.ps1", "vscode.zip") | Remove-Item -Recurse -Force
Expand-Archive -Path "vscode.zip" -DestinationPath .
Remove-Item -Path "vscode.zip"
code -r
Exit

這個腳本中,主要執行的內容包括下載最新版 VSCode 壓縮檔並解壓縮,保留使用者資料並取代其他檔案為新版本,最後重新開啓 VSCode 完成更新,

需要注意的是,如果你使用的 VSCode 是 Insiders 版本,需要將第一行下載網址中 build=stable 改為 build=insider

 

到這裡為止,使用 PowerShell 直接執行 update.ps1 就能順利完成更新作業,但若是能將一切步驟集中在 VSCode 界面中操作會更直覺,

所以接下來請至 Marketplace 中安裝 Favorites Manager [5],安裝完成後可以在左側欄看到星星圖案的頁籤,點擊即可開啓「Favorites Explorer」面板。

保持在剛剛儲存的 update.ps1 檔案,點擊面板中的「+」號即可將目前開啓的檔案新增到最愛中,下次可以直接在最愛面板中開啓。

[5] Favorites Manager - Visual Studio Marketplace

 

最後,至 Marketplace 中安裝 Run in Powershell [6],安裝完成後可以在開啓 update.ps1 檔案時,於右上方的圖示工具列看到 PowerShell 圖示,只要點擊該按鈕,即可自動在 PowerShell 中執行腳本。

[6] Run in Powershell - Visual Studio Marketplace

 

如此一來,下次收到 VSCode 需要更新的通知時,只要點擊側欄星星頁籤 -> 選擇 update.ps1 -> 點擊 PowerShell 按鈕三個步驟,並等待 PowerShell 腳本執行完畢,就能輕鬆完成 VSCode 免安裝版的更新,你說方便不方便。

想隨時追蹤最新資訊?歡迎使用 RSS 訂閱最新文章 »

您或許會感興趣的文章

隨機推薦

共有 0 則迴響

暫時沒有迴響,歡迎您率先發表!

發表迴響

*