私はInstallUtilを使用してサービスをインストールしていますが、起動パラメータを指定する方法はわかりません!ここでInstallUtilを使用して起動パラメータ付きWindowsサービスをインストールする
は私のインストーラのサブクラスです:
[RunInstaller(true)]
public class ServerHostInstaller : Installer
{
private ServiceInstaller m_serviceInstaller;
private ServiceProcessInstaller m_serviceProcessInstaller;
private static string s_usage = "Usage:\ninstallutil /i /username=<user_name> /password=<user_password> NCStub.Server.Host.exe";
public ServerHostInstaller()
{
m_serviceInstaller = new ServiceInstaller();
m_serviceInstaller.ServiceName = Program.ServiceName;
m_serviceInstaller.DisplayName = Program.ServiceName;
m_serviceInstaller.StartType = ServiceStartMode.Automatic;
m_serviceProcessInstaller = new ServiceProcessInstaller();
m_serviceProcessInstaller.Account = ServiceAccount.User;
Installers.Add(m_serviceInstaller);
Installers.Add(m_serviceProcessInstaller);
}
public override void Install(IDictionary stateSaver)
{
base.Install(stateSaver);
string userName = this.Context.Parameters["username"];
if (userName == null)
{
Console.WriteLine(s_usage);
throw new InstallException("Missing parameter 'username'");
}
string userPass = this.Context.Parameters["password"];
if (userPass == null)
{
Console.WriteLine(s_usage);
throw new InstallException("Missing parameter 'password'");
}
m_serviceProcessInstaller.Username = userName;
m_serviceProcessInstaller.Password = userPass;
}
}
誰がどのように私は、サービスの起動パラメータを指定してください示すことはできますか?
この方法は、Installメソッドをオーバーライドするのではなく、サービスインストーラーオブジェクトのBeforeInstallイベントにハンドラーをアタッチする場合にも機能します。 –
実際にはそうではありません。それはしなければならないと私はかなり慣れていたが、私はちょうどチェックしたとそれはしていない。オーバーライドバージョンに固執する。 –
インストーラに資格情報を渡すのと同じ解決策があります。問題は、ログファイルにもあなたの資格情報が含まれていることです。これは私の意見では大きな問題です。ログファイルに「影響を受けるパラメータはありますか」の書き込みを無効にする方法はありますか?私は完全なログファイルを無効にしたくない! – flayn