Wer kennt das nicht: Man will mal schnell ne Exe überschreiben oder löschen, ohne gleich das dazugehörige Programm zu beenden.
Desahlb habe ich mal ein kleines Programm zusammengehackt, welches eine Exe samt Dlls mittels Assembly.Load(byte[]) lädt und dann ausführt. Der erste Parameter ist die zu ladende Exe-datei, danach folgen die zu übergebenden Parameter.
MIT-Lizenz
Mit WPF-Anwendungen gibts anscheinend Probleme beim Laden von Resourcen.
Vielleicht kanns ja trotzdem jemand gebrauchen^^ Wer das Konsolenfenster loswerden will, der kann einfach in den Projekteigenschaften auf Windows-Anwendung umstellen.
Ich kenns eigentlich echt nicht 😉
Für welchen Zweck brauchst du das?
Und wie funktioniert es, man muss also das Programmm schon vorher anders starten, falls mans evtl. überschreiben mag?
Hab das für n kleines Projekt mit etlichen Dateien, die ins Ausgabeverzeichnis kopiert werden gemacht. So nach dem Motto: Mal eben schnell Erstellen drücken (um die Dateien neu zu kopieren), aktualisieren und gucken, wies aussieht, wenn der Knopf unten rechts 5 Pixel schmaler ist. Problem is blolß, dass das normalerweise fehlschlägt, solange das Programm läuft.
man muss also das Programmm schon vorher anders starten, falls mans evtl. überschreiben mag?
Ja, es wird das Ladeprogramm gelockt, anstatt des eigendlichen Programms.
Siehst du eine Möglichkeit das gestartete Assembly in eine Art Container zu packen, seine Consolen Ausgaben zu überwachen und bei einem unerwarteten Fehler neu zu starten? Also vom Prinzip her, ein Application Server. Diese Idee hat als freies .NET Projekt echtes Potenzial.
Hallo!
Also vom Prinzip her, ein Application Server
Naja, ich würde es dann eher in die Kategorie WatchDog einordnen.
Nobody is perfect. I'm sad, i'm not nobody 🙁
welches eine Exe samt Dlls mittels Assembly.Load(byte[]) lädt und dann ausführt.
Hallo Floste,
gibt es hierbei noch etwas zu beachten?
Wenn ich deinen ShadowRunner benutze kann ich zwar die *.exe meiner Anwendung überscheiben oder löschen. Bei *.dll bekomme ich die Meldung, die Datei sei von einem anderen Programm verwendet.
(Window 7 - 32 bit)
//Jörg
Bei mir geht es auch mit den dlls.
Allerdings führe ich den shadowrunner auch nicht im anwendungsverzeichnis aus, daran ligt es wahrscheinlich. Ich gucks mir später genauer an.