SlideShare ist ein Scribd-Unternehmen logo
1 von 66
IzPack: because you and your end users
                have installation issues

                             Julien Ponge
+
From a hack made in a student dorm room...




                                    ... not mine!
...to an industry-backed project.
Unique installer   Multiple systems
v2




Download for your operating system



1:   java -Xmx256m -jar filename.jar
2:   chmod -R +x lib/ant/bin
3:   lib/ant/bin/ant -f setup.xml
4:   bin/asadmin start-domain domain
Demo

 One download
 Works everywhere
 Straightforward
IzPack?
25.000 downloads per month?
(...)
Files to package              Installer resources




               XML descriptor


                         Compiler, Ant or Maven


                   Installer Jar
Custom panels




Custom actions    Installer Jar



 3rd-party libs
variables
                Config files,
                 scripts, ...




Content-aware
 replacement
raw         pack200




deflate (gzip)    bzip2
Uti lity s cripts
GlassFish Installer
 — making-of —
Compiler




Installer JAR
Compiler




Installer JAR
Compiler




Installer JAR
Compiler




Installer JAR
<installation version="1.0">

  <info>
    <appname>Glassfish</appname>
    <appversion>v2 ur2 b04</appversion>
    <authors>
      <author email=""
               name="Julien Ponge (packager)"/>
      <author email=""
               name="Sun Microsystems and the GlassFish community"/>
    </authors>
    <url>http://glassfish.org/</url>
    <javaversion>1.5</javaversion>
    <requiresjdk>yes</requiresjdk>
  </info>

                                (...)
(...)
<panels>
    <panel   classname="HTMLInfoPanel" />
    <panel   classname="HTMLLicencePanel" />
    <panel   classname="TargetPanel" />
    <panel   classname="UserInputPanel" />
    <panel   classname="InstallPanel" />
    <panel   classname="ProcessPanel" />
    <panel   classname="ShortcutPanel" />
    <panel   classname="SimpleFinishPanel" />
</panels>

                      (...)
<pack name="GlassFish" required="yes">
  <description>GlassFish</description>

  <file src="launch-browser.sh" targetdir="$INSTALL_PATH/bin"
        condition="izpack.macinstall" />

  <fileset dir="linux" targetdir="$INSTALL_PATH"
           condition="izpack.linuxinstall">
    <% linux_specific.each do |file| %>
        <include name="<%= file %>"/>
    <% end %>
  </fileset>

  <executable targetfile="$INSTALL_PATH/lib/ant/bin/ant"
              stage="never" os="unix" />
  <parsable targetfile="$INSTALL_PATH/bin/launch-browser.sh"
            os="unix" />
</pack>
<pack name="GlassFish" required="yes">
  <description>GlassFish</description>

  <file src="launch-browser.sh" targetdir="$INSTALL_PATH/bin"
        condition="izpack.macinstall" />

  <fileset dir="linux" targetdir="$INSTALL_PATH"
           condition="izpack.linuxinstall">
    <% linux_specific.each do |file| %>
        <include name="<%= file %>"/>
    <% end %>
  </fileset>

  <executable targetfile="$INSTALL_PATH/lib/ant/bin/ant"
              stage="never" os="unix" />
  <parsable targetfile="$INSTALL_PATH/bin/launch-browser.sh"
            os="unix" />
</pack>
<pack name="GlassFish" required="yes">
  <description>GlassFish</description>

  <file src="launch-browser.sh" targetdir="$INSTALL_PATH/bin"
        condition="izpack.macinstall" />

  <fileset dir="linux" targetdir="$INSTALL_PATH"
           condition="izpack.linuxinstall">
    <% linux_specific.each do |file| %>
        <include name="<%= file %>"/>
    <% end %>
  </fileset>                             Ant-style:
                                            **/*
  <executable targetfile="$INSTALL_PATH/lib/ant/bin/ant"
                                            dir/*.class
              stage="never" os="unix" />    **/*.jar
  <parsable targetfile="$INSTALL_PATH/bin/launch-browser.sh"
                                            lib/**/*.jar
            os="unix" />
</pack>
<pack name="GlassFish" required="yes">
  <description>GlassFish</description>

  <file src="launch-browser.sh" targetdir="$INSTALL_PATH/bin"
        condition="izpack.macinstall" />

  <fileset dir="linux" targetdir="$INSTALL_PATH"
           condition="izpack.linuxinstall">
    <% linux_specific.each do |file| %>
        <include name="<%= file %>"/>
    <% end %>
  </fileset>

  <executable targetfile="$INSTALL_PATH/lib/ant/bin/ant"
              stage="never" os="unix" />
  <parsable targetfile="$INSTALL_PATH/bin/launch-browser.sh"
            os="unix" />
</pack>
<guiprefs height="600" resizable="yes" width="800">
  <modifier key="allXGap" value="5"/>
  <modifier key="allYGap" value="5"/>
  <modifier key="paragraphYGap" value="15"/>
  <modifier key="useHeadingPanel" value="yes"/>
  <modifier key="headingLineCount" value="1"/>
  <modifier key="headingFontSize" value="2"/>
  <modifier key="headingBackgroundColor" value="0x00ffffff"/>
  <modifier key="headingPanelCounter" value="text"/>
  <modifier key="headingPanelCounterPos" value="inHeading"/>
</guiprefs>
<conditions>
  <condition
      type="variable"
      id="start.glassfish">
    <name>gf_start_domain</name>
      <value>true</value>
  </condition>
</conditions>
Demo
How about packaging
     systems?
(...)




Packages vs Installers
On Windows ?
On Mac OS X ?
On *nix ?
Initial installation

Bootstrap IPS + updates


    Uninstallation




  Updates + Add-ons
The next IzPack
The hype effect

     Patterns         TDD,            JSR xyz
                      BDD


...your application code will eventually look bad!

       Best                          Scripting
                    IoC & DI
     practices
Kudos to:
                  Anthonin Bonnefoy
      0-b eta     David Duponchel
 5.
                  Rene Krell



  PicoContainer

+ hamcrest
+ fest-swing                          JUnit
Developers

  SCM




             CVS then Subversion
Developers

  SCM
Try it today!
                4.3.3
                4.3.4-RC1
                5.0.0-beta
Opensource Projet
   Aftermath
F/OSS... why?
                    nothing’s free!


Fun   Skills   Advertise




Strategic market shares




Direct revenue streams
Project type       “Main” models

                   Consulting
Framework          Training
and libraries      Support
                   Dual licensing

                   Support plans
Mission-critical
                   Consulting
infrastructure
                   Management tools
servers
                   Extensions

                   Open Core
Products           Extensions
                   Customizations
Start         Easy
                    Solo work

     Users!


     Patches!


Community support

                    Hard to reach
  Mature project
                    Manager work
add this!



                           support that!



 it is not ready for the
enterprise unless you...



                           I expected it to do this
                                but it doesn’t!
<
Words       Code
Upstream




Monster patch (or raw files!)
“Given enough eyeballs,
 all bugs are shallow.”

         — Linus’s Law
Julien Ponge Q&A
                  @jponge   @izpack
   julien.ponge@gmail.com   http://izpack.org/
http://julien.ponge.info/

Weitere ähnliche Inhalte

Ähnlich wie IzPack at LyonJUG'11

Iz Pack
Iz PackIz Pack
Iz PackInria
 
Django dev-env-my-way
Django dev-env-my-wayDjango dev-env-my-way
Django dev-env-my-wayRobert Lujo
 
Tools and Process for Streamlining Mac Deployment
Tools and Process for Streamlining Mac DeploymentTools and Process for Streamlining Mac Deployment
Tools and Process for Streamlining Mac DeploymentTimothy Sutton
 
SenchaCon 2016: Building Enterprise Ext JS Apps with Mavenized Sencha Cmd - F...
SenchaCon 2016: Building Enterprise Ext JS Apps with Mavenized Sencha Cmd - F...SenchaCon 2016: Building Enterprise Ext JS Apps with Mavenized Sencha Cmd - F...
SenchaCon 2016: Building Enterprise Ext JS Apps with Mavenized Sencha Cmd - F...Sencha
 
"I have a framework idea" - Repeat less, share more.
"I have a framework idea" - Repeat less, share more."I have a framework idea" - Repeat less, share more.
"I have a framework idea" - Repeat less, share more.Fabio Milano
 
Dependencies Managers in C/C++. Using stdcpp 2014
Dependencies Managers in C/C++. Using stdcpp 2014Dependencies Managers in C/C++. Using stdcpp 2014
Dependencies Managers in C/C++. Using stdcpp 2014biicode
 
BP-6 Repository Customization Best Practices
BP-6 Repository Customization Best PracticesBP-6 Repository Customization Best Practices
BP-6 Repository Customization Best PracticesAlfresco Software
 
Riga Dev Day - Automated Android Continuous Integration
Riga Dev Day - Automated Android Continuous IntegrationRiga Dev Day - Automated Android Continuous Integration
Riga Dev Day - Automated Android Continuous IntegrationNicolas Fränkel
 
Dexterity in 15 minutes or less
Dexterity in 15 minutes or lessDexterity in 15 minutes or less
Dexterity in 15 minutes or lessrijk.stofberg
 
What makes me "Grunt"?
What makes me "Grunt"? What makes me "Grunt"?
What makes me "Grunt"? Fabien Doiron
 
Puppet: Eclipsecon ALM 2013
Puppet: Eclipsecon ALM 2013Puppet: Eclipsecon ALM 2013
Puppet: Eclipsecon ALM 2013grim_radical
 
Introduction to Maven
Introduction to MavenIntroduction to Maven
Introduction to MavenSperasoft
 
From Dev to DevOps - Codemotion ES 2012
From Dev to DevOps - Codemotion ES 2012From Dev to DevOps - Codemotion ES 2012
From Dev to DevOps - Codemotion ES 2012Carlos Sanchez
 
Burn down the silos! Helping dev and ops gel on high availability websites
Burn down the silos! Helping dev and ops gel on high availability websitesBurn down the silos! Helping dev and ops gel on high availability websites
Burn down the silos! Helping dev and ops gel on high availability websitesLindsay Holmwood
 

Ähnlich wie IzPack at LyonJUG'11 (20)

Iz Pack
Iz PackIz Pack
Iz Pack
 
Phing
PhingPhing
Phing
 
Django dev-env-my-way
Django dev-env-my-wayDjango dev-env-my-way
Django dev-env-my-way
 
Tools and Process for Streamlining Mac Deployment
Tools and Process for Streamlining Mac DeploymentTools and Process for Streamlining Mac Deployment
Tools and Process for Streamlining Mac Deployment
 
SenchaCon 2016: Building Enterprise Ext JS Apps with Mavenized Sencha Cmd - F...
SenchaCon 2016: Building Enterprise Ext JS Apps with Mavenized Sencha Cmd - F...SenchaCon 2016: Building Enterprise Ext JS Apps with Mavenized Sencha Cmd - F...
SenchaCon 2016: Building Enterprise Ext JS Apps with Mavenized Sencha Cmd - F...
 
"I have a framework idea" - Repeat less, share more.
"I have a framework idea" - Repeat less, share more."I have a framework idea" - Repeat less, share more.
"I have a framework idea" - Repeat less, share more.
 
Dependencies Managers in C/C++. Using stdcpp 2014
Dependencies Managers in C/C++. Using stdcpp 2014Dependencies Managers in C/C++. Using stdcpp 2014
Dependencies Managers in C/C++. Using stdcpp 2014
 
Maven
MavenMaven
Maven
 
BP-6 Repository Customization Best Practices
BP-6 Repository Customization Best PracticesBP-6 Repository Customization Best Practices
BP-6 Repository Customization Best Practices
 
Riga Dev Day - Automated Android Continuous Integration
Riga Dev Day - Automated Android Continuous IntegrationRiga Dev Day - Automated Android Continuous Integration
Riga Dev Day - Automated Android Continuous Integration
 
Write php deploy everywhere tek11
Write php deploy everywhere   tek11Write php deploy everywhere   tek11
Write php deploy everywhere tek11
 
Dexterity in 15 minutes or less
Dexterity in 15 minutes or lessDexterity in 15 minutes or less
Dexterity in 15 minutes or less
 
Heroku pycon
Heroku pyconHeroku pycon
Heroku pycon
 
What makes me "Grunt"?
What makes me "Grunt"? What makes me "Grunt"?
What makes me "Grunt"?
 
Puppet: Eclipsecon ALM 2013
Puppet: Eclipsecon ALM 2013Puppet: Eclipsecon ALM 2013
Puppet: Eclipsecon ALM 2013
 
Introduction to Maven
Introduction to MavenIntroduction to Maven
Introduction to Maven
 
From Dev to DevOps - Codemotion ES 2012
From Dev to DevOps - Codemotion ES 2012From Dev to DevOps - Codemotion ES 2012
From Dev to DevOps - Codemotion ES 2012
 
Liferay maven sdk
Liferay maven sdkLiferay maven sdk
Liferay maven sdk
 
Burn down the silos! Helping dev and ops gel on high availability websites
Burn down the silos! Helping dev and ops gel on high availability websitesBurn down the silos! Helping dev and ops gel on high availability websites
Burn down the silos! Helping dev and ops gel on high availability websites
 
Universal Userland
Universal UserlandUniversal Userland
Universal Userland
 

Mehr von julien.ponge

AlpesJUG - Communautés opensource, stratégies et écueils
AlpesJUG - Communautés opensource, stratégies et écueilsAlpesJUG - Communautés opensource, stratégies et écueils
AlpesJUG - Communautés opensource, stratégies et écueilsjulien.ponge
 
Java 7 at SoftShake 2011
Java 7 at SoftShake 2011Java 7 at SoftShake 2011
Java 7 at SoftShake 2011julien.ponge
 
Java 7 JUG Summer Camp
Java 7 JUG Summer CampJava 7 JUG Summer Camp
Java 7 JUG Summer Campjulien.ponge
 
Java 7 Launch Event at LyonJUG, Lyon France. Fork / Join framework and Projec...
Java 7 Launch Event at LyonJUG, Lyon France. Fork / Join framework and Projec...Java 7 Launch Event at LyonJUG, Lyon France. Fork / Join framework and Projec...
Java 7 Launch Event at LyonJUG, Lyon France. Fork / Join framework and Projec...julien.ponge
 
IzPack at Devoxx 2010
IzPack at Devoxx 2010IzPack at Devoxx 2010
IzPack at Devoxx 2010julien.ponge
 
Software Testing - Invited Lecture at UNSW Sydney
Software Testing - Invited Lecture at UNSW SydneySoftware Testing - Invited Lecture at UNSW Sydney
Software Testing - Invited Lecture at UNSW Sydneyjulien.ponge
 
IzPack Glassfish Lightning Talks 2008
IzPack Glassfish Lightning Talks 2008IzPack Glassfish Lightning Talks 2008
IzPack Glassfish Lightning Talks 2008julien.ponge
 

Mehr von julien.ponge (10)

AlpesJUG - Communautés opensource, stratégies et écueils
AlpesJUG - Communautés opensource, stratégies et écueilsAlpesJUG - Communautés opensource, stratégies et écueils
AlpesJUG - Communautés opensource, stratégies et écueils
 
Java 7 LavaJUG
Java 7 LavaJUGJava 7 LavaJUG
Java 7 LavaJUG
 
Java 7 at SoftShake 2011
Java 7 at SoftShake 2011Java 7 at SoftShake 2011
Java 7 at SoftShake 2011
 
Java 7 JUG Summer Camp
Java 7 JUG Summer CampJava 7 JUG Summer Camp
Java 7 JUG Summer Camp
 
Java 7 Launch Event at LyonJUG, Lyon France. Fork / Join framework and Projec...
Java 7 Launch Event at LyonJUG, Lyon France. Fork / Join framework and Projec...Java 7 Launch Event at LyonJUG, Lyon France. Fork / Join framework and Projec...
Java 7 Launch Event at LyonJUG, Lyon France. Fork / Join framework and Projec...
 
FOSS - PoitouJUG
FOSS - PoitouJUGFOSS - PoitouJUG
FOSS - PoitouJUG
 
IzPack at Devoxx 2010
IzPack at Devoxx 2010IzPack at Devoxx 2010
IzPack at Devoxx 2010
 
Software Testing - Invited Lecture at UNSW Sydney
Software Testing - Invited Lecture at UNSW SydneySoftware Testing - Invited Lecture at UNSW Sydney
Software Testing - Invited Lecture at UNSW Sydney
 
PhD Defense
PhD DefensePhD Defense
PhD Defense
 
IzPack Glassfish Lightning Talks 2008
IzPack Glassfish Lightning Talks 2008IzPack Glassfish Lightning Talks 2008
IzPack Glassfish Lightning Talks 2008
 

Kürzlich hochgeladen

Real Time Object Detection Using Open CV
Real Time Object Detection Using Open CVReal Time Object Detection Using Open CV
Real Time Object Detection Using Open CVKhem
 
AWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAndrey Devyatkin
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...Neo4j
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherRemote DBA Services
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoffsammart93
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerThousandEyes
 
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin WoodPolkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin WoodJuan lago vázquez
 
MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MIND CTI
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘RTylerCroy
 
Artificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : UncertaintyArtificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : UncertaintyKhushali Kathiriya
 
Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businesspanagenda
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024Rafal Los
 
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost SavingRepurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost SavingEdi Saputra
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024The Digital Insurer
 
Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...apidays
 
Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024The Digital Insurer
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)Gabriella Davis
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FMESafe Software
 
HTML Injection Attacks: Impact and Mitigation Strategies
HTML Injection Attacks: Impact and Mitigation StrategiesHTML Injection Attacks: Impact and Mitigation Strategies
HTML Injection Attacks: Impact and Mitigation StrategiesBoston Institute of Analytics
 
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc
 

Kürzlich hochgeladen (20)

Real Time Object Detection Using Open CV
Real Time Object Detection Using Open CVReal Time Object Detection Using Open CV
Real Time Object Detection Using Open CV
 
AWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of Terraform
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a Fresher
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin WoodPolkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
 
MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘
 
Artificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : UncertaintyArtificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : Uncertainty
 
Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire business
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024
 
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost SavingRepurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
 
Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...
 
Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
 
HTML Injection Attacks: Impact and Mitigation Strategies
HTML Injection Attacks: Impact and Mitigation StrategiesHTML Injection Attacks: Impact and Mitigation Strategies
HTML Injection Attacks: Impact and Mitigation Strategies
 
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
 

IzPack at LyonJUG'11

  • 1. IzPack: because you and your end users have installation issues Julien Ponge
  • 2. +
  • 3. From a hack made in a student dorm room... ... not mine!
  • 5.
  • 6. Unique installer Multiple systems
  • 7. v2 Download for your operating system 1: java -Xmx256m -jar filename.jar 2: chmod -R +x lib/ant/bin 3: lib/ant/bin/ant -f setup.xml 4: bin/asadmin start-domain domain
  • 8. Demo One download Works everywhere Straightforward
  • 11. (...)
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18. Files to package Installer resources XML descriptor Compiler, Ant or Maven Installer Jar
  • 19. Custom panels Custom actions Installer Jar 3rd-party libs
  • 20. variables Config files, scripts, ... Content-aware replacement
  • 21.
  • 22.
  • 23.
  • 24. raw pack200 deflate (gzip) bzip2
  • 25. Uti lity s cripts
  • 26. GlassFish Installer — making-of —
  • 31. <installation version="1.0"> <info> <appname>Glassfish</appname> <appversion>v2 ur2 b04</appversion> <authors> <author email="" name="Julien Ponge (packager)"/> <author email="" name="Sun Microsystems and the GlassFish community"/> </authors> <url>http://glassfish.org/</url> <javaversion>1.5</javaversion> <requiresjdk>yes</requiresjdk> </info> (...)
  • 32. (...) <panels> <panel classname="HTMLInfoPanel" /> <panel classname="HTMLLicencePanel" /> <panel classname="TargetPanel" /> <panel classname="UserInputPanel" /> <panel classname="InstallPanel" /> <panel classname="ProcessPanel" /> <panel classname="ShortcutPanel" /> <panel classname="SimpleFinishPanel" /> </panels> (...)
  • 33. <pack name="GlassFish" required="yes"> <description>GlassFish</description> <file src="launch-browser.sh" targetdir="$INSTALL_PATH/bin" condition="izpack.macinstall" /> <fileset dir="linux" targetdir="$INSTALL_PATH" condition="izpack.linuxinstall"> <% linux_specific.each do |file| %> <include name="<%= file %>"/> <% end %> </fileset> <executable targetfile="$INSTALL_PATH/lib/ant/bin/ant" stage="never" os="unix" /> <parsable targetfile="$INSTALL_PATH/bin/launch-browser.sh" os="unix" /> </pack>
  • 34. <pack name="GlassFish" required="yes"> <description>GlassFish</description> <file src="launch-browser.sh" targetdir="$INSTALL_PATH/bin" condition="izpack.macinstall" /> <fileset dir="linux" targetdir="$INSTALL_PATH" condition="izpack.linuxinstall"> <% linux_specific.each do |file| %> <include name="<%= file %>"/> <% end %> </fileset> <executable targetfile="$INSTALL_PATH/lib/ant/bin/ant" stage="never" os="unix" /> <parsable targetfile="$INSTALL_PATH/bin/launch-browser.sh" os="unix" /> </pack>
  • 35. <pack name="GlassFish" required="yes"> <description>GlassFish</description> <file src="launch-browser.sh" targetdir="$INSTALL_PATH/bin" condition="izpack.macinstall" /> <fileset dir="linux" targetdir="$INSTALL_PATH" condition="izpack.linuxinstall"> <% linux_specific.each do |file| %> <include name="<%= file %>"/> <% end %> </fileset> Ant-style: **/* <executable targetfile="$INSTALL_PATH/lib/ant/bin/ant" dir/*.class stage="never" os="unix" /> **/*.jar <parsable targetfile="$INSTALL_PATH/bin/launch-browser.sh" lib/**/*.jar os="unix" /> </pack>
  • 36. <pack name="GlassFish" required="yes"> <description>GlassFish</description> <file src="launch-browser.sh" targetdir="$INSTALL_PATH/bin" condition="izpack.macinstall" /> <fileset dir="linux" targetdir="$INSTALL_PATH" condition="izpack.linuxinstall"> <% linux_specific.each do |file| %> <include name="<%= file %>"/> <% end %> </fileset> <executable targetfile="$INSTALL_PATH/lib/ant/bin/ant" stage="never" os="unix" /> <parsable targetfile="$INSTALL_PATH/bin/launch-browser.sh" os="unix" /> </pack>
  • 37. <guiprefs height="600" resizable="yes" width="800"> <modifier key="allXGap" value="5"/> <modifier key="allYGap" value="5"/> <modifier key="paragraphYGap" value="15"/> <modifier key="useHeadingPanel" value="yes"/> <modifier key="headingLineCount" value="1"/> <modifier key="headingFontSize" value="2"/> <modifier key="headingBackgroundColor" value="0x00ffffff"/> <modifier key="headingPanelCounter" value="text"/> <modifier key="headingPanelCounterPos" value="inHeading"/> </guiprefs>
  • 38. <conditions> <condition type="variable" id="start.glassfish"> <name>gf_start_domain</name> <value>true</value> </condition> </conditions>
  • 39. Demo
  • 43. On Mac OS X ?
  • 45.
  • 46. Initial installation Bootstrap IPS + updates Uninstallation Updates + Add-ons
  • 47.
  • 49. The hype effect Patterns TDD, JSR xyz BDD ...your application code will eventually look bad! Best Scripting IoC & DI practices
  • 50. Kudos to: Anthonin Bonnefoy 0-b eta David Duponchel 5. Rene Krell PicoContainer + hamcrest + fest-swing JUnit
  • 51. Developers SCM CVS then Subversion
  • 53. Try it today! 4.3.3 4.3.4-RC1 5.0.0-beta
  • 54. Opensource Projet Aftermath
  • 55. F/OSS... why? nothing’s free! Fun Skills Advertise Strategic market shares Direct revenue streams
  • 56. Project type “Main” models Consulting Framework Training and libraries Support Dual licensing Support plans Mission-critical Consulting infrastructure Management tools servers Extensions Open Core Products Extensions Customizations
  • 57.
  • 58.
  • 59. Start Easy Solo work Users! Patches! Community support Hard to reach Mature project Manager work
  • 60. add this! support that! it is not ready for the enterprise unless you... I expected it to do this but it doesn’t!
  • 61.
  • 62. < Words Code
  • 64.
  • 65. “Given enough eyeballs, all bugs are shallow.” — Linus’s Law
  • 66. Julien Ponge Q&A @jponge @izpack julien.ponge@gmail.com http://izpack.org/ http://julien.ponge.info/