2011-06-09 55 views
11

Tengo las siguientes instrucciones en mi build.xml, y recibo la siguiente excepción.Excepción en Launch4j

launch4j: net.sf.launch4j.ExecException: Exec falló (1): C: \ Program Files \ Launch4j \ bin \ windres.exe --preprocessor = tipo de -J rc -O coff -F pE-i386 C: \ Windows \ Temp \ launch4j2603642297702639520rc C: \ Windows \ Temp \ launch4j1179691608441365102o

Ésta es mi escritura de la estructura:

<project basedir="." default="build" name="Bienvenue"> 
    <!-- Crée le fichier d'installation BienvenueSetup.exe --> 
    <target name="build"> 
    <!-- Création du dossier classes --> 
    <mkdir dir="classes"/> 

    <!-- Compilation des classes du programme --> 
    <javac srcdir="src" destdir="classes" /> 

    <!-- Création du dossier install/lib --> 
    <mkdir dir="install/lib"/> 

    <!-- Création du fichier Bienvenue.jar --> 
    <jar destfile="install/lib/Bienvenue.jar" basedir="classes"/> 

    <!-- Suppression du dossier classes --> 
    <delete dir="classes"/> 

    <!-- Copie du JRE dans le dossier install/jre6 en excluant les fichiers 
    inutiles mentionnés dans le fichier README.TXT du JRE 
    (attention il faut garder le fichier bin/javaw.exe du JRE) --> 
    <copy todir="install/jre6"> 
    <fileset dir="C:\Program Files\Java\jre6"> 
    <include name="*"/> 
    <include name="bin/**"/> 
    <include name="lib/**"/> 
    <exclude name="lib/charsets.jar"/> 
    <exclude name="lib/ext/sunjce_provider.jar"/> 
    <exclude name="bin/rmid.exe"/> 
    <exclude name="bin/rmiregistry.exe"/> 
    <exclude name="bin/tnameserv.exe"/> 
    <exclude name="bin/keytool.exe"/> 
    <exclude name="bin/kinit.exe"/> 
    <exclude name="bin/klist.exe"/> 
    <exclude name="bin/ktab.exe"/> 
    <exclude name="bin/policytool.exe"/> 
    <exclude name="bin/orbd.exe"/> 
    <exclude name="bin/servertool.exe"/> 
    <exclude name="bin/java.exe"/> 
    <exclude name="bin/javaws.exe"/> 
    <exclude name="bin/javacpl.exe"/> 
    <exclude name="bin/jucheck.exe"/> 
    <exclude name="bin/jusched.exe"/> 
    <exclude name="bin/wsdetect.dll"/> 
    <exclude name="bin/npjava*.dll"/> 
    <exclude name="bin/npoji610.dll"/> 
    <exclude name="bin/regutils.dll"/> 
    <exclude name="bin/axbridge.dll"/> 
    <exclude name="bin/deploy.dll"/> 
    <exclude name="bin/jpicom.dll"/> 
    <exclude name="bin/javacpl.cpl"/> 
    <exclude name="bin/jpiexp.dll"/> 
    <exclude name="bin/jpinscp.dll"/> 
    <exclude name="bin/jpioji.dll"/> 
    <exclude name="bin/jpishare.dll"/> 
    <exclude name="lib/deploy.jar"/> 
    <exclude name="lib/plugin.jar"/> 
    <exclude name="lib/deploy/messages*.properties"/> 
    <exclude name="lib/deploy/splash.jpg"/> 
    </fileset> 
    </copy > 

    <!-- Création du fichier Bienvenue.exe avec Launch4j --> 
    <exec executable="C:\Program Files\Launch4j\launch4jc.exe"> 
    <arg value="${basedir}\installerLaunch4j.xml"/> 
    </exec > 

    <!-- Création du fichier BienvenueSetup.exe avec Inno Setup --> 
    <exec executable="C:\Program Files\Inno Setup 5\ISCC.exe"> 
    <arg value="${basedir}\installerInnoSetup.iss"/> 
    </exec > 

    <!-- Suppression du dossier install --> 
    <delete dir="install/"/> 

    <echo message="BienvenueSetup.exe ready"/> 
    </target > 
    </project > 

¿alguien puede ayudar a averiguar lo que estoy haciendo mal ?

+0

¿Cuál es la excepción? – Dave

+0

launch4j: net.sf.launch4j.ExecException: error de Exec (1): C: \ Archivos de programa \ Launch4j \ bin \ windres.exe --preprocessor = tipo -J rc -O coff -F pe-i386 C: \ Windows \ TEMP \ launch4j2603642297702639520rc C: \ Windows \ TEMP \ launch4j1179691608441365102o – Manikandan

+0

¿Qué sistema operativo, y qué usuario ha iniciado sesión como – Woot4Moo

Respuesta

3

El documentation for Launch4j dice a hacerlo de esta manera:

<property name="launch4j.dir" location="< your launch4j directory >" /> 

<taskdef name="launch4j" 
    classname="net.sf.launch4j.ant.Launch4jTask" 
    classpath="${launch4j.dir}/launch4j.jar:${launch4j.dir}/lib/xstream.jar" /> 

<launch4j configFile="./l4j/yourLaunch4jSpecFile.xml" /> 

He utilizado este método durante años sin problemas. FWIW, mi ruta incluye "Archivos de programa" con un espacio, que no ha creado ningún problema.

1

He tenido problemas al ejecutar dichas herramientas cuando había espacios en las rutas. ¿Puedes intentar ejecutar todo desde rutas que no tienen espacios en ellas?

6

Muestra tu configuración installerLaunch4j.xml por favor. Mi problema de caso estaba en el formato de ícono incorrecto (me usaron png en su lugar ico).

+0

sí, cambie el ícono del formato png a ico, solucionado, el registro de excepción es: net.sf.launch4j.ExecException: Exec failed (1): C: \ Maven_repository \ net \ sf \ launch4j \ launch4j \ 3.8.0 \ launch4j-3.8.0-workdir-win32 \ bin \ windres.exe --preprocessor = tipo -J rc -O coff -F pe-i386 C: \ Users \ ahu \ AppData \ Local \ Temp \ launch4j4966396877810588589rc C: \ Users \ ahu \ AppData \ Local \ Temp \ launch4j464671497321610327o \t en net.sf.launch4j.Util.exec (Util.java:156) \t en la red.sf.launch4j.Cmd.exec (Builder.java:212) \t en net.sf.launch4j.Builder.build (Builder.java:96) –

0

Tuve la misma excepción que se informó cuando intenté usar la tarea Ant para Launch4j. Al invocarlo con un archivo de configuración XML externo funcionó perfectamente, invocarlo utilizando el elemento <config> no funcionó.

Creé toda la configuración dentro de mi Ant build XML basado en el archivo de configuración Launch4j externo, usé prueba y error para determinar qué se debe especificar como un atributo y qué jerarquía de elementos para la tarea Ant. Al hacer esto, también especifiqué todos los valores de cadena vacía del XML, como los atributos errTitle="" y cmdLine="". NO HAGAS ESTO. Simplemente omite esos.

Un ejemplo basado en mi proyecto de trabajo:

<target name="launch4j-wrap" depends="init"> 
    <property name="launch4j.dir" location="C:/Program Files (x86)/Launch4j" /> 
    <property name="temp.install.dir.name" value="ExampleApp_installDir"/> 
    <property name="temp.install.dir" value="${dist.dir}/${temp.install.dir.name}/bin" /> 
    <property name="prod.version" value="1.0.0.0"/> 
    <property name="prod.copyright" value="2010-2015"/> 

    <taskdef name="launch4j" 
      classname="net.sf.launch4j.ant.Launch4jTask" 
      classpath="${launch4j.dir}/launch4j.jar:${launch4j.dir}/lib/xstream.jar" /> 

    <launch4j> 
     <config headerType="gui" outfile="${temp.install.dir}/ExampleApp.exe" 
       dontWrapJar="false" jarPath="${temp.install.dir}/ExampleApp.jar" 
       chdir="." priority="normal" 
       downloadUrl="http://java.com/download" 
       stayAlive="false" restartOnCrash="false" 
       icon="path/to/ExampleApp.ico"> 
      <classPath mainClass="org.example.ExampleApp"> 
       <cp>some-jar.jar</cp> 
       <cp>some-other-jar.jar</cp> 
       <!-- ... --> 
      </classPath> 
      <jre bundledJre64Bit="false" bundledJreAsFallback="false" 
       minVersion="1.7.0" maxVersion="" jdkPreference="preferJre" 
       runtimeBits="64/32" maxHeapSize="1024" /> 
      <versionInfo productVersion="${prod.version}" 
         txtProductVersion="${prod.version}" 
         fileVersion="${prod.version}" 
         txtFileVersion="${prod.version}" 
         copyright="${prod.copyright}" 
         fileDescription="Launches Example App" 
         productName="Example App" 
         companyName="Example Inc." 
         internalName="Flawless Unicorn" 
         originalFilename="ExampleApp.exe" /> 
     </config> 
    </launch4j> 

    <!-- 
    <launch4j configFile="path/to/my/external-config.xml" /> 
    --> 

</target> 
Cuestiones relacionadas