PDA

View Full Version : [C#] Installare Windows Service


||ElChE||88
14-05-2009, 15:10
Che cos'è che sbaglio?
Installutil.exe mi da questo errore:

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


Il codice è:

[RunInstaller(true)]
class ServiceInstaller : Installer
{
public ServiceInstaller()
{
ServiceProcessInstaller serviceProcessInstaller = new ServiceProcessInstaller()
{
Account = ServiceAccount.LocalSystem,
Username = null,
Password = null
};

ServiceInstaller serviceInstaller = new ServiceInstaller()
{
DisplayName = "blabla",
ServiceName = "blabla",
StartType = ServiceStartMode.Automatic
};

this.Installers.Add(serviceProcessInstaller);
this.Installers.Add(serviceInstaller);
}
}

advapi
15-05-2009, 15:22
ciao,
sei da vista o da winxp?? se sei da vista prova a lanciare la command con permessi di amministratore (io utilizzo sempre quella di VS che trovi sotto i tools)
hai aggiunto un installer (penso di si visto il nome della classe) al tuo progetto?? ultima cosa hai aggiunto l'installer e anche il ServiceProcessInstaller ??

ciao

||ElChE||88
15-05-2009, 15:28
ciao,
sei da vista o da winxp?? se sei da vista prova a lanciare la command con permessi di amministratore (io utilizzo sempre quella di VS che trovi sotto i tools)
Si, eseguito tutto come amministratore.
hai aggiunto un installer (penso di si visto il nome della classe) al tuo progetto?? ultima cosa hai aggiunto l'installer e anche il ServiceProcessInstaller ??
L'Installer è proprio quella classe. Cosa intendi per aggiungere il ServiceProcessInstaller? Quello lo uso in quella classe, ci sono altri modi per usarlo?
Ah, ho provato anche a mettere [RunInstallerAttribute(true)], ma non cambia niente.

advapi
15-05-2009, 15:34
tu hai creato un servizio, poi presumo tu abbia fatto add installer dalle properties e ti ha creato un altro .cs con dentro un service installer e un serviceprocess installer, giusto?

||ElChE||88
15-05-2009, 15:37
tu hai creato un servizio, poi presumo tu abbia fatto add installer dalle properties e ti ha creato un altro .cs con dentro un service installer e un serviceprocess installer, giusto?
Il .cs è quello sopra, ma ServiceInstaller e ServiceProcess installer li ho aggiunti io.

advapi
15-05-2009, 15:39
uhm fallo aggiungere da visual studio, fai cosi, vai sul tuo file del servizio per esempio Service1.cs poi sotto properties dovresti avere add installer...

||ElChE||88
15-05-2009, 15:41
uhm fallo aggiungere da visual studio, fai cosi, vai sul tuo file del servizio per esempio Service1.cs poi sotto properties dovresti avere add installer...
Ma è proprio quello che ho fatto...
Crea questo:

using System;
using System.Collections;
using System.Collections.Generic;
using System.ComponentModel;
using System.Configuration.Install;
using System.Linq;

namespace WindowsService
{
[RunInstaller(true)]
class Installer1 : Installer
{
public Installer1()
{
InitializeComponent();
}
}
}

A cui ho aggiunto ServiceInstaller e ServiceProcessInstaller...
InitializeComponent() l'ho levato, tanto inizializzava il niente (anche rimettendolo non cambia niente).

advapi
15-05-2009, 15:45
hai la possibilità di mandarmi il progetto? se si contattami in pvt.. ciao

||ElChE||88
15-05-2009, 15:47
hai la possibilità di mandarmi il progetto? se si contattami in pvt.. ciao
Non serve... ho risolto.
No public installers with the RunInstallerAttribute.Yes attribute could be found
Devo leggere meglio i messaggi d'errore. :asd:
Bastava settare la classe a public (mi chiedo perché non l'abbia fatto VS). :cry:

advapi
15-05-2009, 15:50
penso che di default VS imposti le classi come private...

||ElChE||88
15-05-2009, 15:53
penso che di default VS imposti le classi come private...
Si, in C# le classi sono private di default...
Mi chiedo perché non abbia aggiunto il public, un installer private non ha senso (non è accessibile).

advapi
15-05-2009, 15:54
boh! meglio cosi! lunga vita a VS :D

MarcoGG
15-05-2009, 16:32
Mmm, a me ( C# 2008 ) le genera così... :

namespace WindowsService1
{
public partial class Service1 : ServiceBase
{
public Service1()
{
InitializeComponent();
}

protected override void OnStart(string[] args)
{
}

protected override void OnStop()
{
}
}
}

e anche

namespace WindowsService1
{
[RunInstaller(true)]
public partial class ProjectInstaller : Installer
{
public ProjectInstaller()
{
InitializeComponent();
}
}
}

Aggiornate la versione... :D

||ElChE||88
15-05-2009, 16:34
Aggiornate la versione... :D
2008 :fagiano:
Proverò su un altro pc.

advapi
15-05-2009, 16:35
hai sp1 installato?

MarcoGG
15-05-2009, 16:36
hai sp1 installato?

Già ! ;)

||ElChE||88
15-05-2009, 16:38
hai sp1 installato?
Certo... tutto aggiornato all'ultima versione (Framework compreso).