AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Delphi Eine Demoversion erstellen - Welche von vielen Möglichkeiten?
Thema durchsuchen
Ansicht
Themen-Optionen

Eine Demoversion erstellen - Welche von vielen Möglichkeiten?

Ein Thema von Athris · begonnen am 13. Dez 2017 · letzter Beitrag vom 13. Dez 2017
Antwort Antwort
Athris

Registriert seit: 18. Nov 2014
28 Beiträge
 
Delphi XE2 Professional
 
#1

Eine Demoversion erstellen - Welche von vielen Möglichkeiten?

  Alt 13. Dez 2017, 08:56
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
  Mit Zitat antworten Zitat
Der schöne Günther

Registriert seit: 6. Mär 2013
6.110 Beiträge
 
Delphi 10 Seattle Enterprise
 
#2

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

  Alt 13. Dez 2017, 09:01
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.
  Mit Zitat antworten Zitat
Aviator

Registriert seit: 3. Jun 2010
1.610 Beiträge
 
Delphi 10.3 Rio
 
#3

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

  Alt 13. Dez 2017, 09:59
Von deinen vorgeschlagenen Lösung wäre ich für Lösung 2. Allerdings musst du dann natürlich mit deinen {$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.
  Mit Zitat antworten Zitat
Benutzerbild von joachimd
joachimd

Registriert seit: 17. Feb 2005
Ort: Weitingen
672 Beiträge
 
Delphi 10.4 Sydney
 
#4

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

  Alt 13. Dez 2017, 10:36
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.
Joachim Dürr
Joachim Dürr Softwareengineering
http://www.jd-engineering.de
  Mit Zitat antworten Zitat
Athris

Registriert seit: 18. Nov 2014
28 Beiträge
 
Delphi XE2 Professional
 
#5

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

  Alt 13. Dez 2017, 15:57
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.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.131 Beiträge
 
Delphi 12 Athens
 
#6

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

  Alt 13. Dez 2017, 16:17
Also dass der Quellcode zwischen einem IFDEF bei nicht erfüllter Bedingung nicht mitkompiliert wird?
Genau dafür ist $IF $IFDEF $IFNDEF da.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:47 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