Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 | Suche | FAQ

Hauptmenü
myCSharp.de
» Startseite
» Forum
» Suche
» Regeln
» Wie poste ich richtig?

Mitglieder
» Liste / Suche
» Wer ist online?

Ressourcen
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Microsoft Docs

Team
» Kontakt
» Cookies
» Spenden
» Datenschutz
» Impressum

  • »
  • Community
  • |
  • Diskussionsforum
Benutzer Programm generieren lassen
iAlex
myCSharp.de - Member



Dabei seit:
Beiträge: 8

Themenstarter:

Benutzer Programm generieren lassen

beantworten | zitieren | melden

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";
    }
}
Dieser Beitrag wurde 2 mal editiert, zum letzten Mal von iAlex am .
private Nachricht | Beiträge des Benutzers
vbprogger
myCSharp.de - Experte

Avatar #avatar-1820.gif


Dabei seit:
Beiträge: 1.696
Herkunft: NRW/DE

beantworten | zitieren | melden

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.
---------
Bemerkung: ich beantworte keine Fragen via PM, denn das Forum soll ja was davon haben!
private Nachricht | Beiträge des Benutzers
iAlex
myCSharp.de - Member



Dabei seit:
Beiträge: 8

Themenstarter:

beantworten | zitieren | melden

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 ;)
Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von iAlex am .
private Nachricht | Beiträge des Benutzers
JuyJuka
myCSharp.de - Experte

Avatar #avatar-2316.jpg


Dabei seit:
Beiträge: 2.187
Herkunft: Deutschland

beantworten | zitieren | melden

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
private Nachricht | Beiträge des Benutzers
herbivore
myCSharp.de - Experte

Avatar #avatar-2627.gif


Dabei seit:
Beiträge: 49.486
Herkunft: Berlin

beantworten | zitieren | melden

Hallo iAlex,

5. den Code per CodeDOM generieren und compilieren.

herbivore
private Nachricht | Beiträge des Benutzers
iAlex
myCSharp.de - Member



Dabei seit:
Beiträge: 8

Themenstarter:

beantworten | zitieren | melden

Zitat von JuyJuka
3. 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);
private Nachricht | Beiträge des Benutzers
userid14268
myCSharp.de - Member



Dabei seit:
Beiträge: 1.578

beantworten | zitieren | melden

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
private Nachricht | Beiträge des Benutzers
iAlex
myCSharp.de - Member



Dabei seit:
Beiträge: 8

Themenstarter:

beantworten | zitieren | melden

Weil das ganze programm eben nur aus einer .exe bestehen soll ;)
Es ist ja eine Art "Installer"
private Nachricht | Beiträge des Benutzers
Chickenlord
myCSharp.de - Member



Dabei seit:
Beiträge: 114

beantworten | zitieren | melden

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ß!“
Zitat
"Bei Stylefragen sollteste nen Mac-User oder ne Frau fragen."
private Nachricht | Beiträge des Benutzers
MrSparkle
myCSharp.de - Team

Avatar #avatar-2159.gif


Dabei seit:
Beiträge: 5.655
Herkunft: Leipzig

beantworten | zitieren | melden

Zitat von iAlex
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
private Nachricht | Beiträge des Benutzers
jaensen
myCSharp.de - Experte

Avatar #avatar-2657.png


Dabei seit:
Beiträge: 2.760
Herkunft: München

beantworten | zitieren | melden

Ein ähnliches Anliegen gab es mal hier: Selbstextrahierende Zip-Exe mit SharpZipLib ? das dürfte dann allerdings nicht mit signierten Assemblies funktionieren.
private Nachricht | Beiträge des Benutzers
iAlex
myCSharp.de - Member



Dabei seit:
Beiträge: 8

Themenstarter:

beantworten | zitieren | melden

Zitat von MrSparkle
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 ;)
private Nachricht | Beiträge des Benutzers
jaensen
myCSharp.de - Experte

Avatar #avatar-2657.png


Dabei seit:
Beiträge: 2.760
Herkunft: München

beantworten | zitieren | melden

Link angeschaut?? Da werden zwar keine Resourcen benutzt aber das sollte ja egal sein...
private Nachricht | Beiträge des Benutzers
herbivore
myCSharp.de - Experte

Avatar #avatar-2627.gif


Dabei seit:
Beiträge: 49.486
Herkunft: Berlin

beantworten | zitieren | melden

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
private Nachricht | Beiträge des Benutzers