程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> C#入門知識 >> 為C# Windows服務添加安裝程序

為C# Windows服務添加安裝程序

編輯:C#入門知識

最近一直在搞Windows服務,也有了不少經驗,感覺權限方面確定比一般程序要受限很多,但方便性也很多。像後台運行不阻塞系統,不用用戶登錄之類。哈哈,扯遠了,今天講一下那個怎麼給Windows服務做個安裝包。為什麼做安裝包?當然是方便了,不用每次調用InstallUtil,還有,就是看上去正規些。 

不多說了,先來看看怎麼做吧。首先,當然是創建一個Windows服務的項目。這個大家應該都知道怎麼做(這都不明白的留言問我),然後要給服務“添加安裝程序”,如圖1所示:(這一步和自己用InstallUtil注冊是完全一樣的) 



(圖1) 

添加後,會出來一個serviceProcessInstal1,還有serviceInstaller1,如果你一個項目裡有兩個服務的話,這裡就會有兩個serviceInstaller類,如圖2: 


(圖2) 

圖3是serviceProcessInstal1的屬性頁,其中Account就是指用於運行服務的帳戶,如果只是用於本地,可以選LocalSystem(本地系統),這是本地的最高權限,並可以選擇和桌面交互功能。如果安全性考慮的話,請選擇適合自己的。 

 

(圖3) 

圖4是serviceInstaller2的屬性頁,其中DisplayName就是顯示在Windows服務管理器中的服務名稱,Desciption是服務的說明。下面ServiceName是服務內部名稱。最關鍵的是下面的StartType,是指服務的啟動方式,是自動,手動和禁用三種。 

 

(圖4) 

下面,就是今天講的重點了,點擊“文件”->“添加”->“新建項目”(如圖5) 



(圖5) 

選擇“其他項目類型”->“安裝和部署”裡的“安裝項目”(如圖6) 

 

(圖6) 

建好項目後,右鍵剛才新建的安裝項目,選擇“視圖”->“文件系統”(如圖7) 

 
(圖7) 


這時,打開了文件系統屬性。可以看到,屏幕左邊,出現了三項文件系統的內容,因為我們是Windows服務程序,不需要在開始菜單和桌面上放置圖標,所以我們直接右鍵“應用程序文件夾”->“添加”->“項目輸出”(如圖8) 



(圖8) 

在出來的對話框中,選擇“主輸出”和“Release XXX”,這個由你的項目屬性決定,一般選擇Release Any CPU。(如圖9) 

 

(圖9) 

系統會自動把項目輸出文件,也就是Windows服務程序的EXE文件和所有引用的類庫文件都列在中間的框中。這時,為了方便安裝,我們把InstallUtil.exe和兩個我自己寫的批處理文件一起添加進去。添加方法類似上面,只是把“項目輸出”改成“文件”。 
結果如圖10所示: 



(圖10) 

接下來,就該配置一下安裝過程,讓安裝程序自動給我們安裝和卸載Windows服務。 

還是右鍵安裝項目,選“視圖”->“自定義操作”,如圖11: 

 

(圖11) 

左邊的窗口換到了自定義操作的視圖了,右鍵“安裝”->“添加自定義操作”(圖12),出現的對話框中,選中“應用程序文件夾”,再選中其中的InstallUtil.exe文件(圖13),添加好後,會在安裝操作下面多出一個InstallUtil.exe的分支。點一下它,在右邊的屬性頁裡,設置Arguments=“ 你的Windows服務文件名”,如圖14(注意文件名前要留一個空格) 

 

(圖12) 


 

(圖13) 

 

(圖14) 

同樣,在提交和卸載處,也添加InstallUtil.exe,不過屬性頁中設置Arguments=“ -u 你的Windows服務文件名”,這樣,安裝程序就能實現自動安裝注冊和卸載Windows服務了。其實簡單的做法只要在安裝,提交,回滾,卸載 都添加項目的主輸出的話也是可以達到自動注冊/卸載服務 功能的,而且不依賴於InstallUtil.exe(如圖15) 





(圖15) 

接下來就該讓Windows服務和安裝項目同時被編譯了。右鍵點擊解決方案,選擇“屬性”(如圖16),在出來的對話框中,勾上安裝項目後面的生成。(如圖17) 


 

(圖16) 


 

(圖17) 

最後,右鍵解決方案,選擇“生成解決方案”,這時vs會將兩個項目都會編譯出來。不過要注意一點:項目的啟動順序一定要Windows服務項目在前,安裝項目在後。 

 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved