Visual Studio'da oluşturulan Windows Hizmetini yükleyin

Visual Studio 2010'da yeni bir Windows Hizmeti oluşturduğumda, InstallUtil ve net start hizmetini kullanacaklarını belirten bir mesaj alıyorum.

Aşağıdaki adımları denedim:

  1. Create new project File -> New -> Project -> Windows Service
  2. Project Name: TestService
  3. Build project as is (Service1 constructor, OnStart, OnStop)
  4. Open command prompt, run "C:\Windows\Microsoft.NET\Framework\v4.0.30319\InstallUtil.exe" TestService.exe
  5. Run net start TestService.

4. adımın çıkışı

İşlem gören bir yüklemeyi çalıştırma.

     

Yüklemenin Yükleme aşamasını başlatma.

     

için günlük dosyasının içeriğine bakın.   C: \ Kullanıcılar \ kullanıcı adı \ Belgeler \ Visual Studio   2010 \ Projects \ Testservice \ Testservice \ obj \ x86 \ Debug \ TestService.exe   meclisin gelişimi.

     

Dosya C: \ Users \ myusername \ Documents \ Visual Studio'da bulunur   Projeler \ Tes \ 2010   tService \ Testservice \ obj \ x86 \ Debug \ TestService.InstallLog.

     

'C: \ Users \ myusername \ Documents \ Visual Studio derlemesini yükleme   2010 \ Projects \ TestS ervice \ TestService \ obj \ x86 \ Debug \ TestService.exe '.

     

Etkilenen parametreler:

     

logtoconsole =

     

logfile = C: \ Users \ myusername \ Documents \ Visual Studio   2010 \ Projects \ Testservice \ T   estService \ obj \ x86 \ Debug \ TestService.InstallLog

     

assemblypath = C: \ Users \ myusername \ Documents \ Visual Studio   2010 \ Projeler \ TestServ buz \ TestService \ obj \ x86 \ Debug \ TestService.exe

     

RunInstallerAttribute.Yes özniteliğine sahip genel yükleyici yok   C: \ Users \ myusername \ Documents \ Visual Studio’da bulunabilir   2010 \ Projects \ TestService \ TestSe rvice \ obj \ x86 \ Debug \ TestService.exe   Montaj.

     

Yükleme aşaması başarıyla tamamlandı ve Teslim aşaması   başlayan.

     

için günlük dosyasının içeriğine bakın.   C: \ Kullanıcılar \ kullanıcı adı \ Belgeler \ Visual Studio   2010 \ Projects \ Testservice \ Testservice \ obj \ x86 \ Debug \ TestService.exe   meclisin gelişimi.

     

Dosya C: \ Users \ myusername \ Documents \ Visual Studio'da bulunur   Projeler \ Tes \ 2010   tService \ Testservice \ obj \ x86 \ Debug \ TestService.InstallLog.

     

Montajı tamamlama 'C: \ Users \ myusername \ Documents \ Visual Studio   2010 \ Projects \ TestS ervice \ TestService \ obj \ x86 \ Debug \ TestService.exe '.

     

Etkilenen parametreler:

     

logtoconsole =

     

logfile = C: \ Users \ myusername \ Documents \ Visual Studio   2010 \ Projects \ Testservice \ T   estService \ obj \ x86 \ Debug \ TestService.InstallLog

     

assemblypath = C: \ Users \ myusername \ Documents \ Visual Studio   2010 \ Projeler \ TestServ buz \ TestService \ obj \ x86 \ Debug \ TestService.exe

     

RunInstallerAttribute.Yes özniteliğine sahip genel yükleyici yok   C: \ Users \ myusername \ Documents \ Visual Studio’da bulunabilir   2010 \ Projects \ TestService \ TestSe rvice \ obj \ x86 \ Debug \ TestService.exe   Montaj.

     

Yükleyici olmadığından InstallState dosyasını kaldırın.

     

Komisyon aşaması başarıyla tamamlandı.

     

İşlem yapılan yükleme tamamlandı.

5. adımın çıkışı

Servis adı geçersiz.

NET HELPMSG 2185 yazarak daha fazla yardım alabilirsiniz.

117

6 cevap

Service.cs dosyasını tasarımcıda açmanız gerekiyor, sağ tıklayın ve "Yükleyici Ekle" menü seçeneğini seçin.

Kutudan çıkar çıkmaz ... önce yükleyici sınıfını oluşturmanız gerekir.

Servis yükleyiciyle ilgili bazı referanslar:

Nasıl Yapılır: Servis Uygulamanıza Yükleyici Ekleme

Oldukça yaşlı ... ama bu konuştuğum şey:

C# içindeki Windows Hizmetleri: Yükleyiciyi Ekleme (bölüm 3)

Bunu yaparak, bir ProjectInstaller.cs otomatik olarak oluşturulur. Sonra bunu çift tıklayabilir, tasarımcıya girebilir ve bileşenleri yapılandırabilirsiniz:

  • serviceInstaller1 , hizmetin özelliklerine sahiptir: Açıklama , Ekran Adı , HizmetAdı ve < kod> StartType en önemlisidir.

  • serviceProcessInstaller1 bu önemli özelliğe sahiptir: Hesap , hizmetin çalışacağı hesaptır.

Örneğin:

this.serviceProcessInstaller1.Account = ServiceAccount.LocalSystem;
215
katma
VS2013'te de aynı hatayı alıyorum. Sağladığınız bağlantıları kontrol ettim, Bileşenler servisi [İşlem] Yükleyici1 de dahil olmak üzere ProjectInstaller’ın uygun şekilde yapılandırıldığını doğruladım. İnstallutil.exe dosyasını Yönetici olarak çalıştırıyorum. Yine de "RunInstallerAttribute.Yes özniteliği bulunan hiçbir genel yükleyici bulunamadı" bildiriliyor. Herhangi bir fikir?
katma yazar Barry Dysert, kaynak
Lol. "Oldukça eski" bağlantısının Arcane Kodu adlı bir siteye kurulduğunu seviyorum. Bu sayfa ne kadar eski olursa, o kadar doğru olanı :-) olur
katma yazar HotN, kaynak
Yükleyiciyi eklemek ve hesabı LocalSystem'a ayarlamak yaptı. Teşekkürler!
katma yazar Luc, kaynak

Bakmak:

RunInstallerAttribute.Yes özniteliğine sahip hiçbir genel yükleyici C: \ Users \ myusername \ Documents \ Visual Studio 2010 \ Projects \ TestService \ TestSe rvice \ obj \ x86 \ Debug \ TestService.exe derlemesinde bulunamadı.

Kodunuzda bir yükleyici sınıfı olmayabilir. Bu, installer ile miras kalan ve installutil uygulamasından çalıştırılabilir kodunuzu hizmet olarak nasıl yükleyeceğinizi söyleyen bir sınıftır.

P.s. I have my own little self-installing/debuggable Windows Service template here which you can copy code from or use: Debuggable, Self-Installing Windows Service

11
katma
Visual Studio'daki TestService projesine sağ tıkladığımda -> Özellikler -> Hizmetler, sayfa devre dışı ... farklı bir yere mi bakıyordunuz? Uygulama altında, Meclis adı TestService'dir.
katma yazar jkh, kaynak
@John: Servis konsolu ile ilgili ilk bölümü yoksay, Aslında ile başlayan ikinci bölüme bak. Yükleyici bulamadığından hizmet hiç yüklenmemiş gibi görünüyor.
katma yazar James Michael Hare, kaynak

Yükleyiciyi oluşturmanın ve bu hata iletisinden kurtulmanın alternatif bir yolu. Ayrıca VS2015 express'in "Yükleyici Ekle" menü öğesine sahip olmadığı görülüyor.

Sadece bir sınıf oluşturmanız ve aşağıdaki kodu eklemeniz ve System.Configuration.Install.dll referansını eklemeniz yeterlidir.

using System.Configuration.Install;
using System.ServiceProcess;
using System.ComponentModel;


namespace SAS
{
    [RunInstaller(true)]
    public class MyProjectInstaller : Installer
    {
        private ServiceInstaller serviceInstaller1;
        private ServiceProcessInstaller processInstaller;

        public MyProjectInstaller()
        {
           //Instantiate installer for process and service.
            processInstaller = new ServiceProcessInstaller();
            serviceInstaller1 = new ServiceInstaller();

           //The service runs under the system account.
            processInstaller.Account = ServiceAccount.LocalSystem;

           //The service is started manually.
            serviceInstaller1.StartType = ServiceStartMode.Manual;

           //ServiceName must equal those on ServiceBase derived classes.
            serviceInstaller1.ServiceName = "SAS Service";

           //Add installer to collection. Order is not important if more than one service.
            Installers.Add(serviceInstaller1);
            Installers.Add(processInstaller);
        }
    }
}
8
katma
VS2015’i de çalıştırdım ve bu çözüm daha önce aldığım "RunInstallerAttribute.Yes ile ortak yükleyici yok" hata mesajını aştı. Teşekkür ederim!
katma yazar PHBeagle, kaynak

Başka bir olası sorun (karşılaştığım):

ProjectInstaller sınıfının public olduğundan emin olun. Dürüst olmak gerekirse, tam olarak nasıl yaptığımdan emin değilim, ancak ProjectInstaller.Designer.cs 'a olay işleyicileri ekledim.

this.serviceProcessInstaller1.BeforeInstall + = new System.Configuration.Install.InstallEventHandler (this.serviceProcessInstaller1_BeforeInstall);

Sanırım ProjectInstaller.cs öğesinde işleyici işlevini oluşturma işlemi sırasında sınıf tanımını değiştirdi.

genel sınıf ProjectInstaller: System.Configuration.Install.Installer

için

kısmi sınıf ProjectInstaller: System.Configuration.Install.Installer

replacing the public keyword with partial. So, in order için fix it it must be

genel kısmi sınıf ProjectInstaller: System.Configuration.Install.Installer

Visual Studio 2013 Community edition kullanıyorum.

3
katma

İki tipik problem:

  1. ProjectInstaller sınıfını eksik (@MiguelAngelo'nun işaret ettiği gibi)
  2. komut istemi , " Yönetici olarak çalıştır " olmalı
3
katma

VS 2010 ve .NET 4.0 ve Sonrasında Gizli Bir Değişiklik

No public installers with the RunInstallerAttribute.Yes attribute could be found

.NET'te kendi durumunuz için bu küçük ayarlamayı ortaya çıkarabilecek bir takma ad değişikliği veya derleyici temizliği var.

Aşağıdaki kodunuz varsa…

RunInstaller(true)  //old alias  

Güncellemeniz gerekebilir

RunInstallerAttribute(true) //new property spelling

Derleme zamanında veya çalışma zamanında kapakların altında değiştirilen bir diğer ad gibidir ve bu hata davranışını alırsınız. RunInstallerAttribute (true) 'a yapılan yukarıdaki açık değişiklik tüm makinelerde tüm kurulum senaryolarımızda düzeltildi.

Proje veya hizmet yükleyici ekledikten sonra “eski” RunInstaller (true) olup olmadığını kontrol edin ve yeni RunInstallerAttribute (true) olarak değiştirin

1
katma
Bildiğim kadarıyla "Öznitelik" postfixini çıkartabilirsiniz, yani [RunInstaller (true)] ve [RunInstallerAttribute (true)] aynıdır. Farklı bir özellikle deneyin, örn. [DebuggerStepThrough ()] ve [DebuggerStepThroughAttribute ()] - ikisi de bir sınıfa uygulandığında çalışır.
katma yazar Matt, kaynak
Windows
Windows
729 Katılımcıların

Windows ile ilgili tüm sorunların çözümüne yanıt arandığı ve paylaşımların yapıldığı bir gruptur. @SerCiTV @Tekpay @Apktanitim kanal/grupların uzantısıdır. https://t.me/joinchat/H1pwvUwqv4etCBtv9Oi_qQ