|
Items
Propiedades publicadas (de tiempo de diseño)
Propiedades de configuración del componente
Propiedades para datos del usuario
Otras propiedades
PROPIEDADES PUBLICADAS (de tiempo de diseño)
property InstallCodeSources: TInstallCodeSources read FInstallCodeSources write FInstallCodeSources default [HD_SN,CPU_ID];

|
InstallCodeSources: tipo set, definido como TInstallCodeSources = set of (CPU_ID, HD_SN, RandomNumber, User_Name, Other_Source); Permite configurar fuentes (del computador, u otras) se utilizarán para calcular la propiedad InstallCode. Estas fuentes pueden ser:
|
PROPIEDADES PUBLICAS (de tiempo de ejecución)
Las clasificamos en tres grupos:
1) Propiedades de Configuración
2) Propiedades para datos del usuario
3) Otras propiedades
PROPIEDADES DE CONFIGURACIÓN
property AppID : word read FAppID write FAppID;
property AppName : string read FAppName write FAppName;
property AppVersion : string read FAppVersion write FAppVersion;
property EncryptionKey: AnsiString read FEncryptionKey write FEncryptionKey;
property EncryptionKey2: AnsiString read FEncryptionKey2 write FEncryptionKey2;
property OlmPath: string read FOlmPath write FOlmPath; // '/olm'
property OlmAdvScript: string read FOlmAdvScript write FOlmAdvScript; //'advancedkeymanager.php'
property OlmBasicScript: string read FOlmBasicScript write FOlmBasicScript; //'basickeymanager.php'
property RegPath: TRegPath read FRegPath write FRegPath;
property RegFolder: string read FRegFolder write FRegFolder;
property RemovableDisk : boolean read FRemovableDisk write FRemovableDisk;
property V32Compat: boolean read FV32Compat write FV32Compat;
property WebHost: string read FWebHost write FWebHost;
AppID: tipo word. Valor numérico utilizado para identificar la aplicación. El valor por defecto es 12345 pero Ud. debe cambiarlo, ingresando uno distinto para cada aplicación. Si Ud. tiene dos aplicaciones utilizando el mismo AppID, ambas intentarán guardar los datos de registración en el mismo lugar provocando la consiguiente perdida de estos datos. En base a este número se calcula el nombre de los ficheros *avr y *.avc, el primero *.avr para guardar los datos de registración (el DataFile) y el fichero *.avc que maneja el número de instancias permitidas para la aplicación. El AppId junto con el AppName son utilizados como valores clave para acceder a los datos de registración en la base de datos remota a través del panel de control del Online License Manager (OLM). La seguridad está basada principalmente en este número por lo que deberá mantenerlo en secreto como si fuera una contraseña.
AppName: tipo string. Nombre que Ud. le asigna a la aplicación, debe ser distinto para cada aplicación y es utilizado junto con el AppID para acceder a los datos de registración en la base de datos remota del Online License Manager (OLM).
AppVersion: tipo string. Versión de la aplicación.
EncryptionKey: Valor string usado como clave del algoritmo de encriptación con el que se encriptan los datos de registración. Este valor no debe ser publicado y en lo posible mantenido en secreto.
EncryptionKey2: Valor string usado como clave de encriptación para la transferencia de información con el OLM permitiendo así una comunicación segura con el sitio web. Esta misma clave también debe asignarse en el scipt genkeys3lib.php que forma parte del OLM, por omisión esta clave es 'xyz321' pero es conveniente que la cambie poniendo el mismo código en ambos lugares, en esta propiedad del componente y el el script php. Igual que en el caso anterior no divulgue este código.
OlmPath: tipo string (Default '/olm3'). Permite especificar el path dentro de su servidor web donde tiene instalado el OLM.
OlmAdvScript: tipo string (Default 'advancedolm.php'). Permite especificar el nombre de fichero del script dentro del OLM para manejar las funcionalidades avanzadas a través de los siguientes métodos: OnlineRegisterKey(), OnlineStartTrial(), OnlineExtendTrial(), OnlineGetKeyA(), OnlineMovePrimary1(), OnlineMovePrimary2(), OnlineMoveSecondary1(), OnlineMoveSecondary2(), OnlineRestorePrimary(), OnlineRestoreSecondary(), OnlineSynch(), OnlineRenew(), OnLineStartSecondary(), OnlineRemoveReg(), OnlineGetRegData(), OnlineSaveUserData(), Synchronize().
OlmBasicScript: tipo string (Default 'basicolm.php'). Permite especificar el nombre de fichero del script dentro del OLM que maneja la funcionalidad básica asociada con el método OnlineGetKeyB().
RegPath (Default: CommonDocuments): Permite asignar una carpeta especial "Special Folder" de Windows seleccionando un valor de una lista de valores estandar (CommonDocuments, ProgramData, RoamingAppData, ExeDir, LocalAppData, Other), de esta manera la propiedad RegFilePath es asignada automáticamente con la carpeta epecial 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
ExeDir: Si elige esta opción la carpeta asignada será la misma donde se encuentre el ejecutable de su aplicación.
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;
RemovableDisk: tipo Boolean. Debe ser True si la aplicación está diseñada para ser utilizada en un pendrive u otro dispositivo extraible. También si selecciona esta opción y quiere que la aplicación se pueda ejecutar en diferentes computadores active solo la fuente HD_SN en la propiedad InstallCodeSources, de esa manera el InstallCode se calculará en base al Número de Serie del dispositivo donde se encuentre la carpeta de la aplicación.
V32Compat: (default: False) Compatibilidad con la versión anterior. Cuando es True el Installcode generado es el mismo que en la versión anterior 3.2.
WebHost: tipo AnsiString. El nombre de host del servidor a fin de acceder al Online License Manager 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'.
TimeHost: tipo AnsiString. url del servidor de tiempo que permite manejar en linea la fecha y hora actuales. Valor por defecto: 'time-a.nist.gov'
PROPIEDADES PARA DATOS DEL USUARIO
property UserName :string read FUserName write FUserName;
property Company :string read FCompany write FCompany;
property Email :string read FEmail write FEmail;
UserName: tipo string. Retiene el valor del nombre del usuario. Es guardado con los datos de registración junto a otros datos de la aplicación (Company, Email, etc.).
Company: tipo string. Retiene el valor de la empresa (Compañía) del usuario. Es guardado con los datos de registración junto a otros datos de la aplicación.
Email: tipo string. Retiene la dirección de correo electrónico del usuario. Es guardado con los datos de registración junto a otros datos de la aplicación.
OTRAS PROPIEDADES
property DateBacked : boolean read FDateBacked write FDateBacked;
property DateWarning : boolean read FDateWarning write FDateWarning;
property FirstTime: boolean read FFirstTime write FFirstTime;
property InstancesCtrl: boolean read FInstancesCtrl write FInstancesCtrl;
property ICSources :string read FICSources write FICSources;
property ICode: string read FIcode write FICode;
property InstallCode: string read FInstallCode write FInstallCode;
property InternetPort : word read FInternetPort write FInternetPort;
property InternetFlag : dword read FInternetFlag write FInternetFlag;
property IsGuest : boolean read FIsGuest write FIsGuest;
property LastDate: Tdate read FLastDate write FLastDate;
property LastError : word read FLastError write FLastError;
property OtherCode : word read FOtherCode write FOtherCode;
property RegFilePath : string read FRegFilePath write FRegFilePath;
property RandomCode : word read FRandomCode write FRandomCode;
property Started: Boolean read FStarted write FStarted;
DateBacked: tipo Boolean. Toma el valor True si el usuario atrasó la fecha del computador después de haber ejecutado la aplicación con una fecha posterior a la que tiene actualmente el computador. Es calculada comparando la fecha actual del computador con el valor de la propiedad LastDate que contiene la mayor fecha alcanzada alguna vez por la aplicación.
DateWarning: tipo Boolean. Toma el valor True si la diferencia de fechas entre LastDate y la fecha actual del computador es mayor de uno. También es True si DateBacked es True.
FirstTime: tipo boolean, toma el valor True cuando es la primera vez que la aplicación se está ejecutando en el computador.
InstancesCtrl: tipo Boolean. Debe ser True si Ud. desea limitar la cantidad de instancias simultaneas de la aplicación. Al crear una clave de registración con la utilidad KeyGen o RegMonitor o desde el OLM Ud. establece la cantidad de instancias permitidas.
ICSources: Tipo string. Es una representación en forma de string de la propiedad InstallCodeSources, contiene 5 caracteres que puede ser '0' o '1' indicando si la fuente correspondiente está o no activa. Por ejemplo '11000' indicaría que están activas las fuentes CPU_ID y HD_SN.
ICode (Checksum): tipo string. valor hexadecimal de 4 digitos calculado como una suma de chequeo de los códigos provenientes de las 5 fuentes mencionadas, se obtiene así un código más corto pero igualmente único para cada InstallCode que forma parte del mismo como el último de los segmentos y permite su validación. También se lo utiliza para integrarlo a la clave de registración a fin de ser comparado después con el obtenido desde la máquina en tiempo de ejecución.
InstallCode: tipo string. valor calculado en base a las fuentes establecidas en la propiedad InstallCodeSources, debería ser único para cada computador. Está compuesto por 6 sub-strings (segmentos) cada uno obtenido de la máquina u otras fuentes. Cada segmento es un número hexadecimal de 4 dígitos. Dependiendo de los valores asignados a la propiedad InstallCodesources estos sub-strings serán '3039' (12345 decimal) cuando la fuente no está asignada y en caso contrario tomará su valor de la fuente correspondiente.
Esquema para la versión 3.x
(V32Compat=True)

|
Esquema para la versión 4.x
(V32Compat=False)

|
El código Other Code corresponde a la fuente Other_Source. Finalmente como último segmento se agrega una suma de chequeo (Checksum) en base a los segmentos anteriores que posteriormente servirá para validar el Installcode y además se guarda en la propiedad Icode que veremos a continuación. Este string es finalmente encriptado y conformado en un string de 27 caracteres de longitud, 24 digitos hexadecimales y 3 separadores para hacerlo más legible, cómo el siguiente ejemplo: DF8ACE-DC468A-4561A5-FD2D61
InternetPort : tipo word. Es usado como parámetro al llamar la función InternetConnect(). se debe utilizar una de las constantes predefinidas en la unidad WinInet.pas. El valor preestablecido es INTERNET_DEFAULT_HTTP_PORT que es el correcto si utiliza un sitio no seguro, pero si necesita acceder a un sitio seguro (HTTPS) utilice INTERNET_DEFAULT_HTTPS_PORT (vea el fichero .dpr del ejemplo Demo1). Por ejemplo:
avlocks31.InternetPort := INTERNET_DEFAULT_HTTPS_PORT;
InternetFlag : tipo dword. Es usado como parámetro al llamar la función HttpOpenRequest(). se debe utilizar una de las constantes predefinidas en la unidad WinInet.pas. El valor preestablecido es INTERNET_FLAG_RELOAD que es el correcto si utiliza un sitio no seguro, pero si necesita acceder a un sitio seguro (HTTPS) utilice una de las dos opciones siguientes:
//Opción 1
avlocks31.InternetFlag := INTERNET_FLAG_SECURE;
//Opción 2
avlocks31.InternetFlag := INTERNET_FLAG_SECURE
or INTERNET_FLAG_IGNORE_CERT_CN_INVALID
or INTERNET_FLAG_IGNORE_CERT_DATE_INVALID;
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.
LastDate: tipo date (fecha). El componente guarda el valor de esta propiedad en los datos de registración y es asignada con la fecha más alta en la que el ordenador haya estado alguna vez. Cuando el programa llama al método GetKeyData(), la fecha actual del sistema es comparada con el LastDate guardado en los datos de registración, si la fecha actual es mayor que LastDate, este es actualizado con el valor de la fecha actual, en caso contrario si la fecha actual es menor que LastDate las propiedades DateBacked y DateWarning son hecho igual a True. Para reestablecer este valor a False debe ejecutar el método OnlineCheckDate() que verifica la fecha del computador a través de internet.
solo se puede lograr removiendo los datos de registración con el método EraseReg() o borrando el fichero *.avr si solo está usando DataFile o utilizando el botón [Unregister App] de la utilidad RegMonitor.
LastError : type word: Retorna el código de error para la última operación y puede tomar los siguientes valores:
0: No error
1: Un usuario Visitante está corriendo una aplicación no inicializada
2: Operatción no disponible para usuarios Visitantes
Ud. no necesita preocuparse por el valor que tome esta propiedad ya que internamente se toma la acción apropiada.
OtherCode : tipo word. Como valor preestablecido contiene 12345, en caso de activarse la fuente Other_Source se debe asignar un valor a esta propiedad en tiempo de ejecución al iniciar la aplicación y antes de utilizar cualquier método del componente. Vea mas información en el apartado correspondiente a la propiedad "InstallCode".
RegFilePath : tipo string. El valor preestablecido es un string vacío '', esto da por resultado que el fichero que contiene los datos de registración se ubiquen en la misma carpeta del fichero ejecutable de la aplicación. En Windows Vista las carpetas que estén bajo Archivos de programa no son escribibles, así que si Ud. desea que su aplicación sea compatible con Windows Vista deberá asignar un valor a esta propiedad. Windows tiene preestablecidas ciertas carpetas especiales donde el usuario puede guardar información, y puede utilizar la función SHGetSpecialFolderPath() para obtener la ubicación de estas carpetas para la versión corriente de Windows.
Abajo la función GetSpecialFolder() muestra como implementarlo.
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;
Por ejemplo utilice:
str := GetSpecialFolder(35);
Para Windows XP obtendría los siguientes resultados:
ROAMING_APPDATA = 26 C:\Documents and Settings\<current user>\Application Data
LOCAL_APPDATA = 28 C:\Documents and Settings\<current user>\Local Settings\Application Data
COMMON_APPDATA = 35 C:\Documents and Settings\All Users\Application Data
Started: tipo boolean, toma el valor true cuando ya se ha ejecutado el método start() que establece los valores iniciales de las propiedades del componente en tiempo de ejecución.
RandomCode : tipo word. Como valor preestablecido contiene 12345, en caso de activarse la fuente Random_Code este valor se calcula la primera vez que se ejecuta la aplicación y se guarda junto a los datos de registración. Es una de las fuentes de datos para el calculo del InstallCode.
He tratado de que esta ayuda sea lo más clara y completa posible, sin embargo es posible que hayan quedado aspectos sin considerar. Si Ud. nota que falta algo o ha encontrado errores o tiene alguna idea que podría ser útil para mejorar esta ayuda, por favor hágamelo saber.
|
Alcides Valega
Autor de AVLock SIMPLE
|
|