Fecha y Hora

contadores web relojes blogs

domingo, 6 de febrero de 2011

Crear autoextraibles (SFX Avanzado) 7zip



Un archivo SFX es un fichero comprimido convertido en un sólo ejecutable independiente, que se encargará (sin necesidad de un programa compresor externo) de descomprimirse a sí mismo.
Varios compresores conocidos como winrar o winzip son capaces de crear ficheros auto-extraibles (SFX), incluso una utilidad poco conocida de Windows llamadaiexpress permite crearlos de una forma sencilla y rápida, sin embargo, yo voy a hablar de como crearlos con 7zip por varias razones:
  • Licencia: Aplicaciones como Winrar o winzip son privadas, mientras que 7zip es un programa open source.
  • Compresión: El ratio de compresión del 7z suele ser mucho mejor que el de los rarzip o cab por lo general.
  • Personalización: 7zip ofrece (a través de un módulo) una potencia de personalización bastante interesante.



1. Compresión y empaquetado del contenido


Como dijimos antes, vamos a realizar una compresión con el programa 7zip, un compresor open source. Así pues, lo descargamos y lo instalamos.
Una vez instalado, seleccionamos todos los archivos de nuestra carpeta Prueba y con el botón derecho elegimos Añadir al archivo...
Lo comprimimos en formato 7z, compresión ultra (máxima compresión) y tipoLZMA. Obtendremos el fichero comprimido prueba.7z.

2. Preparación del auto-extraible SFX

Para la creación del fichero auto-extraible necesitaremos tres ficheros:
  • contenido.7z: El fichero con el contenido del juego o programa. En nuestro caso el anterior sky.7z.
  • config.txt: Un fichero script con la información acerca del comportamiento del SFX.
  • 7zsd.sfx: Módulo modificado SFX del 7zip.
Para la creación del SFX vamos a utilizar el módulo 7zSFX de Oleg Scherbakov. Nos descargamos el módulo: 7zSD.sfx.
Creamos un fichero de texto llamado config.txt, que actuará como script de personalización de SFX y escribimos lo siguiente:
;!@Install@!UTF-8!
InstallPath="%TEMP%\prueba"
GUIFlags="32"
ExtractTitle="Beneath a Steel Sky"
ExtractDialogText="Cargando ..."
;!@InstallEnd@!
El fichero debe guardarse con formato unicode (UTF8). Veamos por partes las opciones utilizadas:
  • InstallPath=: Ruta donde se descomprime el contenido del auto-extraíble. Utilizamos la variable del sistema %TEMP% (funciona en Windows 2000, XP, Vista...) para que descomprima todo el contenido en una carpeta en la ubicación de los ficheros temporales. Se podría haber elegido otro lugar, pero este es interesante para que aún guardando el fichero portable en un CD o DVD, siga funcionando perfectamente y salvando las partidas guardadas en nuestro disco duro.
  • GUIFlags=: Opciones especiales. 32 muestra el icono en la ventana, 8usa estilos de XP, 4 muestra el porcentaje numérico debajo de la barra de progreso, etc...
  • ExtractTitle=: Sirve para especificar el título de la ventana de extracción.
  • ExtractDialogText=: Muestra un texto en la ventana de extracción.
  • ExecuteFile=: Fichero a ejecutar una vez termina la extracción de datos.
  • ExecuteParameters=: Parámetros de la ejecución anterior. En nuestro caso, no muestra la ventana de debug del DosBox.
Sin embargo, se pueden utilizar más opciones y parámetros interesantes como podría ser mensajes de ayuda previos, un botón con una cuenta atrás, personalizar las carpetas de extracción de datos, crear iconos de programas o accesos directos, etc...

3. Cambio del icono del portable

De forma opcional, podemos cambiar el icono final del fichero portable SFX. Para ello, como aún no se puede hacer de forma automática, podemos utilizar el programa Resource Hacker, y mediante él, abrir el anteriormente mencionado fichero 7zsd.sfx.
Desplegamos la carpeta Icon y la carpeta 1, marcamos el 0 y con botón derecho seleccionamos Replace Resource.... Ahora marcamos la opción Open file with new icon... y elegimos el icono que creamos anteriormente.
Pulsamos Replace modificando el icono, y guardamos la copia sobrescribiendo el fichero 7zsd.sfx en el menú File / Save.

4. Creación del fichero SFX final

Nos queda tan sólo el último paso. Hacer una copia binaria de los 3 ficheros necesarios. Para ello, abrimos una terminal del sistema operativo (Inicio / Ejecutar / cmd) y accedemos a la carpeta Sky.
Una vez allí, escribimos:
copy /b 7zsd.sfx + config.txt + contenido.7z sfx.exe
Eso hará una copia binaria de los tres ficheros, creando el SFX auto-extraíblesfx.exe final, listo para ser ejecutado desde memorias USB, CD, DVD, etc...
Como paso opcional, se puede utilizar un programa como UPX para reducir el tamaño de los ficheros ejecutables.
UPX es un compresor de ficheros EXE «al vuelo», es decir, no al estilo de los compresores tradicionales como el ZIP, sino que reducen el tamaño de los ejecutables, sin necesidad de volverlos a descomprimir.
upx -9 dosbox.exe
Pueden utilizarse para reducir tamaño de ficheros EXE (del contenido del paquete 7z) o del fichero final, ya que también reduce tamaño de los ejecutables PE de Windows. 






1 comentario:

  1. Que mal que no comenten nada seve que pusiste mucha dedicacion felicidades https://www.facebook.com/YerkoLobo

    ResponderEliminar