Laden...

Eigenes Setup erstellen (war: Daten aus EXE extrahieren) [==> besser fertige Setup-Lösung verwenden]

Erstellt von GstaGsta vor 12 Jahren Letzter Beitrag vor 12 Jahren 1.967 Views
Thema geschlossen
G
GstaGsta Themenstarter:in
47 Beiträge seit 2010
vor 12 Jahren
Eigenes Setup erstellen (war: Daten aus EXE extrahieren) [==> besser fertige Setup-Lösung verwenden]

Guten Morgen,

ich bin gerade dabei für ein Programm ein eigenes Setup zu erstellen. Ein Installations Programm, welches exakt für mein zu verbreitendes programm vorgesehen ist.

Das ganze Design steht schon. Das Programm startet mit Admin rechten und die Einträge in die Registry sollten auch kein Problem sein. Nur wie kann ich meine Programm exe und die dazugehörigen DLLs in die SetUp EXE einbringen- und beim ausführen diese wieder extrahieren/exportieren ?

Ich hoffe ihr versteht was ich meine?

Danke schonmal

Liebe Grüße
GstaGsta

Ich könnte dir sagen was mit der Welt los ist. Doch würde es dir wirklich sagen was mit der Welt los ist?

I
279 Beiträge seit 2008
vor 12 Jahren

Wieso nimmst du nicht eine fertige Setup-Lösung, wie von Visual Studio oder eine andere, gibt ja auch eine Freie?

G
GstaGsta Themenstarter:in
47 Beiträge seit 2010
vor 12 Jahren

Hab es mit ein paar schon versucht. Klar ist das eine schnellere und gute Lösung.

Dabei muss ich ehrlich sagen, gefällt mir die VS Lösung nicht wirklich, doch der Punkt ist, dass ich so ein Projekt einfach selbst mal machen möchte. Sieht halt am Ende netter aus etc.

ich bin vorhin auf folgenden Link gestoßen:

http://www.dotnetscraps.com/dotnetscraps/post/Insert-any-binary-file-in-C-assembly-and-extract-it-at-runtime.aspx

Dieses Tutorial teste ich gerade, doch habe bei folgender Zeile ein Problem:

int read = input.Read(buffer, 0, buffer.Length);

Die Exception heist:

Fehlermeldung:
NullReferenceException

Der Objektverweis wurde nicht auf eine Objektinstanz festgelegt.

ich befürchte dass er folgende Methode nicht richtig ausführt, da er hier keinen rückgabewert bzw. null bekommt:

var input = assembly.GetManifestResourceStream("Sample.File.xlsx");

über dieser Methode steht ja der Kommentar:

//In the next line you should provide NameSpace.FileName.Extension that you have embedded

Ich glaube hier liegt der Fehler, dass ich diesen string nicht richtig Setze.

Ich könnte dir sagen was mit der Welt los ist. Doch würde es dir wirklich sagen was mit der Welt los ist?

B
357 Beiträge seit 2010
vor 12 Jahren

Warum nicht mit der ZipLib ein Archiv erstellen, welches beim Ausführen des Setups entpackt wird? Oder ist als Deployment nur eine einzige Datei vorgesehen? In dem Fall kannst du dir auch mal den Nullsoft-Installer anschauen.

G
GstaGsta Themenstarter:in
47 Beiträge seit 2010
vor 12 Jahren

Hast du evtl. iwelche Links, Tutorials etc. für die ZipLib?

Es sind mehrere DLLs etc. die extrahiert/entpackt werden sollen

Ich könnte dir sagen was mit der Welt los ist. Doch würde es dir wirklich sagen was mit der Welt los ist?

49.485 Beiträge seit 2005
vor 12 Jahren

Hallo GstaGsta,

ich halte das Basteln an einem eigenen Setup für wenig sinnvoll. Dafür gibt es fertige Lösungen. Ich kann mir nicht vorstellen, dass deine Anforderungen so speziell sind, dass du mit denen nicht zum Ziel kommst.

Alles andere (Resourcen, ZipLib, usw.) wären nur unnötige Workarounds.

herbivore

G
GstaGsta Themenstarter:in
47 Beiträge seit 2010
vor 12 Jahren

Klar da hast du recht. Ein vordefiniertes SetUp ist absolut das einfachste. Meine Erwartungen sind auch nicht sehr speziell, doch ich möchte es trozdem mal versuchen.

Mein einzigstes problem dabei ist glaube ich noch, dass ich denn string unter dem Kommentar:

// In the next line you should provide NameSpace.FileName.Extension that you have embedded

nicht richtig habe.

Welcher NameSpace ist denn gemeint? Reicht einfach nur der Name der Resource, welche ich extrahieren möchte?

Danke für eure schnellen Antworten 😃

Ich könnte dir sagen was mit der Welt los ist. Doch würde es dir wirklich sagen was mit der Welt los ist?

49.485 Beiträge seit 2005
vor 12 Jahren

Hallo GstaGsta,

du musst den vollqualifizierten Namen der Ressource angeben.

Wie man Ressourcen lädt, gehört zu den Grundlagen und wurde schon oft besprochen. Siehe [Hinweis] Wie poste ich richtig? Punkt 1.1.1 und 1.1.

Es gibt auch Methoden, um sich auflisten zu lassen, welche Ressourcen in einer Assembly enthalten sind. Da siehst du dann auch die verwendeten Namen.

herbivore

Thema geschlossen