<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html lang="en">
<HEAD>

<meta name="copyright" content="Copyright (c) IBM Corporation and others 2008, 2011. This page is made available under license. For full details see the LEGAL in the documentation book that contains this page." >

<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=ISO-8859-1">
<META HTTP-EQUIV="Content-Style-Type" CONTENT="text/css">
<LINK REL="STYLESHEET" HREF="../book.css" CHARSET="ISO-8859-1" TYPE="text/css">
<title>Installing software using the Install wizard</title>
<script language="JavaScript" src="PLUGINS_ROOT/org.eclipse.help/livehelp.js" type="text/javascript"> </script>
</HEAD>

<BODY BGCOLOR="#ffffff">
<H1>Installing new software</H1>
<p>The <b>Install New Software</b> wizard allows you to add new software to your
installation.  To install new software:
</p>
<ol>
  <li>Click
  <a class="command-link" href='javascript:executeCommand("org.eclipse.equinox.p2.ui.sdk.install")'>
  <img src="PLUGINS_ROOT/org.eclipse.help/command_link.svg" alt="command link">
  <b>Help &gt; Install New Software...</b></a>.  This wizard shows you the items that are
    available for installation.</li>
  <li>You may type the location of a software site or select an existing software site
    using the <b>Work With</b> combo at the top of the page.  By default, the items in
    a site are grouped by category, with only the latest version of each item shown.
    You can change the way
    that you browse available software using the following mechanisms:
    <ul>
    <li>Using the <b>Work With</b> combo box, you can select a site to browse its
    contents, or you can choose to browse software from all sites.  Browsing all 
    sites is useful when you know the name of something but do not know where it
    is located.</li>
    <li>The filter box can be used to type part of the name of something that you are
    looking for.  The list of items will be filtered to only those matching the
    text that you type.</li>
    <li>A checkbox at the bottom of the page can be used to control whether the items
    should be grouped in categories, or listed by name. </li>
    <li>A checkbox at the bottom of the page can be used to control whether
    all versions, or only the latest versions, of software are shown in the list. </li>
    <li>A checkbox at the bottom of the page can be used to control whether
    items that are already installed should be shown in the list.</li> 
    </ul>
    </li>
    <li>As you browse the available software, you can check the items that you wish to install.
  </li>
  <li>
    When you have finished making your selections, click <b>Next</b> to install the checked items.  
    If the items you are installing require other software items in order to operate, those
    requirements will be included in your request.  A checkbox at the bottom of this page controls 
    whether all software sites will contacted when looking for requirements, or only the site
    shown in the <b>Work With</b> combo box.
  </li>
  <li>Once you click <b>Next</b>, the wizard will validate your selections against your installed software, and report any configuration
    problems that might prevent you from installing a particular software item.
   <ul>
    <li>If there are conflicts that prevent you from installing one or more of your selections, the problems
    will be reported in the details area at the bottom of the wizard.  You may uncheck one or more
    of the selected items and validate the install by clicking <b>Next</b> again.  Or, you
    may click <b>Back</b> to return to the first page and change your selections.
    </li>
   <li>If all of the requirements are available and there are no other installation
   conflicts, clicking <b>Next</b> will show the <b>Install Details</b> page.
   The items to be installed will be listed.  Expanding each item will show what additional items will be required
   to complete the install.  You will see an estimated size of the installation at the bottom
   of the page.</li>
   </ul>
  </li>
  <li>If the selected items have license agreements to be reviewed, you must click <b>Next</b>.  
    Carefully review the license agreements for the items you wish to install.  You may also 
    notice items in the license list that you did not choose for install, but that are required
    by the the items that you are installing. If the 
    terms of all these licenses are acceptable, check &quot;I accept the terms 
    in the license agreements.&quot; Do not proceed to download the features if 
    the license terms are not acceptable.</li>
  <li>If the license agreements are acceptable, or if the selected items did not have 
  license agreements to review, click <b>Finish</b>.  This will begin the download and
  installation of the new software.</li>  
  <li><p>Some of the items may be digitally signed by the company that provides them. 
    This allows you to verify more easily that the features and plug-ins 
    that are about to be downloaded and installed are coming from a trusted supplier. You
    may be prompted to verify digitally signed content once the signature is
    detected.</p><br>
    <p><b>Warning:</b> Because of the possibility of harmful or even malicious software, 
    you should only download software from parties that you trust.</p></li>
  <li>Once all of the software is downloaded successfully and the necessary
    files installed into the product on the local computer, you will be prompted
    to restart for the Workbench.  Click <b>Yes</b> 
    when asked to exit and restart the Workbench for the changes to take effect.</li>
</ol><P><img border="0" src="../images/ngrelc.png" alt="Related concepts" ><br>
<a href="../concepts/concepts-25.htm">Features</a>
</P>

<P>
<img border="0" src="../images/ngrelt.png" alt="Related tasks" ><br>
<a href="tasks-120.htm">Updating the installation</a><br>
<a href="tasks-126.htm">Uninstalling software</a><br>
<a href="tasks-123.htm">Reverting to a saved configuration</a>
</P>

</BODY>
</HTML>
