AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Wie Remote Update eine Windows-Service?
Thema durchsuchen
Ansicht
Themen-Optionen

Wie Remote Update eine Windows-Service?

Ein Thema von sh17 · begonnen am 8. Mär 2016 · letzter Beitrag vom 9. Mär 2016
Antwort Antwort
Benutzerbild von Dalai
Dalai

Registriert seit: 9. Apr 2006
1.684 Beiträge
 
Delphi 5 Professional
 
#1

AW: Wie Remote Update eine Windows-Service?

  Alt 8. Mär 2016, 19:45
Code:
@echo off
set Quelldatei="\\Quellrechner\Pfad\Service.exe"
set Zieldatei="Laufwerk:\Verzeichnis\Service.exe"
set ServiceName="service name"
set log=%~dpn0.log
if exist %Quelldatei% (
echo Service %ServiceName% wird ausgetauscht. >>%log%
sc stop %ServiceName% >%log%
copy %Quelldatei% %Zieldatei% >>%log%
del %Quelldatei% >>%log%
sc start %ServiceName% >>%log%
sc query %ServiceName% >>%log%
)
Da gibt's noch etwas Optimierungspotential:
Code:
@echo off
set Quelldatei="\\Quellrechner\Pfad\Service.exe"
set Zieldatei="Laufwerk:\Verzeichnis\Service.exe"
set ServiceName="service name"
set log=%~dpn0.log
if exist %Quelldatei% (
    echo --
    echo %date% %time%
    echo Service %ServiceName% wird ausgetauscht.
    sc stop %ServiceName%
    copy %Quelldatei% %Zieldatei%
    del %Quelldatei%
    sc start %ServiceName%
    sc query %ServiceName%
)>>"%log%"
Übrigens sollte man mit Anführungszeichen innerhalb von Umgebungsvariablen vorsichtig sein. Wenn man sie beim Verwenden der Variable mal nicht haben will, bekommt man sie nicht mehr weg. Sowas kommt zum Beispiel vor, wenn man einen komplexen String aus mehreren Variablen zusammenbauen will. Das führt bei Quotes im Variablenwert u.U. zur Dopplung selbiger mit entsprechend "tollen" Effekten. Daher ist es besser, die Anführungszeichen erst bei der Verwendung von Variablen zu setzen. Bei dem Beispiel hier hab ich mir diese Änderung trotzdem gespart (bis auf das "%log%" am Ende).

Für den Fall, dass die einfache Umlenkung beim Stoppen des Dienstes Absicht war, kann man die doppelte Umlenkung in meiner Variante auch in eine einfache ändern oder das Log zu Beginn des Skripts löschen.

MfG Dalai

Geändert von Dalai ( 8. Mär 2016 um 19:49 Uhr) Grund: Zeitstempel im Log ergänzt
  Mit Zitat antworten Zitat
nahpets
(Gast)

n/a Beiträge
 
#2

AW: Wie Remote Update eine Windows-Service?

  Alt 9. Mär 2016, 09:55
@Dalai

Mit dem > hast Du recht, es hätte eine Zeile höher gemusst, so, wie ich es schrieb, bekommt man ja die erste Meldung nie zu Gesicht, da die zweite Ausgabe die Datei neu erstellt.

Prinzipiell war es schon so gemeint, dass die Log-Datei jedes Mal neu erstellt wird, um sie bei Bedarf per Blat verschicken zu können und damit nicht irgendwann eine annähernd endlose Datei zu verschicken.

War halt einfach so hingedaddelt, dass man die Umleitung der Ausgabe auch hinter der schließenden Klammer machen kann, wusste ich nicht. Das ist natürlich viel eleganter.

Deine Anmerkung zu den " ist auch korrekt, da kann man ggfls. schon "ungewöhnliche" Nebeneffekte erleben, wenn die " mal nicht passend sind, vor allem die, die irgendwo in Variabeln versteckt sind.
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:35 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz