Windowsの表示言語のインストールをバッチで行う

もくじ
https://tera1707.com/entry/2022/02/06/144447

やったこと

powershellInstall-Language を使う。

また、バッチファイルをダブルクリックするだけで実行したいので、下記の過去記事を使う。

管理者権限がなかったらUAC昇格してから実行するバッチファイル(引数指定可能) #Windows - Qiita

バッチファイルの中でPowerShellのコマンドを実行する - tera1707’s blog

サンプルスクリプト

今回は、下記のようにしてみた。

  • バッチファイルをダブルクリックしたら、
  • 管理者で起動するか聞かれるので、OKを押したら、
  • Install-Languageが走って、複数言語がinstallされる

下記のスクリプトのうち、要点は真ん中あたりにある

PowerShell -Command "Install-Language ja-JP"

が数言語分ある部分。

それ以外は、管理者として実行してくれるようにするためのおまじない。

@set @dummy=0/*
@echo off
NET FILE 1>NUL 2>NUL
if "%ERRORLEVEL%" neq "0" (
  cscript //nologo //E:JScript "%~f0" %*
  exit /b %ERRORLEVEL%
)

REM 管理者権限で実行したい処理 ここから

PowerShell -Command "Install-Language ja-JP"
PowerShell -Command "Install-Language de-DE"
PowerShell -Command "Install-Language en-US"
PowerShell -Command "Install-Language fr-FR"
pause

REM 管理者権限で実行したい処理 ここまで

goto :EOF
*/
var cmd = '"/c ""' + WScript.ScriptFullName + '" ';
for (var i = 0; i < WScript.Arguments.Length; i++) cmd += '"' + WScript.Arguments(i) + '" ';
(new ActiveXObject('Shell.Application')).ShellExecute('cmd.exe', cmd + ' "', '', 'runas', 1);

実行中の画面

★注意★

この「言語 ※※-※※ をインストールしています」が、かなり長い時間出たままになる。

フリーズしているのではないか?と心配になるくらい長いこと出続けたあと、完了すると、結果表示代わりにその言語のインストール状況が表示される。それが下記の部分(下図は、ドイツ語のインストールのためのInstall-Language de-DEが終わった後の表示)。

今日試した限り、15分以上は「進行中」のままだった。
windowsの設定画面から言語をinstallするときも、結構時間かかるので、なんとなく納得)

また、一度インストールしたことのある言語を再度Install-Languageすると、その言語に関してはすぐInstall-Languageの実行が終わる。

参考

Install-Language

https://learn.microsoft.com/ja-jp/powershell/module/languagepackmanagement/install-language?view=windowsserver2022-ps

問題があったときは、下記を見ながら削除を行えばよいかもしれない。。。(未確認)

https://qiita.com/8pf/items/8c9c58b7e50c2cb796e3