}
@Override
public void executeTask() throws Exception
{
Installer installer = jigen.getInstallers().get(installerIndex);
String targetsDescriptor = Installer.Target.getDescriptor(installer.getTargets());
String installerId = jigen.getProduct().getUnixName() + "-" + jigen.getProduct().getVersion() + "-" + targetsDescriptor;
File jarOutputFile = new File(installer.getDestination() + File.separator + installerId + ".jar");
publish("Starting " + jarOutputFile.getName() + "...");
JarGenerator jarGenerator = new JarGenerator(jarOutputFile, "/jix.jar");
ConfigFileGenerator configFileGenerator = new ConfigFileGenerator();
if (installer.containsTarget(Installer.Target.WIN))
{
File wsfOutputFile = new File(installer.getDestination() + File.separator + "Run " + installerId + ".wsf");
MsiGenerator msiGenerator = new MsiGenerator(jigen);
publish("Generating WiX file...");
msiGenerator.generateWixFile();
publish("Generating WiX object file...");
StringWriter candleSw = new StringWriter();
try
{
msiGenerator.candle(new PrintWriter(candleSw));
publish(candleSw.toString());
}
catch(RuntimeException e)
{
publish(candleSw.toString());
throw e;
}
publish("Generating MSI file...");
StringWriter lightSw = new StringWriter();
File msiFile;
try
{
msiFile = msiGenerator.light(lightSw);
publish(lightSw.toString());
}
catch(RuntimeException e)
{
publish(lightSw.toString());
throw e;
}
publish("Appending MSI file...");
jarGenerator.appendFile("windows-installer.msi", msiFile);
configFileGenerator.appendValue("win.product.guid", msiGenerator.getProductGuid());
msiGenerator.dispose();
publish("Generating WSF script...");
WsfGenerator wsfGenerator = new WsfGenerator(jarOutputFile.getName());
wsfGenerator.format(wsfOutputFile);
}
if (installer.containsTarget(Installer.Target.UNIX))
{
UnixPackageGenerator packageGenerator = new UnixPackageGenerator(jigen);
publish("Packaging runnable files...");
packageGenerator.appendJigenRunnables();
publish("Packaging runnable scripts and shortcuts...");
packageGenerator.appendJigenRunnableScripts();
packageGenerator.appendIcons();
packageGenerator.appendShortcuts();
packageGenerator.appendUninstaller();
publish("Packaging resource files...");
packageGenerator.appendJigenResources();
publish("Closing package.");
packageGenerator.closeFile();
jarGenerator.appendFile("unix-package.zip", packageGenerator.getFile());
publish("Adding text files list...");
jarGenerator.appendFile("text-files.txt", packageGenerator.getTextFilesList());
jarGenerator.appendFile("executable-files.txt", packageGenerator.getExecutableFilesList());
packageGenerator.dispose();
}
configFileGenerator.appendValue("product.is_license_attached", jigen.getProduct().isSetLicense());
configFileGenerator.appendValue("product.name", jigen.getProduct().getUnixName());
configFileGenerator.appendValue("product.long_name", jigen.getProduct().getName());
configFileGenerator.appendValue("product.version", jigen.getProduct().getVersion());
configFileGenerator.appendValue("program.has_desktop_shortcuts", jigen.hasDesktopShortcuts());
configFileGenerator.appendValue("program.has_startmenu_shortcuts", jigen.hasStartMenuShortcuts());
configFileGenerator.appendValue("environment.min_java_version", jigen.getEnvironment().getRequiredJava());
configFileGenerator.appendValue("environment.extensions", ':', jigen.getExtensionsMap());
TreeMap<String,String> supportedPlatforms = new TreeMap<String,String>();
for (Installer.Target target : installer.getTargets())
supportedPlatforms.put(target.toString(), target.getLongDescription());
configFileGenerator.appendValue("environment.platforms", ':', supportedPlatforms);
if (jigen.getProduct().isSetLicense())