Installer
インスタンスと一緒に派生クラスを使用していると仮定しServiceInstaller
ます。
私はプロジェクトで同じようなことをします。サービス名はテキストファイル内に保存されます(これは単なるオプションですが、私にとっては自動展開の目的であります)。どこにでも保存できます(レジストリなど)。
したがって、インストールフェーズで構成されたカスタムサービス名をどこかに保持する必要があります。
だから、私は私のInstaller
クラスを持っています:
[RunInstaller(true)]
public partial class ProjectInstaller : System.Configuration.Install.Installer
そして、そのコンストラクターでは、次のことを行います。
_process = new ServiceProcessInstaller { Account = ServiceAccount.LocalSystem };
_service = new ServiceInstaller { ServiceName = ServiceNameReader.GetServiceName(), StartType = ServiceStartMode.Automatic };
Installers.Add(_process);
Installers.Add(_service);
関数に注意してくださいServiceNameReader.GetServiceName()
。このカスタム関数は、ファイルからサービス名を取得します。Installer
クラスはインスタンス化され、アンインストール中にも呼び出されます。したがって、このようなことを行うと、実際のサービス名をどこかから動的にロードするために、それを正常にアンインストールできるようになります。