Zitat von
Prof.Y:
Zitat von
Robert_G:
Nur
MSI-Installationen bewahren ein System vor doppelt installierten Bibliotheken oder geklauten Bibliotheken bei einer Deinstallation.
wenn das "
Nur" nur stimmen würde
Ich wüsste kein zweites System, dass das auf die Reihe bringt.
Wobei auch
MSI nicht zaubern kann.
Angenommen:
Jemand installiert eine 3rd-Party Assembly in den
GAC (benutzt dabei aber so Bastelsetup)
-> allles schön und gut
Jetzt kommst du und versuchst deine Installation mit bestem Wissen und Gewissen (also mit
MSI ) zu erstellen.
Auch du benötigst diese Assembly und installierst sie.
Der Datenbank von Windows wird jetzt gesagt: Product Code {XXX-123-ABC} hat sich für die Assembly XXX.dll eingetragen.
Da Installation 1 nur ein Billig-XCopy&RegistryMerge-Setup verwendet hat, hat Windwos keine Ahnung, dass die erste Installation auch diese Assembly braucht.
Wenn der User deine Anwendung deinstalliert, wird der
MSI diese Assembly sang- & klanglos mit wegschmeißen. (ein seiner Aufgaben ist es ja das System von Altlasten freizuhalten
)
Die erste Anwendung schaut also in die Röhre.
Was wäre, wenn die erste Anwendung vor der 2. deinstalliert werden würde?
Nunja, das erste Setup führt keine Datenbank wer welche Assembly benötigt -> Es würde sie sowieso wegschmeißen.
Deine Anwendung hat aber Windows, das über sie wacht.
Der User klickt auf den Shortcut und prompt erscheint ein kurzes "preparing Installation", man sieht kurz eine Progressbar aufblitzen und schon ist deine Assembly wieder genau dort, wo du sie brauchst.
Der User bekommt (bis auf das kurze Fensterchen) nix davon mit. Er merkt nur eins: Deine Anwendung funktioniert immer, während andere schonmal rumzicken können.
Aufgrund dieses Technologievorsprunges kann ich persönlich alle andere Setup engines nur als billige oder hoffnungslos veraltete Bastellösungen abtun.
Zitat:
...und wo Delphi-progs selbst benutzt werden können, um InnoSetup bei Bedarf mit eigener "Funktionen" zu erweitern (eigene Krypto, eigene Setup-Dialoge usw) ...
MSI kann man nicht nur alles mögliche als "Custom Action" hinzufügen (
dll, JavaScript, VB Script, .Net Assemblies).
Als .Net-Entwickler (was ich nunmal vorrangig bin
) kann man ganz einfach von
System.Configuration.Install.Installer ableiten.
Dadurch hat man eine absolute Kontrolle über das Setup, ohne seine "Muttersprache" verlassen zu müssen.
OK, Linux kompatibel ist es natürlich nicht. Aber wenn juckt das schon.