Wie funktioniert ein Installer / Installationsprogramm



  • Hallo Leute mal eine Grundsätzliche Frage zu install programmen . Also ich hab ne Anwendung in c++ gemacht, und es haben sich tatsächlich ein paar verrückte gefunden , die das haben wollen, alles im privaten Bereich. Nun meine Anwendung ist eigentlich autark, benötigt nur ein externes Config File wo ein paar Berechtigungen hinterlegt sind. Kann das ganze per USb Stick incl File weitergeben.

    Jedoch aht mich das dzu gebracht, mal über was nachzudenken was ich schon x mal gemacht habe... Irgendwas installiert. Was läuft da eigentlich ab beim Install vorgang, und wie wird das programmiert ? Also wenn ich jetzt install xyz.exe mach.... Compliert dann die Install Routine meinen code ertmal oder wie geht man da vor ?

    Hoffe die Frage ist verständlich geschrieben.



  • Google mal nach Inno Setup, NSIS oder Z-Up Maker, das meinst du denke ich mal.



  • 👍 Ja, das sieht schon mal gut aus. Muss ich mir näher angucken.
    Blöde Frage noch aber z.B. Inono Setup... Packen ,bzw. Chiffrieren die meine z.B.: Application.exe dann irgendwie ? Weil bei "normalen" Installs, ist ja die "auszuführende Datei " auch nicht auf der Cd oder USb zu finden.. ?



  • Dieser Thread wurde von Moderator/in SeppJ aus dem Forum C++ (alle ISO-Standards) in das Forum Rund um die Programmierung verschoben.

    Im Zweifelsfall bitte auch folgende Hinweise beachten:
    C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?

    Dieses Posting wurde automatisch erzeugt.



  • Installer packen die zu installierenden Files und das Install Skript üblicherweise einfach in ein Archiv (zip/...). Dieses Archiv wird dann irgendwie in die Installer .exe reingepackt.
    Eine Möglichkeit ist als "Resource" (FindResource/LockResource/BeginUpdateResource etc.). IIRC kann man die Daten aber auch einfach an das .exe File hinten anhängen.



  • Danke, alles was ich wissen wollte. Top, so mach ich das auch, gibt dem ganzen nen "Professionellen Touch" 😃



  • install_me schrieb:

    Danke, alles was ich wissen wollte. Top, so mach ich das auch, gibt dem ganzen nen "Professionellen Touch" 😃

    Du meinst hoffentlich, daß du eines der genannten Installer-Tools verwendest und nicht, daß du dir selbst eines schreibst. Sonst ist da nämlich nix mit professionellem Touch.



  • Nö, ich entwickle selbst eines, was wäre da schon dabei 😃 😃

    Nein, ich nehme natürlich eines der genannten Tools her !!



  • Oder, noch besser, du laesst einfach die Finger von Installern und machst es weiterhin so wie alle Programme es machen sollten, aka verbreitest einfach deine .exe. Installer nerven nur.



  • Portable Versionen sind cool, aber ich finde es gut wenn zusätzlich auch ein Installer angeboten wird. Viele Leute wollen halt die Start-Menu/Start-Screen Einträge haben, evtl. File-Associations etc. Wenn man sich die nicht selbst einrichten will, dann ist ein Installer schon fein.



  • Fuer sowas gibt es .bat-Scripte, reicht zum anlegen von ein paar Verknuepfungen und Registry-Eintraegen, und man kann zur Not genau nachschauen was da passiert. Ich wuerde sagen ca. 95% der Programme die ich nutze waehren besser ohne Installer. Das einzige wozu Installer gut sind ist um Leuten im Hintergrund Toolbars und andere Crapware zu installieren.



  • cooky451 schrieb:

    Fuer sowas gibt es .bat-Scripte, reicht zum anlegen von ein paar Verknuepfungen und Registry-Eintraegen, und man kann zur Not genau nachschauen was da passiert. Ich wuerde sagen ca. 95% der Programme die ich nutze waehren besser ohne Installer. Das einzige wozu Installer gut sind ist um Leuten im Hintergrund Toolbars und andere Crapware zu installieren.

    this so much 👍



  • cooky451 schrieb:

    Fuer sowas gibt es .bat-Scripte, reicht zum anlegen von ein paar Verknuepfungen und Registry-Eintraegen

    Ach. Wie machst du denn einen Shell-Shortcut in einer Batchdatei? Und woher bekommst du den Pfad fürs Startmenu?

    Abgesehen davon gehört ausführbare Software nach C:\Progam Files , weil die Trennung von Code (keine Schreibrechte für normale Benutzer) und Daten (Benutzerschreibrechte) immer sinnvoll ist, und weil sonst SRP und dergleichen nicht richtig funktionieren kann.

    cooky451 schrieb:

    und man kann zur Not genau nachschauen was da passiert.

    Bei der install-shortcuts-for-contoso.bat willst du genau wissen, was sie macht, aber die beiliegende Binärdatei contoso.exe nimmst du so? WTF.

    cooky451 schrieb:

    Ich wuerde sagen ca. 95% der Programme die ich nutze waehren besser ohne Installer.

    Seh ich genau andersrum. Ich find es gut, wenn es die Anwendungen auch portabel gibt, aber ein gut gemachter Installer vereinfacht mir die Arbeit.



  • audacia schrieb:

    Ach. Wie machst du denn einen Shell-Shortcut in einer Batchdatei?

    Mit Registry-Eintraegen...

    audacia schrieb:

    Und woher bekommst du den Pfad fürs Startmenu?

    Ueber Umgebungsvariablen oder die Registry, da gibt's mehrere Moeglichkeiten.

    audacia schrieb:

    Abgesehen davon gehört ausführbare Software nach C:\Progam Files , weil die Trennung von Code (keine Schreibrechte für normale Benutzer) und Daten (Benutzerschreibrechte) immer sinnvoll ist, und weil sonst SRP und dergleichen nicht richtig funktionieren kann.

    Ich weiss zwar nicht was du mit SRP meinst, aber sinnvoll ist die Trennung leider nur sehr begrenzt. Sinnvoller waere es, wenn Programme nur auf ihre Ordner/Unterordner und auf speziell vom System zur Verfuegung gestellte Orte zugreifen duerften. Aber es hindert einen ja niemand daran, seine Programme nach C:/ zu verschieben wenn man das so toll findet.

    audacia schrieb:

    Bei der install-shortcuts-for-contoso.bat willst du genau wissen, was sie macht, aber die beiliegende Binärdatei contoso.exe nimmst du so? WTF.

    Ganz genau, der .exe muss ich naemlich keine Administrationsrechte geben damit sie in's tolle C:\Progam Files schreiben darf. 🙄



  • cooky451 schrieb:

    audacia schrieb:

    Ach. Wie machst du denn einen Shell-Shortcut in einer Batchdatei?

    Mit Registry-Eintraegen...

    Weißt du, was Shell-Shortcuts sind? Was haben die mit Registryeinträgen zu tun? Aber du kannst gerne mal zeigen, wie du welche über die Kommandozeile anlegst.

    cooky451 schrieb:

    Ueber Umgebungsvariablen oder die Registry, da gibt's mehrere Moeglichkeiten.

    In CMD.EXE sind diese Möglichkeiten, soweit sie überhaupt existieren, alle obskure Hacks. Die Registry-Keys, auf die du anspielst, sind übrigens ausdrücklich nicht der dokumentierte Weg, um an diese Pfade zu kommen.

    All diese Probleme und noch viele andere wurden bereits gelöst von den Leuten, die InnoSetup, NSIS oder WiX geschrieben haben.

    cooky451 schrieb:

    audacia schrieb:

    Abgesehen davon gehört ausführbare Software nach C:\Progam Files , weil die Trennung von Code (keine Schreibrechte für normale Benutzer) und Daten (Benutzerschreibrechte) immer sinnvoll ist, und weil sonst SRP und dergleichen nicht richtig funktionieren kann.

    Ich weiss zwar nicht was du mit SRP meinst

    Kennst du Google? Mal "windows srp" eingegeben?

    cooky451 schrieb:

    aber sinnvoll ist die Trennung leider nur sehr begrenzt.

    Grundvorteil: wenn nur der Administrator Schreibrechte auf .exe-Dateien und auf die beinhaltenden Verzeichnisse hat, funktionieren DLL-Injection-Exploits nicht, und das Manipulieren von Programmen, die ggf. später mal mit erhöhten Rechten ausgeführt werden, ist auch nicht möglich. Mit SRP kann ich als Admin verhindern, daß der Benutzer Programme, die nicht in C:\Program Files liegen, überhaupt ausführen darf; das ist ein außerordentlich effektiver Schutz vor fast allen Exploits, die auf die Dummheit des Benutzers setzen (was praktisch alle handelsüblichen Viren tun).

    cooky451 schrieb:

    Sinnvoller waere es, wenn Programme nur auf ihre Ordner/Unterordner und auf speziell vom System zur Verfuegung gestellte Orte zugreifen duerften.

    Ja, z.B. die Apps in Windows 8. Die gibts übrigens auch nicht als portable Anwendungen. Willst du raten, warum?

    cooky451 schrieb:

    Aber es hindert einen ja niemand daran, seine Programme nach C:/ zu verschieben wenn man das so toll findet.

    Das hat nichts mit "so toll finden" zu tun. Wenn ich eine portable Anwendung nach C:\Program Files verpflanzen will, muß ich mir Sorgen machen, daß sie in die INI-Datei im gleichen Verzeichnis zu schreiben versucht, und wenn ich ein eingeschränktes Benutzerkonto verwende (was stark anzuraten ist), muß ich im Explorer mehrfach das Adminpaßwort eingeben (üblicherweise 2x: Ordner erstellen, Dateien reinkopieren; wenn ich die Shell-Shortcuts im Startmenu für alle Benutzer haben will, dann ein weiteres Mal).

    Was wirklich vonnöten wäre, wäre ein gescheiter, einheitlicher Paketmanager für Windows. Oder Desktop-Anwendungen im Store, wenn der hinreichend automatisierbar ist. Aber einstweilen sind Installer die beste Lösung.



  • audacia schrieb:

    cooky451 schrieb:

    audacia schrieb:

    Ach. Wie machst du denn einen Shell-Shortcut in einer Batchdatei?

    Mit Registry-Eintraegen...

    Weißt du, was Shell-Shortcuts sind? Was haben die mit Registryeinträgen zu tun? Aber du kannst gerne mal zeigen, wie du welche über die Kommandozeile anlegst.

    Sowas?

    reg add "HKCR\Directory\Background\shell\runas" /ve /t REG_SZ /d "Open command window here (administrator)" /f
    

    Oder sowas?

    reg add "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\CommandStore\shell\Hash.SHA256" /t REG_SZ /d "SHA-256" /f
    reg add "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\CommandStore\shell\Hash.SHA256\command" /t REG_SZ /d "%mypath% \"%%1\" sha256" /f
    

    audacia schrieb:

    All diese Probleme und noch viele andere wurden bereits gelöst von den Leuten, die InnoSetup, NSIS oder WiX geschrieben haben.

    Welche Probleme? Ich sehe nur einen guten Weg Installer zu realisieren (aka Packages die Windows parsen kann), einen akzeptablen Weg Installer zu realisieren (Script-Files) und einen schrecklichen Weg Installer zu realisieren (executables).

    audacia schrieb:

    cooky451 schrieb:

    aber sinnvoll ist die Trennung leider nur sehr begrenzt.

    Grundvorteil:

    Grundnachteil: Ich muss Installern Admin-Rechte geben. Mit dem von mir vorgeschlagenen Konzept waere das alles kein Problem.

    audacia schrieb:

    Ja, z.B. die Apps in Windows 8. Die gibts übrigens auch nicht als portable Anwendungen. Willst du raten, warum?

    Weil Microsoft verzweifelt versucht Apps fuer ihre Smartphones zu bekommen und sie deshalb Desktop-Apps wie Smartphone-Apps gestalten wollen?

    audacia schrieb:

    Das hat nichts mit "so toll finden" zu tun. Wenn ich eine portable Anwendung nach C:\Program Files verpflanzen will, muß ich mir Sorgen machen, daß sie in die INI-Datei im gleichen Verzeichnis zu schreiben versucht

    Das hat man halt davon, wenn man versucht ein komplett kaputtes Rechte-System irgendwie weiter zu benutzen.

    audacia schrieb:

    Aber einstweilen sind Installer die beste schlimmste Lösung.

    FTFY



  • Ich glaube, ich laß das besser. Du hast leider keine Ahnung von dem, was du schreibst. Und wie es oft ist, je weniger Ahnung, desto lauter das Gebrüll.

    Mit "Shell-Shortcuts" meine ich übrigens die Verknüpfungen, wie sie im Startmenu zu finden sind. LNK-Dateien. Shell-Links wäre lt. MSDN der korrekte Name gewesen. Google hätte sie trotzdem gefunden.



  • audacia schrieb:

    Ich glaube, ich laß das besser. Du hast leider keine Ahnung von dem, was du schreibst. Und wie es oft ist, je weniger Ahnung, desto lauter das Gebrüll.

    Sobald man keine Argumente mehr hat, kommt halt die "Du hast keine Ahnung"-Peitsche. Autsch.

    audacia schrieb:

    Mit "Shell-Shortcuts" meine ich übrigens die Verknüpfungen, wie sie im Startmenu zu finden sind. LNK-Dateien. Shell-Links wäre lt. MSDN der korrekte Name gewesen. Google hätte sie trotzdem gefunden.

    Hellsehen kann ich jetzt nicht. Erstellen kann man die aber natuerlich trotzdem mit einem Script.



  • cooky451 schrieb:

    Sobald man keine Argumente mehr hat, kommt halt die "Du hast keine Ahnung"-Peitsche. Autsch.

    Das mit den Argumenten möge nun jeder Leser selbst bewerten 🙂



  • @cooky451
    Sorry, aber jeden Installer mit nem Batchfile ersetzen zu wollen ist einfach eine dumme Idee. Dass du da auf Gegenwind stösst ist dann nicht weiter verwunderlich.

    Und warum ist es eine dumme Idee?
    z.B. weil zu einem Installer auch ein Uninstaller gehört. Oder willst du die Uninstaller Einträge auch über ein Batchfile machen, und den Uninstaller ebenfalls als Batchfile implementieren?

    Aber nicht nur das.
    Auch weil meine Mama sich garantiert ÜBERHAUPT nicht mehr auskennt wenn sie 'was runterlädt was sie a) erstmal entpacken muss und wo sie dann b) ein Batchfile zum Installieren starten muss.

    Und was soll das Installieren von Crapware mit .exe/.msi/... Installern zu tun haben? Antwort: genau nix. Ein Batchfile könnte genau so gut Crapware runterladen. Oder man packt es in das Programm selbst rein, dass beim 1. Start die Crapware runtergeladen und installiert wird.

    Und was du total ignorierst: ich hab nicht vorgeschlagen dass der Installer die einzige Art sein soll das Programm zu installieren. Du darfst gerne die portable Variante verwenden und deine Paranoia ausleben indem du selbst deine Startmenü Einträge erstellst.


Anmelden zum Antworten