Visual studio code(Windows版)はインストーラーでインストールする方法が一般的です。
ただ、別PCに自分仕様にカスタマイズしたのVisual studio codeを使用したい場合を考えたとき、zipファイルを展開してインストールしたほう方が、SSDにコピーしてそこから実行もできるようになり、バックアップも容易などいいことずくめです。
しかし、zip展開でインストールした場合、アップデートの度にzipをダウンロードして展開し、Visual studio codeのインストールフォルダに手動でコピーしなくてはいけません。Visual studio codeは頻繁にアップデートがあるので、手動アップデートは結構面倒です。
そこで、ダブルクリックのみでアップデートバッチとPowershellスクリプトを作成し、スケジューラーで定期的にアップデートできるようにしました。そのバッチとPowershellスクリプトが以下になります。
バッチファイルはダブルクリックでアップデートできるようにするためのWrapperになります。Visual studio codeが起動中の場合やアップデートファイルのダウンロードに失敗した場合はアップデート処理を行わないようにしています。
このバッチを定時で起動したり、startupにショートカットを置いて起動時にアップデートをかけたりすることで、常に最新版のVisual studio codeが使用できるようになります。
参考になれば幸いです。
@echo off
SET CURRENT_DIR_VSCODE_UPDATE_BAT=%~dp0
cd /d "%CURRENT_DIR_VSCODE_UPDATE_BAT%"
SET BATCH_NAME_VSCODE_UPDATE_BAT=%~n0%~x0
echo [%BATCH_NAME_VSCODE_UPDATE_BAT%] powershell -NoProfile -ExecutionPolicy Bypass ".\VsCodeUpdate.ps1"
CALL powershell -NoProfile -ExecutionPolicy Bypass ".\VsCodeUpdate.ps1"
[string]$script:script_path = Split-Path -Parent $MyInvocation.MyCommand.Path
[string]$script:script_name = Split-Path -Leaf $PSCommandPath
[string]$script:zip_name_body = "updater"
[string]$script:zip_name = $script:zip_name_body +".zip"
[string]$script:zip_path = $script:script_path + "\" + $script:zip_name
try {
Get-Process -Name Code -ErrorAction Stop > $null
Write-Host "[$script:script_name] Error : Close VSCode before updating"
Start-Sleep -m 5000
exit
}
catch {
# do nothing
}
# Remove temp file from portable user data
Remove-Item -Recurse -Force -Path "data/user-data" -Include @("Backups", "Cache", "CachedData", "GPUCache", "logs")
# Download latest stable build
curl.exe -L "https://code.visualstudio.com/sha/download?build=stable&os=win32-x64-archive" -o $script:zip_path
if( Test-Path($script:zip_path) ){
try{
# Unzip it
[string]$extract_folder = $script:zip_path.Substring(0, $script:zip_path.LastIndexOf('.'))
if( Test-Path($extract_folder) ){
Remove-Item -Recurse -Force -Path $extract_folder
}
Expand-Archive -Path $script:zip_path -DestinationPath $extract_folder
try {
Get-Process -Name Code -ErrorAction Stop > $null
Write-Host "[$script:script_name] Error : Close VSCode before updating"
# Delete downloaded package
Remove-Item -Path $script:zip_path
if( Test-Path($extract_folder) ){
Remove-Item -Recurse -Force -Path $extract_folder
}
Start-Sleep -m 5000
exit
}
catch {
# do nothing
}
# Delete anything except user data, update script and downloaded zip file
Get-ChildItem -Exclude @("data", "VSCodeUpdate.*", "ContextMenu_Setting.reg", $script:zip_name, $script:zip_name_body ) | Remove-Item -Recurse -Force
Copy-Item -Path ( $extract_folder + "\*" ) -Destination $script:script_path -Recurse -Force
} catch {
Write-Host "[$script:script_name] Forbidden route : Fail to extract"
Start-Sleep -m 5000
}
# Delete downloaded package
Remove-Item -Path $script:zip_path
if( Test-Path($extract_folder) ){
Remove-Item -Recurse -Force -Path $extract_folder
}
}
※zipでインストールする場合、右クリックメニューに”VSCodeで開く”が表示されません。これを表示させるための.regファイルが以下になります。”D:¥Tools¥VSCode”にインストールされていることが前提になります。参考までに。
Windows Registry Editor Version 5.00
[HKEY_CLASSES_ROOT\*\shell\VSCode]
@=hex(2):4f,00,70,00,65,00,6e,00,20,00,77,00,26,00,69,00,74,00,68,00,20,00,43,\
00,6f,00,64,00,65,00,00,00
"Icon"=hex(2):44,00,3a,00,5c,00,54,00,6f,00,6f,00,6c,00,73,00,5c,00,56,00,53,\
00,43,00,6f,00,64,00,65,00,5c,00,43,00,6f,00,64,00,65,00,2e,00,65,00,78,00,\
65,00,00,00
[HKEY_CLASSES_ROOT\*\shell\VSCode\command]
@=hex(2):22,00,44,00,3a,00,5c,00,54,00,6f,00,6f,00,6c,00,73,00,5c,00,56,00,53,\
00,43,00,6f,00,64,00,65,00,5c,00,43,00,6f,00,64,00,65,00,2e,00,65,00,78,00,\
65,00,22,00,20,00,22,00,25,00,31,00,22,00,00,00
[HKEY_CLASSES_ROOT\Directory\Background\shell\VSCode]
@=hex(2):4f,00,70,00,65,00,6e,00,20,00,77,00,26,00,69,00,74,00,68,00,20,00,43,\
00,6f,00,64,00,65,00,00,00
"Icon"=hex(2):44,00,3a,00,5c,00,54,00,6f,00,6f,00,6c,00,73,00,5c,00,56,00,53,\
00,43,00,6f,00,64,00,65,00,5c,00,43,00,6f,00,64,00,65,00,2e,00,65,00,78,00,\
65,00,00,00
[HKEY_CLASSES_ROOT\Directory\Background\shell\VSCode\command]
@=hex(2):22,00,44,00,3a,00,5c,00,54,00,6f,00,6f,00,6c,00,73,00,5c,00,56,00,53,\
00,43,00,6f,00,64,00,65,00,5c,00,43,00,6f,00,64,00,65,00,2e,00,65,00,78,00,\
65,00,22,00,20,00,22,00,25,00,56,00,22,00,00,00
[HKEY_CLASSES_ROOT\Directory\Background\shell\VSCode]
@=hex(2):4f,00,70,00,65,00,6e,00,20,00,77,00,26,00,69,00,74,00,68,00,20,00,43,\
00,6f,00,64,00,65,00,00,00
"Icon"=hex(2):44,00,3a,00,5c,00,54,00,6f,00,6f,00,6c,00,73,00,5c,00,56,00,53,\
00,43,00,6f,00,64,00,65,00,5c,00,43,00,6f,00,64,00,65,00,2e,00,65,00,78,00,\
65,00,00,00
[HKEY_CLASSES_ROOT\Directory\Background\shell\VSCode\command]
@=hex(2):22,00,44,00,3a,00,5c,00,54,00,6f,00,6f,00,6c,00,73,00,5c,00,56,00,53,\
00,43,00,6f,00,64,00,65,00,5c,00,43,00,6f,00,64,00,65,00,2e,00,65,00,78,00,\
65,00,22,00,20,00,22,00,25,00,56,00,22,00,00,00