Manual:

Como crear un programa desatendido

Bienvenidos a este tutorial.

Aquí os enseñaré como crear un programa totalmente desatendido, como los de los WPI (Windows Post Install), que traen la mayoría de los Windows desatendidos (modificados). En nuestro caso lo haremos para que podamos llevarlos en el USB, a casa de un cliente, o para nuestro uso personal, y sin darle a un clic cuando lo ejecutemos.

Herramientas necesarias:

- NSIS (Actualmente la versión 2.9)
- Universal Silent Switch Finder. (1.4.1.1)
- IconSucker

| Descargar Herramientas |

Supongo que tendremos instalado el NSIS en nuestro Sistema, ya que no es el primer tutorial que hago con esta gran herramienta, que en realidad sirve de mucho.

Una vez listo, creamos una carpeta nueva donde guardaremos este proyecto, y copiaremos el programa que queramos convertir en desatendido dentro del mismo y lo llamaremos installer.exe. (En mi caso estoy utilizando el K-Lite Code Pack, para hacer la prueba).



Ahora, si queremos que nuestro programa que vayamos a hacer desatendido tenga el mismo icono, instalamos el Icon Sucker, que tenemos descargado y se lo extraemos con unos pasos simples.



Le damos clic derecho al icono de 32x32 a 8 bpp, lo guardamos (Sava As…) en la misma carpeta en donde tenemos nuestro programa que queremos desatender con el nombre de icon.ico y una vez hecho esto, ejecutamos el Universal Silent Switch Finder que tenemos y hacemos lo siguiente.



Y si tenemos suerte, nos saldrá algo como esto.



Ok, ahora crearemos en la misma carpeta un archivo .nsi con el nombre que queráis. (En mi caso le he puesto source.nsi). Lo abrimos con cualquier editor de texto, y copiamos el siguiente código fuente.

Código:
OutFile "programa_desatendido.exe"
Icon "icon.ico"

SetCompressor /SOLID lzma

SilentInstall silent

Section "Copy"
SetOutPath $TEMP
File "installer.exe"
SectionEnd

Section "Install"
Exec "installer.exe /VERYSILENT /SUPPRESSMSGBOXES /NORESTART /SP-"
SectionEnd

Section "Clear"
Delete "$TEMP\*.*"
SectionEnd

OutFile "programa_desatendido.exe"
Aquí indicamos el archivo final que nos creará cuando compilemos el Script.

Icon "icon.ico"
El icono que queremos ponerle a nuestro programa desatendido.

SetCompressor /SOLID lzma
Aquí podríamos escoger el tipo de compresión que trae el NSIS, personalmente prefiero este (lzma solid) ya que te lo comprime bastante bien, y más si vamos a hacer programas desatendidos, ya veremos porque.

SilentInstall silent
Aquí le estamos indicando que nos haga una instalación silenciosa, o sea, que no nos muestre el instalador por defecto del NSIS. (Esto no quiere decir que cuando escribamos este código, nos hará la instalación silenciosa de cualquier programa).

Section "Copy"
SetOutPath $TEMP
File "installer.exe"
SectionEnd

Aquí le estamos indicando donde queremos que se copie el installer.exe con la variable $TEMP que se refiere a los archivos temporales de Windows (Windows\Temp).

Section "Install"
Exec "installer.exe /VERYSILENT /SUPPRESSMSGBOXES /NORESTART /SP-"
SectionEnd

Esto ejecutará el installer.exe y nos hará la instalación silenciosa con el pequeño código que le hemos puesto por detrás que nos había dado el Universal Silent Switch Finder anteriormente, recordad que debe de ir dentro entre comillas, aunque el Silent Switch nos lo dé al revés. O sea, en mi caso me había dado "installer.exe" exe /VERYSILENT /SUPPRESSMSGBOXES /NORESTART /SP-, pero está mal, que si lo ponemos así como está en el código nsi, nos dará un error al compilar por eso debe de ir todo entre comillas.

Section "Clear"
Delete "$TEMP\*.*"
SectionEnd

Aquí abrimos una sección, yo la he llamado “Clear” porque he querido, y lo que hacemos es eliminar todos los archivos temporales que hayamos dejado a lo largo del tiempo también, y sobre todo el programa que habíamos hecho que se copiase ahí mismo.

Una vez hecho todo el código, lo compilamos.

Le damos clic derecho a nuestro código .nsi y le damos a Compile NSIS Script, ahora, tendremos nuestro programa desatendido listo para ejecutar, con el icono que hemos escogido y además de eso, con una compresión bastante buena, como le hemos indicado.

Resultado final



Tampoco es mucha diferencia, por unos KB no pasa nada! xD

Fuente:
DarkSkull