[[Open棟梁Project>http://opentouryo.osscons.jp/]] - [[マイクロソフト系技術情報 Wiki>http://techinfoofmicrosofttech.osscons.jp/]] * 目次 [#ua483bc9] #contents *概要 [#h3f5d2e2] Windowsでソフトウェアのインストール・メンテナンス・削除を行うエンジン **特徴 [#h79c2fcd] ***GUIフレームワーク [#gb28cdfd] ***デプロイメント機能の強化 [#p784338c] -[[アドバタイズ>#da03644f]] -[[オンデマンド>#t83f413a]] -[[管理インストール>#b71d7d5a]] -[[UAC>#v82b39d1]] -アプリケーションをネットワーク共有から直接実行できる(ローカルへのコピーは不要)。 ***アンインストール [#l6bfccc0] アンインストールシーケンスの自動生成による[[ロールバック>#i2144b9b]] ***テスト・デバッグ [#cb1b5d29] -[[ICE による検証>#wafa9322]] -[[詳細なロギング機能>#xf0934a8]] ***コンパーチブル [#h43d6af8] 他のインストーラフレームワークと置き換え可能 -[[InstallShield>http://ja.wikipedia.org/wiki/InstallShield]] -[[NSIS (Nullsoft Scriptable Install System)>http://ja.wikipedia.org/wiki/Nullsoft_Scriptable_Install_System]] -[[WISE (Wise Installation Studio)>http://en.wikipedia.org/wiki/Wise_Solutions,_Inc.]]~ (後のバージョンは Windows Installerベースになっている) *ファイル [#l81b9cca] **MSIファイル [#j02f5c75] ***概要 [#y7eb50b7] -デフォルトのファイル拡張子が"MSI"であることからMSIファイルと呼ばれる。 -MSIファイルは、セットアップ・プロジェクトやインストール・パッケージとも呼ばれる。 -MSIファイルには、 --インストール処理に関する情報と --インストールされるファイルとが >パッケージングされている。 ***種類 [#ge93c68e] Visual Studio のセットアップ プロジェクトには、以下の2種類がある。 -セットアップ プロジェクト --Windows ベースのアプリケーションのインストーラを作成する。 --ターゲット コンピュータの [Program Files] ディレクトリにファイルをインストール -Web セットアップ プロジェクト --Web アプリケーションのインストーラを作成する。 --Web サーバー上の仮想ルート ディレクトリにファイルをインストール ***特徴 [#uedfd7b5] -内部的には数十個のRDBのTableからなるOLE構造化ストレージファイルである。 **MSMファイル [#aa115cf5] ***概要 [#e4998df2] -MSIファイルは、マージ・モジュールとも呼ばれる。 -DLLなどの再利用できるコンポーネントをパッケージ化できる。 -マージ モジュールは単独でインストールできず、MSIファイルのコンテキストの中で使用する。 ***用途 [#sb05ddc5] -特定のコンポーネントの依存情報をすべて取り込むことができるため、正しいバージョンをインストールできる。 -バージョン管理の問題を回避するために、複数のアプリケーションで共有されるコンポーネントやファイルについては、必ずマージ モジュールを使用する。 ***注意 [#yfc9d839] -一度配布したマージ モジュールは修正しない。 -コンポーネントのバージョン毎に新しいマージ モジュールを作成する。 **CABファイル [#g8c03526] ***用途 [#na88bc9d] Web サーバーから Web ブラウザにダウンロードできる ActiveX コンポーネントをパッケージ化する。 ***機能 [#ic0fd728] CABファイルでは、 -圧縮レベルの指定 -Authenticode 署名機能の実装 -表示名とバージョン情報の設定 -Web における依存ファイルの場所の指定 などを行うことができる。 *MSIファイルの論理構造 [#j075bbb4] -1つの「MSIパッケージ」で、複数の「プロダクト」をインストールが可能で、 -1つの「プロダクト」は、複数の「コンポーネント」からなる。 また、 -1つの「機能」は、複数の「サブ機能」からなり、 -1つの「サブ機能」は、複数の「コンポーネント」からなる。 **プロダクト [#cf03cfea] -単独で動作する一つのプログラム -GUIDで識別される。 **コンポーネント [#ff71d733] -プロダクトを構成する最小単位 -GUIDで識別される。 ***例 [#h8394277] -ファイル --EXE --DLL --リソース -ディレクトリ -COMコンポーネント -レジストリキー -ショートカット -およびその他のデータ **キーパス [#s712fc4d] パッケージの製作者がそのパッケージに必須であると指定したファイル等のこと。 キーパスには -ファイル -レジストリキー -ODBCデータソース が指定できる。 -キーパスにはファイルを指定するのが一般的であるため、キーファイルとも呼ばれる。 -コンポーネントが持つことのできるキーパスは1つだけで、~ 複数のコンポーネントが同じキーパスを持つことはできない。 -コンポーネントのキーパスを明示しなかった場合は、~ コンポーネントのインストール先のディレクトリがキーパスとなる。 **機能 [#kbb593ba] -一つの「機能 (feature)」は複数の「コンポーネント」からなる。 -機能はコンポーネントを階層的にまとめた構造である。 --機能の中に機能を入れ子にできる。 --他の機能に含まれる機能を「サブ機能(subfeature)」と呼ぶ。 -ほとんどソフトウェアでは、パッケージは単一の機能からなる。 -大規模なインストールプログラムでは通常、 --実行時にカスタムセットアップダイアログが表示され、 --ユーザがインストール・アンインストールする機能を選択できるようにしている。 *セットアップ処理 [#ia3f85f2] **UIシーケンス [#zf770ba2] -インストール先のシステムの状態を取得し、 -インストールウィザードを表示し、 -インストールのオプションをユーザーに選択させる。 ※ UIシーケンス中では、システムに対する変更は一切行われない。 **実行シーケンス [#fcfb06d2] 実行フェーズではシステムに変更が加えられる一方、ユーザインタフェースは一切表示されない。 -即時実行モード >このステップでは、Windows Installerは、ユーザもしくはアプリケーションからプロダクトのインストール・アンインストールに必要な命令を受け取る。リクエストが発行されるとアクション (action) のシーケンス (sequence) が実行され、データベース内の情報から、遅延実行モードで行うべき処理を記述したスクリプトが内部的に構築される。 -遅延実行モード >このステップでは、即時実行モードで構築されたスクリプトが実行される。スクリプトはWindows Installerサービスが動作しているアカウント(LocalSystemアカウント)で実行される。非特権ユーザーがインストールを行う場合は特権ユーザへの昇格が必要になる。 **ロールバック [#i2144b9b] -アンインストールシーケンスの自動生成によりロールバックが可能。 --インストールが失敗した場合(インストール先コンピュータに必要なバージョンのオペレーティング システムが存在していない場合など)、インストールは自動生成されたアンインストールシーケンスによってロールバックされ、コンピュータはインストール前の状態に戻る。 --パッケージの作者がシステムに変更を加えるカスタムアクションを作成する場合は、対応するロールバックアクションも作成する必要がある。 --このメカニズムによって、アンインストールが失敗した場合(失敗する場合)のリカバリのために再インストールが必要になる。 **自動修復機能 [#gc080b6d] -[[キーパス>#s712fc4d]]に指定されたファイルやレジストリキーが存在するかチェックする。 -チェックの結果とMSIパッケージの情報との間に不整合があった場合、関連する機能の再インストールが行われる。 *その他の機能 [#rf01e565] **アドバタイズ [#da03644f] ***アドバタイズとは [#s7c532db] 製品をアドバタイズすると、 -ユーザーからは製品がインストールされたように見えるが、 -実際のインストールは製品が初めて起動されるときに実行される。 ***アドバタイズする方法 [#q23b45d9] -グループポリシー -またはその他のデプロイメント機構を使用するか、 -msiexec.exeを下記オプション付きで実行する。 --/jm(すべてのユーザに対してアドバタイズ) --/ju(現在のユーザに対してアドバタイズ) **オンデマンド [#t83f413a] オンデマンドでのインストールに指定された機能は~ ユーザーが使用しようとした時点で初めてインストールされる。 **管理インストール [#b71d7d5a] -管理インストールでは非圧縮の状態の製品のイメージが作成される。 -主にアプリケーションをネットワークドライブからインストールまたは実行する際に用いられる。 -Officeをネットワークドライブからインストールする際に「管理インストール」を使用している。 --管理者用インストールポイントの作成~ https://msdn.microsoft.com/ja-jp/library/cc389908.aspx?f=255&MSPPError=-2147217396 -管理インストールを行うには、msiexec.exeを/aオプション付きで実行する。 **UAC [#v82b39d1] -Windows Vistaに同梱されているWindows Installer 4.0には、UACと連携するための機能が盛り込まれている。 -MSIパッケージを管理者権限が不要であるとマークすれば、ユーザは管理者資格情報のプロンプトを表示せずにパッケージをインストールできる。 *ICE による検証 [#wafa9322] MSIデータベースの潜在的な問題を検出する -マイクロソフトは、Internal Consistency Evaluators (ICE) を提供している。 -InstallShieldでは、スイート製品にInstallShield ICEを同梱提供している。 *診断用ロギング機能 [#xf0934a8] 強力な診断用ツールとして詳細なロギング機能をサポートしている。 -コマンドライン~ /Lオプションを指定するとロギングが有効になる。 -レジストリ~ レジストリに次の値を設定すると詳細なロギングが有効になる。 --キー:HKEY_LOCAL_MACHINE\Software\Policies\Microsoft\Windows\Installer --名前:Logging --種類:REG_SZ --データ:voicewarmup *Orcaデータベース・エディタ [#v6f1222c] Windows インストーラ パッケージ (.msi) ファイルを直接編集するツール。 -最新版Orcaの入手~ http://uiuicy.cs.land.to/msx2cab_orca.html -Orca データベース エディタを使用して Windows インストーラ ファイルを編集する方法~ https://support.microsoft.com/kb/255905/ja?wa=wsignin1.0 *参考 [#q02ed9b3] -Microsoft Windows Installer - Wikipedia~ http://ja.wikipedia.org/wiki/Microsoft_Windows_Installer -MSDN ライブラリ > 開発ツールと言語ドキュメント~ Visual Studio 2008 > Visual Studio > Visual Studio でのアプリケーション開発~ アプリケーションとコンポーネントの配置 > Windows インストーラ配置~ https://msdn.microsoft.com/ja-jp/library/2kt85ked.aspx --Windows インストーラ配置の概要 ---配布可能なメディアによる配置 ---Web Setup プロジェクトの配置 ---配置の代替手段 ---セットアップ/配置プロジェクト ---セットアップ プロジェクト ---Cab ファイル プロジェクト ---マージ モジュール プロジェクト --Windows インストーラでの配置の概念 ---Windows Vista の Windows インストーラ配置 ---Microsoft Windows インストーラの技術的な背景情報 ---マージ モジュールの概要 ---配置の必要条件 (Visual Studio) ---インストーラとマージ モジュールの使い分け ---再ターゲット可能なマージ モジュール ---ファイル、フォルダ、および配置 ---配置と関連付け ---配置と Authenticode 署名 ---配置と依存関係 ---配置とローカリゼーション ---配置とレジストリ ---配置とランタイム ユーザー インターフェイス ---配置とグローバル アセンブリ キャッシュ ---カスタム動作 ---管理用インストール ---条件付き配置 ---配置の条件 ---配置のダイアログ ボックス ---インストール ダイアログ ボックスの制限事項 --Windows インストーラ配置のタスク ---方法 : Windows インストーラ配置で必須コンポーネントをインストールする ---方法 : 配置プロジェクトを作成または追加する ---方法 : セットアップ プロジェクトを作成または登録する ---方法 : マージ モジュール プロジェクトの作成または登録を行う ---方法 : Cab プロジェクトを作成または登録する ---方法 : 配置プロジェクトのプロパティを設定する ---方法 : 配置プロジェクトに項目を追加する ---方法 : 配置プロジェクトにマージ モジュールを登録する ---方法 : アイコンを追加および削除する ---方法 : 配置プロジェクトから項目を除外する ---方法 : オペレーティング システムのバージョンに基づく条件付きインストールを設定する ---方法 : ユーザーの選択に基づく条件付きインストールを設定する ---方法 : 64 ビットプラットフォーム用の Windows インストーラを作成する ---Windows インストーラ配置のトラブルシューティング ---配置で使用するエディタ --Windows インストーラでの配置に関するチュートリアル ---チュートリアル : Windows ベースのアプリケーションの配置 ---チュートリアル : マージ モジュールを使用した共有コンポーネントのインストール ---チュートリアル : カスタム動作の作成 ---チュートリアル : カスタム動作を使用した、インストール時のメッセージの表示 ---チュートリアル : カスタム動作を使用した、インストール時のアセンブリのプリコンパイル ---チュートリアル : カスタム動作を使用して、インストール時にデータベースを作成する ---チュートリアル : インストール時にアプリケーションを別の Web サービスにリダイレクトする --Windows インストーラでの配置のユーザー インターフェイス要素 -Microsoft Windows インストーラ ツール~ Msiexec.exe のコマンドライン オプション~ https://support.microsoft.com/kb/314881/ja -Windows Installer & InstallShield はまり道 - Lazy Diary @ はてな~ http://d.hatena.ne.jp/satob/20080225/p2