2017-02-08 40 views
1

Я пытаюсь создать zip-файл, содержащий, среди прочих вещей моего проекта Java, .NET x64 EXE + его манифест + зависимость от DLL. Похоже, плагин сборки maven повреждает EXE и DLL. На самом деле, если я попытаюсь выполнить файл после извлечения, я получаю «Это приложение не может работать на этом ПК» (недействительное приложение x64 для Windows), но если я копирую исходные файлы, они работают нормально.Плагины сборки Maven corrupts exe dll

Я пытался использовать Google для решения без успеха. Я что-то пропустил в файлах maven?

Plugin декларация в pom.xml является:

<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-assembly-plugin</artifactId> 
    <configuration> 
     <descriptors> 
      <descriptor>src/main/assembly/windows.xml</descriptor> 
     </descriptors> 
    </configuration> 
    <executions> 
     <execution> 
      <id>assembly</id> 
      <phase>package</phase> 
      <goals> 
       <goal>single</goal> 
      </goals> 
      <configuration> 
       <appendAssemblyId>false</appendAssemblyId> 
       <finalName>${bundle.name}</finalName> 
      </configuration> 
     </execution> 
    </executions> 
</plugin> 

пока windows.xml содержание:

<?xml version="1.0"?> 
<assembly 
    xmlns="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.3" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.3 http://maven.apache.org/xsd/assembly-1.1.3.xsd"> 
    <id>windows</id> 

    <formats> 
    <format>zip</format> 
    </formats> 

    <files> 
    <file> 
     <source>${launcher.dir}/GetMachineId.exe</source> 
     <outputDirectory>bin/utils</outputDirectory> 
     <destName>GetMachineId.exe</destName> 
    </file> 
    <file> 
     <source>${launcher.dir}/GetMachineId.exe.config</source> 
     <outputDirectory>bin/utils</outputDirectory> 
     <destName>GetMachineId.exe.config</destName> 
    </file> 
    <file> 
     <source>${launcher.dir}/MessagingToolkit.QRCode.dll</source> 
     <outputDirectory>bin/utils</outputDirectory> 
     <destName>MessagingToolkit.QRCode.dll</destName> 
    </file> 
    </files> 
</assembly> 
+0

Можете ли вы поделиться всем исключением? – user3272686

+0

Из средств просмотра событий, журналов Windows> Приложение: «Программа или функция» \ ?? \

\ GetMachineId.exe не может запускаться или запускаться из-за несовместимости с 64-разрядными версиями Windows. Обратитесь к поставщику программного обеспечения, чтобы узнать, доступна версия совместимой с Windows. '(source: Wow64 Emulation Layer) .Если я заменил GetMachineId.exe исходным файлом и повторил попытку, я получаю сообщение об ошибке командной строки Microsoft .NET Framework' ... BadImageFormatException: не удалось загрузить файл или сборка 'MessagingToolkit.QRCode ... ' – conteit86

ответ

0

Найдено вопрос.

Я фактически использовал также maven-resources-plugin на ${launcher.dir} с фильтрацией.

Исключая бинарные файлы из фильтрации, решила проблему.