<?xml version="1.0" encoding="utf-8"  ?>
<!--

    Licensed to the Apache Software Foundation (ASF) under one
    or more contributor license agreements. See the NOTICE file
    distributed with this work for additional information
    regarding copyright ownership. The ASF licenses this file
    to you under the Apache License, Version 2.0 (the
    "License"); you may not use this file except in compliance
    with the License.  You may obtain a copy of the License at

        http://www.apache.org/licenses/LICENSE-2.0

    Unless required by applicable law or agreed to in writing, software
    distributed under the License is distributed on an "AS IS" BASIS,
    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    See the License for the specific language governing permissions and
    limitations under the License.

-->
<!-- <!DOCTYPE installation PUBLIC "" "izpack.dtd" > -->
<installation version="1.0">

    <variables>
        <variable name="TOMCAT_VERSION" value="${TOMCAT_VERSION}" />
        <variable name="MARMOTTA_VERSION" value="${MARMOTTA_VERSION}" />
    </variables>
    <info>
        <appname>Apache Marmotta</appname>
        <appversion>${MARMOTTA_VERSION}</appversion>
        <appsubpath>marmotta</appsubpath>
        <url>http://marmotta.apache.org</url>
        <authors>
            <author name="Sebastian Schaffert" email="sschaffert@apache.org" />
            <author name="Thomas Kurz" email="tkurz@apache.org" />
            <author name="Jakob Frank" email="jfrank@salzburgresearch.at" />
            <author name="Sergio Fernández" email="wikier@apache.org" />
            <author name="Rupert Westenthaler" email="rwesten@apache.org" />
            <author name="Dietmar Glachs" email="dglachs@apache.org" />
            <author name="Andy Seaborne" email="andy@apache.org" />
            <author name="Nandana Mihindukulasooriya" email="nandana@apache.org" />
            <author name="Fabian Christ" email="fchrist@apache.org" />
        </authors>
        <javaversion>1.6</javaversion>
        <requiresjdk>no</requiresjdk>
    </info>
    <packaging>
        <packager class="com.izforge.izpack.compiler.Packager">
            <options/>
        </packager>
        <unpacker class="com.izforge.izpack.installer.Unpacker" />
    </packaging>
    <guiprefs resizable="no" width="800" height="600">
    </guiprefs>
    <locale>
        <langpack iso3="eng" />
    </locale>
    <resources>
        <res src="LICENSE.txt" id="LicencePanel.licence" />
        <res src="shortcuts/shortcutSpec.xml" id="shortcutSpec.xml" />
        <res src="shortcuts/Unix_shortcutSpec.xml" id="Unix_shortcutSpec.xml" />
        <res src="${MARMOTTA_ROOT}/platform/marmotta-core/src/main/resources/web/public/img/logo/marmotta-logo.png" id="logo" />
        <res src="panels/installerInfo.html" id="HTMLHelloPanel.info" />
    </resources>
    <panels>
        <panel classname="HTMLHelloPanel" />
        <panel classname="HelloPanel" />
        <panel classname="LicencePanel" />
        <panel classname="PacksPanel" />
        <panel classname="TargetPanel" />
        <panel classname="InstallPanel" />
        <panel classname="ShortcutPanel" />
        <panel classname="SimpleFinishPanel" />
    </panels>
    <packs>
        <pack name="Apache Tomcat ${TOMCAT_VERSION}" required="yes">
            <description>Apache Tomcat ${TOMCAT_VERSION}, the application server used to run Marmotta</description>
            <file src="lib/apache-tomcat-${TOMCAT_VERSION}.zip" targetdir="\$INSTALL_PATH" unpack="true" />
            <file src="tomcat/server.xml" targetdir="\$INSTALL_PATH/apache-tomcat-${TOMCAT_VERSION}/conf" override="true" />
            <file src="tomcat/setenv.sh" targetdir="\$INSTALL_PATH/apache-tomcat-${TOMCAT_VERSION}/bin" />
            <file src="tomcat/setenv.bat" targetdir="\$INSTALL_PATH/apache-tomcat-${TOMCAT_VERSION}/bin" />
            <file src="images/icon_start.ico" targetdir="\$INSTALL_PATH/apache-tomcat-${TOMCAT_VERSION}/icons" />
            <file src="images/icon_stop.ico" targetdir="\$INSTALL_PATH/apache-tomcat-${TOMCAT_VERSION}/icons" />
            <file src="images/icon_start.png" targetdir="\$INSTALL_PATH/apache-tomcat-${TOMCAT_VERSION}/icons" />
            <file src="images/icon_stop.png" targetdir="\$INSTALL_PATH/apache-tomcat-${TOMCAT_VERSION}/icons" />
            <file src="images/splashscreen.png" targetdir="\$INSTALL_PATH/apache-tomcat-${TOMCAT_VERSION}/icons" />
            <file src="tomcat/index.jsp" targetdir="\$INSTALL_PATH/apache-tomcat-${TOMCAT_VERSION}/webapps/ROOT" override="true" />
            <file src="log/catalina.out" targetdir="\$INSTALL_PATH/apache-tomcat-${TOMCAT_VERSION}/logs" />
            <file src="lib/marmotta-splash-${MARMOTTA_VERSION}.jar" targetdir="\$INSTALL_PATH/apache-tomcat-${TOMCAT_VERSION}/lib" />
            <file src="macos/Start Apache Marmotta.app" targetdir="\$INSTALL_PATH" os="mac" />
            <file src="images/icon_start.icns" targetdir="\$INSTALL_PATH/Start Apache Marmotta.app/Contents/Resources" os="mac" />
            <file src="macos/Stop Apache Marmotta.app" targetdir="\$INSTALL_PATH" os="mac" />
            <file src="images/icon_stop.icns" targetdir="\$INSTALL_PATH/Stop Apache Marmotta.app/Contents/Resources" os="mac" />
            <parsable type="shell" targetfile="\$INSTALL_PATH/apache-tomcat-${TOMCAT_VERSION}/bin/setenv.sh" parse="yes" />
            <parsable type="shell" targetfile="\$INSTALL_PATH/apache-tomcat-${TOMCAT_VERSION}/bin/setenv.bat" parse="yes" />
            <parsable type="shell" targetfile="\$INSTALL_PATH/Start Apache Marmotta.app/Contents/MacOS/run.sh" parse="yes" os="mac" />
            <parsable type="shell" targetfile="\$INSTALL_PATH/Stop Apache Marmotta.app/Contents/MacOS/run.sh" parse="yes" os="mac" />
            <executable targetfile="\$INSTALL_PATH/apache-tomcat-${TOMCAT_VERSION}/bin/setenv.sh" stage="never" />
            <executable targetfile="\$INSTALL_PATH/apache-tomcat-${TOMCAT_VERSION}/bin/catalina.sh" stage="never" />
            <executable targetfile="\$INSTALL_PATH/apache-tomcat-${TOMCAT_VERSION}/bin/startup.sh" stage="never" />
            <executable targetfile="\$INSTALL_PATH/apache-tomcat-${TOMCAT_VERSION}/bin/shutdown.sh" stage="never" />
            <executable targetfile="\$INSTALL_PATH/Start Apache Marmotta.app/Contents/MacOS/run.sh" stage="never" os="mac" />
            <executable targetfile="\$INSTALL_PATH/Stop Apache Marmotta.app/Contents/MacOS/run.sh" stage="never" os="mac" />
        </pack>
        <refpack file="refpacks/marmotta-webapp.xml" />
        <refpack file="refpacks/marmotta-core.xml" />
        <refpack file="refpacks/marmotta-ldcache.xml" />
        <refpack file="refpacks/marmotta-ldpath.xml" />
        <refpack file="refpacks/marmotta-reasoner.xml" />
        <refpack file="refpacks/marmotta-security.xml" />
        <refpack file="refpacks/marmotta-sparql.xml" />
        <refpack file="refpacks/marmotta-user.xml" />
        <refpack file="refpacks/marmotta-versioning.xml" />
    </packs>

    <!-- shortcut generation -->
    <native type="izpack" name="ShellLink.dll" />
    <native type="izpack" name="ShellLink_x64.dll" />

</installation>
