Laden...

Benutzer Programm generieren lassen

Erstellt von iAlex vor 14 Jahren Letzter Beitrag vor 14 Jahren 1.964 Views
I
iAlex Themenstarter:in
8 Beiträge seit 2009
vor 14 Jahren
Benutzer Programm generieren lassen

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";
    }
}
1.696 Beiträge seit 2006
vor 14 Jahren

Hallo,

wieso denn das? Du kannst z.B. eine Konfigurationsdatei anlegen und beim Programmstart einlesen, Variable damit besetzen und fettich.

Ich bin verantwortlich für das, was ich sage, nicht für das, was du verstehst.

**:::

I
iAlex Themenstarter:in
8 Beiträge seit 2009
vor 14 Jahren

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 😉

2.187 Beiträge seit 2005
vor 14 Jahren

Hallo iAlex,

  • Du möchtest also, dass ein Entwikler (RPG Autor) deine *.exe einfach einem User gibt und dieser User dann das Programm (RPG) herrunter läd.
  • Damit es schön einfach ist soll alles in einer Datei (*.exe) drin sein.

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):

  1. Neu Kompilieren (tjoa. 0815)
  2. Die neue Klasse in eine eigene *.dll kompilieren und diese *.dll und die *.exe mittels NETZ in eine *.exe vereinen (die *.exe muss die *.dll dann natürlich automatisch und ohne den *.dll-Namen zu kennen finden, gibt's aber alle schon hier im Forum (irgend wo))
  3. Resource-Datei in der *.exe "embedden" und diese Resouce-Datei dann in der *.exe ändern
  4. Den IL-Code der *.exe ändern (wird dann aber noch mal um ein Vielfaaches kompliziert wenn dann Sicherheit, Autentifizierung, Signierung und Co. mit ins Spiel kommen (gibt's aber auch hier im Fourm).

Aber trozt allem würde das ganze eh nur laufen, wenn eine CLR installiert ist (also unter Windows .NET).

Gruß
Juy Juka

49.485 Beiträge seit 2005
vor 14 Jahren

Hallo iAlex,

  1. den Code per CodeDOM generieren und compilieren.

herbivore

I
iAlex Themenstarter:in
8 Beiträge seit 2009
vor 14 Jahren
  1. 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);
U
1.578 Beiträge seit 2009
vor 14 Jahren

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

I
iAlex Themenstarter:in
8 Beiträge seit 2009
vor 14 Jahren

Weil das ganze programm eben nur aus einer .exe bestehen soll 😉
Es ist ja eine Art "Installer"

C
114 Beiträge seit 2008
vor 14 Jahren

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."

5.657 Beiträge seit 2006
vor 14 Jahren

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

2.760 Beiträge seit 2006
vor 14 Jahren

Ein ähnliches Anliegen gab es mal hier: Selbstextrahierende Zip-Exe mit SharpZipLib ? das dürfte dann allerdings nicht mit signierten Assemblies funktionieren.

I
iAlex Themenstarter:in
8 Beiträge seit 2009
vor 14 Jahren

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 😉

2.760 Beiträge seit 2006
vor 14 Jahren

Link angeschaut?? Da werden zwar keine Resourcen benutzt aber das sollte ja egal sein...

49.485 Beiträge seit 2005
vor 14 Jahren

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