flashpixx Geschrieben 17. Dezember 2012 Geschrieben 17. Dezember 2012 Hallo, ich habe ein komplexeres C++ Projekt, das cross-platform ist und mit mehreren DLLs für Linux, Windows und OSX gebaut wird. Zum erzeugen der DLLs und Executables nutze ich Scons. Bei OSX erzeuge ich aus allen gebauten Komponenten eine Application Verzeichnis in dem ich dann alle Resources, DLLs, Executables und Konfigurationsdateien ablege. OSX behandelt dann dieses Verzeichnis als Paket, so dass man die Applikation direkt starten kann. Bei Linux müsste ich dann ein RPM oder DEB Archiv bauen und die notwendigen Abhängigkeiten zu den DLLs dann über den Paketmanager auflösen lassen. Wie würde man das sinnvoll bei Windows machen? Ich würde eine MSI Datei bauen und dort auch alle DLLs mit hineingeben. Ich habe bei dem Projekt Abhängigkeiten zu Qt, Boost, Lapack, SQLite, Postgres und Lua. Ich sehe die Problematik, wenn ich nur das Executable ausgebe, dass der User dann entsprechend alle Abhängigkeiten selbst auflösen muss, das finde ich nicht unbedingt benutzerfreundlich. Zitieren
Guybrush Threepwood Geschrieben 17. Dezember 2012 Geschrieben 17. Dezember 2012 Naja du kannst unter Windows genauso alle benötigten DLLs mit in das Verzeichnis der Exe legen damit sie gefunden werden. Ich habe bei dem Projekt Abhängigkeiten zu Qt, Boost, Lapack, SQLite, Postgres und Lua. Bei solchen Sachen wäre der saubere Weg aber das dein Setup prüft ob diese Frameworks bereits installiert sind und wenn nicht sie mitinstalliert. Zitieren
flashpixx Geschrieben 17. Dezember 2012 Autor Geschrieben 17. Dezember 2012 Bei solchen Sachen wäre der saubere Weg aber das dein Setup prüft ob diese Frameworks bereits installiert sind und wenn nicht sie mitinstalliert. An so etwas habe ich gedacht, aber ich komme aus der Unix- bzw OSX-Ecke und wüsste nicht, wie ich das machen kann. Bei Qt kann man ja fertige Packete runter laden, bei Boost wird es schwieriger, also dann heraus zu bekommen, ob die DLLs schon im System existieren. Mein Gedanke war eigentlich, dass ich einfach in das Installationspaket einfach alle benötigten DLLs hinein lege, so dass diese passend zum Executable sind. Im schlimmsten Fall sind dann verschiedene DLLs mehrfach vorhanden, da sie aber im Verzeichnis des Executables liegen, sollte es passend sein. Zitieren
Guybrush Threepwood Geschrieben 17. Dezember 2012 Geschrieben 17. Dezember 2012 Ok ich hatte Boost bisher noch nie verwendet und hab mal gerade auf deren Homepage geguckt. Da würde ich es tatsächlich so machen das du die Dlls kopierst. QT scheint das auch so zu handhaben Qt 4.7: Deploying an Application on Windows, obwohl ich mir sicher bin das bei Spielen die QT verwenden auch ein QT Setup bei mir gestartet wurde. Bei manchen Sachen wirst du aber nicht drum herum kommen das entsprechende Setup mitzuliefern und zu starten oder den Benutzer es vorher selber installieren zu lassen weil das Setup noch mehr macht als nur die Dlls zu kopieren (beim einrichten einer Postgres Datenbank zum Beispiel). Zitieren
flashpixx Geschrieben 17. Dezember 2012 Autor Geschrieben 17. Dezember 2012 Ich wollte halt bei Windows im Setup den User auswählen lassen, ob die DLLs installiert werden oder eben nicht, d.h. der User kann wenn er möchte auch schon installierte DLLs verwenden (sofern sie dann vom Programm gefunden werden). Bei OSX ist alles in dem Bundle drin und bei Linux wird es dann über den Paketmanager aufgelöst Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.