`
Clayz
  • 浏览: 297104 次
  • 性别: Icon_minigender_1
  • 来自: 东京
社区版块
存档分类
最新评论

IzPack使用备注

阅读更多

install.xml

<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
<installation version="1.0">
	<info>
		<appname>CLAY</appname>
		<appversion>1.0-0208</appversion>
		<url>http://www.clayz.com</url>
		<javaversion>1.6.0_12</javaversion>
		<authors>
			<author name="Clay Zhong" email="zjclay@gmail.com" />
		</authors>
	</info>

	<!-- define install window -->
	<guiprefs width="500" height="380" resizable="no" />

	<!-- language options -->
	<locale>
		<langpack iso3="eng" />
		<langpack iso3="chn" />
	</locale>

	<resources>
		<res id="LicencePanel.licence" src="Licence.txt" />
		<res id="InfoPanel.info" src="Readme.txt" />
		<res id="userInputSpec.xml" src="userInputSpec.xml" />
		<res id="shortcutSpec.xml" src="shortcutSpec.xml" />
	</resources>

	<variables>
		<variable name="InstallerFrame.logfilePath" value="$INSTALL_PATH/log/install.log" />
		<variable name="desktopshortcutcheckboxenabled" value="true" />
	</variables>

	<jar src="lib/install-utils.jar" />
	<jar src="lib/mysql-connector-java-5.1.7-bin.jar" />

	<listeners>
		<listener installer="ConfigurationListener" />
		<listener installer="DatabaseGenerationlistener" />
	</listeners>

	<panels>
		<panel classname="HelloPanel" />
		<panel classname="InfoPanel" />
		<panel classname="LicencePanel" />
		<panel classname="TargetPanel" />
		<panel classname="UserInputPanel" id="jdbc.parameters">
			<validator classname="com.clay.install.JdbcConnectionValidator" />
		</panel>
		<panel classname="UserInputPanel" id="mail.server.parameters" />
		<panel classname="PacksPanel" />
		<panel classname="ShortcutPanel" />
		<panel classname="InstallPanel" />
		<panel classname="FinishPanel" />
	</panels>

	<packs>
		<pack name="Base" required="yes">
			<description>The base files</description>
			<file src="Readme.txt" targetdir="$INSTALL_PATH" />
			<file src="Licence.txt" targetdir="$INSTALL_PATH" />
			<file src="icons" targetdir="$INSTALL_PATH" />
		</pack>
		<pack name="Src" required="no">
			<description>Source File</description>
			<file src="src" targetdir="$INSTALL_PATH/src" />
		</pack>
		<pack name="App" required="yes">
			<description>Application</description>
			<file src="WebRoot" targetdir="$INSTALL_PATH" />
		</pack>
	</packs>

	<native type="izpack" name="ShellLink.dll" />
</installation>

 

userInputSpec.xml

<?xml version="1.0" encoding="utf-8"?>
<userInput>
	<panel order="0" id="jdbc.parameters">
		<field type="title" txt="Database Configuration" bold="true" size="1" />
		<field type="divider" align="top" />
		<field type="staticText" align="left" txt="Please input existing MySQL username and password." />

		<field type="text" variable="dbUsername">
			<spec txt="Username:" id="text.label" size="25" />
			<validator class="com.izforge.izpack.util.NotEmptyValidator" txt="Username for MySQL can not be empty!" />
		</field>
		<field type="password" variable="dbPassword">
			<spec>
				<pwd txt="Password:" size="25" />
			</spec>
			<validator class="com.izforge.izpack.util.NotEmptyValidator" txt="Password for MySQL can not be empty!" />
		</field>
	</panel>

	<panel order="1" id="mail.server.parameters">
		<field type="title" txt="Mail Server Configuration" bold="true" size="1" />
		<field type="divider" align="top" />
		<field type="staticText" align="left" txt="Please input your mail server account." />

		<field type="text" variable="mailHost">
			<spec txt="Mail Host:" id="text.label" size="25" />
			<validator class="com.izforge.izpack.util.NotEmptyValidator" txt="Mail host can not be empty!" />
		</field>
		<field type="text" variable="mailUserName">
			<spec txt="Username:" id="text.label" size="25" />
			<validator class="com.izforge.izpack.util.NotEmptyValidator" txt="Username for mail server can not be empty!" />
		</field>
		<field type="password" variable="mailPassword">
			<spec>
				<pwd txt="Password:" size="25" />
			</spec>
			<validator class="com.izforge.izpack.util.NotEmptyValidator" txt="Password for mail server can not be empty!" />
		</field>
	</panel>
</userInput>

 

shortcutSpec.xml

<?xml version="1.0" encoding="UTF-8"?>
<shortcuts>
	<skipIfNotSupported />
	<programGroup defaultName="CLAY" location="applications||startMenu" />

	<!-- Shortcut for start server -->
	<shortcut name="Start CLAY" target="$INSTALL_PATH\WebRoot\startup.bat" workingDirectory="$INSTALL_PATH\WebRoot"
		description="This starts CLAY" iconFile="$INSTALL_PATH\icons\izpack.ico" iconIndex="0"
		initialState="noShow" programGroup="yes" desktop="yes" applications="no" startMenu="yes" startup="no">
	</shortcut>

	<!-- Shortcut for stop server -->
	<shortcut name="Stop CLAY" target="$INSTALL_PATH\WebRoot\startup.bat" workingDirectory="$INSTALL_PATH\WebRoot"
		description="This starts CLAY" iconFile="$INSTALL_PATH\icons\izpack.ico" iconIndex="0"
		initialState="noShow" programGroup="yes" desktop="yes" applications="no" startMenu="yes" startup="no">
	</shortcut>

	<!-- Shortcut for uninstall -->
	<shortcut name="Uninstall CLAY" target="$INSTALL_PATH\Uninstaller\uninstaller.jar"
		workingDirectory="$INSTALL_PATH\Uninstaller" description="This uninstall CLAY" iconFile="$INSTALL_PATH\icons\izpack.ico"
		iconIndex="0" initialState="noShow" programGroup="yes" desktop="no" applications="no" startMenu="no"
		startup="no">
	</shortcut>
</shortcuts>

 

自定义validator,将其打包放到lib目录下

package com.clay.install;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;

import com.izforge.izpack.installer.AutomatedInstallData;
import com.izforge.izpack.installer.DataValidator;

/**
 * @author Clay Zhong, Email: zjclay@gmail.com
 * @date 2009-2-10
 */
public class JdbcConnectionValidator implements DataValidator {
	@Override
	public boolean getDefaultAnswer() {
		return true;
	}

	@Override
	public String getErrorMessageId() {
		return "Can not connect to MySQL, please check your database.";
	}

	@Override
	public String getWarningMessageId() {
		return null;
	}

	@Override
	public Status validateData(AutomatedInstallData arg) {
		Connection connection = null;

		try {
			Class.forName("com.mysql.jdbc.Driver");
			connection = DriverManager.getConnection("jdbc:mysql://localhost", arg
					.getVariable("dbUsername"), arg.getVariable("dbPassword"));
		} catch (ClassNotFoundException e) {
			// TODO: log exception
			return Status.ERROR;
		} catch (SQLException e) {
			// TODO: log exception
			return Status.ERROR;
		} finally {
			if (connection != null) {
				try {
					connection.close();
				} catch (SQLException e) {
					// TODO: do nothing and log exception
				}
			}
		}

		return Status.OK;
	}
}

 

自定义listener

package com.clay.install;

import com.izforge.izpack.event.SimpleInstallerListener;
import com.izforge.izpack.installer.AutomatedInstallData;
import com.izforge.izpack.util.AbstractUIProgressHandler;

/**
 * @author Clay Zhong, Email: zjclay@gmail.com
 * @date 2009-2-10
 */
public class DatabaseGenerationlistener extends SimpleInstallerListener {
	private String sqlPath = "sql/init.sql";

	public void beforePacks(AutomatedInstallData idata, Integer npacks,
			AbstractUIProgressHandler handler) throws Exception {
		StringBuilder command = new StringBuilder("mysql -u").append(
				idata.getVariable("dbUsername")).append(" -p").append(
				idata.getVariable("dbPassword")).append(" < ").append(sqlPath);

		java.lang.Runtime.getRuntime().exec("cmd /c " + command.toString());
	}
}
 
package com.clay.install;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;

import com.izforge.izpack.PackFile;
import com.izforge.izpack.event.SimpleInstallerListener;

/**
 * @author Clay Zhong, Email: zjclay@gmail.com
 * @date 2009-2-10
 */
public class ConfigurationListener extends SimpleInstallerListener {
	public void afterFile(File file, PackFile packFile) throws Exception {
		if (file.getName().equals("database.properties")) {
			// modify username and password
			StringBuilder stringBuilder = new StringBuilder();
			BufferedReader reader = null;
			BufferedWriter writer = null;

			try {
				reader = new BufferedReader(new FileReader(file));
				String temp = null;
				while ((temp = reader.readLine()) != null) {
					stringBuilder.append(temp);
					stringBuilder.append("\n");
				}

				String fileBody = stringBuilder.toString();
				fileBody.replaceAll("root", "test");

				writer = new BufferedWriter(new FileWriter(file));
				writer.write(fileBody);
			} catch (Exception e) {
				// TODO: log exception
			} finally {
				try {
					if (reader != null) {
						reader.close();
					}
					if (writer != null) {
						writer.close();
					}
				} catch (Exception e) {
					// TODO: log exception
				}
			}
		}
	}
}

 

部署listener步骤如下:

  1. 将之拷贝到[IzPackRoot]/src/lib/[MyPackagePath]/MyCompilerListener.java。
  2. 在[IzPackRoot]/src/build.xml中添加build-compiler-listener
    <build-installer-listener name="DatabaseGenerationlistener">
    	<include name="com/clay/install/DatabaseGenerationlistener.java" />
    </build-installer-listener>
    
    <build-installer-listener name="ConfigurationListener">
    	<include name="com/clay/install/ConfigurationListener.java" />
    </build-installer-listener> 
  3. 编译build.xml。
  4. 在install.xml中添加listener。
  5. 命令行运行
    java -jar D:/IzPack/lib/compiler.jar E:/CLAY/install.xml -b E:/CLAY -o E:/CLAY/install.jar
分享到:
评论

相关推荐

    IZPack 怎么使用

    IZPack 怎么使用IZPack 怎么使用IZPack 怎么使用IZPack 怎么使用IZPack 怎么使用IZPack 怎么使用IZPack 怎么使用IZPack 怎么使用

    IZpack使用心得

    ### IZpack 使用心得 #### 一、IZpack 概述与应用场景 IZpack 是一个开源的安装系统,主要用于将 Java 程序打包成可下载的安装包,并且能够支持在没有预装 JVM 的设备上运行。它提供了一种简单有效的方式来创建跨...

    izpack source code 4.3.5

    2. **学习XML配置**:IzPack使用XML来定义安装流程,包括文件复制、用户输入、许可协议等。源代码将揭示如何解析和执行这些XML配置。 3. **自定义安装行为**:IzPack支持编写Java代码来扩展其功能,如自定义安装...

    IzPack--强大的Java安装程序制作软件

    izpack是基于Apache Software License 2.0许可的开源项目;izpack是纯Java,对部分特性有针对不同平台版本的Library。例如:快捷键的创建。izpack是一个用于解决安装程序制作的Builder工具;通过izpack制作的安装...

    izpack 入门指南

    izpack是开源的打包工具,这是他的入门操作指南

    Izpack Maven打包 第二篇

    标题 "Izpack Maven打包 第二篇" 指向的是一个关于使用Maven和Izpack进行软件打包过程的教程。在这个过程中,Maven是一个流行的构建自动化工具,用于管理和构建Java项目,而Izpack则是一个用于创建安装程序的开源...

    izpack-master_oracle_izpack_

    接下来,使用Izpack的命令行工具,结合我们创建的install.xml脚本,生成最终的安装包。这个安装包将包含Oracle的所有组件和Izpack的安装逻辑。生成的安装程序可以在Cent OS系统上运行,引导用户完成Oracle的安装。 ...

    IzPack-install-4.3.5

    IzPack-install-4.3.5

    izpack-gui-5.0.0-beta10.zip

    【标题】"izpack-gui-5.0.0-beta10.zip" 是一个用于创建图形用户界面(GUI)安装程序的开源工具IzPack的版本。IzPack是一个强大的跨平台安装包制作工具,它允许开发者轻松创建具有专业外观和功能的安装程序,适用于...

    izpack-seed:种子应用程序来说明IzPack安装程序

    安装模块与IzPack 不同,出于代码组织的目的,此示例提出一种使用3个模块的方法,而不是IzPack文档中的2个模块。 一个名为package的组装模块附加的面板模块IzPack安装程序模块使用mvn clean install构建后,安装程序...

    izpack-dist-5.0.9.jar

    IzPack 是一个安装工具,具体介绍免去。 http://izpack.org/downloads/

    IzVerifier:IzPack 安装程序的静态规范验证

    IzVerifier 还会解析安装程序使用的任何自定义类的源代码,以确保没有引用未定义的 izpack 规范。 最后,IzVerifier 还可以对安装程序的条件依赖树执行图形搜索,以查找循环或丢失的项目。 当前支持的规范类型是...

    izpack-master

    can not down in company,so download it on home,then download it in company

    sbt-izpack:适用于 SBT 0.10.1 及更高版本的 IzPack 安装程序插件

    未经特别事先书面许可,不得使用名称“clapper.org”、“sbt-izpack”或任何贡献者的名称来认可或推广源自该软件的产品。 本软件由版权所有者和贡献者“按原样”提供,并提供任何明示或暗示的保证,包括但不限于...

    OpenSSH_gateway_config_izpack_gateway_

    在本主题中,我们将探讨如何在CentOS操作系统上配置OpenSSH Gateway,并使用IzPack Gateway进行更高效的操作。 首先,让我们深入了解OpenSSH Gateway。OpenSSH Gateway允许您创建一个堡垒主机(也称为跳跃主机),...

    izpack-native-5.0.0-beta8.zip

    5. **丰富的资源**:拥有活跃的社区和详尽的文档,便于学习和使用。 【描述】提到的 "Hermes.zip, hermes gwt 服务器端 i18n 库一个 gwt 服务器端 i18n 库",Hermes 是一个用于 Google Web Toolkit (GWT) 项目的...

    maven-izpack-plugin-0.3.1.jar

    maven-izpack-plugin-0.3.1.jar

    maven-izpack-plugin-0.3.0.jar

    maven-izpack-plugin-0.3.0.jar

    izpack-dist-5.1.3.jar

    izPack 是一个 Java 安装程序制作工具,能够制作一些简单的安装程序。制作出来的安装程序能在 Unix-like, MacOS X, Windows 等系统平台上运行。

Global site tag (gtag.js) - Google Analytics