Anwendung als Dienst??
-
Hallo
Ich möchte eine Anwendung gern als Dienst laufen lassen. Ich hoffe mir kann jemand helfen, da ich es selbst noch nie gemacht habe.
Danke
SArkin
-
Hmm, schön das Du uns das mitgeteilt hast. Ich denke Du solltest eine Frage stellen wenn Du ein Problem hast.
-
Daß ich nicht weiß wie es geht ist ja mein Problem. Wenn du keine Lust hast zu es mir zu erklären, dann kannst du dir solche Einträge auch sparen. Mittlerweile habe ich es wohl doch selbst rausbekommen.
Einen Schönen Tag noch
-
SArkin schrieb:
Wenn du keine Lust hast zu es mir zu erklären, dann kannst du dir solche Einträge auch sparen.
Ich habe nicht behauptet, dass ich keine Lust dazu habe.
-
Hi,
erstelle ein WindowsDienst. Siehe Projektangebot im Porjektwizard.
Compilieren und dann installieren.
Das macht man so:C:\WINNT\Microsoft.NET\Framework\v1.1.4322\InstallUtil.exe PATH\AppliationName.exe
deinstallieren kann man so:
C:\WINNT\Microsoft.NET\Framework\v1.1.4322\InstallUtil.exe /u PATH\AppliationName.exeHier mal ein Beispiel:
using System; using System.Collections; using System.ComponentModel; using System.Data; using System.Diagnostics; using System.ServiceProcess; using ML.Global; using System.Runtime.Remoting; using System.Runtime.Remoting.Channels.Tcp; using System.Runtime.Remoting.Channels; using System.Configuration.Install; using ML.Global.Stammdaten.StammdatenServer; namespace StammdatenService { [RunInstaller(true)] public class HostServiceInstaller: Installer { private ServiceInstaller HostInstaller; private ServiceProcessInstaller HostProcessInstaller; public HostServiceInstaller() { HostInstaller=new ServiceInstaller(); HostInstaller.StartType=ServiceStartMode.Manual; HostInstaller.ServiceName="StammdatenServer_V1.11_Port_3002"; HostInstaller.DisplayName="StammdatenServer_V1.11_Port_3002"; Installers.Add(HostInstaller); HostProcessInstaller=new ServiceProcessInstaller(); HostProcessInstaller.Account=ServiceAccount.LocalSystem;// ServiceAccount.User; HostProcessInstaller.Password = null; HostProcessInstaller.Username = null; Installers.Add(HostProcessInstaller); } } public class StammdatenService : System.ServiceProcess.ServiceBase { private System.ComponentModel.Container components = null; public StammdatenService() { InitializeComponent(); } static void Main() { System.ServiceProcess.ServiceBase[] ServicesToRun; ServicesToRun = new System.ServiceProcess.ServiceBase[] { new StammdatenService() }; System.ServiceProcess.ServiceBase.Run(ServicesToRun); } private void InitializeComponent() { components = new System.ComponentModel.Container(); this.ServiceName = "StammdatenServer_V1.11_Port_3002" ; } protected override void Dispose( bool disposing ) { if( disposing ) { if (components != null) { components.Dispose(); } } base.Dispose( disposing ); } protected override void OnStart(string[] args) { try { int Port=3002; string Name="Stammdaten.tcp"; if(args.Length==2) { Port= System.Convert.ToInt32(args[0]); Name=args[1]; } BinaryServerFormatterSinkProvider tpfProvider = new BinaryServerFormatterSinkProvider(); tpfProvider.TypeFilterLevel =System.Runtime.Serialization.Formatters.TypeFilterLevel.Full; BinaryClientFormatterSinkProvider clientProv = new BinaryClientFormatterSinkProvider(); //RemotingConfiguration.CustomErrorsEnabled(false); IDictionary props = new Hashtable(); props["port"] = Port; TcpChannel channel = new TcpChannel( props, clientProv, tpfProvider ); ChannelServices.RegisterChannel( channel ); RemotingConfiguration.RegisterWellKnownServiceType(typeof(CStammdatenServer), Name, WellKnownObjectMode.Singleton); ApplicationLog.Write(System.Diagnostics.EventLogEntryType.Information,0,1,"StammdatenServer wurde gestartet : Port="+Port.ToString()+" / Name:"+Name); Console.WriteLine("StammdatenServer wurde gestartet..."); Console.ReadLine(); } catch (Exception ex) { string message = "Fehler beim Start des Stammdatenservers: " + ex.Message; Console.WriteLine(message); ApplicationLog.Write(System.Diagnostics.EventLogEntryType.Error,0,1,message); throw new Exception(message); } } /// <summary> /// Beenden Sie den Dienst. /// </summary> protected override void OnStop() { // TODO: Hier Code zum Ausführen erforderlicher Löschvorgänge zum Anhalten des Dienstes einfügen. } } }
Die Installerklasse "HostServiceInstaller" wird benötigt, um den Dienst vernünftig zu installieren. Sie wird bei der Installation ausgeführt.
Mehr dazu findet man im I-Net und in der Hilfe.
-
Danke,
das ist doch mal eine Antwort.
SArkin