DoboWiki
Top
> .NETプログラミング研究/57 をテンプレートにして作成
.NETプログラミング研究/57 をテンプレートにして作成
開始行:
#title(.NETプログラミング研究 第57号)
#navi(.NETプログラミング研究)
#contents
*.NETプログラミング研究 第57号 [#u63ee12a]
**.NET Tips [#s5f5664f]
**デプロイメントプロジェクトのカスタム動作の使い方 [#m5dd...
#column(注意){{
この記事の最新版は「[[カスタム動作エディタの使い方>https:...
}}
デプロイメントプロジェクトのカスタム動作エディタを使って...
***簡単な例 [#k1c56a28]
早速ですが、まずはカスタムアクションがどのようなものか、...
はじめにカスタムアクションで使用するスクリプトを作成しま...
#code(vbscript){{
MsgBox "こんにちは"
}}
まずは、この"action.vbs"をデプロイメントプロジェクトに追...
次に「カスタム動作エディタ」を開き、スクリプトを追加しま...
カスタム動作エディタには4つのノードがありますが、これらの...
これでカスタムアクションが追加されました。早速ビルドして...
作成したMSIファイルを実行すると、「(アプリケーション名)...
***アプリケーションフォルダにスクリプトを配置しない [#w71...
上記の例では、スクリプトファイルがアプリケーションフォル...
ExcludeプロパティがFalseの場合、MSIファイルのCustomAction...
[[Custom Action Type 22>http://msdn.microsoft.com/library...
これに対してExcludeプロパティをTrueにすると、VBSファイル...
[[Custom Action Type 6>http://msdn.microsoft.com/library/...
***カスタム動作の4つのノードとその詳細 [#j7b7f3f7]
カスタム動作エディタには4つのノード「インストール」、「確...
-[[カスタム動作エディタ>http://www.microsoft.com/japan/ms...
この説明を以下に引用させていただきます。
|インストール|このノードの下のカスタム動作は、インストー...
|確定|このノードの下のカスタム動作は、インストールの確定...
|ロールバック|このノードの下のカスタム動作は、インストー...
|アンインストール|このノードの下のカスタム動作は、インス...
さらに詳しく調べるには、MSIファイルの中身をOrcaで覗いてみ...
「インストール」、「確定」、「ロールバック」に追加された...
-[[Suggested InstallExecuteSequence>http://msdn.microsoft...
注.スクリプトファイルを配置しない設定にしたときは、「NOT ...
-[[Conditional Statement Syntax>http://msdn.microsoft.com...
-[[REMOVE Property>http://msdn.microsoft.com/library/en-u...
「アンインストール」に追加されたカスタムアクションは、Ins...
注.スクリプトファイルを配置しない設定にしたときは、「REMO...
「インストール」、「確定」、「ロールバック」の違いは、Cus...
-[[Custom Action In-Script Execution Options>http://msdn....
つまり、「インストール」、「確定」、「ロールバック」のカ...
-[[Deferred Execution Custom Actions>http://msdn.microsof...
-[[Commit Custom Actions>http://msdn.microsoft.com/librar...
-[[Rollback Custom Actions>http://msdn.microsoft.com/libr...
***EXE、DLLのカスタムアクション [#o8cba744]
上記で紹介したようなスクリプト以外に、EXEやDLLファイルを...
注.EXEファイルをそのまま実行する場合は、InstallerClassプ...
***Installerクラス [#pb455557]
.NET Frameworkには、「Installerクラス」というクラスが用意...
-[[Installerクラス>http://www.microsoft.com/japan/msdn/li...
はじめに、簡単な例から紹介します。
まず、新しいクラスライブラリのプロジェクトを作成します。...
次に、Installerクラスの派生クラスを作成し、RunInstallerAt...
-[[インストール コンポーネントの既定のメソッドのオーバー...
ここでは以下のようなコードでビルドし、DLLファイル「Custom...
#code(vbnet){{
<System.ComponentModel.RunInstaller(True)> _
Public Class Installer1
Inherits System.Configuration.Install.Installer
Public Overrides Sub Install( _
ByVal stateSaver As System.Collections.IDictionary)
MyBase.Install(stateSaver)
System.Windows.Forms.MessageBox.Show("Install")
End Sub
Public Overrides Sub Commit( _
ByVal savedState As System.Collections.IDictionary)
MyBase.Commit(savedState)
System.Windows.Forms.MessageBox.Show("Commit")
End Sub
Public Overrides Sub Rollback( _
ByVal savedState As System.Collections.IDictionary)
MyBase.Rollback(savedState)
System.Windows.Forms.MessageBox.Show("Rollback")
End Sub
Public Overrides Sub Uninstall( _
ByVal savedState As System.Collections.IDictionary)
MyBase.Uninstall(savedState)
System.Windows.Forms.MessageBox.Show("Uninstall")
End Sub
End Class
}}
#code(csharp){{
[System.ComponentModel.RunInstaller(true)]
public class Installer1 : System.Configuration.Install.In...
{
public override void Install(System.Collections.IDict...
{
base.Install(stateSaver);
System.Windows.Forms.MessageBox.Show("Install");
}
public override void Commit(System.Collections.IDicti...
{
base.Commit(savedState);
System.Windows.Forms.MessageBox.Show("Commit");
}
public override void Rollback(System.Collections.IDic...
{
base.Rollback(savedState);
System.Windows.Forms.MessageBox.Show("Rollback");
}
public override void Uninstall(System.Collections.IDi...
{
base.Uninstall(savedState);
System.Windows.Forms.MessageBox.Show("Uninstall");
}
}
}}
このカスタムアクションをデプロイメントプロジェクトで使用...
Installerクラスをカスタムアクションとして使用するには、カ...
ビルドしてMSIファイルを作成し、実行してみましょう。VBScri...
補足.ここではInstall、Commit、Rollback、Uninstallメソッド...
補足.ここでは、Installerクラスを独自に作成しましたが、VS....
補足.ここではカスタムアクションのためだけのDLLを作成しま...
補足.この方法では、先ほどのVBScriptの例と違い、Excludeプ...
***Installerクラスを使ったカスタムアクションの詳細 [#s7ac...
例によってOrcaにより、作成されたMSIファイルの詳細を見てみ...
Installerクラスを使った場合、カスタム動作を一つ追加すると...
#prescroll(wrap=true){{
Action:
_B2459EE5_658C_4EF0_BCE3_810CFFFBC274.uninstall.SetProperty
Type:
51
Source:
_B2459EE5_658C_4EF0_BCE3_810CFFFBC274.uninstall
Target:
/installtype=notransaction /action=uninstall /LogFile= "[...
Action:
_B2459EE5_658C_4EF0_BCE3_810CFFFBC274.uninstall
Type:
1025
Source:
InstallUtil
Target:
ManagedInstall
}}
まず、Type51のカスタムアクションにより、プロパティが設定...
-[[Custom Action Type 51>http://msdn.microsoft.com/librar...
次に、Type1025のカスタムアクションにより、InstallUtilのMa...
-[[Custom Action Type 1>http://msdn.microsoft.com/library...
-[[インストーラ ツール (Installutil.exe)>http://www.micro...
なお、「/LogFile= "[#_A367697580D6A572E31AB7AA55DFF20A]"...
これらのカスタムアクションは、InstallExecuteSequenceテー...
「インストーラ」ノード以外に追加されたカスタム動作でも同...
***カスタム動作にデータを渡す [#a0c20037]
カスタム動作にデータ(文字列)を渡すには、CustomActionDat...
Installerクラスを使ったカスタムアクションにデータを渡すと...
Installerクラス内でデータを取得するには、InstallContext.P...
次に例を示します。まずカスタム動作のCustomActionDataプロ...
/name=value /dir="[TARGETDIR]\"
と入力します。[TARGETDIR]はインストール先のフォルダのパス...
このデータを取得するために、InstallerクラスのInstallメソ...
#code(vbnet){{
Public Overrides Sub Install( _
ByVal stateSaver As System.Collections.IDictionary)
MyBase.Install(stateSaver)
Dim val As String = Me.Context.Parameters("name")
Dim targetdir As String = Me.Context.Parameters("dir")
System.Windows.Forms.MessageBox.Show(("name = " + val...
vbCrLf + "TARGETDIR = " + targetdir))
End Sub
}}
#code(csharp){{
public override void Install(System.Collections.IDictiona...
{
base.Install(stateSaver);
string val = this.Context.Parameters["name"];
string targetdir = this.Context.Parameters["dir"];
System.Windows.Forms.MessageBox.Show("name = " + val +
"\nTARGETDIR = " + targetdir);
}
}}
変数valは"value"となり、targetにはインストール先のフォル...
このようにCustomActionDataプロパティを指定した時、作成さ...
#prescroll(wrap=true){{
Action:
_B2459EE5_658C_4EF0_BCE3_810CFFFBC274.uninstall.SetProperty
Type:
51
Source:
_B2459EE5_658C_4EF0_BCE3_810CFFFBC274.uninstall
Target:
/installtype=notransaction /action=install /LogFile= /nam...
}}
VBScriptの場合は、CustomActionDataプロパティで指定された...
#code(vbscript){{
Dim val
val = Session.Property("CustomActionData")
MsgBox val
}}
複数のデータを渡すには、独自に区切り文字を決めるしかない...
参考.
-[[チュートリアル : カスタム動作にデータを渡す>http://www...
-[[CustomActionData プロパティ>http://www.microsoft.com/j...
-[[Session.Property>http://msdn.microsoft.com/library/en-...
***エラーを発生させる [#g94337de]
Installerクラスを使ったカスタムアクションでエラーを発生さ...
#code(vbnet){{
<System.ComponentModel.RunInstaller(True)> _
Public Class Installer1
Inherits System.Configuration.Install.Installer
Public Overrides Sub Install( _
ByVal stateSaver As System.Collections.IDictionary)
MyBase.Install(stateSaver)
Throw New System.Configuration.Install.InstallExc...
End Sub
Public Overrides Sub Rollback( _
ByVal savedState As System.Collections.IDictionary)
MyBase.Rollback(savedState)
System.Windows.Forms.MessageBox.Show("Rollback")
End Sub
End Class
}}
#code(csharp){{
[System.ComponentModel.RunInstaller(true)]
public class Installer1 : System.Configuration.Install.In...
{
public override void Install(System.Collections.IDict...
{
base.Install(stateSaver);
throw new System.Configuration.Install.InstallExc...
}
public override void Rollback(System.Collections.IDic...
{
base.Rollback(savedState);
System.Windows.Forms.MessageBox.Show("Rollback");
}
}
}}
作成されるMSIファイルを実行すると、「テストエラー」という...
VBScriptではこのようにWindows Installerにエラーを報告し、...
#code(vbscript){{
msiMessageTypeError = &H01000000
Set record = Session.Installer.CreateRecord(0)
record.StringData(0) = "テストエラー"
Session.Message msiMessageTypeError, record
}}
参考.
-[[カスタム動作でのエラー処理>http://www.microsoft.com/ja...
カスタム動作に関して、ヘルプにも幾つかの例が載っています...
-[[チュートリアル : カスタム動作を使用して、インストール...
-[[チュートリアル : カスタム動作を使用して、インストール...
-[[チュートリアル : インストール時にアプリケーションを別...
**コメント [#u7b5d32c]
#comment
//これより下は編集しないでください
#pageinfo([[:Category/.NET]],2005-08-13 (土) 18:00:00,DOB...
終了行:
#title(.NETプログラミング研究 第57号)
#navi(.NETプログラミング研究)
#contents
*.NETプログラミング研究 第57号 [#u63ee12a]
**.NET Tips [#s5f5664f]
**デプロイメントプロジェクトのカスタム動作の使い方 [#m5dd...
#column(注意){{
この記事の最新版は「[[カスタム動作エディタの使い方>https:...
}}
デプロイメントプロジェクトのカスタム動作エディタを使って...
***簡単な例 [#k1c56a28]
早速ですが、まずはカスタムアクションがどのようなものか、...
はじめにカスタムアクションで使用するスクリプトを作成しま...
#code(vbscript){{
MsgBox "こんにちは"
}}
まずは、この"action.vbs"をデプロイメントプロジェクトに追...
次に「カスタム動作エディタ」を開き、スクリプトを追加しま...
カスタム動作エディタには4つのノードがありますが、これらの...
これでカスタムアクションが追加されました。早速ビルドして...
作成したMSIファイルを実行すると、「(アプリケーション名)...
***アプリケーションフォルダにスクリプトを配置しない [#w71...
上記の例では、スクリプトファイルがアプリケーションフォル...
ExcludeプロパティがFalseの場合、MSIファイルのCustomAction...
[[Custom Action Type 22>http://msdn.microsoft.com/library...
これに対してExcludeプロパティをTrueにすると、VBSファイル...
[[Custom Action Type 6>http://msdn.microsoft.com/library/...
***カスタム動作の4つのノードとその詳細 [#j7b7f3f7]
カスタム動作エディタには4つのノード「インストール」、「確...
-[[カスタム動作エディタ>http://www.microsoft.com/japan/ms...
この説明を以下に引用させていただきます。
|インストール|このノードの下のカスタム動作は、インストー...
|確定|このノードの下のカスタム動作は、インストールの確定...
|ロールバック|このノードの下のカスタム動作は、インストー...
|アンインストール|このノードの下のカスタム動作は、インス...
さらに詳しく調べるには、MSIファイルの中身をOrcaで覗いてみ...
「インストール」、「確定」、「ロールバック」に追加された...
-[[Suggested InstallExecuteSequence>http://msdn.microsoft...
注.スクリプトファイルを配置しない設定にしたときは、「NOT ...
-[[Conditional Statement Syntax>http://msdn.microsoft.com...
-[[REMOVE Property>http://msdn.microsoft.com/library/en-u...
「アンインストール」に追加されたカスタムアクションは、Ins...
注.スクリプトファイルを配置しない設定にしたときは、「REMO...
「インストール」、「確定」、「ロールバック」の違いは、Cus...
-[[Custom Action In-Script Execution Options>http://msdn....
つまり、「インストール」、「確定」、「ロールバック」のカ...
-[[Deferred Execution Custom Actions>http://msdn.microsof...
-[[Commit Custom Actions>http://msdn.microsoft.com/librar...
-[[Rollback Custom Actions>http://msdn.microsoft.com/libr...
***EXE、DLLのカスタムアクション [#o8cba744]
上記で紹介したようなスクリプト以外に、EXEやDLLファイルを...
注.EXEファイルをそのまま実行する場合は、InstallerClassプ...
***Installerクラス [#pb455557]
.NET Frameworkには、「Installerクラス」というクラスが用意...
-[[Installerクラス>http://www.microsoft.com/japan/msdn/li...
はじめに、簡単な例から紹介します。
まず、新しいクラスライブラリのプロジェクトを作成します。...
次に、Installerクラスの派生クラスを作成し、RunInstallerAt...
-[[インストール コンポーネントの既定のメソッドのオーバー...
ここでは以下のようなコードでビルドし、DLLファイル「Custom...
#code(vbnet){{
<System.ComponentModel.RunInstaller(True)> _
Public Class Installer1
Inherits System.Configuration.Install.Installer
Public Overrides Sub Install( _
ByVal stateSaver As System.Collections.IDictionary)
MyBase.Install(stateSaver)
System.Windows.Forms.MessageBox.Show("Install")
End Sub
Public Overrides Sub Commit( _
ByVal savedState As System.Collections.IDictionary)
MyBase.Commit(savedState)
System.Windows.Forms.MessageBox.Show("Commit")
End Sub
Public Overrides Sub Rollback( _
ByVal savedState As System.Collections.IDictionary)
MyBase.Rollback(savedState)
System.Windows.Forms.MessageBox.Show("Rollback")
End Sub
Public Overrides Sub Uninstall( _
ByVal savedState As System.Collections.IDictionary)
MyBase.Uninstall(savedState)
System.Windows.Forms.MessageBox.Show("Uninstall")
End Sub
End Class
}}
#code(csharp){{
[System.ComponentModel.RunInstaller(true)]
public class Installer1 : System.Configuration.Install.In...
{
public override void Install(System.Collections.IDict...
{
base.Install(stateSaver);
System.Windows.Forms.MessageBox.Show("Install");
}
public override void Commit(System.Collections.IDicti...
{
base.Commit(savedState);
System.Windows.Forms.MessageBox.Show("Commit");
}
public override void Rollback(System.Collections.IDic...
{
base.Rollback(savedState);
System.Windows.Forms.MessageBox.Show("Rollback");
}
public override void Uninstall(System.Collections.IDi...
{
base.Uninstall(savedState);
System.Windows.Forms.MessageBox.Show("Uninstall");
}
}
}}
このカスタムアクションをデプロイメントプロジェクトで使用...
Installerクラスをカスタムアクションとして使用するには、カ...
ビルドしてMSIファイルを作成し、実行してみましょう。VBScri...
補足.ここではInstall、Commit、Rollback、Uninstallメソッド...
補足.ここでは、Installerクラスを独自に作成しましたが、VS....
補足.ここではカスタムアクションのためだけのDLLを作成しま...
補足.この方法では、先ほどのVBScriptの例と違い、Excludeプ...
***Installerクラスを使ったカスタムアクションの詳細 [#s7ac...
例によってOrcaにより、作成されたMSIファイルの詳細を見てみ...
Installerクラスを使った場合、カスタム動作を一つ追加すると...
#prescroll(wrap=true){{
Action:
_B2459EE5_658C_4EF0_BCE3_810CFFFBC274.uninstall.SetProperty
Type:
51
Source:
_B2459EE5_658C_4EF0_BCE3_810CFFFBC274.uninstall
Target:
/installtype=notransaction /action=uninstall /LogFile= "[...
Action:
_B2459EE5_658C_4EF0_BCE3_810CFFFBC274.uninstall
Type:
1025
Source:
InstallUtil
Target:
ManagedInstall
}}
まず、Type51のカスタムアクションにより、プロパティが設定...
-[[Custom Action Type 51>http://msdn.microsoft.com/librar...
次に、Type1025のカスタムアクションにより、InstallUtilのMa...
-[[Custom Action Type 1>http://msdn.microsoft.com/library...
-[[インストーラ ツール (Installutil.exe)>http://www.micro...
なお、「/LogFile= "[#_A367697580D6A572E31AB7AA55DFF20A]"...
これらのカスタムアクションは、InstallExecuteSequenceテー...
「インストーラ」ノード以外に追加されたカスタム動作でも同...
***カスタム動作にデータを渡す [#a0c20037]
カスタム動作にデータ(文字列)を渡すには、CustomActionDat...
Installerクラスを使ったカスタムアクションにデータを渡すと...
Installerクラス内でデータを取得するには、InstallContext.P...
次に例を示します。まずカスタム動作のCustomActionDataプロ...
/name=value /dir="[TARGETDIR]\"
と入力します。[TARGETDIR]はインストール先のフォルダのパス...
このデータを取得するために、InstallerクラスのInstallメソ...
#code(vbnet){{
Public Overrides Sub Install( _
ByVal stateSaver As System.Collections.IDictionary)
MyBase.Install(stateSaver)
Dim val As String = Me.Context.Parameters("name")
Dim targetdir As String = Me.Context.Parameters("dir")
System.Windows.Forms.MessageBox.Show(("name = " + val...
vbCrLf + "TARGETDIR = " + targetdir))
End Sub
}}
#code(csharp){{
public override void Install(System.Collections.IDictiona...
{
base.Install(stateSaver);
string val = this.Context.Parameters["name"];
string targetdir = this.Context.Parameters["dir"];
System.Windows.Forms.MessageBox.Show("name = " + val +
"\nTARGETDIR = " + targetdir);
}
}}
変数valは"value"となり、targetにはインストール先のフォル...
このようにCustomActionDataプロパティを指定した時、作成さ...
#prescroll(wrap=true){{
Action:
_B2459EE5_658C_4EF0_BCE3_810CFFFBC274.uninstall.SetProperty
Type:
51
Source:
_B2459EE5_658C_4EF0_BCE3_810CFFFBC274.uninstall
Target:
/installtype=notransaction /action=install /LogFile= /nam...
}}
VBScriptの場合は、CustomActionDataプロパティで指定された...
#code(vbscript){{
Dim val
val = Session.Property("CustomActionData")
MsgBox val
}}
複数のデータを渡すには、独自に区切り文字を決めるしかない...
参考.
-[[チュートリアル : カスタム動作にデータを渡す>http://www...
-[[CustomActionData プロパティ>http://www.microsoft.com/j...
-[[Session.Property>http://msdn.microsoft.com/library/en-...
***エラーを発生させる [#g94337de]
Installerクラスを使ったカスタムアクションでエラーを発生さ...
#code(vbnet){{
<System.ComponentModel.RunInstaller(True)> _
Public Class Installer1
Inherits System.Configuration.Install.Installer
Public Overrides Sub Install( _
ByVal stateSaver As System.Collections.IDictionary)
MyBase.Install(stateSaver)
Throw New System.Configuration.Install.InstallExc...
End Sub
Public Overrides Sub Rollback( _
ByVal savedState As System.Collections.IDictionary)
MyBase.Rollback(savedState)
System.Windows.Forms.MessageBox.Show("Rollback")
End Sub
End Class
}}
#code(csharp){{
[System.ComponentModel.RunInstaller(true)]
public class Installer1 : System.Configuration.Install.In...
{
public override void Install(System.Collections.IDict...
{
base.Install(stateSaver);
throw new System.Configuration.Install.InstallExc...
}
public override void Rollback(System.Collections.IDic...
{
base.Rollback(savedState);
System.Windows.Forms.MessageBox.Show("Rollback");
}
}
}}
作成されるMSIファイルを実行すると、「テストエラー」という...
VBScriptではこのようにWindows Installerにエラーを報告し、...
#code(vbscript){{
msiMessageTypeError = &H01000000
Set record = Session.Installer.CreateRecord(0)
record.StringData(0) = "テストエラー"
Session.Message msiMessageTypeError, record
}}
参考.
-[[カスタム動作でのエラー処理>http://www.microsoft.com/ja...
カスタム動作に関して、ヘルプにも幾つかの例が載っています...
-[[チュートリアル : カスタム動作を使用して、インストール...
-[[チュートリアル : カスタム動作を使用して、インストール...
-[[チュートリアル : インストール時にアプリケーションを別...
**コメント [#u7b5d32c]
#comment
//これより下は編集しないでください
#pageinfo([[:Category/.NET]],2005-08-13 (土) 18:00:00,DOB...
ページ名:
▲
▼
[
トップ
] [
新規
|
子ページ作成
|
一覧
|
単語検索
|
最終更新
|
ヘルプ
]