Fragensteller
DLL in .exe einbinden

Allgemeine Diskussion
-
Hallo,
ich sitze gerade an einer WPF-Application in der ich eine DLL (diese: http://sevenzipsharp.codeplex.com/) verwende.
Für gewähnlich setze ich einen Verweis und eine using-Direktive. Nun möchte ich meine Anwendung an Nutzer ausgeben, dazu möchte ich nur die .exe verteilen müssen, damit meine Anwender nichts falsch machen können. Wenn ich sie also auf einem anderen Computer ausführe, dann funktioniert sie nicht. (Keine Meldung trotz try/catch)
Versucht habe ich bereits ILMerge, ILMergeGui und Gilmadie .dll und die .exe zu verbinden, allerdings ist jede Datei die ich bisher ausführen wollte genau so erfolgreich wie die aller erste!
Ein Installer oder Setup kommt nicht in Frage. Google hat bisher nicht geholfen.
Gibt es einen anderen Weg abgesehen von ILMerge?
Mit freundlichem Gruß
Yannek Steinweg
- Typ geändert Aleksander Chalabashiev Mittwoch, 3. Februar 2016 08:02 keine bestätige Lösung
Alle Antworten
-
Hallo Yannek,
nur so nebenbei gefragt: Warum nimmst Du nicht DotNetZip?
https://dotnetzip.codeplex.com/
SevenZipSharp benötigt lt. Angabe auf der genannten Website 7-Zip auf dem jeweiligen PC. Und spät. diese Assemblies kannst Du nicht bzw. nur recht schwer bei dir einbinden.
DotNetZip hat keine solchen Abhängigkeiten, daher wäre es damit auf jeden Fall einfacher.
Ob das dann mit ILMerge funktioniert, müsstest Du mal probieren.
Gruß, Stefan
Microsoft MVP - Visual Developer ASP/ASP.NET
http://www.asp-solutions.de/ - Consulting, Development
http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community -
Hallo Stefan,
Ich habe da als mir die .7z Dateien über den Weg gelaufen sind gesucht und habe das genommen, warum? Keine Ahnung. Die jeweilige Dll von 7zip wird per Resource immer dann auf dem PC erstellt wenn es nötig ist. Im Debugger von Visual Studio hat es bisher ohne die volle Installation von 7Zip funktioniert.
- Bearbeitet DERYANNEK Donnerstag, 14. Januar 2016 10:36
-
Hallo Yannek,
ok, wenn Du die DLL schon so auslieferst, passt das eigentlich.
Wenn ich den Hinweis auf der Projektseite:
It exploits the native 7zip dynamic link library through its COM interface and exports classes to work with various file archives.
richtig deute, könnte es aber sein, dass die Komponente auf dem Zielsystem noch registriert werden muss. Bspw. über
regsvr32 X:\Ordner\Datei.dll
Ansonsten bräuchten wir dann schon irgendeinen Hinweis darauf, was genau nicht funktioniert. Ohne eine weitergehende Beschreibung oder Fehlermeldung können wir leider nicht helfen.
Schau bitte mal ins Windows Ereignisprotokoll, evtl. findest Du dort etwas.
Gruß, Stefan
Microsoft MVP - Visual Developer ASP/ASP.NET
http://www.asp-solutions.de/ - Consulting, Development
http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community -
Hallo Stefan,
ich habe eben , warum auch immer, die Anwenung starten können. Ich bin bis zu dem Teil des Codes gekommen, indem ich das extrahieren der Dateien starten würde.
Also habe ich MessageBoxen eingefügt, damit ich sehen kann, wie weit genau er geht. Resultat => startet nichtmehr. Egal ob mit oder ohne richtiger DLL im Anwendungsverzeichnis.
Wie du geschrieben hast, würde sich ein Blick in die Ereignisprotokolle lohnen. Dort habe ich folgendes gefunden:
Die Beschreibung für die Ereignis-ID "0" aus der Quelle "dbupdate" wurde nicht gefunden. Entweder ist die Komponente, die dieses Ereignis auslöst, nicht auf dem lokalen Computer installiert, oder die Installation ist beschädigt. Sie können die Komponente auf dem lokalen Computer installieren oder reparieren.
Ich kann damit nichts anfangen und andere Ereignisse sind nicht zu finden. Das passt auch von der Zeit her!
Mit freeundlichem Gruß
Yannek Steinweg
- Bearbeitet DERYANNEK Donnerstag, 14. Januar 2016 14:02