Open棟梁Project - マイクロソフト系技術情報 Wiki
目次 †
概要 †
Windowsでソフトウェアのインストール・メンテナンス・削除を行うエンジン
特徴 †
GUIフレームワーク †
デプロイメント機能の強化 †
アンインストール †
アンインストールシーケンスの自動生成によるロールバック
テスト・デバッグ †
コンパーチブル †
他のインストーラフレームワークと置き換え可能
ファイル †
MSIファイル †
概要 †
- デフォルトのファイル拡張子が"MSI"であることからMSIファイルと呼ばれる。
- MSIファイルは、セットアップ・プロジェクトやインストール・パッケージとも呼ばれる。
- MSIファイルには、
- インストール処理に関する情報と
- インストールされるファイルとが
パッケージングされている。
種類 †
Visual Studio のセットアップ プロジェクトには、以下の2種類がある。
- セットアップ プロジェクト
- Windows ベースのアプリケーションのインストーラを作成する。
- ターゲット コンピュータの [Program Files] ディレクトリにファイルをインストール
- Web セットアップ プロジェクト
- Web アプリケーションのインストーラを作成する。
- Web サーバー上の仮想ルート ディレクトリにファイルをインストール
特徴 †
- 内部的には数十個のRDBのTableからなるOLE構造化ストレージファイルである。
MSMファイル †
概要 †
- MSIファイルは、マージ・モジュールとも呼ばれる。
- DLLなどの再利用できるコンポーネントをパッケージ化できる。
- マージ モジュールは単独でインストールできず、MSIファイルのコンテキストの中で使用する。
用途 †
- 特定のコンポーネントの依存情報をすべて取り込むことができるため、正しいバージョンをインストールできる。
- バージョン管理の問題を回避するために、複数のアプリケーションで共有されるコンポーネントやファイルについては、必ずマージ モジュールを使用する。
注意 †
- 一度配布したマージ モジュールは修正しない。
- コンポーネントのバージョン毎に新しいマージ モジュールを作成する。
CABファイル †
用途 †
Web サーバーから Web ブラウザにダウンロードできる ActiveX コンポーネントをパッケージ化する。
機能 †
CABファイルでは、
- 圧縮レベルの指定
- Authenticode 署名機能の実装
- 表示名とバージョン情報の設定
- Web における依存ファイルの場所の指定
などを行うことができる。
MSIファイルの論理構造 †
- 1つの「MSIパッケージ」で、複数の「プロダクト」をインストールが可能で、
- 1つの「プロダクト」は、複数の「コンポーネント」からなり、
- 1つの「機能」は、複数の「サブ機能」からなり、
- 1つの「サブ機能」は、複数の「コンポーネント」からなる。
プロダクト †
- 単独で動作する一つのプログラム
- GUIDで識別される。
コンポーネント †
- プロダクトを構成する最小単位
- GUIDで識別される。
- ディレクトリ
- COMコンポーネント
- レジストリキー
- ショートカット
- およびその他のデータ
キーパス †
パッケージの製作者がそのパッケージに必須であると指定したファイル等のこと。
キーパスには
が指定できる。
- キーパスにはファイルを指定するのが一般的であるため、キーファイルとも呼ばれる。
- コンポーネントが持つことのできるキーパスは1つだけで、
複数のコンポーネントが同じキーパスを持つことはできない。
- コンポーネントのキーパスを明示しなかった場合は、
コンポーネントのインストール先のディレクトリがキーパスとなる。
機能 †
- 一つの「機能 (feature)」は複数の「コンポーネント」からなる。
- 機能はコンポーネントを階層的にまとめた構造である。
- 機能の中に機能を入れ子にできる。
- 他の機能に含まれる機能を「サブ機能(subfeature)」と呼ぶ。
- ほとんどソフトウェアでは、パッケージは単一の機能からなる。
- 大規模なインストールプログラムでは通常、
- 実行時にカスタムセットアップダイアログが表示され、
- ユーザがインストール・アンインストールする機能を選択できるようにしている。
セットアップ処理 †
UIシーケンス †
- インストール先のシステムの状態を取得し、
- インストールウィザードを表示し、
- インストールのオプションをユーザーに選択させる。
※ UIシーケンス中では、システムに対する変更は一切行われない。
実行シーケンス †
実行フェーズではシステムに変更が加えられる一方、ユーザインタフェースは一切表示されない。
このステップでは、Windows Installerは、ユーザもしくはアプリケーションからプロダクトのインストール・アンインストールに必要な命令を受け取る。リクエストが発行されるとアクション (action) のシーケンス (sequence) が実行され、データベース内の情報から、遅延実行モードで行うべき処理を記述したスクリプトが内部的に構築される。
このステップでは、即時実行モードで構築されたスクリプトが実行される。スクリプトはWindows Installerサービスが動作しているアカウント(LocalSystem?アカウント)で実行される。非特権ユーザーがインストールを行う場合は特権ユーザへの昇格が必要になる。
ロールバック †
- アンインストールシーケンスの自動生成によりロールバックが可能。
- インストールが失敗した場合(インストール先コンピュータに必要なバージョンのオペレーティング システムが存在していない場合など)、
インストールは自動生成されたアンインストールシーケンスによってロールバックされ、コンピュータはインストール前の状態に戻る。
- パッケージの作者がシステムに変更を加えるカスタムアクションを作成する場合は、対応するロールバックアクションも作成する必要がある。
- このメカニズムによって、アンインストールが失敗した場合(失敗する場合)のリカバリのために再インストールが必要になる。
自動修復機能 †
- キーパスに指定されたファイルやレジストリキーが存在するかチェックする。
- チェックの結果とMSIパッケージの情報との間に不整合があった場合、関連する機能の再インストールが行われる。
その他の機能 †
アドバタイズ †
アドバタイズとは †
製品をアドバタイズすると、
- ユーザーからは製品がインストールされたように見えるが、
- 実際のインストールは製品が初めて起動されるときに実行される。
アドバタイズする方法 †
- グループポリシー
- またはその他のデプロイメント機構を使用するか、
- msiexec.exeを下記オプション付きで実行する。
- /jm(すべてのユーザに対してアドバタイズ)
- /ju(現在のユーザに対してアドバタイズ)
オンデマンド †
オンデマンドでのインストールに指定された機能は
ユーザーが使用しようとした時点で初めてインストールされる。
管理インストール †
- 管理インストールでは非圧縮の状態の製品のイメージが作成される。
- 主にアプリケーションをネットワークドライブからインストールまたは実行する際に用いられる。
- Officeをネットワークドライブからインストールする際に「管理インストール」を使用している。
- 管理インストールを行うには、msiexec.exeを/aオプション付きで実行する。
UAC †
- Windows Vistaに同梱されているWindows Installer 4.0には、UACと連携するための機能が盛り込まれている。
- MSIパッケージを管理者権限が不要であるとマークすれば、ユーザは管理者資格情報のプロンプトを表示せずにパッケージをインストールできる。
ICE による検証 †
MSIデータベースの潜在的な問題を検出する
- マイクロソフトは、Internal Consistency Evaluators (ICE) を提供している。
- InstallShield?では、スイート製品にInstallShield? ICEを同梱提供している。
診断用ロギング機能 †
強力な診断用ツールとして詳細なロギング機能をサポートしている。
- コマンドライン
/Lオプションを指定するとロギングが有効になる。
- レジストリ
レジストリに次の値を設定すると詳細なロギングが有効になる。
- キー:HKEY_LOCAL_MACHINE\Software\Policies\Microsoft\Windows\Installer
- 名前:Logging
- 種類:REG_SZ
- データ:voicewarmup
Orcaデータベース・エディタ †
Windows インストーラ パッケージ (.msi) ファイルを直接編集するツール。
参考 †
- MSDN ライブラリ > 開発ツールと言語ドキュメント
Visual Studio 2008 > Visual Studio > Visual Studio でのアプリケーション開発
アプリケーションとコンポーネントの配置 > Windows インストーラ配置 > Windows インストーラ配置の概要
https://msdn.microsoft.com/ja-jp/library/ha7h54s4(v=vs.90).aspx
- 配布可能なメディアによる配置
- Web Setup プロジェクトの配置
- 配置の代替手段
- セットアップ/配置プロジェクト
- セットアップ プロジェクト
- Cab ファイル プロジェクト
- マージ モジュール プロジェクト