Index: installers/windows/installer.iss
===================================================================
RCS file: /usr/local/cvsroot/installers/windows/installer.iss,v
diff -u
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ installers/windows/installer.iss	31 Oct 2006 16:48:05 -0000	1.1
@@ -0,0 +1,386 @@
+; Script generated by the Inno Setup Script Wizard.
+; SEE THE DOCUMENTATION FOR DETAILS ON CREATING INNO SETUP SCRIPT FILES!
+;developed by the Galileo University (www.galileo.edu) by Byron Haroldo Linares Roman bhlr@galileo.edu
+
+#define MyAppName "OpenACS"
+#define MyAppVerName "OpenACSInstaller 1.0.1"
+#define MyAppPublisher "OpenACS."
+#define MyAppURL "http://localhost"
+#define MyAppUrlName "openacs.url"
+
+[Setup]
+AppName={#MyAppName}
+AppVerName={#MyAppVerName}
+AppPublisher={#MyAppPublisher}
+AppPublisherURL={#MyAppURL}
+AppSupportURL={#MyAppURL}
+AppUpdatesURL={#MyAppURL}
+DefaultDirName=C:\{#MyAppName}
+DefaultGroupName={#MyAppName}
+AllowNoIcons=yes
+LicenseFile=license_en.txt
+InfoBeforeFile=important.txt
+InfoAfterFile=nota.txt
+OutputDir=comp
+OutputBaseFilename=setup
+SetupIconFile=oacs.ico
+Compression=lzma
+SolidCompression=yes
+WizardImageFile=logos.bmp
+WizardSmallImageFile=oacs.bmp
+[Languages]
+Name: "eng"; MessagesFile: "compiler:Default.isl"
+[Components]
+
+Name: "dotLRN"; Description: "dotLRN-Manual"; Types: full; Flags: exclusive;
+Name: "openACS"; Description: "OpenACS-Manual"; Types: custom; Flags: exclusive;
+Name: "dotLRNA"; Description: "dotLRN(Automatico)"; Types: full; Flags: exclusive;
+Name: "openACSA"; Description: "OpenACS(Auntomatico)"; Types: custom; Flags: exclusive;
+
+Name: "Opencc"; Description: "OpenACS-core"; Types: full compact custom; Flags: fixed;
+Name: "cyg"; Description: "Cygwin"; Types: full compact custom; Flags: fixed;
+Name: "aol"; Description: "AOlserver"; Types: full compact custom; Flags: fixed;
+Name: "codigo"; Description: "source code"; Types: full;
+
+[Files]
+Source: "oacs-dotlrn\*"; DestDir: "{app}\oacs-dotlrn\"; Flags: ignoreversion recursesubdirs createallsubdirs; Components: Opencc;
+Source: "cygwin.zip"; DestDir: "{tmp}"; Flags: ignoreversion; Components: cyg;
+Source: "AOLserver_4-0-beta-10_2003-08-04.zip"; DestDir: "{tmp}"; Flags: ignoreversion; Components: aol;
+
+Source: "tools\process.exe"; DestDir: "{tmp}"
+Source: "tools\reg.exe"; DestDir: "{tmp}"
+Source: "tools\reg.exe"; DestDir: "{app}\Oacs\bin"
+Source: "tools\setx.exe"; DestDir: "{tmp}"
+Source: "tools\unzip.exe"; DestDir: "{tmp}"
+Source: "start.bat"; DestDir: "{app}"
+Source: "stop.bat"; DestDir: "{app}"
+
+Source: "tcl\binstallw.tcl"; DestDir: "{app}\nsd4";AfterInstall: Patchinstaltcl('nsd4\binstallw.tcl');
+Source: "cygwin.bat"; DestDir: "{app}\Cygwin";AfterInstall: PatchCygwin('Cygwin\cygwin.bat');
+Source: "tcl\windows-procs.tcl"; DestDir: "{app}\oacs-dotlrn\packages\acs-tcl\tcl"
+Source: "tcl\apm-file-procs.tcl"; DestDir: "{app}\oacs-dotlrn\packages\acs-tcl\tcl"
+
+Source: "install.xml"; DestDir: "{app}\oacs-dotlrn"; DestName: "install.xml"; Components: dotLRN;
+Source: "install.xml"; DestDir: "{app}\oacs-dotlrn"; DestName: "install.xml"; Components: dotLRNA;
+Source: "install.xml"; DestDir: "{app}\oacs-dotlrn"; DestName: "no-install.xml"; Components: openACS;
+
+Source: "tcl\index.tcl"; DestDir: "{app}\oacs-dotlrn\packages\acs-bootstrap-installer\installer"; DestName: "index.tcl"; AfterInstall: Patchindex('\oacs-dotlrn\packages\acs-bootstrap-installer\installer\index.tcl'); Components: dotLRNA;
+Source: "tcl\index-org.tcl"; DestDir: "{app}\oacs-dotlrn\packages\acs-bootstrap-installer\installer"; DestName: "index.tcl"; Components: dotLRN;
+Source: "tcl\installer.tcl"; DestDir: "{app}\oacs-dotlrn\packages\acs-bootstrap-installer"; DestName: "installer.tcl"; Components: dotLRNA;
+Source: "tcl\installer-org.tcl"; DestDir: "{app}\oacs-dotlrn\packages\acs-bootstrap-installer"; DestName: "installer.tcl"; Components: dotLRN;
+
+Source: "tcl\index.tcl"; DestDir: "{app}\oacs-dotlrn\packages\acs-bootstrap-installer\installer"; DestName: "index.tcl"; AfterInstall: Patchindex('\oacs-dotlrn\packages\acs-bootstrap-installer\installer\index.tcl'); Components: OpenACSA;
+Source: "tcl\index-org.tcl"; DestDir: "{app}\oacs-dotlrn\packages\acs-bootstrap-installer\installer"; DestName: "index.tcl"; Components: OpenACS;
+Source: "tcl\installer.tcl"; DestDir: "{app}\oacs-dotlrn\packages\acs-bootstrap-installer"; DestName: "installer.tcl"; Components: OpenACSA;
+Source: "tcl\installer-org.tcl"; DestDir: "{app}\oacs-dotlrn\packages\acs-bootstrap-installer"; DestName: "installer.tcl"; Components: OpenACS;
+
+Source: "tcl\windows-procs.tcl"; DestDir: "{app}\tcl"; Components: codigo;
+Source: "tcl\apm-file-procs.tcl"; DestDir: "{app}\tcl"; Components: codigo;
+Source: "tcl\index.tcl"; DestDir: "{app}\tcl"; Components: codigo;
+Source: "tcl\index-org.tcl"; DestDir: "{app}\tcl"; Components: codigo;
+Source: "tcl\installer.tcl"; DestDir: "{app}\tcl"; Components: codigo;
+Source: "tcl\installer-org.tcl"; DestDir: "{app}\tcl"; Components: codigo;
+Source: "oacs.ico"; DestDir: "(app)"; Components: codigo;
+Source: "oacs.bmp"; DestDir: "(app)"; Components: codigo;
+Source: "logos.bmp"; DestDir: "(app)"; Components: codigo;
+
+
+Source: "installer.iss"; DestDir: "{app}"; Components: codigo;
+[INI]
+Filename: "{app}\{#MyAppUrlName}"; Section: "InternetShortcut"; Key: "URL"; String: "{#MyAppURL}"
+
+[Dirs]
+
+Name: "/tmp"
+Name: "{app}\Cygwin"
+Name: "{app}\ZIP"
+Name: "{app}\nsd4"
+Name: "(app)\tcl"
+
+[Icons]
+Name: "{group}\{cm:ProgramOnTheWeb,{#MyAppName}}"; Filename: "{app}\{#MyAppUrlName}"
+Name: "{group}\Start Server"; Filename: "{app}\start.bat"
+Name: "{group}\Stop  Server"; Filename: "{app}\stop.bat"
+Name: "{group}\{cm:UninstallProgram,{#MyAppName}}"; Filename: "{uninstallexe}"
+
+[Registry]
+Root: HKLM; Subkey: "Software\Cygnus Solutions"; Flags: uninsdeletekeyifempty
+Root: HKLM; Subkey: "Software\Cygnus Solutions\Cygwin"; Flags: uninsdeletekeyifempty
+
+Root: HKLM; Subkey: "Software\Cygnus Solutions\Cygwin\mounts v2"; Flags: uninsdeletekeyifempty
+Root: HKLM; Subkey: "Software\Cygnus Solutions\Cygwin\mounts v2"; ValueType: string; ValueName: "cygdrive prefix"; ValueData: "/cygdrive"
+Root: HKLM; Subkey: "Software\Cygnus Solutions\Cygwin\mounts v2"; ValueType: dword; ValueName: "cygdrive flags"; ValueData: "$22"
+
+Root: HKLM; Subkey: "Software\Cygnus Solutions\Cygwin\mounts v2\/"; Flags: uninsdeletekeyifempty
+Root: HKLM; Subkey: "Software\Cygnus Solutions\Cygwin\mounts v2\/"; ValueType: string; ValueName: "native"; ValueData: "{code:UnixDir}/cygwin"
+Root: HKLM; Subkey: "Software\Cygnus Solutions\Cygwin\mounts v2\/"; ValueType: dword; ValueName: "flags"; ValueData: "$a"
+
+Root: HKLM; Subkey: "Software\Cygnus Solutions\Cygwin\mounts v2\/usr/bin"; Flags: uninsdeletekeyifempty
+Root: HKLM; Subkey: "Software\Cygnus Solutions\Cygwin\mounts v2\/usr/bin"; ValueType: string; ValueName: "native"; ValueData: "{code:UnixDir}/cygwin/bin"
+Root: HKLM; Subkey: "Software\Cygnus Solutions\Cygwin\mounts v2\/usr/bin"; ValueType: dword; ValueName: "flags"; ValueData: "$a"
+
+Root: HKLM; Subkey: "Software\Cygnus Solutions\Cygwin\mounts v2\/usr/lib"; Flags: uninsdeletekeyifempty
+Root: HKLM; Subkey: "Software\Cygnus Solutions\Cygwin\mounts v2\/usr/lib"; ValueType: string; ValueName: "native"; ValueData: "{code:UnixDir}/cygwin/lib"
+Root: HKLM; Subkey: "Software\Cygnus Solutions\Cygwin\mounts v2\/usr/lib"; ValueType: dword; ValueName: "flags"; ValueData: "$a"
+
+Root: HKLM; Subkey: "Software\Cygnus Solutions\Cygwin\Program Options"; Flags: uninsdeletekeyifempty
+
+[Run]
+; Extract the installed ZIP files. Unzip ignores the ones that doesn't exist
+Filename: "{tmp}\unzip.exe"; StatusMsg: "Extracting CygWin (1-2 min)..."; Parameters: "-o {tmp}\cygwin.zip -d ""{app}"" "; Flags: runhidden
+
+; Setting global environment variables
+;laurel
+Filename: "{tmp}\setx.exe"; StatusMsg: "Setting ENV Path..."; Parameters: "Path ""{code:Path};{app}\cygwin\bin;{app}\cygwin\sbin;{app}\cygwin\usr\bin;{app}\cygwin\usr\sbin"" -m"; Flags: runhidden
+Filename: "{tmp}\setx.exe"; StatusMsg: "Setting ENV Cygwin..."; Parameters:  "CYGWIN server -m"; Flags: runhidden
+Filename: "{tmp}\setx.exe"; StatusMsg: "Setting ENV Home..."; Parameters: "HOME ""{userappdata}"" -m"; Flags: runhidden
+Filename: "{tmp}\setx.exe"; StatusMsg: "Setting ENV TmpDir..."; Parameters: "TMPDIR ""{code:EnvTmp}"" -m"; Flags: runhidden
+
+; Setup CygWin.
+;
+Filename: "{app}\cygwin\bin\chmod"; StatusMsg: "Setting Permissions..."; Parameters: "a+rx /bin -R"; Flags: runhidden
+Filename: "{app}\cygwin\bin\bash"; StatusMsg: "Generating CygWin /etc/passwd..."; Parameters: " -c ""/bin/mkpasswd -l > /etc/passwd"" "; Flags: runhidden
+Filename: "{app}\cygwin\bin\bash"; StatusMsg: "Generating CygWin /etc/group..."; Parameters: " -c ""/bin/mkgroup -l > /etc/group"" "; Flags: runhidden
+Filename: "{app}\cygwin\bin\cygrunsrv"; StatusMsg: "Installing CygServer Service..."; Parameters: " -I cygserver -d ""by-CygServer"" -p /usr/sbin/cygserver"; Flags: runhidden
+Filename: "{tmp}\reg.exe"; StatusMsg: "Setting CygServer Display Name..."; Parameters: "add HKLM\SYSTEM\CurrentControlSet\Services\cygserver /v DisplayName /t REG_SZ /d ""by-CygServer"" /f"; Flags: runhidden
+Filename: "{sys}\net.exe"; StatusMsg: "Launching CygServer Service..."; Parameters: "start cygserver"; Flags: runhidden
+
+; Init the postgreSQL database
+Filename: "{app}\cygwin\bin\bash"; StatusMsg: "Initializing PostgreSQL Database (1 min)..."; Parameters: " -c ""CYGWIN=server; export CYGWIN; PATH=/bin; export PATH; /bin/initdb -D /var/postgresql/data"" "; Flags: runhidden
+Filename: "{app}\cygwin\bin\chmod"; StatusMsg: "Setting PostgreSQL Permissions..."; Parameters: "777 /var/postgresql/data -R"; Flags: runhidden
+; Starting PostgreSQL service
+Filename: "{app}\cygwin\bin\cygrunsrv"; StatusMsg: "Installing PostgreSQL Service..."; Parameters: " -I cygpostgres -d ""PostgreSQL Database"" -p /usr/bin/postmaster -e ""CYGWIN=server"" -a ""-D /var/postgresql/data -i"" -y cygserver -s INT -o"; Flags: runhidden
+Filename: "{tmp}\reg.exe"; StatusMsg: "Setting CygServer Display Name..."; Parameters: "add HKLM\SYSTEM\CurrentControlSet\Services\cygpostgres /v DisplayName /t REG_SZ /d ""PostgreSQL Database"" /f"; Flags: runhidden
+Filename: "{sys}\net.exe"; StatusMsg: "Launching PostgreSQL Service (1 min)..."; Parameters: "start cygpostgres"; Flags: runhidden
+; database
+Filename: "{app}\cygwin\bin\psql"; StatusMsg: "Creating PostgreSQL User..."; Parameters: " -c ""CREATE USER oacss CREATEUSER CREATEDB password 'oacss';"" template1"; Flags: runhidden
+Filename: "{app}\cygwin\bin\psql"; StatusMsg: "Creating PostgreSQL Database..."; Parameters: " -c ""CREATE DATABASE oacs ENCODING='UNICODE' OWNER oacss;"" template1"; Flags: runhidden
+Filename: "{app}\cygwin\bin\createlang"; StatusMsg: "Creating PostgreSQL Language..."; Parameters: " -h localhost -U oacss plpgsql oacs"; Flags: runhidden
+;aolserver
+Filename: "{tmp}\unzip.exe"; StatusMsg: "AOLserver_4-0-beta-10 (1-2 min)..."; Parameters: "-o {tmp}\AOLserver_4-0-beta-10_2003-08-04.zip -d ""{app}\nsd4"" "; Flags: runhidden
+; Setup AOLServer
+
+Filename: "{app}\nsd4\bin\nsd.exe"; StatusMsg: "Installing AOLServer Service..."; Parameters: " -I -t ""..\binstallw.tcl"" "; Flags: runhidden
+Filename: "{app}\cygwin\bin\chmod"; StatusMsg: "Setting AOLServer Permissions..."; Parameters: " -R a+rw ""{code:UnixDir}/nsd4"; Flags: runhidden
+Filename: "{tmp}\reg.exe"; StatusMsg: "Adding AOLServer Dependency..."; Parameters: "add HKLM\SYSTEM\CurrentControlSet\Services\AOLserver-oacs-dotlrn /v DependOnService /t REG_MULTI_SZ /d cygpostgres /f"; Flags: runhidden
+Filename: "{tmp}\reg.exe"; StatusMsg: "Setting AOLServer Display Name..."; Parameters: "add HKLM\SYSTEM\CurrentControlSet\Services\AOLserver-oacs-dotlrn /v DisplayName /t REG_SZ /d ""by-AOLServer-by"" /f"; Flags: runhidden
+Filename: "{sys}\net.exe"; StatusMsg: "Launching AOLServer Service (1-3 min)..."; Parameters: "start AOLserver-oacs-dotlrn"; Flags: runhidden
+filename: "{app}\openacs.url"; StatusMsg: "installer"; Flags: shellexec
+[UninstallRun]
+Filename: "{app}\cygwin\bin\cygrunsrv"; StatusMsg: "Stopping Service AOLServer..."; Parameters: " -E AOLServer-oacs-dotlrn"
+Filename: "{app}\cygwin\bin\cygrunsrv"; StatusMsg: "Removing Service AOLServer..."; Parameters: " -R AOLServer-oacs-dotlrn"
+
+Filename: "{app}\cygwin\bin\cygrunsrv"; StatusMsg: "Stopping Service PostgreSQL..."; Parameters: " -E cygpostgres"
+Filename: "{app}\cygwin\bin\cygrunsrv"; StatusMsg: "Removing Service PostgreSQL..."; Parameters: " -R cygpostgres"
+
+Filename: "{app}\cygwin\bin\cygrunsrv"; StatusMsg: "Stopping Service CygServer..."; Parameters: " -E cygserver"
+Filename: "{app}\cygwin\bin\cygrunsrv"; StatusMsg: "Removing Service CygServer..."; Parameters: " -R cygserver"
+;net
+Filename: "{sys}\net"; StatusMsg: "Stopping Service AOLServer via net..."; Parameters: " stop AOLServer-oacs-dotlrn"
+Filename: "{sys}\net"; StatusMsg: "Stopping Service PostgreSQL via net..."; Parameters: " stop cygpostgres"
+Filename: "{sys}\net"; StatusMsg: "Stopping Service CygServer via net..."; Parameters: " stop cygserver"
+
+Filename: "{app}\Oacs\bin\reg.exe"; StatusMsg: "Deleting Registry Settings..."; Parameters: "DELETE ""HKCU\Software\Cygnus Solutions"" /f"
+Filename: "{app}\Oacs\bin\reg.exe"; StatusMsg: "Deleting Registry Settings..."; Parameters: "DELETE ""HKLM\Software\Cygnus Solutions"" /f"
+
+Filename: "{tmp}\chown"; Parameters: "-v -R Administrators {app}\cygwin\"; StatusMsg: "Setting Owner to Administrators..."
+Filename: "{tmp}\subinacl.exe"; Parameters: "/subdirectories {app}\cygwin\* /grant=Everyone=F"; StatusMsg: "Setting Permissions for Everyone..."
+
+; Delete the entire directory
+Filename: "{sys}\cmd"; Parameters: "/C ""rmdir /S /Q '{app}' """; StatusMsg: "Deleting (App) directory..."
+Filename: "{sys}\cmd"; Parameters: "/C ""rmdir /S /Q '{group}' """; StatusMsg: "Deleting (Group)..."
+[UninstallDelete]
+Type: files; Name: "{app}\{#MyAppUrlName}"
+Type: filesandordirs; Name: "{app}"
+Type: filesandordirs; Name: "{group}"
+
+[Code]
+
+var
+ UserPage: TInputQueryWizardPage;
+  UserPage2: TInputQueryWizardPage;
+  Values: TArrayOfString;
+  Name: string;
+  Usname:string;
+     Last_NAME:string;
+     Email:string;
+     System_name:string;
+     pass:string;
+     confpass: string;
+     
+
+function Path(Default: String): String;
+begin
+  Result := GetEnv('Path');
+
+end;
+
+function UnixDir(Default: String): String;
+var
+  i: Integer;
+  dir: String;
+begin
+  dir := ExpandConstant('{app}');
+
+  for i := 1 to length(dir)do begin
+    if (StrGet(dir, i) = '\') then begin
+      StrSet('/', i, dir);
+    end;
+  end;
+  Result := dir;
+end;
+
+
+function EnvTmp(Default: String): String;
+begin
+  Result := GetEnv('Tmp');
+end;
+procedure msg(linea, def: string);
+begin
+ MsgBox('parametro faltante'+linea+'se pondra'+def, mbInformation, MB_OK);
+ end;
+ 
+procedure parametros();
+begin
+
+     Name:= UserPage2.Values[0];
+     Last_NAME:= UserPage2.Values[1];
+     Email:= UserPage2.Values[2];
+     System_name:= UserPage2.Values[3];
+     Usname:= Email;
+     pass:= UserPage.Values[0];
+     confpass:= UserPage.Values[1];
+     if (CompareStr(pass,confpass)<>0)  then begin
+      MsgBox('Las contrase�as no coinsiden se pondra oacs como contrase�a temporal', mbInformation, MB_OK);
+      pass:='oacs';
+      confpass:='oacs';
+      end
+      if ((Name=''))  then begin
+       msg('Name','oacs');
+       Name:='oacs';
+      end
+      if ((Last_NAME=''))  then begin
+       msg('Lasr Name','oacs');
+       Last_NAME:='oacs';
+      end
+      if ((Email=''))  then begin
+       msg('Email','oacs@temp.com');
+       Last_NAME:='oacs@temp.com';
+      end
+      if ((System_name=''))  then begin
+       msg('System name','oacs');
+       Last_NAME:='oacs';
+      end
+
+end;
+
+function ReplaceLine(var strLine: TArrayOfString; strFind, strReplace: String): boolean ;
+var
+  i, p: longint;
+  commentSize: longint;
+  arraySize: longint;
+  fileChanged: boolean;
+  strTemp: string;
+
+begin
+
+   arraySize := GetArrayLength(strLine)-1;
+   for i := 0 to arraySize do begin
+    p := Pos(strFind,strLine[i]);
+    if p > 0 then begin
+       strTemp := copy(strLine[i], 1, p-1) + strReplace + copy(strLine[i], p+length(strFind), 99999);
+       strLine[i] := strTemp;
+    end
+  end;
+end;
+
+procedure Patchindex(FileName: String);
+var
+  Patch: String;
+   strLine: TArrayOfString;
+  que:boolean;
+  que2:boolean;
+    dir:String;
+  dir2:String;
+begin
+   parametros();
+  dir := ExpandConstant('{app}');
+  dir2:=dir+'\'+FileName;
+  LoadStringsFromFile(dir2,strLine);
+  ReplaceLine(strLine,'|email|',Email);
+  ReplaceLine(strLine,'|name|',Name);
+  ReplaceLine(strLine,'|usname|',Usname);
+  ReplaceLine(strLine,'|LsName|',Last_NAME);
+  ReplaceLine(strLine,'|pass|',pass);
+  ReplaceLine(strLine,'|Cpass|',confpass);
+  ReplaceLine(strLine,'|Sname|',confpass);
+  SaveStringsToFile(dir2, strLine, false);
+
+end;
+
+procedure Patchinstaltcl(FileName: String);
+var
+  Patch: String;
+  strLine: TArrayOfString;
+  dir:String;
+  dir2:String;
+  dir3:String;
+  drive,drive2,dir4:string;
+  i: Integer;
+  p: Integer;
+begin
+  dir := ExpandConstant('{app}');
+  dir3:=dir;
+  dir2:=dir+'\'+FileName;
+  LoadStringsFromFile(dir2, strLine);
+  ReplaceLine(strLine, '|instdir|', UnixDir(''));
+  for i := 0 to length(dir) do begin
+    p := Pos('\',dir3);
+      if p > 0 then begin
+        dir4 := copy(dir3, 1, p) + '\' + copy(dir3, p+1, length(dir));
+       p:=-1;
+    end
+  end;
+  
+    drive := copy(Dir4, 1, 1);
+     drive:=LowerCase(drive);
+     drive2 := drive + copy(dir4, 2, length(dir4));
+  ReplaceLine(strLine, '|instdir1|', drive2);
+  SaveStringsToFile(dir2, strLine, false);
+end;
+
+procedure PatchCygwin(FileName: String);
+var
+  strLine: TArrayOfString;
+  dir,InstallDir, InstallDrive: String;
+begin
+  InstallDir := ExpandConstant('{app}');
+   dir:= InstallDir +'\'+ FileName;
+  InstallDrive := copy(InstallDir, 1, 1);
+  LoadStringsFromFile(dir, strLine);
+  ReplaceLine(strLine, '|dir|', InstallDir);
+  ReplaceLine(strLine, '|driv|', InstallDrive);
+  SaveStringsToFile(dir, strLine, false);
+end;
+
+ procedure InitializeWizard();
+begin
+
+  UserPage := CreateInputQueryPage(wpUserInfo,
+    'Personal Information', 'Continuacion',
+    'Please specify your password and password confirmation, then click Next.');
+    UserPage.Add('Password', True);
+    UserPage.Add('confirmar Password:', True);
+
+
+
+  UserPage2 := CreateInputQueryPage(wpUserInfo,
+    'Personal Information', 'Who are you?',
+    'Please specify your name and email, then click Next.');
+    UserPage2.Add('Name:', False);
+    UserPage2.Add('Last Name:', False);
+    UserPage2.Add('Email:', False);
+    UserPage2.Add('System Name:', False);
+
+  end;
+