2012-04-12 6 views
0

Ich habe eine EXE-Datei, die eingebettete Ressource enthält. Ich müsste eine andere Anwendung schreiben, die die EXE öffnet, ihre Ressource aktualisiert und sie als gültige ausführbare Datei speichert. (Ich kann es nicht neu kompilieren, da auf der Maschine, auf der es ausgeführt wird, die Quelle möglicherweise nicht verfügbar ist).Mithilfe der Reflektion eingebettete Ressourcen in einer Baugruppe aktualisieren?

Ist das möglich und wie (Ich brauche eine Idee oder möglicherweise einen Link, nicht für eine vollständige Lösung)?

Bearbeiten: Assembly Ich muss aktualisiert werden ist eine .NET 3.5-Assembly.

+0

Wollen Sie nicht irgendwo Ressourcen speichern sonst dann? Das klingt wie eine schlechte Idee, auch wenn Sie einen Weg finden. –

+1

Beziehen Sie sich auf "native Ressourcen" oder .NET-Ressourcen? IIRC sie sind anders. Für den ersten gibt es [XN Resource Editor] (http://www.wilsonc.demon.co.uk/d10resourceeditor.htm), der mit Quellcode geliefert wird. –

+0

Wenn ich Updates mache, ersetze ich einfach die gesamte ausführbare Datei durch die neue Version. Warum musst du den langatmigen Weg gehen, es zu modifizieren und neu zu kompilieren? – Amicable

Antwort

0

Ich nehme an, Sie können eine neue Klasse in der Assembly mit eingebetteten Ressourcen hinzufügen, die diese Ressourcen manipulieren. Und dann rufen Sie Manipulationsmethoden mit Reflektion auf. Ich meine, so etwas wie dieses:

/*The program which has embedded resources*/ 
public static class ResourceManager 
{ 
    public static void ChangeResource1(Base64 newResource); 
    /*** Other methods***/ 
} 

/*The program that modifies resources*/ 
MethodInfo[] method = typeof(ResourceManager).GetMethod(ChangeResource1); 
method.Invoke(someNewData); 

nicht sicher, ob es aber funktioniert ...

Verwandte Themen