最近一直在搞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服務了。(如圖15)
(圖15)
接下來就該讓Windows服務和安裝項目同時被編譯了。右鍵點擊解決方案,選擇「屬性」(如圖16),在出來的對話框中,勾上安裝項目後面的生成。(如圖17)
(圖16)
(圖17)
最後,右鍵解決方案,選擇「生成解決方案」,這時vs會將兩個項目都會編譯出來。不過要注意一點:
項目的啓動順序必定要Windows服務項目在前,安裝項目在後。