Office 2016のバージョン確認と手動更新、操作が面倒じゃないですか?:その知識、ホントに正しい? Windowsにまつわる都市伝説(102)(2/2 ページ)
今回は都市伝説的な話ではなく、Office 365(Office 2016)のバージョンと更新チャネルの確認と手動更新の手間を簡素化してみようという挑戦です。この挑戦の中で、最新の“Officeの秘密”がいろいろ分かるかもしれませんよ。
その他のバージョン確認方法
今回は利用しませんが、Office 2016のビルド番号を確認する方法は他にも幾つかあります。例えば、コントロールパネルの「プログラムと機能」(appwiz.cpl)に表示されるバージョン情報です。この情報は、例えばレジストリキー「HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\O365ProPlusRetail - ja-jp」に見つかりますが、最後のキー名は製品や言語によって変わるので使いにくいでしょう(画面4)。
また、Office 2016の任意のアプリケーション実行可能ファイル(.exe)から、ファイルのバージョン情報を取得するという方法もあります。例えば、Windows PowerShellで以下のコマンドラインを実行すると、Wordの実行可能ファイルからビルド番号が得られます。
((Get-ItemProperty -Path "C:\Program Files (x86)\Microsoft Office\root\Office16\winword.exe").VersionInfo).FileVersion
「get-o365ver.ps1」の完成
以上を踏まえて、ビルド番号と更新チャネルを取得するスクリプト「get-o365ver.ps1」を作成してみました(リスト1)。このスクリプトを実行すると、ビルド番号、更新チャネル(CDNBaseURLを英語のチャネル名に変換)、ポリシー設定(udpatebranch値を英語のチャネル名に変換)を出力します。また、Office 2016がインストールされていない場合も検出できるようにしています(画面5)。
$O365CurrentVer = "" $O365CurrentCdn = "" $O365CurrentPol = "" $O365CurrentVer = (Get-ItemProperty -Path "HKLM:\SOFTWARE\Microsoft\Office\ClickToRun\Configuration" -ErrorAction SilentlyContinue).VersionToReport $O365CurrentCdn = (Get-ItemProperty -Path "HKLM:\SOFTWARE\Microsoft\Office\ClickToRun\Configuration" -ErrorAction SilentlyContinue).CDNBaseUrl $O365CurrentPol = (Get-ItemProperty -Path "HKLM:\SOFTWARE\policies\microsoft\office\16.0\common\officeupdate" -ErrorAction SilentlyContinue).updatebranch if ($O365CurrentVer.Length -eq 0) { Write-Host "Office 365 (C2R) is not installed on this PC." } else { Write-Host "Office 365 (C2R) Current Version: "$O365CurrentVer switch ($O365CurrentCdn) { "http://officecdn.microsoft.com/pr/492350f6-3a01-4f97-b9c0-c7c6ddf67d60" {$O365CurrentCdn = "Monthly Channel"} "http://officecdn.microsoft.com/pr/7ffbc6bf-bc32-4f92-8982-f9dd17fd3114" {$O365CurrentCdn = "Semi-Annual Channel"} "http://officecdn.microsoft.com/pr/b8f9b850-328d-4355-9145-c59439a0c4cf" {$O365CurrentCdn = "Semi-Annual Channel (Targeted)"} } Write-Host "Office 365 Update Channel (Local Setting): "$O365CurrentCdn if ($O365CurrentPol.length -eq 0) { $O365CurrentPol = "None" } else { switch ($O365CurrentPol) { "Current" {$O365CurrentPol = "Monthly Channel"} "Deferred" {$O365CurrentPol = "Semi-Annual Channel"} "FirstReleaseDeferred" {$O365CurrentPol = "Semi-Annual Channel (Targeted)"} } } Write-Host "Office 365 Update Channel (Policy Setting): "$O365CurrentPol }
自動更新の仕組みから手動更新の方法を探る
Office 2016は組み込みの更新機能により自動的に更新されます。この自動更新は、Windowsの「タスクスケジューラー(taskschd.msc)」の「Microsoft\Office\Office Automatic Updates」タスクに構成されていました(画面6)。
このタスクは、ユーザーログオン時に15分の遅延の後、1時間の間に30分ごとに繰り返し実行され、さらに日曜、火曜、金曜の午前3時に起動されるようにスケジュールされ、「C:\Program Files\Common Files\Microsoft Shared\ClickToRun\OfficeC2RClient.exe」を「/update SCHEDULEDTASK displaylevel=False」オプション付きで実行するように構成されています。
自動更新のタスクのコマンドは、ユーザーに非表示の状態で実行されます。コマンドラインからユーザーに見える状態で手動更新を実行するには、コマンドプロンプトやPowerShellで以下のコマンドライン(displaylevel=Trueは省略可能)を実行します。
OfficeC2RClient.exe /update user displaylevel=True
先ほどの「get-o365ver.ps1」の最後に次の4行を追加すれば、現在のビルド番号と更新チャネルの確認後、手動更新を開始できます(リスト2、画面7)。
Write-Host "Check Update Now!" $O365UpdateCmd = "C:\Program Files\Common Files\Microsoft Shared\ClickToRun\OfficeC2RClient.exe" $O365UpdateArg = "/update user displaylevel=True" Start-Process -FilePath $O365UpdateCmd -ArgumentList $O365UpdateArg
(おまけ)「OfficeC2RClient.exe」のその他の用途
「OfficeC2RClient.exe」は自動更新タスクや手動更新の実行以外にも、幾つか使用方法があります。1つは、Office 2016のバージョン(ビルド)のロールバックです。「修正プログラムのアンインストール」と呼ばれることもありますが、実際は“過去の特定のビルド番号を指定しての手動更新”です。詳しくは、以下のMicrosoftのブログ記事を参考にしてください。
- クイック実行版(C2R/Click-to-Run)Outlook 2013/2016の修正プログラムをアンインストールする手順について(Outlook Support Team Blog JAPAN)
2018年1月のOfficeの更新プログラムでは、レガシーコンポーネントである「Microsoft数式 3.0」がセキュリティ上の理由から削除されるという措置がとられました。「OfficeC2RClient.exe」を使用して2017年12月以前のバージョン(ビルド)にロールバックすることで、一時的にこの機能を復活することができます。このことについては、筆者の個人ブログでも説明しています。
- 復活の数式エディターv3(消されてしまった Microsoft 数式 3.0 を緊急にどうにかしたい人向け)(筆者の個人ブログ:山市良のえぬなんとかわーるど)
比較的新しいバージョンの「OfficeC2RClient.exe」では、更新チャネルの切り替えも可能になりました。以下のMicrosoftのブログ記事にその方法が説明されています。
- How to 'Switch Channels' for Office 2016 ProPlus[英語](Office Deployment Support Team Blog)
具体的には、コマンドプロンプトまたはWindows PowerShellを開き(管理者としての実行は不要)、次の3つのコマンドラインを実行します。<キーワード>の部分には、更新チャネルに対応したキーワードを指定します(表2)。
cd "C:\Program Files\Common Files\Microsoft Shared\ClickToRun"
.\OfficeC2RClient.exe" /changesetting channel=<キーワード>
.\OfficeC2RClient.exe" /update user
更新チャネル | 更新チャネル(日本語) | キーワード |
---|---|---|
Monthly Channel | 月次チャネル | Monthly(またはCurrent) |
Semi-Annual Channel(Targeted) | 半期チャネル(対象限定) | Targeted(またはFirstReleaseDeferred) |
Semi-Annual Channel | 半期チャネル | Broad(またはDeferred) |
表2 指定するキーワードと対応する更新チャネル |
筆者紹介
山市 良(やまいち りょう)
岩手県花巻市在住。Microsoft MVP:Cloud and Datacenter Management(Oct 2008 - Sep 2016)。SIer、IT出版社、中堅企業のシステム管理者を経て、フリーのテクニカルライターに。Microsoft製品、テクノロジーを中心に、IT雑誌、Webサイトへの記事の寄稿、ドキュメント作成、事例取材などを手掛ける。個人ブログは『山市良のえぬなんとかわーるど』。近著は『Windows Server 2016テクノロジ入門−完全版』(日経BP社)。
Copyright © ITmedia, Inc. All Rights Reserved.
関連記事
- 「Windows Server version 1709」のダウンロード配布が開始――Microsoft
Microsoftは、Windows Serverの「半期チャネル」による初のリリースとなる「Windows Server version 1709」のダウンロード配布を開始した。コンテナやマイクロサービス関連など、多くの新機能を提供する。 - 「Windows Server version 1709」では、Nano Serverコンテナイメージサイズが80%縮小
Microsoftの公式ブログで、2017年秋に投入予定の「Windows Server version 1709」で注目されるNano ServerおよびLinuxコンテナ機能が紹介された。 - 先行き不安なWindows Update――ボクが2017年10月の更新をスキップした(できた)理由
毎月第二火曜日の翌日(日本時間)は、恒例のWindows Updateの日です。最近は何か問題が起きるのではないか、更新に何時間もかかったり、その上失敗したりするのではないかと、恐怖さえ感じます。さて、2017年10月のWindows Updateは無事に済んだのでしょうか。 - Windows Server 2016の今後の“更新”が怖い
テスト環境として構築したWindows Server 2016の物理サーバと仮想マシン。その一部でWindows Updateやシャットダウンに異様に時間がかかるといった現象に遭遇しました。そんな中、Windows Serverの次期バージョンに関する新方針の発表もあって、いろいろな面で“更新”に対する不安が高まっています(筆者の個人的な感想)。