[izpack-changes] r1619 - in izpack-src/trunk: . bin/langpacks/flags bin/langpacks/installer src src/dist-files src/doc-ng/XHTML src/lib/com/izforge/izpack/compiler src/lib/com/izforge/izpack/installer src/lib/com/izforge/izpack/panels src/lib/com/izforge/izpack/uninstaller src/lib/com/izforge/izpack/util/os src/lib/com/izforge/izpack/util/os/unix src/tests/com/izforge/izpack

noreply at berlios.de noreply at berlios.de
Mon Sep 25 07:03:51 CEST 2006


Author: jponge
Date: 2006-09-25 07:03:12 +0200 (Mon, 25 Sep 2006)
New Revision: 1619

Added:
   izpack-src/trunk/bin/langpacks/flags/ind.gif
   izpack-src/trunk/bin/langpacks/installer/ind.xml
   izpack-src/trunk/src/dist-files/splash-3.8.png
   izpack-src/trunk/src/dist-files/splash-3.9.png
Removed:
   izpack-src/trunk/src/dist-files/splash-sydney.png
   izpack-src/trunk/src/doc/
Modified:
   izpack-src/trunk/.cvsignore
   izpack-src/trunk/.project
   izpack-src/trunk/IzPack-head.iml
   izpack-src/trunk/IzPack-head.ipr
   izpack-src/trunk/Versions.txt
   izpack-src/trunk/bin/langpacks/installer/fra.xml
   izpack-src/trunk/bin/langpacks/installer/ned.xml
   izpack-src/trunk/src/ant.properties
   izpack-src/trunk/src/build.xml
   izpack-src/trunk/src/dist-files/IzPack-install.xml
   izpack-src/trunk/src/dist-files/Unix_shortcutSpec.xml
   izpack-src/trunk/src/dist-files/shortcutSpec.xml
   izpack-src/trunk/src/doc-ng/XHTML/node4.html
   izpack-src/trunk/src/lib/com/izforge/izpack/compiler/Compiler.java
   izpack-src/trunk/src/lib/com/izforge/izpack/installer/InstallerFrame.java
   izpack-src/trunk/src/lib/com/izforge/izpack/installer/UninstallData.java
   izpack-src/trunk/src/lib/com/izforge/izpack/panels/ShortcutPanel.java
   izpack-src/trunk/src/lib/com/izforge/izpack/panels/ShortcutPanelAutomationHelper.java
   izpack-src/trunk/src/lib/com/izforge/izpack/uninstaller/Destroyer.java
   izpack-src/trunk/src/lib/com/izforge/izpack/util/os/Shortcut.java
   izpack-src/trunk/src/lib/com/izforge/izpack/util/os/Unix_Shortcut.java
   izpack-src/trunk/src/lib/com/izforge/izpack/util/os/unix/ShellScript.java
   izpack-src/trunk/src/tests/com/izforge/izpack/Bin_Langpacks_InstallerTest.java
Log:
Merged from branch-3.9 r1578:1617

Modified: izpack-src/trunk/.cvsignore
===================================================================
--- izpack-src/trunk/.cvsignore	2006-09-25 04:19:33 UTC (rev 1618)
+++ izpack-src/trunk/.cvsignore	2006-09-25 05:03:12 UTC (rev 1619)
@@ -1,3 +1,4 @@
 _build
 _dist
 eclipse-bin
+_src_dist
\ No newline at end of file

Modified: izpack-src/trunk/.project
===================================================================
--- izpack-src/trunk/.project	2006-09-25 04:19:33 UTC (rev 1618)
+++ izpack-src/trunk/.project	2006-09-25 05:03:12 UTC (rev 1619)
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <projectDescription>
-	<name>IzPack3-head</name>
+	<name>IzPack3-3.9Branch</name>
 	<comment></comment>
 	<projects>
 	</projects>

Modified: izpack-src/trunk/IzPack-head.iml
===================================================================
--- izpack-src/trunk/IzPack-head.iml	2006-09-25 04:19:33 UTC (rev 1618)
+++ izpack-src/trunk/IzPack-head.iml	2006-09-25 05:03:12 UTC (rev 1619)
@@ -9,6 +9,8 @@
       <sourceFolder url="file://$MODULE_DIR$/src/tests" isTestSource="true" />
       <excludeFolder url="file://$MODULE_DIR$/_build" />
       <excludeFolder url="file://$MODULE_DIR$/_dist" />
+      <excludeFolder url="file://$MODULE_DIR$/doc/izpack" />
+      <excludeFolder url="file://$MODULE_DIR$/doc/izpack/javadoc" />
     </content>
     <orderEntry type="inheritedJdk" />
     <orderEntry type="sourceFolder" forTests="false" />

Modified: izpack-src/trunk/IzPack-head.ipr
===================================================================
--- izpack-src/trunk/IzPack-head.ipr	2006-09-25 04:19:33 UTC (rev 1618)
+++ izpack-src/trunk/IzPack-head.ipr	2006-09-25 05:03:12 UTC (rev 1619)
@@ -188,7 +188,7 @@
       <module fileurl="file://$PROJECT_DIR$/IzPack-head.iml" filepath="$PROJECT_DIR$/IzPack-head.iml" />
     </modules>
   </component>
-  <component name="ProjectRootManager" version="2" assert-keyword="true" jdk-15="false" project-jdk-name="1.5.0_05" />
+  <component name="ProjectRootManager" version="2" assert-keyword="true" jdk-15="false" project-jdk-name="1.5" />
   <component name="RmicSettings">
     <option name="IS_EANABLED" value="false" />
     <option name="DEBUGGING_INFO" value="true" />

Modified: izpack-src/trunk/Versions.txt
===================================================================
--- izpack-src/trunk/Versions.txt	2006-09-25 04:19:33 UTC (rev 1618)
+++ izpack-src/trunk/Versions.txt	2006-09-25 05:03:12 UTC (rev 1619)
@@ -1,6 +1,10 @@
 [ The list of the different public versions of IzPack ]
 
-  > 3.9.0 (build 2006.mm.dd)
+  > 3.9.0 (build 2006.09.25)
+- Fix Accents In French Langpack (Fabrice Mirabile)
+- Update French Langpack (Julien Ponge)
+- New Indonesian Langpack (Hans Aikema, thanks to Thomas Edwin Santosa)
+- Updated Dutch Langpack (Hans Aikema) 
 - Fix for ComboBox in SearchField of UserInputPanel returning
   java.lang.reflect.InvocationTargetException
   if no options added.(Fabrice Mirabile, thanks to Oliver Kiddle)
@@ -13,7 +17,7 @@
 - Spanish langpack update (Cesar Martinez Izquierdo).
 - New Polish langpack (Fabrice Mirabile, thanks to Radek)
 - Fixed the createPWD.sh (Fabrice Mirabile, thanks to Radek)
-- Workaround for crashes at end of installation with java VM version
+- Workaround for crashes at end of installation with Java VM version
   1.5 (also known as 5.0) (Klaus Bartz).
 - Updated russian langpack (Fabrice Mirabile)
 - Fixed indent of ShortcutPanels Headline (Marc Eppelmann)
@@ -58,6 +62,7 @@
   Alex Pinkin @JBoss/RedHat, via Julien Ponge).
 - Variable substitution in the description-elements of the PacksPanel (Dennis Reil, via
   Julien Ponge).
+- Added a src.tar.gz target in the build.xml to create a IzPack.src.tar.gz (Marc Eppelmann)
 
   > 3.8.1 (build 2006.01.06)
 - Added Greek language support (Fabrice Mirabile, thanks to Panayotis

Copied: izpack-src/trunk/bin/langpacks/flags/ind.gif (from rev 1617, izpack-src/branches/branch-3.9/bin/langpacks/flags/ind.gif)

Modified: izpack-src/trunk/bin/langpacks/installer/fra.xml
===================================================================
--- izpack-src/trunk/bin/langpacks/installer/fra.xml	2006-09-25 04:19:33 UTC (rev 1618)
+++ izpack-src/trunk/bin/langpacks/installer/fra.xml	2006-09-25 05:03:12 UTC (rev 1619)
@@ -175,10 +175,32 @@
     <str id="functionFailed.RegOpenKeyEx" txt="Impossible d'ouvrir la clé de registre {0}\\{1}."/>
     
     <!-- CheckedHelloPanel strings -->
-    <str id="CheckedHelloPanel.productAlreadyExist0" txt="Ce logiciel est déjà installe depuis le chemin "/>
+    <str id="CheckedHelloPanel.productAlreadyExist0" txt="Ce logiciel est déjà installé depuis le chemin "/>
     <str id="CheckedHelloPanel.productAlreadyExist1" txt=" . Etes-vous certain de vouloir installer une autre entité ?" />
     <str id="CheckedHelloPanel.infoOverUninstallKey" txt="La clé de désinstallation sera : " />
     
+	<!-- Headlines -->
+    <str id="CheckedHelloPanel.headline" txt="Bienvenue" />
+    <str id="CompilePanel.headline" txt="Compiler les sources Java" />
+    <str id="ConditionalUserInputPanel.headline" txt="Données utilisateur" />
+    <str id="ExtendedInstallPanel.headline" txt="Installation et Configuration" />
+    <str id="FinishPanel.headline" txt="Installation Terminée" />
+    <str id="HTMLInfoPanel.headline" txt="Informations" />
+    <str id="HTMLLicencePanel.headline" txt="Accords de Licence" />
+    <str id="HelloPanel.headline" txt="Bienvenue" />
+    <str id="ImgPacksPanel.headline" txt="Sélection des paquets à installer" />
+    <str id="InfoPanel.headline" txt="Informations" />
+    <str id="InstallPanel.headline" txt="Installation" />
+    <str id="JDKPathPanel.extendedIntro" txt="La version installée de l'application nécessite un JDK entre la version ${JDKPathPanel.minVersion} et la version ${JDKPathPanel.maxVersion}. Un environnement d'execution Java (JRE) ne sera pas suffisant." />
+    <str id="JDKPathPanel.headline" txt="Chemin du JDK" />
+    <str id="LicencePanel.headline" txt="Accords de Licence" />
+    <str id="PacksPanel.headline" txt="Sélection des paquets à installer" />
+    <str id="ProcessPanel.headline" txt="Execution de processus externes" />
+    <str id="SimpleFinishPanel.headline" txt="Installation Terminée" />
+    <str id="SummaryPanel.headline" txt="Résumé des données de configuration" />
+    <str id="TargetPanel.headline" txt="Chemin d'installation" />
+    <str id="UserInputPanel.headline" txt="Données utilisateur" /> 
+	
     <!-- Add your own panels specific strings here if you need -->
     
 </langpack>

Copied: izpack-src/trunk/bin/langpacks/installer/ind.xml (from rev 1617, izpack-src/branches/branch-3.9/bin/langpacks/installer/ind.xml)

Modified: izpack-src/trunk/bin/langpacks/installer/ned.xml
===================================================================
--- izpack-src/trunk/bin/langpacks/installer/ned.xml	2006-09-25 04:19:33 UTC (rev 1618)
+++ izpack-src/trunk/bin/langpacks/installer/ned.xml	2006-09-25 05:03:12 UTC (rev 1619)
@@ -4,202 +4,268 @@
 
 <langpack>
     <!-- Heading messages START -->
-    <str id="CheckedHelloPanel.headline" txt="Welkom"/>
-    <str id="CompilePanel.headline" txt="Compileer Java Sources"/>
-    <str id="ConditionalUserInputPanel.headline" txt="Invoer gebruiker gegevens"/>
-    <str id="ExtendedInstallPanel.headline" txt="Installatie en Configuratie"/>
-    <str id="FinishPanel.headline" txt="Installatie Gereed"/>
-    <str id="HelloPanel.headline" txt="Welkom"/>
-    <str id="HTMLInfoPanel.headline" txt="Informatie"/>
-    <str id="HTMLLicencePanel.headline" txt="Licentieovereenkomst"/>
-    <str id="ImgPacksPanel.headline" txt="Selecteer Installatie pakketten"/>
-    <str id="InfoPanel.headline" txt="Informatie"/>
-    <str id="InstallPanel.headline" txt="Installatie"/>
-    <str id="JDKPathPanel.headline" txt="Instellen JDK pad"/>
-    <str id="LicencePanel.headline" txt="Licentieovereenkomst"/>
-    <str id="PacksPanel.headline" txt="Selecteer Installatie Pakketten"/>
-    <str id="ProcessPanel.headline" txt="Uitvoeren externe programma's"/>
-    <str id="ShortcutPanel.headline" txt="Aanmaken Snelkoppelingen"/>
-    <str id="SimpleFinishPanel.headline" txt="Installatie Gereed"/>
-    <str id="SummaryPanel.headline" txt="Overzicht van Installatie en Configuratiegegevens"/>
-    <str id="TargetPanel.headline" txt="Instellen Installatie locatie"/>
-    <str id="UserInputPanel.headline" txt="Invoer gebruiker gegevens"/>
+    <str id="CheckedHelloPanel.headline" txt="Welkom" />
+    <str id="CompilePanel.headline" txt="Compileer Java Sources" />
+    <str id="ConditionalUserInputPanel.headline"
+        txt="Gebruikersgegevens" />
+    <str id="ExtendedInstallPanel.headline"
+        txt="Installatie en Configuratie" />
+    <str id="FinishPanel.headline" txt="Installatie Gereed" />
+    <str id="HelloPanel.headline" txt="Welkom" />
+    <str id="HTMLInfoPanel.headline" txt="Informatie" />
+    <str id="HTMLLicencePanel.headline" txt="Licentieovereenkomst" />
+    <str id="ImgPacksPanel.headline"
+        txt="Selecteer Installatie pakketten" />
+    <str id="InfoPanel.headline" txt="Informatie" />
+    <str id="InstallPanel.headline" txt="Installatie" />
+    <str id="JDKPathPanel.headline" txt="JDK pad" />
+    <str id="LicencePanel.headline" txt="Licentieovereenkomst" />
+    <str id="PacksPanel.headline" txt="Selecteer Installatie Pakketten" />
+    <str id="ProcessPanel.headline" txt="Uitvoeren externe programma's" />
+    <str id="ShortcutPanel.headline" txt="Snelkoppelingen" />
+    <str id="SimpleFinishPanel.headline" txt="Installatie Gereed" />
+    <str id="SummaryPanel.headline"
+        txt="Overzicht configuratie gegevens" />
+    <str id="TargetPanel.headline" txt="Installatie pad" />
+    <str id="UserInputPanel.headline" txt="Gebruikersgegevens" />
 
     <!-- General installer strings -->
-    <str id="installer.title" txt="IzPack - Installatie van "/>
-    <str id="installer.next" txt="Verder"/>
-    <str id="installer.prev" txt="Terug"/>
-    <str id="installer.quit" txt="Afsluiten"/>
-    <str id="installer.madewith" txt="(Installatie gemaakt met IzPack - http://www.izforge.com/)"/>
-    <str id="installer.quit.title" txt="Weet u zeker dat u wilt afsluiten?"/>
-    <str id="installer.quit.message" txt="Dit zal de installatie afbreken"/>
-    <str id="installer.warning" txt="Waarschuwing !"/>
-    <str id="installer.yes" txt="Ja"/>
-    <str id="installer.no" txt="Nee"/>
-    <str id="installer.cancel" txt="Annuleer"/> 
-    <str id="installer.error" txt="Fout"/>
-    <str id="installer.help" txt="Help"/>
-    <str id="installer.step" txt="Stap"/>
-    <str id="installer.of" txt="van"/>
-    
-    
+    <str id="installer.title" txt="IzPack - Installatie van " />
+    <str id="installer.next" txt="Verder" />
+    <str id="installer.prev" txt="Terug" />
+    <str id="installer.quit" txt="Afsluiten" />
+    <str id="installer.madewith"
+        txt="(Installatie gemaakt met IzPack - http://www.izforge.com/)" />
+    <str id="installer.quit.title"
+        txt="Weet u zeker dat u wilt afsluiten?" />
+    <str id="installer.quit.message"
+        txt="Dit zal de installatie afbreken" />
+    <str id="installer.warning" txt="Waarschuwing !" />
+    <str id="installer.yes" txt="Ja" />
+    <str id="installer.no" txt="Nee" />
+    <str id="installer.cancel" txt="Annuleer" />
+    <str id="installer.error" txt="Fout" />
+    <str id="installer.help" txt="Help" />
+    <str id="installer.step" txt="Stap" />
+    <str id="installer.of" txt="van" />
+
+
     <!-- Uninstaller specific strings -->
-    <str id="uninstaller.warning" txt="Dit zal de geïnstalleerde programma(s) verwijderen !"/>
-    <str id="uninstaller.destroytarget" txt=" Forceer het verwijderen van "/>
-    <str id="uninstaller.uninstall" txt="Deïnstalleer"/>
+    <str id="uninstaller.warning"
+        txt="Dit zal de geïnstalleerde programma(s) verwijderen !" />
+    <str id="uninstaller.destroytarget"
+        txt=" Forceer het verwijderen van " />
+    <str id="uninstaller.uninstall" txt="Deïnstalleer" />
 
     <!-- The strings for the 'official' IzPack plugins -->
-    <str id="HelloPanel.welcome1" txt="Welkom bij de installatie van "/>
-    <str id="HelloPanel.welcome2" txt=" !"/>
-    <str id="HelloPanel.authors" txt="Deze software is ontwikkeld door : "/>
-    <str id="HelloPanel.url" txt="De homepagina staat op : "/>
+    <str id="HelloPanel.welcome1" txt="Welkom bij de installatie van " />
+    <str id="HelloPanel.welcome2" txt=" !" />
+    <str id="HelloPanel.authors"
+        txt="Deze software is ontwikkeld door : " />
+    <str id="HelloPanel.url" txt="De homepagina staat op : " />
 
-    <str id="PrinterSelectPanel.select_printer" txt="Selecteer een printer." />
+    <str id="PrinterSelectPanel.select_printer"
+        txt="Selecteer een printer." />
 
-    <str id="CheckedHelloPanel.productAlreadyExist0" txt="Dit product is al geinstalleerd op deze computer in de map "/>
-    <str id="CheckedHelloPanel.productAlreadyExist1" txt=" . Weet u zeker dat u een extra versie wilt installeren?"/>
-    <str id="CheckedHelloPanel.infoOverUninstallKey" txt="De de-installatie zal als naam krijgen: " />
+    <str id="CheckedHelloPanel.productAlreadyExist0"
+        txt="Dit product is al geinstalleerd op deze computer in de map " />
+    <str id="CheckedHelloPanel.productAlreadyExist1"
+        txt=" . Weet u zeker dat u een extra versie wilt installeren?" />
+    <str id="CheckedHelloPanel.infoOverUninstallKey"
+        txt="De de-installatie zal als naam krijgen: " />
 
-    <str id="LicencePanel.info" txt="Lees a.u.b. de volgende licentie overeenkomst :"/>
-    <str id="LicencePanel.agree" txt="Ik accepteer de voorwaarden van deze licentie"/>
-    <str id="LicencePanel.notagree" txt="Ik accepteer de voorwaarden van deze licentie niet"/>
-    <str id="LicencePanel.yes" txt="Ja"/>
-    <str id="LicencePanel.no" txt="Nee"/>
-    
-    <str id="InfoPanel.info" txt="Lees a.u.b. de volgende informatie :"/>
-    
-    <str id="PathInputPanel.required" txt="De gekozen map moet reeds bestaan."/>
-    <str id="PathInputPanel.notValid" txt="De gekozen map bevat niet het vereiste product."/>
+    <str id="LicencePanel.info"
+        txt="Lees a.u.b. de volgende licentie overeenkomst :" />
+    <str id="LicencePanel.agree"
+        txt="Ik accepteer de voorwaarden van deze licentie" />
+    <str id="LicencePanel.notagree"
+        txt="Ik accepteer de voorwaarden van deze licentie niet" />
+    <str id="LicencePanel.yes" txt="Ja" />
+    <str id="LicencePanel.no" txt="Nee" />
 
-    <str id="TargetPanel.info" txt="Selecteer de installatiemap:"/>
-    <str id="TargetPanel.browse" txt="Bladeren ..."/>
-    <str id="TargetPanel.warn" 
-         txt="Deze map bestaat al. Wilt u doorgaan en het risico lopen dat bestanden worden overschreven?"/>
+    <str id="InfoPanel.info" txt="Lees a.u.b. de volgende informatie :" />
+
+    <str id="PathInputPanel.required"
+        txt="De gekozen map moet reeds bestaan." />
+    <str id="PathInputPanel.notValid"
+        txt="De gekozen map bevat niet het vereiste product." />
+
+    <str id="TargetPanel.info" txt="Selecteer de installatiemap:" />
+    <str id="TargetPanel.browse" txt="Bladeren ..." />
+    <str id="TargetPanel.warn"
+        txt="Deze map bestaat al. Wilt u doorgaan en het risico lopen dat bestanden worden overschreven?" />
     <str id="TargetPanel.empty_target"
-         txt="U heeft geen installatiemap ingevuld. Wilt u toch doorgaan?"/>
-    <str id="TargetPanel.createdir" txt="de installatiemap zal worden aangemaakt :" />
-    <str id="TargetPanel.nodir" 
-         txt="Uw keuze is geen map! Kies s.v.p. een map!"/>
-    <str id="TargetPanel.notwritable" 
-         txt="Schrijven in deze map niet mogelijk! Kies s.v.p. een andere map!"/>
-    
-    <str id="JDKPathPanel.extendedIntro" txt="Het programma heeft een Java Development Kit (JDK) met een versienummer tussen ${JDKPathPanel.minVersion} en ${JDKPathPanel.maxVersion}. Een Java Runtime Environment (JRE) is niet voldoende."/>
-    <str id="JDKPathPanel.intro" txt="Het programma heeft een JDK nodig. Een Java Runtime omgeving (JRE) zal niet voldoende zijn."/>
-    <str id="JDKPathPanel.info" txt="Selecteer het JDK pad:"/>
-    <str id="JDKPathPanel.badVersion1" txt="De JDK van uw keuze heeft een verkeerde versie (beschikbaar: "/>
-    <str id="JDKPathPanel.badVersion2" txt=" vereist: "/>
-    <str id="JDKPathPanel.badVersion3" txt=") wilt u toch deze JDK gebruiken?"/>
+        txt="U heeft geen installatiemap ingevuld. Wilt u toch doorgaan?" />
+    <str id="TargetPanel.createdir"
+        txt="de installatiemap zal worden aangemaakt :" />
+    <str id="TargetPanel.nodir"
+        txt="Uw keuze is geen map! Kies s.v.p. een map!" />
+    <str id="TargetPanel.notwritable"
+        txt="Schrijven in deze map niet mogelijk! Kies s.v.p. een andere map!" />
 
-    <str id="PacksPanel.info" txt="Selecteer de pakketten die u wilt installeren :"/>
-    <str id="PacksPanel.tip" txt="NB: Uitgegrijsde pakketten zijn verplicht."/>
-    <str id="PacksPanel.space" txt="Totaal benodigde ruimte: "/>
-    <str id="PacksPanel.freespace" txt="Beschikbare ruimte: "/>
-    <str id="PacksPanel.description" txt="Omschrijving"/>
-    <str id="PacksPanel.dependencyList" txt="Het geselecteerde pakket vereist installatie van de volgende pakketten"/>
-    <str id="PacksPanel.notEnoughSpace" txt="Schijfruimte nodig voor installatie overtreft beschikbare schijfruimte."/>
-    <str id="PacksPanel.notAscertainable" txt="niet vast te stellen"/>
-    
-    <str id="InstallPanel.info" txt="Klik 'Installeer' om de installatie te beginnen."/>
-    <str id="InstallPanel.install" txt="Installeer !"/>
-    <str id="InstallPanel.tip" txt="Pakket installatie voortgang:"/>
-    <str id="InstallPanel.begin" txt="[Niks]"/>
-    <str id="InstallPanel.finished" txt="[Klaar]"/>
-    <str id="InstallPanel.progress" txt="Voortgang installatieprocedure:"/>
-    <str id="InstallPanel.overwrite.title" txt="Bestand bestaat al"/>
-    <str id="InstallPanel.overwrite.question" txt="Het volgende bestand bestaat al. Moet het worden overschreven?"/>
-    
-    <str id="FinishPanel.success" txt="Installatie is geslaagd."/>
-    <str id="FinishPanel.done" txt="Gereed"/>
-    <str id="FinishPanel.fail" txt="Installatie is mislukt!"/>
-    <str id="FinishPanel.uninst.info" txt="Een deïnstallatie programma is geïnstalleerd in:"/>
-    <str id="FinishPanel.auto" txt="Maak een automatisch installatie-script."/>
-    <str id="FinishPanel.auto.tip" 
-         txt="Gebruik dit script om de installatie te herhalen op andere computers."/>
-    
-    <str id="ImgPacksPanel.packs" txt="The volgende pakketten zijn beschikbaar :"/>
-    <str id="ImgPacksPanel.snap" txt="Pakket schermafdruk:"/>
-    <str id="ImgPacksPanel.checkbox" txt=" Installeer dit pakket"/>
-    <str id="ImgPacksPanel.dependencyList" txt="Afhankelijkheden"/>
+    <str id="JDKPathPanel.extendedIntro"
+        txt="Het programma heeft een Java Development Kit (JDK) met een versienummer tussen ${JDKPathPanel.minVersion} en ${JDKPathPanel.maxVersion}. Een Java Runtime Environment (JRE) is niet voldoende." />
+    <str id="JDKPathPanel.intro"
+        txt="Het programma heeft een JDK nodig. Een Java Runtime omgeving (JRE) zal niet voldoende zijn." />
+    <str id="JDKPathPanel.info" txt="Selecteer het JDK pad:" />
+    <str id="JDKPathPanel.badVersion1"
+        txt="De JDK van uw keuze heeft een verkeerde versie (beschikbaar: " />
+    <str id="JDKPathPanel.badVersion2" txt=" vereist: " />
+    <str id="JDKPathPanel.badVersion3"
+        txt=") wilt u toch deze JDK gebruiken?" />
 
-    <str id="ShortcutPanel.headline" txt="Instellen snelkoppelingen"/>    
-    <str id="ShortcutPanel.regular.list" txt="Selecteer een programma groep voor de snelkoppelingen:"/>
-    <str id="ShortcutPanel.regular.default" txt="Standaardwaarde"/>
-    <str id="ShortcutPanel.regular.desktop" txt="Maak snelkoppelingen op de desktop."/>
-    <str id="ShortcutPanel.regular.StartMenu:Start-Menu" txt="Start-Menu"/>
-    <str id="ShortcutPanel.regular.StartMenu:K-Menu" txt="K-Menu"/>
+    <str id="PacksPanel.info"
+        txt="Selecteer de pakketten die u wilt installeren :" />
+    <str id="PacksPanel.tip"
+        txt="NB: Uitgegrijsde pakketten zijn verplicht." />
+    <str id="PacksPanel.space" txt="Totaal benodigde ruimte: " />
+    <str id="PacksPanel.freespace" txt="Beschikbare ruimte: " />
+    <str id="PacksPanel.description" txt="Omschrijving" />
+    <str id="PacksPanel.dependencyList"
+        txt="Het geselecteerde pakket vereist installatie van de volgende pakketten" />
+    <str id="PacksPanel.notEnoughSpace"
+        txt="Schijfruimte nodig voor installatie overtreft beschikbare schijfruimte." />
+    <str id="PacksPanel.notAscertainable" txt="niet vast te stellen" />
 
-    <str id="ShortcutPanel.regular.create" txt="Maak Snelkoppelingen"/>
-    <str id="ShortcutPanel.regular.userIntro" txt="Maak snelkoppeling voor:"/>
-    <str id="ShortcutPanel.regular.currentUser" txt="huidige gebruiker "/>
-    <str id="ShortcutPanel.regular.allUsers" txt="alle gebruikers "/> 
-    
-    <str id="ShortcutPanel.alternate.apology" txt="Helaas ondersteunt IzPack het maken van snelkoppelingen op dit besturingssysteem niet. Raadpleeg de handleiding van uw besturingssysteem voor het aanmaken van de snelkoppelingen."/>
-    <str id="ShortcutPanel.alternate.targetsLabel" txt="Hier volgt een lijst van snelkoppelingen die de maker van de software u wilde geven"/>
-    <str id="ShortcutPanel.alternate.textFileExplanation" txt="U kunt gedetailleerde informatie over de snelkoppelingen opslaan in een tekstbestand voor toekomstig gebruik."/>
-    <str id="ShortcutPanel.alternate.saveButton" txt="Tekstbestand opslaan"/>
-    
-    <str id="ShortcutPanel.textFile.header" txt="Snelkoppeling informatie\n========================\n\nHier volgt een lijst van alle relevante informatie over de gewenste\nsnelkoppelingen. Deze informatie zou het u mogelijk moeten maken om de\nsnelkoppelingen handmatig aan te brengen\n"/>
-    
-    <str id="ShortcutPanel.textFile.name"         txt="Snelkoppeling     : "/>
-    <str id="ShortcutPanel.textFile.location"     txt="Gewenste Locatie  : "/>
-    <str id="ShortcutPanel.textFile.description"  txt="Omschrijving      : "/>
-    <str id="ShortcutPanel.textFile.target"       txt="Doelbestand       : "/>
-    <str id="ShortcutPanel.textFile.command"      txt="Opdrachtregel     : "/>
-    <str id="ShortcutPanel.textFile.iconName"     txt="Icoon Bestand     : "/>
-    <str id="ShortcutPanel.textFile.iconIndex"    txt="Icoon Index       : "/>
-    <str id="ShortcutPanel.textFile.work"         txt="Werkmap           : "/>
+    <str id="InstallPanel.info"
+        txt="Klik 'Installeer' om de installatie te beginnen." />
+    <str id="InstallPanel.install" txt="Installeer !" />
+    <str id="InstallPanel.tip" txt="Pakket installatie voortgang:" />
+    <str id="InstallPanel.begin" txt="[Niks]" />
+    <str id="InstallPanel.finished" txt="[Klaar]" />
+    <str id="InstallPanel.progress"
+        txt="Voortgang installatieprocedure:" />
+    <str id="InstallPanel.overwrite.title" txt="Bestand bestaat al" />
+    <str id="InstallPanel.overwrite.question"
+        txt="Het volgende bestand bestaat al. Moet het worden overschreven?" />
 
-    <str id="ShortcutPanel.location.desktop"      txt="Bureaublad"/>
-    <str id="ShortcutPanel.location.applications" txt="Programma Menu"/>
-    <str id="ShortcutPanel.location.startMenu"    txt="Start Menu"/>
-    <str id="ShortcutPanel.location.startup"      txt="Opstart Groep"/>
+    <str id="FinishPanel.success" txt="Installatie is geslaagd." />
+    <str id="FinishPanel.done" txt="Gereed" />
+    <str id="FinishPanel.fail" txt="Installatie is mislukt!" />
+    <str id="FinishPanel.uninst.info"
+        txt="Een deïnstallatie programma is geïnstalleerd in:" />
+    <str id="FinishPanel.auto"
+        txt="Maak een automatisch installatie-script." />
+    <str id="FinishPanel.auto.tip"
+        txt="Gebruik dit script om de installatie te herhalen op andere computers." />
 
-    <str id="UserInputPanel.error.caption"        txt="Invoer Probleem"/>
-    <str id="UserInputPanel.search.autodetect"    txt="Automatisch zoeken"/>
+    <str id="ImgPacksPanel.packs"
+        txt="The volgende pakketten zijn beschikbaar :" />
+    <str id="ImgPacksPanel.snap" txt="Pakket schermafdruk:" />
+    <str id="ImgPacksPanel.checkbox" txt=" Installeer dit pakket" />
+    <str id="ImgPacksPanel.dependencyList" txt="Afhankelijkheden" />
 
+    <str id="ShortcutPanel.headline" txt="Instellen snelkoppelingen" />
+    <str id="ShortcutPanel.regular.list"
+        txt="Selecteer een programma groep voor de snelkoppelingen:" />
+    <str id="ShortcutPanel.regular.default" txt="Standaardwaarde" />
+    <str id="ShortcutPanel.regular.desktop"
+        txt="Maak snelkoppelingen op de desktop." />
+    <str id="ShortcutPanel.regular.StartMenu:Start-Menu"
+        txt="Start-Menu" />
+    <str id="ShortcutPanel.regular.StartMenu:K-Menu" txt="K-Menu" />
+
+    <str id="ShortcutPanel.regular.create" txt="Maak Snelkoppelingen" />
+    <str id="ShortcutPanel.regular.userIntro"
+        txt="Maak snelkoppeling voor:" />
+    <str id="ShortcutPanel.regular.currentUser"
+        txt="huidige gebruiker " />
+    <str id="ShortcutPanel.regular.allUsers" txt="alle gebruikers " />
+
+    <str id="ShortcutPanel.alternate.apology"
+        txt="Helaas ondersteunt IzPack het maken van snelkoppelingen op dit besturingssysteem niet. Raadpleeg de handleiding van uw besturingssysteem voor het aanmaken van de snelkoppelingen." />
+    <str id="ShortcutPanel.alternate.targetsLabel"
+        txt="Hier volgt een lijst van snelkoppelingen die de maker van de software u wilde geven" />
+    <str id="ShortcutPanel.alternate.textFileExplanation"
+        txt="U kunt gedetailleerde informatie over de snelkoppelingen opslaan in een tekstbestand voor toekomstig gebruik." />
+    <str id="ShortcutPanel.alternate.saveButton"
+        txt="Tekstbestand opslaan" />
+
+    <str id="ShortcutPanel.textFile.header"
+        txt="Snelkoppeling informatie\n========================\n\nHier volgt een lijst van alle relevante informatie over de gewenste\nsnelkoppelingen. Deze informatie zou het u mogelijk moeten maken om de\nsnelkoppelingen handmatig aan te brengen\n" />
+
+    <str id="ShortcutPanel.textFile.name" txt="Snelkoppeling     : " />
+    <str id="ShortcutPanel.textFile.location"
+        txt="Gewenste Locatie  : " />
+    <str id="ShortcutPanel.textFile.description"
+        txt="Omschrijving      : " />
+    <str id="ShortcutPanel.textFile.target" txt="Doelbestand       : " />
+    <str id="ShortcutPanel.textFile.command" txt="Opdrachtregel     : " />
+    <str id="ShortcutPanel.textFile.iconName"
+        txt="Icoon Bestand     : " />
+    <str id="ShortcutPanel.textFile.iconIndex"
+        txt="Icoon Index       : " />
+    <str id="ShortcutPanel.textFile.work" txt="Werkmap           : " />
+
+    <str id="ShortcutPanel.location.desktop" txt="Bureaublad" />
+    <str id="ShortcutPanel.location.applications" txt="Programma Menu" />
+    <str id="ShortcutPanel.location.startMenu" txt="Start Menu" />
+    <str id="ShortcutPanel.location.startup" txt="Opstart Groep" />
+
+    <str id="UserInputPanel.error.caption" txt="Invoer Probleem" />
+    <str id="UserInputPanel.search.autodetect" txt="Automatisch zoeken" />
+
     <!-- more descriptive error message would be cool, like specifying what file we looked for -->
-    <str id="UserInputPanel.search.autodetect.failed.message"    txt="Het automatisch zoeken is mislukt."/>
-    <str id="UserInputPanel.search.autodetect.failed.caption"    txt="Automatisch zoeken mislukt"/>
-    <str id="UserInputPanel.search.autodetect.tooltip"           txt="Zoek naar het bestand of de map in de hierboven aangegeven paden."/>
-    <str id="UserInputPanel.search.location"           txt="Geef de locatie van {0}"/>
-    <str id="UserInputPanel.search.location.checkedfile" txt="Het bestaan van {0} is gecontroleerd."/>
-    <str id="UserInputPanel.search.browse"           txt="Bladeren..."/>
-    <str id="UserInputPanel.search.wrongselection.message"   txt="Het bestand of de map die u gekozen hebt bestaat niet of is niet bruikbaar."/>
-    <str id="UserInputPanel.search.wrongselection.caption"   txt="Ongeldige selectie"/>
+    <str id="UserInputPanel.search.autodetect.failed.message"
+        txt="Het automatisch zoeken is mislukt." />
+    <str id="UserInputPanel.search.autodetect.failed.caption"
+        txt="Automatisch zoeken mislukt" />
+    <str id="UserInputPanel.search.autodetect.tooltip"
+        txt="Zoek naar het bestand of de map in de hierboven aangegeven paden." />
+    <str id="UserInputPanel.search.location"
+        txt="Geef de locatie van {0}" />
+    <str id="UserInputPanel.search.location.checkedfile"
+        txt="Het bestaan van {0} is gecontroleerd." />
+    <str id="UserInputPanel.search.browse" txt="Bladeren..." />
+    <str id="UserInputPanel.search.wrongselection.message"
+        txt="Het bestand of de map die u gekozen hebt bestaat niet of is niet bruikbaar." />
+    <str id="UserInputPanel.search.wrongselection.caption"
+        txt="Ongeldige selectie" />
 
     <str id="CompilePanel.heading" txt="Compilatie" />
     <str id="CompilePanel.tip" txt="Voortgang compilatie taak:" />
     <str id="CompilePanel.browse" txt="Bladeren..." />
     <str id="CompilePanel.browse.approve" txt="Gebruik als compiler" />
     <str id="CompilePanel.start" txt="Start" />
-    <str id="CompilePanel.progress.initial" txt="[Druk op de start knop]" />
+    <str id="CompilePanel.progress.initial"
+        txt="[Druk op de start knop]" />
     <str id="CompilePanel.progress.finished" txt="[gereed]" />
     <str id="CompilePanel.progress.overall" txt="Voortgang compilatie:" />
     <str id="CompilePanel.error" txt="Compilatie mislukt" />
     <str id="CompilePanel.error.reconfigure" txt="Herconfigureer" />
     <str id="CompilePanel.error.ignore" txt="Negeren" />
     <str id="CompilePanel.error.abort" txt="Afbreken" />
-    <str id="CompilePanel.error.seebelow" txt="Zie onderstaande voor het mislukte commando en de uitvoer." />
-    <str id="CompilePanel.error.nofiles" txt="Fout bij het zoeken naar bestanden voor compilatie." />
-    <str id="CompilePanel.error.compilernotfound" txt="De compiler kon niet worden gestart." />
-    <str id="CompilePanel.error.invalidarguments" txt="Ongeldige parameters meegegeven aan de compiler." />
-    <str id="CompilePanel.error.noclassfile" txt="De compiler heeft geen class-bestand gemaakt voor het source-bestand " />
+    <str id="CompilePanel.error.seebelow"
+        txt="Zie onderstaande voor het mislukte commando en de uitvoer." />
+    <str id="CompilePanel.error.nofiles"
+        txt="Fout bij het zoeken naar bestanden voor compilatie." />
+    <str id="CompilePanel.error.compilernotfound"
+        txt="De compiler kon niet worden gestart." />
+    <str id="CompilePanel.error.invalidarguments"
+        txt="Ongeldige parameters meegegeven aan de compiler." />
+    <str id="CompilePanel.error.noclassfile"
+        txt="De compiler heeft geen class-bestand gemaakt voor het source-bestand " />
     <str id="CompilePanel.choose_compiler" txt="Te gebruiken compiler:" />
-    <str id="CompilePanel.additional_arguments" txt="Extra compiler parameters:" />
+    <str id="CompilePanel.additional_arguments"
+        txt="Extra compiler parameters:" />
 
     <str id="ProcessPanel.heading" txt="Bezig" />
 
     <!-- Strings for the summary of panels - START -->
-    <str id="SummaryPanel.info" txt="Gereed voor installatie. Belangrijke gegevens staan hieronder opgesomd. Druk op &quot;Volgende&quot; om de installatie te starten."/>
-    <str id="TargetPanel.summaryCaption" txt="Installatie pad"/>
-    <str id="JDKPathPanel.summaryCaption" txt="JDK pad"/>
-    <str id="PacksPanel.summaryCaption" txt="Gekozen installatiepakketten"/>
-    <str id="ImgPacksPanel.summaryCaption" txt="Gekozen installatie pakketten"/>
+    <str id="SummaryPanel.info"
+        txt="Gereed voor installatie. Belangrijke gegevens staan hieronder opgesomd. Druk op &quot;Volgende&quot; om de installatie te starten." />
+    <str id="TargetPanel.summaryCaption" txt="Installatie pad" />
+    <str id="JDKPathPanel.summaryCaption" txt="JDK pad" />
+    <str id="PacksPanel.summaryCaption"
+        txt="Gekozen installatiepakketten" />
+    <str id="ImgPacksPanel.summaryCaption"
+        txt="Gekozen installatie pakketten" />
     <!-- Strings for the summary of panels - END -->
 
     <!-- Strings for the Registry -->
-    <str id="functionFailed.RegOpenKeyEx" txt="Kan registersleutel {0}\\{1} niet openen."/>
-    
+    <str id="functionFailed.RegOpenKeyEx"
+        txt="Kan registersleutel {0}\\{1} niet openen." />
+
     <!-- Add your own panels specific strings here if you need -->
 
 </langpack>

Modified: izpack-src/trunk/src/ant.properties
===================================================================
--- izpack-src/trunk/src/ant.properties	2006-09-25 04:19:33 UTC (rev 1618)
+++ izpack-src/trunk/src/ant.properties	2006-09-25 05:03:12 UTC (rev 1619)
@@ -2,3 +2,4 @@
 dist.dir=${basedir}/${dist.subdir}
 build.subdir=_build
 build.dir=${basedir}/${build.subdir}
+product=IzPack
\ No newline at end of file

Modified: izpack-src/trunk/src/build.xml
===================================================================
--- izpack-src/trunk/src/build.xml	2006-09-25 04:19:33 UTC (rev 1618)
+++ izpack-src/trunk/src/build.xml	2006-09-25 05:03:12 UTC (rev 1619)
@@ -148,9 +148,11 @@
 	    Extracted / Reordered some dist related targets to prevent double copy actions.
         Also fixed the fix.crlf basedir
         
-  27.08.27: (Marc Eppelmann)
-      Embedd ShortcutPanel*.java        
-      
+	27.08.2006: (Marc Eppelmann)
+      Embedd ShortcutPanel*.java     
+        
+  14.09.2006: (Marc Eppelmann)   
+      Added target src.tar.gz and clean.src.tar.gz
               
   Mini-HowTo:
 
@@ -190,7 +192,7 @@
 
     <property file="src/ant.properties" />
     <property name="ver" value="3.9" />
-    <property name="rel" value="0-preview1" />
+    <property name="rel" value="0" />
     <property name="build.number" value="${ver}.${rel}" />
 
     <property name="src.dir" value="${basedir}/src/lib" />
@@ -430,8 +432,12 @@
                 <exclude name="com/izforge/izpack/gui/IzPackKMetalTheme.class" />
                 <include name="net/n3/nanoxml/*.class" />
             </fileset>
-            <fileset dir="${build.dir}/com/izforge/izpack/util"/>
-            <fileset dir="${img.dir}/uninstaller" />
+            <fileset dir="${build.dir}">
+              <include name="com/izforge/izpack/util/**/*.class"/>
+            </fileset>
+            <fileset dir="${img.dir}/uninstaller">
+              <include name="**/*"/>
+            </fileset>
         </jar>
     </target>
 
@@ -445,7 +451,11 @@
                deprecation="on"
                debug="${debug}"
                debuglevel="${debuglevel}">
-            <include name="com/izforge/izpack/util/os/*.java" />
+            <include name="com/izforge/izpack/util/*.java" />
+            <include name="com/izforge/izpack/util/os/*.java"/>
+            <include name="com/izforge/izpack/util/os/unix/*.java"/>
+            <include name="com/izforge/izpack/util/xml/*.java"/>
+          
             <exclude name="com/izforge/izpack/gui/IzPackKMetalTheme.java" />
             <include name="net/n3/nanoxml/*.java" />
         </javac>
@@ -455,13 +465,7 @@
     <target name="build.uninstaller-ext" depends="compile.uninstaller-ext">
         <jar jarfile="${uninstaller-ext.jar}">
             <fileset dir="${build.dir}">
-                <include name="com/izforge/izpack/util/Librarian.class" />
-                <include name="com/izforge/izpack/util/Housekeeper.class" />
-                <include name="com/izforge/izpack/util/TargetFactory.class" />
-                <include name="com/izforge/izpack/util/FreeThread.class" />
-                <include name="com/izforge/izpack/util/CleanupClient.class" />
-                <include name="com/izforge/izpack/util/NativeLibraryClient.class" />
-                <!-- Add helper etc. you need for uninstallation -->
+                <include name="com/izforge/izpack/util/**/*.class"/>
             </fileset>
         </jar>
     </target>
@@ -833,11 +837,12 @@
     	    <delete file="bin/native/3rdparty/COIOSHelper.dll" />
         <delete dir="${basedir}/bin/native/izpack" />
         <delete includeEmptyDirs="true" dir="${basedir}/doc/izpack" />
+        <delete dir="${basedir}/_src${dist.subdir}"/>
     </target>
 
     <!-- Builds all compilation targets -->
     <target name="all"
-            depends="splashscreen, build.compiler, build.installer, build.uninstaller, build.uninstaller-ext, build.panels, build.listeners, build.standalone-compiler" description="base: compiles a developer version"/>
+            depends="splashscreen, src.tar.gz, build.compiler, build.installer, build.uninstaller, build.uninstaller-ext, build.panels, build.listeners, build.standalone-compiler" description="base: compiles a developer version"/>
 
     <!-- Builds the Javadoc -->
     <target name="build.javadoc" depends="prepare" description="Builds the javadoc">
@@ -981,7 +986,7 @@
                 installerType="standard"
                 basedir="${dist.dir}"
                 izPackDir="${dist.dir}/"
-                compression="raw"
+                compression="deflate"
                 compressionlevel="9" />
     	<echo>
 sucessfully created:
@@ -1003,7 +1008,7 @@
     <target name="generate.installer" depends="prepare.install.dist">
         <antcall target="exec.izpack.compiler">
             <param name="installer.xmlfile" value="IzPack-install.xml" />
-            <param name="installer.name" value="IzPack-install-" />
+            <param name="installer.name" value="${product}-install-" />
         </antcall>
     </target>
 
@@ -1054,7 +1059,24 @@
     <target name="cleandistreg"
             depends="clean, splashscreen, dist, generate.installer"
             description="creates a full dist with Win32 uninstall registry support" />
+  
+    <!-- ================================= 
+          target: clean.src.tar.gz              
+         ================================= -->
+    <target name="clean.src.tar.gz" depends="clean, src.tar.gz" description="--> creates a src.tar.gz after clean up">
+    </target>
 
+  
+    <!-- ================================= 
+          target: src.tar.gz              
+         ================================= -->
+    <target name="src.tar.gz"  description="--> creates a src.tar.gz ">
+      <mkdir dir="${basedir}/_src${dist.subdir}"/>
+      <property name="src.tar.gz" value="${basedir}/_src${dist.subdir}/${product}.src.${ver}.${rel}.tar.gz"/>
+      <tar compression="gzip" destfile="${src.tar.gz}" basedir="${basedir}" excludes="_src${dist.subdir}/**, _dist/**, _build/**, bin/panels/**, bin/customActions/**, doc/izpack/**, eclipse-bin/**, lib/standalone-compiler.jar, lib/izevent.jar, lib/uninstaller*, lib/installer.jar, lib/compiler.jar"/>
+    </target>
+
+
     <!-- convenient :) makes a quick dist (w/o docu), an installer and run them. -->
     <target name="quickdist+run"
             depends="quickdist, run.installer"

Modified: izpack-src/trunk/src/dist-files/IzPack-install.xml
===================================================================
--- izpack-src/trunk/src/dist-files/IzPack-install.xml	2006-09-25 04:19:33 UTC (rev 1618)
+++ izpack-src/trunk/src/dist-files/IzPack-install.xml	2006-09-25 05:03:12 UTC (rev 1619)
@@ -23,7 +23,7 @@
     <!-- The info section -->
     <info>
         <appname>IzPack</appname>
-        <appversion>3.9.0-preview1 (build 2006.06.23)</appversion>
+        <appversion>3.9.0 (build 2006.09.25)</appversion>
         <authors>
             <author email="" name="Julien Ponge (maintainer and original developer)"/>
 
@@ -39,6 +39,7 @@
             <author email="" name="Scott Starks @JBoss/RedHat (contributors)" />
             <author email="" name="Alex Pinkin @JBoss/RedHat (contributors)" />
             <author email="" name="Dennis Reil (contributor)" />
+            <author email="" name="Thomas Edwin Santosa (contributor)" />
 
             <author email=""
                     name="... the many other developers and contributors to the previous releases (see Thanks.txt)"/>
@@ -55,7 +56,7 @@
         </laf>
         <!-- GUI addaption for more informations see "Modifying the GUI" in the documentation -->
     	<modifier key="layoutAnchor" value="CENTER"/>
-    	<modifier key="headingPanelCounter" value="text"/>
+    	<modifier key="headingPanelCounter" value="progressbar"/>
 		<modifier key="headingPanelCounterPos" value="inNavigationPanel"/>
 		<modifier key="allYGap" value="3"/>
 		<modifier key="paragraphYGap" value="10"/>	
@@ -100,7 +101,7 @@
     <resources>
         <res src="install-readme.html" id="HTMLInfoPanel.info"/>
         <res src="Licence.txt" id="LicencePanel.licence"/>
-        <res src="splash-sydney.png" id="installer.langsel.img"/>
+        <res src="splash-3.9.png" id="installer.langsel.img"/>
         <res src="shortcutSpec.xml" id="shortcutSpec.xml"/>
         <res src="Unix_shortcutSpec.xml" id="Unix_shortcutSpec.xml"/>
         <res src="core.png" id="ImgPacksPanel.img.0"/>

Modified: izpack-src/trunk/src/dist-files/Unix_shortcutSpec.xml
===================================================================
--- izpack-src/trunk/src/dist-files/Unix_shortcutSpec.xml	2006-09-25 04:19:33 UTC (rev 1618)
+++ izpack-src/trunk/src/dist-files/Unix_shortcutSpec.xml	2006-09-25 05:03:12 UTC (rev 1619)
@@ -17,6 +17,24 @@
 	If you whant to do so, set createForAll to true otherwise to false, which is the default.
 	
 	! If not explicite set or present the default is false.	
+	
+	New Attibute for Root Installation on Linux:	
+		 
+	Categories="Development;IDE" 
+	   
+	TryExec="java -jar &quot;$INSTALL_PATH/Uninstaller/uninstaller.jar&quot;"
+	   
+    Here are some Sample Categories and their apps
+		 examine *.desktop files in /usr/share/applications ...
+     Categories="Application;Network;WebDevelopment"    Nvu
+	 Categories="Qt;Development;GUIDesigner"    QtDesigner3
+	 Categories="Application;System;"   VwareServer-console  
+	 Categories="Network;WebBrowser"    Opera
+	 Categories="Development;Debugger"    DDD debugger
+     Categories="Development;IDE"    Eclipse IDE
+	 Categories="SystemSetup;X-SuSE-Core-System" Yast2
+	 Categories="System;Archiving" Sesam archiving
+    
 -->
 
 <shortcuts>
@@ -55,7 +73,7 @@
      startup="no"
      target="$INSTALL_PATH/bin/start.sh"
      workingDirectory=""
-     commandLine="$INSTALL_PATH/doc/izpack/xhtml/index.html"
+     commandLine="$INSTALL_PATH/doc/izpack/xhtml/izpack-doc.html"
      initialState="noShow"
      iconFile="help"
      iconIndex="0" 
@@ -131,18 +149,7 @@
      
      <createForPack name="PDF Documentation"/>
    </shortcut>
-   
-   <!-- Some Sample Categories and their apps
-		 examine *.desktop files in /usr/share/applications ...
-     Categories="Application;Network;WebDevelopment"    Nvu
-	 Categories="Qt;Development;GUIDesigner"    QtDesigner3
-	 Categories="Application;System;"   VwareServer-console  
-	 Categories="Network;WebBrowser"    Opera
-	 Categories="Development;Debugger"    DDD debugger
-     Categories="Development;IDE"    Eclipse IDE
-	 Categories="SystemSetup;X-SuSE-Core-System" Yast2
-	 Categories="System;Archiving" Sesam archiving
-    -->  	
+
       
    <shortcut
      name="Izpack at ver@ Uninstaller"

Modified: izpack-src/trunk/src/dist-files/shortcutSpec.xml
===================================================================
--- izpack-src/trunk/src/dist-files/shortcutSpec.xml	2006-09-25 04:19:33 UTC (rev 1618)
+++ izpack-src/trunk/src/dist-files/shortcutSpec.xml	2006-09-25 05:03:12 UTC (rev 1619)
@@ -33,7 +33,7 @@
      applications="no"
      startMenu="no"
      startup="no"
-     target="$INSTALL_PATH\doc\izpack\xhtml\index.html"
+     target="$INSTALL_PATH\doc\izpack\xhtml\izpack-doc.html"
      commandLine=""
      description="This opens a WebBrowser to look into the IzPack @build.number@ (HTML) user documentation">
           

Copied: izpack-src/trunk/src/dist-files/splash-3.8.png (from rev 1617, izpack-src/branches/branch-3.9/src/dist-files/splash-3.8.png)

Copied: izpack-src/trunk/src/dist-files/splash-3.9.png (from rev 1617, izpack-src/branches/branch-3.9/src/dist-files/splash-3.9.png)

Deleted: izpack-src/trunk/src/dist-files/splash-sydney.png
===================================================================
(Binary files differ)

Modified: izpack-src/trunk/src/doc-ng/XHTML/node4.html
===================================================================
--- izpack-src/trunk/src/doc-ng/XHTML/node4.html	2006-09-25 04:19:33 UTC (rev 1618)
+++ izpack-src/trunk/src/doc-ng/XHTML/node4.html	2006-09-25 05:03:12 UTC (rev 1619)
@@ -723,7 +723,7 @@
 <p>In order to provide internationalization for the PacksPanel, so that your users can be presented with a different name and description for each language you support, you have to create a file named
 <tt>packsLang.xml_xyz</tt> where <tt>xyz</tt> is the ISO3 code of the language in lowercase. Please be aware that case is significant. This file has to be inserted in the resources section of <tt>
 install.xml</tt> with the <tt>id</tt> and <tt>src</tt> attributes set at the name of the file. The format of these files is identical with the distribution langpack files located at <tt>
-$IZPACK_HOME/install/langpacks/installer</tt>. For the name of the panel you just use the pack <tt>id</tt> as the txt <tt>id</tt>. For the description you use the pack <tt>id</tt> suffixed with <tt>
+$IZPACK_HOME/bin/langpacks/installer</tt>. For the name of the panel you just use the pack <tt>id</tt> as the txt <tt>id</tt>. For the description you use the pack <tt>id</tt> suffixed with <tt>
 '.description'</tt>. </p>
 
 <p>The following sections describe the tags available for a <tt>&lt;pack&gt;</tt> section.</p>

Modified: izpack-src/trunk/src/lib/com/izforge/izpack/compiler/Compiler.java
===================================================================
--- izpack-src/trunk/src/lib/com/izforge/izpack/compiler/Compiler.java	2006-09-25 04:19:33 UTC (rev 1618)
+++ izpack-src/trunk/src/lib/com/izforge/izpack/compiler/Compiler.java	2006-09-25 05:03:12 UTC (rev 1619)
@@ -25,21 +25,6 @@
 
 package com.izforge.izpack.compiler;
 
-import java.io.File;
-import java.io.IOException;
-import java.net.MalformedURLException;
-import java.net.URL;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-import java.util.Properties;
-import java.util.Set;
-import java.util.jar.JarInputStream;
-import java.util.zip.ZipEntry;
-
 import com.izforge.izpack.CustomData;
 import com.izforge.izpack.GUIPrefs;
 import com.izforge.izpack.Info;
@@ -47,6 +32,14 @@
 import com.izforge.izpack.util.Debug;
 import com.izforge.izpack.util.VariableSubstitutor;
 
+import java.io.File;
+import java.io.IOException;
+import java.net.MalformedURLException;
+import java.net.URL;
+import java.util.*;
+import java.util.jar.JarInputStream;
+import java.util.zip.ZipEntry;
+
 /**
  * The IzPack compiler class. This is now a java bean style class that can be
  * configured using the object representations of the install.xml
@@ -62,7 +55,7 @@
 public class Compiler extends Thread
 {
     /** The IzPack version. */
-    public final static String IZPACK_VERSION = "3.8.1";
+    public final static String IZPACK_VERSION = "3.9.0";
 
     /** The IzPack home directory. */
     public static String IZPACK_HOME = ".";

Modified: izpack-src/trunk/src/lib/com/izforge/izpack/installer/InstallerFrame.java
===================================================================
--- izpack-src/trunk/src/lib/com/izforge/izpack/installer/InstallerFrame.java	2006-09-25 04:19:33 UTC (rev 1618)
+++ izpack-src/trunk/src/lib/com/izforge/izpack/installer/InstallerFrame.java	2006-09-25 05:03:12 UTC (rev 1619)
@@ -793,27 +793,13 @@
             }
             // write the files which should be deleted by root for another user
             
-            // TODO:
-            outJar.putNextEntry(new ZipEntry(UninstallData.RootFiles));
+            outJar.putNextEntry(new ZipEntry(UninstallData.ROOTSCRIPT));
             ObjectOutputStream rootStream = new ObjectOutputStream(outJar);
             
-            Hashtable rootData = udata.getRootData();
+            String rootScript = udata.getRootScript();           
             
-            Enumeration e = rootData.keys();
+            rootStream.writeUTF(rootScript);
             
-            rootStream.writeInt(rootData.size());
-            
-            while (e.hasMoreElements())
-            {
-                //File file = iter.next();
-                String file = (String) e.nextElement();
-                
-                rootStream.writeObject(file);
-                
-                UnixUser uu = (UnixUser) rootData.get(file);
-                
-                rootStream.writeObject(uu);
-            }
             rootStream.flush();
             outJar.closeEntry();
 

Modified: izpack-src/trunk/src/lib/com/izforge/izpack/installer/UninstallData.java
===================================================================
--- izpack-src/trunk/src/lib/com/izforge/izpack/installer/UninstallData.java	2006-09-25 04:19:33 UTC (rev 1618)
+++ izpack-src/trunk/src/lib/com/izforge/izpack/installer/UninstallData.java	2006-09-25 05:03:12 UTC (rev 1619)
@@ -55,7 +55,7 @@
     private Map additionalData;
     
     /** Filesmap which should removed by the root user for another user */
-    private Hashtable rootData;
+    private String rootScript;
 
     /** The constructor. */
     private UninstallData()
@@ -63,10 +63,11 @@
         filesList = new ArrayList();
         executablesList = new ArrayList();
         additionalData = new HashMap();
-        rootData = new Hashtable();
+        rootScript = new String();
     }
     
-    public final static String RootFiles = "rootfiles";
+    /** Constant RootFiles = "rootfiles" */
+    public final static String ROOTSCRIPT = "rootscript";
 
     /**
      * Returns the instance (it is a singleton).
@@ -181,14 +182,13 @@
     }
 
     /**
-     * Adds the given File to delete as Root for the given User.
+     * Adds the given File to delete several Shortcuts as Root for the given Users.
      * 
-     * @param aFilePath The file to delete.
-     * @param aUser a User to delete for
+     * @param aRootUninstallScript The Script to exec as Root at uninstall.
      */
-    public void addRootAsUserFile( String aFilePath, UnixUser aUser )
+    public void addRootUninstallScript( String aRootUninstallScript )
     {    
-        rootData.put(aFilePath, aUser);
+        rootScript = new String( aRootUninstallScript==null?"":aRootUninstallScript );
     }
     
     /**
@@ -196,9 +196,9 @@
      * 
      * @return root data
      */
-    public Hashtable getRootData()
+    public String getRootScript()
     {
-        return rootData;
+        return rootScript;
     }
     
     

Modified: izpack-src/trunk/src/lib/com/izforge/izpack/panels/ShortcutPanel.java
===================================================================
--- izpack-src/trunk/src/lib/com/izforge/izpack/panels/ShortcutPanel.java	2006-09-25 04:19:33 UTC (rev 1618)
+++ izpack-src/trunk/src/lib/com/izforge/izpack/panels/ShortcutPanel.java	2006-09-25 05:03:12 UTC (rev 1619)
@@ -17,12 +17,24 @@
  */
 package com.izforge.izpack.panels;
 
-import java.awt.Dimension;
-import java.awt.GridBagConstraints;
-import java.awt.GridBagLayout;
-import java.awt.GridLayout;
-import java.awt.Insets;
-import java.awt.LayoutManager2;
+import com.izforge.izpack.ExecutableFile;
+import com.izforge.izpack.Pack;
+import com.izforge.izpack.gui.ButtonFactory;
+import com.izforge.izpack.gui.LabelFactory;
+import com.izforge.izpack.installer.*;
+import com.izforge.izpack.util.*;
+import com.izforge.izpack.util.os.Shortcut;
+import com.izforge.izpack.util.os.unix.UnixHelper;
+import com.izforge.izpack.util.xml.XMLHelper;
+import net.n3.nanoxml.*;
+
+import javax.swing.*;
+import javax.swing.border.Border;
+import javax.swing.border.EmptyBorder;
+import javax.swing.border.TitledBorder;
+import javax.swing.event.ListSelectionEvent;
+import javax.swing.event.ListSelectionListener;
+import java.awt.*;
 import java.awt.event.ActionEvent;
 import java.awt.event.ActionListener;
 import java.io.File;
@@ -32,51 +44,6 @@
 import java.util.Enumeration;
 import java.util.Vector;
 
-import javax.swing.ButtonGroup;
-import javax.swing.JButton;
-import javax.swing.JCheckBox;
-import javax.swing.JFileChooser;
-import javax.swing.JLabel;
-import javax.swing.JList;
-import javax.swing.JPanel;
-import javax.swing.JRadioButton;
-import javax.swing.JScrollPane;
-import javax.swing.JTextField;
-import javax.swing.ListSelectionModel;
-import javax.swing.border.Border;
-import javax.swing.border.EmptyBorder;
-import javax.swing.border.TitledBorder;
-import javax.swing.event.ListSelectionEvent;
-import javax.swing.event.ListSelectionListener;
-
-import net.n3.nanoxml.NonValidator;
-import net.n3.nanoxml.StdXMLBuilder;
-import net.n3.nanoxml.StdXMLParser;
-import net.n3.nanoxml.StdXMLReader;
-import net.n3.nanoxml.XMLElement;
-
-import com.izforge.izpack.ExecutableFile;
-import com.izforge.izpack.Pack;
-import com.izforge.izpack.gui.ButtonFactory;
-import com.izforge.izpack.gui.LabelFactory;
-import com.izforge.izpack.installer.AutomatedInstallData;
-import com.izforge.izpack.installer.InstallData;
-import com.izforge.izpack.installer.InstallerFrame;
-import com.izforge.izpack.installer.IzPanel;
-import com.izforge.izpack.installer.ResourceNotFoundException;
-import com.izforge.izpack.installer.UninstallData;
-import com.izforge.izpack.util.Debug;
-import com.izforge.izpack.util.FileExecutor;
-import com.izforge.izpack.util.MultiLineLabel;
-import com.izforge.izpack.util.OsConstraint;
-import com.izforge.izpack.util.OsVersion;
-import com.izforge.izpack.util.StringTool;
-import com.izforge.izpack.util.TargetFactory;
-import com.izforge.izpack.util.VariableSubstitutor;
-import com.izforge.izpack.util.os.Shortcut;
-import com.izforge.izpack.util.os.unix.UnixHelper;
-import com.izforge.izpack.util.xml.XMLHelper;
-
 //
 // import com.izforge.izpack.panels.ShortcutData;
 
@@ -131,10 +98,10 @@
     private static final String LOCATION_START_MENU = "startMenu";
     
     /** SPEC_CATEGORIES = "categories" */   
-    private static final String SPEC_CATEGORIES = "categories";
+    public static final String SPEC_CATEGORIES = "categories";
     
     /** SPEC_TRYEXEC = "tryexec" */
-    private static final String SPEC_TRYEXEC = "tryexec";
+    public static final String SPEC_TRYEXEC = "tryexec";
     
 
     /**
@@ -701,7 +668,8 @@
         }
         else
         {
-            ; // parent.skipPanel ();
+            // Skip on OS X
+            parent.skipPanel();
         }
     }
 
@@ -1221,9 +1189,9 @@
                 continue;
             }
         }
+        
+        shortcut.execPostAction();
 
-        // }
-        //
         try
         {
             if (execFiles != null)
@@ -1249,7 +1217,8 @@
             cannot.printStackTrace();
         }
 
-        // /////parent.unlockNextButton();
+        
+        shortcut.cleanUp();
     }
 
     /*--------------------------------------------------------------------------*/
@@ -1926,7 +1895,9 @@
                     : Boolean.FALSE).toString());
 
             // Boolean.valueOf(data.addToGroup)
-            dataElement.setAttribute(AUTO_ATTRIBUTE_TYPE, Integer.toString(data.type));
+            if(OsVersion.IS_WINDOWS)
+            
+              dataElement.setAttribute(AUTO_ATTRIBUTE_TYPE, Integer.toString(data.type));
             dataElement.setAttribute(AUTO_ATTRIBUTE_COMMAND, data.commandLine);
             dataElement.setAttribute(AUTO_ATTRIBUTE_DESCRIPTION, data.description);
             dataElement.setAttribute(AUTO_ATTRIBUTE_ICON, data.iconFile);
@@ -1941,7 +1912,8 @@
             dataElement.setAttribute( SPEC_ATTRIBUTE_MIMETYPE, data.deskTopEntryLinux_MimeType );
             dataElement.setAttribute( SPEC_ATTRIBUTE_TERMINAL, data.deskTopEntryLinux_Terminal );
             dataElement.setAttribute( SPEC_ATTRIBUTE_TERMINAL_OPTIONS, data.deskTopEntryLinux_TerminalOptions );
-            dataElement.setAttribute( SPEC_ATTRIBUTE_TYPE, data.deskTopEntryLinux_Type );
+            if(! OsVersion.IS_WINDOWS )
+              dataElement.setAttribute( SPEC_ATTRIBUTE_TYPE, data.deskTopEntryLinux_Type );
 
             dataElement.setAttribute( SPEC_ATTRIBUTE_URL, data.deskTopEntryLinux_URL );
 

Modified: izpack-src/trunk/src/lib/com/izforge/izpack/panels/ShortcutPanelAutomationHelper.java
===================================================================
--- izpack-src/trunk/src/lib/com/izforge/izpack/panels/ShortcutPanelAutomationHelper.java	2006-09-25 04:19:33 UTC (rev 1618)
+++ izpack-src/trunk/src/lib/com/izforge/izpack/panels/ShortcutPanelAutomationHelper.java	2006-09-25 05:03:12 UTC (rev 1619)
@@ -1,34 +1,26 @@
 /*
  * $Id: copyright-notice-template 1421 2006-03-12 16:32:32Z jponge $
  * IzPack - Copyright 2001-2006 Julien Ponge, All Rights Reserved.
- * 
+ *
  * http://www.izforge.com/izpack/
  * http://developer.berlios.de/projects/izpack/
- * 
+ *
  * Copyright 2006 Marc Eppelmann (marc.eppelmann&#064;gmx.de)
  *
  * Licensed 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.
  */
- 
 package com.izforge.izpack.panels;
 
-import java.io.File;
-import java.util.ArrayList;
-import java.util.Enumeration;
-import java.util.Vector;
-
-import net.n3.nanoxml.XMLElement;
-
 import com.izforge.izpack.ExecutableFile;
 import com.izforge.izpack.installer.AutomatedInstallData;
 import com.izforge.izpack.installer.PanelAutomation;
@@ -36,33 +28,50 @@
 import com.izforge.izpack.util.Debug;
 import com.izforge.izpack.util.FileExecutor;
 import com.izforge.izpack.util.OsConstraint;
+import com.izforge.izpack.util.OsVersion;
 import com.izforge.izpack.util.TargetFactory;
 import com.izforge.izpack.util.os.Shortcut;
 
+import net.n3.nanoxml.XMLElement;
+
+import java.io.File;
+
+import java.util.ArrayList;
+import java.util.Enumeration;
+import java.util.Vector;
+
 /**
- * The ShortcutPanelAutomationHelper is responsible to create Shortcuts
- * during the automated installation.
- * Most code comes copied from the ShortcutPanel 
+ * The ShortcutPanelAutomationHelper is responsible to create Shortcuts during the automated
+ * installation. Most code comes copied from the ShortcutPanel
  * 
  * @author Marc Eppelmann (marc.eppelmann&#064;gmx.de)
  * @version $Revision: 1540 $
- * 
  */
 public class ShortcutPanelAutomationHelper implements PanelAutomation
 {
 
+    // ~ Methods ****************************************************************************
+
     /**
      * dummy method
+     * 
+     * @param idata DOCUMENT ME!
+     * @param panelRoot DOCUMENT ME!
      */
     public void makeXMLData(AutomatedInstallData idata, XMLElement panelRoot)
     {
         Debug.log(this.getClass().getName() + "::entering makeXMLData()");
+
         // ShortcutPanel.getInstance().makeXMLData( idata, panelRoot );
-
     }
 
     /**
-     * Implementation of the Shortcut Specific Automation Code 
+     * Implementation of the Shortcut Specific Automation Code
+     * 
+     * @param installData DOCUMENT ME!
+     * @param panelRoot DOCUMENT ME!
+     * 
+     * @return DOCUMENT ME!
      */
     public boolean runAutomated(AutomatedInstallData installData, XMLElement panelRoot)
     {
@@ -95,6 +104,7 @@
         {
             Debug.log("Could not create shortcut instance");
             exception.printStackTrace();
+
             return true;
         }
 
@@ -106,12 +116,14 @@
         if (!shortcut.supported())
         {
             Debug.log("shortcuts not supported here");
+
             return true;
         }
 
         if (!OsConstraint.oneMatchesCurrentSystem(panelRoot))
         {
             Debug.log("Shortcuts Not oneMatchesCurrentSystem");
+
             return true;
         }
 
@@ -125,6 +137,7 @@
         // set the name of the program group
         // ----------------------------------------------------
         dataElement = panelRoot.getFirstChildNamed(ShortcutPanel.AUTO_KEY_PROGRAM_GROUP);
+
         String groupName = dataElement.getAttribute(ShortcutPanel.AUTO_ATTRIBUTE_NAME);
 
         if (groupName == null)
@@ -147,12 +160,12 @@
             data.addToGroup = Boolean.valueOf(
                     dataElement.getAttribute(ShortcutPanel.AUTO_ATTRIBUTE_GROUP)).booleanValue();
 
-            try
+            if (OsVersion.IS_WINDOWS)
             {
                 data.type = Integer.valueOf(
                         dataElement.getAttribute(ShortcutPanel.AUTO_ATTRIBUTE_TYPE)).intValue();
             }
-            catch (NumberFormatException e)
+            else
             {
                 Debug.log("WARN: On Linux data.type is NOT an int. Ignored.");
             }
@@ -185,32 +198,46 @@
                     "");
 
             data.deskTopEntryLinux_X_KDE_SubstituteUID = dataElement.getAttribute(
-                    ShortcutPanel.SPEC_ATTRIBUTE_KDE_SUBST_UID, "");
+                    ShortcutPanel.SPEC_ATTRIBUTE_KDE_SUBST_UID, "false");
 
+            data.deskTopEntryLinux_X_KDE_UserName = dataElement.getAttribute(
+                    ShortcutPanel.SPEC_ATTRIBUTE_KDE_USERNAME, "root");
+
+            data.Categories = dataElement.getAttribute(ShortcutPanel.SPEC_CATEGORIES,
+                    "Application;Development");
+
+            data.TryExec = dataElement.getAttribute(ShortcutPanel.SPEC_TRYEXEC, "");
+
             data.createForAll = new Boolean(dataElement.getAttribute(ShortcutPanel.CREATE_FOR_ALL,
                     "false"));
             data.userType = Integer.valueOf(
                     dataElement.getAttribute(ShortcutPanel.USER_TYPE, Integer
                             .toString(Shortcut.CURRENT_USER))).intValue();
             // END LINUX
-
             shortcuts.add(data);
         }
 
         System.out.print("[ Creating shortcuts ");
 
         // ShortcutData data;
-
         for (int i = 0; i < shortcuts.size(); i++)
         {
             data = (ShortcutData) shortcuts.elementAt(i);
 
             try
             {
-                groupName = groupName + data.subgroup;
+                if( data.subgroup!=null )
+                {
+                  groupName = groupName + data.subgroup;
+                }
                 shortcut.setUserType(data.userType);
                 shortcut.setLinkName(data.name);
-                shortcut.setLinkType(data.type);
+
+                if (OsVersion.IS_WINDOWS)
+                {
+                    shortcut.setLinkType(data.type);
+                }
+
                 shortcut.setArguments(data.commandLine);
                 shortcut.setDescription(data.description);
                 shortcut.setIconLocation(data.iconFile, data.iconIndex);
@@ -223,7 +250,12 @@
 
                 shortcut.setTerminal(data.deskTopEntryLinux_Terminal);
                 shortcut.setTerminalOptions(data.deskTopEntryLinux_TerminalOptions);
-                shortcut.setType(data.deskTopEntryLinux_Type);
+
+                if (!OsVersion.IS_WINDOWS)
+                {
+                    shortcut.setType(data.deskTopEntryLinux_Type);
+                }
+
                 shortcut.setKdeSubstUID(data.deskTopEntryLinux_X_KDE_SubstituteUID);
                 shortcut.setURL(data.deskTopEntryLinux_URL);
                 shortcut.setCreateForAll(data.createForAll);
@@ -239,9 +271,7 @@
 
                 try
                 {
-
                     // save the shortcut
-
                     System.out.print(".");
                     System.out.flush();
 
@@ -280,7 +310,6 @@
                             files.add(0, filesEnum.nextElement().toString());
                         }
                     }
-
                 }
                 catch (Exception exception)
                 {}
@@ -317,6 +346,7 @@
         {
             cannot.printStackTrace();
         }
+
         System.out.println(" done. ]");
         System.out.print("[ Add shortcuts to uninstaller ");
 
@@ -333,5 +363,4 @@
 
         return true;
     }
-
 }

Modified: izpack-src/trunk/src/lib/com/izforge/izpack/uninstaller/Destroyer.java
===================================================================
--- izpack-src/trunk/src/lib/com/izforge/izpack/uninstaller/Destroyer.java	2006-09-25 04:19:33 UTC (rev 1618)
+++ izpack-src/trunk/src/lib/com/izforge/izpack/uninstaller/Destroyer.java	2006-09-25 05:03:12 UTC (rev 1619)
@@ -24,10 +24,10 @@
 import java.io.InputStream;
 import java.io.InputStreamReader;
 import java.io.ObjectInputStream;
+import java.io.PrintWriter;
+import java.io.StringWriter;
 import java.util.ArrayList;
 import java.util.Collections;
-import java.util.Enumeration;
-import java.util.Hashtable;
 import java.util.Iterator;
 import java.util.List;
 import java.util.TreeSet;
@@ -38,10 +38,10 @@
 import com.izforge.izpack.util.AbstractUIProgressHandler;
 import com.izforge.izpack.util.Debug;
 import com.izforge.izpack.util.FileExecutor;
+import com.izforge.izpack.util.OsVersion;
 import com.izforge.izpack.util.os.unix.ShellScript;
-import com.izforge.izpack.util.os.unix.UnixHelper;
-import com.izforge.izpack.util.os.unix.UnixUser;
 
+
 /**
  * The files destroyer class.
  * 
@@ -113,9 +113,11 @@
 
             // Custem action listener stuff --- afterDeletion ----
             informListeners(listeners[0], UninstallerListener.AFTER_DELETION, files, handler);
-
-            removeRootFiles(getRootFiles());
-
+            
+            if( OsVersion.IS_UNIX )
+            {
+              execRootScript(getRootScript());
+            }
             // We make a complementary cleanup
             handler.progress(size, "[ cleanups ]");
             cleanup(new File(installPath));
@@ -126,7 +128,18 @@
         {
             handler.stopAction();
             err.printStackTrace();
-            handler.emitError("exception caught", err.toString());
+           
+            StackTraceElement str[] = err.getStackTrace();
+            for(int idx = 0; idx < str.length;idx++)
+            {
+                 
+            }
+            
+            StringWriter trace = new StringWriter();
+            //err.printStackTrace(new PrintStream);
+            err.printStackTrace(new PrintWriter(trace));
+                        
+            handler.emitError("exception caught", err.toString() + "\n" + trace.toString() );
         }
     }
 
@@ -179,6 +192,11 @@
         return new ArrayList(files);
     }
 
+    /**
+     * Gets the List of all Executables
+     * @return The ArrayList of the Executables
+     * @throws Exception
+     */
     private ArrayList getExecutablesList() throws Exception
     {
         ArrayList executables = new ArrayList();
@@ -199,59 +217,32 @@
      * @return The files which should remove by root for another user
      * @throws Exception
      */
-    private Hashtable getRootFiles() throws Exception
+    private String getRootScript() throws Exception
     {
-        Hashtable result = new Hashtable();
+        String result = new String();
         ObjectInputStream in = new ObjectInputStream(Destroyer.class.getResourceAsStream("/"
-                + UninstallData.RootFiles));
-        int num = in.readInt();
-        for (int i = 0; i < num; i++)
-        {
-            String file = (String) in.readObject();
+                + UninstallData.ROOTSCRIPT));
+        
+        result = in.readUTF();
 
-            UnixUser user = (UnixUser) in.readObject();
-            result.put(file, user);
-        }
+        
         return result;
     }
 
     /**
      * Removes the given files as root for the given Users
      * 
-     * @param entries The files to reomove for the users
+     * @param aRootScript The Script to exec as uninstall time by root. 
      */
-    private void removeRootFiles(Hashtable entries)
+    private void execRootScript(String aRootScript)
     {
-        Enumeration e = entries.keys();
-
-        String su = UnixHelper.getSuCommand();
-        String rm = UnixHelper.getCustomCommand("rm");
-        String S = " ";
-
-        while (e.hasMoreElements())
+        if(!"".equals(aRootScript))
         {
-            String filename = (String) e.nextElement();
-            UnixUser user = (UnixUser) entries.get(filename);
+            Debug.log("Will Execute: " + aRootScript.toString());
 
-            StringBuffer script = new StringBuffer();
-
-            script.append(su);
-            script.append(S);
-            script.append(user.getName());
-            script.append(S);
-            script.append("-c");
-            script.append(S);
-            script.append('"');
-            script.append(rm);
-            script.append(S);
-            script.append(filename);
-            script.append('"');
-
-            Debug.log("Executes: " + script.toString());
-
             try
             {
-                String result = ShellScript.execAndDelete(script, File.createTempFile(
+                String result = ShellScript.execAndDelete(new StringBuffer( aRootScript ), File.createTempFile(
                         this.getClass().getName(),
                         Long.toString(System.currentTimeMillis()) + ".sh").toString());
                 Debug.log("Result: " + result);
@@ -260,8 +251,7 @@
             {
                 Debug.log("Exeption during su remove: " + ex.getMessage());
             }
-
-        }
+        }        
     }
 
     /**

Modified: izpack-src/trunk/src/lib/com/izforge/izpack/util/os/Shortcut.java
===================================================================
--- izpack-src/trunk/src/lib/com/izforge/izpack/util/os/Shortcut.java	2006-09-25 04:19:33 UTC (rev 1618)
+++ izpack-src/trunk/src/lib/com/izforge/izpack/util/os/Shortcut.java	2006-09-25 05:03:12 UTC (rev 1619)
@@ -25,6 +25,7 @@
 import java.util.Vector;
 
 import com.izforge.izpack.installer.UninstallData;
+import com.izforge.izpack.util.Debug;
 
 /*---------------------------------------------------------------------------*/
 /**
@@ -540,6 +541,25 @@
         uninstaller = theUninstaller;
     }
 
+    /**
+     * Dummy Method especially for the Unix Root User. 
+     *
+     */
+    public void execPostAction()
+    {
+        //Debug.log("Call of unused execPostAction Method in " + this.getClass().getName() );
+    }
+
+    /**
+     * Clean Up Method to do some cleanups after Shortcut Creation. 
+     * <br>
+     * currently unused.
+     */
+    public void cleanUp()
+    {
+        //Debug.log("Call of unused cleanUp Method in " + this.getClass().getName() );     
+    }
+
 }
 /*---------------------------------------------------------------------------*/
 

Modified: izpack-src/trunk/src/lib/com/izforge/izpack/util/os/Unix_Shortcut.java
===================================================================
--- izpack-src/trunk/src/lib/com/izforge/izpack/util/os/Unix_Shortcut.java	2006-09-25 04:19:33 UTC (rev 1618)
+++ izpack-src/trunk/src/lib/com/izforge/izpack/util/os/Unix_Shortcut.java	2006-09-25 05:03:12 UTC (rev 1619)
@@ -50,7 +50,6 @@
  */
 package com.izforge.izpack.util.os;
 
-import com.izforge.izpack.uninstaller.Uninstaller;
 import com.izforge.izpack.util.Debug;
 import com.izforge.izpack.util.FileExecutor;
 import com.izforge.izpack.util.OsVersion;
@@ -81,8 +80,6 @@
 public class Unix_Shortcut extends Shortcut implements Unix_ShortcutConstants
 {
 
-    // ~ Static fields/initializers *********************************************************
-
     // ~ Static fields/initializers
     // *******************************************************************************************************************************
     /** version = "$Id$" */
@@ -111,9 +108,12 @@
 
     /** QM = "\"" : <b>Q</b>uotation<b>M</b>ark */
     private final static String QM = "\"";
-
-    // ~ Instance fields ********************************************************************
-
+    
+    private static ShellScript rootScript = null;
+    private static ShellScript uninstallScript = null;
+    private static ArrayList users = UnixUsers.getUsersWithValidShellsExistingHomesAndDesktops();
+    //private static ArrayList tempfiles = new ArrayList();
+ 
     // ~ Instance fields
     // ******************************************************************************************************************************************
     /** internal String createdDirectory */
@@ -142,7 +142,7 @@
      */
     private Boolean forAll = Boolean.FALSE;
 
-    /** DOCUMENT ME! */
+    /** Internal Help Buffer */
     public StringBuffer hlp;
 
     // ~ Constructors ***********************************************************************
@@ -159,7 +159,7 @@
         String userLanguage = System.getProperty("user.language", "en");
 
         hlp.append("[Desktop Entry]" + N);
-        
+
         // TODO implement Attribute: X-KDE-StartupNotify=true
 
         hlp.append("Categories=" + $Categories + N);
@@ -200,6 +200,11 @@
         props = new Properties();
 
         initProps();
+        
+        if( rootScript==null )
+            rootScript = new ShellScript();
+        if( uninstallScript == null)
+            uninstallScript = new ShellScript();
     }
 
     // ~ Methods ****************************************************************************
@@ -402,6 +407,14 @@
     public void save() throws Exception
     {
         String FS = File.separator;
+        String chmod = UnixHelper.getCustomCommand("chmod");
+        String chown = UnixHelper.getCustomCommand("chown");
+        String rm = UnixHelper.getRmCommand();
+        String copy = UnixHelper.getCpCommand();
+        String su = UnixHelper.getSuCommand();
+        
+        String myHome=System.getProperty("user.home");
+        
         String target = null;
 
         String shortCutDef = this.replace();
@@ -412,7 +425,8 @@
         // Create The Desktop Shortcuts
         if ("".equals(this.itsGroupName) && (this.getLinkType() == Shortcut.DESKTOP))
         {
-            target = System.getProperty("user.home") + FS + "Desktop" + FS + this.itsName
+            
+            target = myHome + FS + "Desktop" + FS + this.itsName
                     + DESKTOP_EXT;
             this.itsFileName = target;
 
@@ -431,23 +445,25 @@
 
                 copyTo(writtenDesktopFile, tempFile);
 
-                Debug.log("Wrote Tempfile: " + tempFile.toString());
+                //Debug.log("Wrote Tempfile: " + tempFile.toString());               
 
-                String chmod = UnixHelper.getCustomCommand("chmod");
-                String chown = UnixHelper.getCustomCommand("chown");
-                String copy = UnixHelper.getCpCommand();
-                String su = UnixHelper.getSuCommand();
-
                 FileExecutor.getExecOutput(new String[] { chmod, "uga+rwx", tempFile.toString()});
 
                 // su marc.eppelmann -c "/bin/cp /home/marc.eppelmann/backup.job.out.txt
                 // /home/marc.eppelmann/backup.job.out2.txt"
-                ArrayList users = UnixUsers.getUsersWithValidShellsExistingHomesAndDesktops();
+                
+                //StringBuffer script = new StringBuffer();
+                //
 
                 for (int idx = 0; idx < users.size(); idx++)
                 {
                     UnixUser user = ((UnixUser) users.get(idx));
-
+                    
+                    if( user.getHome().equals(myHome) )
+                    {
+                       Debug.log( "need not to copy for itself: " + user.getHome() + "==" + myHome  );
+                       continue;
+                    }
                     try
                     {
                         // aHomePath = userHomesList[idx];
@@ -460,57 +476,56 @@
                         // by# su username
                         //
                         // This works as well
-                        // su username -c "cp /tmp/desktopfile $HOME/Desktop/link.desktop"
-                        //
-                        // copyTo(writtenDesktopFile, dest);
-                        Debug.log("Will Copy: " + tempFile.toString() + " to " + dest.toString());
+                        // su $username -c "cp /tmp/desktopfile $HOME/Desktop/link.desktop"
+                        // chown $username $HOME/Desktop/link.desktop
+                        
+                        //Debug.log("Will Copy: " + tempFile.toString() + " to " + dest.toString());
 
-                        StringBuffer script = new StringBuffer();
+                        rootScript.append(su);
+                        rootScript.append(S);
+                        rootScript.append(user.getName());
+                        rootScript.append(S);
+                        rootScript.append("-c");
+                        rootScript.append(S);
+                        rootScript.append('"');
+                        rootScript.append(copy);
+                        rootScript.append(S);
+                        rootScript.append(tempFile.toString());
+                        rootScript.append(S);
+                        rootScript.append(StringTool.replace(dest.toString(), " ", "\\ "));
+                        rootScript.appendln('"');
+                        
+                        rootScript.append('\n');
+                        
+                        //Debug.log("Will exec: " + script.toString());
+                        
+                        rootScript.append( chown );
+                        rootScript.append( S );
+                        rootScript.append( user.getName() );
+                        rootScript.append( S );
+                        rootScript.appendln( StringTool.replace(dest.toString(), " ", "\\ ") );
+                        rootScript.append('\n');
+                        rootScript.append('\n');
 
-                        script.append(su);
-                        script.append(S);
-                        script.append(user.getName());
-                        script.append(S);
-                        script.append("-c");
-                        script.append(S);
-                        script.append('"');
-                        script.append(copy);
-                        script.append(S);
-                        script.append(tempFile.toString());
-                        script.append(S);
-                        script.append(dest.toString());
-                        script.append('"');
-
-                        Debug.log("Executes: " + script.toString());
-
-                        String result = ShellScript.execAndDelete(script, File.createTempFile(
-                                this.getClass().getName(),
-                                Long.toString(System.currentTimeMillis()) + ".sh").toString());
-
-                        Debug.log("Result: " + result);
-
-                        uninstaller.addRootAsUserFile(dest.toString(), user);
-
-                        /*
-                         * FileExecutor.getExecOutput(new String[] { su, user.getName(), "-c", "\"" +
-                         * copy + " " + tempFile.toString() + " " + dest.toString() + "\""});
-                         */
-                        Debug.log("Copied: " + tempFile.toString() + " to " + dest.toString());
+                        //Debug.log("Will exec: " + script.toString());
                         
-                        try
-                        {
-                            FileExecutor.getExecOutput(new String[] { chown, user.getName(),
-                                    dest.toString()});
-                        }
-                        catch (RuntimeException rexx)
-                        {
-                            System.out.println("While Chown :" + rexx.getLocalizedMessage());
-                            rexx.printStackTrace();
-                        }
+                        uninstallScript.append(su);
+                        uninstallScript.append(S);
+                        uninstallScript.append(user.getName());
+                        uninstallScript.append(S);
+                        uninstallScript.append("-c");
+                        uninstallScript.append(S);
+                        uninstallScript.append('"');
+                        uninstallScript.append(rm);
+                        uninstallScript.append(S);
+                        uninstallScript.append(StringTool.replace(dest.toString(), " ", "\\ "));
+                        uninstallScript.appendln('"');
+                        uninstallScript.appendln();
+                        //Debug.log("Uninstall will exec: " + uninstallScript.toString());
                     }
                     catch (Exception rex)
                     {
-                        System.out.println("While Su Copy:" + rex.getLocalizedMessage());
+                        System.out.println("Error while su Copy: " + rex.getLocalizedMessage()+"\n\n");
                         rex.printStackTrace();
 
                         /* ignore */
@@ -518,17 +533,13 @@
                         // home (ls -la /home/user drwx------)
                         // But try it anyway...
                     }
+                }
+                
 
-                    
-                }
-                try
-                {
-                    tempFile.delete();
-                }
-                catch (Exception e)
-                {
-                    tempFile.deleteOnExit();
-                }
+                rootScript.append( rm );
+                rootScript.append( S );
+                rootScript.appendln( tempFile.toString());   
+                rootScript.appendln();
             }
         }
 
@@ -540,44 +551,79 @@
                     + DESKTOP_EXT;
             this.itsFileName = target;
             writeShortCut(target, shortCutDef);
-            
+
             if (rootUser4All)
             {
                 if (create4All)
                 {
                     // write the icon pixmaps into /usr/share/pixmaps
-                    
-                    File theIcon = new File( this.getIconLocation() );
-                    File commonIcon = new File( "/usr/share/pixmaps/" + theIcon.getName() );
-                    
+
+                    File theIcon = new File(this.getIconLocation());
+                    File commonIcon = new File("/usr/share/pixmaps/" + theIcon.getName());
+
                     try
                     {
-                      copyTo( theIcon, commonIcon  );
-                      uninstaller.addFile(commonIcon.toString());
+                        copyTo(theIcon, commonIcon);
+                        uninstaller.addFile(commonIcon.toString());
                     }
-                    catch(Exception cnc)
+                    catch (Exception cnc)
                     {
-                        Debug.log("Could Not Copy: " + theIcon + " to " + commonIcon + "( "+ cnc.getMessage() +" )" );                        
+                        Debug.log("Could Not Copy: " + theIcon + " to " + commonIcon + "( "
+                                + cnc.getMessage() + " )");
                     }
 
                     // write *.desktop.file into /usr/share/applications
 
-                    String commonTarget = "/usr/share/applications/" + this.itsName
-                    + DESKTOP_EXT;
+                    String commonTarget = "/usr/share/applications/" + this.itsName + DESKTOP_EXT;
                     this.itsFileName = target;
                     File writtenFile = writeShortCut(commonTarget, shortCutDef);
-                    
+
                     uninstaller.addFile(writtenFile.toString());
-                      
+
                 }
                 else
                 {
                     // do nothing
                 }
             }
-            
+
         }
     }
+    
+    
+    /**
+     * Post Exec Action especially for the Unix Root User.
+     * which executes the Root ShortCut Shellscript.
+     * to copy all ShellScripts to the users Desktop.
+     */
+    public void execPostAction()
+    {
+        Debug.log("Call of Impl. execPostAction Method in " + this.getClass().getName() );
+        
+        String pseudoUnique = this.getClass().getName()+ Long.toString(System.currentTimeMillis());
+        
+        String scriptFilename = null;
+        
+        try
+        {
+            scriptFilename = File.createTempFile( pseudoUnique, ".sh"  ).toString();
+        }
+        catch (IOException e)
+        {
+            scriptFilename = System.getProperty("java.io.tmpdir", "/tmp") + "/" + pseudoUnique + ".sh"; 
+            e.printStackTrace();
+        }
+        
+        rootScript.write(scriptFilename);
+        rootScript.exec();        
+        
+        Debug.log(rootScript);
+        
+        
+        Debug.log(uninstallScript);
+        
+        uninstaller.addRootUninstallScript( uninstallScript.getContentAsString() );
+    }
 
     /**
      * Copies the inFile file to outFile using cbuff as buffer.

Modified: izpack-src/trunk/src/lib/com/izforge/izpack/util/os/unix/ShellScript.java
===================================================================
--- izpack-src/trunk/src/lib/com/izforge/izpack/util/os/unix/ShellScript.java	2006-09-25 04:19:33 UTC (rev 1618)
+++ izpack-src/trunk/src/lib/com/izforge/izpack/util/os/unix/ShellScript.java	2006-09-25 05:03:12 UTC (rev 1619)
@@ -35,6 +35,8 @@
 {
 
     // ~ Static fields/initializers *********************************************************
+
+    // ~ Static fields/initializers *********************************************************
     /** Author = "marc.eppelmann_at_gmx.de" */
     private final static String Author = "Author: marc.eppelmann_at_gmx.de";
 
@@ -59,7 +61,7 @@
     /** lh = lf + H = "\n#" */
     private final static String lh = lf + H;
 
-    /** the explanation header for thia genreated script */
+    /** the explanation header for this generated script */
     private final static String explanation = lh + "This is an automatically generated Script."
             + lh + "Usually this can be removed if the Generator " + lh
             + "was unable to remove the script after execution." + lf;
@@ -67,10 +69,11 @@
     /** "Generated at: " + new Date().toString() */
     private static String currentDateMsg = "Generated at: " + new Date().toString();
 
-    /** the header of the shellscript */
+    /** the header of this ShellScript */
     private final static String header = lf + explanation + lf + H + Generator + lf + H + SCM_ID
             + lf + H + Author + lf + H + Revision + lf + H + currentDateMsg + lf + lf;
 
+    // ~ Instance fields ********************************************************************
 
     // ~ Instance fields ********************************************************************
     /** Internal ContentBuffer of this ShellScript */
@@ -80,6 +83,8 @@
     private String itsLocation;
 
     // ~ Constructors ***********************************************************************
+
+    // ~ Constructors ***********************************************************************
     /**
      * Creates and initializes the ShellScript for running on the given shell.
      * 
@@ -100,6 +105,8 @@
     }
 
     // ~ Methods ****************************************************************************
+
+    // ~ Methods ****************************************************************************
     /**
      * Appends an Object or String to this ShellScript.
      * 
@@ -111,16 +118,84 @@
     }
 
     /**
+     * Appends a Char to this ShellScript.
+     * 
+     * @param aChar a char to append
+     */
+    public void append(char aChar)
+    {
+        content.append(aChar);
+    }
+
+    /**
      * Appends an Object or String to this ShellScript with unix linefeed ("\n").
      * 
      * @param anObject the Object to append
      */
     public void appendln(Object anObject)
     {
-        append(anObject + lf);
+        append(anObject);
+        append(lf);
     }
 
     /**
+     * Appends a Char Object or String to this ShellScript with unix linefeed ("\n").
+     * 
+     * @param aChar a char to append
+     */
+    public void appendln(char aChar)
+    {
+        append(aChar);
+        append(lf);
+    }
+
+    /**
+     * Appends an Object or String to this ShellScript with unix linefeed ("\n").
+     */
+    public void appendln()
+    {
+        append(lf);
+    }
+
+    /**
+     * gets the Content of this Script.
+     * 
+     * @return the Content
+     */
+    public StringBuffer getContent()
+    {
+        return content;
+    }
+
+    /**
+     * Gets the Content of this Script as String 
+     * 
+     * @return the script as String
+     */
+    public String getContentAsString()
+    {
+        return content.toString();
+    }
+
+    /**
+     * Dumps the ShellScript Content, and Location.
+     * Use getContentAsString() to get this ShellScripts Content 
+     * 
+     * @return The ShellScript as Object dump.
+     */
+    public String toString()
+    {
+        StringBuffer result = new StringBuffer();
+        result.append(getClass().getName());
+        result.append('\n');
+        result.append(itsLocation);
+        result.append('\n');
+        result.append(content);
+
+        return result.toString();
+    }
+
+    /**
      * write this to the given Destination FileName
      * 
      * @param aDestination a destination filename
@@ -272,8 +347,11 @@
          * ShellScript s = new ShellScript( ); s.append( "ls $HOME" ); s.write( System.getProperty(
          * "user.home", "." ) + File.separator + "test.sh" );
          */
-        System.out.println(ShellScript.execute(new StringBuffer("ls $HOME"), System.getProperty(
-                "user.home", ".")
-                + File.separator + Long.toString(System.currentTimeMillis()) + "test.sh"));
+
+        /*
+         * System.out.println(ShellScript.execute(new StringBuffer("ls $HOME"), System.getProperty(
+         * "user.home", ".") + File.separator + Long.toString(System.currentTimeMillis()) +
+         * "test.sh"));
+         */
     }
 }

Modified: izpack-src/trunk/src/tests/com/izforge/izpack/Bin_Langpacks_InstallerTest.java
===================================================================
--- izpack-src/trunk/src/tests/com/izforge/izpack/Bin_Langpacks_InstallerTest.java	2006-09-25 04:19:33 UTC (rev 1618)
+++ izpack-src/trunk/src/tests/com/izforge/izpack/Bin_Langpacks_InstallerTest.java	2006-09-25 05:03:12 UTC (rev 1619)
@@ -197,6 +197,17 @@
         this.checkLangpack("hun.xml");
     }
     /**
+     * Checks the Indonesian language pack for missing / superfluous translations
+     * @throws Exception Forwarded Exception for the LocaleDatabase contructor, FileInputStream constructor or TreeMap containsKey method
+     * 
+     * @see com.izforge.izpack.LocaleDatabase#LocaleDatabase(java.io.InputStream)
+     * @see java.io.FileInputStream#FileInputStream(java.lang.String)
+     * @see java.util.TreeMap#containsKey(java.lang.Object)
+     */
+    public void testInd() throws Exception{
+        this.checkLangpack("ind.xml");
+    }
+    /**
      * Checks the Italian language pack for missing / superfluous translations
      * @throws Exception Forwarded Exception for the LocaleDatabase contructor, FileInputStream constructor or TreeMap containsKey method
      * 




More information about the izpack-changes mailing list