Frage zu Schreibrechten im Programmverzeichnis / Updatefunktion

Antworten
AlterMann
Beiträge: 233
Registriert: So 13. Dez 2009, 09:43
OS, Lazarus, FPC: Lazarus 3.0 (rev lazarus_3_0) FPC 3.2.2 i386-win32-win32/win64
CPU-Target: x86 64Bit
Wohnort: Niederösterreich

Frage zu Schreibrechten im Programmverzeichnis / Updatefunktion

Beitrag von AlterMann »

Hallo

Ich habe ein Komplettsystem (Fertigung, Einkauf, Lager, Verkauf/Fakturierung, Zeiterfassung usw ...) geschrieben welches inzwischen aus acht eigenständigen Prorammen besteht, die auf eine gemeinsame Datenbank zugreifen.

Die verschiedenen Programmteile sind auf ~40 PC in unterschiedlicher Kombination in Betrieb.
Da ich das ganze ständig weiterentwickle und auch Anpassungen an neue Gegebenheiten und Benutzerwünsche oft erfolgen, habe ich sehr früh (Arbeite schon ~ 6 Jahre daran) eine Updatefuntion implementiert.

Auf meinem Entwicklungsrechner habe ich für jedes Modul eine einfache Batchdatei, die die '.exe' durch strip jagt und unter dem Namen programmA.upd in ein best. Verzeichnis am Server kopiert.

Die jeweiligen Programme schauen beim Start in dieses Verzeichnis, kopieren die Datei ins Programmverzeichnis und rufen ein kleines Zusatzprogramm auf bevor sie sich selbst beenden. Das Zusatzprogramm löscht programmA.exe und benennt programmA.upd auf .exe um. Startet programmA.exe und beendet sich selbst.

Das funktioniert an sich sehr gut und zuverlässig.
Nur verhalten sich alle Windowsversionen anders, was die Schreibrechte im Programmordner betrifft.
Bei manchen reicht es das Programm als Administrator auszuführen, bei manchen führt dies wiederrum dazu dass man vorher noch eine Abfrage bestätigen muss.
Da sich bei uns auch manche Mitarbeiter ihr Betriebssystem selbst aufsetzen (oder das Programm auf eigenen Notebooks ausführen) ist für mich nicht immer gewährleistet, dass die Programme sich auch tatsächlich updaten (was u.U. zu unerwünschten Effekten in der DB führen kann).

Wie würdet ihr das lösen?
Die Exe ins zugehörige Appdata-Verzeichnis (dort lege ich jetzt auch schon einige Config- und Hilfsdateien ab) und in Programme nur einen Link drauf?
Eine Manifestdatei mitliefern?
Das Vorhandensein der Schreibberechtigung beim Start prüfen und melden (Würde halt auch wieder einen Eingriff meinerseits beim Benutzer erfordern)?
Ganz andere Ideen?

Ich möchte aber keine Grundsatzdiskussion über veraltete Windowsversionen, über Netzwerksicherheit o.ä. vom Zaun treten.

Hat jemand Ideen?

Schönen Abend
Christian
Früher war alles besser. Und aus Holz!

Benutzeravatar
fliegermichl
Lazarusforum e. V.
Beiträge: 1430
Registriert: Do 9. Jun 2011, 09:42
OS, Lazarus, FPC: Lazarus Fixes FPC Stable
CPU-Target: 32/64Bit
Wohnort: Echzell

Re: Frage zu Schreibrechten im Programmverzeichnis / Updatefunktion

Beitrag von fliegermichl »

Eine Möglichkeit wäre, den aktuellen Versionsstand mit in einer Tabelle in der DB zu speichern und mit der aktuellen Programmversion vergleichen.
Damit wäre schonmal sichergestellt, daß nicht mit einer veralteten Programmversion in der Datenbank herumfuhrwerkt wird.

Ansonsten kommt man wohl kaum um manuelles eingreifen herum, wenn die Automatik fehlschlägt.

Wir haben mit unserem Programm so etwa 800 Installationen im "freien Raum". Da gab es bislang kaum Probleme mit den Updates.

Gruß
Michael

AlterMann
Beiträge: 233
Registriert: So 13. Dez 2009, 09:43
OS, Lazarus, FPC: Lazarus 3.0 (rev lazarus_3_0) FPC 3.2.2 i386-win32-win32/win64
CPU-Target: x86 64Bit
Wohnort: Niederösterreich

Re: Frage zu Schreibrechten im Programmverzeichnis / Updatefunktion

Beitrag von AlterMann »

Und wie habt ihr das mit den Schreibrechten im Programmordner gelöst?
Früher war alles besser. Und aus Holz!

Benutzeravatar
Winni
Beiträge: 1577
Registriert: Mo 2. Mär 2009, 16:45
OS, Lazarus, FPC: Laz2.2.2, fpc 3.2.2
CPU-Target: 64Bit
Wohnort: Fast Dänemark

Re: Frage zu Schreibrechten im Programmverzeichnis / Updatefunktion

Beitrag von Winni »

Hi!

Die Rechtesituation in C:\Program Files bzw. C:\Program Files x86 ist undurchsichtig und anscheinend auch noch Versionsabhängig.

Ich mach das seit Jahren folgendermaßen:

a) Admin legt das Verzeichnis C:\[FirmenName] mit allen Rechten an.
b) Dort liegt das Programm
c) Programm guckt beim Start ob eine neue Version auf einem dezidierten Serververzeichnis liegt
--> ja: Kopieren der exe vom Server nach C:\ [Firmenname]. ShowMessage für den User, dass
er die neue Version jetzt starten kann
- ->nein: Betrieb wie immer

Der Mechanismus läuft problemlos seit über 15 Jahren auf diese Weise und hat diverse Windows-Versionen - auch im Parallel-Betrieb - überstanden (NT, 2000, XP, Win7). Über Win10 kann ich nix sagen - das ist bei uns wg. chronischer undurchsichtiger Abhörerei verboten.

Die Idee das Verzeichnis direkt auf C: zu legen, verfolgt Lazarus ja auch.
Ich behaupte ja nicht, dass sie das von mir geklaut haben .....

Winni

Benutzeravatar
af0815
Lazarusforum e. V.
Beiträge: 6198
Registriert: So 7. Jan 2007, 10:20
OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
CPU-Target: 32Bit (64Bit)
Wohnort: Burgenland
Kontaktdaten:

Re: Frage zu Schreibrechten im Programmverzeichnis / Updatefunktion

Beitrag von af0815 »

Grundlegend verwenden wir einen Installer für die Programme, da die Rechte für eine normale Installation auf den Rechnern der Benutzer nicht ausreicht. Wenn ein Update erforderlich wird, kann man dem Benutzer mitteilen, wenn er sich mit der DB verbindet. Generell verwenden wir die von Windows vorgegeben Pfade. Auf Produktionsmaschinen Windows NT aufwärts :mrgreen: , gibt es immer c:\Data wo die maschinenspezifische Version abgelegt ist. Diese muss leider immer mit den richtigen Rechten händisch versehen werden. Da es dort sogar einen speziellen Realtimerkernel geben kann, der nicht einmal ein Update überlebt, muss man auch mit DB-Treibern sehr vorsichtig sein auf solchen Geräten.
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

AlterMann
Beiträge: 233
Registriert: So 13. Dez 2009, 09:43
OS, Lazarus, FPC: Lazarus 3.0 (rev lazarus_3_0) FPC 3.2.2 i386-win32-win32/win64
CPU-Target: x86 64Bit
Wohnort: Niederösterreich

Re: Frage zu Schreibrechten im Programmverzeichnis / Updatefunktion

Beitrag von AlterMann »

Einen Installer verwende ich auch, aber nur für die Erstinstallation.

Wenn eine neuere Version noch zusätzliche Dateien braucht, holt das Programm diese vom Server nach. Das funktioniert aber immer, weil ich alle Hilfsdateien inzwischen im AppDataordner ablege.
Die letze NT-Installation bei uns habe ich voriges Jahr in Pension geschickt (Das war aber ein Field-PG von Siemens und diente nur mehr offline zum Urlöschen einer alten Sinumerik).
Aber von (ich glaub einer) Vistainstallation bis 10 ist auch alles vertreten.

Aber ich seh' schon: DIE Lösung scheint es dafür einfach nicht zu geben. (Wie so oft :) )

Ich hab gerade nachgeschaut: Opera hat auch die Anwendung im AppData liegen, da gibt's gar kein Verzeichnis im "Programme".

Ich denke ich werde das einmal an einem (nicht so wichtigen) Programmmodul testen.

Danke für eure Gedanken und einen seuchenfreien Tag
Christian
Früher war alles besser. Und aus Holz!

Benutzeravatar
six1
Beiträge: 782
Registriert: Do 1. Jul 2010, 19:01

Re: Frage zu Schreibrechten im Programmverzeichnis / Updatefunktion

Beitrag von six1 »

Ich habe Software entwickelt, welche unter Linux und Windows läuft.
Grundsätzlich habe ich ein eigenes Verzeichnis, außerhalb von "Programme" für die Installation.
Bei einem Update einfach die Exe umbenennen und die neue Datei an dessen Stelle kopieren.
Beim nächsten Start ist die neue Version aktiv.

Der Hinweis die Version in der DB zu merken, bzw bei jedem Start des Programmes eine höhere Version einzutragen, verwende ich auch.
So bekommen Anwender, welche noch die "alte" Version am Laufen haben eine Einblendung, dass eine neuere Version am Start ist.
Dazu wird zyklisch im Programm die eigene Versionsnummer mit der in der DB verglichen.
Gruß, Michael

PascalDragon
Beiträge: 825
Registriert: Mi 3. Jun 2020, 07:18
OS, Lazarus, FPC: L 2.0.8, FPC Trunk, OS Win/Linux
CPU-Target: Aarch64 bis Z80 ;)
Wohnort: München

Re: Frage zu Schreibrechten im Programmverzeichnis / Updatefunktion

Beitrag von PascalDragon »

AlterMann hat geschrieben:
Di 2. Mär 2021, 18:22
Hat jemand Ideen?
Man könnte es ähnlich machen wie Firefox: ein einfacher Windows Dienst, der sich nur um die Updates kümmert. Da der mit höheren Berechtigungen läuft, kann dieser einfach die Anwendungen austauschen, sobald diese nicht mehr laufen. Wenn er auch den Neustart der Anwendungen übernehmen soll, dann muss er diese natürlich mit niedrigeren Rechten wieder neustarten (ich weiß jetzt nicht auswendig wie, aber es gibt Lösungen dafür).
FPC Compiler Entwickler

Timm Thaler
Beiträge: 1224
Registriert: So 20. Mär 2016, 22:14
OS, Lazarus, FPC: Win7-64bit Laz1.9.0 FPC3.1.1 für Win, RPi, AVR embedded
CPU-Target: Raspberry Pi 3

Re: Frage zu Schreibrechten im Programmverzeichnis / Updatefunktion

Beitrag von Timm Thaler »

six1 hat geschrieben:
Mi 3. Mär 2021, 07:29
Grundsätzlich habe ich ein eigenes Verzeichnis, außerhalb von "Programme" für die Installation.
Bei einem Update einfach die Exe umbenennen und die neue Datei an dessen Stelle kopieren.
So macht Lazarus das auch, aber ehrlich gesagt: Das ist doch Schrott.

Da wird MS - zurecht - jahrelang wegen fehlender Sicherheit verdammt und wenn sie dann ein einigermaßen funktionierendes Konzept mit dem geschützten "Programs"-Ordner einführen haben Programmierer nichts Besseres zu tun als das zu unterlaufen.

Angefangen hat Google mit dem Schrott, ihr Google Earth und Google Chrome ins Userverzeichnis zu kopieren.

Firefox und andere bekommen es doch auch hin, regelmäßig ihre Updates zu installieren ohne dabei zu solchen Tricks zu greifen.

Socke
Lazarusforum e. V.
Beiträge: 3158
Registriert: Di 22. Jul 2008, 19:27
OS, Lazarus, FPC: Lazarus: SVN; FPC: svn; Win 10/Linux/Raspbian/openSUSE
CPU-Target: 32bit x86 armhf
Wohnort: Köln
Kontaktdaten:

Re: Frage zu Schreibrechten im Programmverzeichnis / Updatefunktion

Beitrag von Socke »

Timm Thaler hat geschrieben:
Mi 3. Mär 2021, 10:37
Firefox und andere bekommen es doch auch hin, regelmäßig ihre Updates zu installieren ohne dabei zu solchen Tricks zu greifen.
Die erste Maßnahme ist, das Update-Programm aus der normalen Funktionalität herauslösen.
Das Standardprogramm darf gerne auf Updates prüfen und diese bereitstellen (z.B. unter AppData oder Program Data). Das Update-Programm wird dann mit Admin-Rechten gestartet und aktualisiert lediglich die Programmdateien.
AlterMann hat geschrieben:
Mi 3. Mär 2021, 07:02
Einen Installer verwende ich auch, aber nur für die Erstinstallation.
[...]
Aber ich seh' schon: DIE Lösung scheint es dafür einfach nicht zu geben. (Wie so oft :) )
Du hast die Lösung doch schon: verwende den Installer auch für die Updates.
MfG Socke
Ein Gedicht braucht keinen Reim//Ich pack’ hier trotzdem einen rein

AlterMann
Beiträge: 233
Registriert: So 13. Dez 2009, 09:43
OS, Lazarus, FPC: Lazarus 3.0 (rev lazarus_3_0) FPC 3.2.2 i386-win32-win32/win64
CPU-Target: x86 64Bit
Wohnort: Niederösterreich

Re: Frage zu Schreibrechten im Programmverzeichnis / Updatefunktion

Beitrag von AlterMann »

Timm Thaler hat geschrieben:
Mi 3. Mär 2021, 10:37
Firefox und andere bekommen es doch auch hin, regelmäßig ihre Updates zu installieren ohne dabei zu solchen Tricks zu greifen.
Genau das ist ja meine Intention gewesen.
Aber wenn sich jedes Windows (nicht nur jede Version, sondern auch Home, Pro, usw...) anders verhält. Ist es halt nicht lustig.

Und in manchen Fällen ist eben (besonders oktroyierte) Sicherheit, mehr Last als Segen.
(Mein Auto braucht nach jedem Start ~15 sek. bis ich das Radio bedienen kann, denn da blendet es einen Warnhinweis ein, ich möge doch bitte unbedingt das Manual (hat eh nur gefühlte 1000Seiten) lesen, damit ich sicherer unterwegs bin!!!)

Die Idee mit dem Dienst (keine Ahnung wie man das macht, aber egal) werde ich aber weiterverfolgen.
Zuletzt geändert von AlterMann am Mi 3. Mär 2021, 12:41, insgesamt 1-mal geändert.
Früher war alles besser. Und aus Holz!

Benutzeravatar
six1
Beiträge: 782
Registriert: Do 1. Jul 2010, 19:01

Re: Frage zu Schreibrechten im Programmverzeichnis / Updatefunktion

Beitrag von six1 »

Timm Thaler hat geschrieben:
Mi 3. Mär 2021, 10:37
six1 hat geschrieben:
Mi 3. Mär 2021, 07:29
Grundsätzlich habe ich ein eigenes Verzeichnis, außerhalb von "Programme" für die Installation.
Bei einem Update einfach die Exe umbenennen und die neue Datei an dessen Stelle kopieren.
So macht Lazarus das auch, aber ehrlich gesagt: Das ist doch Schrott.

Da wird MS - zurecht - jahrelang wegen fehlender Sicherheit verdammt und wenn sie dann ein einigermaßen funktionierendes Konzept mit dem geschützten "Programs"-Ordner einführen haben Programmierer nichts Besseres zu tun als das zu unterlaufen.

Angefangen hat Google mit dem Schrott, ihr Google Earth und Google Chrome ins Userverzeichnis zu kopieren.

Firefox und andere bekommen es doch auch hin, regelmäßig ihre Updates zu installieren ohne dabei zu solchen Tricks zu greifen.
Nun ja, ich will es mal so ausdrücken: Seit ich das so handhabe, habe ich keinerlei Probleme mehr, da ich alles selbst in der Hand habe.
Über viele Jahre hat sich ständig was geändert in Windows. Ich war immer genötigt die Speziellen Ordner für die Ablage der Appdata zu finden.
da meine Anwendung nicht auf Windows beschränkt sind, war es naheliegend und funktioniert ohne Probleme.
Aber zugegeben: Unter Linux liegen die Dateien im User Home...
Gruß, Michael

AlterMann
Beiträge: 233
Registriert: So 13. Dez 2009, 09:43
OS, Lazarus, FPC: Lazarus 3.0 (rev lazarus_3_0) FPC 3.2.2 i386-win32-win32/win64
CPU-Target: x86 64Bit
Wohnort: Niederösterreich

Re: Frage zu Schreibrechten im Programmverzeichnis / Updatefunktion

Beitrag von AlterMann »

Socke hat geschrieben:
Mi 3. Mär 2021, 11:41
Du hast die Lösung doch schon: verwende den Installer auch für die Updates.
Das ist keine Option.
Wir haben Damen, für die das Klicken eines Ok-Buttons einer Installroutine eine unüberwindbare, psychische Hürde darstellt.
Die möchte ich nicht überfordern.

Bei meiner jetzigen Lösung öffnet sich das Programm, schließt sich sofort (noch vor dem Login) wieder, zeigt ein Fenster dass ein Update installiert wird und startet wieder.
An diesem Ablauf (ohne) den geringsten Benutzereingriff möchte ich nicht rütteln.
Früher war alles besser. Und aus Holz!

Socke
Lazarusforum e. V.
Beiträge: 3158
Registriert: Di 22. Jul 2008, 19:27
OS, Lazarus, FPC: Lazarus: SVN; FPC: svn; Win 10/Linux/Raspbian/openSUSE
CPU-Target: 32bit x86 armhf
Wohnort: Köln
Kontaktdaten:

Re: Frage zu Schreibrechten im Programmverzeichnis / Updatefunktion

Beitrag von Socke »

AlterMann hat geschrieben:
Mi 3. Mär 2021, 12:41
Socke hat geschrieben:
Mi 3. Mär 2021, 11:41
Du hast die Lösung doch schon: verwende den Installer auch für die Updates.
Das ist keine Option.
Wir haben Damen, für die das Klicken eines Ok-Buttons einer Installroutine eine unüberwindbare, psychische Hürde darstellt.
Für so etwas gibt es einen "Silent-Installer". Gängige Installationsroutinen bringen das doch mit?
MfG Socke
Ein Gedicht braucht keinen Reim//Ich pack’ hier trotzdem einen rein

Antworten