Hallo,
ich habe einen kleinen Downloader entwickelt, den ich gerne Verteilen würde und suche momentan eine Möglichkeit, dass ein Benutzer das Programm abändern kann (mit jeweils einer geänderten Klasse, in der sich 3 "Konfigurationsvariablen" befinden)
Gibt es da eine Möglichkeit, eine Klasse nachträglich (mit overwrite) einzufügen?
Ein Beispiel für eine Klasse, die vom Benutzer "personalisiert" werden soll:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace CanasCorpDownloader
{
static class GVar
{
public static string source;
public static string target;
public static string nooffiles;
public readonly static string gamename = "Daylight";
public readonly static string gamexml = "http://ccload.cherrytree.at/dl/dl.xml";
public readonly static string gameimageurl = "http://ccload.cherrytree.at/dl/UpdateHead.png";
}
}
Hallo,
wieso denn das? Du kannst z.B. eine Konfigurationsdatei anlegen und beim Programmstart einlesen, Variable damit besetzen und fettich.
**:::
Der Sinn des Programms ist es, dass mein Downloader abgeändert werden kann, damit andere RPG-Maker-Entwickler ihn benutzen können. Da wären offene Configs nicht so angebracht 😉
Hallo iAlex,
Wenn das so ist:
Kommst du nicht um irgend eine Art der Änderung and der *.exe herrum (was immer irgend wie am besten als "compilieren" zu bezeichnen wäre).
Da gibt es viele möglich keiten, ich liste mal die auf, die mir einfallen (von einfach zu schwer):
Aber trozt allem würde das ganze eh nur laufen, wenn eine CLR installiert ist (also unter Windows .NET).
Gruß
Juy Juka
Hallo iAlex,
herbivore
- Resource-Datei in der *.exe "embedden" und diese Resouce-Datei dann in der *.exe ändern
Habe jetzt diesen Codeschnipsel gefunden, weiß da aber nichts mit anzufangen. Könnte mir das einer erläutern, wie ich die Funktion Nutze?
[DllImport("kernel32.dll", SetLastError = true)]
static extern bool UpdateResource(IntPtr hUpdate, String lpType, String lpName, ushort wLanguage, IntPtr lpData, uint cbData);
warum nicht ein plug-in system ?
ein paar interfaces bereit stellen - und die exe scannt die plug-in dll nach den interfaces und ruft die dann einfach auf
wenn was neues kommt muss man nur soch eine plugin dll dazu packen und feddich
Weil das ganze programm eben nur aus einer .exe bestehen soll 😉
Es ist ja eine Art "Installer"
Kleiner Hinweis an dieser Stelle. Du könntest die Plugins auch an deine Exe "anhängen" (sie wären also in der exe mit drin) und beim Aufruf alle angehängten Dinge laden. Das geht auf jedenfall. Ich weiß grade nicht wie, aber dass es irgendwie ging weiß ich. Da wird dir hier bestimmt jemand helfen können 😉
„Heute back ich, morgen brau ich,
übermorgen cast ich die Königin nach int;
ach, wie gut dass niemand weiß,
dass ich Rumpelstilzchen heiß!“
"Bei Stylefragen sollteste nen Mac-User oder ne Frau fragen."
Der Sinn des Programms ist es, dass mein Downloader abgeändert werden kann, damit andere RPG-Maker-Entwickler ihn benutzen können. Da wären offene Configs nicht so angebracht 😉
Was spricht denn gegen Konfig-Daten, die binär und/oder verschlüsselt hinterlegt sind? Alles andere ist meiner Meinung nach mit Kanonen auf Spatzen geschossen...
Christian
Weeks of programming can save you hours of planning
Ein ähnliches Anliegen gab es mal hier: Selbstextrahierende Zip-Exe mit SharpZipLib ? das dürfte dann allerdings nicht mit signierten Assemblies funktionieren.
Was spricht denn gegen Konfig-Daten, die binär und/oder verschlüsselt hinterlegt sind? Alles andere ist meiner Meinung nach mit Kanonen auf Spatzen geschossen...
Christian
Nun es geht aber darum, dass ich nur eine verdammte exe-Datei versenden brauche. Halt wie eine Setup.exe.
Also benötigte ich nur eine Methode, die es mir erlaubt, einen String in Resources permanent zu ändern. (Bin halt leider zu doof für UpdateResource und weiß sowieso nix mit Pointern anzufangen 😉
Link angeschaut?? Da werden zwar keine Resourcen benutzt aber das sollte ja egal sein...
Hallo iAlex,
es wurden jetzt eigentlich genug Lösungen für dein Problem angegeben. Wenn du mit einer bestimmten Lösung nicht weiterkommst, dann nimm halt eine andere.
herbivore