チュートリアル : カスタム動作を使用した、インストール時のアセンブリのプリコンパイル
更新 : 2007 年 11 月
カスタム動作を使用すると、インストール終了時にターゲット コンピュータで実行するアクションを追加できます。たとえば、このチュートリアルでは、CustomActionData プロパティに DLL のパス名を渡して、インストール時にアセンブリをネイティブ コードにプリコンパイルします。
メモ : |
---|
使用している設定またはエディションによっては、表示されるダイアログ ボックスやメニュー コマンドがヘルプに記載されている内容と異なる場合があります。設定を変更するには、[ツール] メニューの [設定のインポートとエクスポート] をクリックします。詳細については、「Visual Studio の設定」を参照してください。 |
メモ : |
---|
次の手順は、Visual Basic プロジェクトを使用しての配置プロジェクトの作成を示しています。一般的な原則は、Windows アプリケーションの配置をサポートするすべての Visual Studio 言語プロジェクトに適用できます。 |
カスタム動作クラスを作成するには
[ファイル] メニューの [新規作成] をポイントし、[プロジェクト] をクリックします。
[新しいプロジェクト] ダイアログ ボックスで、[プロジェクトの種類] ペインの [Visual Basic プロジェクト] をクリックし、[テンプレート] ペインの [クラス ライブラリ] をクリックします。[ファイル名] ボックスに「InstallClass」と入力します。
[プロジェクト] メニューの [新しい項目の追加] をクリックします。
[新しい項目の追加] ダイアログ ボックスで、[インストーラ クラス] をクリックします。[ファイル名] ボックスに「InstallClass.vb」と入力します。[追加] をクリックして、プロジェクトにクラスを追加します。
カスタム動作にコードを追加するには
ソリューション エクスプローラ (またはデザイン サーフェイス) で InstallClass.vb を右クリックし、[コードの表示] をクリックしてコード エディタを開きます。モジュールの冒頭にある Imports System.Configuration.Install の下に次のコードを追加します。
Imports System.Runtime.InteropServices Imports System.Text
InstallClass.vb の Public Class InstallClass の下に次の宣言を追加します。
Private Declare Function GetCORSystemDirectory Lib "mscoree.dll" _ (<Runtime.InteropServices.MarshalAs( _ System.Runtime.InteropServices.UnmanagedType.LPWStr)> _ ByVal Buffer As System.Text.StringBuilder, _ ByVal BufferLength As Integer, ByRef Length As Integer) As Integer
InstallClass.vb の MyBase.New の End Sub ステートメントの下に、次のプロシージャを追加して、基本クラスの Install プロシージャをオーバーライドします。
<Security.Permissions.SecurityPermission(Security.Permissions.SecurityAction.Demand)> _ Public Overrides Sub Install(ByVal savedState As _ System.Collections.IDictionary) MyBase.Install(savedState) Dim Args As String = Me.Context.Parameters.Item("Args") If Args = "" Then Throw New InstallException("No arguments specified") End If ' Gets the path to the Framework directory. Dim Path As New System.Text.StringBuilder(1024) Dim Size As Integer GetCORSystemDirectory(Path, Path.Capacity, Size) Dim P As Process ' Quotes the arguments, in case they have a space in them. Dim Si As New ProcessStartInfo(Path.ToString() & "ngen.exe", Chr(34) _ & Args & Chr(34)) Si.WindowStyle = ProcessWindowStyle.Hidden Try P = Process.Start(Si) P.WaitForExit() Catch e As Exception Throw New InstallException(e.Message) End Try End Sub
配置プロジェクトを追加するには
[ファイル] メニューの [追加] をポイントし、[新しいプロジェクト] をクリックします。
[新しいプロジェクトの追加] ダイアログ ボックスで、プロジェクトの種類ペインの [セットアップ/配置プロジェクト] をクリックし、テンプレート ペインの [セットアップ プロジェクト] をクリックします。[プロジェクト名] ボックスに「InstallClass Installer」と入力します。
[プロパティ] ウィンドウで ProductName プロパティを選択し、「InstallClass」と入力します。
ファイル システム エディタで、[アプリケーション フォルダ] を選択します。[操作] メニューの [追加] をポイントし、[プロジェクト出力] をクリックします。
[プロジェクト出力グループの追加] ダイアログ ボックスで、InstallClass プロジェクトのプライマリ出力を選択し、[OK] をクリックしてダイアログ ボックスを閉じます。
カスタム動作を追加するには
ソリューション エクスプローラで InstallClass Installer プロジェクトを選択します。[表示] メニューの [エディタ] をポイントし、[カスタム動作] をクリックします。
カスタム動作エディタで、[カスタム動作] ノードを選択します。[操作] メニューの [カスタム動作の追加] をクリックします。
[プロジェクトから項目を選択] ダイアログ ボックスで、[アプリケーション フォルダ] をダブルクリックし、[InstallClass (アクティブ) のプライマリ出力] を選択します。[OK] をクリックして、4 つのカスタム動作ノードのすべてに InstallClass カスタム動作を追加します。
[インストール] ノードの下にある [InstallClass (アクティブ) のプライマリ出力] ノードを選択します。
[プロパティ] ウィンドウの CustomActionData プロパティを選択し、「/Args="[TARGETDIR]InstallClass.dll"」と入力します。二重引用符も含めて入力してください。
[InstallClass (アクティブ) のプライマリ出力] ノードにある他の 3 つの各インスタンスに対して同じ手順を繰り返します。
[ビルド] メニューの [InstallClass Installer のビルド] をクリックします。
開発用コンピュータにインストールするには
ソリューション エクスプローラで InstallClass Installer プロジェクトを選択します。[プロジェクト] メニューの [インストール] をクリックします。
メモ : インストーラを実行するには、コンピュータ上でインストールを実行する権限が必要です。
ほかのコンピュータに配置するには
Windows エクスプローラで、プロジェクト ディレクトリに移動し、ビルドされたインストーラを探します。既定のパスは \Documents and Settings\yourloginname\My Documents\Visual Studio 2005\Projects\Solution Folder Name\My Notepad Installer\project configuration\My Notepad Installer.msi です。既定の project configuration は、Debug または Release です。
InstallClass Installer.msi ファイル、Setup.exe ファイル、およびディレクトリ内の他のファイルとサブディレクトリすべてを別のコンピュータにコピーします。
メモ : ネットワークに接続していないコンピュータにインストールするには、ファイルを CD-ROM などの従来のメディアにコピーしてください。
ターゲット コンピュータで、Setup.exe ファイルをダブルクリックしてインストーラを実行します。
メモ : インストーラを実行するには、コンピュータ上でインストールを実行する権限が必要です。
インストールをテストするには
- アセンブリ フォルダ %windir%\assembly (C:\Windows\assembly など) に移動し、InstallClass を見つけます。[種類] 列で、種類が [ネイティブ イメージ] とマークされていることを確認します。
アプリケーションをアンインストールするには
Windows の [コントロール パネル] で [アプリケーションの追加と削除] をダブルクリックします。
[アプリケーションの追加と削除] ダイアログ ボックスで [InstallClass Installer] をクリックし、[削除] をクリックします。次に、[OK] をクリックしてダイアログ ボックスを閉じます。
ヒント : 開発用コンピュータからアンインストールするには、[プロジェクト] メニューの [アンインストール] をクリックします。