1. 程式人生 > >把程式安裝成windows服務的過程及遇到的問題

把程式安裝成windows服務的過程及遇到的問題

做好了定時任務的程式,要把它放在伺服器上,作為windows服務執行,也就是說,退出登入,使用者登出後程序任然在後臺執行。

將exe程式釋出為服務的步驟記錄如下:

場景1 :程式路徑沒問題的情況

 按照網上的有些說法,進入控制檯,如下操作(VICTTEC_Maintain.exe就是要釋出的程式):

C:\Users\Administrator>C:\Windows\Microsoft.NET\Framework\v2.0.50727\InstallUtil.exe  C:\maintain\VICTTEC_Maintain.exe

報錯:

在初始化安裝時發生異常: System.BadImageFormatException: 未能載入檔案或程式集“file:///C:\maintain\VICTTEC_Maintain.exe”或它的某一個依賴項。生成此程式集的執行時比當前載入的執行時新,無法載入此程

問題在哪裡呢?根據報錯資訊來看完全沒有頭緒,經過一段時間的思考,想到會不會是InstallUtil.exe這個程式的版本問題呢?於是換個思路,離開v2.0.50727這個資料夾,進入

v4.0.30319這個版本的目錄,再次執行命令,OK,成功。

  

場景2:程式路徑本身有問題的情況

C:\Users\Administrator>C:\Windows\Microsoft.NET\Framework64\v4.0.30319\InstallUtil.exe    C:\Users\Administrator\Documents\Visual Studio 2010Projects\VICTTEC_Maintain\VICTTEC_Maintain\bin\Debug\VICTTEC_Maintain.exe

報錯:

Microsoft(R) .NET Framework 安裝實用工具版本 4.0.30319.1 Copyright (c) Microsoft Corporation.  All rights reserved. 在初始化安裝時發生異常: System.IO.FileNotFoundException: 未能載入檔案或程式集“file:///C:\Users\Administrator\Documents\Visual”或它的某一個依賴項。系統找不到指定的檔案。。

這個錯誤乍一看也是完全沒有頭緒,思考了很久,還是從報錯資訊入手,發現報錯資訊裡提示的目錄不完整,到"\Visual"就停止了,而實際的目錄是\Visual Studio,

於是乎,猜測是不是路徑名稱中的空格導致了報錯,於是將exe檔案轉移出來,放在c:\maintain 目錄下,也就是確保路徑名稱沒有空格,再次嘗試,OK,成功。

總結: windows中很多系統自帶的程式也並不完美,也會有一些小問題,要經常更換角度觀察問題,總會有解決的辦法。