検索
連載

Office 2016のバージョン確認と手動更新、操作が面倒じゃないですか?その知識、ホントに正しい? Windowsにまつわる都市伝説(102)(2/2 ページ)

今回は都市伝説的な話ではなく、Office 365(Office 2016)のバージョンと更新チャネルの確認と手動更新の手間を簡素化してみようという挑戦です。この挑戦の中で、最新の“Officeの秘密”がいろいろ分かるかもしれませんよ。

PC用表示 関連情報
Share
Tweet
LINE
Hatena
前のページへ |       

その他のバージョン確認方法

 今回は利用しませんが、Office 2016のビルド番号を確認する方法は他にも幾つかあります。例えば、コントロールパネルの「プログラムと機能」(appwiz.cpl)に表示されるバージョン情報です。この情報は、例えばレジストリキー「HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\O365ProPlusRetail - ja-jp」に見つかりますが、最後のキー名は製品や言語によって変わるので使いにくいでしょう(画面4)。

画面4
画面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
    
}
リスト1 ビルド番号と更新チャネルを取得するスクリプト「get-o365ver.ps1」
画面5
画面5 完成したスクリプトの実行結果

自動更新の仕組みから手動更新の方法を探る

 Office 2016は組み込みの更新機能により自動的に更新されます。この自動更新は、Windowsの「タスクスケジューラー(taskschd.msc)」の「Microsoft\Office\Office Automatic Updates」タスクに構成されていました(画面6)。

画面6
画面6 Office 2016の自動更新を実行する「Office Automatic Updates」タスク

 このタスクは、ユーザーログオン時に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
リスト2 「get-o365ver.ps1」の最後に追加する4行のスクリプト
画面7
画面7 PowerShellスクリプトから手動更新を開始したところ

(おまけ)「OfficeC2RClient.exe」のその他の用途

 「OfficeC2RClient.exe」は自動更新タスクや手動更新の実行以外にも、幾つか使用方法があります。1つは、Office 2016のバージョン(ビルド)のロールバックです。「修正プログラムのアンインストール」と呼ばれることもありますが、実際は“過去の特定のビルド番号を指定しての手動更新”です。詳しくは、以下のMicrosoftのブログ記事を参考にしてください。

 2018年1月のOfficeの更新プログラムでは、レガシーコンポーネントである「Microsoft数式 3.0」がセキュリティ上の理由から削除されるという措置がとられました。「OfficeC2RClient.exe」を使用して2017年12月以前のバージョン(ビルド)にロールバックすることで、一時的にこの機能を復活することができます。このことについては、筆者の個人ブログでも説明しています。

 比較的新しいバージョンの「OfficeC2RClient.exe」では、更新チャネルの切り替えも可能になりました。以下のMicrosoftのブログ記事にその方法が説明されています。

 具体的には、コマンドプロンプトまたは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.

前のページへ |       
ページトップに戻る