ERLEDIGT
NEIN
NEIN
ANTWORTEN
3
3
ZUGRIFFE
1809
1809
EMPFEHLEN
-
18.12.07 10:15 #1
- Registriert seit
- Dec 2007
- Beiträge
- 10
Hallöchen!
Ich muss etwas weiter ausholen: ich habe zuerst, um die Funktionalität zu testen, eine Windows-Application in Visual Studio 2005 angelegt und meinen Code getestet. Alles funktionierte wunderbar, also habe ich im VS 2005 gesagt, "Windows-Dienst" und die Onstart bzw. onstop Prozeduren gefüllt.
Dann habe ich gesagt "veröffentlichen". Im VS 2005 Ordner / Projects / PdfPrinter / PdfPrinter / bin / Debug gibt es dann eine
- exe-Datei
- Application-Datei
- exe.config-Datei
- exe.manifest-Datei
- pdb-Datei
- vshost.exe-Datei
- vshost.exe.manifest
- vshost.application
- vshost.exe.config
und einen .publish-Ordner. Ich habe nun zuerst auf die Exe-Datei geklickt und "Ausführen als" gesagt. In den Windowsprozessen erscheint dann der PdfPrinter, es geschieht aber nichts. Dann habe ich bei MSDN ein bisschen herumgesurft und installutil gefunden. Darüber habe ich dann versucht, das als Dienst zu installieren. Wenn ich das richtig verstanden habe, sollte er danach in der Diensteliste erscheinen. Dort ist er aber nicht. Er hat angeblich beim Ausführen von installutil.exe keine Installationsdateien gefunden.
Nun, sowas habe ich noch nie gemacht und habe ehrlich gesagt Null Ahnung davon. Mein Try & Error hilft mir nicht weiter, genauso wenig wie die Dokumentationen, die ich dazu gefunden habe. Demnach habe ich alles richtig gemacht. Ich bin als SysAd eingeloggt, an den Berechtigungen kann es auch nicht liegen. Kann mir hier irgendwer weiterhelfen?Die InstallState-Datei wird entfernt, da keine Installer vorhanden sind.
Die Commitphase wurde erfolgreich abgeschlossen.
Die transaktive Installation ist abgeschlossen.
Danke,
Allie
-
Hi
Hast du denn in für deinen Dienst eine Installer-Klasse geschrieben, mit der du die Parameter für die Diensteinstallation festlegst?
http://www.codeproject.com/KB/dotnet...wsservice.aspxGrüße Nico
----------------------
Xing
----------------------
Zitat von Mark Twain (1835-1910)
Zitat von Mike Wilson - Biographie über Larry Ellison (CEO Oracle)
-
18.12.07 14:28 #3
- Registriert seit
- Dec 2007
- Beiträge
- 10
Okay, zu meiner Schande muss ich gestehen, dass ich bis dato noch keine Installerklasse hatte.
Meine Installerdatei:
Code :1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79
Imports System.ComponentModel Imports System.Configuration.Install Imports System.Diagnostics Imports System.ServiceProcess.ServiceInstaller Imports System Imports System.Collections Imports System.ServiceProcess <RunInstaller(True)> Public Class ProjectInstaller #Region " Component Designer generated code " Public Sub New() MyBase.New() Initializecomponent() End Sub Protected Overloads Sub Dispose( _ ByVal disposing As Boolean) If disposing Then If Not (components Is Nothing) Then components.Dispose() End If End If Me.ServiceProcessInstaller1.Dispose() 'MyBase.Dispose(disposing) End Sub 'Benötigt vom Component-Designer Private components As System.ComponentModel.IContainer Friend WithEvents ServiceProcessInstaller1 As _ System.ServiceProcess.ServiceProcessInstaller Friend WithEvents ServiceInstaller1 As _ System.ServiceProcess.ServiceInstaller Private Sub Initializecomponent() Me.ServiceProcessInstaller1 = _ New System.ServiceProcess.ServiceProcessInstaller() Me.ServiceInstaller1 = _ New System.ServiceProcess.ServiceInstaller() ' 'ServiceProcessInstaller1 ' Me.ServiceProcessInstaller1.Account = _ System.ServiceProcess.ServiceAccount.LocalSystem Me.ServiceProcessInstaller1.Password = Nothing Me.ServiceProcessInstaller1.Username = Nothing ' 'ServiceInstaller1 ' Me.ServiceInstaller1.DisplayName = "PdfPrinter" Me.ServiceInstaller1.ServiceName = "PdfPrinter" ' 'ProjectInstaller ' Me.ServiceProcessInstaller1.Installers.AddRange(New System.Configuration.Install.Installer() _ {Me.ServiceProcessInstaller1, _ Me.ServiceInstaller1}) 'Me.Installers.AddRange( _ 'New System.Configuration.Install.Installer() _ ' {Me.ServiceProcessInstaller1, _ 'Me.ServiceInstaller1}) End Sub #End Region End Class
Die Servicedatei:
Code :1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68
Imports System.IO Imports System.Threading Public Class Service1 Private simpleThread As Thread Protected Overrides Sub OnStart(ByVal args() As String) simpleThread = New Thread(New Threadstart(AddressOf WorkerSub)) simpleThread.Start() End Sub Protected Overrides Sub OnStop() ' Hier Code zum Ausführen erforderlicher Löschvorgänge zum Beenden des Dienstes einfügen. simpleThread.Abort() End Sub Sub datei_drucken(ByVal filename As String) Dim schreiben As New ProcessStartInfo("cmd.exe") 'wobei filename hier komplett mit Pfad übergeben werden muss, sonst gibt das nichts :o) '@TODO: Standarddrucker, Verzeichnisse, im Hintergrund öffnen schreiben.WorkingDirectory = "c:/Programme/Adobe/Reader 8.0/Reader/" schreiben.FileName = "AcroRd32.exe" schreiben.Arguments = "/p /h " & filename Process.Start(schreiben) End Sub Sub datei_verschieben(ByVal filename As String) Dim fpath = "c:\PDF\" & filename Dim zpath = "c:\PDF\done\" & filename File.Move(fpath, zpath) End Sub Private Sub WorkerSub() Dim actMinute As Integer actMinute = DateTime.Now.Minute While True If actMinute <> DateTime.Now.Minute Then Dim path As String = "C:/PDF/" Dim di As New DirectoryInfo(path) Dim fi As FileInfo() = di.GetFiles() Console.WriteLine("The following files exist in the current directory:") Dim fiTemp As FileInfo For Each fiTemp In fi datei_drucken(path & fiTemp.Name) datei_verschieben(fiTemp.Name) Next fiTemp actMinute = DateTime.Now.Minute End If Threading.Thread.Sleep(TimeSpan.FromMinutes(1.0)) End While End Sub End Class
Ich habe nun auch gelesen, dass ich ein Setupprojekt hinzufügen soll. Habe ich nun auch gemacht in meiner Projektmappe und alle Dateien dem Setup hinzugefügt. Trotzdem ist der Dienst nicht verfügbar in der Diensteliste und über installutil kommt genau das gleiche raus wie vorhin.
Gruß,
Allie
-
19.12.07 10:21 #4
- Registriert seit
- Dec 2007
- Beiträge
- 10
das Problem hat sich gelöst, es lag an der Installerklasse.
Ich habe (hoffentlich ein kleines) noch ein weiteres:
Ich rufe
AcroRd32.exe /p /h c:/pdf/meinedatei.pdf
auf über ein automatisiertes Konsolenfenster. Ohne Dienst mit diesem Befehl klappt auch der Ausdruck. Als Dienst jedoch klappt nur das anschließende Verschieben in den "done"-Ordner. Jetzt habe ich vermutet, dass das verschieben vielleicht zu schnell aufgerufen wird, während der noch den Acrobat Reader öffnet. Jetzt will er mir die PDF-Datei als XPS speichern. Oder manchmal meint er, ich hätte keinen Drucker installiert.
Warum habe ich als laufenden Dienst solche Problem damit? Ich habe auch die Alternative /t Druckername, Treiber, Port versucht, hierüber kommt auch nichts. Bin etwas ratlos *g*
Ciao,
Allie
Ähnliche Themen
-
Windows Dienst findet Ordner im Netzwerk nicht
Von Pablorama im Forum .NET Web und KommunikationAntworten: 5Letzter Beitrag: 29.04.10, 15:39 -
Auf windows installer dienst konnte nicht zugegriffen werden
Von geistgesicht im Forum Microsoft WindowsAntworten: 5Letzter Beitrag: 25.11.09, 00:54 -
Windows Vista - Auf Installer Dienst kann nicht zugegriffen werden
Von tecla im Forum Microsoft WindowsAntworten: 0Letzter Beitrag: 11.02.08, 14:09 -
Windows Dienst kennt System.Environment.SpecialFolder.CommonApplicationData nicht ?
Von Asterix-Ac im Forum .NET Application und Service DesignAntworten: 3Letzter Beitrag: 28.11.06, 20:15 -
Service Pack 2 für Windows XP veröffentlicht
Von Experience1986 im Forum Microsoft WindowsAntworten: 5Letzter Beitrag: 19.08.04, 16:06





Zitieren

Login





