viernes, 23 de marzo de 2012

Pasar de .Jar a .Exe

Bien amigos, vamos a explicar como pasar un archivo .jar a .exe.

Lo primero de todo decir, que un archivo .jar NUNCA será un archivo .exe, si no que se enmascara, pero seguirá necesitando de una máquina virtual (JVM) para poder ejecutarse. También decir que al ser pasado a .exe pierde uno de sus fuertes, que es el de ejecutarse en cualquier OS con una máquina virtual.



Bien, dicho esto, necesitaremos 2 aplicaciones para realizar este cambio:

launch4j

Install Creator Pro

Este último es de pago, yo comprendo los tiempos que corren y tal, pero no voy a hacer ninguna alusión a la piratería, seguramente si buscáis bien por Internet encontréis alguna versión full....

Bueno, comencemos instalando launch4j, es muy fácil, pulsar a todo "siguiente". Una vez instalado lo ejecutáis y saldrá la interfaz principal:


Estamos en la pestaña BASIC, aquí podéis observar que hay 3 opciones marcadas con asterisco, esas son obligatorias rellenarlas:

En la opción Output file le indicamos donde queremos guardar nuestro archivo .exe, es muy importante que al poner el nombre del archivo le añadáis al final el .exe, "Archivo.exe"


Ahora le tenemos que indicar donde está nuestro archivo .jar:


El siguiente asterisco (Java download URL), lo dejáis como está, ya que detectará si te falta el JRE para correr la aplicación y te mandará a la pagina de descarga....muy útil.

*Si deseas arle permisos de administrador a vuestro .exe, por favor lea el final del post antes de seguir leyendo.

Pasamos a la pestaña JRE


Le tenemos que indicar la ruta donde está el JRE del JDK, vais a donde lo tengáis, y copiáis la ruta, posteriormente indicáis el JRE mínimo y máximo.

Una vez rellenado todo pulsamos el botón  y os aparecerá una ventana como esta:


Poneis el nombre de vuestro archivo con la extensión .xml y guardáis.

Si todo ha salido bien, os saldrá un log como este:


Ya tenemos creado nuestro .exe, pero aún queda un poco soso. Aunque el launch4j permite incluir un icono para la aplicación, mensajes de información, con la versión del juego e información sobre el programador, incluso añadirle un screen mientras se carga la aplicación, yo prefiero utilizar Install Creator Pro ya que permite el uso de de seguir la instalación con las ventanas de "siguiente", que es lo que todos buscamos cuando queremos pasar de un .jar a un .exe.

Antes de instalar "Install Creator", vamos a tomar el archivo .exe creado con launch4j, lo metemos en una carpeta aparte, y nos descargamos un icono para nuestra aplicación en http://icones.pro/, pero lo que nos descargamos es un archivo con extensión .png, y lo que queremos es un archivo con extensión .ico, bien para ello nos dirigimos a http://www.convertico.com/ donde nos pasará nuestra extensión .png y la convertirá en extensión .ico. Una vez tengamos el archivo .ico lo guardamos en la misma carpeta que nuestro archivo .exe.


Instalamos "Install Creator Pro" y lo abrimos:


Bien vayamos por partes, estamos en la pestaña "Archivos" y lo primero que tenemos que hacer es indicarle donde está nuestro archivo .exe en el apartado "Directorios de origen":


Una vez elegido la ruta de nuestro archivo, nos aparecerá el contenido del mismo en el apartado "Archivos":


Posteriormente os dirigís a "Opciones de Archivo", y en la pestaña de "Menú Inicio", ponéis:
  1. Nombre de la carpeta (En mi caso Bloc)
  2. Nombre del archivo (En mi caso BlocNotas)
  3. Icono Aplicación 


Ahora nos vamos a la pestaña de "Acceso Directo" y como antes agregamos:
  1. Nombre del Acceso directo (En mi caso Bloc)
  2. Agregamos el icono para el acceso directo.
Nos dirigimos a la pestaña "Varios" y marcamos 2 opciones:
  1. "No instalar/desinstalar si el archivo está en uso"
  2. "No instalar si Ya hay un archivo instalado con el mismo nombre"
Bien, ya tenemos todas las opciones elegidas en la pestaña "Archivo". Como habréis observado, hay muchas opciones que podemos elegir, cada cual, que elija la opción que más se le ajuste a lo que busca.


Pasamos a la pestaña siguiente "Textos del asistente". En esta pestaña es donde elegimos el texto a mostrar en cada una de las ventanas de seguimiento de la instalación


Como veis, arriba a la derecha nos aparecen las paginas que se mostrarán a lo largo de la instalación, podemos seleccionar una de ellas y podemos editarla completamente pulsando el botón "Editar"....Fuente, tamaño, distribución, imagen de fondo.....yo en este tutorial, no voy a hacer ningún cambio importante, ya que eso va a gusto de cada uno, una vez tengamos editado la página (si se desea), pulsamos el botón "previsualizar", que nos mostrará como va a quedar la página.


Si vais pinchando en las diferentes páginas, abajo en el apartado "Textos", nos aparece el texto que contendrá cada ventana, si en el texto os aparece algo como esto "<Ninguno>", quiere decir que no tenéis texto asignado a esa ventana, y no se mostrará en la guía de instalación para ello debéis pincharle encima a  "<Ninguno>" y se os abrirá una ventana donde os permitirá ingresar un texto:



Una cosa más que agregar en este apartado es donde pone "Reemplazar macro #title por:", borráis lo que contenga y ponéis el nombre que queréis que salga a lo largo de la instalación:


La siguiente pestaña "Ventana" podéis dejarla tal y como está como es mi caso, pero si tenéis ganas de probar diferentes configuraciones, podéis hacerlo sin miedo y ajustarlo a vuestro gusto. Podréis cambiarle el fondo de las ventanas, fuente, el icono del instalador(este se puede poner muy pesado, ya que el icono debe tener unas características especificas, así que yo lo dejo como está para no liar más) etc...y al pulsar el botón previsualizar, podréis ver como se os queda:


En la pestaña de "Opciones" yo sólo modifico el directorio de instalación:



  1. Pinchamos en la flecha a la derecha de la opción "Directorio de Instalación" abriendo el menú que tengo en la imagen, y elegimos "Directorio Archivos de Programas" (Cada cual, puede elegir el directorio que desee).
  2. Posteriormente se nos quedará así: #Program Files#, bien pues nosotros le agregamos "/Nombre de la carpeta (Bloc en mi caso)". Es muy importante que le agreguemos la barra y un nombre, para que nos cree un directorio con ese nombre y nos instale ahí lo que queremos, sino, nos esparramará por todo "Archivos de programas" la instalación de nuestra aplicación. Si pulsáis el botón "Previsualizar", veréis donde os va a instalar vuestra aplicación.
Las siguientes pestañas "Información de la instalación" y "Desinstalador", yo personalmente no las configuro, ya que ya están configuradas predeterminadamente, y no deseo alargar este tutorial mucho más, pero vosotros podéis agregar las opciones que más os interesen.

Pasamos a la pestaña "Crear":




Si todo ha ido bien, pulsamos en la opción "Compresión" y lo ponemos a "Normal" si no lo está, y pulsamos el botón "Crear", os preguntará donde lo queréis guardar, eso es a vuestra elección. Aceptáis, y ya está.

Podéis ir al directorio donde lo creasteis y ejecutarlo. Si habéis seguido los pasos como he ido realizando, os quedará un bonito asistente de instalación de un archivo que empezó siendo un .JAR.

Por último, volver a mencionar, que el archivo no se ha convertido en un .exe, ha sido enmascarado, por tanto deberéis seguir teniendo una JVM para ejecutar el archivo. 

Un saludo

******************************************************************************************************

19/02/2013

Buenas  amigos edito este tema para que podáis crear vuestras aplicaciones con permisos de administrador.

Lo primero que tenéis que hacer es abrir un bloc de notas y poner:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0"> 
  <assemblyIdentity version="1.0.0.0"
     processorArchitecture="X86"
     name="NOMBRe_DEL_PC"
     type="win32"/> 
  <description>NOMBRE_APLICACION</description> 
  <!-- Identify the application security requirements. -->
  <trustInfo xmlns="urn:schemas-microsoft-com:asm.v2">
    <security>
      <requestedPrivileges>
        <requestedExecutionLevel
          level="requireAdministrator"
          uiAccess="false"/>
        </requestedPrivileges>
       </security>
  </trustInfo>
</assembly>

*Donde pone name ponéis el nombre el equipo y donde pone NOMBRE_ APLICACIÓN ponéis el nombre de vuestra aplicación sin extensión (si se llama "loquesea.exe", ponéis solo "loquesea").

Lo guardáis con el siguiente formato: loquesea.exe.manifest OJO!!! no le pongáis al final .txt que lo jodéis todo.

Una vez guardado os vais a launch4j y cuando estéis creando vuestro .exe, cargáis el archivo en el apartado Manifest:


Una vez hecho seguís haciendo los pasos para crear el .exe y al final del proceso, cuando el archivo se cree, ya os tiene que salir el símbolo de Ejecutar como administrador.

Gracias a Alberto por sus dudas y que por consiguiente el hecho de animarme a realizar este apartado.

Un saludo.


22 comentarios:

  1. Buenas tarde, ante todo muchas gracias por el tuto, una dudad que me surge, ¿Hay alguna manera de configurar el ejecutable para que te aparezca en el icono el mini icono de ejecutar como administrador?

    Un saludo.

    ResponderEliminar
  2. Muy buenas, respecto a tu pregunta, yo he conseguido realizar un .exe con el mini-icono de administrador. Lo que hice fue ejecutar mi IDE (Eclipse) como administrador, realizando de este modo la compilación del .jar ejecutable como administrador, posteriormente ejecute las 2 aplicaciones de arriba como administrador y creando el .exe como administrador, de esta forma a mi me aparece mi .exe con el símbolo de "ejecutar como administrador". Suerte, y dime si te funciono.

    ResponderEliminar
    Respuestas
    1. Buenas, gracias por responder, el instalable que genera el install creator si que me muestra el icono de ejecutar como administrador, el problema viene del .exe, cuando tengo instalada la aplicación la abro y el problema es que utilizo accesos a bases de datos y al estar en la carpeta de archivos de programa no me deja acceder.

      Seguiré investigando, muchas gracias!

      Eliminar
    2. Buenas de nuevo, en vez de realizar el .exe con launch4j, saltate ese paso y haz el instalable con el .jar en vez del .exe...de todas formas la aplicación que he realizado hace accesos a los archivos y a los componentes de windows ( pronto la subiré aquí) y también realiza chequeos de disco con lo que necesito permisos de administrador, y lo solucione compilando con el eclipse ejecutándose en modo administrador...prueba a crear la carpeta de instalación en C: en vez de en C:\archivos de programas. Un saludo y suerte.

      Bartolomé Abellán.

      Eliminar
    3. Buenas ya lo conseguí, lo que hice fue al crear el ejecutable con launch4j en el campo manifest, añadir un archivo con el nombre de mi app.manifest y que tiene el siguiente contenido:












      Muchas gracias por la ayuda!

      Eliminar
    4. Parece que no se ve el xml, dejo el enlace donde lo vi: http://community.clickteam.com/showthread.php?t=79136

      Saludos!

      Eliminar
  3. Fantástico, me alegro de que lo hayas conseguido, normalmente no suele crear tantos problemas el ejecutar como administrador. Felicidades.

    Me he metido en el enlace que facilitas, porque ya veo que no te deja mostrar el contenido del xml, y agregaré un mini-tuto para que todos puedan hacerlo de esta manera.

    Muchas gracias.

    Un saludo ;)

    ResponderEliminar
  4. Se puede controlar que una aplicacion no se instale a menos que este instalada la makina virtual?????????????
    Gracias

    ResponderEliminar
    Respuestas
    1. Buenas, siento la tardanza. Cuando realizas el paso de jar a exe en Launch4j, hay una opción "Java Download URL" con una dirección web, en caso de no tener una JVM nos mandará a la web para descargar. Esta acción permite realizar el asistente de instalación y solo nos mandará a la web en caso de ejecutar y no existir. Si lo que quieres es comprobar antes de instalar, en el "Install Creator", en la pestaña "opciones" hay un apartado que pone "no instalar si..." bien, ahí puedes probar a poner la url de la JVM tal como "C:\Program Files (x86)\Java\jr7" que es donde yo la tengo, y probar suerte, ya que nunca he llegado a utilizar esa opción, siempre utilizo la de Launch4j. Mucha suerte, y comenta si te funcionó o era lo que pedías.

      Un saludo

      Eliminar
  5. Si quieren un programa similar a este les recomiendo que usen
    Demo dakota 1.0 lo podeis descargar desde mygnet.net codigos java
    jajaja es muy bueno

    ResponderEliminar
    Respuestas
    1. para cualquier consulta mi correo es eclipseconsol@gmail.com
      ese demo fue creado por mi partiendo de launch4j
      si tienen otras sugerencia para agregarle al programa no duden en decirmelo

      Eliminar
    2. Buenas, me gustaría que pusieses algo más detallado de tu programa, podrías hacer una entrada en el foro que tengo alojado al blog y explicar como funciona y que opciones tiene. Si funciona bien puedo hacerle una entrada en este blog.

      Un saludo.

      Eliminar
  6. Miren ya subi la version mas estable de Dakota 1.0
    La pueden descargar desde:

    http://mygnet.net/codigos/java/archivos_y_directorios/dakota_1_dot_0.3684

    Es muy facil de usar por que se parece a launch4j ya que de ahi saque la idea para crear Dakota.

    ResponderEliminar
  7. Hola yo cree un ejecutable con launch4j, el .jar funciona perfectamente pero al pasar a .exe no, osea no abre la aplicación, cual seria el problema. Gracias

    ResponderEliminar
    Respuestas
    1. Buenas Guillermo, respecto a tu problema, veamos:

      1. Asegurate de que tu .jar funciona despues de exportar como .jar ejecutable, me ha pasado alguna vez que al ejecutar un programa con eclipse me funciona, y al exportarlo deja de funcionar. Si no es tu caso, ni caso.
      2. Asegurate de que, si haces accesos a archivos del pc o de algún servidor, le das correctamente los permisos como administrador.
      3. Asegurate de que al crear tu archivo .exe con launch4j tienes todos los datos en su sitio correctamente, alguna vez me pasó y es dar vueltas por un simple descuido.

      Si ninguna de estas 3 directrices pudiesen solucionar tu problema, te invito a que hagas una mejor descripción de las funciones que pueda hacer tu programa, ya que realmente fuera de las 3 directrices que te he indicado, es muy raro que falle, suele ser muy fiable.

      Suerte y ya me comentas. Un saludo

      Eliminar
  8. Hola buenas tardes disculpa hago el .exe y todo corre muy bien en mi computadora , lo quiero pasar a otra el problema esque me jala bien pero las imagenes no me las muestra , ya probre cambiando el destino ala de la otra computadora, poniendo als imagenes directamente en C , en el proyecto , y nada no se si me puedas ayudar gracias

    ResponderEliminar
    Respuestas
    1. Buenas tardes Yuliana, la duda que me corre por tu problema es: ¿has probado a ejecutarlo simplemente como .jar y probar que jale? ¿o solo te pasa cuando lo pasas a .exe? Es posible que la primera sea una pregunta estúpida y que por supuesto hayas probado, pero es raro que te pase esto solo al crear el .exe. Si ejecutas el .jar en vez del .exe y tampoco te funciona, te invito a que me mandes un correo con el trozo de código para la imagen y te ayudo en lo que pueda.

      Un saludo.

      Eliminar
  9. Excelente información muchas gracias :D

    ResponderEliminar
  10. Buenas, excelente ese tutorial, mi pregunta es la siguiente, ojala me lo puedan aclarar. Una vez que se realizo el enmascaramineto de JAR a EXE, existe alguna manera de convertir ese EXE a JAR nuevamente ?

    ResponderEliminar
  11. Hola. Tengo un pequeño problemita. Mi aplicación debe funcionar en la computadora de muchos clientes, por lo que te pregunto.. Hay alguna forma de crear un lanzador que sea independiente de la dirección dónde está instalada la máquina virtual de Java en la misma computadora del cliente. Es decir, yo creo el lanzador poniendo el path local del jre en mi pc en launch4j, pero cuando pruebo el lanzador ya creado en otra pc, me tira un error porque no encuentra el jre instalado en esa pc porque tiene otro path. Me explico?

    Gracias de antemano! Muy bueno el blog...

    ResponderEliminar
  12. Este comentario ha sido eliminado por el autor.

    ResponderEliminar
  13. Este comentario ha sido eliminado por el autor.

    ResponderEliminar