簡體   English   中英

Windows 服務安裝程序 - 服務名稱包含無效字符、為空或太長

[英]Windows Service Installer - Service name contains invalid characters, is empty, or is too long

我一直在關注這篇關於編寫 Windows 服務和隨附安裝程序的 MSDN 文章 當我嘗試添加安裝程序項目並右鍵單擊設計視圖並選擇“添加安裝程序”時,我收到以下消息:

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

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

我在這里閱讀了幾篇關於這個問題的文章。 This answer表明這是因為服務名稱未在 Visual Studio 中設置,盡管這是在我的情況下設置的。 我還嘗試在 app.config 中設置服務名稱以查看是否有任何區別。 還有其他我可能會遺漏的東西或解決這個問題的方法嗎?

我無法理解名稱有什么問題,但我可以通過使用幾行代碼手動編寫安裝程序來解決這個問題。

假設您遵循MSDN 文章並在選擇“添加安裝程序”后遇到同樣的問題:

  • 在解決方案資源管理器中選擇“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 安裝該服務。

我仍然不明白為什么這行不通,但希望這能幫助其他人解決這個問題。

我收到了這個確切的錯誤,一切都應該沒問題。 您快速閱讀錯誤消息,責備它,然后開始檢查項目名稱、類名稱和……等一下:

在此處輸入圖像描述

MSDN 教程將此步驟命名為:

在“設計”選項卡中,從快捷菜單中選擇“屬性”。 在“屬性”窗口中,將 ServiceName 值更改為 MyNewService。 https://learn.microsoft.com/en-us/dotnet/framework/windows-services/media/windows-service-properties.png

我只是在構建服務時沒有遵循教程,所以請記住伙計們:閱讀錯誤消息並檢查它所抱怨的每一個點!

我會考慮看這個:

使用 IsWiX 創建和打包 Windows 服務

您可以通過取消使用 InstallUtil 並使用本機 MSI 功能來真正簡化問題。 事實上,您會注意到視頻只用了 2 分鍾,其中一半時間用於創建實際服務。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM