exe Datei aus Ressourcen starten

mafiamix

Mitglied
Hallo,

ich möchte, dass eine exe-Datei aus den Ressourcen von einem Programm gestartet wird und unabhängig vom "alten" Programm ist. Das heißt, wenn ich beispielsweise auf ein Button klicke, dass die exe-Datei aus den Ressourcen geöffnet wird und ich jetzt auch das Programm mit dem Button, durch das die exe-Datei gestartet wurde und wo die exe Datei in den Ressourcen gespeichert ist, schließen könnte.
Ist das überhaupt möglich?
Ich habs bisher versucht, dass man es mit Process.start(my.ressoures...) startet, dann dass man eine Kopie ins Verzeichnis macht und von dort dann startet, was aber alles leider nicht funktioniert.
Kann mir da einer weiterhelfen?

Lg,

mafiamix
 
Hi, einen Process kannst du mit dem namespace using System.IO; und dem Code:



Code:
private void button1_Click(object sender, EventArgs e)
        {

            //Neuer Pfad
            string pfad = @"pfad + dateiendung exe....";

            //Pfad wird überprüft
            if (File.Exists(pfad))
            {
                // Neuer Prozess wird initalisiert damit du ihn mit Namen ansprechen kannst
                Process myprocess;
                myprocess = Process.Start(pfad);
               

            }
            else
                MessageBox.Show("Datei nicht vorhanden");
 
Hm hatte das eigentlich in VB.net, aber habs schon verstanden, was du genau meinst. Genauer gesagt, hab ich es bereits so versucht. :/

IO.File.Create(My.Resources.Datei)

Hier würde der Name der exe-Datei "Datei" heißen, allerdings kann man so anscheinend keine exe Dateien aus den Ressourcen von einem Programm erstellen bzw. öffnen, weil folgender Fehler kommt:

Der Wert vom Typ "1-dimensionales Array von Byte" kann nicht zu "String" konvertiert werden.

Auch wenn ich hiter Datei noch ".tostring" dransetze, funktioniert es nicht bzw. dann ist die Fehlermeldung weg, aber wenn ich den Code im Programm aufrufe, wird eine Datei mit irgendeinem Namen mit "[]Byte" im Dateinamen erstellt. Allerdings nicht die Datei, die ich aus den Ressourcen haben möchte.
 
Das sollte arg kompliziert werden, wenn du nicht vorher das Byte-Array aus den Resourcen in eine temporäre Datei schreibst und diese dann startest.
Ich weiß nicht, ob nicht spätestens DEP was unternimmt, wenn du versuchst, dein Array in den Speicher zu schreiben und dann aufzurufen...
 
Ist eigentlich egal, ob man es erst in ein Verzeichnis rein kopiert und dann startet. Sollte eigentlich sogar besser sein. Weißt du wie sowas geht?
 
Code:
Imports System.IO

Module Module1
    Sub Main()
        Using fs As New FileStream(Path.Combine(My.Computer.FileSystem.SpecialDirectories.Temp, "Programm.exe"), FileMode.Create, FileAccess.Write, FileShare.None)
            With New BinaryWriter(fs)
                .Write(My.Resources.Programm)
                .Flush()
                .Close()
            End With

            Process.Start(fs.Name)
        End Using

        Console.ReadKey()
    End Sub
End Module

So sollte das gehen...
Du musst dich nur noch drum kümmern, die Datei zu löschen, wenn du sie nicht mehr brauchst, oder wenn das Programm beendet ist, oder so.
 
Zuletzt bearbeitet:
Vielen Dank. :)
GENAU das hab ich gesucht. Das mit dem Dateilöschen usw. ist jetzt kein Problem mehr, nur an dem hats gehangen. Bewertung für die Beiträge hier bekommst gleich mal :)
Dankeschön.
 
Zurück