2009-07-09 29 views
5

Tôi đang làm việc trên một ứng dụng bắt đầu như một dịch vụ nhưng chỉ khi một công tắc dòng lệnh báo cho nó (nếu không một biểu mẫu chuẩn được mở). Vì vậy, khi dịch vụ được khởi động bởi Windows lúc khởi động, nó phải vượt qua tùy chọn dòng lệnh này hoặc dịch vụ không khởi động được.Thêm đối số dòng lệnh vào trình cài đặt dịch vụ C#

Tôi muốn trình cài đặt (ServiceProcessInstaller) thêm tùy chọn dòng lệnh để khi dịch vụ được bắt đầu, nó thêm tùy chọn dòng lệnh vào lệnh.

Ví dụ: MyService.exe -commandlineoption

Tôi nghĩ đây là những gì thuộc tính ServiceProcessorInstaller.Context là cho, nhưng đó là cho các đối số được thực hiện trên InstallUtil.

Mọi đề xuất?

+0

Nó không rõ ràng từ câu hỏi của bạn: là ứng dụng của bạn cài đặt dịch vụ, bắt đầu nó, hoặc cả hai? – adrianbanks

+0

Tôi đang suy nghĩ trước đây. –

+0

Xin lỗi vì sự mơ hồ. Ứng dụng này thường là một ứng dụng biểu mẫu cửa sổ chuẩn. Tuy nhiên, trong phương thức Main(), nó tìm kiếm các đối số dòng lệnh. Nếu có tùy chọn dòng lệnh -service, nó sẽ khởi động dịch vụ. Tôi cũng đã bao gồm một trình cài đặt mà InstallUtil tìm kiếm để đăng ký dịch vụ với Windows. Khi dịch vụ được khởi động bởi Windows lúc khởi động, dịch vụ sẽ được gọi với tùy chọn dòng lệnh. – Tim

Trả lời

1

Khi tôi đã thêm tùy chọn dòng lệnh với các dịch vụ, tôi đã luôn luôn mặc định để chạy như một dịch vụ . Tuy nhiên, tôi biết rằng điều ngược lại là có thể bởi vì đó là cách SvcHost hoạt động: đó là một EXE luôn được cấu hình để tải DLL như các dịch vụ.

+0

Và đây là cách thức, lịch sự của Jorg bên dưới: http://stackoverflow.com/questions/652654/set-start-parameters-on-service-installation-with-net-serviceinstaller –

+0

Câu hỏi mà bạn liên kết với dường như là tôi cân gi. Tôi đoán tôi đã không tìm kiếm những từ đúng. Họ không thể làm cho nó dễ dàng, có thể họ?! Cảm ơn Steven! – Tim

+0

Jorg nhận được tín dụng, nhưng tôi vui mừng vì đã hướng sự chú ý của bạn đến công việc tốt của mình. –

0

Dịch vụ chỉ được cài đặt một lần cho mỗi lần phát hành. Có vẻ như bạn đang nói về việc truyền một đối số dòng lệnh cho dịch vụ khi nó bắt đầu.

Bạn có thể vượt qua đối số dòng lệnh để dịch vụ khi bạn bắt đầu nó bằng cách sử dụng ServiceController.Start method:

using (var controller = new ServiceController("servicename")) { 
    controller.Start(arg0, arg1); 
} 
+0

Nếu trường hợp đó xảy ra, ví dụ: Q của tôi tại http://stackoverflow.com/questions/652654/set-start-parameters-on-service-installation-with-net-serviceinstaller –

+0

Có mâu thuẫn không? –

+0

John, câu hỏi mà anh ta liên kết để giải thích cách định cấu hình dịch vụ để đính kèm các thông số được truyền bất cứ khi nào dịch vụ được bắt đầu bởi bất kỳ ai. Tôi nghĩ nó chứa câu trả lời cho câu hỏi của Tim. –

Các vấn đề liên quan