首先,當然是創建一個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)
<-
經過多次的測試才發現,這一步驟是有問題的!
添加完InstallUtil.exe 後,在安裝,提交,回滾,卸載 都添加項目的主輸出才能自動安裝服務。且順序必須是先添加InstallUtil.exe,再添加項目的主輸出!!!
(圖15)