ServiceInstaller Sınıf
Tanım
Önemli
Bazı bilgiler ürünün ön sürümüyle ilgilidir ve sürüm öncesinde önemli değişiklikler yapılmış olabilir. Burada verilen bilgilerle ilgili olarak Microsoft açık veya zımni hiçbir garanti vermez.
Bir hizmeti uygulamak için genişleten ServiceBase bir sınıf yükler. Bu sınıf, hizmet uygulaması yüklenirken yükleme yardımcı programı tarafından çağrılır.
public ref class ServiceInstaller : System::Configuration::Install::ComponentInstaller
public class ServiceInstaller : System.Configuration.Install.ComponentInstaller
type ServiceInstaller = class
inherit ComponentInstaller
Public Class ServiceInstaller
Inherits ComponentInstaller
- Devralma
Örnekler
Aşağıdaki örnek, adlı ve MyProjectInstalleröğesinden Installerdevralan bir proje yükleyicisi oluşturur. "Hello-World Service 1" ve "Hello-World Service 2" olmak üzere iki hizmet içeren bir hizmet yürütülebilir dosyası olduğu varsayılır. oluşturucusunun MyProjectInstaller içinde (yükleme yardımcı programı tarafından çağrılabilir), ServiceInstaller bu hizmetlerin her biri için nesneler oluşturulur ve yürütülebilir dosya için bir ServiceProcessInstaller oluşturulur. Yükleme yardımcı programının geçerli bir yükleyici olarak tanıması MyProjectInstallerRunInstallerAttribute için özniteliği olarak trueayarlanır.
İsteğe bağlı özellikler, yükleyiciler koleksiyona eklenmeden Installers önce işlem yükleyicisinde ve hizmet yükleyicilerinde ayarlanır. Yükleme yardımcı programı eriştiğindeMyProjectInstaller, çağrısı InstallerCollection.Add aracılığıyla koleksiyona Installers eklenen nesneler sırayla yüklenir. İşlem sırasında yükleyici, hangi nesnelerin yüklendiğini belirten durum bilgilerini tutar, böylece yükleme hatası oluşursa her bir nesne sırayla yedeklenebilir.
Normalde proje yükleyicisi sınıfınızın bir örneğini açıkça oluşturmazsınız. Bunu oluşturup söz dizimine özniteliğini eklersiniz RunInstallerAttribute , ancak aslında sınıfı çağıran ve bu nedenle örneği oluşturan yükleme yardımcı programıdır.
#using <System.dll>
#using <System.ServiceProcess.dll>
#using <System.Configuration.Install.dll>
using namespace System;
using namespace System::Collections;
using namespace System::Configuration::Install;
using namespace System::ServiceProcess;
using namespace System::ComponentModel;
[RunInstaller(true)]
public ref class MyProjectInstaller : public Installer
{
private:
ServiceInstaller^ serviceInstaller1;
ServiceInstaller^ serviceInstaller2;
ServiceProcessInstaller^ processInstaller;
public:
MyProjectInstaller()
{
// Instantiate installers for process and services.
processInstaller = gcnew ServiceProcessInstaller;
serviceInstaller1 = gcnew ServiceInstaller;
serviceInstaller2 = gcnew ServiceInstaller;
// The services run under the system account.
processInstaller->Account = ServiceAccount::LocalSystem;
// The services are started manually.
serviceInstaller1->StartType = ServiceStartMode::Manual;
serviceInstaller2->StartType = ServiceStartMode::Manual;
// ServiceName must equal those on ServiceBase derived classes.
serviceInstaller1->ServiceName = "Hello-World Service 1";
serviceInstaller2->ServiceName = "Hello-World Service 2";
// Add installers to collection. Order is not important.
Installers->Add( serviceInstaller1 );
Installers->Add( serviceInstaller2 );
Installers->Add( processInstaller );
}
static void Main()
{
Console::WriteLine("Usage: InstallUtil.exe [<service>.exe]");
}
};
int main()
{
MyProjectInstaller::Main();
}
using System;
using System.Collections;
using System.Configuration.Install;
using System.ServiceProcess;
using System.ComponentModel;
[RunInstaller(true)]
public class MyProjectInstaller : Installer
{
private ServiceInstaller serviceInstaller1;
private ServiceInstaller serviceInstaller2;
private ServiceProcessInstaller processInstaller;
public MyProjectInstaller()
{
// Instantiate installers for process and services.
processInstaller = new ServiceProcessInstaller();
serviceInstaller1 = new ServiceInstaller();
serviceInstaller2 = new ServiceInstaller();
// The services run under the system account.
processInstaller.Account = ServiceAccount.LocalSystem;
// The services are started manually.
serviceInstaller1.StartType = ServiceStartMode.Manual;
serviceInstaller2.StartType = ServiceStartMode.Manual;
// ServiceName must equal those on ServiceBase derived classes.
serviceInstaller1.ServiceName = "Hello-World Service 1";
serviceInstaller2.ServiceName = "Hello-World Service 2";
// Add installers to collection. Order is not important.
Installers.Add(serviceInstaller1);
Installers.Add(serviceInstaller2);
Installers.Add(processInstaller);
}
public static void Main()
{
Console.WriteLine("Usage: InstallUtil.exe [<service>.exe]");
}
}
Imports System.Collections
Imports System.Configuration.Install
Imports System.ServiceProcess
Imports System.ComponentModel
<RunInstallerAttribute(True)> _
Public Class MyProjectInstaller
Inherits Installer
Private serviceInstaller1 As ServiceInstaller
Private serviceInstaller2 As ServiceInstaller
Private processInstaller As ServiceProcessInstaller
Public Sub New()
' Instantiate installers for process and services.
processInstaller = New ServiceProcessInstaller()
serviceInstaller1 = New ServiceInstaller()
serviceInstaller2 = New ServiceInstaller()
' The services will run under the system account.
processInstaller.Account = ServiceAccount.LocalSystem
' The services will be started manually.
serviceInstaller1.StartType = ServiceStartMode.Manual
serviceInstaller2.StartType = ServiceStartMode.Manual
' ServiceName must equal those on ServiceBase derived classes.
serviceInstaller1.ServiceName = "Hello-World Service 1"
serviceInstaller2.ServiceName = "Hello-World Service 2"
' Add installers to collection. Order is not important.
Installers.Add(serviceInstaller1)
Installers.Add(serviceInstaller2)
Installers.Add(processInstaller)
End Sub
Public Shared Sub Main()
Console.WriteLine("Usage: InstallUtil.exe [<service>.exe]")
End Sub
End Class
Açıklamalar
ServiceInstaller, ilişkilendirildiği hizmete özgü çalışır. Yükleme yardımcı programı tarafından hizmetle ilişkili kayıt defteri değerlerini HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services kayıt defteri anahtarındaki bir alt anahtara yazmak için kullanılır. Hizmet, bu alt anahtar içindeki ServiceName değeriyle tanımlanır. Alt anahtar, hizmetin ait olduğu yürütülebilir dosyanın veya .dll adını da içerir.
Hizmet yüklemek için sınıfından Installer devralan bir proje yükleyici sınıfı oluşturun ve sınıfında özniteliğini olarak trueayarlayınRunInstallerAttribute. Projenizde hizmet uygulaması başına bir ServiceProcessInstaller örnek ve uygulamadaki her hizmet için bir ServiceInstaller örnek oluşturun. Proje yükleyicisi sınıf oluşturucunuzda ve ServiceInstaller örneklerini kullanarak ServiceProcessInstaller hizmetin yükleme özelliklerini ayarlayın ve örnekleri koleksiyona Installers ekleyin.
Uyarı
Yükleyici örnekleri eklemek için oluşturucuyu kullanmanız önerilir; ancak, yöntemindeki Installers koleksiyona eklemeniz gerekiyorsa, yönteminde Install koleksiyona aynı eklemeleri gerçekleştirdiğinizden Uninstall emin olun.
sınıfından Installer türetilen tüm sınıflar için ve yöntemlerinde InstallersInstallUninstall koleksiyonun durumu aynı olmalıdır. Ancak, özel yükleyici sınıfı oluşturucunuzda koleksiyona yükleyici örnekleri eklerseniz ve yöntemleri genelinde InstallUninstall koleksiyonun Installers bakımını yapmaktan kaçınabilirsiniz. Yükleme yardımcı programı çağrıldığında özniteliğini RunInstallerAttribute arar. özniteliği ise true, yardımcı programı proje yükleyicinizle ilişkili koleksiyona Installers eklenen tüm hizmetleri yükler. varsa RunInstallerAttributefalse veya yoksa, yükleme yardımcı programı proje yükleyicisini yoksayar.
ServiceProcessInstaller Proje yükleme sınıfınızla ilişkilendirilmiş olan, projedeki tüm ServiceInstaller örnekler için ortak olan bilgileri yükler. Bu hizmet, yükleme projesindeki diğer hizmetlerden ayıran herhangi bir şeye sahipse, hizmete özgü bilgiler bu yöntemle yüklenir.
Uyarı
öğesinin ServiceName öğesinden ServiceBasetüretdiğiniz sınıfın aynı ServiceBase.ServiceName olması çok önemlidir. Normalde, hizmetin özelliğinin ServiceBase.ServiceName değeri hizmet uygulamasının yürütülebilir dosyasının Main() işlevi içinde ayarlanır. Hizmet Denetim Yöneticisi, bu yürütülebilir dosyanın içinde hizmeti bulmak için özelliğini kullanır ServiceInstaller.ServiceName .
Proje yükleyicinizin koleksiyonuna ServiceInstaller eklemeden Installers önce veya sonra diğer özellikleri değiştirebilirsiniz. Örneğin, bir hizmet StartType yeniden başlatma sırasında hizmeti otomatik olarak başlatacak şekilde ayarlanabilir veya kullanıcının hizmeti el ile başlatmasını zorunlu kılabilir.
Normalde, kodunuzun içinde yöntemlerini ServiceInstaller çağırmazsınız; bunlar genellikle yalnızca yükleme yardımcı programı tarafından çağrılır. Yükleme yardımcı programı, yükleme işlemi sırasında ve ServiceInstaller.Install yöntemlerini otomatik olarak çağırırServiceProcessInstaller.Install. Gerekirse, önceden yüklenmiş tüm bileşenlerde (veya ServiceInstaller.Rollback) çağrısı Rollback yaparak hataları geri alır.
Yükleme yardımcı programı nesneyi kaldırmak için çağırır Uninstall .
Uygulamanın yükleme yordamı, proje yükleyicisinin Installer.Contextkullanarak zaten yüklü olan bileşenler hakkındaki bilgileri otomatik olarak korur. Bu durum bilgileri örnek olarak ServiceProcessInstaller sürekli olarak güncelleştirilir ve her ServiceInstaller örnek yardımcı program tarafından yüklenir. Kodunuzun durum bilgilerini açıkça değiştirmesi genellikle gereksizdir.
Yükleme gerçekleştirildiğinde, türetilmiş sınıfla ServiceBase ilişkili olay günlüğü kaynağını yüklemek için otomatik olarak bir EventLogInstaller oluşturur. Bu kaynağın Log özelliği, oluşturucu tarafından ServiceInstaller bilgisayarın Uygulama günlüğüne ayarlanır. öğesini ayarladığınızda ServiceNameServiceInstaller (hizmetinkiyle aynı ServiceBase.ServiceName olmalıdır), Source otomatik olarak aynı değere ayarlanır. Bir yükleme hatasında, kaynağın yüklemesi daha önce yüklenmiş hizmetlerle birlikte geri alınır.
Uninstall yöntemi, çalışıyorsa hizmeti durdurmaya çalışır. Bunun başarılı olup olmaması, Uninstall tarafından Installyapılan değişiklikleri geri alır. Olay günlüğü için yeni bir kaynak oluşturulduysa, kaynak silinir.
Oluşturucular
| Name | Description |
|---|---|
| ServiceInstaller() |
ServiceInstaller sınıfının yeni bir örneğini başlatır. |
Özellikler
| Name | Description |
|---|---|
| CanRaiseEvents |
Bileşenin olay oluşturup oluşturamayacağını belirten bir değer alır. (Devralındığı yer: Component) |
| Container |
öğesini IContainer içeren öğesini Componentalır. (Devralındığı yer: Component) |
| Context |
Geçerli yüklemeyle ilgili bilgileri alır veya ayarlar. (Devralındığı yer: Installer) |
| DelayedAutoStart |
Hizmetin başlatılmasının otomatik olarak başlatılan diğer hizmetler çalıştırılana kadar ertelenip ertelenmeyeceğini belirten bir değer alır veya ayarlar. |
| Description |
Hizmetin açıklamasını alır veya ayarlar. |
| DesignMode |
öğesinin şu anda tasarım modunda olup olmadığını Component gösteren bir değer alır. (Devralındığı yer: Component) |
| DisplayName |
Hizmeti kullanıcıya tanımlayan kolay adı gösterir. |
| Events |
Bu Componentöğesine eklenen olay işleyicilerinin listesini alır. (Devralındığı yer: Component) |
| HelpText |
Yükleyici koleksiyonundaki tüm yükleyiciler için yardım metnini alır. (Devralındığı yer: Installer) |
| Installers |
Bu yükleyicinin içerdiği yükleyici koleksiyonunu alır. (Devralındığı yer: Installer) |
| Parent |
Bu yükleyicinin ait olduğu koleksiyonu içeren yükleyiciyi alır veya ayarlar. (Devralındığı yer: Installer) |
| ServiceName |
Bu hizmeti tanımlamak için sistem tarafından kullanılan adı gösterir. Bu özellik, yüklemek istediğiniz hizmetle aynı ServiceName olmalıdır. |
| ServicesDependedOn |
Bu hizmetin çalışması için çalışması gereken hizmetleri gösterir. |
| Site |
öğesini alır veya ayarlar ISiteComponent. (Devralındığı yer: Component) |
| StartType |
Bu hizmetin nasıl ve ne zaman başlatılıp başlatılmadiğini gösterir. |
Yöntemler
| Name | Description |
|---|---|
| Commit(IDictionary) |
Türetilmiş bir sınıfta geçersiz kılındığında yükleme işlemini tamamlar. (Devralındığı yer: Installer) |
| CopyFromComponent(IComponent) |
Özelliklerini bir örneğinden ServiceBase bu yükleyiciye kopyalar. |
| CreateObjRef(Type) |
Uzak bir nesneyle iletişim kurmak için kullanılan bir ara sunucu oluşturmak için gereken tüm ilgili bilgileri içeren bir nesne oluşturur. (Devralındığı yer: MarshalByRefObject) |
| Dispose() |
tarafından Componentkullanılan tüm kaynakları serbest bırakır. (Devralındığı yer: Component) |
| Dispose(Boolean) |
tarafından Component kullanılan yönetilmeyen kaynakları serbest bırakır ve isteğe bağlı olarak yönetilen kaynakları serbest bırakır. (Devralındığı yer: Component) |
| Equals(Object) |
Belirtilen nesnenin geçerli nesneye eşit olup olmadığını belirler. (Devralındığı yer: Object) |
| GetHashCode() |
Varsayılan karma işlevi işlevi görür. (Devralındığı yer: Object) |
| GetLifetimeService() |
Geçersiz.
Bu örnek için yaşam süresi ilkesini denetleen geçerli yaşam süresi hizmet nesnesini alır. (Devralındığı yer: MarshalByRefObject) |
| GetService(Type) |
veya Componenttarafından Container sağlanan bir hizmeti temsil eden bir nesnesi döndürür. (Devralındığı yer: Component) |
| GetType() |
Geçerli örneğin Type alır. (Devralındığı yer: Object) |
| InitializeLifetimeService() |
Geçersiz.
Bu örneğin yaşam süresi ilkesini denetlemek için bir yaşam süresi hizmet nesnesi alır. (Devralındığı yer: MarshalByRefObject) |
| Install(IDictionary) |
Hizmet uygulaması bilgilerini kayıt defterine yazarak hizmeti yükler. Bu yöntemin, uygun yöntemleri otomatik olarak işleyen yükleme araçları tarafından kullanılması amaçlanır. |
| IsEquivalentInstaller(ComponentInstaller) |
İki yükleyicinin aynı hizmeti yükleyip yüklemeyeceğini gösterir. |
| MemberwiseClone() |
Geçerli Objectbasit bir kopyasını oluşturur. (Devralındığı yer: Object) |
| MemberwiseClone(Boolean) |
Geçerli MarshalByRefObject nesnenin sığ bir kopyasını oluşturur. (Devralındığı yer: MarshalByRefObject) |
| OnAfterInstall(IDictionary) |
Olayı tetikler AfterInstall . (Devralındığı yer: Installer) |
| OnAfterRollback(IDictionary) |
Olayı tetikler AfterRollback . (Devralındığı yer: Installer) |
| OnAfterUninstall(IDictionary) |
Olayı tetikler AfterUninstall . (Devralındığı yer: Installer) |
| OnBeforeInstall(IDictionary) |
Olayı tetikler BeforeInstall . (Devralındığı yer: Installer) |
| OnBeforeRollback(IDictionary) |
Olayı tetikler BeforeRollback . (Devralındığı yer: Installer) |
| OnBeforeUninstall(IDictionary) |
Olayı tetikler BeforeUninstall . (Devralındığı yer: Installer) |
| OnCommitted(IDictionary) |
Olayı tetikler Committed . (Devralındığı yer: Installer) |
| OnCommitting(IDictionary) |
Olayı tetikler Committing . (Devralındığı yer: Installer) |
| Rollback(IDictionary) |
Yükleme yordamı tarafından kayıt defterine yazılan hizmet uygulaması bilgilerini geri alır. Bu yöntemin, uygun yöntemleri otomatik olarak işleyen yükleme araçları tarafından kullanılması amaçlanır. |
| ToString() |
Varsa, adını Stringiçeren bir Component döndürür. Bu yöntem geçersiz kılınmamalıdır. (Devralındığı yer: Component) |
| Uninstall(IDictionary) |
Kayıt defterinden bu hizmetle ilgili bilgileri kaldırarak hizmeti kaldırır. |
Ekinlikler
| Name | Description |
|---|---|
| AfterInstall |
özelliğindeki Install(IDictionary) tüm yükleyicilerin Installers yöntemleri çalıştırıldıktan sonra gerçekleşir. (Devralındığı yer: Installer) |
| AfterRollback |
özelliğindeki tüm yükleyicilerin yüklemeleri Installers geri alındıktan sonra gerçekleşir. (Devralındığı yer: Installer) |
| AfterUninstall |
özelliğindeki Installers tüm yükleyiciler kaldırma işlemlerini gerçekleştirdikten sonra gerçekleşir. (Devralındığı yer: Installer) |
| BeforeInstall |
Yükleyici koleksiyonundaki Install(IDictionary) her yükleyicinin yöntemi çalışmadan önce gerçekleşir. (Devralındığı yer: Installer) |
| BeforeRollback |
özelliğindeki Installers yükleyiciler geri almadan önce gerçekleşir. (Devralındığı yer: Installer) |
| BeforeUninstall |
özelliğindeki Installers yükleyiciler kaldırma işlemlerini gerçekleştirmeden önce gerçekleşir. (Devralındığı yer: Installer) |
| Committed |
özelliğindeki tüm yükleyiciler Installers yüklemelerini işledikten sonra gerçekleşir. (Devralındığı yer: Installer) |
| Committing |
özelliğindeki Installers yükleyiciler yüklemelerini işlemeden önce gerçekleşir. (Devralındığı yer: Installer) |
| Disposed |
Bileşen yöntemine Dispose() yapılan bir çağrıyla atıldığında gerçekleşir. (Devralındığı yer: Component) |