Autor Beitrag
Mathematiker
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 2622
Erhaltene Danke: 1447

Win 7, 8.1, 10
Delphi 5, 7, 10.1
BeitragVerfasst: Mi 07.09.16 21:27 
Hallo,
nachdem ich mich nun mit dem Inno Setup Compiler beschäftigt habe, entsteht für mich ein Problem.
Nachdem ein Setup erstellt wurde, kann ich es problemlos installieren. Die Symbole auf dem Desktop und im durch Startbereich werden erzeugt. Alles ok.

Wenn ich nach einiger Zeit ein neues Setup mit geänderten Dateien erstelle, so nehme ich an, dass ich einfach erneut die Installation ausführen kann. Dazu habe ich unter Files und Icons z.B.
ausblenden Quelltext
1:
2:
3:
4:
5:
6:
7:
[Files]
Source: "matlex.exe"; DestDir: "{app}"; CopyMode: alwaysoverwrite
Source: "matlex.chm"; DestDir: "{app}"; CopyMode: alwaysoverwrite
...
[Icons]
Name: "{group}\Mathematik alpha"; Filename: "{app}\matlex.exe"
Name: "{commondesktop}\Mathematik alpha"; Filename: "{app}\matlex.exe"

gesetzt.
Ich habe es probiert und bei mir funktioniert es. Die neuen Dateien werden über die alten kopiert und es erscheinen auch keine doppelten Symbole auf dem Desktop und im Startbereich. In der Systemsteuerung/Programme steht das Programm auch genau einmal drin. Und es lässt sich dort auch deinstallieren.

Nun habe ich aber gelesen, dass man zuerst die alten Dateien deinstallieren und erst danach neu installieren soll.
Ist das wirklich so?
Da sich (im Moment) bei meinem Projekt weder Dateinamen ändern, noch ich irgendwelche Einträge in die Registry schreibe, habe ich angenommen, dass es so einfach geht, wie ich oben beschrieben habe.
Habe ich einen Denkfehler?

Danke für jeden Hinweis
Mathematiker


Moderiert von user profile iconChristian S.: Topic aus Off Topic verschoben am Mi 07.09.2016 um 21:34

_________________
Töten im Krieg ist nach meiner Auffassung um nichts besser als gewöhnlicher Mord. Albert Einstein
mandras
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 429
Erhaltene Danke: 107

Win 10
Delphi 6 Prof, Delphi 10.4 Prof
BeitragVerfasst: Mi 07.09.16 21:55 
> Habe ich einen Denkfehler?

Ich glaube nein.

Meine Erfahrungen mit IS sind nicht so umfassend, ich kann nur sagen daß es bisher das tat was es sollte.
Und Probleme wegen fehlendem Uninstall fand ich nie.

Ich versuche mal die Glaskugel zu bemühen (bitte !Widerspruch! wenn ich was falsches sage):
Solange man nichts anderes angibt kopiert IS einfach Dateien irgendwo hin (und überschreibt ggf. ohne Rückfrage wenn da schon eine gleichnamige ist). Ebenso bei Icons auf Desktop und Einträge ins Windows-Menü (was ja auch nur benannte Dateien sind).
Daher wird 10mal installieren den gleichen Effekt haben wie 1mal - es sei denn daß man explizit was anderes einstellt.

Eigentlich sind Setup-Generatoren ziemlich dusselige Makrogeneratoren....

Für diesen Beitrag haben gedankt: Mathematiker
Ralf Jansen
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 4700
Erhaltene Danke: 991


VS2010 Pro, VS2012 Pro, VS2013 Pro, VS2015 Pro, Delphi 7 Pro
BeitragVerfasst: Mi 07.09.16 22:44 
Vorher deinstallieren ist im allgemeinen Fall die sicherere Variante. Unter speziellen Bedingungen kann man aber auch ohne auskommen.

Was es unter anderem zu bedenken gibt

a.) Du sprichst von überschreiben von Dateien aber im allgemeinen zwingt man niemanden wieder in den gleichen Ordner zu installieren. Machst du das? Was passiert bei einem update in einen anderen Ordner?
b.) Ich erwarte wenn ich die Vorversion nicht deinstalliere das nach der Installation der neuen Version beide installiert sind. In dem Fall das man einfach wieder in den gleichen Ordner, ohne vorher zu deinstallieren, schreibt erwarte ich also einen alten Eintrag (zur nun kaputten Vorversion) in der Windows Installerdatenbank die man unter "Programme und Features" einsehen kann. Ein deinstallieren von da der alten Version sollte nun knallen.
c.) Kannst du garantieren das du alle Dateien die du in der Vorversion gebraucht hast in der Folgeversion auch hast? Oder ist nicht eher die Wahrscheinlichkeit groß das irgendwas irgendwann obsolet wird. Die würden im Fall des nicht deinstallierens natürlich als Dateileichen zurückbleiben.
d.) Die meisten Installer haben beim Überschreiben eine gewisse Intelligenz. Heißt sie überschreiben nur vorhandene Dateien mit einer neuen Version dieser Datei wenn sich die Fileversion ändert. Wenn man einer Installer gebaut hat der überschreibt ist man also eigentlich gezwungen beim Build sauber die Fileversion aller Dateien zu erhöhen. Aus Erfahrung klappt das fast nie. Entweder sind Dateien dabei die man nicht unter Kontrolle hat (weil nicht selbst gebaut sondern von einem 3th Party Hersteller stammen oder jemand im Team hat den Unterschied von Produktversion und Fileversion bei Executables/Bibliotheken nicht verstanden ;) ).

Für diesen Beitrag haben gedankt: Mathematiker
Mathematiker Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 2622
Erhaltene Danke: 1447

Win 7, 8.1, 10
Delphi 5, 7, 10.1
BeitragVerfasst: Do 08.09.16 07:28 
Hallo Ralf,
Danke für die ausführliche Antwort.
Und ich habe es geahnt, denn es war bisher zu einfach. Es ist wesentlich problematischer, als ich gedacht habe.
user profile iconRalf Jansen hat folgendes geschrieben Zum zitierten Posting springen:
Du sprichst von überschreiben von Dateien aber im allgemeinen zwingt man niemanden wieder in den gleichen Ordner zu installieren.

Mein erster großer Denkfehler! :autsch:
Natürlich kann jeder sein Verzeichnis wählen. Das habe ich aber noch gar nicht vorgesehen.
user profile iconRalf Jansen hat folgendes geschrieben Zum zitierten Posting springen:
Ich erwarte wenn ich die Vorversion nicht deinstalliere das nach der Installation der neuen Version beide installiert sind.

Daran habe ich auch nicht gedacht. Im Moment geht es noch nicht, da ich noch keine Möglichkeit der Ordnerwahl habe.
user profile iconRalf Jansen hat folgendes geschrieben Zum zitierten Posting springen:
Kannst du garantieren das du alle Dateien die du in der Vorversion gebraucht hast in der Folgeversion auch hast?

Bei der einfachen Struktur meiner Verzeichnisse ist das im Moment sehr wahrscheinlich. Aber du hast recht, eine zukünftige Änderung ist möglich.
user profile iconRalf Jansen hat folgendes geschrieben Zum zitierten Posting springen:
Die meisten Installer haben beim Überschreiben eine gewisse Intelligenz. Heißt sie überschreiben nur vorhandene Dateien mit einer neuen Version dieser Datei wenn sich die Fileversion ändert.

Das versuche ich mit dem Flag CopyMode: alwaysoverwrite zu verhindern.

Fazit: Da werde ich wohl noch eine Menge Arbeit haben.
In der Dokumentation von Inno-Setup habe ich schon nach einer Möglichkeit gesucht, zwangsweise die evtl. vorhandenen alten Dateien vor(!) der neuen Installation zu deinstallieren, habe aber noch nichts gefunden. Mein Englisch ist einfach zu schlecht.

Beste Grüße
Mathematiker

_________________
Töten im Krieg ist nach meiner Auffassung um nichts besser als gewöhnlicher Mord. Albert Einstein
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19272
Erhaltene Danke: 1740

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Do 08.09.16 08:05 
Du könntest ein unattended Flag für die Deinstallation mitgeben (ich glaube /SILENT /VERYSILENT /SUPPRESSMSGBOXES) und den Prozess entsprechend starten. Ob das direkt oder nur per Skript geht, weiß ich bei Inno Setup nicht.
Im Zweifelsfall geht es aber per Batchskript. So bekommst du das Installationsverzeichnis heraus (den Registryschlüssel müsstest du mit deinem ersetzen, falls er nicht stimmt):
ausblenden Quelltext
1:
2:
3:
4:
5:
for /F "usebackq tokens=3*" %%A in (`REG QUERY "HKEY_LOCAL_MACHINE\Software\Wow6432Node\Mathematik alpha" /v InstallDir`) do (
    set installpath=%%A - %%B
    )
ECHO %installpath%
pause


Sinnvoller kann jedoch für solche Zwecke ein MSI Setup sein. Da wird die bestehende Installation z.B. einfach aktualisiert. Darum kümmert sich dann der Microsoft Installer. Wir benutzen dafür allerdings ein kommerzielles Tool, so dass ich zu keinem kostenlosen raten kann.

Für diesen Beitrag haben gedankt: Mathematiker