![]() |
ein Fass nach dem anderen geht auf
Woanders schrieb ich
Zitat:
Ich habe ein Programm entwickelt. Das hat begonnen vor über 30 Jahren mit Turbo-Pascal 3.0 und ist inzwischen bei Delphi Berlin. Es gibt viele Produkte (>100) die auf der Software basieren und man kann alle miteinander auch kombinieren. In ca. 99% der Fälle sind es einzelne PCs, es gibt aber auch Installation in Netzwerken und virtualisierten Umgebungen. Geliefert wurde das Programm früher auf Diskette, dann CD. Inzwischen gibt es auch die Möglichkeit einer Neu- oder Updateinstallation vom Internet. Seit einigen Jahren betreue ich das Projekt nur noch in meiner Freizeit. Früher wurde das Programm installiert in einen beliebigen Windowsordner z.B. C:\BlaFasel. Das Hauptprogramm hat auf Bedarf noch Dateien nachinstalliert, geändert und Einstellungen in Ini-Dateien geschrieben und diese auch in diesem Ordner abgelegt. Es gab keine Deinstallation, wenn man es loswerden wollte hat man einfach den Ordner gelöscht. So weit so gut - oder eben auch nicht. Wenn man heutzutage das dann in den Windows Programmordner installieren möchte gibt es natürlich Probleme. Das will ich seit einiger Zeit in Ordnung bringen. Also 1. Fass: Dateien in die jeweiligen Ordner verteilen. Programmdateien in %ProgramFiles%, Anwendungsdaten in CSIDL_APPDATA, Anwenderdaten in CSIDL_PERSONAL oder so ähnlich. Zum Deinstallieren dann einfach den Ordner löschen ist dann nicht mehr möglich. Also 2. Fass: Ein Deinstallationsprogramm muss her. Das ist weitgehend wie Wasser kochen. Aber das Deinstallationsprogramm muss dann auch bei Windows eingetragen werden. Das geht ja noch aber, aber Widnos mag das nicht so einfach. Also 3. Fass: Setup muss Deinstallation mit Administratorrechte eintragen. Nach wie vor muss aber das Übrige mit "normalen" Rechten laufen. Dazu muss das Programm mit Administratorrechte etwas mitteilen. Also 4. Fass: Interprozesskommunikation. Da bin ich nun (Dazwischen kamen noch die Fässer: Signierung mit Zertifikate und Manifeste) Seit fünf Monaten mache ich nun daran rum, dass man das Programm in den Windows Programmordner installieren. Und nach jedem Fass geht ein neues auf. Was mache ich falsch? Dann bitte ich im Informationen. Oder ist das halt so ein komplexes Thema? Dann bitte ich um Beileidsbekundungen ;-) (Und Beiträge von Kathinka sind auch erwünscht.) |
AW: ein Fass nach dem anderen geht auf
InnoSetup?
Da geht das doch relativ einfach |
AW: ein Fass nach dem anderen geht auf
Den Pfad zu Deinen Dateien könntest Du doch mit System.SysUtils.GetHomePath ermitteln.
Nachinstallieren von runtimes ist natürlich schwierig - ich würde ich einfach ein Innosetup script verwenden welches dann im selben Pfad Deine module schreibt. Es wird dies automatisch tun, wenn Du den selben "AppName" verwendest. InnoSetup ist super. Ich verwende allerdings eine ältere Version da der Windows Defender bei der neuen gemotzt hat. |
AW: ein Fass nach dem anderen geht auf
%APPDATA% ist das neue C:\. Viele Programme installieren sich heute in %APPDATA%. Chrome und Firefox (non-ESR), auch Entwickler-Sachen wie Sourcetree. Weder zur Installation noch Deinstallation braucht man Rechte. Dass das ganze Programm dann in einer Domäne bei jedem Login und Logout mit einem Server gesynct wird - drauf geschissen. Die haben wohl auch alle keinen Bock darauf, ihr Programm vernünftig zu schreiben und anzupassen.
|
AW: ein Fass nach dem anderen geht auf
Ach so ist das. Das habe ich sogar schon bei einem Microsoft-Tool so gesehen. :wall:
@jziersch: das Fass habe ich schon geleert @MyRealName: InnoSetup u.a. taugen für mich nicht. Spätestens bei der Deinstallation ist das das Problem, dass die gar nicht wissen (können) welche Dateien alle weg müssen. Das hängt sehr von der Art der Instllation und weiss allein mein Code. Klar, auch mit den Tools kann man scripten, aber dann muss ich ja wieder das lernen. Zu Beginn hat ich auch ein Installationstool eingesetzt. |
AW: ein Fass nach dem anderen geht auf
Vielleicht einfach als "Portable App" bezeichnen (it's a feature, stupid!) und Installation nach Program Files nicht erlauben, da Windows dann motzt. Vorgabe sollte c:\PortableApps\DeinProgramm sein. Ansonsten braucht man dann nichts zu ändern und alle sind glücklich.
(OK, ist schon zu spät, ist mir auch gerade aufgefallen. Dann bleibt mir nur noch zu sagen: "Armer schwarzer Kater" ;-) ) |
AW: ein Fass nach dem anderen geht auf
Nur mal so hingedaddelt:
Kann Dein Programm sich nicht selbst deinstallieren? Eine Option dafür einbauen, die alles, was zur Laufzeit entfernt werden kann, entfernt. Für die Sachen, die nicht entfernt werden können ein Script / Batch, ... schreiben und diese in der Registry unter
Code:
eintragen. (
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\RunOnce
oder HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnce ![]() Was dort steht, wird einmalig beim nächsten Systemstart ausgeführt. Wenn's z. B. 'ne Batch ist, kann die sich selbst zur Laufzeit löschen und damit wäre alles restlos weg. Sie könnte auch ein von Dir erstelltes Deinstallationsprogramm starten, warten bis das fertig ist, es löschen und sich dann selbst löschen. Wenn's sehr anwenderspezifisch ist, kann man auch ein Programm in den Autostartordner legen, beim nächsten Systemstart / Anmelden wird das dann ausgeführt. Es muss halt "nur" sichergestellt werden, dass sich das dann selbst aus dem Autostartordner löscht. Achso: Das sind nur unausgereifte Ideen, die eventuell 'nen Ansatz liefern könnten (oder aber auch nicht ;-)) |
AW: ein Fass nach dem anderen geht auf
Ich nutze die aktuelle InstallAware Developer und bin zufrieden damit.
Das Ding kann natürlich installieren, deinstallieren, signieren, automatisch (auch im Hintergrund) updaten. Es gibt sicher andere gute... (MSIX Packaging Tool ist je nach Umfang u.U. auch interessant. Das Tool kann auch ein bestehendes Setup in ein MSIX File wandeln.) |
AW: ein Fass nach dem anderen geht auf
Zitat:
|
AW: ein Fass nach dem anderen geht auf
Ich persönlich bin ein Fan vom Windows Installer und dem WIX-Toolset.
![]() Tutorial: ![]() |
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:40 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