ServiceProcessInstaller Kelas

Definisi

Menginstal executable yang berisi kelas yang memperluas ServiceBase. Kelas ini dipanggil oleh utilitas penginstalan, seperti InstallUtil.exe, saat menginstal aplikasi layanan.

public ref class ServiceProcessInstaller : System::Configuration::Install::ComponentInstaller
public class ServiceProcessInstaller : System.Configuration.Install.ComponentInstaller
type ServiceProcessInstaller = class
    inherit ComponentInstaller
Public Class ServiceProcessInstaller
Inherits ComponentInstaller
Warisan

Contoh

Contoh berikut membuat penginstal proyek yang disebut MyProjectInstaller, yang mewarisi dari Installer. Diasumsikan ada layanan yang dapat dieksekusi yang berisi dua layanan, "Hello-World Service 1" dan "Hello-World Service 2". Dalam konstruktor untuk MyProjectInstaller (yang akan dipanggil oleh utilitas penginstalan), ServiceInstaller objek dibuat untuk setiap layanan, dan ServiceProcessInstaller dibuat untuk executable. Agar utilitas penginstalan mengenali MyProjectInstaller sebagai penginstal yang valid, RunInstallerAttribute atribut diatur ke true.

Properti opsional diatur pada penginstal proses dan penginstal layanan sebelum penginstal ditambahkan ke Installers koleksi. Ketika utilitas penginstalan mengakses MyProjectInstaller, objek yang ditambahkan ke Installers koleksi melalui panggilan ke InstallerCollection.Add akan diinstal secara bergantian. Selama proses, alat penginstal mempertahankan informasi status yang menunjukkan objek mana yang telah diinstal, sehingga setiap objek dapat dicadangkan pada gilirannya jika terjadi kegagalan penginstalan.

Biasanya, Anda tidak akan membuat instans kelas penginstal proyek Anda secara eksplisit. Anda akan membuatnya dan menambahkan RunInstallerAttribute, tetapi utilitas penginstalan benar-benar memanggil, dan karena itu membuat instans, kelas .

#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

Keterangan

ServiceProcessInstaller memang bekerja umum untuk semua layanan dalam executable. Ini digunakan oleh utilitas penginstalan untuk menulis nilai registri yang terkait dengan layanan yang ingin Anda instal.

Untuk menginstal layanan, buat kelas penginstal proyek yang mewarisi dari Installer, dan atur RunInstallerAttribute pada kelas ke true. Dalam proyek Anda, buat instans satu ServiceProcessInstaller instans per aplikasi layanan, dan satu ServiceInstaller instans untuk setiap layanan dalam aplikasi. Terakhir, tambahkan ServiceProcessInstaller instans dan ServiceInstaller instans ke kelas penginstal proyek Anda.

Saat InstallUtil.exe berjalan, utilitas mencari kelas di rakitan layanan dengan RunInstallerAttribute diatur ke true. Tambahkan kelas ke rakitan layanan dengan menambahkannya ke koleksi yang Installers terkait dengan penginstal proyek Anda. Jika RunInstallerAttribute adalah false, utilitas penginstalan mengabaikan alat penginstal proyek.

Untuk instans ServiceProcessInstaller, properti yang dapat Anda ubah termasuk menentukan bahwa aplikasi layanan berjalan di bawah akun selain pengguna yang masuk. Anda dapat menentukan pasangan dan Password tertentu Username di mana layanan harus berjalan, atau Anda dapat menggunakan Account untuk menentukan bahwa layanan berjalan di bawah akun Sistem komputer, akun layanan lokal atau jaringan, atau akun pengguna.

Catatan

Akun Sistem komputer tidak sama dengan akun Administrator.

Biasanya, Anda tidak memanggil metode di dalam kode Anda; metode umumnya hanya dipanggil ServiceInstaller oleh utilitas penginstalan. Utilitas penginstalan secara otomatis memanggil ServiceProcessInstaller.Install metode dan ServiceInstaller.Install selama proses penginstalan. Ini mendukung kegagalan, jika perlu, dengan memanggil Rollback (atau ServiceInstaller.Rollback) pada semua komponen yang diinstal sebelumnya.

Rutinitas penginstalan aplikasi mempertahankan informasi secara otomatis tentang komponen yang sudah diinstal, menggunakan alat penginstal Installer.Contextproyek . Informasi status ini terus diperbarui saat ServiceProcessInstaller instans dan setiap ServiceInstaller instans diinstal oleh utilitas. Biasanya tidak perlu bagi kode Anda untuk memodifikasi informasi status ini secara eksplisit.

ServiceProcessInstaller Membuat instans penyebab konstruktor kelas dasar, ComponentInstaller, dipanggil.

Konstruktor

ServiceProcessInstaller()

Membuat instans ServiceProcessInstaller baru kelas.

Properti

Account

Mendapatkan atau mengatur jenis akun untuk menjalankan aplikasi layanan ini.

CanRaiseEvents

Mendapatkan nilai yang menunjukkan apakah komponen dapat menaikkan peristiwa.

(Diperoleh dari Component)
Container

IContainer Mendapatkan yang berisi Component.

(Diperoleh dari Component)
Context

Mendapatkan atau mengatur informasi tentang penginstalan saat ini.

(Diperoleh dari Installer)
DesignMode

Mendapatkan nilai yang menunjukkan apakah Component saat ini dalam mode desain.

(Diperoleh dari Component)
Events

Mendapatkan daftar penanganan aktivitas yang dilampirkan ke ini Component.

(Diperoleh dari Component)
HelpText

Mendapatkan teks bantuan yang ditampilkan untuk opsi penginstalan layanan.

Installers

Mendapatkan koleksi alat penginstal yang dikandung alat penginstal ini.

(Diperoleh dari Installer)
Parent

Mendapatkan atau mengatur alat penginstal yang berisi koleksi tempat penginstal ini berada.

(Diperoleh dari Installer)
Password

Mendapatkan atau mengatur kata sandi yang terkait dengan akun pengguna tempat aplikasi layanan berjalan.

Site

Mendapatkan atau mengatur ISite dari Component.

(Diperoleh dari Component)
Username

Mendapatkan atau mengatur akun pengguna tempat aplikasi layanan akan berjalan.

Metode

Commit(IDictionary)

Ketika ditimpa di kelas turunan, menyelesaikan transaksi penginstalan.

(Diperoleh dari Installer)
CopyFromComponent(IComponent)

Menerapkan metode kelas CopyFromComponent(IComponent) dasar tanpa ServiceProcessInstaller perilaku khusus kelas.

CreateObjRef(Type)

Membuat objek yang berisi semua informasi relevan yang diperlukan untuk menghasilkan proksi yang digunakan untuk berkomunikasi dengan objek jarak jauh.

(Diperoleh dari MarshalByRefObject)
Dispose()

Merilis semua sumber daya yang Componentdigunakan oleh .

(Diperoleh dari Component)
Dispose(Boolean)

Merilis sumber daya tidak terkelola yang Component digunakan oleh dan secara opsional merilis sumber daya terkelola.

(Diperoleh dari Component)
Equals(Object)

Menentukan apakah objek yang ditentukan sama dengan objek saat ini.

(Diperoleh dari Object)
GetHashCode()

Berfungsi sebagai fungsi hash default.

(Diperoleh dari Object)
GetLifetimeService()
Kedaluwarsa.

Mengambil objek layanan seumur hidup saat ini yang mengontrol kebijakan seumur hidup untuk instans ini.

(Diperoleh dari MarshalByRefObject)
GetService(Type)

Mengembalikan objek yang mewakili layanan yang disediakan oleh Component atau oleh Container.

(Diperoleh dari Component)
GetType()

Mendapatkan instans Type saat ini.

(Diperoleh dari Object)
InitializeLifetimeService()
Kedaluwarsa.

Mendapatkan objek layanan seumur hidup untuk mengontrol kebijakan seumur hidup untuk instans ini.

(Diperoleh dari MarshalByRefObject)
Install(IDictionary)

Menulis informasi aplikasi layanan ke registri. Metode ini dimaksudkan untuk digunakan oleh alat penginstalan, yang memanggil metode yang sesuai secara otomatis.

IsEquivalentInstaller(ComponentInstaller)

Menentukan apakah alat penginstal yang ditentukan menginstal objek yang sama dengan alat penginstal ini.

(Diperoleh dari ComponentInstaller)
MemberwiseClone()

Membuat salinan dangkal dari yang saat ini Object.

(Diperoleh dari Object)
MemberwiseClone(Boolean)

Membuat salinan dangkal objek saat ini MarshalByRefObject .

(Diperoleh dari MarshalByRefObject)
OnAfterInstall(IDictionary)

Memunculkan kejadian AfterInstall.

(Diperoleh dari Installer)
OnAfterRollback(IDictionary)

Memunculkan kejadian AfterRollback.

(Diperoleh dari Installer)
OnAfterUninstall(IDictionary)

Memunculkan kejadian AfterUninstall.

(Diperoleh dari Installer)
OnBeforeInstall(IDictionary)

Memunculkan kejadian BeforeInstall.

(Diperoleh dari Installer)
OnBeforeRollback(IDictionary)

Memunculkan kejadian BeforeRollback.

(Diperoleh dari Installer)
OnBeforeUninstall(IDictionary)

Memunculkan kejadian BeforeUninstall.

(Diperoleh dari Installer)
OnCommitted(IDictionary)

Memunculkan kejadian Committed.

(Diperoleh dari Installer)
OnCommitting(IDictionary)

Memunculkan kejadian Committing.

(Diperoleh dari Installer)
Rollback(IDictionary)

Mengembalikan informasi aplikasi layanan yang ditulis ke registri dengan prosedur penginstalan. Metode ini dimaksudkan untuk digunakan oleh alat penginstalan, yang memproses metode yang sesuai secara otomatis.

ToString()

Mengembalikan yang String berisi nama Component, jika ada. Metode ini tidak boleh ditimpa.

(Diperoleh dari Component)
Uninstall(IDictionary)

Saat ditimpa di kelas turunan, akan menghapus penginstalan.

(Diperoleh dari Installer)

Acara

AfterInstall

Terjadi setelah Install(IDictionary) metode semua alat penginstal di Installers properti telah berjalan.

(Diperoleh dari Installer)
AfterRollback

Terjadi setelah penginstalan semua alat penginstal di Installers properti digulung balik.

(Diperoleh dari Installer)
AfterUninstall

Terjadi setelah semua alat penginstal di Installers properti melakukan operasi penghapusan instalasi mereka.

(Diperoleh dari Installer)
BeforeInstall

Terjadi sebelum Install(IDictionary) metode setiap alat penginstal dalam koleksi alat penginstal telah berjalan.

(Diperoleh dari Installer)
BeforeRollback

Terjadi sebelum alat penginstal di Installers properti digulung balik.

(Diperoleh dari Installer)
BeforeUninstall

Terjadi sebelum alat penginstal di Installers properti melakukan operasi penghapusan instalasinya.

(Diperoleh dari Installer)
Committed

Terjadi setelah semua alat penginstal di Installers properti telah melakukan penginstalan mereka.

(Diperoleh dari Installer)
Committing

Terjadi sebelum alat penginstal di Installers properti melakukan penginstalan mereka.

(Diperoleh dari Installer)
Disposed

Terjadi ketika komponen dibuang oleh panggilan ke Dispose() metode .

(Diperoleh dari Component)

Berlaku untuk

Lihat juga