考慮一個安裝項目的Windows服務,現在我怎麼能強制Windows服務啓動後,它完成安裝?Windows服務AutoStart
我嘗試添加項目安裝和連COMMITED我開始了服務,但那樣只會工作,如果我使用InstallUtil即時尋找一種方式,同時使用安裝項目,使之...
任何想法?
考慮一個安裝項目的Windows服務,現在我怎麼能強制Windows服務啓動後,它完成安裝?Windows服務AutoStart
我嘗試添加項目安裝和連COMMITED我開始了服務,但那樣只會工作,如果我使用InstallUtil即時尋找一種方式,同時使用安裝項目,使之...
任何想法?
您可以創建一個將使用ServiceController的類來開始你的新創建的服務新的自定義操作。
正如Johann Blais所建議的;首先添加一個部署項目&在「安裝」選項卡中添加自定義動作&「提交」選項卡在這些選項卡中執行所需操作,即啓動服務。
你是指製作一個新的DLL並將其附加到自定義操作?或exe文件?因爲我試着用.bat,它沒有工作! – Stacker 2010-10-11 12:47:38
如果您已經完成了Windows服務的OnStart功能,那麼只需將Windows服務項目的主要輸出添加到自定義操作中即可。 – KhanZeeshan 2010-10-11 12:58:08
我已經做到了,但然後呢這不會迫使tyhe服務安裝後啓動 – Stacker 2010-10-11 13:10:10
爲了讓您的服務在安裝後立即啓動,您可以添加以下幾行代碼行。通過訂閱Committed事件,可以確保它在安裝後啓動服務。還要注意service.StartType = ServiceStartMode.Automatic;
這一行,它反過來負責在自動啓動屬性爲ON的情況下安裝的服務,這使服務在系統重新啓動時自動啓動。
public class ProjectInstaller : Installer
{
private ServiceProcessInstaller process;
private ServiceInstaller service;
public ProjectInstaller()
{
process = new ServiceProcessInstaller();
process.Account = ServiceAccount.LocalSystem;
service = new ServiceInstaller();
service.ServiceName = "MyWCFServer";
service.StartType = ServiceStartMode.Automatic;
Installers.Add(process);
Installers.Add(service);
service.Committed += new InstallEventHandler(serviceInstaller_Committed);
}
void serviceInstaller_Committed(object sender, InstallEventArgs e)
{
ServiceController controller = new ServiceController(service.ServiceName);
controller.Start();
controller.WaitForStatus(ServiceControllerStatus.Running);
}
}
'網絡啓動<服務名>' – leppie 2010-10-11 12:07:24