treedown’s Report

システム管理者に巻き起こる様々な事象を読者の貴方へ報告するブログです。会社でも家庭でも"システム"に携わるすべての方の共感を目指しています。

※https化しました。その影響でしばらくリンク切れなどがあるかもしれませんが徐々に修正していきます。 リンク切れなどのお気づきの点がございましたらコメントなどでご指摘いただけますと助かります。

OBSStudioのバージョンアップをサイレント実行するバッチ

OBS Studioというソフトを展開するよう依頼を受けたことで、バッチを作成することになったので調べたこととやったことをご報告します。
公式にサイレントオプションが見つからずいくつか試しました。

OBS Studioとは

オープンソースのライブ配信ツールらしい。OBSはOpen Broadcaster Softwareの略で、OBS StudioはWebカメラの映像やデスクトップの動作映像をキャプチャ(録画)して配信するという使い方をするらしいのですが、詳細は不明。
公式のダウンロードページ
https://obsproject.com/ja/download
使い方についてはそれほど知っていなくてもユーザ側で把握しているので、バッチファイルでサイレントインストールでの展開ができるようにするまでが担当分です。

バッチファイル化の前に

バッチファイルの作成前に調べたこと。
サイレントインストールのためにインストーラに「/?」オプションを付加して起動してみたものの、通常のインストーラが起動してきました。どうやらMSIオプション的な表示はないみたい。
試しに、サイレントを示す「/quiet」とか「/q」とか「/S」といったオプションを試してみたところ、「/S」がサイレントインストールを指示するオプションとして動作することが分かりました。

と、いうことで、「OBS-Studio-0.0.0-Full-Installer-x64.exe /S」をバッチファイルで実行することでサイレントインストールを実施できそうです。
なお、OBS Studioは動作のために「Visual C++ 2015-2022 x64 再頒布可能パッケージ」<https://aka.ms/vs/17/release/vc_redist.x64.exe>が必要となるのですが、別のソフトウェアで既に必要があったため、対象の環境にはインストール済でした。
※インストールされていない環境では、別途VC++をインストールする必要があるため、サイレントインストールオプション付きで
「VC_redist.x64.exe /install /quiet /norestart」
を事前に実行することになります。
※今回は64ビット環境ですが、32ビット環境では<https://aka.ms/vs/17/release/vc_redist.x86.exe>になります。

バッチファイルを作成した

サイレントインストールオプションが理解できたのでバッチファイル作成に取りかかりました。
実際は別ソリューションで展開するため、そのまま使っていませんが、本バッチファイルではテスト環境でc:\tempを使用して、実行を確認したところ、Windows10 64ビットで動作が確認できました。
なお、判定にはデフォルトインストール時のuninstall.exe有無を利用しています。
--------------------------------------------------------------
@echo off
REM プログラム格納先:APRGDirへ記述
rem プログラム実ファイル:ALCLDirとPRGNameに記述:デフォルトOBS-Studio-xx.x-Full-Installer-x64.exeをリネーム
set InstDir=
set APRGDir=\\FileSVR\ShareF\WORKS\OBSStudio
set PRGNamex64=setup.exe
set PRGNamex86=setupx86.exe
set PLSFold=iOBSupd
rem ファイルの存在確認
if exist "%ProgramFiles%\obs-studio\uninstall.exe" goto update_start
if exist "%ProgramFiles(x86)%\obs-studio\uninstall.exe" goto update_start
goto end
 
:update_start
if "%PROCESSOR_ARCHITECTURE%" EQU "AMD64" goto inst64
if "%PROCESSOR_ARCHITECTURE%" EQU "x86"   goto inst32
rem echo デバッグ用msg:未対応環境です
goto end
 
:inst64
set InstDir=c:\temp
SET COPYCMD=/Y
xcopy "%APRGDir%\%PRGNamex64%" "%InstDir%\%PLSFold%\" /D /I > nul
SET COPYCMD=
rem インストール済のOBSStudioパッケージに合わせて、アップデートを選択する
if exist "%ProgramFiles%\obs-studio\uninstall.exe" goto obsswin64
if exist "%ProgramFiles(x86)%\obs-studio\uninstall.exe" goto obsswin32
rem setup.exeを使ってインストールを実行
:obsswin64
"%InstDir%\%PLSFold%\%PRGNamex64%" /S > nul
rem インストール実行後の事後処理
SET COPYCMD=/Y
del "%InstDir%\%PLSFold%\%PRGNamex64%"
rmdir "%InstDir%\%PLSFold%"
SET COPYCMD=
goto end
:obsswin32
rem WoW64で32ビットアプリケーションの環境は何もせず終了
goto end
 
:inst32
rem 32ビット環境の処理は、何もせず終了します。
goto end
 
:end
set InstDir=
set APRGDir=
set PRGNamex64=
set PRGNamex86=
set PLSFold=
--------------------------------------------------------------

インストール後に必要になる知識

実際の環境で試していないけど、この後使う可能性がある知識をメモしておきます。
 
1)レジストリキー
レジストリキーは「HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\Windows\CurrentVersion\Uninstall\OBS Studio」に格納されています。
コマンドにすると、下記
reg query "HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\Windows\CurrentVersion\Uninstall\OBS Studio"

--------------------------------------------------------------
c:\>reg query "HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\Windows\CurrentVersion\Uninstall\OBS Studio"
HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\Windows\CurrentVersion\Uninstall\OBS Studio
    DisplayName    REG_SZ    OBS Studio
    UninstallString    REG_SZ    "C:\Program Files\obs-studio\uninstall.exe"
    ProductID    REG_SZ    d16d2409-3151-4331-a9b1-dfd8cf3f0d9c
    DisplayIcon    REG_SZ    C:\Program Files\obs-studio\bin\64bit\obs64.exe
    Publisher    REG_SZ    OBS Project
    HelpLink    REG_SZ    https://obsproject.com
    DisplayVersion    REG_SZ    29.1.1
--------------------------------------------------------------
バージョン情報とかアンインストール文字列もこのキーで入手可能です。アンインストーラの.exeが用意されているのをこれで知りました。

2)アンインストールをサイレント実行
64ビット環境でOBS Studioの64ビット版をサイレントアンインストールする場合、以下のコマンドで実行可能です。
"%ProgramFiles%\obs-studio\uninstall.exe" /S
DEL "%PUBLIC%\Desktop\OBS Studio.lnk"
前述のように、アンインストールは「uninstall.exe」が用意されているので、それに「/S」オプションを付加すると、サイレントアンインストールを動作させることができるようです。
作成したバッチファイルで「uninstall.exe」を判定基準にしたのは、後でアンインストールバッチを作成するときに使えそうだから、という動機もあります。