You are on page 1of 15

Buenas amigos hoy a diferencia de lo que ya viene siendo costumbre no os traigo ningn tutorial de

plugins o de AMS, hoy os quiero traer unos cuantos consejos, ideas y ejemplos para que usis en
vuestros instaladores de Setup Factory 8.x, tampoco es que sea un gran especialista en SF8 pero es
el programa que uso para hacer los instaladores y a fuerza de ir haciendo acaba uno por aprender a
usar algunas cosillas y al ser muy parecido al AMS es fcil de captar.
Los contenidos de este tutorial son los siguientes:
Como usar Application.GetInstallLanguage();
Como usar System.Is64BitOS();
Como usar System.IsSystemRestoreAvailable();
Como detectar archivos/carpetas
Como hacer diferentes Paquetes(Packages)
Como poner Seriales al Instalador

Como usar Application.GetInstallLanguage();


Application.GetInstallLanguage es un comando que sirve para detectar el idioma de la aplicacin,
y si quieres lanzar mensaje o que haga cosas diferentes segn el idioma del instalador de este modo
podrs hacerlo es muy til por ejemplo si haces que tu instalador tenga dos idiomas espaol y
ingles y quieres preguntar algo atrevas de un Dialog.MaskedInput o Dialog.Message.
Aqu debajo os dejo dos ejemplos simples que podris usar en la seccin de Acciones Generales o
en las secciones de acciones individuales de cada pagina que tenga el instalador.
Nota: Para saber las ID's que tiene cada idioma tienes que mirar en el cuadro de Language ID que
podras encontrar en la ayuda de Setup Factory 8.x.
Ejemplo Uno:
local tblSysLang = Application.GetInstallLanguage();
if(tblSysLang.Primary == 9) then -- Ingles
Dialog.Message("Idioma", "Ingles);
elseif (tblSysLang.Primary == 10) then -- Espaol
Dialog.Message("Idioma", "Espaol);
end
Ejemplo Dos:
local Lang = Application.GetInstallLanguage();
if(Lang.Primary == 9) and (Lang.Secondary == 1) then English (USA)
Dialog.Message("Idioma", "Ingles Estados Unidos de Amrica");
elseif(Lang.Primary == 9) and (Lang.Secondary == 2) then --English (UK)
Dialog.Message("Idioma", "Ingles Reino Unido");
elseif(Lang.Primary == 9) and (Lang.Secondary == 3) then --English (Australian)
Dialog.Message("Idioma", "Ingles Australiano");
elseif(Lang.Primary == 9) and (Lang.Secondary == 4) then --English (Canadian)
Dialog.Message("Idioma", "Ingles Canadiense");
elseif (Lang.Primary == 10) and (Lang.Secondary == 1) then --Espaol de Espaa
Dialog.Message("Idioma", "Espaol de Espaa");
elseif (Lang.Primary == 10) and (Lang.Secondary == 9) then --Espaol de Colombia
Dialog.Message("Idioma", "Espaol de Colombia");
elseif (Lang.Primary == 10) and (Lang.Secondary == 11) then --Espaol de Argentina
Dialog.Message("Idioma", "Espaol de Argentina");
end

Como usar System.Is64BitOS();


Otra de las novedades de Setup Factory 8 es que es compatible con Windows Seven y con los
sistemas de 64 Bits trae un comando para poder detectar si el sistema operativo del ordenador donde
se ejecuta el instalador es de 32 Bits o de 64 Bits. Este comando es System.Is64BitOS(); que
devuelve true si es de 64 Bits o false si no lo es en cuyo caso es de 32 Bits, tambin incluye una
nueva variable de sesin que es: "%ProgramFilesFolder64%", espero que os sea util sabe que
podis hacer modificaciones en vuestro proyectos dependiendo de el sistema de bits.
Ejemplo Uno:
if System.Is64BitOS then
-- The user's system is running a 64 bit operating system.
end
Ejemplos Dos:
b64Bit = System.Is64BitOS();
if b64Bit then
-- The OS is 64 bit
else
-- The OS is not 64 bit.
end

Como usar System.IsSystemRestoreAvailable();


Otra de las cosas que me resultan muy interesante es la posibilidad de crear puntos de restauracin
al instalar nuestros proyectos, esto es solo practico si vas a modificar archivos anteriores o si vas a
modificar archivos del sistema, System.IsSystemRestoreAvailable y System.SetRestorePoint
son solo compatibles con windows xp segn pone en la ayuda de Setup Factory, igualmente me a
parecido realmente interesante mostraros esta posibilidad.
Ejemplo:
bSysRestoreAvailable = System.IsSystemRestoreAvailable();
if bSysRestoreAvailable then
nSequenceNum = System.SetRestorePoint(SYSTEM_CHANGE_BEGIN,
SYS_RESTORE_APP_INSTALL, 0, "Installed Sample Product v. 3.7")
else
nChoice = Dialog.Message("Restauracin del Sistema Desactivada", "Su sistema no es compatible
con la Restauracion del sistema.\r\nQuiere usted seguir con la instalacin?", MB_YESNO,
MB_ICONSTOP);
if nChoice == 7 then
Application.ExitScript();
end
end
if bSysRestoreAvailable then
nSequenceNum = System.SetRestorePoint(SYSTEM_CHANGE_END,
SYS_RESTORE_APP_INSTALL, nSequenceNumber, "Installed Sample Product v. 3.7")
Registry.SetValue(HKEY_LOCAL_MACHINE, SessionVar.Expand("Software\\
%CompanyName%\\%ProductName%\\RestorePointInfo"), "SequenceNumber", nSequenceNum,
REG_SZ)
end

Como detectar archivos/carpetas


Otra cosa que quizs muchos de vosotros ya sepis hacer en Autoplay Media Studio es detectar si
un archivo o carpeta existe y dependiendo de si existe o no que el instalador haga una o otra cosa.
Yo suelo hacer de vez en cuando instaladores y la verdad es que de sobras sabia hacer esto en AMS
pero en Setup Factory nunca lo haba echo y tuve que mirar como se hacia por que hacerlo en el
inicio es fcil, pero hacerlo en segn que paginas es algo mas complicado, pero bueno aqu os
demostrare varios ejemplos de como se hace.
Ejemplo Uno:
On Startup del Proyecto
-- Este ejemplo es para detecta si un archivo
result = File.Find(_SystemFolder, "shell32.dll", false, false, nil, nil);
if not result then
Dialog.Message("Notice", "Your message here.");
end
Ejemplos Dos:
On Next de la pagina Select Install Folder
-- Este ejemplo es para detectar si un archivo y carpeta existe basndose en la carpeta que
selecciona el usuario de Instalacin.
local result_pth_A = File.Find(strInstallFolderPath, "programa.exe", false, false, nil, nil);
local result_pth_B = Folder.Find(strInstallFolderPath, "SubCarpeta1", false, nil);
local result_pth_C = File.Find(strInstallFolderPath.."\\SubCarpeta", "Arcchivo1.ext", false, false,
nil, nil);
local result_pth_D = Folder.Find(strInstallFolderPath, "SubCarpeta2", false, nil);
local result_pth_E = File.Find(strInstallFolderPath.."\\SubCarpeta", "Arcchivo2.ext", false, false,
nil, nil);
if (result_pth_A) and (result_pth_B) and (result_pth_C) and (result_pth_D) and (result_pth_E)
then
-- Estas Lineas son las que vienen de serie en On Next
if(g_IsValidPath(strInstallFolderPath)) then
if(_SpaceAvailable >= _SpaceRequired) then
Screen.Next();
else
if g_ConfirmFreeSpaceOverride() then
Screen.Next();
end
end
else
local strTitle = SetupData.GetLocalizedString("MSG_INVALID_ENTRY");
local strPrompt;
if(g_ContainsValidPathChars(strInstallFolderPath)) then
strPrompt = SetupData.GetLocalizedString("ERR_INVALID_PATH");
else
strPrompt =
SetupData.GetLocalizedString("ERR_INVALID_CHARACTERS") .. "\r\n/ * ? \" < > |";

end
Dialog.Message(strTitle, strPrompt, MB_OK, MB_ICONEXCLAMATION);
end
else
-- Esto sucede si no existen los archivos y carpertas
local tblSysLang = Application.GetInstallLanguage();
if(tblSysLang.Primary == 9) then -- Ingles
Dialog.Message("Information", "The Files do not exist.");
elseif (tblSysLang.Primary == 10) then -- Espaol
Dialog.Message("Informacin", "Los Archivos no existen.");
end
end

Como hacer diferentes Paquetes(Packages)


Otra de esas cosas que resulta realmente interesante y til es saber hacer paquetes diferenciados
dentro de nuestros instaladores por si quieres que hallan diferentes tipo de instalaciones o por si
quieres diferenciar los contenidos.
Voy a mostraros un pequeo ejemplos basado en tres carpetas cada una incluye un LP, dos LP's de
Xzibit y dos LP's de Gagle, son dos artistas diferentes y con este ejemplo voy a crear dos tipos de
paquetes el que instale los LP's de uno o de otro segn el usuario desee.
1. Crear los Paquetes y asignarles un nombre. As pues nos dirigimos a la seccin de ajustes
(Settings) y seleccionamos paquetes (Pakages).

2. Una vez dentro dentro de Paquetes (Packages) pulsamos en aadir (Add)

3. Una vez hemos pulsado el botn de aadir (Add) tendremos que poner todas las
especificaciones en la imagen os he puesto las descripciones pero en realidad los contenidos
que voy a poner son otros.
Package ID: IDGagle
Display name: LP's Gagle
Description: Contiene dos LP's de Gagle.
Gagle - Hidden Music Value
Gagle - 3peat
Notas: El espacio adicional en el disco (Additional disk space (KB)) esto solo lo tendris
que calcular si queris que aada una cantidad extra de KB ademas de los que por si ocupa.
El estado inicial (Initial State) tiene dos opciones que son Instalar este paquete (Install this
package) y Permitir que el usuario cambie (Allow user to change), la primera opcin es para
demarcar como quieres que aparezca por defecto si sealada o no, y la segunda opcin es
para permitir al usuario cambiar que se instale o no, esta segunda opcin es muy interesante
si tenis contenidos que tengas que ser instalados de manera obligatoria como el entorno de
la aplicacin por ejemplo.
Por ultimo recordar que si vuestro instalador esta en diferente idiomas tendris que rellenar
estos campos en cada uno de los idiomas por separado pulsa sobre el selector de idioma
(Language) que se ve en la parte inferior de la foto. No olvidis eso que es algo realmente
importante!!

4. Una vez hemos rellenado todos los capos y puesto toda la informacin del primer paquete
tendremos que crear el siguiente paquete, quiero haceros inca-pie que el nombre de la ID

(Package ID) tiene que ser diferente al anterior pues es el nombre con el que Setup Factory
diferenciara uno grupo o el otro. Con los dos grupos terminados os tendra que quedar as.

5. Cuando ya tenemos los dos grupos creados solo tenemos que agregar las capetas de los LP's
y seleccionar dos de ellos en mi caso voy a seleccionar los dos LP's de Gagle.

6. Una vez sealadas las dos capetas que deseas agrupar en un paquete tienes que pulsar en
propiedades (File Properties...) y dirigirte a paquetes (Packages) y seleccionar el paquete del
que deseas que formen parte, en mi caso quiero que sean del grupo de gagle. Cuando ya
hemos sealado el grupo hacemos los mismo con las otras dos capetas.

7. Cuando ya estn cada directorio en el grupo que les toca solo tenemos que crear la pagina
del setup que gestionara los contenidos de nuestro instalador, para esto nos dirigiremos a la
seccin de Pantallas (Screens) y seleccionaremos Antes de Instalar (Before Installing). Para
poder aadir una pagina de gestin de paquetes dentro de nuestro instalador.

8. Una vez vez dentro de Antes de Instalar (Before Installing), tendremos que pulsar el botn
de aadir y seleccionar la pagina predeterminada de seleccin de paquetes (Select Package),
tambin podis escoger la pagina de personalizar (Custom) y crear nosotros las pagina a
nuestro antojo, pero en mi caso no lo voy a hacer por que es demasiado trabajo para algo tan
simple como crear grupos y hacer que nuestro instalador los muestre pero si vosotros

prefers esa opcin recordar que tendris que aadir comandos y scripts.

9. Cuando la pagina ya a sido agregada a nuestra lista de paginas tenemos que configurar la y
eso se hace pulsado en editar (Edit) o haciendo doble click directamente sobre la pagina que
deseas editar. Una vez dentro de las propiedades de la pagina tenemos que agregar los
paquetes al proyecto seleccionndolos y pulsado la flecha.

10. Una vez hemos seleccionado los dos paquetes y los hemos aadido, algo as:
Nota: Recuerda que muchas veces tendremos que hacer esto varias veces segn el numero
de idiomas de nuestro instalador, es muy importaren que esto no se te olvide por que si no te
quedaran muchos vacos en tus instaladores a la hora de instalarlo con segn que idiomas.

11. Una vez echos todos los pasos anteriormente nombrados ya esta lista nuestra pagina de
seleccin de paquetes podemos pre-visualizarla o directamente crear el instalar y probar si a
funcionado todo de manera correcta. El resultado seria algo as:

Ya por ultimo comentaros que yo en este ejemplo no me he matado mucho en aadir extras pero se
puede implementar con algunos scripts o tambin haciendo el proyecto en varios idiomas. Espero
que este ejemplo de como hacer paquetes os sea til en prximos proyectos con Setup Factory.

Como poner Seriales al Instalador


Otra de esas cosas que resulta realmente interesante y til es saber como poner seriales a nuestro
instalador, muchas veces uno quieres limitar el uso o simplemente dejar claro de donde a salido ese
instalador y la mejor forma de hacerlo es poner un serial que limite el uso a solo usuarios que
dispongan de el serial o no.
Tambin podis poner como serial el nombre de vuestra pagina web o foro, eso ya es cosas de
gustos, yo personalmente solo he usado esto en dos proyectos pero tengo algunos scripts interesante
para cuando se falla en la eleccin de serial. Una buena manera de haceros publicidad.
Yo voy a usar el ejemplo anterior como base pero cualquier proyecto es valido para hacerlo.
1. Primero tenemos que abrir nuestro proyecto y seleccionar una lista de seriales. Esto es fcil
nos dirigiremos a la seccin de ajustes (Settings) y seleccionaremos seguridad (Security).

2. Una vez dentro de la de seccin de seguridad (Security) tenemos que pulsar sobre la lista de
seriales y aadir seriales validos.

3. Para habilitar seriales pulsamos sobre comandos (Commands) y despus pulsamos en


generar (Generate). Nos aparecer algo como lo que se muestra aqu debajo donde nos
permitir generar seriales de manera automtica, puedes seleccionar el numero de seriales
que quieres que generes de manera aleatoria tambin puedes seleccionar el tipo de mascara
que quieres usar, tambin puede aadir los seriales de manera automtica, debajo de la
imagen os moteare como funcionan las mascaras.

Mascara

Ejemplo de lo que podra ser


generado

####-####-####-####

4754-8345-1970-4486

PW##-####

PW18-2106

?????-?????

MCMEU-0JSTC

#@#@#@#@

3y0b9y7v

****-CD-####

AGPN-CD-7101

CDKEY-????-####-**** CDKEY-LRAC-1333-IDST
*###-***-###*

J363-DCU-621I

Carcter

Lo que ser generado

Un numero aleatorio

Una letra en maysculas (A-Z)

Una letra en minsculas (a-z)

Un numero aleatorio o una letra en


maysculas ("A-Z", "0-9")

Un guion

Un carcter literal El carcter que se muestra


literalmente

4. Una vez sabido esto aadidos los seriales que creamos oportunos en mi caso voy a generar 4
seriales de manera aleatoria y voy a poner un serial maestro que sea el nombre de mi blog
por ejemplo con esto solo quiero daros ideas. Quedara algo as:
Nota: Para agregar el serial personalizado solo he pulsado sobre una casilla vaci y he
incluido el valor que yo quera en mi caso: http://amsspecialist.wordpress.com/

5. Una vez creada la lista de seriales validos solo tenemos que activar la pagina de gestin de
seriales, para esto nos dirigiremos a la seccin de Pantallas (Screens) y seleccionaremos
Antes de Instalar (Before Installing). Para poder aadir una pagina de gestin de seriales
dentro de nuestro instalador.

6. Una vez dentro de Antes de Instalar (Before Installing), tendremos que pulsar el botn de
aadir y seleccionar la pagina predeterminada de verificacin de nmeros de serie (Verify
Serial Number), tambin podis escoger la pagina de personalizar (Custom) y crear nosotros
las pagina a nuestro antojo, pero en mi caso no lo voy a hacer por que es demasiado trabajo
para algo tan simple como crear una pagina de verificacin de nmeros de serie y hacer que
nuestro instalador los muestre pero si vosotros prefers esa opcin recordar que tendris que
aadir comandos y scripts.

7. Una vez echo esto se da por finalizado nuestro proceso de creacin de un verificador de
nmeros de serie.
Notas Importantes Acerca el Script: Por defecto la pagina de verificacin de nmeros de serie
(Verify Serial Number) trae muchos scripts ya definidos por ejemplo en la pre-carga de esta pagina
se establece el numero mximo de intentos que son por defecto 3, esto lo podis modificar a vuestro
gusto o eliminarlo si lo creis incensario.
On Preload
SerialNumberScreen.MaxAttempts = 3;
Tambin por defecto en la pagina de siguiente (On Next) vienen definidos algunos valores que
podemos modificar siempre con mucho ojo de no eliminar algo necesario!!
On Next
if(bSerialIsValid) then
-- Si el serial el valido avanza a la siguiente pagina.
Screen.Next();
else
-- Si el usuario a introducido un numero de serie invalido pasa lo siguiente:
-- Esta linea contabiliza el numero de intentos que lleva errados.
SerialNumberScreen.AttemptCount = SerialNumberScreen.AttemptCount + 1;
-- Sea el primer error o el ultimo siempre se muestra este mensaje que SF8 llama el
-- mensaje de numero de serie invalido 'Invalid serial number'
Dialog.Message(SetupData.GetLocalizedString("MSG_ERROR"),
SetupData.GetLocalizedString("ERR_INVALID_SERIAL"));
-- Si el usuario llega el numero mximo de fallos pasa esto:
-- Nota: por defecto te echa del instalador pero nosotros lo podemos modificar
-- para que nos muestre un mensaje especial o para que haga otra cosa.
if(SerialNumberScreen.AttemptCount >= SerialNumberScreen.MaxAttempts) then
Application.Exit(0);
end
end
Como veis no es tan difcil de modificar y con un mnimo de conocimientos se pueden hacer
grandes modificaciones yo por ejemplo os voy a mostrar ya para terminar esta seccin y el tutorial
entero como modificara esta pagina para que cuando llegara al numero mximo de errores te lance
un mensaje temporizado y te envi a una pagina donde podr conseguir el numero de serie que tan
necesario es para continuar la instalacin.
Ejemplo:
On Next
local strSerial = SessionVar.Expand("%SerialNumber%");
strSerial = String.TrimLeft(strSerial);

strSerial = String.TrimRight(strSerial);
SessionVar.Set("%SerialNumber%", strSerial);
local strListName = nil;
local bSerialIsValid = g_IsSerialNumberInList(strSerial, strListName);
if(bSerialIsValid) then
-- Lo primero aadir un mensaje temporizado si el serial es correcto
local text_A = "El serial Introducido es correcto"
Dialog.TimedMessage("Informacin", text_A, 2000, MB_ICONINFORMATION);
Screen.Next();
else
SerialNumberScreen.AttemptCount = SerialNumberScreen.AttemptCount + 1;
Dialog.Message(SetupData.GetLocalizedString("MSG_ERROR"),
SetupData.GetLocalizedString("ERR_INVALID_SERIAL"));
-- Si el usuario excede el numero mximo de errores are lo siguiente:
if(SerialNumberScreen.AttemptCount == SerialNumberScreen.MaxAttempts) then
-- Uso la variable "%CompanyURL%" pero a fin de cuentas
-- es lo mismo que poner la pagina directamente
-- en este caso lo uso por aadir un toque mas de
-- conocimiento del medio y compatibilidad
-- vosotros podis poner directamente la direccin
-- Ejemplo: "http://www.yourcompany.com/Numerosdeserie.htm"
local Pagina = SessionVar.Get("%CompanyURL%".."/Numerosdeserie.htm");
local result_test = HTTP.TestConnection(Pagina, 20, 80, nil, nil);
if (result_test) then
-- Si el usuario dispone de conexin se abrir esta pagina
-- donde podr conseguir el serial.
File.OpenURL(Pagina, SW_SHOWNORMAL);
else
-- Si el usuario no dispone de conexin se lanzara un
-- mensaje y se creara un acceso directo en el escritorio
-- a la pagina donde puede conseguir el numero de serie.
local text_BA = "Es necesario tener conexin a Internet para descargar el serial"
local text_BB = "Se creara un acceso directo a la pagina web en escritorio"
local text_CC = _DesktopFolder.."\\Consigue tu serial.url"
local text_DA = "[InternetShortcut]"
local text_DB = "URL=http://www.yourcompany.com/Numerosdeserie.htm"
Dialog.Message("Informacin", text_BA.."\r\n"..text_BB);
TextFile.WriteFromString(text_CC, text_DA.."\r\n"..text_DB, true);
end

-- Aado esta linea por si el usuario vuelve a fallar el instalador se cerra,


-- ya que falla el numero mximo+1 es que estas haciendo algo mal...
-- o introduciendo seriales al tun tun...
elseif(SerialNumberScreen.AttemptCount == SerialNumberScreen.MaxAttempts + 1) then
Application.Exit(0);
end
end
Espero que este tutorial os sean de gran utilidad, la verdad es que me gustara poneros mas ejemplos
pero no dispongo de todo el tiempo que me gustara, y bueno la verdad es que tampoco es que sea
una maquina en el uso de Setup Factory 8.x. Bueno espero que os funcione todo bien si tenis
alguna duda os recomiendo que os miris la ayuda de Setup Factory 8.x o ir por los sitios que os
muestro debajo. Y recordar que Setup Factory 8.x puede que no sea el mejor instaladores de el
mercado pero para todos los usuarios de Autoplay Media Studio puede ser muy interesante y un
poco mas fcil de usar que otros creadores de instaladores.
Tambin quiero que sepis que las posibilidades de Setup Factory 8.x son casi infinitas yo en este
tutorial solo os muestro unos poco trucos.
Por ultimo recordar que este tutorial a sido creado a partiendo de la versin 8.2.1.0 de Setup
Factory y que si algo no funciona correctamente fijaros bien si estas usando la misma versin.
Este tutorial a sido creador por Ceone para AMSSpecialist Blog, AMSSpecialist Foro y
Darkreloaded entre otras paginas... si os a gustado y queris mas tutoriales os recomiendo que
visitis las paginas nombras anteriormente.
No suelo explayarme tanto en los finales de los tutoriales pero hace nada hemos emprendido un
nuevo proyecto en el staff de AMSSpecialist es crear el Foro para poder tener mejor acceso a
nuestros contenidos, la posibilidad de responder las preguntas de una manera mas fcil y por
muchas otras razones. Os animo a que nos visitis y os registris, entre todos podemos ayudarnos
mas fcilmente.
As que visitarnos en AMSSpecialist Foro y registrarte.

You might also like