|
Nuevo en v5.1.3 e
Nuevo estilo de ejemplos
Un nuevo estilo de ejemplos se implementó en esta versión con el fin de hacer más fácil su configuración al utilizarlo conjuntamente con una nueva utilidad llamada configurator que permite generar código de configuración del componente para después insertarlo en sus aplicaciones.
El configurator, un nuevo programa utilitario
Este es un asistente para generar código de configuración del componente para después insertarlo en la aplicación.
Nuevo panel de control cp5.php
Se agregó en esta versión un nuevo panel de control que muestra los datos del OLM de una manera más conveniente que el anterior. Puede acceder al mismo desde aquí: http://av-soft.com/olm513/cp5.php (la contraseña es mypass).
Correccion de errores
Se corrigieron alguunos errores menores.
Nuevo en v5.1 e
o eSe agregaron los siguientes métodos:
OnlineRenew2()
Se agregó este método como una variante de OnlineRenew(). Con este nuevo método al activar un nuevo periodo temporal, los dias restantes del periodo anterior se agregan al nuevo periodo. Por ejemplo si en el registro del OLM (Days = 180) y el periodo actual tiene 15 días restantes, el nuevo periodo se inicia a partir de la fecha por un periodo de 195 días. Para mayor información vea la última parte de la sección (Usando AVLock SIMPLE > Ejemplos > Ejemplo PayPal IPN > Nuestro ejemplo).
OnlineSendEmail()
Este método permite enviar emails al usuario o a Ud. mismo a fin de ser informado de las actividades del usuario y las operaciones realizadas en el OLM. Vea en el ejemplo 5 el código asociado al botón [Send Email].
Se agregaron las siguientes funciones utilitarias:
file2arrstr()
Lee un archivo texto y lo vuelca a un array de tipo TArrStr.
avFloat2Str()
Convierte un numero de tipo flotante a string con formato de dos decimales. Difiere de formatfloat en que siempre se utiliza el punto como separador decimal independientemente de la configuración de Windows.
avStr2Float()
Convierte a valor flotante un string con formato numérico pasado como parámetro, este puede ser un numero entero a decimal con punto o coma como separador.
avIsNum()
Como parámetro se pasa un string para ser analizado y retorna True si este contiene solo caracteres numéricos o punto decimal.
Funciones que cambiaron de nombre:
Se cambiaron los nombres de las siguientes funciones utilitarias a fin de evitar conflictos con ciertas librerías populares como TurboPower SysTools y otras que utilizan esos nombres.
Nombre anterior Nuevo nombre
isdigit() avisdigit()
str2word() avstr2word()
paddl() avpaddl()
paddr() avpaddr()
leftstr() avleftstr()
rightstr() avrightstr()
Cambios en el OLM
El vínculo para acceder al panel de control de la vesrsión 5.1 es http://av-soft.com/olm51/s5cp.php
Se agregaron dos scripts al OLM avanzado; ipn.php y prices.php. Para mas información vea el ejemplo (Usando AVLock SIMPLE > Ejemplos > Ejemplo PayPal IPN > Nuestro ejemplo).
Se modificó el script advancedolm.php para soportar los nuevos métodos agregados OnlineRenew2() y OnlineSendEmail().
Cambios en las utilidades:
KeyGen ahora permite guardar la clave en un fichero de texto junto con los datos del usuario. Esto es util cuando se utilizan claves basadas en los datos del usuario.
En el RegMonitor se redistribuyeron los campos permitiendo ver y editar el campo Other como una lista de strings. En el ejemplo PayPal IPN se le da utilidad a esta característica permitiendo ver y editar los datos de las transacciónes.
Ejemplos agregados
Se agregaron dos ejemplos PayPal IPN que muestran como implementar registración instantanea haciendo el pago por PayPal y utilizar cupones de descuento.
Nuevo en v5.0 e
Se rediseñaron las propiedades relativas al Installcode permitiendo definir un número mayor de fuentes. Ahora la propiedad InstallCodeSources define el grupo de fuentes a utilizar entre los siguientes: Machine_Data, User_Data y Removable_Disk, además, dos propiedades nuevas definen los grupos de fuentes MachineSources y UserSources.
Se mejoró el método de obtención de datos del hardware a través del servicio WMI, haciéndolo más eficiente y seguro y permitiendo un número mayor de fuentes.
Se agregó el método OnlineRequestKey() que permite al usuario solicitar una clave de registración enviando un email a la dirección de correo electrónico especificada, de tal manera que solamente podrá registrar la aplicación o iniciar el periodo trial si el email especificado existe y pertenece al usuario, esto permite coleccionar direcciones de email para una futura campaña de marketing. Se incluyen parámetros para los nombres y direcciones de correo del emisor y receptor asi como del asunto y el mensaje. Vea el ejemplo RequestKey.
Se mejoró la documentación y se modificaron y agregaron ejemplos.
Nuevo en v4.1 e
Se agregó la opción ExeDir a la propiedad RegPath a fin de poder configurar más facilmente las diversas opciones de configuración del componente.
Se actualizó la librería synapse a la última versión . La versión anterior provocaba un error en el método GetOnlineDate en Delphi 2009 y 2010. También, el valor por defecto para la propiedad TimeHost fue cambiada de time.windows.com a time-a.nist.gov.
Nuevo en v4.01 e
Se corrigió un error en relación al control de instancias.
Nuevo en v4 e
Muchos cambios fueron hechos en esta liberación:
| · | Se modificaron algunos términos con el fin de eliminar significados ambiguos. Así, la palabra "module" se cambió por el de "keyData" o "Index" dependiendo de su significado. Vea abajo una tabla de los cambios realizados: |
v3.2
|
v4
|
Note
|
TModuleData
|
TKeyData
|
Nombre del tipo de registro para contener los datos de registracion de una clave (key)
|
GetModule()
ReadModule()
|
GetKeyData()
ReadKeyData()
|
Métodos que obtienen los datos locales de registración
|
WriteModule()
|
WriteKeyData()
|
Método que guarda los datos locales de registración
|
module
|
Index
|
Cuando significa el número de orden de la clave (key) dentro de los datos de registración.
|
| · | Se agregaron o modificaron los siguientes métodos: |
Método
|
Descripción
|
HostFound()
|
Retorna True si es posible acceder al host pasado como parámetro. Por ejemplo:
Ok := HostFound('www.av-soft.com');
|
GetOnlineDate()
|
Obtiene a través de Internet la fecha y hora actual.
|
FixSystemDate()
|
Permite modificar la fecha del computador asignandole una fecha dada como parámetro.
|
OnlineCheckDate()
|
Internamente utiliza los dos métodos anteriores para obtener de Internet la fecha correcta y asignarla al computador.
|
Synchronize()
|
Esta función sincroniza los datos de registración entre el OLM y el computador. Se envian al OLM los datos locales de registración y allí se comparan con los existentes y se evalúan para determinar cual de ambos son más relevantes y se hace la sincronización en el sentido que corresponda.
|
| · | Se agregaron o modificaron las siguientes propiedades: |
Propiedad
|
Tipo
|
Descripción
|
TimeHost
|
String
|
Nombre del host (servidor ntp) para obtener la fecha a través de Internet. Por defecto este valor es "time.windows.com".
|
V32Compat
|
Boolean
|
Asigne True a esta propiedad si quiere que el Installcode generado por la versión 4 sea igual al generado por la versión 3.2.
|
AppID
AppName
AppVersion
InstancesCtrl
OlmAdvScript
OlmPath
RegFolder
RegPath
RemovableDisk
WebHost
|
|
Todas estas propiedades en la versión 3.2 eran de tipo publicadas (de tiempo de diseño) fueron convertidas en la versión 4 a propiedades públicas (de tiempo de ejecución). Esto se hizo por motivos de seguridad para evitar que estas propiedades quedaran expuestas como recursos dentro del componente compilado.
|
| · | Se eliminó la propiedad OlmCheckScript que guardaba el nombre del script PHP para la obtención de la hora en línea y se agregó la propiedad TimeHost para guardar el nombre del servidor NTP para la obtención de la fecha y hora mediante las librerías Synapse que se utilizan en esta versión. |
| · | Se agregó la utilidad KeyCheck. |
| · | Se modificó la utilidad RegMonitor. |
| · | Se modificaron algunos scripts del OLM. Se cambió el nombre de los scripts advancedkeymanager.php y basickeymanager.php por advancedolm.php y basicolm.php respectivamente. |
| · | Se modificó el panel de control del OLM. |
Nuevo en v3.2.1 para el OLM avanzado
Ahora la utilidad Panel de Control está integrada por dos archivos lo que permitió agregar una contraseña de acceso al mismo.
Ahora invocará el panel de control desde 'http://yourdomain/olm3/cpanel.php'.
entonces cpanel.php solicitará el ingreso de la contraseña y lo redireccionará a s3cpanel.php
pasando la contraseña ingresada.
Vea las líneas que se agregaron a s3cpanel.php:
18 if (!isset($_POST['pass'])) die ('Wrong Password');
19 $pass = $_REQUEST['pass'];
20 if ($pass <> 'xxxxx') die ('Wrong Password'); <---- agregada
...
...
94 <form method="POST" action="s3cpanel.php">
95 <input type="hidden" name="pass" value='xxxxx'> <---- agregada
96 <input type="hidden" name="mode" value="extend">
En estos lugares debe cambiar 'xxxxx' por el valor que quiera establecer como contraseña.
Nuevo en la versión 3.2 e
En esta liberación estamos introduciendo la nueva edición shareware con la posibilidad de registrarla al bajo precio de $19.95. También agregamos soporte para la nueva versión Delphi 2009 recientemente liberada.
Algunas nuevas funcionalidades fueron agregadas para facilitar algunas tareas comunes. El script checkdate.php ha sido agregado al OLM básico y una nueva función en el OLM avanzado utilizada mediante el método OnlineFullSynch() a fin de implementar sincronización automática desde el OLM a saber: para iniciar el periodo trial y activar una nueva licencia después de haberse realizado un pago.
Nuevas propiedades:
| · | OlmPath: (Default '/olm3'). Permite especificar el path dentro de su servidor web donde está instalado el OLM. |
| · | OlmBasicScript: (Default 'basickeymanager.php'). Permite especificar el nombre del script del OLM básico utilizado con el método OnlineGetKeyB(). |
| · | OlmAdvScript: (Default 'advancedkeymanager.php'). Permite especificar el nombre del script del OLM avanzado asociado con los siguientes métodos: OnlineRegisterKey(), OnlineStartTrial(), OnlineExtendTrial(), OnlineGetKeyA(), OnlineMovePrimary1(), OnlineMovePrimary2(), OnlineMoveSecondary1(), OnlineMoveSecondary2(), OnlineRestorePrimary(), OnlineRestoreSecondary(), OnlineSynch(), OnlineRenew(), OnlineStartSecondary(), OnlineRemoveReg(), OnlineGetRegData(), OnlineSaveUserData(). |
| · | OlmCheckScript: (Default 'checkdate.php'). Permite especificar el nombre del script que maneja la funcionalidad asociada el método OnlineCheckDate(). |
Nuevos métodos:
| · | function Values2Num(Values:string; nibble:byte):integer; |
| · | function IsValueOn(Values:string; nibble, digit:byte):boolean; |
| · | function Status2Str(Module:TModuleData):string; |
| · | function OlmError2Str(err:string):string; |
| · | function OnlineFullSynch(nmod:word):string; |
Otros cambios y adiciones:
Se agregó el campo DaysLeft al registro TModuleData.
El código fuente completo del componente ha sido revisado y modificado a fin de que pueda ser compilado en Delphi 2009, ahora con el nuevo tipo char de 16 bit y el nuevo tipo string unicode asociado.
Una nueva utilidad RegisterIt.exe se ha incluido en este paquete a fin de permitirle registrar la versión shareware.
Nuevo en la versión 3.1 e
Algunas nuevas funcionalidades han sido agregadas en esta nueva versión. Se agregaron las propiedades RegPath y RegFolder para simplificar la asignación de la propiedad RegFilePath. También se agregó soporte a usuarios Guest agregándose las propiedades IsGuest y LastError.
Nuevas propiedades:
| · | RegPath (Default: CommonDocuments): Permite asignar una carpeta especial "Special Folder" de Windows seleccionando un valor de una lista de valores estandar (CommonDocuments, ProgramData, RoamingAppData, LocalAppData, Other), de esta manera la propiedad RegFilePath es asignada automáticamente con la carpeta especial apropiada para el valor elegido y la versión corriente de Windows: |
CommonDocuments:
XP: C:\Documents and Settings\All Users\Documents
Vista: C:\Users\Public\Documents
ProgramData:
XP: C:\Documents and Settings\All Users\Application Data
Vista: C:\ProgramData
RoamingAppData:
XP: C:\Documents and Settings\<username>\Application Data
Vista: C:\Users\<username>\AppData\Roaming
LocalAppData
XP: C:\Documents and Settings\<username>\Local Settings\Application Data
Vista: C:\Users\<username>\AppData\Local
Other: Si Ud. elige esta opción también deberá proveer el valor que desea asignar a la propiedad RegFilePath al arrancar su aplicación y antes de utilizar alguna función del componente, por ejemplo dentro del fichero .dpr como se puede ver a continuación:
function GetSpecialFolder(const CSIDL : integer) : string;
var RecPath : PAnsiChar;
begin
RecPath := StrAlloc(MAX_PATH);
try
FillChar(RecPath^,MAX_PATH,0);
if SHGetSpecialFolderPath(0,RecPath,CSIDL,false) then begin
result := RecPath;
end else result := '';
finally
StrDispose(RecPath);
end;
end;
begin
Application.Initialize;
Application.CreateForm(TMainForm, MainForm);
with MainForm do
Begin
avlocks31.EncryptionKey := 'abc123';
avlocks31.EncryptionKey2 := 'xyz321';
avlocks31.AppID := 12343;
avlocks31.RegFilePath := GetSpecialFolder(12); //CSIDL_MYDOCUMENTS = 12 = 0x000c
end;
. . .
end;
| · | RegFolder: (default: 'avlocks3') Aquí debe entrar el nombre para la carpeta donde se guardarán los archivos de datos de registración (*.avr y *.avc). De esta manera la propiedad RegFilePath2 (el path finalmente aplicado) será asignado internamente de la siguiente manera: |
RegFilePath2 := RegFilePath + '\' + RegFolder;
| · | IsGuest: Propiedad booleana que toma el valor True cuando el usuario es un visitante "Guest". Utilizada internamente para omitir ciertas funcionalidades para este tipo de usuarios. Cuando el componente detecta un usuario visitante este opera de diferente manera que al tratarse de usuarios normales, el InstallCode no se calcula sino que es recuperado de los datos de registración guardados con anterioridad y se deniegan las operaciones de escritura y accesos al OLM. |
Nuevo en la versión 3.0 e
Una gran cantidad de nuevas características fueron agregadas en esta liberación, mayormente con la finalidad de mejorar la seguridad y ampliar las capacidades de licenciamiento en línea.
Nuevos items:
| · | Se cambiaron las propiedades InstallCode e InstallCodeSources. Se quitaron los items BIOS_SN y MAC_Address. Se redujo la cantidad de fuentes para poder asignarle más espacio a cada una dentro del InstallCode. Anteriormente cada fuente ocupaba solo 3 nibbles permitiendo solo 4095 valores distintos para cada fuente haciendo muy probable que si un usuario utiliza una sola fuente el InstallCode llegue a ser idéntico para dos usuarios distintos y por lo tanto compartiendo el mismo registro dentro del OLM. Ahora cada fuente ocupa 4 nibbles permitiendo 65535 valores distintos haciendo asi menos probable que este problema se presente. Igualmente si Ud. quiere hacer esto aún más improbable, utilice más de una fuente, por ejemplo CPU_ID y HD_SN, como es la opción preestablecida. |
| · | Se cambió el OLM agregando nuevos campos y funcionalidades. Podemos destacar la posibilidad de otorgar licencias que puedan ser compartidas por varios usuarios y controlar el proceso a través de Internet para que no importe el lugar en el mundo donde estos se encuentren. Antes los campos 'users' y 'TooManyUsers' de los datos del módulo se referían al número de instancias permitidas, pero ahora 'users' se refiere a la cantidad de usuarios que se pueden registrar en el OLM con una sola licencia, y el nombre del campo TooManyUsers se cambió a TooManyInstances. |
| · | Se hicieron cambios en la estructura interna de la clave de registración. Se agregó el campo Values de 3 nibbles que le permite controlar, activar/desactivar funcionalidades de su aplicación, pudiendo tener un mayor control de la aplicación con una sola clave. |
Nuevas propiedades:
| · | EncryptionKey2: Clave de encriptación secundaria usada para encriptar los datos que se transmiten y reciben del OLM. |
| · | InternetPort : Es usado como parámetro al llamar la función InternetConnect(). Se lo agregó para que se pueda especificar el valor apropiado, por ejemplo para acceder a un sitio seguro (HTTPS). |
| · | InternetFlag : Es usado como parámetro al llamar la función HttpOpenRequest(). Igual que en el caso anterior, permite configurar su componente para acceder a sitios seguros (HTTPS). |
| · | RegFilePath : Permite especificar la carpeta donde se guardarán los datos de registración. |
| · | Company y Email : Dos propiedades que permiten tener presente más información sobre el usuario. |
| · | InstancesCtrl : Permite activar/desactivar el control de instancias de la aplicación. |
Nuevos métodos:
Se agregaron los siguientes nuevos metodos para acceder al OLM:
function OnlineRegisterKey(phpfile,Key:String):string;
function OnlineStartTrial(phpfile:string; nmod:word):string;
function OnlineExtendTrial(phpfile:string; nmod:word):string;
function OnlineGetKeyB(phpfile,values:string; kind, nmod, days, usrs:word):string;
function OnlineGetKeyA(phpfile,values:string; kind, nmod, days, startdate, usrs, inst:word):string;
function OnlineMovePrimary1(phpfile:string; nmod:word):string;
function OnlineMovePrimary2(phpfile,OldIcode:string; nmod:word):string;
function OnlineMoveSecondary1(phpfile:string; nmod:word):string;
function OnlineMoveSecondary2(phpfile,OldIcode:string; nmod:word):string;
function OnlineRestorePrimary(phpfile:string; nmod:word):string;
function OnlineRestoreSecondary(phpfile:string; nmod:word):string;
function OnlineSynch(phpfile:string; nmod:word):string;
function OnlineRenew(phpfile:string; nmod:word):string;
function OnLineStartSecondary(phpfile,icodep:string; nmod:word):string;
function OnlineRemoveReg(phpfile:string; nmod:word):string;
function OnlineGetRegData(phpfile:string; nmod:word):string;
function OnlineSaveUserData(phpfile,name,company,email:String; nmod:word):string;
function OnlineCheckDate(phpfile:string):boolean;
También se agregaron los siguientes métodos:
function DecodeAppData(appdata:string; var icsources:TInstallCodeSources;
var UsrNam,Comp,Eml,AppNam,AppVer,icsrc:string; var RanCod,OtherCod:word):boolean;
| · | Se cambiaron los nombres de WriteApp() y ReadApp() por WriteAppData() y ReadAppData(). |
| · | Se cambió el nombre de DecodeRegData() por DecodeRegKey(). |
| · | Al nuevo RegMonitor ahora permite acceder al OLM para ver y modificar datos pudiendo utilizarse en lugar del panel de control. |
Nuevo en la versión 2.1 e
Una gran cantidad de nuevas características fueron agregadas en esta liberación, mayormente con la finalidad de agregarle capacidades de licenciamiento en línea.
Nuevos items:
| · | Un nuevo item "Other_Source" se agregó a la propiedad InstallCodeSources para permitirle incluir cualquier otra fuente aparte de las estandar (BIOS_SN, CPU_ID, HD_SN, etc) para ser incluidas en el cálculo del InstallCode. Puede ser un valor que provenga de la máquina como cualquier otro como ser un número proveniente de un registro de datos. |
| · | Nuevo item "Moved" agregado a la estructura TModuleData a fin de informar cuando un módulo haya sido movido a otro computador. |
Nuevas propiedades:
| · | OtherSrc: Agregada a fin de contener el valor recibido en tiempo de ejecución a través del manejador de eventos OnGetOtherSource. |
| · | WebHost: El nombre del host del servidor a fin de acceder al Manejador de Licencias en Línea consistente en un conjunto de scripts php a fin de manejar el ciclo completo de licenciamiento a saber, iniciar el periodo de prueba, extenderlo opcionalmente, comprar la aplicación y activarla y finalmente moverla a otro computador si fuera necesario. Por defecto esta propiedad viene con el valor 'www.valega.com'. |
| · | La propiedad RegMoved se ha quitado ya que ahora el concepto "Moved" no es más aplicable a toda la aplicación sino que cada módulo tiene su propia condición "Moved" y puede ser movida independientemente. |
Nuevo manejador de evento:
| · | El manejador de evento OnGetOtherSource se agregó para permitir asignar un valor a la propiedad OtherSrc en tiempo de ejecución. |
Nuevos métodos:
| · | ReadModule() : Utilizado internamente por GetModule(), SetModuleMoved(), OnlineMoveReg() y OnlineCheckMoved(). |
| · | SetModuleMoved() : Establece el módulo pasado como parámetro como "Movido" en los datos de registración local. |
| · | OnlineRequest() : Envía datos a un script php destino en el servidor (propiedad WebHost) y devuelve un string con la información retornada. |
| · | GetOnlineKey() : Envía datos a un script php destino en el servidor a fin de calcular una clave de registración basado en los datos enviados y devuelve un string con la clave retornada por el script. |
| · | OnlineReg() : Llama al método GetOnlineKey() y guarda en los datos de registración local la clave retornada. |
| · | OnlineMoveReg() : Utilizado para asignar un módulo como "Movido" guardando la información en ambos lugares; en los datos de registración local y en la base de datos MySql del sitio web (WebHost). |
| · | OnlineCheckMoved() : Utilizado para recuperar desde la base de datos MySql sel sitio web el estado "Movido" para un módulo dado. |
Métodos cambiados:
| · | DecodeIcode(), DecodeRegData(), ReadApp() : El parámetro "Moved" se quitó de estos métodos ya que el concepto "movido" ya no es más aplicable a la aplicación completa, ahora cada módulo tiene su propia condición "movido". |
El Online License Manager (OLM):
Un nuevo conjunto de scripts php agregado a esta liberación a fin de manejar el ciclo completo de licenciamiento a saber, iniciar el periodo de prueba, extenderlo opcionalmente, comprar la aplicación, activarla y finalmente moverla a otro computador si fuera necesario (ver Demo5). Por defecto esta propiedad viene con el valor 'www.valega.com'. Incluye un panel de control para acceder a la base de datos remota a fin de ver y editar los datos de registración.
Nuevo en la versión 1.2 Ease to use
| · | Se implementó la creación de triales basados solo en el nombre del usuario para lo que se modificaron las utilidades KeyGen y RegMonitor permitiendo ingresar el nombre de usuario para la generación de claves. También se agregó el ejemplo Demo4 que muestra como implementar esta configuración. |
| · | Se agregó el metodo Restart() y se corrigió un bug en el llamado que se hace al método ReadApp() desde el método Start(). |
Nuevo en la versión 1.1 Ease to use
| · | Se implementó la obtención del periodo trial automáticamente y en forma transparente para el usuario a través de código PHP en una pagina web llamada mediante un nuevo método GetOnlineTrial(). |
| · | También se implementó el método GetOnlineKey() que permite generar en forma transparente en linea cualquier tipo de claves. |
| · | Además se cambió el formato del fichero de datos de registración (*.avr) teniendo ahora una entrada distinta para cada máquina en una red de area local permitiendo asi administrar todas las registraciones en un solo fichero. |
| · | Se agregaron dos nuevas utilidades; KeyGen para la generación de claves y CodeCheck para la verificación y comparación de Códigos de instalación. |
|