Ответ 1
Показать конфигурацию installerLaunch4j.xml
. У меня была проблема с неправильным значком (я использовал png
вместо ico
).
У меня есть следующие инструкции в моем файле build.xml, и я получаю следующее исключение.
launch4j: net.sf.launch4j.ExecException: Exec failed (1): C:\Program Файлы \Launch4j\bin\windres.exe --preprocessor = type -J rc -O coff -F pe-i386 C:\Windows\TEMP\launch4j2603642297702639520rc C:\Windows\TEMP\launch4j1179691608441365102o
Это моя сборка script:
<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 >
Может ли кто-нибудь помочь мне выяснить, что я делаю неправильно?
Показать конфигурацию installerLaunch4j.xml
. У меня была проблема с неправильным значком (я использовал png
вместо ico
).
Документация для Launch4j говорит, чтобы сделать это следующим образом:
<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" />
Я использовал этот метод в течение многих лет без проблем. FWIW, мой путь включает в себя "Program Files" с пробелом, который не создавал проблем.
У меня были проблемы с запуском таких инструментов, когда в путях были пробелы. Можете ли вы попробовать запустить все из путей, в которых нет пробелов?
Сообщалось об одном и том же исключении, когда я пытался использовать задачу Ant для Launch4j. При вызове с помощью внешнего файла конфигурации XML работала безупречно, вызывая его с помощью элемента <config>
, не работало.
Я создал всю конфигурацию внутри моего XML-сборки Ant на основе внешнего файла конфигурации Launch4j, использовал пробную версию и ошибку, чтобы определить, что должно быть указано как атрибут, и что в качестве иерархии элементов для задачи Ant. Выполняя это, я также указал все пустые строковые значения из XML, такие как атрибуты errTitle=""
и cmdLine=""
. НЕ ДЕЛАЙ ЭТО. Просто опустите их.
Пример, основанный на моем рабочем проекте:
<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>