wie bundle-Abhängigkeiten in exe
Oft meine exe die dll-Abhängigkeiten, dass ich das Paket mit einem installer wie NSI oder inno.
Das macht Sinn für große Programme, ist aber overkill für kleine Skripte.
Gibt es eine alternative Möglichkeit, den bundle-Abhängigkeiten, so dass der Benutzer führen Sie einfach eine einzelne exe-Datei, die nicht verlangen, ein Verzeichnis der dll ' s in den PFAD?
BEARBEITEN
Ich hoffe auf eine Lösung, die nicht abhängen von der Art von dll-Dateien, und die Arbeit wird für andere Arten von Abhängigkeiten zu.
Hier sind einige mögliche Optionen:
- http://www.adontec.com/index.htm?GO=/runtimepacker_e.htm
- http://boxedapp.com/
- http://www.filetransit.com/view.php?id=16640
Hat jemand Erfahrung mit so einem tool?
- Die meisten erfahrenen Entwickler würden Ihnen empfehlen, gegen die Verwendung dieser tools, sondern stattdessen das konventionelle Ding installieren, die EXE und die DLL in das gleiche Verzeichnis. Sie scheinen nicht zu wollen, diesen Rat zu befolgen. Da sind Sie tot-set auf mit einem von diesen tools nicht warum tun Sie nur so?
- Ich habe immer in der Vergangenheit, aber derzeit verteile ich eine Menge kleiner Skripte und die Kunden nicht gerne den Ordner mit den Abhängigkeiten.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ok, Sie wusste nicht, wie, entweder von meinen anderen beiden Ideen... so hier geht...
Versenden Sie und geben Sie Ihren Kunden ein "stub-EXE". Die stub-EXE nicht davon abhängig, etwas anderes, und enthält nur eine ZIP-Datei (oder das setup-Paket oder ähnliches) als Ressource in der EXE stub. Die zip-Datei eingebettet wird in die stub-EXE-Datei enthält das eigentliche Programm-EXE und alle seine abhängigen DLLs. Wenn die stub-EXE läuft, ist es einfach entpackt die ZIP-Datei in ein temporäres Verzeichnis und startet die Anwendung EXE-Datei.
Könnte man es optimieren, so dass, wenn Sie die app bereits installiert haben, in %TEMP% ein, dann überspringen Sie das Auspacken Schritt und starten Sie einfach die Anwendung EXE-Datei bereits vorhanden.
Persönlich, ich würde nicht diesen Weg gehen. Nur geben Sie dem Benutzer einen installer, wenn die EXE hat Abhängigkeiten. Aber Sie kennen Ihre Nutzer und Kunden besser kennen als ich.
Könnten Sie statisch verknüpfen Sie die ausführbare Datei.
Eine alternative ist die Installation der DLL in den GAC.
Du nicht erwähnen, was die DLL-Abhängigkeiten. Nur straight-up-DLLs mit einem stub-lib? Die dynamisch geladen werden über LoadLibrary? COM? Anmeldung erforderlich? Ist dieser .NET?
Mehrere Optionen zu prüfen.
Setzen, die alle benötigten DLLs in das selbe Verzeichnis wie die EXE-Datei (so dass Sie nicht haben, um muck bei der PATH-variable). Die Installation ist nur ein "copy *.*" oder einfach nur ausgeführt werden dürfen, aus dem Sie eine Datei teilen. (YMMV, wenn es .NET-code - wie die Sicherheit-Einschränkung, wenn Sie von einer Freigabe remote-Datei).
Statisch-link die EXE-Datei mit der C-Runtime anstelle der dynamischen option (so dass Sie nicht haben, um redist "MSVCRT" auf Maschinen, die nicht bereits installiert haben).
Habe ich einige tollere Ideen, wenn die oben genannten 2 Einträge nicht ausreichen. Lassen Sie es mich wissen.
Anscheinend gibt es software konvertieren kann ein DLL eine LIB, so dass Sie link gegen ihn statisch, aber das wäre overkill in diesem Fall.