2010-12-27 3 views
3

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

Любые идеи?

Заранее благодарен.

+0

Связанный: [IzPack «Маркировка файлов для замены переменных "] (https://izpack.atlassian.net/wiki/display/IZPACK/Marking+files+for+vari возможность замены +). –

ответ

2

На примере 01es' answer это пример, когда вы позволяете пользователю выбирать путь для данных приложения, используя 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> 

installer.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> 
5

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

<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> 

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

Смежные вопросы