SFX con WinRAR

El compresor RAR que desde sus inicios ha ofrecido ciertas opciones de personalización en sus archivos autoextraíbles (SelF eXtracting).

Ya en las antiguas versiones 1.5 para DOS, incluían un relativamente potente lenguaje procedural de scripting. En los módulos autoextraíbles para Windows, aquella potencia ha desaparecido, pero a cambio nos permite realizar operaciones muy habituales de manera sencilla.

En muchos casos, no es descartable utilizar el propio WinRAR para reemplazar a programas generadores de instalaciones como NSIS, InnoSetup, Wise o InstallShield; siempre y cuando los procesos a realizar consistan en descompresión y poco más.

Una utilidad adicional muy interesante, consiste en la habilidad de generar ejecutables que automaticamente se decomprimen a una carpeta temporal, ejecutan nuestra aplicación, y al concluir eliminan todos los temporales. Esta solución es tremendamente cómoda para desplegar versiones alfa y beta a usuarios que no tienen porque tener elevados conocimientos de ofimática. En este caso no tendríamos más que añadir las siguientes lineas al comentario de nuestro archivo:
Title=Ejemplo de autodescomprimir un paquete, y ejecutarlo
TempMode
Setup=Run.exe

O todavía más fácil, utilizar el propio entorno de WinRAR para partiendo de un archivo comprimido .RAR, añadirle el módulo SFX, y asignarle las propiedades que querramos.

De ésta manera, es factible incluso cambiar la imagen y el icono que muestran.


SFX con WinRAR

Partiendo de la documentación de WinRAR, he hecho un resumen en castellano de los parámetros disponibles para los SFX GUI de Windows (Default.sfx):

Delete=<archivo>
Borrar <archivo> antes de iniciar la descompresión.
Delete=winrar95.exe

License=<Título>
{
Texto1
Texto2

}

Mostrar el texto especificado en la página de licencia antes de empezar a descomprimir. El formato del texto puede contener caracterres HTML para aplicar formato.
License=End user license agreement
{
All copyrights to RAR are exclusively owned by the author.
This program is shareware. Anyone may use this software during a test period.
Following this test period, you MUST register.
}

Overwrite=[n]
Por defecto vale 0, y significa que el usuario es preguntado antes de sobreescribir archivos existentes. Si vale 1 todos los archivos se sobreescribirán sin preguntar, y si vale 2, ninguno lo hará.
Overwrite=1

Path=<Ruta>
Establece la ruta por defecto donde se descomprimirán los archivos.
Path=C:\

Presetup=<Programa>
Ejecuta el programa especificado antes de proceder con la descompresión
Presetup=uninstall.exe /clean

SavePath
Almacena en el registro el valor que ha elegido el usuario para extraer los archivos, de forma que en siguientes ejecuciones, pueda ser leído, y preseleccionarlo como por defecto.
SavePath

Setup=<Programa>
Ejecuta un programa al finalizar la descompresión.
Setup=setup.exe

Shortcut=<TipoDest>,<NombreOrigen>,<CarpetaDestino>,<Descripción>,<NombreAcceso>
Crea un acceso directo a un archivo. En éste caso TipoDest es una letra que representa las siguientes ubicaciones para el acceso directo:
– D: Escritorio
– S: Menú inicio
– P: Menú inicio/Programas
– T: Menú inicio/Inicio
NombreOrigen es el nombre del archivo del que querremos crear el acceso directo.
CarpetaDestino es el nombre de la carpeta donde querremos crear el acceso directo.
Descripción es el texto descriptivo del acceso directo.
NombreAcceso es el nombre del archivo .lnk que se creará.
Shortcut=D, winrar.exe, WinRAR, "WinRAR executable file", "WinRAR archiver"

Silent[=Param]
Si Param vale 1 no se mostrará el diálogo de inicio ni el de progreso. Si vale 2 solamente el de inicio se omite.
Silent=2

TempMode=[Pregunta][,Título]
Si se establece TempMode, todos los archivos se extrarán a una carpeta temporal, y se eliminarán una vez se haya ejecutado el programa especificado en Setup.
Si se establecen Pregunta y Título, se mostrará un MessageBox preguntando al usuario.
TempMode=Do you wish to continue installation of Calculator 3.05?, Calculator setup

Text=<Cadena>
o
Text
{
Cadena1
Cadena2

}

Añade el texto especificado al cuadro de texto de log en la ventana de progreso. Igual que con License, se soporta HTML.
Text=Here is my new program

Title=<Título>
Establece el título de la ventana de descompresión.
Title=Calculator, version 3.05


SFX con WinRAR

4 comentarios en “SFX con WinRAR”

  1. Javier Gutiérrez Chamorro (Guti)

    Realmente son capacidades que llevan ahí mucho tiempo Manuel, pero que muy pocos conocen, y aún menos usan. Supongo que lo de escribir comandos, es algo que causa rechazo, pero como muestro, es super-sencillo.

  2. Hola Javier muy buena explicación! Lo que no entiendo es como se arranque de cero para elegir un directorio y que ese directorio termine siendo un .exe de SFX, mediante el metodo linea de comando -sfx, parametrando todas sus opciones, lo que mas o menos me pareció es que se pasa la linea de comando por ejemplo que esta en el manual:
    WinRAR a -sfx -v360 -s Games

    Donde
    |WinRAR | a | -sfx | -v360 |-s Games |
    |Programa | Comando |Parametro | ????? | ??????? |

    Podrías citar un ejemplo donde Tenemos una carpeta c:\Prueba y queremos que su resultado (todo su contenido) sea un .exe auto ejecutable, pidiendo una contraseña (establecida por nosotros), sobrescribiendo todo en modo silent y al terminar que ejecute un archivo .exe especifico puediendo ser Instalador.exe.
    Como veras llego mas o menos al programa comando y parámetro pero después ya me quedo en eso.
    Gracias!

  3. Javier Gutiérrez Chamorro (Guti)

    Gracias por tu mensaje Jorge. El proceso que haces por linea de comandos es el correcto. Sin embargo te falta la parte del script, que no se hace por linea de comandos, sino incluyendo un comentario en el archivo.

    Un saludo.

Deja un comentario