0

我一直在關注有關編寫Windows服務和隨附安裝程序的this MSDN article。當我嘗試添加安裝項目,並在設計視圖我點擊右鍵並選擇「添加安裝程序」我收到以下消息:Windows服務安裝程序 - 服務名稱包含無效字符,爲空或太長

Service name contains invalid characters, is empty, or is too long

我的服務名稱設置爲「UploadManagerService」。這不包含任何我知道並且低於指定的80個字符限制的無效字符。

我讀過幾篇關於這個問題的文章。 This answer表明這是因爲服務名稱未在Visual Studio中設置,雖然這是在我的情況下設置的。我也試過setting the service name in the app.config看看是否有任何區別。還有什麼我可能會失蹤或解決這個問題?

+0

這就是VDPROJ做服務而不是windows安裝程序的方式。你會考慮嘗試使用MSI的ServiceInstall表而不是一個不需要的自定義操作的答案嗎? –

+0

@ChristopherPainter - 謝謝,我不會考慮這個。我只是按照教程而沒有考慮走下MSI路線。 – GrandMasterFlush

回答

0

我會考慮看着這個:

Create and Package a Windows Service using IsWiX

你真的可以通過不使用InstallUtil,並使用原生MSI功能簡化問題。事實上,你會注意到視頻只花了2分鐘,一半時間用於創建實際的服務。

0

我無法理解問題與名稱有什麼關係,但是我可以通過用幾行代碼手動編寫安裝程序來解決問題。

假設你是按照MSDN article並選擇「添加安裝程序」後,得到了同樣的問題:

  • 選擇在Solution Explorer中「ProjectInstaller.cs」並點擊F7 /右鍵單擊,然後選擇「查看代碼「。
  • 如果該類的構造函數不存在,則添加一個或編輯現有的構造函數 。

添加以下代碼:

var process = new ServiceProcessInstaller {Account = ServiceAccount.LocalSystem}; 
var serviceAdmin = new ServiceInstaller 
{ 
    StartType = ServiceStartMode.Manual, 
    ServiceName = "MyServiceName", 
    DisplayName = "My Service Display Name" 
}; 

Installers.Add(process); 
Installers.Add(serviceAdmin); 

InitializeComponent(); 

這個我在MSDN文章的指示進行的,並能與InstallUtil.exe安裝後服務。

我仍然不明白爲什麼這不起作用,但希望這會幫助別人解決問題。

+0

考慮到這個答案解決了我的問題,並且在技術上是否正確,會降低它的人關心解釋什麼是必要的? – GrandMasterFlush