[.NET] InstallUtil

Dieses Thema im Forum "Programmierung & Entwicklung" wurde erstellt von Lash, 2. Oktober 2009 .

  1. 2. Oktober 2009
    InstallUtil

    moin,
    habe mich ein wenig daran versucht einen dienst zu schreiben. problem ist nur, ich kann ihn nicht installieren. hab schon wie blöd gegooglet und finde andauernd wieder: IntallUtil TestWinService.exe.
    funktioniert aber nicht. die installutil wird gar nicht gefunden und wenn ich den kompletten pfad eingebe läuft es einmal kurz durch, installiert wird jedoch nichts (also als wenn ich einfach nur installutil starte). benutze windows7, kanns evtl daran liegen? hab im netz ein paar hinweise gefunden, dass es daran liegen könnte, da manch anderer das gleiche problem hat. unter xp soll es ohne probleme funktioniert haben und bei win7 läufts einfach nicht. hab jedoch keinen lösungsansatz dafür gefunden.
    jemand eine idee?
     
  2. 2. Oktober 2009
    AW: InstallUtil

    Tag,

    vielleicht hilft dir das ja weiter:

    Creating a Windows Service in VB.NET


    da is auchn Consolen Bild kannst dir des ja auch mal ranzoomen damite siehst was ausgeführt wird.
     
  3. 5. Oktober 2009
    AW: InstallUtil

    Hallo,

    das InstallUtil hat aus meiner Sicht ausgedient. Es ist mittlerweile möglich, Services zu schreiben, die sich selber installieren. Heisst, dass die Installation mit einem CommandLine Parameter angestoßen wird.

    Die Implementierung ist auch recht einfach. Beispiele gibt's hier:
    Self installing services in .NET | Chris Millers NuBlog
    .net self installing service - Google-Suche

    Hoffe das hilft.

    BG MaxDev

    //EDIT:
    Nebenbei: Hast Du denn die entsprechenden Parameter an das InstallUtil übergeben ?

    Hier steht wie es geht:
    Installer-Tool (Installutil.exe)
     
  4. 13. Oktober 2009
    AW: InstallUtil

    bin endlich mal dazu gekommen das auszuprobieren. habe nun aber folgendes problem:
    der dienst scheint zu laufen, habe ihn jedenfalls, wenn ich ihn starte, als prozess drin und kann ihn nicht beenden bzw ich beende ihn und er startet neu. deutet ja auf einen dienst hin oder sage ich da was falsches? jedenfalls wird mir der dienst nicht bei den diensten angezeigt..... was muss ch dafür tun?
     
  5. 13. Oktober 2009
    AW: InstallUtil

    Da ich nicht weiß was dein Service macht oder wie der Code aussieht, wäre es hilfreich wenn du hier vll den Code posten könntest?, falls dies möglich ist .


    Weil ansosnten kann man Relativ wenig dazu sagen, warum er sich neustartet etc.

    mfg
     
  6. 13. Oktober 2009
    AW: InstallUtil

    also es geht eher weniger darum, dass sich der prozess neustartet, als das ich einfach den dienst angezeigt haben möchte

    Code:
    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Linq;
    using System.ServiceProcess;
    using System.Text;
    using System.Configuration.Install;
    using System.Data;
    using System.IO;
    using System.Threading;
    
    namespace TestWinService
    {
     public partial class Service1 : ServiceBase
     {
     private NetworkDateServer m_DateServer;
     
     static void Main(string[] args)
     {
    
     string opt = null;
     if (args.Length > 1)
     {
     opt = args[0];
     }
    
    
     if (opt != null && opt.ToLower() == "/install")
     {
     TransactedInstaller ti = new TransactedInstaller();
     MyInstaller mi = new MyInstaller();
     ti.Installers.Add(mi);
     String path = String.Format("/ assemblypath ={0}",
     System.Reflection.Assembly.GetExecutingAssembly().Location);
     String[] cmdline = { path };
     InstallContext ctx = new InstallContext("", cmdline);
     //ti.Context(ctx);
     
     ti.Install(new System.Collections.Hashtable());
     }
     else if (opt != null && opt.ToLower() == "/uninstall")
     {
     TransactedInstaller ti = new TransactedInstaller();
     MyInstaller mi = new MyInstaller();
     ti.Installers.Add(mi);
     String path = String.Format("/ assemblypath ={0}",
     System.Reflection.Assembly.GetExecutingAssembly().Location);
     String[] cmdline = { path };
     InstallContext ctx = new InstallContext("", cmdline);
     //ti.Context(ctx);
     ti.Uninstall(null);
     }
    
     }
    
     protected override void OnStart(string[] args)
     {
     m_DateServer = new NetworkDateServer();
     Thread dateServerThread = new Thread(new ThreadStart(m_DateServer.StartServer));
     dateServerThread.Start();
     }
    
     protected override void OnStop()
     {
     m_DateServer.StopServer();
     }
     }
    }
    
    

    Code:
    using System;
    using System.Configuration.Install ;
    using System.ServiceProcess ;
    using System.ComponentModel ;
    
    
    public class MyInstaller : Installer
    {
    public MyInstaller ()
    {
    ServiceProcessInstaller spi = new ServiceProcessInstaller ();
    spi.Username = "*****";
    spi.Password = "*****";
    
    
    ServiceInstaller si = new ServiceInstaller ();
    si.ServiceName = "TestWinService";
    
    
    this .Installers.Add ( spi );
    this .Installers.Add ( si );
    }
    }
    
    lasse die NetworkDateServer klasse jetzt mal weg, da sie ja für die installation eher weniger von bedeutung ist
     
  7. 13. Oktober 2009
    AW: InstallUtil

    Schonmal mit Try catch blöcken probiert ?da es ja sein kann das wenn du den Dienst beendest ne EXCP auftritt, und deswegen der Dienst neustartet?, und wie meinst du: Wird nicht in der Liste angezeigt: also in der Verwaltung unter den Diensten? oder wie darf man das verstehen?

    mfg
     
  8. 13. Oktober 2009
    AW: InstallUtil

    genau so, möchte den dienst bei den restlichen diensten angezeigt haben. also wie du schon vermutet hast, verwaltung -> dienste
     
  9. 15. Oktober 2009
    AW: InstallUtil

    1. PUSH!
    2. habe mittlerweile festgestellt, dass der dienst nur ausgeführt wird, wenn ich in visual studio debugge. sprich wenn ich auf die .exe klicke passiert nix. wenn ich das debuggen gestartet habe, lässt sich der debugmodus in vs nicht beenden und über den taskmanager ebenfalls nicht, bzw er wird einfach automatisch neugestartet, bis ich vs mit dem offenen projekt schließe....
    hoffe es gibt noch jemanden hier der ahnung von selbstinstallierenden diensten hat. und bitte nicht einfach nur eine google-suche posten, weil selfinstalling service oder ähnliches kann ich auch selbst bei google eingeben... wenn ich da was finden würde, was mich weiterbringt würde ich hier nicht posten
     
  10. 17. November 2009
    AW: InstallUtil

    Du entwickelst einen Windows Service. Das man solche nicht mit der Exe starten kann, ist doch schon per Definition so, oder irre ich mich ?
    Der Link den ich Dir im vorigen Post geschrieben habe, enthält bereits ein Codebeispiel, das musst Du nur implementieren.

    Ich würd gern helfen aber sorry, ich weiß im Moment nicht mehr wo Dein Problem ist.

    BG MaxDev
     
  11. Video Script

    Videos zum Themenbereich

    * gefundene Videos auf YouTube, anhand der Überschrift.