Lazy Diary @ Hatena Blog

PowerShell / Java / miscellaneous things about software development, Tips & Gochas. CC BY-SA 4.0/Apache License 2.0

「プログラムと機能」にエントリを追加するだけのMSIをWIXで作成する

ISMS準拠などを目的に端末にインストールされているソフトウェアの情報を収集するソフトウェアとして、BigFixやAssetViewといったIT資産管理システムがある。

ここで、管理対象のクライアント端末がWindowsの場合、インストーラを備えていないソフトウェアの扱いが問題になる。Windowsは歴史的にパッケージ管理システムが弱かった影響か、フリーウェアなどで「ZIPを展開して好きな場所に配置」で動かすプログラムが多い。そういったソフトウェアはWindowsリポジトリである「プログラムと機能」に登録されないため、IT資産管理システムのエージェントから自動的に把握することができない。

IT資産管理システムの出力結果をいちいち手作業で修正するのは大変だし、「ZIPを展開して好きな場所に配置」で動かすプログラムに対してひとつひとつインストーラを作成するのも難しい。そこで「プログラムと機能」にエントリを追加するだけのMSIファイルを作ることができれば、IT資産管理システムによる管理との統合が容易になるのではと考えた。

WindowsMSIファイルを作る場合、WIX*1が使用できる。チュートリアル*2の内容を参考に「ファイルのインストールはしないが、『プログラムと機能』にエントリは追加されるMSI」を作るための.wxsファイルを作ってみた。

「プログラムと機能」にエントリを追加するだけのMSI · GitHub

  • ファイルの追加もレジストリの変更も行わないMSIを作ることはできる(DirectoryタグもFeatureタグも内容を空にする)、インストーラも問題なく実行できるが、「プログラムと機能」にエントリが追加されない。
  • Mediaタグを削除しているためLightが以下のメッセージを出力するが、特に問題はない。
warning LGHT1076 : ICE71: The Media table has no entries.
  • 逆にMediaタグを生かしておくこともできるが、その場合は以下のメッセージが出力される(こっちの方が分かりやすい?)。
warning LGHT1079 : The cabinet 'Sample.cab' does not contain any files.  If this installation contains no files, this warning can likely be safely ignored.  Otherwise, please add files to the cabinet or remove it.