Installation und Updates
-
@volkard
Dann würdest du doch den Installer gar nicht erst ausführen, oder?@cooky451
Einen elevated-Prozess aus einem non-elevated-Prozess heraus starten geht?
-
ProgrammFreund schrieb:
@volkard
Dann würdest du doch den Installer gar nicht erst ausführen, oder?Dann hätte ich an Deiner Stelle Angst, damit die Kundenrechner alle aufzumachen.
Daß ich Deine Software nicht installiere, ist ein ganz anderes Thema.
-
@ProgrammFreund,
Halte dich an die Security-Richtlinien von Microsoft. Installiere es unter "Program Files". Heisst man braucht die Rechte, um ein Programm installieren zu dürfen. Du machst damit allen Administratoren eine riesige Freude. Alles andere sind die reinsten Sicherheitslücken.
Und man braucht erneut die Rechte für das Update. Alles andere macht aus sicherheitstechnischen Gründen keinen Sinn. Sonst kann ja jeder daher kommen und irgendetwas dorthin installieren. Ein Update ist mit einer Installation gleichzusetzen.Ob du einen eigenen Installer oder per MSI aktualisieren sollst, schliesst sich meiner Meinung nach nicht gegenseitig aus. Du kannst ja über deinen Updater ein MSI Paket herunterladen und ausführen. Ob du Diffs installieren willst, hängt von der Grösse deines Programmes ab. Wenn es klein ist, vergiss Diff Updates und führ einfach ein MSI aus. Da lohnt sich der Aufwand für die Diffs gar nicht.
cooky451 schrieb:
- Das Programm sollte gar nicht installiert werden, sondern einfach portable sein.
Yay and dabei bleibt der ganze Restmüll in Windows hängen, wenn man den Ordner löscht. Ich mag auch portable Programme, aber einfach alles lässt sich damit nicht realisieren. Seien es z.B. nur schon Dateitypen-Zuordnungen.
Grüssli
-
Dravere schrieb:
Halte dich an die Security-Richtlinien von Microsoft. Installiere es unter "Program Files". Heisst man braucht die Rechte, um ein Programm installieren zu dürfen. Du machst damit allen Administratoren einen Bärendienst. Alles andere sind die reinsten Sicherheitslücken.
Das widerspricht sich.
-
volkard schrieb:
Dravere schrieb:
Halte dich an die Security-Richtlinien von Microsoft. Installiere es unter "Program Files". Heisst man braucht die Rechte, um ein Programm installieren zu dürfen. Du machst damit allen Administratoren einen Bärendienst. Alles andere sind die reinsten Sicherheitslücken.
Das widerspricht sich.
So?
-
Dravere schrieb:
volkard schrieb:
Dravere schrieb:
Halte dich an die Security-Richtlinien von Microsoft. Installiere es unter "Program Files". Heisst man braucht die Rechte, um ein Programm installieren zu dürfen. Du machst damit allen Administratoren einen Bärendienst. Alles andere sind die reinsten Sicherheitslücken.
Das widerspricht sich.
So?
Evtl ist Dir die Bedeutung von "Bärendienst" nicht klar.
-
volkard schrieb:
Dravere schrieb:
volkard schrieb:
Dravere schrieb:
Halte dich an die Security-Richtlinien von Microsoft. Installiere es unter "Program Files". Heisst man braucht die Rechte, um ein Programm installieren zu dürfen. Du machst damit allen Administratoren einen Bärendienst. Alles andere sind die reinsten Sicherheitslücken.
Das widerspricht sich.
So?
Evtl ist Dir die Bedeutung von "Bärendienst" nicht klar.
Definitiv. Danke! Besser?
-
ProgrammFreund schrieb:
@cooky451
Einen elevated-Prozess aus einem non-elevated-Prozess heraus starten geht?schonmal von:
system("runas /env /user:Administrator \"update.exe\"");
gehört?
-
ProgrammFreund schrieb:
- Wo soll das Programm installiert (WiX/msi) werden? "Program Files" oder "AppData\Roaming"? Ich kenne Programme, die sich komplett im Roaming befinden, da hat man glaube ich immer Schreibrechte. Was sind sonst die Vor/Nachteile?
Programmdaten, insbesondere die Executables gehören nach "Program Files".
Alles andere ist Mist.- Sollen Updates, seien sie noch so klein, immer über ein extra msi package installiert werden, oder soll ich einen eigenen Updater schreiben? Der Vorteil des Letzteren wäre, dass nicht immer alle Dateien neu runtergeladen werden müssen, und die Updateprozedur wäre unkomplizierter und "integrierter". Nur die Schreibrechte könnten Probleme machen. Und unter installierte Programme würde man halt immer nur v1.0.0 sehen, kann das Probleme beim Deinstallieren machen?
Wenn du den Updater automatisch beim Start als Systemdienst laufen lässt, wirst du kein Problem mit einer ständigen PW Abfrage haben.
Das Problem dabei ist nur:
A) Dein Updater muss dann absolut sicher geschrieben sein, insbesondere auch was das Holen der Daten betrifft, die er installieren soll.
Signiere die Daten also kryptografisch und lasse sie vom Updater vor der Installation prüfen. Alles andere wäre Bockmist.Niemand mag Systemdienste installieren und bei jedem Neustart automatisch laufen lassen, nur damit ein Poppelprogramme sich über den Updater selbst updaten kann.
Wenn also dein Updater nicht so bedeutend ist, wie der von Steam oder Microsoft, dann lass es besser.- Eigener Updater: In "Program Files" hat man ja normalerweise keine Schreibrechte, aber könnte ich nicht per Installer diese Rechte (für alle User?) einmalig setzen, damit der Updater dann immer direkt dorthin schreiben kann? Ist das gängig?
Nein, das ist bescheuert, weil dann jeder Virus da reinschreiben und die Programmdaten ändern und vom User auch ausführen lassen kann.
Es hat seinen Grund, warum es die Trennung in Roaming und Programm Files gibt, denke mal nach!
Ob mein Programm per Maschine oder per User installiert werden soll, ist denke ich nicht so wichtig. Am liebsten wäre mir das einmalige Installieren mit Adminrechten/UAC prompt nach "Program Files", Programmeinstellungen per-user nach "AppData\Roaming", jedoch sollte der eigene Updater die Programmdateien in "Program Files" ohne extra Adminrechte/UAC prompt updaten können.
Siehe oben, ein Updater als Systemdienst könnte das.
Würde echt gerne mehr über die "best practices" wissen, und grobe Fehler vermeiden.
Dankesehr!Du kannst dich auch mit Mircosoft in Verbindung setzen, eventuell könntest du deine Software über deren Windows Update Dienst updaten lassen.
Kostet vermutlich aber was.
-
Ich kann meinen Vorpostern nur zustimmen. Natürlich weiß ich nicht, was du da für ein Programm schreibst, aber wenn das mit den automatischen Updates nicht von überragender Wichtigkeit ist, würde ich es einfach bleibenlassen.
Es gibt nur wenige Programme, bei denen ich gerne automatische Updates habe: mein Betriebssystem, mein Browser, mein Mailclient, evtl. noch mein PDF-Reader. Alles andere ist nicht sicherheitsrelevant und wird bedarfsgemäß aktualisiert. Windows Update ist meines Wissens noch nicht kompromittiert worden, und Mozilla traue ich zu, daß sie das mit dem Update-Service einigermaßen ordentlich gemacht haben. Aber wenn irgendjemand sonst mir einen Service mitinstalliert, der zugunsten der Updates von irgendeinem unbedeutenden Tool die UAC umgeht und eine potentielle Sicherheitslücke ins System reißt, deaktiviere ich entweder den Service von Hand, oder das Programm fliegt gleich ganz raus.
Wenn so ein automatisches Update wirklich sein muß, dann soll es bitte optional sein (also keine lästige Mitteilung im modalen Dialog beim Programmstart, eher ein dezenter Hinweis in der Statusbar), und ich will keine Trickersei mit Services oder Taskplaner, sondern einen UAC-Prompt. Schließlich ist das eine Softwareinstallation, und die soll Administratoren vorbehalten sein.
Ein gutes Beispiel dafür, wie man Auto-Updater nicht macht, findest du bei Oracle. Wann immer ich an einem Firmen- oder Uni-PC mit eingeschränkten Rechten saß, auf dem die JRE installiert war, poppte nach ein paar Minuten der Java-Updater auf und forderte mich auf, ein Update zu installieren, obwohl ich es weder brauchte noch die erforderlichen Rechte hatte. Und ich habe die Vermutung, daß Java die automatischen Updates von Zeit zu Zeit wieder aktiviert, obwohl ich sie ausgestellt und/oder den Autostart-Eintrag entfernt habe. Das und die Drive-by-Toolbar in der JRE geben der Reputation von Java echt den Rest.