2015-12-09 2 views
0

Я пытаюсь создать установщик с помощью IzPack. Я пытаюсь выполнить пакетный файл перед установкой.Неверный каталог bat-файла?

install.xml

<izpack:installation version="5.0" 
        xmlns:izpack="http://izpack.org/schema/installation" 
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
        xsi:schemaLocation="http://izpack.org/schema/installation http://izpack.org/schema/5.0/izpack-installation-5.0.xsd"> 


    <guiprefs width="640" height="480" resizable="yes"/> 
    <variables> 
     <variable name="DesktopShortcutCheckboxEnabled" value="true"/> 
    </variables> 

    <locale> 
     <langpack iso3="eng"/> 
    </locale> 

    <resources> 
     <res id="ProcessPanel.Spec.xml" src="ProcessPanel.Spec.xml"/> 
     <res id="shortcutSpec.xml" src="shortcutSpec.xml"/> 
     <res id="LicencePanel.licence" src="License.txt"/> 
     <res id="InfoPanel.info" src="Readme.txt"/> 
    </resources> 

    <panels> 
     <panel classname="HelloPanel"/> 
     <panel classname="ProcessPanel"/> 
     <panel classname="LicencePanel"/> 
     <panel classname="TargetPanel"/> 
     <panel classname="PacksPanel"/> 
     <panel classname="InstallPanel"/> 
     <panel classname="ShortcutPanel"/> 
     <panel classname="FinishPanel"/> 
    </panels> 

    <packs> 
     <pack name="Base" required="yes"> 
      <description>The base files</description> 
      <file src="Readme.txt" targetdir="$INSTALL_PATH"/> 
      <file src="License.txt" targetdir="$INSTALL_PATH"/> 
      <file src="phone.ico" targetdir="$INSTALL_PATH"/> 
      <fileset dir="lib" targetdir="$INSTALL_PATH\lib"> 
       <include name="**"/> 
      </fileset> 
     </pack> 
    </packs> 

    <native type="izpack" name="ShellLink.dll"/> 
    <native type="3rdparty" name="COIOSHelper.dll" stage="both"> 
     <os family="windows"/> 
    </native> 
</izpack:installation> 

ProcessPanel.Spec.xml

<?xml version="1.0" encoding="UTF-8" ?> 
<processing>     
    <job name="doxyz"> 
     <os family="windows" /> 
     <executefile name="$INSTALL_PATH/scripts/mytest.bat"> 
      <arg>doit</arg><arg>$variable</arg> 
     </executefile> 
    </job>    
    <onFail previous="true" next="false" /> 
    <onSuccess previous="false" next="true" /> 
</processing> 

Во время компиляции, я не получаю сообщение об ошибке! Но когда я выполнение install.jar и когда я открываю ProcessPanel я получаю следующее сообщение об ошибке: enter image description here

Я использовал:

izpack-dist-5.0.6

для создания установки и моя ява версия:

java version "1.8.0_66" Java(TM) SE Runtime Environment

(build 1.8.0_66-b18) Java HotSpot(TM) 64-Bit Server VM (build 25.66-b18, mixed mode)

ответ

1

Я бы назвал это ожидаемым поведением.

Не удалось найти файл $INSTALL_PATH/scripts/mytest.bat, поскольку он не был предварительно установлен из-за порядка активации панелей. ProcessPanel показан до InstallPanel,, но InstallPanel - это тот, который устанавливает файл. Проблемы такого рода компилятор НЕ жалуется, вы должны заботиться о них самостоятельно. Это более или менее проблема логики, введенная описанием установщика, а не IzPack.

+1

Я перемещаю ProcessPanel после InstallPanel, добавляю файл mytest.bat как файл пакетов, и он работает! Можно показать ProcessPanel перед InstallPanel и запустить некоторые пакетные файлы? – KostasC

+0

Это так. Вы должны просто убедиться, что файл существует, например, по условию «существует» в этом файле. Вы можете использовать это условие для отображения самой панели или выполнения некоторых действий. Это может быть полезно для обновлений вашего программного обеспечения и может использоваться для автоматического распознавания обновлений в пользу установок с нуля. –