We have now

Currently, full NetBeans bundle for Mac is delivered as four component packages placed into the disk image. Every component package contains a single product component: NetBeans, GlassFish, Tomcat or OpenESB. To access the contents of a disk image, a user double-clicks it in the Finder, which opens a standard Finder window showing the disk image’s contents. When a user double-clicks a package in the opened window, the Installer application opens the package and walks the user through the installation process. There are 5 bundles to download: full(4 packages), java ee(3 packages), java se, ruby, cpp(1 package) bundles.


  • Install experience is spread out through several component packages. To install a full bundle a user needs to double-click every package and walk through the installation process four times.
    Furthermore if the user chooses a wrong sequence of the packages for installation, for example, tries to install OpenESB first, the failure message will be displayed since OpenESB requires GlassFish installed.
  • Installer doesn't allow the user to specify an alternate installation destination
  • No custom installs for NetBeans are allowed. Users can not choose what components to install
  • Since every bundle must install NetBean IDE with different set of add-on packs so package for NetBeans must be rebuild five times to contain needed content. Packages for GlassFish and Tomcat are rebuilt twice.
  • Current implementation is not perfect:
  • Packages are created using .pmproj files. This format is not suitable for the vcs. Such files can be modified only on Mac OS-based system so it presents problems for support.
  • Build time could be decreased.

How to solve

Actually NetBeans is a multicomponent product. Apple Software Delivery Guide recommends to use two mechanisms for creating an install experience for a multicomponent product: using metapackages and using distribution packages. Distribution packages are a major improvement over metapackages and they can be installed only on Mac OS X v10.4–based systems and later.

Distribution packages provide a JavaScript-based mechanism for developing an install experience where each enclosed package becomes an install choice. They provide a great deal of flexibility for defining the install choices users use to customize an install.

The major features are:

  • Definition of the entire install experience in one place instead of having it spread out through several component packages.
  • The User can specify custom installation destinations for each relocatable install choice.
  • Install choices can contain more than one component package.
  • Ability to update install choices dynamically, in response to a user’s choice selection.
  • The User can choose to perform the easy install or the custom install.
  • Definition of system and volume requirements using a requirements editor.
  • Centralization makes it easier to set up and change a product’s requirements
  • It is possible to recommend or require restart, logout, or shutdown after completion

New approach

The main idea is to create ( once! ) component packages for the GlassFish, Tomcat, OpenESB, BaseIDE and every add-on pack: cpp, javaee, javase, ruby, soa, php. Then collect those of them that are needed in bundles using distribution packages. Thus there will be created one .mpkg file for each bundle which is placed into a disk image.

Such approach provides a flexible way to improve the quality and performance of the installer, spare difficulties with rebuilding of the packages and allows to use all benefits of the distribution packages. At the same time, this way follows Apple Software Delivery Guide so it is comfortable for Mac users.

Furthermore, implementation is not going to use .pmproj files for add-on pack packages creation. Perhaps it is possible to avoid .pmproj files for distribution packages as well (needs some research).

As a result the installer will have the following advantages:

  • One .mpkg file providing the entire install experience instead of 4 packages.
  • Ability to specify custom installation destinations for each product.
  • Ability to establish requirements for the install choices. So if the user deselects, for example, the GlassFish choice, the OpenESB choice becomes deselected since GlassFish is required for OpenESB installation.
  • Ability to choose to perform the easy install or the custom install.
  • Ability to specify authentication requirement and postinstall action for each of a choice’s packages.
  • All component packages will be built once instead of 5 - 3 times.
  • Build time will be essentially decreased three times more.


File:Picture 5.png

Image:arrow_NBDistributionMacInstaller.png Use Distribution packages for bundles:
- One .mpkg instead of 4 packages
- Allows to choose components to install
- Allows to choose installation location
- Allows to choose easy or custom install
- Allows to establish requirements for the install choices
- Follows Apple Software Delivery Guide, so will be enjoyed by Mac users

Create .pkg not for NetBeans in common but for each cluster
- Decreases build time three times more
- Lightens the support and understanding

File:Picture 2.png

Not logged in. Log in, Register

By use of this website, you agree to the NetBeans Policies and Terms of Use. © 2012, Oracle Corporation and/or its affiliates. Sponsored by Oracle logo