(17.03.2016 08:55 )galilio schrieb: Hallo Zusammen,
ich habe einen C++ Applikation --> daraus habe ich C-Wrapper erstellt und in Labvien importiert (DLL Library Import).
Jetzt möchte ich aus dieses Interface einen richtigen installer erstellen.
Meine Frage ist:
Bei Solche Anwendung worauf muss ich achten?
z.B die Abhängige DLLs werden dann automatische von dieses Installer in der richtigen Pfad kopiert?
Gibt es spezielle Technik, die ich anwenden muss bei solchen Anwendungen?
Dein Installer hat keine Ahnung was eine DLL genau ist und kann deshalb auch nicht automatisch die Abhängigkeiten bestimmen und installieren. Das musst Du ihm beim Erstellen schon ausdrücklich sagen.
Wohin Du die DLLs installierst ist eine andere Frage. Grundsätzlich sucht Windows DLLs nur an ein paar bestimmten Stellen. Die am praktischsten ist für ein Executable Installer das Directory in dem das Executable selbst liegt. Für eine LabVIEW Entwickellibrary die Benützer innerhalb von LabVIEW selber benützen können ist das einiges komplizierter. Diese DLLs ins selbe Directory kopieren wo LabVIEW.exe liegt funktioniert zwar ist aber extreme hässlich.
Selber löse ich das meist so dass mein Wrapper selber explizit den Import macht durch Verwendung von LoadLibrary() und GetProcAddress() und die Library unter anderem aus dem selben Verzeichnis zu laden versucht dann wo meine Wrapper-DLL ist, aber das ist einiges an Programmieraufwand.
Die zweitbeste Lösung ist um diese DLLs in das <System> Directory zu installieren, aber das hat Konfliktpotential wenn eine andere Applikation für dieselben DLLs dasselbe tut, wenn dann Versionsinkompatibilitäten zwischen diesen DLLs bestehen.
Die letzte Möglichkeit ist um diese DLLs irgendwohin zu installieren und den Pfad während der Installation zur PATH Umgebungsvariable hinzuzufügen. Das ist auch nicht so schön da jede Environmentvariable maximal 1024 Character haben kann und wenn Du verschiedene Tools installiert hast kann das schon mal erreicht warden. Sobald die PATH Environmentvariable länger wird, findet Windows die meisten der eingebauten Programme auch nicht mehr!!!
Falls Du eine LabVIEW Library entwickelst musst Du in jedem Fall in Deiner Dokumentation genau erklären wie Deine DLL Abhängigkeiten sind und wie man diese in der Applikation Build Spezification konfigurieren muss, wenn ein Benützer Deine Library in einer eigenen Applikation einbauen und diese dann auf andere Computer installieren will.