Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Service um programm zu installieren (https://www.delphipraxis.net/202314-service-um-programm-zu-installieren.html)

TurboMagic 19. Okt 2019 00:47

Service um programm zu installieren
 
Angenommen die setup.exe eines Programms benötigt zur Installation
aus verschiedenen Gründen Admin Rechte und angenommen im Programm
gibt es einen Auto Updater, der regelmäßig neue Updates herunter
lädt und dann auch installieren können soll.

Nun hat der Benutzer aber keine Admin Rechte nur hat ihm mal irgendwann
jemand mit Admin Rechten die erste Fassung installiert. Damit der
Benutzer nicht immer die IT für die Updates bemühen muss (die sicher
genau dann nicht verfügbar ist, wenn er das Update braucht), wäre
meine Idee, dass das setup bei Installation einen in Delphi geschriebenen
Windows Dienst einrichtet, der unter Admin Rechten läuft und dann später
nur die Aufgabe hat auf per TCP oder HTTPS geschickte Anfrage hin eine
setup.exe mit Admin Rechten die der DIenst hat zu starten.

Geht das, und fall ja wie muss ich den Service schreiben und was muss
der Installer tun (Inno Setup) um den Dienst zu installieren und damit
der Dienst unter einem Admin Konto ausgeführt wird?

Redeemer 19. Okt 2019 07:46

AW: Service um programm zu installieren
 
OT: Das ist auch so eine Krankheit, dass es kaum noch portable Programme gibt und jedes Programm meint, seinen eigenen Dienst einrichten zu müssen, oder?

inb4: „OT ist auch eine Krankheit.“

Michael II 19. Okt 2019 14:17

AW: Service um programm zu installieren
 
Ich kenne InnoSetup nicht und deshalb hilft dir meine Antwort eventuell nicht allzu viel.

Ich benutze Installaware Developer, das Setup fordert Admin Rechte und damit lässt sich ein solcher (in Delphi geschriebener Dienst) installieren. Es gibt hier im Forum Code. Wenn InnoSetup das Hinzufügen/Löschen eines Dienstes nicht von Hause aus anbietet, dann kannst du diesen Teil ja auch in Delphi realisieren und während dem Setup/dem Deinstallieren ausführen lassen.

Oder du installierst einen Windows Task und prüfst zum Beispiel beim Starten der Kiste oder zu gewissen Zeiten via diesen Task (lässt sich natürlich auch mit Delphi programmieren) auf Updates.

Mein grösstes Programm läuft nicht in einer Firma, sondern draussen in der freien Wildbahn, wo jede und jeder mit teilweise mehreren gleichzeitig laufenden Sicherheitsprogrammen das Updaten unabsichtlich verhindern kann. Ich habe mit Windows Tasks mehr Erfolg. Auf mehr als 90% aller Compis läuft das Updaten damit vollautomatisch ohne Zutun der UserInnen.

Dann gibt's noch
https://docs.microsoft.com/en-us/win...-uac--patching ("User Account Control (UAC) patching enables the authors of Windows Installer installations to identify digitally-signed patches that can be applied in the future by non-administrator users.")

Mit AdvancedInstaller kannst du mit wenigen Klicks LUA patchen:
https://www.advancedinstaller.com/us...-patching.html

[ Es gibt natürlich Menschen, welche argumentieren, dass dadurch die Kiste angreifbarer wird. Wenn es aber einen Angreifer gibt, der es schafft die Kiste unsicher zu machen, dann schafft er dies garantiert auch ohne deinen Service oder deinen Task. ]


Alle Zeitangaben in WEZ +1. Es ist jetzt 14:01 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz