0元号が平成から令和になり、会社で使用しているとあるアプリに、令和対応アップデータが公開されていました。このアップデータをインストールしないと令和表示ができないので、インストールしなければいけないのですが...何十台ものPCに手動でアップデートするのは正直しんどい。そこで、以前組んだ「ネットワーク越しにスタートアップファイルを入れ替える」処理を応用して、各クライアントPCの起動時にインストール処理を動かして、各自でインストールしてもらう方法にしてみました。ちなみに、ネットワーク越しにスタートアップファイルを入れ替える処理は以下の記事で紹介しています。ネットワーク越しにスタートアップファイルを入れ替える以前、HomeエディションのWindowsで、ログオンスクリプトの代用となるような処理をまとめて記事にしました。10:06スポンサーリンクまずは大前提ネットワーク越しにスタートアップファイルを入れ替える処理のときと同様、ログオンスクリプト代わりのVBSが、既に各クライアントPCのスタートアップに置いてあり、サーバ上のバッチファイル「logon_scripts.bat」を実行できていることが前提です。各クライアントPCが、起動時にサーバ上のバッチファイルを実行できる状態に無ければ、「VBSをログオンスクリプトの代用に」の記事のように設定・設置してください。17:47アップデータを実行するVBSアップデータを各クライアントPCにコピーすれば、PC起動時に自動でアップデータが起動しますが、この方法だとPCを起動するたびに毎回インストールが始まってしまいますので、却下。全てのPCにアプリがインストールされている訳ではないので、アプリがインストールされていたらアップデータを実行する、という処理が必要。インストールされているか確認ということで、まずはレジストリを参照して、アプリがインストールされているか確認。)インストーラからインストールしたアプリの実行ファイルは、ファイル名だけで実行されるように、レジストリに登録されるようです。それを応用した確認方法です。アプリがインストールされていれば、strExePathにインストール先フルパスが返ってきます。インストールされていなければ空なので、IsEmpty()で判断できます。アプリのバージョンを取得アプリの製作者がきちんと実行ファイルのバージョン情報を更新してくれていれば、実行ファイルのバージョン情報を取得して最新かどうか判別できます。)最新版のバージョンとstrVersionの値を文字列比較して、違っていたらインストーラを実行させればいいですね。残念なことに、今回アップデートしようとしたアプリは「令和対応」させるだけのアップデートなので、実行ファイルのバージョンが更新されていなかったため、この方法は使えず。仕方がないので、実行ファイルの更新日時で比較することにしました。1台のPCに手動でアップデートをインストールし、実行ファイル一式の更新日時を確認します。新旧実行ファイルで更新日時が違っていたので、決め打ちで判断できました。"すでに更新されています。Ifアップデート前の実行ファイルが2018年のものだったので、先頭4桁(西暦部分)だけで判断しています。アプリをサーバからコピーし実行ここまでくれば、あとはアップデータをコピー(ダウンロード)して実行するだけ。コピー先は、ローカルPCのテンポラリフォルダにしています。)CopyFile()でサーバからローカルにアップデータをコピーし、Run()でアップデータを実行します。Run()のパラメータは、1番目が実行ファイルフルパス、2番目がウィンドウスタイル(1はアクティブ表示)、3番目がアップデータの終了を待つ指示(Falseだと待たない)。処理的にはこれでアップデータが一度だけ(もし途中で失敗していたら成功するまで)実行されます。処理の一連の流れということで、エラー処理も含めた一連の流れはこんな感じ。"[アプリ名]のアップデートを行います。NothingWScript.Quit(-1)今回インストールするアップデータは、途中で処理を中断しても正常終了として戻ってきてしまうため、正常に終了した場合でもVBS側からは異常終了としています。することで、アップデータをインストールしないで終了した場合は、再度インストール処理を。インストール処理が完了していれば、ファイルの更新日時が変わっているので正常終了する、という動きになるからです。このVBSの呼び元で、正常終了で戻ってきたらインストール完了とするフラグを立てる、と。本来はもっと柔軟に対応できるような作りをすべきですが、今回は割と時間がない中で処理を作り、テストし、実行する必要があったので、決め打ちしているところがだいぶ多いです。こんな処理でも何かの参考になれば、ということで。起動時にネットワークドライブを設定するローカルにVBSを置いてスタートアップで処理するだけなら簡単。やりたいことは、社内の全PCを一元管理して、ネットワークドライブの設定も手元でできるように...記事を読むDynabookで無線LANがつながらない知人のPCが壊れてしまい、新たに買ったのが東○のDynab○○k(←伏せる意味がない!そしてタイトル!(笑))。購入いい加減、ピク○ラの地デジカード(というか、付属のアプリ)にはウンザリだったので、新しい地デジキャプチャカードを購入しました。Signal状態)ことがあるよう...記事を読むステップ数をカウントしてくれるツール開発をしていると、進捗報告と一緒に提出するのがステップ数。Sync)が起動できない!新PCになり、ようやくOSがWindows7からWindows10になりました。Win7の方が見た目がイイナ...。普段あまりExcelを使わないので、どうしても忘れてしまう条件式。プログラミングが終わってテストなどをするときに、Excelで試験数や障害数などを管理しているの...記事を読むVirtualBoxをインストールし、WinXP/2000/98SEを入れるVirtualBoxを使えば、今のWindowsの中に古いWindows(XPや2000、98SEなど)を入れて動かすことができます。古くなればなるほど、一筋縄ではいかないこともありますので、その辺の苦労話などをまとめました。コメントをキャンセルメールアドレスが公開されることはありません。*サイト-ヴェル-長野県在住の元PG/SE。IT業界を卒業(という名の挫折)し、現在は地元建築会社でシステム管理・Web企画広報をしています。備忘録っぽいメモサイトとして始めたブログでしたが、開発系のメモが多くなってきたため、今は開発系情報のお役立ちサイト的なブログを目指して、細々と記事の追加や既存記事の更新を進めています。適当に書き連ねるネタ帳のようなもの.。