Wsus Package Publisherを使ってWindows Update経由で他のソフトウェアをアップデートする
当記事の目的
WSUS環境ではWindows Update経由で配布される更新プログラムの管理・制御が可能です。 この機能を使って、他のソフトウェア(例えばAdobe Acrobat ReaderとかVisutal Studio Codeなど)のプログラムのアップデートを管理できたら便利だな、でもWSUSのAPIを自前のソフトウェアでたたくのはさすがに面倒だな。 という社内SE的な人向けの、Wsus Package Publisherというオープンソースソフトウェアを利用して、これを実現する方法の説明を行っていきたいと思います。(要は備忘録です)
前提条件
WSUS環境が存在する。
Wsus Package Publisherについて
WSUSのAPIを利用するソフトウェアは複数あったようですが、最近はWindowsがマイナーな存在になったのか、現在まともにメンテされているのはWsus Package Publisherのみの様です。 Wsus Package Publisherは下記のリポジトリで開発が行われています。 github.com
ちなみに、同名のCodeplexで開発されていたバージョンはGithubのものに統合されたようです。 archive.codeplex.com
インストールおよび利用方法について
自己署名証明書の準備
まず、アップデートパッチの安全性の保証に用いられる、自己署名証明書を作成する必要があります。 最近のWindowsだとPowershellのNew-SelfSignedCertigicateで自己署名証明書を作成することができます。
とりあえずコード署名の自己署名証明書を作成します。 最近のWindowsの機能更新の有効期限を参考に、(とりあえず)1年半を有効期限としておきます。 下の例では、"WSUSCert"という名前で作成していますが、好きな名前を付けてください。
New-SelfSignedCertificate -Type CodeSigningCert -Subject "WSUSCert" ` -KeyAlgorithm RSA -KeyLength 2048 -KeyExportPolicy Exportable ` -NotAfter (Get-Date).AddYears(1).AddMonths(6)
この証明書はコンピューター証明書の管理のPersonal -> Certificatesに登録されています。 作成した証明書を開き、詳細 ->ファイルへコピーからエクスポートしてください。
自己署名証明書の配布
先ほどの証明書をローカルコンピューターの"信頼されたルート証明機関"および”信頼された発行元”にインストールします。 また、レジストリの次のパスにDWORD値のキーを作成し、1を設定します。 HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate\AcceptTrustedPublisherCerts
AD環境でない場合は個別にインストールするよう設定をし、マシンを再起動してください。
WSUS Package Publisherのインストール
Githubに公開されているWSUS Package Publisherのリリースの中から最新のバージョンを選択し、ソフトウェアをダウンロードする。
Releases · DCourtel/Wsus_Package_Publisher · GitHub
解凍したフォルダの"Wsus Package Publisher.exe"を起動する。
"Tools"の"Certificate..."から証明書の設定を行う。
Use an existing certificateのPasswordに、先ほど自己署名証明書をエクスポートした際に設定したパスワードを入力し、 "Load a certificate..."から自己署名証明書を選択する。
そして、一旦WSUSサーバーを再起動する。
アップデートパッケージの作成
"Updates"の"Create an Update..."からパッケージ作成画面を開きます。
Update Fileからアップデート用のインストーラーを選択し、Nextを選択し、次の画面に進みます。
Vandor Name、Product Name、Title、Descriptionを入力します。
なお、ここで作成されたパッケージはサイレント実行されなければならないため、必要であれば、Command Lineにオプションを設定します。
Nextを選択し、次の画面に進みます。
この画面ではアップデートが既にインストールされているかどうかを判断する条件を入力します。
大半のソフトウェアでは、下記のレジストリの中身に記載されているDisplayVersionの値を参照することで事足りると思われます。
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall
その場合は、Reg_Sz Registry Keyを選択し、Add Rule...からルールの設定画面を開きます。
そしてレジストリのパス、キー名、比較方法、値を入力します。
Nextを選択し、次の画面に進みます。
この画面ではアップデートをインストールしてよいかどうかを判断する条件を入力します。
こちらでは下記に値があるかどうかを条件とします。
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall
その場合は、Registry Key Existsを選択し、Add Rule...からルールの設定画面を開きます。
そしてレジストリのパスを入力します。
Nextを選択し、次の画面に進みます。
この画面では何も入力せずに、Publishを選択し、次の画面に進みます。
Nextを選択し、次の画面に進みます。
パッケージの承認
Updatesから先ほど作成したパッケージを選択し、
右クリックから"Approve..."を選択し
対象のコンピューターグループに対して承認を行います。
以上で作業は終了です。お疲れ様でした。
追記
下記のソフトウェアのパッケージの設定を記載しておきます。
7-Zip
- 対象ファイル: {対象のインストーラー}
- オプション: /S
- アップデート済み判定条件: Reg_Sz Registry Key
- インストール判定条件: Registry Key Exists
Visual Studio Code
- 対象ファイル: {対象のインストーラー}
- オプション: /VERYSILENT /MERGETASKS=!runcode
アップデート済み判定条件
インストール判定条件
※システム―インストール時のみ
Google Chrome
- アップデート済み判定条件
- インストール判定条件
Mozilla Firefox
- アップデート済み判定条件
- インストール判定条件
Adobe Acrobat Reader
- 対象ファイル: AcroRdrDCUpd1801120038.msp
- オプション: /quiet /norestart
- アップデート済み判定条件: File Version
- インストール判定条件: File Version
Microsoft Office 2019
- アップデート済み判定条件
- インストール判定条件: Registry Key Exists