マイクラ統合版(BE)サーバーを自動アップデート!for Windows

bedrock-server-auto-update
  • URLをコピーしました!

現在、iPhoneiPadMinecraft(以下マイクラ)を楽しんでいますが、アプリ自動アップデートしていると、自宅に建てているWindows用のマイクラ統合版サーバーBedrock Server)側とのバージョンの違いで、接続できないことが多々あります。

その際、主に利用者からクレームを受けて、サーバー側のバージョン手動アップデートしているのですが、すぐに対応できる状況じゃないと利用者を待たせることになるので一苦労(汗)。
そこで、WindowsPowerShellタスクスケジューラーを使った、マイクラ統合版(BE)サーバー自動アップデートスクリプトを作成したので公開します!

目次

マイクラ統合版の自動アップデート

マイクラ統合版サーバー(Bedrock Server)には、Windows版とUbuntu(Linux)版が用意されています。
Ubuntu版には便利なシェルスクリプトが公開されているので、特に気にせず自動アップデートできるのですが、Windows版は探しまくってもすぐ使えるようなものは全く見つかりませんでした。。
海外のサイトで唯一使えそうな情報があったので、そちらを参考に少し改造して完成させました!

PowerShellで最新版にアップデート

今回のスクリプトを使ったアップデート時にやることは、

  1. ダウンロードリンクの取得と最新バージョンの確認
  2. 起動中のBedrock Serverの停止
  3. 設定ファイルのバックアップ
  4. 最新版Bedrock Serverのダウンロード
  5. ダウンロードしたBedrock Serverの展開
  6. バックアップした設定ファイルを戻す
  7. Bedrock Serverの起動

ザックリこのような流れです。
まずは完成したPowerShellスクリプトを貼り付けます。
後ほど簡単に内容の解説と参考サイトとの違いだけご紹介したいと思います。

ちなみに、このスクリプトGithubでも公開していますので、ダウンロードして自由にお使いください。
使い方についてもこちらをご参照ください。

GitHub
GitHub - minoryorg/minecraft-bedrock-server-automatic-update-for-windows: Minecraft Bedrock Server A... Minecraft Bedrock Server Automatic Update for Windows(統合版マイクラサーバー自動アップデートスクリプト) - minoryorg/minecraft-bedrock-server-automatic-update-...

解説と参考サイトとの違い

マイクラ(BE)サーバー自動アップデート
マイクラ(BE)サーバー自動アップデート

0. インストール先の指定

最初から解説していきます。
まず、このPowerShellを使用する際に唯一変更する箇所は、1行目の$gameDirのパラメータのみです。
ここにBedrock Serverインストールフォルダを指定します。

1. ダウンロードリンクの取得と最新バージョンの確認

ここが参考サイトと異なる部分になります。
参考サイトでは以下のように、Invoke-WebRequestマイクラ公式のBedrock Serverダウンロードページの情報からLinksダウンロードリンクを取得していますが、デバッグしながらやってみると、Linksの項目はなぜか空になってました。

そこで、Contentの情報からダウンロードリンクを取得するよう改造しました!
さらに、ダウンロードリンクの検索には-matchを使って、HTMLアンカータグにあるhrefの値の末尾に.zipが付くのもを抽出しています。

あとは参考サイトと同じようにReplaceして、最新版Bedrock ServerZIPファイル名が取得できました!

2. 起動中のBedrock Serverの停止

この行で、インストールフォルダに先程取得したZIPファイルが存在するか確認します。

存在したら何もしない、存在しなかったらバージョンアップを実行します。

Bedrock Server停止

3. 設定ファイルのバックアップ

で設定ファイルのバックアップ先フォルダ(backup)を作成し、

で展開した際に上書きされないよう設定ファイルをbackupフォルダへ退避。

4. 最新版Bedrock Serverのダウンロード

1.で取得した最新版ダウンロードリンクから、Bedrock ServerZIPファイルをダウンロード

5. ダウンロードしたBedrock Serverの展開

Bedrock ServerインストールフォルダZIPファイルを解凍展開

6. バックアップした設定ファイルを戻す

3.でbackupフォルダにバックアップしておいた設定ファイルを元に戻して

7. Bedrock Serverの起動

Bedrock Server起動すれば完了!
最後はプロセスが残らないようexitで終了、という流れです。

タスクスケジューラーでPowerShellの実行

タスクスケジューラーでPowerShellの実行
タスクスケジューラーでPowerShellの実行

完成したPowerShellを定期的に実行するよう、タスクスケジューラーに登録します。
実はこれが少し厄介で、タスクスケジューラーPowerShellスクリプトを実行させる場合、単純に.ps1ファイルを指定するのでは上手くいきませんでした。
話を進める前に、タスクスケジューラーの基本はこちらで確認しておいてくださいね。

PowerShellを1時間毎に実行する

今回はトリガーを細かく設定しますので、まずはタスクスケジューラーを開き、「基本タスクの作成」ではなく「タスクの作成」を選択してください。
左端の「全般」タグから順を追って説明します。

全般

ここはそれぞれ実行する端末の環境によって異なるので、自分で最適だと思う「セキュリティ オプション」を設定してください。
ここの設定も間違えるとタスクは動きません。
よくネットの情報では、「ユーザーがログオンしているかどうかにかかわらず実行する」や「最上位の特権で実行する」にもチェックを入れることが多く推奨されているようですが、著者の環境では、「ユーザーがログオンしているときのみ実行する」でないと動きませんでした。
これは、著者の環境がネットワークドライブBedrock Serverインストールフォルダがあるからではないかと思います。
もし、タスクを実行してみて動かなければ、ここの設定を変えてみることも視野に入れておいてください。

トリガー

出典:Windows10でタスクを1時間間隔で実行する方法

トリガーでは、いつ、どのような間隔でPowerShellを実行するかを決めます。
今回の例では1時間毎に実行したいのですが、「設定」の項目には1回毎日毎週毎月しかありません。
そこで、「設定」の項目では「1回」を選択し、「詳細設定」の方で1時間毎になるようにします。
詳細設定」の「繰り返し間隔」を「1時間」で設定し、右隣の「継続時間」を「無制限」にします。
これで、1時間毎に永遠に実行するタスクが実現できます。

操作

出典:WindowsのタスクスケジューラーでPowerShellのスクリプトを実行する際には「パス」に注意:Tech TIPS – @IT

さて、ここが1番の悩みでした。
普通なら「プログラム/スクリプト」に今回のPowerShellで作った.ps1スクリプトファイルを設定するだけで良さそうなのですが、PowerShellの場合は一味違います。
以下のように設定してください。

プログラム/スクリプト

※PowerShell本体のフルパス

引数の追加

※PowerShell本体の引数として、.ps1を実行
※絶対パス(C:\bedrock\bedrock_server.ps1)でもOK

開始

※.ps1を配置しているフォルダパス

この設定の意味は、.ps1スクリプトファイルを直接実行するのではなく、PowerShell本体から.ps1を実行しています。
このように設定しないと動きません!

その他のタブ

その他にも「条件」や「設定」タブがありますが、ここでは説明を割愛します。
それぞれの環境に合わせてご自身で設定してください。
タスクスケジューラーの設定は以上です。
できたら試しに「実行」をクリックして動作が正常かどうか確認してください。
お疲れ様でした!

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

コメント

コメント一覧 (1件)

コメントする

CAPTCHA


目次