IzPack заменяет переменные в текстовых файлах - PullRequest
3 голосов
/ 27 декабря 2010

Я пытаюсь выяснить, как заставить IzPack заменить переменные в текстовых файлах.Вроде бы все должно быть просто, но я не могу найти конкретный пример того, как это сделать с их существующей документацией.

Есть идеи?

Заранее спасибо.

Ответы [ 2 ]

5 голосов
/ 20 января 2011

Я предполагаю, что файл для обработки добавляется в один из пакетов с помощью тега file или fileset. Для того чтобы этот файл был обработан, что происходит в конце процесса установки, необходимо добавить разборный тег для файла в тот же пакет. Например

<packs>
    <pack name="Base" required="yes">
        <description>Application and all its dependencies.</description>
        <fileset dir="dependencies" targetdir="$INSTALL_PATH/dependencies" />
        <file src="Licence.txt" targetdir="$INSTALL_PATH" />
        <file src="application.properties" targetdir="$INSTALL_PATH/dependencies" />
        <file src="run.bat" targetdir="$INSTALL_PATH" os="windows" />
        <file src="run.sh" targetdir="$INSTALL_PATH" os="unix" />
        <parsable targetfile="$INSTALL_PATH/run.bat" os="windows" />
        <parsable targetfile="$INSTALL_PATH/run.sh" os="unix" />
        <parsable targetfile="$INSTALL_PATH/dependencies/application.properties" />
    </pack>
</packs>

В приведенном выше примере есть три анализируемых тега - два зависит от ОС и один не зависит от ОС. Целевые файлы сначала копируются в соответствующие целевые каталоги, указанные в соответствующих файловых тегах, а затем обрабатываются путем замены имен переменных в файлах их значениями.

2 голосов
/ 17 декабря 2014

Опираясь на ответ 01es , это пример, в котором вы позволяете пользователю выбрать путь для данных приложения, используя UserInputPanel , а затем записываете этот путь в файл конфигурации внутрикаталог установки вашего приложения для чтения.

Пример config.xml, который содержит переменные, которые вы хотите заменить:

<?xml version="1.0" encoding="UTF-8"?>
<Entries>
  <Entry>
    <Key>appDataDir</Key>
    <!-- IzPack will substitute this -->
    <Value>$appDataDir</Value>
  </Entry>
</Entries>

userInputSpec.xml:

<userInput>
  <panel id="panel1">
  <field type="dir" variable="appDataDir">
    <spec size="20" set="$USER_HOME\AppData\Roaming\$APP_NAME" mustExist="false" create ="true"/>
    <os family="windows"/>
  </field>
  </panel>
</userInput>

Установщик.xml:

<?xml version="1.0" encoding="UTF-8"?><installation version="1.0">
  <info>
    <appname>Your app</appname>
    <appversion>0.0.1</appversion>
    <!-- Try to run as the administrator on Windows to be able to install under "C:\Program Files" -->
    <run-privileged condition="izpack.windowsinstall" />
  </info>

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

  <resources>
    <res id="userInputSpec.xml" src="userInputSpec.xml" parse="yes" type="xml" />
  </resources>

  <panels>
    <panel classname="UserInputPanel" id="panel1" />
    <panel classname="InstallPanel" />
    <panel classname="FinishPanel" />
  </panels>

  <packs>
    <pack name="Core" id="core.package" required="yes">
      <description>The base files that need to be part of the app</description>

      <!-- The runnable application should be in this directory -->
      <fileset dir="YourAppDir" targetdir="$INSTALL_PATH/YourAppDir">
        <include name="**" />
      </fileset>

      <!-- This file contains placeholder variables starting with $ that Izpack substitutes with values that the user enters during installation in the UserInputPanel -->
      <parsable targetfile="$INSTALL_PATH/YourAppDir/config.xml" /> 

    </pack>
  </packs>
</installation>
...