On Wed, 20 Aug 2014 13:27:06 -0400, Hugo Florentino wrote:
Existe una herramienta libre llamada Inno Setup [...]


Después de sugerir Inno Setup, me entró curiosidad por juguetear con el para hacer un script de instalación de actualizaciones.

Aunque tanto Windows como ESET sean productos privativos, Inno Setup es libre y muy útil para resolver problemas en instituciones donde hay aplicaciones que solo corren en Windows, de modo que aprovecho para poner aquí el script.

No es nada especial, la idea es aprovechar la funcionalidad avanzada de Inno Setup para autodetectar la ruta al servidor de actualizaciones que se haya configurado en el equipo donde se haga la instalación, eliminar los archivos de actualización y copiar los nuevos en esa misma ruta. En el script, obviamente hay que reemplazar C:\eset_upd por la ruta real a los archivos de actualización.

También podría utilizarse el preprocesador de Inno Setup para detectar además la ruta donde se genera el mirror en el servidor o equipo que descarga las actualizaciones (donde se supone que se compilará el instalador), pero mejor dejar esto como estudiuo individual o para una posible iteración futura.

Un ejemplo de línea de comando para automatizar la compilación:
"C:\Program Files (x86)\Inno Setup 5\Compil32.exe" /cc "C:\ScriptdeInno\ActualizaESET.iss" /q

[Setup]
InternalCompressLevel=fast
OutputBaseFilename=ActualizaESET
Compression=lzma/fast
AppName=ActualizaESET
AppVerName=ActualizaESET 0.1
AppMutex=actueset-0.1
DefaultDirName={code:GetESETUpdServerPath}
ShowLanguageDialog=auto
AppVersion=0.1
MinVersion=,5.0.2195
TimeStampsInUTC=true
AllowUNCPath=false
PrivilegesRequired=none
DisableProgramGroupPage=true
Uninstallable=false

[Languages]
Name: es; MessagesFile: compiler:Languages\Spanish.isl

[Files]
Source: C:\eset_upd\*.*; DestDir: {app}

[InstallDelete]
Name: {app}; Type: filesandordirs

[Code]
const
ESETProfilesRegKey = 'SOFTWARE\ESET\ESET Security\CurrentVersion\Plugins\01000400\Profiles';

var
  RootKeyArch: Variant;

function InitializeSetup(): Boolean;
begin
  if IsWin64() then
  begin
    RootKeyArch := HKEY_LOCAL_MACHINE_64;
    Result := True;
  end else
  begin
    RootKeyArch := HKEY_LOCAL_MACHINE;
    Result := False;
  end;
end;

function GetActiveProfile(): String;
begin
if not RegQueryStringValue(RootKeyArch, ESETProfilesRegKey, 'Active', Result) then MsgBox('Error: Imposible obtener el perfil de actualizaciones.', mbError, MB_OK);
end;

function GetProfileServer(): String;
begin
if not (RegQueryStringValue(RootKeyArch, ESETProfilesRegKey + '\' + GetActiveProfile, 'SelectedServer', Result)) then MsgBox('Error: Imposible obtener la ruta del servidor de actualizaciones.', mbError, MB_OK);
end;

function GetESETUpdServerPath(Param: String): String;
var
  vs: String;
begin
  try
    vs := GetProfileServer();
  except
    vs := ExpandConstant('{userdocs}') + '\eset_upd';
  end;
  Result := vs;
end;


--
Este mensaje ha sido analizado por MailScanner
en busca de virus y otros contenidos peligrosos,
y se considera que est� limpio.

______________________________________________________________________
Lista de correos del Grupo de Usuarios de Tecnologías Libres de Cuba.
Gutl-l@jovenclub.cu
https://listas.jovenclub.cu/cgi-bin/mailman/listinfo/gutl-l

Responder a