[Solved]Softwarebundle erstellen - On Demand

  • C#

Es gibt 11 Antworten in diesem Thema. Der letzte Beitrag () ist von Marcus Gräfe.

    [Solved]Softwarebundle erstellen - On Demand

    Neu

    Hallo Liebe Community,

    da der Titel recht ungenau ist, ich jedoch einfach nicht weis was dafür passende Keywords sind, erkläre ich kurz um was es geht.

    Nehemen wir an wir vertreiben eine Software zu einer Hardware. Diese Software weist unterschiedliche Module zu Unterschiedlicher Hardware auf.
    Der Kunde weis was er hat bzw. was er benötigt. Somit wäre es sehr unpraktikabel jedem Kunden die gesamte Software zu liefern, da er das meiste dann nicht braucht.

    Nun zu meiner Frage: Gibt es eine Möglichkeit eine Software dynamisch zu Kompilieren, mit allen vorher ausgewählten Komponenten. Die Auswahl würde dann auf der Website im Download bereich erfolgen.

    Ich bin über jeden hinweis dankbar und wenn es nur keywords sind mit denen ich zumindest meine Suche ausweiten kann. Aktuell habe ich einfach keinen Plan unter was für Begrifflichkeiten sowas fällt.


    Grüße,

    Mausekeks
    Brain is Loading: 35%

    Neu

    Nicht dynamisch kompilieren, sondern die Software modulbasiert entwickeln. Jedes für sich abgeschlossene Modul kommt in eine extra DLL, die dann beim Start dynamisch geladen werden können. Das Stichwort hierbei wäre wohl eher Plugin bzw. Pluginsystem.

    Ist die Software entsprechend erstellt, kann der Kunde auf der Webseite die benötigten Funktionen auswählen, und bekommt dann eben den Anwendungsrumpf, mitsamt den von ihm benötigten Funktions-DLLs
    SIMDoku (Simple Dokumentenverwaltung)
    Mein Lernprojekt um die verschiedensten Facetten der .NET Entwicklung zu erkunden.
    GitHub

    VB Paradise Dark Theme
    Inoffizieller VB-Paradise Discord.

    Neu

    @EaranMaleasi So isses.
    @mausekeks Bei uns liegen diese DLLs in separaten Verzeichnissen mit hardware-spezifischen Namen neben der Exe (diverse Kameras, AD-Karten usw.).
    Der Kunde bekommt dann nur die Verzeichnisse mit den DLLs, die er benötigt,
    womit das Problem zu einem intelligenten Install-Maker verlagert wird.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!

    Neu

    @EaranMaleasi und @RodFromGermany
    Vielen Dank für euere Antworten.

    Das wäre auch prinzipiell meine erste Idee gewesen das so zu machen und ich denke das wird dann auch der Weg der gegangen wird.
    Wollte eben auch nach anderen Möglichkeiten Suchen aber dann hat sich die Sache damit erledigt.
    Brain is Loading: 35%

    Neu

    Auch wenn das Topic schon als erledigt markiert ist, genau das:

    mausekeks schrieb:

    Gibt es eine Möglichkeit eine Software dynamisch zu Kompilieren

    ist doch mit Compiler-Konstanten möglich, oder nicht? Siehe z. B. techrepublic.com/article/decid…ional-compiler-constants/

    Einer meiner früheren Arbeitgeber hat sowas in Delphi benutzt, um pro Kunde ein eigenes Kompilat (nennt man das so?) zu erstellen.

    Also sowas wie (Pseudocode):

    Quellcode

    1. kunde = "xy"
    2. if kunde="meier" {
    3. rechnungsmodul = true
    4. stammdaten = true
    5. }
    6. elseif kunde="müller" {
    7. rechnungsmodul = false
    8. stammdaten = true
    9. }

    Besucht auch mein anderes Forum:
    Das Amateurfilm-Forum

    Neu

    Wenn ich deinen Code richtig interpretiere, so schaltest du Teile com Code an oder aus, je nachdem was vom Kunden verlangt wird. Was @mausekeks aber möchte, meiner Meinung nach, ist dass dieser Code erst garnicht den Kunden erreicht, wenn dieser jenen nicht benötigt.
    SIMDoku (Simple Dokumentenverwaltung)
    Mein Lernprojekt um die verschiedensten Facetten der .NET Entwicklung zu erkunden.
    GitHub

    VB Paradise Dark Theme
    Inoffizieller VB-Paradise Discord.

    Neu

    Das nennt man conditional compiling oder preprocessor directives.
    Es ist allerdings mühsam, das für viele Kunden zu verwalten.

    Klar, ein paar Flags an- und auszuschalten geht noch.
    Aber dann wird der Code an sich schon mitgeliefert (Klassen, Prozeduren ...), nur nie angesprungen.
    --
    If Not Program.isWorking Then Code.Debug Else Code.DoNotTouch
    --

    Neu

    @Marcus Gräfe Achsoo, ich ging davon aus, du meintest tatsächlich dass man lediglich ein paar Flags setzt, je nachdem wie man kompiliert, sodass der Code mitgeliefert, die Funktionalität aber versteckt/abgeschalten wird.

    Natürlich kann man das tun, sich überall im Code solche #ifs setzen, bei einer entsprechend großen Anwendung hat man damit aber recht schnell ein #if Chaos da man in etlichen Klassen diese #ifs setzen muss damit der Code tatsächlich nicht mitkompiliert wird.
    SIMDoku (Simple Dokumentenverwaltung)
    Mein Lernprojekt um die verschiedensten Facetten der .NET Entwicklung zu erkunden.
    GitHub

    VB Paradise Dark Theme
    Inoffizieller VB-Paradise Discord.

    Neu

    @all: Jou

    Marcus Gräfe schrieb:

    Der Code wird gar nicht erst mitkompiliert.
    Dann ist es doch besser und einfacher, den nicht zu compilierenden Code in DLLs auszulagern, stets alles zu compilieren und die Verteilung der DLLs zu managen.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!

    Neu

    Danke für die rege diskussion noch.


    @Marcus Gräfe danke für den link, werde ich mir mal anschauen.

    @EaranMaleasi hat allerdings recht das es für unseren Kundenstamm sehr umständlich wird dies umzusetzen.
    Das endgültige ziel dieser Angelegenheit ist es, dem kunden online die Möglichkeit zu geben sich das Produkt (Hardware) eigens auf seine Bedürfnisse zu zuschneiden.
    Am ende kommt dann genau das Softwarepaket heraus welches für das zuvor konfigurierte Produkt alle Funktionen beinhaltet.

    LG Mausekeks
    Brain is Loading: 35%

    Neu

    EaranMaleasi schrieb:

    bei einer entsprechend großen Anwendung hat man damit aber recht schnell ein #if Chaos

    Ich weiß nicht, ob das in VB.NET/C# möglich ist, aber man könnte z. B. die Einbindung von ganzen Formularen, die umfangreichen Code beinhalten, über solche Direktiven unterbinden. Ich meine, in Delphi hätten wir das gemacht.

    Also da gab es eine Hauptdatei, da steht sowas drin wie include FrmRechnung (der genaue Delphi-Syntax ist mir gerade entfallen) und da drum herum war das #if.

    Aber ich stimme schon zu, dass DLLs ordentlicher sind. Vor allem, weil man dann eben nicht für jeden Kunden neu kompilieren muss.
    Besucht auch mein anderes Forum:
    Das Amateurfilm-Forum