valega.com/es
AVLock SIMPLE Ayuda en linea
Introducción
Que es AVLock SIMPLE?
Como adquirir AVLock SIMPLE?
Usando AVLock SIMPLE
Como instalar AVLock SIMPLE?
Claves de Registración (Keys)
Configuración
Usuarios e Instancias
Esquemas de protección
Ejemplos
Ejemplo 1
Ejemplo 2
Ejemplo 3
Ejemplo 4
Ejemplo 5
Ejemplo 6
Ejemplo 7
Ejemplo 8
Propiedades
Métodos
El Online License Manager (OLM)
Como's
La utilidad RegMonitor
La Utilidad KeyGen
La Utilidad CodeCheck
La Utilidad KeyCheck
Información adicional
Historia de versiones
Acuerdo de licencia

Ejemplo 8

Top  Previous  Next

EJEMPLO 8 (Demo1)

 

Items

Lista de funciones usadas en este ejemplo

En este ejemplo aprenderá a

Esquemas de protección

Diagrama de flujo

Obtener el estado de registración

Valores por defecto de las propiedades

Breve práctica con el ejemplo 8

 

 

Lista de funciones usadas en este ejemplo:

Este ejemplo es un compendium de todas las funcionalidades del componente.  Es una adaptación del Demo1 de la version anterior 3.2. Vea el siguiente cuadro con la lista de métodos utilizados en el ejemplo:

 

Features

Description

Basic OLM


 OnlineGetKeyB()

Start the trial period or restore it

 OnlineCheckDate()

Check Online the local system date

Advanced OLM


 OnlineStartTrial()

Start the trial period or restore it

 OnlineExtendTrial()

Extend the trial period

 OnlineRegisterKey()

Register a given Registration Key

 OnlineRenew()

Only if (Paid=Y). Generates and applies a new registration key according with the online OLM data

 OnLineSynch()

Synchronize the local registration data from the OLM

 OnLineStartSecondary()

Secondary Registration: Generates a secondary record into the OLM and link it to a existing primary record

 OnLineMovePrimary1()

Move Primary Step1: Must be executed from the old computer. Deactivates the primary record and all linked secondaries

 OnLineMovePrimary2()

Move Primary Step2: Must be executed from the new computer. Reactivates the primary record and all linked secondaries

 OnLineRestorePrimary()

Undo the action performed by the Step1. Only possible before to apply the Step2

 OnLineMoveSecondary1()

Move Secondary Step1: Must be executed from the old computer. Deactivates the secondary record

 OnLineMoveSecondary2()

Move Secondary Step2: Must be executed from the new computer. Reactivates the secondary record

 OnLineRestoreSecondary()

Undo the action performed by the Step1. Only possible before to apply the Step2

 OnLineRemoveReg()

Remove the local registration data and the associated records from the OLM

 OnlineFullSynch()

Used to automate all basic steps namely; Start trial, Extend trial, Renew licence and Synchronize

Other


 GetModule()

Read the local registration data for the given module

 RegisterKey()

Register Key Offline (local registration only)

 MakeTrial()

Start locally the trial period based in the current system date. Not recommended

 

 

 

En este ejemplo aprenderá a:

1. Guardar los datos del usuario (Nombre, Compañía y Email), localmente en su computador y en el OLM en su servidor web.

2. Manejar licencias primarias y secundarias.

3. Mover licencias de un computador a otro.

 

Esquemas de protección

Este ejemplo implementa los esquemas D y F

 

 

             Esquema D

layout03

                  Esquema F

layout07

 

 

 

Con el ejemplo Demo1 mostramos la mayoría de las funcionalidades que brinda AVLock SIMPLE para que Ud. pueda implementar todos los pasos necesarios durante todo el ciclo de vida de su aplicación. Aquí mostramos todas las posibilidades, pero cuando Ud. utilice solo las que considere convenientes. Con este ejemplo pretendemos que Ud. comprenda como funciona el componente y los diferentes métodos y medidas de seguridad que puede aplicar para proteger su aplicación.

 

 

Y los implementa como se muestra en el siguiente diagrama de flujo:

 

Diagrama de flujo

 

demo08a01

procedure TForm1.FormCreate(Sender: TObject);

begin

DoRegister(False);

end;

 

procedure TForm1.DoRegister(force:boolean);

var F : TRegForm;

begin

F:=TRegForm.Create(nil); //Create the registration Form

try

  if force or (keydata.DaysLeft < 15) then F.ShowModal;

finally

  FreeAndNil(F);

end;

if (keydata.Status = Registered)

then begin

  BtnRestricted.Enabled := (IsValueOn(keydata.Values,1,0));

  BtnSpecial.Enabled := (IsValueOn(keydata.Values,1,1));

end;

lappname.caption:= AVLockS41.AppName;

lusername.caption:= AVLockS41.UserName;

lappversion.caption:= AVLockS41.AppVersion;

lcompany.caption:= AVLockS41.Company;

end;

 

procedure TForm1.FormShow(Sender: TObject);

begin

showabout(true);

end;

 

 

Obtener el estado de registración

 

El método GetRegStatus de la unidad Regist permite obtener el estado actual de registración del componente. Abajo puede ver su código fuente. Lo primero que se hace es asignar las propiedades del componente, este tiene valores por omisión preestablecidos (puede verlos en una tabla abajo. Solo sería necesario asignar los valores que no coinciden con los preestablecidos, en nuestro caso solo cambiamos el valor del AppID por lo que podríamos haber asignado solo esa propiedad, igualmente, para que el ejemplo sea más completo también asignamos el resto de las propiedades.

 

Allí utilizamos el método GetKeyData de AVLock para leer los datos de registración locales y asignarlos al registro 'keydata' de tipo TKeyData  definido en las sección "public" de la unidad.

Después se asigna el cuadro de edición EdIcode con el Installcode obtenido de la máquina y seguidamente en una estructura case se prepara el mensaje del estado de registración a mostrarse en la parte superior del formulario de registración y se lo asigna al caption del label lstatus.

 

Este método GetRegStatus es llamado con el evento OnCreate y al final de cada sección de código que haga cambios en el estado de registración, como ser en BtnRegClick(), BtnRemoveClick(), BtnTrialClick() y BtnTrialOlmClick().

 

 

procedure TRegForm.GetRegStatus;

var s, regdata:string;

  recordexists:boolean;

begin

//Set properties

AVLock:= Form1.AVLockS41;

with AVLock do begin

  EncryptionKey := 'abc123';

  AppID := 12341;  //default: 12345

  RemovableDisk := False;

  AppName := 'MyApp';

  AppVersion := '1.0.0';

  WebHost := 'www.av-soft.com';

  InstancesCtrl := True;

  RegPath := Other;

  RegFolder := '';

  OlmPath := '/olm4';   //default: '/olm3'

  OlmBasicScript := 'basicolm.php';

  OlmAdvScript := 'advancedolm.php';

  V32Compat := False;

end;

AVLock.GetKeyData(0,keydata);

EdIcode.Text := AVLock.InstallCode;

EdName.Text := AVLock.UserName;

EdCompany.Text := AVLock.Company;

EdEmail.Text := AVLock.Email;

s:='';

case keydata.Status of

  Unregistered: s:='Not registered';

  Moved       : s:='Moved to another computer';

  Expired     : s:='Expired';

  Registered  : begin

    s:='Registered ';

    if keydata.Primary then s:=s+'as primary '

    else s:=s+'as secondary ';

    case keydata.KeyType of

      Trial     : s:=s+inttostr(keydata.Days)+' days trial - '+inttostr(keydata.DaysLeft)+' days left.';

      Temporal  : s:=s+inttostr(keydata.Days)+' days license - '+inttostr(keydata.DaysLeft)+' days left.';

      Permanent : s:=s+'(Permanent no time limit)';

    end;

  end;

end;

lstatus.caption:=s;

end;

 

 

 

 

KeyData es un registro de tipo TKeyData declarado en el componente (unit AVLockS4.pas) como sigue:

 

TKeyData = record

  Status       : TRegStatus;

  KeyType      : TKeyType;

  Startdate    : TDate;

  EndDate      : TDate;

  Days         : word;

  DaysLeft     : word;

  Users        : byte;

  Instances    : byte;

  Primary      : boolean;

  DateBacked   : boolean;

  TooManyInstances : boolean;

  Values       : string;

  Key          : string;

  //For secondary registrations

  ICodeP       : string;

  InstallCodep : string;

end;

 

 

Valores por defecto de las propiedades

 

El componente inicializa sus propiedades con los siguientes valores:

 

Propiedades

Valores por omision

Detalle

EncryptionKey

'abc123'

Clave de encriptación usada para las claves y demás datos de registración.

EncryptionKey2

'xyz321'

Clave de encriptación usada para encriptar los datos que se envían y reciben del sitio web.

AppID

12345

Numero identificador de la aplicación.

RemovableDisk

False

Hacer True para aplicaciones portables.

AppName

'MyApp'

Nombre de la aplicación.

AppVersion

'1.0.0'

Versión de la aplicación.

WebHost

'www.av-soft.com'

url del sitio web donde se instaló el OLM.

InstancesCtrl

False

Si es True se controla el numero de instancias ejecutadas simultaneamente.

RegPath

CommonDocuments

Ubicación dentro del disco local donde se guardan los datos de registración.

RegFolder

'avlocks4'

Nombre de la carpeta donde se guardarán los datos de registración.

OlmPath

'/olm4'

Ubicación dentro del hosting donde se instaló el OLM.

OlmBasicScript

'basicolm.php'

Nombre del script administrador de claves del OLM básico.

OlmAdvScript

'advancedolm.php'

Nombre del script administrador de claves del OLM avanzado.

V32Compat

False

Compatibilidad con versiones anteriores 3.x. True para  actualizar una aplicación existente sin que sus usuarios registrados tengan que registrarse de nuevo. Se mantendrá el mismo Installcode que en la versión anterior.




 

Antes de utilizar el componente se deben asignar las propiedades de acuerdo a su propia configuración. Solo necesitará asignar aquellas que sean distintas a las que vienen asignadas por defecto, al menos debería asignar con valores distintos las siguientes propiedades: EncryptionKey, EncryptionKey2 y AppID, y si tiene instalado el OLM en su propio servidor también las propiedades WebHost, y OlmPath.

 

Breve práctica con el ejemplo 8

 

Desde el IDE de Delphi Abra el ejemplo 8 (\Examples\8)

 

demo08a02

 

 

Ejecutar la aplicación

Presione el botón runbutton o F9 para iniciar la ejecución del programa.  En unos instantes podrá ver el AboutBox mostrado como splash screen:

 

 

about01

 

 

Este cuadro es llamado desde el evento OnShow como se ve abajo:

 

 

showabout(True); //show the about box as splash screen

 

Esta función puede ser llamada con dos propósitos distintos 1) Como splash screen cuando la aplicación se inicia (este caso) y para llamarla desde un botón dentro de la aplicación para ver el estado actual de registración. Vea su aspecto en la siguiente imagen:

 

Esta función showabout() se encuentra dentro de la unidad unit1.pas, vea abajo su codigo fuente.

 

procedure TForm1.showabout(assplash:boolean);

var Ab : TFAbout;

begin

Ab:=TFAbout.Create(nil);

try

  Ab.LStatus.Caption := Status;

  Ab.LTooMany.Caption := TooMany;

  if reg0_ok then Ab.lreg.caption:='Registered to: '+lusername.Caption

  else Ab.lreg.caption:='';

  if assplash then Ab.tag:=0

  else Ab.tag:=1;

  Ab.showmodal;

finally

  freeandnil(Ab);

end;

end;

 

Muy simple, este solo crea el form Ab, asigna los valores de los labels LStatus,  LTooMany y LRreg, después

asigna la propiedad tag (0/1) según sea el parámetro assplash pasado, luego muestra el form como modal y finalmente libera la variable Ab.

 

La siguiente imagen muestra su aspecto en tiempo de diseño:

 

demo1about01

 

Esperando algunos segundos o presionando [Continue >>] pasamos a la pantalla principal de la aplicación.

 

demo1_01

 

Aquí podemos ver que dos de los botones no están habilitados;

[Restricted Features] y [Special Features]. Aquí, con una sola clave, utilizando el campo Values controlamos estos dos botones y también para controlar otras cosas. Para más información vea el tópico  Claves de registración.

 

Visualice el  Formulario de datos de registración (Main Form > [Registration] >  [Show Registration Data])  abajo puede verlo:

 

demo1_04

 

Vemos que el estado es "Unregistered" por lo tanto, al no existir datos de registración el resto de los campos está marcado con "N/A".

 

A continuación cierre esta pantalla y haga click sobre el botón [Registration] y podrá ver el siguiente cuadro de dialogo:

 

demo1_05

 

Vemos el estado de registración y más abajo el "Install Code", un código único para cada computador calculado en base al hardware.

 

Si aún no está iniciado el periodo trial, con el botón [Start Trial] podemos iniciarlo. Hágalo y vea cómo se habilitan los botones en el form principal del programa:

 

demo1_06

 

Con el botón [About Box] podemos ver los cambios en el estado de registración:

 

about02

 

Con el botón [Show Registration Data] volvamos a los datos de registración:

 

demo1_02

 

Vemos que ahora existen datos de registración. Al presionar el botón [Start Trial] se realizaron los pasos necesarios para crear y registrar una clave de registración de tipo trial, tanto en el OLM (web page) como localmente.

 

El código fuente que se ejecutó al presionar el botón [Start Trial] es el siguiente:

 

procedure TRegForm.BtnTrialOlmClick(Sender: TObject);

var s:string;

begin

if not testfields(False) then exit;

//assign username and company values to properties before register

writeData;

//Start Trial from the OLM

s:=AVLock.OnlineStartTrial(0,1,1,30,'390');

if (s='00') then begin

  showmessage('Trial started or registration synchronized');

  GetRegStatus;

end else showmessage(Error2Str(s));

end;

 

Para más información vea el apartado Como se inicia el periodo trial.

 

Los botones [Contact us] y [Send email] permiten al usuario comunicarse con Ud. a fin de concretar la operación de compra o cualquier otro tipo de consulta que este desee realizar. El "Install Code" es automáticamente incluido en los mensajes.

 

Una vez que el usuario realizó la compra y le ha enviado su "Install Code", Ud. está en condiciones de calcular la clave de registración que habilite el programa de acuerdo con lo pactado al realizar la compra.

 

Podemos utilizar la utilidad KeyGen o el RegMonitor para calcular la claves de registración que necesitamos. Probemos con la utilidad KeyGen.

Supongamos que su usuario pagó por una registración temporaria (usamos el módulo 0) para un usuario y dos instancias.

 

keygen02

 

 

demo1_06a

 

Entonces abramos la utilidad KeyGen.exe y entremos los valores correspondientes de AppID, Version, Encryption Key, Module, Users and Instances. Ingrese el InstallCode de la máquina del usuario, seleccione Temporary y asigne  Authorized days = 95. Podrá ver la clave generada en el campo Registration Key. En un caso real debería enviar esta clave al usuario para que la registre en su computador pero como se trata de una prueba Ud. mismo la va a registrar en el Demo1, así que copiemos y peguemos la clave en el formulario de registración (abajo)

 

demo1_08

 

Presionamos el botón [Register Online] y obtenemos la confirmación de que se ha registrado la clave.

 

demo1_09

 

Haciendo click nuevamente sobre el botón [About Box] vemos el cambio realizado en la registración:

 

about03

 

Con el botón [Show Registration Data] vea los nuevos datos de registración:

 

demo1_03

 

 

El codigo fuente del ejemplo 8 (Demo1)

 

Ud tiene el código fuente de este ejemplo Demo1. Está bien documentado y lo que hace cada función/Procedimiento es bastante obvio, sin embargo si hay algo que no entiende o necesita ser explicado en mayor detalle por favor queremos que nos lo haga saber.