【.NET】Installerを継承してWindowsサービスをインストールする際に引数を指定。
- 2010.04.14 Wednesday
- 00:20
JUGEMテーマ:コンピュータ
Installクラス継承したクラスを利用してInstallUtil.exe経由でWindowsサービスにサービスを登録する場合に、「実行ファイルのパス」に実行ファイルの後ろに引数をしていたい場合はある。そういうときは
[RunInstaller(true)]
public partial class ProjectInstaller : Installer
{
public ProjectInstaller()
{
InitializeComponent();
}
Installクラス継承したクラスを利用してInstallUtil.exe経由でWindowsサービスにサービスを登録する場合に、「実行ファイルのパス」に実行ファイルの後ろに引数をしていたい場合はある。そういうときは
[RunInstaller(true)]
public partial class ProjectInstaller : Installer
{
public ProjectInstaller()
{
InitializeComponent();
}
public override void Install(IDictionary stateSaver)
{
string binaryPath = Context.Parameters["assemblypath"];
Context.Parameters["assemblypath"] = binaryPath + " -i";
base.Install(stateSaver);
}
...
}
と書くと引数が登録出来そうだ。ただし、コンパイル時で引数が決定してしまうのが難点・・・。インストール時に設定したい。
-------
追記)
下記のAPIメソッドを呼び出せば難なく実装できます。もちろんInstallUtil.exeは使えませんが・・・。
[DllImport("advapi32.dll", CharSet=CharSet.Unicode, SetLastError=true)] public static extern IntPtr CreateService(IntPtr databaseHandle, |