Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Delphi Eine Demoversion erstellen - Welche von vielen Möglichkeiten? (https://www.delphipraxis.net/194616-eine-demoversion-erstellen-welche-von-vielen-moeglichkeiten.html)

Athris 13. Dez 2017 08:56

Eine Demoversion erstellen - Welche von vielen Möglichkeiten?
 
Hallo!

Da ich immer noch ein Freund davon bin von seiner Software eine Demoversion bereitzustellen, habe ich mir nun schon länger Gedanken gemacht wie man dies am besten Umsetzt. Hierbei sind mir bisher drei Möglichkeiten eingefallen, zu denen ich gerne eure Meinung / Erfahrung hören würde. Gerne nehme ich auch weitere Möglichkeiten an.

Vorab eine kleine Information zur Aktivierung in der Vollversion:
Grundsätzlich prüft das Programm bei jedem Start ob es eine gültige Aktivierung gibt. Sollte keine Internetverbindung bestehen so kann das Programm maximal 30 Tage ohne Internetverbindung ausgeführt werden. Danach muss zwingend eine Aktivierungsüberprüfung statt finden.



1. Möglichkeit: Einfacher Boolean Wert
Bei der Aktivierung kann gewählt werden "Als Demoversion starten". Intern wird eine Boolean Variable auf Demoversion gesetzt und an allen relevanten Punkten wird mittels
Code:
if (flgDemo) then begin
geprüft ob das Programm im Demo oder Vollmodus läuft.

Vorteile:
  • Einfach umzusetzen
  • Umschalten folgt an einer zentralen Stelle
  • Alles läuft in einem Projekt
  • Nur eine Exe Datei wird benötigt und kann ggf. direkt in eine Vollversion umgewandelt werden

Nachteile:
  • Das Cracken der Demoversion ist sehr einfach (eine Variable muss umgebogen werden)
  • Die Demoversion ist genau so groß (Dateigröße) wie die Vollversion

2. Möglichkeit: Compiler Schalter und Projektgruppe
Es wird eine Projektdatei "Program_Full" und eine "Program_Demo" angelegt und als Projektgruppe gespeichert. Beide Projekte greifen auf die selben Units zu. In den Units wird dann anhand eines Compiler Schalters (welche bei "Program_Demo" gesetzt und bei "Program_Full" nicht gesetzt ist) gesteuert welche Punkte zur Verfügung stehen.

Vorteile:
  • Umschalten einfach, da beide Projekte in einem Zug kompiliert werden können
  • Cracken der Demoversion schwieriger, da Vollversionsprogrammteile nicht mit kompiliert werden (Ist das so?)
  • Demo Exe sollte kleiner sein, als die Vollversion Exe

Nachteile:
  • Zwei unterschiedliche Exe Dateien. Ein Upgrade auf die Vollversion ist nur via Exe Tausch möglich

3. Möglichkeit: Zwei komplett getrennte Projekte
Es werden zwei komplett eigene Projekte erzeugt welche in eine Projektgruppe zusammengefasst werden. Jedes Projekt hat seine eigenen Units.

Vorteile:
  • Umschalten einfach, da beide Projekte in einem Zug kompiliert werden können
  • Cracken der Demoversion unmöglich, da der gesamte "Vollversionsquellcode" gar nicht vorhanden ist
  • Saubere Trennung innerhalb des Quellcodes (keine IFs)
  • Demo Exe sollte kleiner sein, als die Vollversion Exe

Nachteile:
  • Doppelter Pflegeaufwand von Bugfixes oder neuen Features (beides muss immer in beiden Projekten eingepflegt werden)
  • Zwei unterschiedliche Exe Dateien. Ein Upgrade auf die Vollversion ist nur via Exe Tausch möglich

Der schöne Günther 13. Dez 2017 09:01

AW: Eine Demoversion erstellen - Welche von vielen Möglichkeiten?
 
Bei Fall 2 sind keine zwei einzelne Projekte notwendig, die Compiler-Schalter kannst du auch über Build-Konfigurationen in einem Projekt (wie Release/Debug) einstellen.

Aviator 13. Dez 2017 09:59

AW: Eine Demoversion erstellen - Welche von vielen Möglichkeiten?
 
Von deinen vorgeschlagenen Lösung wäre ich für Lösung 2. Allerdings musst du dann natürlich mit deinen
Delphi-Quellcode:
{$IFDEF}
s höllisch aufpassen, dass du da nicht irgendwo ein wichtiges Feature aussparst und somit die ganze Anwendung (zumindest in der Demo) nicht richtig funktioniert.

In der Exe sollten auch nur die durch den Compilerschalter erfassten Codeteile enthalten sein. Aber das wissen andere bestimmt besser.

joachimd 13. Dez 2017 10:36

AW: Eine Demoversion erstellen - Welche von vielen Möglichkeiten?
 
Habe mal als Machbarkeitsstudie das ganze in die DB verlagert ... die wichtigste Tabelle mit einem Trigger versehen, welcher maximal X Einträge in der DB für diese Tabelle zugelassen hat. Da die DB mit Benutzerverwaltung durch die normalen Benutzer nicht zugänglich war, funktionierte das hervorragend.
Man kann sich auch überlegen, dass man ein Ablaufdatum in einer Konfig-Tabelle hinterlegt und in den Triggern gegen dieses Datum testet (Exception innerhalb der DB bei überschreiten). Dann kann der Kd die Software zwar neu aufsetzen, hat aber alle Einträge von vorher weg, also nicht mehr sinnvoll benutzbar.

Athris 13. Dez 2017 15:57

AW: Eine Demoversion erstellen - Welche von vielen Möglichkeiten?
 
Weiß den jemand ob das mit den Compiler Schaltern so ist? Also dass der Quellcode zwischen einem IFDEF bei nicht erfüllter Bedingung nicht mitkompiliert wird?

Weil ansonsten kann man auch direkt die 1. Option nehmen.

himitsu 13. Dez 2017 16:17

AW: Eine Demoversion erstellen - Welche von vielen Möglichkeiten?
 
Zitat:

Zitat von Athris (Beitrag 1388765)
Also dass der Quellcode zwischen einem IFDEF bei nicht erfüllter Bedingung nicht mitkompiliert wird?

Genau dafür ist $IF $IFDEF $IFNDEF da.


Alle Zeitangaben in WEZ +1. Es ist jetzt 04:05 Uhr.

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