Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
IzPack - LyonJUG 2011
Search
Julien Ponge
March 26, 2012
Programming
82
1
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
IzPack - LyonJUG 2011
Julien Ponge
March 26, 2012
More Decks by Julien Ponge
See All by Julien Ponge
Quarkus Insights 2023-03-06
jponge
0
130
Reactive Streams. 4 Interfaces. Et après ?
jponge
0
81
Scalability and resilience in practice: current trends and opportunities
jponge
0
320
Eclipse Vert.x at BruJUG 2019
jponge
0
220
Du réactif au service du pneu connecté
jponge
0
400
Bringing Reactive to Enterprise Java Developers
jponge
0
360
Golo LyonJUG 2019
jponge
0
310
Vert.x Montreal JUG 2018
jponge
0
560
Bringing Reactive to Enterprise Application Developer // Reactive Summit 2018
jponge
0
310
Other Decks in Programming
See All in Programming
ActionController meets Protocol Buffers
sorah
0
480
Starting & Sustaining Code-Based E2E Testing for Non-Coding QA Teams( #jasstniigata )
teyamagu
PRO
1
1k
すこし踏み込む CancellationToken
htkym
2
1.7k
Rでドレミ/Do-Re-Mi_with_R
florets1
0
130
月間100万人のサービス刷新で、 技術選定をHonoに振り切った話
yutobara
8
6.6k
Kotlinの15年とServer-Side Kotlin
n_takehata
1
150
現場と育てるRailsモデリング 〜Spreadsheetから始めたモデル設計〜
siroemk
2
560
動作中のプログラムの中身をリアルタイムに覗く / Realtime Debugger for CSharp with Roslyn
prota
1
1.9k
Jetpack Compose Mechanisms
skydoves
3
810
Findy - エンジニア向け会社紹介/Findy Company Deck
findyinc
6
400k
見えないものを探る要求要件定義に必要な基本的思考 / invisible-requirement-thinking
minodriven
15
8.4k
Compiling a real-world CLI tool to native with Static Hermes
tmikov2023
0
120
Featured
See All Featured
[Rails World 2026] Durable orchestration on Rails: from continuation to workflow
palkan
1
750
Done Done
chrislema
187
17k
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
37
6.6k
Optimizing for Happiness
mojombo
378
71k
Lightning talk: Run Django tests with GitHub Actions
sabderemane
0
300
Raft: Consensus for Rubyists
vanstee
142
7.8k
Jess Joyce - The Pitfalls of Following Frameworks
techseoconnect
PRO
1
450
Accessibility Awareness
sabderemane
1
250
Dominate Local Search Results - an insider guide to GBP, reviews, and Local SEO
greggifford
PRO
0
360
I Don’t Have Time: Getting Over the Fear to Launch Your Podcast
jcasabona
35
2.9k
HTML-Aware ERB: The Path to Reactive Rendering @ RubyCon 2026, Rimini, Italy
marcoroth
5
820
Art, The Web, and Tiny UX
lynnandtonic
304
22k
Transcript
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.
None
Unique installer Multiple systems
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 v2
Demo One download Works everywhere Straightforward
IzPack?
25.000 downloads per month?
(...)
None
None
None
None
None
None
XML descriptor Files to package Installer resources Installer Jar Compiler,
Ant or Maven
Custom actions Installer Jar Custom panels 3rd-party libs
variables Content-aware replacement Config files, scripts, ...
None
None
None
deflate (gzip) bzip2 raw pack200
Utility scripts
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> <executable targetfile="$INSTALL_PATH/lib/ant/bin/ant" stage="never" os="unix" /> <parsable targetfile="$INSTALL_PATH/bin/launch-browser.sh" os="unix" /> </pack> Ant-style: **/* dir/*.class **/*.jar lib/**/*.jar
<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 ?
None
Initial installation Bootstrap IPS + updates Updates + Add-ons Uninstallation
None
The next IzPack
The hype effect Patterns TDD, BDD Best practices IoC &
DI JSR xyz Scripting ...your application code will eventually look bad!
5.0-beta Kudos to: Anthonin Bonnefoy David Duponchel Rene Krell PicoContainer
JUnit + hamcrest + fest-swing
SCM Developers CVS then Subversion
SCM Developers
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 Framework and libraries Consulting Training Support
Dual licensing Mission-critical infrastructure servers Support plans Consulting Management tools Extensions Products Open Core Extensions Customizations
None
None
Start Users! Patches! Mature project Community support Easy Solo work
Hard to reach 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!
None
< Words Code
Monster patch (or raw files!) Upstream
None
“Given enough eyeballs, all bugs are shallow.” — Linus’s Law
Julien Ponge @jponge
[email protected]
http://julien.ponge.info/ Q&A @izpack http://izpack.org/