バッチからダイアログボックスを表示させよう
お久しぶりです❗️
最近花粉症が辛いミヤチです❗️❗️
ティッシュの消費が激しいです…うぅ…。
さて、ランカースでは簡単な処理はまとめてbatファイルに書いて、複数の処理をまとめたりしています。
こうすることでコンバート時などに様々なメリットを得ることが出来ます。
例えばアセットのコンバートですと…
- デザイナ、プランナとしては用意された同ディレクトリ内のbatファイルを実行するだけで、アセットをコンバートし実機確認に回すことが出来る
- プログラマは手軽にコンバート時のパイプライン処理の記述ができる
- コンバート用のbatファイル名を統一することによりJenkinsで更新があったディレクトリの自動コンバートが可能になる
等のメリットがあります。
基本的にはbatファイルはプログラマが用意しデザイナ、プランナさんに提供するスタイルを取っていますが「コマンドプロンプトの画面ではエラーが分かりにくい❗️」という意見が上がるようになりました。
というわけで、エラーを出す際にバッチファイルからダイアログボックスを出す事を検討することに。
とは言え、バッチファイルから直接Windowsのダイアログボックス出す方法は無いので、vbsファイルにmsgboxコマンドを記述し、それを実行する方法を取ったのですが…
Windows10からvbsを実行したことがない環境だとvbsを実行するアプリケーションの選択画面が出るようになっていました…。
もちろん一度選択してしまえば解決しますが今回はアプリケーションの選択画面が出ないほうが望ましいということ、ダイアログの種類は問わない、ということでしたので再度検証した結果、msgコマンドをlocalhostに投げればいいのでは?ということになりました。
コマンド的には以下になります。
msg * /server:localhost "Error!!"
元はネットワーク内のPCにメッセージを送るコマンドですが、これでひとまず要望内容は叶いました!
めでたしめでたし👍
…とはなりませんでした。
ある日Windows上で動作しているJenkinsのメンテナンスをしていた時、該当のエラーダイアログがデスクトップに出っぱなしになっていました。
最初は「しまったなー」くらいの軽い気持ちだったのですが…
…消しても消してもポップします。
そう、msgコマンドは複数同時にダイアログが出ない代わりにキューにメッセージが積まれるため、エラーが多発した結果、いくら閉じても閉じれないダイアログと化したのです…。
作業者環境であれば各ユーザーがダイアログが出た時に閉じてしまっていたので気づかなかったため発見が遅れた事件でした。
逆に言えば作業者環境では運用に問題ないレベルということでもあり、Jenkins環境のみダイアログを出さないようにすればいい!とも言えます。
それであれば、バッチ内でも環境変数の有無で判断つきますので以下で対応可能です!
if "%JENKINS_HOME%" == "" (
msg * /server:localhost "Error!!"
)
というわけで、これにて完了になります。
それでは❗️✋