Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Wie erstellt man eine DEMO-Version (https://www.delphipraxis.net/146090-wie-erstellt-man-eine-demo-version.html)

Jens Hartmann 13. Jan 2010 08:58


Wie erstellt man eine DEMO-Version
 
Hallo zusammen,
habe mal eine Frage zum Thema DEMO-Versionen. Wie würde Ihr eine DEMO-Version erstellen. Mein Gedanke war folgender. Ich implementiere einen Timer, welchen ich im Form.Create starte.
Diese Zeile würde ich in der Standardversion auskommentieren.
Im Ereignis des Timer würde ich eine ShowMessage hinterlegen mit DEMO-Version, und anschließend einen weiteren Timer starten, welcher das Programm nach X Stunden beenden würde.

Delphi-Quellcode:
Form.Create;
begin
TimerDemo.Enabled := true;
End;

TimerDemo…
Begin
ShowMessage(‘Dies ist eine DEMO-Version, das Programm wird in 10 Stunden automatisch beendet‘);
TimerDemo.Enabled := false;
TimerDemoStop.Enabled := true;
End;

TimerDemoStop…
Begin
Close;
End;
Was würdet Ihr dazu sagen. Oder wie würdet Ihr sowas lösen.

Gruß Jens

Bernhard Geyer 13. Jan 2010 09:02

Re: Wie erstellt man eine DEMO-Version
 
Die Frage ist immer wie sicher sowas sein muss.

Bei einer Messagebox dürfte ein Hacker den entsprechenden Aufruf mit Timerstart in 5 Minuten mit NOPs auskommentiert haben.

Jens Hartmann 13. Jan 2010 09:15

Re: Wie erstellt man eine DEMO-Version
 
Hallo Bernhard,

Sicherheit benötige ich eigentlich nicht. Die DEMO werden eigentlich nur Vertriebsleute in der Hand haben, um sich diese Sache anzusehen.
Ich habe halt nur das bedenken, wenn ich die DEMO ganz ohne Einschränkungen ausgebe, das es ja dann förmlich dazu verleitet die Software zu nutzen.
Ich möchte somit eigentlich nur eine gewisse Einschränkung erreichen.

Gruß Jens

dataspider 13. Jan 2010 09:27

Re: Wie erstellt man eine DEMO-Version
 
Hi,

es kommt natürlich darauf an, was das Programm macht.
Ich habe es z.B. so gelöst, dass in der Demo auf jedem Ausdruck 'DEMO' steht.

Allerdings wäre mein Programm ohne vernünftige Ausdrucke halt nutzlos.

Grund ist, dass die Gängelei mit Meldungen und zusätzlichen Bestätigungen ja auch mich selbst nervt.
Und wenn man das nicht sehr bedacht angeht, hat man schon potentielle Kunden verloren.

Frank

himitsu 13. Jan 2010 09:35

Re: Wie erstellt man eine DEMO-Version
 
Jupp, zeitliche Einschränkungen lassen sich mitunder noch am Leichtesten umgehn.
Besser ist da immernoch die Funktionalität etwas einzuschränken.
- Funktionen weglassen (nicht nur deaktiveren, sondern garnicht erst einkompiliert)
- Zusätzliches reinzumachen läßt sich zwar auch zumgehn, aber nerft nicht so, wie z.B. irgendwenwelche ständigen Messageboxen
- die Menge von irgendwas beschränken
- ...

Delphi-Laie 13. Jan 2010 09:57

Re: Wie erstellt man eine DEMO-Version
 
Vor kurzem gab es, soweit ich mich entsinne, in diesem Forum eine gute Diskussion dazu.

Tenor:

- der Aufwand, den man in einen mehr oder weniger vermeintlichen Schutz seines Programmes investiert, geht letztlich für die Pflege und Weiterentwicklung des eigentlichen Programmes (also im Hinblick auf die nützlichen Funktionen) verloren.
- Ist ein Programm gut genug, daß es einen Hack/Crack rechtfertigt, dann wird es auch entsprechend „behandelt“ bzw. „bearbeitet“.
- Kein Schutz ist vollkommen. Sogar die weltweit führenden Softwarehäuser haben einen solchen bis heute für ihre Produkte nicht geschafft, obwohl die Heerscharen dafür angestellt haben dürfte und gut bezahlen.
- Ein Programm, das geschützt wird, erweckt zusätzliche Neugier, Aufmerksamkeit (suggeriert besondere Wertfülle) und weckt deshalb und aus dem Grunde des Sportgeistes den Jagd- und Erfolgsinstinkt umso mehr. Und gerade bei Mikroweich dürfte noch ein erheblicher weltweiter Rochus hinzukommen: Mit rechtlich fragwürdigen Methoden, gepaart mit aggressiver Vermarktung und nicht enden wollenden Werbelügen und ewigen, nur teilweise gehaltenen Versprechen hat man sich zum faktischen Monopolisten hochgegaunert und der Welt letztlich eine aberwitzigen monetären Betrag für qualitativ lausige bis fragwürdige Produkte abgeluchst.

himitsu 13. Jan 2010 10:02

Re: Wie erstellt man eine DEMO-Version
 
Hier geht es ja nicht um einen Kopierschutz (welches noch aufwändiger wird).
Wenn man eine Demo z.B. im Funktionsumfang so einschränkt, daß einige Funktionen garnicht oder nur teilweise vorhanden sind, dann kann da ein "Hacker" auch nichts dran ändern, egal wie sehr er sich bemüht ... was nicht vorhanden ist, kann auch nicht freigeschaltet werden.

Jens Hartmann 13. Jan 2010 10:05

Re: Wie erstellt man eine DEMO-Version
 
Zitat:

Zitat von himitsu
Besser ist da immer noch die Funktionalität etwas einzuschränken.

Habe ich auch schon überlegt, allerdings möchte ich dem potenziellen User eigentlich auch alle Funktionen Präsentieren. Und wenn ich beim Normalen kompilieren einfach die Zeile
Delphi-Quellcode:
{TimerDemo.Enabled := true;}
Auskommentieren würde, kann ich mein Programm ja eigentlich immer normal starten. Wenn ich jetzt eine DEMO erstellen will, kommentiere ich die Zeile ein und fertig.
Wie meint Ihr das den sonst mit der Einschränkung. Das heißt z.B. das Ihr gewisse Unit´s einfach aus dem Projekt entfernt. Aber das ist doch dann immer mit einem größeren Aufwand verbunden.
Der Vorgang wäre sonst nämlich auch OK für mich, da ich auch gewisse Funktionen in meinem Programm habe, die ich als Option einbinden will.
Z.B. das versenden von E-Mails soll eine Option werden. Da weiß ich auch noch nicht wie ich das später mal genau einbinden werde.

Luckie 13. Jan 2010 10:14

Re: Wie erstellt man eine DEMO-Version
 
Du kannst mit Hilfe von Compilerschaltern eine bedingte Compilierung erreichen. Das ist in der Regel einfachher als Ein- und Auskommentieren:
Delphi-Quellcode:
{.$DEFINE DEMO}

...

{$IFDEF DEMO}
        SetTextColor(dc, RGB(255, 0, 0));
        rect.Top := rect.Top + 3;
        rect.Right := rect.Right - 10;
        DrawText(dc, PChar(rsDemo), length(rsDemo), rect, DT_CENTER);
{$ENDIF}
In diesem Fall ist der Compilerschalter deaktiviert und es wird eine Vollversion erstellt. Nimmst du den Punkt bei DEFINE weg, ist der Compilerschalter aktiviert und der Code zwischen IFDEF und ENDIF wird mitkompiliert.

RWarnecke 13. Jan 2010 10:15

Re: Wie erstellt man eine DEMO-Version
 
Ich würde die Funktionen mit Compiler-Schaltern herausnehmen, die nicht in der Demo-version vorhanden sein sollen und keinerlei zeitliche Beschränkungen reinpacken. Wenn dann ein Anwender das komplette Programm haben möchte, würde ich Ihm eine neue EXE-Datei zuschicken, wo dann die Funktionen wieder über die Compiler-Schalter freigeschaltet sind.

Jens Hartmann 13. Jan 2010 10:31

Re: Wie erstellt man eine DEMO-Version
 
Zitat:

Zitat von Luckie
In diesem Fall ist der Compilerschalter deaktiviert und es wird eine Vollversion erstellt. Nimmst du den Punkt bei DEFINE weg, ist der Compilerschalter aktiviert und der Code zwischen IFDEF und ENDIF wird mitkompiliert.

Hallo Luckie, ich glaube das könnte das richtige für mich sein. Allerdings, bin ich immer noch mit den Einschränkungen der Funktionen nicht so richtig zufrieden.
Ich will das auch nochmal kurz erklären. Wir sind normal Errichter von Einbruchmeldeanlagen. Meine Software habe ich geschrieben um Ereignisse von diesen Zentralen zu dokumentieren und zu speichern. Diese Daten werden in einer Datenbank gespeichert und können z.B. per E-Mail versendet, als HTML-Dokument exportiert oder gedruckt werden.
Die Software, werde ich maximal an andere Errichter verkaufen und um dort ein unkontrolliertes kopieren zu verhindern, möchte ich zum Vorführen halt eine DEMO-Version aushändigen.
Die später ausgelieferte Software, besteht zusätzlich aus einer Konfigurationsdatenbank (Firebird), in der auch die Objektdaten gespeichert sind.

Gruß Jens

Frankfurtoder 13. Jan 2010 10:45

Re: Wie erstellt man eine DEMO-Version
 
Wie wäre es denn, wenn du bei jedem Neustart (oder nach einer bestimmten Zeit) die Datenbank leerst?

Jens Hartmann 13. Jan 2010 11:09

Re: Wie erstellt man eine DEMO-Version
 
Zitat:

Zitat von frankfurtoder
Wie wäre es denn, wenn du bei jedem Neustart (oder nach einer bestimmten Zeit) die Datenbank leerst?

Auch keine schlechte Idee. Könnte ich ja mit Hilfe des Compilerschalters realisieren. die Idee finde ich sogar super. Der User kann das Programm in vollem Umfang nutzen, aber aht keinerlei Datenhaltung.

Gruß Jens

hoika 13. Jan 2010 12:20

Re: Wie erstellt man eine DEMO-Version
 
Hallo,

Zitat:

und um dort ein unkontrolliertes kopieren zu verhindern,
Hat der Einrichter einmal eine Vollversion,
wie verhinderst du das Kopieren ?

Zitat:

möchte ich zum Vorführen halt eine DEMO-Version aushändigen
Wer stellt die Version vor ?
Eine vertrauenswürdige Person ?

Dann kompilier ein Ende-Datum ein,
also z.B. eine 60-Tage-Version.

Dadurch, dass deine App. ja zeitbezogene Daten in die DB schreibt,
bringt es für den Anwender z.B. nichts,
das Datum zurückzustellen.

Alles andere wären Kopieraschutzmaßnahmen,
das geht dann in Richtung WIBU-Key, Aladdin.
Die haben übrigens auch Software-Lösungen im Gepäck.


Heiko

Jens Hartmann 13. Jan 2010 12:31

Re: Wie erstellt man eine DEMO-Version
 
Zitat:

Zitat von hoika
Hat der Einrichter einmal eine Vollversion,
wie verhinderst du das Kopieren ?

Da gebe ich Dir recht. Allerdings denke ich das ich dieses Vertrauen in die Errichter stecken kann. Nur wenn nichts von DEMO oder sonstigen Sachen da steht, denke ich das es einem Errichter im Kopf einfach fällt die Software zu nutzen.
Und die Vollversion, ist ja in der Datenbank mit den Kundenspezifischen Daten gefüllt. Soll heißen ich habe ein Datenblatt, das der Kunde vor der Lieferung ausfüllen muss und ich trage diese Daten dann in die Datenbank ein. Die Datenbank ist ja auch nochmal Passwortgeschütz. Gut ich weiß kann man knacken. Aber da sehe ich das Risiko nicht so groß an, das sich jemand diese Mühe machen würde. Er will ja auch einen gewissen Support nutzen und somit denke ich das es kein Problem gibt. Ich würde halt nur gerne zusätzlich irgend eine einfach Kennzeichnung, ein Merkmal setzen, welches beim Endkunden zeigen würde das es eine DEMO-Version ist.

Gruß Jens

hoika 13. Jan 2010 12:54

Re: Wie erstellt man eine DEMO-Version
 
Hallo,

gut ! ;)

Zitat:

Ich würde halt nur gerne zusätzlich irgend eine einfach Kennzeichnung, ein Merkmal setzen, welches beim Endkunden zeigen würde das es eine DEMO-Version ist.
Warum packst du das nicht in die Datenbank selber rein ?

Tabellenname: DEMO_CHECK
Feldname: bIsDemo Char(1) = '1'

;)


Heiko

v2afrank 13. Jan 2010 13:05

Re: Wie erstellt man eine DEMO-Version
 
Ich würde in der Demoversion einfach die Anzahl der Alarmanlagen beschränken, so dass dann z.B. nur 5 Alarmanalagen verwaltet werden können. Über den Compilerschalter könntest Du dann aus deiner Select from Abfrage eine Select Top5 Abfrage machen. In die Titelzeile setzt Du dann noch Demoversion rein, und fertig ist es. Vorteil, der Benutzer kann alle Funktionen ausprobieren, wenn er aber mehrere Anlagen überwachen will muss er die Vollversion nehmen. Die Zahl 5 kannst Du ja variieren. Das habe ich bei einem aktuellen Produkt schon erfolgreich eingesetzt

TBx 13. Jan 2010 15:58

Re: Wie erstellt man eine DEMO-Version
 
Und wie schon genannt wurde in Ausgaben die Angabe Demo einbauen (ins PDF, HTML, Email).

mschaefer 13. Jan 2010 17:15

Re: Wie erstellt man eine DEMO-Version
 
Moin, moin

Zitat:

Zitat von v2afrank
Ich würde in der Demoversion einfach die Anzahl der Alarmanlagen beschränken

Das halte ich für eine gute Idee, denn Zeitschranken können durch Virtuelle-Maschinen gut umgangen werden. Macht viel Arbeit und wenn der Nutzer tatsächlich keine Zeit hat, läuft die Frist und getestet wird nicht.

Grüße // Martin

Jens Hartmann 13. Jan 2010 18:12

Re: Wie erstellt man eine DEMO-Version
 
Danke erstmal für die vielen Anregungen.

Ich bin mir nur noch nicht ganz sicher nach den vielen aussagen, wie ich es wirklich machen sollte. Die Variante mit der Datenbank hört sich auch nicht schlecht an, allerdings überlege ich, ob dann die Variante mit dem Compilerschalter und zusätzlich die Kundendaten in der Datenbank nicht etwas sicherer wären.

Allerdings bin ich von der Zeitlichen Variante glaube ich auch abgekommen. Ich denke sowas wie die Hinweis DEMO etc. sind schon gar nicht schlecht.

Und wenn ich eine Verknüpfung mit den beiden Varianten realisieren würde, denke ich reicht mir das auch für die Sicherheit.

Ich werde mir das alles mal genau überlegen und dann versuchen umzusetzten.

Danke aber schonmal für die vielen Anregungen.

Gruß Jens

Hansa 13. Jan 2010 19:18

Re: Wie erstellt man eine DEMO-Version
 
Funktionen einschränken ist immer am Besten, weil sicher. Wie bereits gesagt : was nicht da ist, das kann man eben nicht knacken. ALarmanlagen sehen aber jetzt schon nach Marktnische aus. Wer hat Interesse daran zig Stunden aufzuwenden, da was zu knacken, um trotzdem eine nicht lizenzierte Version zu haben, die im Endeffekt nur halb funktioniert ? Oder lasse das Speichern weg oder den Druck. Wurde auch bereits gesagt : schreibe DEMO auf jeden Ausdruck. Am besten mitsamt Deinem kompletten Namen. Das schreckt schon ab. Jeder der das sieht wird sich fragen : "Wer ist Jens Hartmann ?" :mrgreen:

Corpsman 13. Jan 2010 20:29

Re: Wie erstellt man eine DEMO-Version
 
Du kannst z.b. auch meine TSerial Komponente nehmen. Und mit "Schlüsseln" arbeiten. Dann gibst du Shareware und Vollversionsschlüssel raus.

Das Tolle an Tserial ist, das es dir den Schlüssel in einen Wert umrechnet, und diesen Wert dann weiter nutzen kann, und zusätzlich kannst du den Wert im Schlüssel Kodieren, so hast du Sicherheit gegen Schlüssel knacken.

Anhand des errechneten Schlüssels kannst du dann Programmteile freischalten oder nicht.


Alle Zeitangaben in WEZ +1. Es ist jetzt 07:39 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz