@ledsun blog

無味の味は佳境に入らざればすなわち知れず

msiを使う利点

serverfault.com

2011年頃、10年前の古い文章ですが、大変長くて情熱的なので良いなーと思いました。

システム管理者にとっての利点という視点があるのが興味深いです。 なるほど、企業で使っているPCに一斉にアプリケーションをインストールするのにCLIで起動出来てオプションパラメータが渡せるのは魅力的に思えます。

MSI以前のインストーラーの辛み

MSIが登場する以前は、アプリケーション開発者がそれぞれの流儀でインストーラーを作成していました。 標準化されてないが故の辛みがあったようです。 インストーラー開発者視点で、知らない時代の情報なので興味深いです。

  1. 共有ファイルを上書きする
  2. アンインストールできない
  3. GUIなしでのインストールが出来ない
  4. インストールしたファイルの記録が残らない。インストール後に変更されたかどうか確認できない
  5. インストーラーのコマンドラインパラメータがバラバラすぎ
  6. ↑のおかげで、インストーラーにオプションをつけてカスタムインストールを自動化するのがほぼ不可能
  7. UACに対応していない
  8. インストール失敗時にエラーコードを返さない(ので、自動化できない)
  9. インストーラーからファイルを抽出できない
  10. インストーラーがログを残さない
  11. インストール失敗時のロールバックがされない
  12. 共有コンポーネントをインストールする業界標準がない

なるほど、MSIを使うだけでこれがほとんどクリアできるのはすげー便利ですね。 アンインストールは作り方によっては失敗します。

MSIの強み

  1. アンインストールが可能
  2. ログが標準化されている
  3. msiファイルのフォーマットが標準化されているので、インストールを実行しなくても何が起きるか検査可能(ただしカスタムアクションはコンパイルされているので検査できない)
  4. インストールのカスタマイズ方法が標準化されている
  5. ActiveDirectoryのグループポリシーでインストール可能。ユーザーに管理者権限を渡さなくて良い
  6. GUIなしでインストール/アンインストールが可能
  7. インストール失敗時にロールバックできる
  8. ???
  9. アップデートインストールも可能(ただしややこしい)
  10. msiからファイルを抽出できる
  11. msiexeに色々パラメータが渡せる(4との違いはわかりません)
  12. ???
  13. ???

上手く行ってない点もある

  • パッチ(バージョンアップ)
  • GUIがシンプルすぎる
  • レジリエンス(わかりません)
  • 難しい
  • 遅い(といっても今は十分速いです。)

その他

まだ半分以下で全文はモリモリ書いてあります。 個人的には「カスタムアクション、とくに独自実装のカスタムアクションを絶対に使わせたくない」気持ちに興味を持ちました。