CÁC GIẢI PHÁP LẬP TRÌNH C# - Trang 669

669

Chương 17: Sự hòa hợp với môi trường Windows

Như đã đề cập trong mục 17.5, bạn không thể chạy các lớp dịch vụ một cách trực tiếp. Vì dịch
vụ được tích hợp mức cao với hệ điều hành Windows và thông tin được giữ trong Registry nên
dịch vụ phải được cài đặt trước khi chạy.
Nếu đang sử dụng Microsoft Visual Studio .NET, bạn có thể tạo một bộ cài đặt cho dịch vụ
một cách tự động bằng cách nhắp phải vào khung thiết kế của lớp dịch vụ và chọn Add
Installer
từ menu ngữ cảnh. Bộ cài đặt này có thể được gọi bởi các dự án triển khai hoặc công
cụ Installutil.exe để cài đặt dịch vụ.
Bạn cũng có thể tự tạo một bộ cài đặt cho dịch vụ Windows theo các bước sau:

1. Tạo một lớp thừa kế từ lớp

Installer

.

2. Áp dụng đặc tính

System.ComponentModel.RunInstallerAttribute(true)

cho lớp cài

đặt.

3. Trong phương thức khởi dựng của lớp cài đặt, tạo một thể hiện của lớp

System.ServiceProcess.ServiceProcessInstaller

. Thiết lập các thuộc tính

Account

,

UserName

, và

Password

của đối tượng

ServiceProcessInstaller

để cấu hình tài khoản

mà dịch vụ sẽ chạy.

4. Cũng trong phương thức khởi dựng của lớp cài đặt, tạo một thể hiện của lớp

System.ServiceProcess.ServiceInstaller

cho mỗi dịch vụ cần cài đặt. Sử dụng các

thuộc tính của đối tượng

ServiceInstaller

để cấu hình các thông tin về mỗi dịch vụ,

bao gồm:

ServiceName

—Chỉ định tên mà Windows sử dụng để nhận dạng dịch vụ. Tên

này phải trùng với giá trị được gán cho thuộc tính

ServiceBase.ServiceName

.

DisplayName

—Chỉ định tên thân thiện cho dịch vụ.

StartType

—Sử dụng các giá trị thuộc kiểu liệt kê

System.ServiceProcess.

ServiceStartMode

để điều khiển việc dịch vụ được khởi động tự động hay

bằng tay, hay bị vô hiệu.

ServiceDependsUpon

—lấy một mảng kiểu chuỗi chứa tên các dịch vụ phải

được chạy trước khi dịch vụ hiện hành chạy.

5. Sử dụng thuộc tính

Installers

thừa kế từ lớp cơ sở

Installer

để lấy một đối tượng

System.Configuration.Install.InstallerCollection

. Thêm các đối tượng

ServiceProcessInstaller

và tất cả các đối tượng

ServiceInstaller

vào tập hợp này.

Lớp

ServiceInstallerExample

dưới đây là một bộ cài đặt cho lớp

ServiceExample

trong mục

17.5. Dự án mẫu cho mục này chứa cả hai lớp

ServiceExample

ServiceInstallerExample

,

và tạo ra file thực thi ServiceInstallerExample.exe.

using System.ServiceProcess;

using System.Configuration.Install;

using System.ComponentModel;

[RunInstaller(true)]

public class ServiceInstallerExample : Installer {

Liên Kết Chia Sẽ

** Đây là liên kết chia sẻ bới cộng đồng người dùng, chúng tôi không chịu trách nhiệm gì về nội dung của các thông tin này. Nếu có liên kết nào không phù hợp xin hãy báo cho admin.