C# Windows服務添加安裝程序

最近一直在搞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服務項目在前,安裝項目在後。

 
如下爲微軟網站信息(我照上面沒有成功,後來發如今12步有問題),按下面成功!
 

建立 Windows 服務的安裝項目

此部分介紹如何建立 Windows 服務項目,以及如何安裝 Windows 服務中使用已編譯的安裝項目。

建立 Windows 服務項目

  1. 啓動 Microsoft Visual Studio。
  2. 文件 菜單上指向 新建 ,而後單擊 項目
  3. 單擊 項目類型 下的 Visual C# 項目 ,而後單擊 模板 下的 Windows 服務

    請注意 在 Visual Studio 2005 或 Visual Studio 2008,展開 項目類型 下的 Visual C# 、 單擊 Windows ,而後單擊 模板 下的 Windows 服務
  4. 類型 名稱 文本框而後鍵入 C:\ 位置 文本框中的 LogWriterService 。 單擊 肯定
  5. 在解決方案資源管理器右鍵單擊 Service1.cs ,而後單擊 查看代碼
  6. OnStart 事件處理程序中請使用下面的代碼替換註釋:
    EventLog.WriteEntry("My simple service started.");
  7. 在解決方案資源管理器中,雙擊 Service1.cs
  8. 在代碼編輯器窗口中右鍵單擊 設計視圖 ,而後單擊 屬性
  9. 在屬性窗格中單擊 添加安裝程序 連接。
  10. 在屬性窗格的 ServiceInstaller 1 中, 更改 ServiceName Service 1 的屬性。
  11. 在設計視圖中代碼編輯器窗口中,單擊 ServiceProcessInstaller 1
  12. 在屬性窗格中更改成 LocalSystem (</a0>- LocalService NetworkService 的值是僅在 Microsoft Windows XP 中可用) 的 賬戶 屬性。

使用編譯的安裝項目安裝 Windows 服務

在完成上一節來配置 Windows 服務項目中的步驟以後,請按照下列添加部署項目打包服務應用程序,以即可以安裝服務應用程序的步驟操做:
  1. 將一個新項目添加到 LogWriterService 項目。 要這樣作,請按下列步驟操做:
    1. 在解決方案資源管理器右鍵單擊 解決方案 LogWriterService (1 項目) 指向 添加 ,,單擊 新建項目
    2. 單擊 安裝和部署項目 項目類型 ,而後單擊 模板 下的 安裝項目
    3. 名稱 文本框中,鍵入 ServiceSetup
    4. 類型 位置 文本中的 C:\ 框,而後單擊 肯定
  2. 通知到包是部署項目。 要這樣作,請按下列步驟操做:
    1. 在解決方案資源管理器右鍵單擊 ServiceSetup ,指向 添加 ,而後單擊 項目輸出
    2. 添加項目輸出組 對話框的在 項目 框中單擊 LogWriterService
    3. 單擊 主輸出 ,而後單擊 肯定
  3. 對於正確的安裝添加僅主輸出。 若要將自定義操做請按照下列步驟操做:
    1. 在解決方案資源管理器右鍵單擊 ServiceSetup ,指向 視圖 ,而後單擊 自定義操做
    2. 右鍵單擊 自定義操做 ,而後單擊 添加自定義操做
    3. 單擊 應用程序文件夾 ,而後單擊 肯定
    4. 單擊 主輸出來自 LogWriterService (Active) ,而後單擊 肯定

      請注意 主輸出 顯示在 安裝 提交 回滾 卸載
  4. 默認,安裝項目都不算生成配置。 若要生成解決方案,使用下面的方法:
    • 方法 1
      1. 右鍵單擊 LogWriterService ,而後單擊 生成
      2. 右鍵單擊 ServiceSetup ,而後單擊 生成
    • 方法 2
      1. 生成 菜單中上, 單擊生成整個解決方案的 配置管理器
      2. 單擊以選中 生成 複選框爲 ServiceSetup。
      3. 按 F 7 鍵生成整個解決方案。 當生成解決方案時,您將能夠可用於該服務的一個完整的安裝程序包。
  5. 若要安裝新的生成服務,右鍵單擊 ServiceSetup ,而後單擊 安裝
  6. ServiceSetup 對話框單擊 下一步 三次。 注意服務安裝時出現進度欄。
  7. 服務安裝單擊 關閉

驗證在工做的

  1. 在控制面板中雙擊 管理工具 ,並雙擊 服務
  2. 右鍵單擊 Service 1 ,而後單擊 開始
  3. 使用下列方法之一驗證的事件日誌中記錄的事件:
    • 方法 1
      1. 在控制面板中雙擊 管理工具 ,並雙擊 事件查看器
      2. 單擊在左的窗格中的 應用程序日誌 ,而後找到您在從右窗格的服務事件日誌。
    • 方法 2
      1. 在服務器資源管理) 器中展開 服務器 ComputerName事件日誌 、 展開 應用程序 ,而後展開 Service 1 。 從新調用 Service 1 是類,非服務的名稱自己。 所以, Service 1 用做應用程序名稱。 (它是不在本文介紹如何自定義名稱的範圍以內。
      2. 光標移日誌條目。 第二個條目從頂部應閱讀"個人簡單服務的啓動"。
相關文章
相關標籤/搜索