<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<!--
  Copyright 2016, Oracle Inc. 
  All Rights Reserved.
-->

<html>
<head>
<link rel="stylesheet" type="text/css" href="../../../netbeans.css">
<link rel="stylesheet" type="text/css" media="print" href="../../../print.css">
<link rel="shortcut icon" href="http://www.netbeans.org/favicon.ico" type="image/x-icon">
<title>NetBeans IDE 8.2 Installation Instructions</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" >
<meta name="description" content="Installation Instructions for NetBeans IDE 8.2">
<meta name="keywords" content="NetBeans, IDE, free, open source, install notes, developer, installer, NetBeans, NetBeans IDE, NetBeans installer, NetBeans development environment" >
<style type="text/css">
<!--
.style2 {color: #000000}
-->
</style>
</head>
<body>
<a name="top"></a>
<h1>NetBeans IDE 8.2 Installation Instructions</h1>
<div class="articledate" style="margin-left: 0px;">Last updated: <!-- #BeginDate format:Am1 -->September 23, 2016<!-- #EndDate --> </div>
<p>This document describes how to install NetBeans IDE 8.2 on your system. 
    Please see the NetBeans IDE 8.2 Release Notes for information about 
    <a href="relnotes.html#system_requirements">supported operating systems and hardware configurations</a> for the IDE. 
    To learn about the new features included in this release of the IDE see the 
    <a href="index.html">NetBeans IDE 8.2 Release Information</a> page.</p>

<h2>Contents</h2>
<ul>
<li><a href="#requiredsoftware" title="Required Software">Required Software</a></li>
<li><a href="#downloadoptions" title="Installer Download Options">Installer Download Options</a></li>
<li><a href="#customizeinstall" title="Customizing Your Installation">Customizing Your Installation</a></li>
<li><a href="#startdownload" title="Starting the Download">Starting the Download</a></li>
<li><a href="#installation" title="Installing the Software">Installing the Software</a><div>
<ul>
<li><a href="#install_windows">Microsoft Windows and Linux</a></li>
<li><a href="#install_mac">OS X</a> </li>
<li><a href="#install_zip">Platform-Independent Package</a> </li>
</ul>
</div></li>
<li><a href="#uninstallation" title="Uninstalling the Software">Uninstalling the Software</a><div>
<ul>
<li><a href="#uninstall_windows">Microsoft Windows</a></li>
<li><a href="#uninstall_sollinux">Linux</a></li>
<li><a href="#uninstall_mac">OS X</a></li>
</ul>
</div></li>
<li><a href="#upgrading">Upgrading and Multiple Installation Support</a></li>
<li><a href="#troubleshooting" title="Troubleshooting">Trouble</a><a href="#troubleshooting" title="Troubleshooting">shooting</a></li>
<li><a href="#moreinformation" title="More Information">More In</a><a href="#moreinformation" title="More Information">formation</a></li>
</ul>
<h2><a name="requiredsoftware" id="requiredsoftware"></a>Required Software</h2>
<p>The Java SE Development Kit (JDK)  8 is required to install NetBeans IDE. 
    You can download the latest update of  JDK 8 at 
    <a href="http://www.oracle.com/technetwork/java/javase/downloads/index.html" target="_blank">
        http://www.oracle.com/technetwork/java/javase/downloads</a>.</p>

<p>The PHP and C/C++ NetBeans bundles only require the Java Runtime Environment (JRE)  8 to be installed and run. 
    JDK  8 is required if you are planning to use any of the Java features. </p>
<p>JDK 8 is required to use JavaFX 8 features in NetBeans IDE 8.2.</p>
<p class="notes"><b>Note:</b> </p>
   <ul>
     
	 <li>JavaFX 8 is bundled with JDK 8 for Windows, Mac and Linux.</li>
     <li>Unlike previous versions of NetBeans IDE, NetBeans IDE 8.2 does not require that you 
        set up an &quot;FX-enabled&quot; Java platform in order to utilize JavaFX support in the IDE. 
        You can develop JavaFX projects in the IDE if you install  JDK 8.</li>
     <li>To use JavaFX features in  NetBeans IDE, we strongly recommend that you use JDK 8.</li>
   </ul>
   
<p align="center"><a href="#top">top</a></p>
<h2><a name="downloadoptions" id="downloadoptions"></a>Installer Download Options</h2>
<p>On the NetBeans IDE <a href="/downloads/" target="_blank">Download page</a>, you can obtain one of several installers, each of which contains the base IDE and additional tools.  </p>
<p>The following installers are available: </p>
<ul>
   <li><b>Java SE</b>. Supports all standard Java SE development features as well as support for NetBeans Platform development and JavaFX 2.2 SDK (or newer) or JavaFX 8 SDK.</li>
   <li><b>Java EE</b>. Provides tools for developing Java SE and Java EE  applications as well as support for NetBeans Platform development and JavaFX 2.2 SDK (or newer) or JavaFX 8 SDK. 
       This download option also includes GlassFish Server Open Source Edition 4.1.1, and Apache Tomcat 8.0.27 software. </li>
	   <li><b>HTML5/JavaScript</b>. Provides tools for HTML5/Javascript development. Includes Java Runtime Environment and does not require a separate Java installation.</li>
	   <li><b>PHP</b>. Provides tools for PHP 7 development, Zend and Symfony Framework support. Includes Java Runtime Environment and does not require a separate Java installation.</li>
   <li><b>C/C++</b>. Supports development in the C, C++, Qt, Fortran and Assembly languages. Includes Java Runtime Environment and does not require a separate Java installation.</li>
   
   <li><b>All. </b> This is a full download option, which contains all the runtimes and technologies available for the NetBeans IDE.  </li>
</ul>
<p align="center"><a href="#top">top</a></p>
<h2><a name="customizeinstall"></a>Customizing Your Installation</h2>
<p>If you download the <b>All</b> download option, you can choose exactly what tools and runtimes to install. Click Customize at the Welcome page of the installer and select the features that you want to use. For more information, see <a href="#installation" title="Installing the Software">Installing the Software</a>.</p>
<p>If you want to add functionality to your NetBeans IDE configuration, use the NetBeans Plugin Manager. For example, assume that you start out by downloading and installing the PHP pack. You then decide that you want to try out the C/C++ functionality. To do this, go to the NetBeans Plugin Manager from the IDE (choose Tools &gt; Plugins) and add the C/C++ pack to your existing installation.</p>
<p>There are several important notes about installation and configuration of some NetBeans IDE features: </p>
<ul>
<li>Glassfish is provided with NetBeans IDE as a reference implementation of Java Enterprise Edition (EE).  It is not intended for use in production environments.<br><br/>
Application developers should ensure that any applications developed using Glassfish as a reference version use up-to-date,
secure cryptographic protocols and algorithms, and are tested accordingly, before deploying those applications in production. <br><br/>
Note that the version of Glassfish provided with NetBeans IDE is not up to
date with security fixes and is provided as a convenience. As a
consequence, NetBeans users should upgrade to the most recent version
of Glassfish when deploying NetBeans IDE and should upgrade to new
versions of Glassfish whenever Glassfish distributions include new
security fixes. Glassfish upgrade instructions are provided at My Oracle Support (MOS) note 2073920.1. 
<!--(Glassfish upgrade instructions are provided at MOS
note XXXX.Y)--> 
<br><br/>
GlassFish Server Open Source Edition 4.1.1 is included in the <b>Java EE</b> and <b>All</b> download options but it is not installed by default from either of these options. To install GlassFish Server Open Source Edition 4.1.1, select the appropriate option below:
    <ul> 
  <li>from the <b>Java EE</b> download, launch the installer and select the GlassFish Server Open Source Edition 4.1.1 checkbox at the Welcome page;</li>
  <li>from the <b>All</b> download, launch the installer and select GlassFish Server Open Source Edition 4.1.1 in the Customize Installation dialog box.</li>
  </ul>
  You should change the default administrator password after you install the GlassFish server, refer to <a href="http://wiki.netbeans.org/FaqSettingGlassFishPassword">FaqSettingGlassFishPassword</a> for details.</li>
  <li>Apache Tomcat 8.0.27 is included in the <b>Java EE</b> and <b>All</b> download options but it is not installed by default from either of these options. To install Apache Tomcat, select the appropriate option below:
    <ul> 
  <li>from the <b>Java EE</b> download, launch the installer and select the Apache Tomcat 8.0.27 checkbox at the Welcome page;</li>
  <li>from the <b>All</b> download, launch the installer and select Apache Tomcat 8.0.27 in the Customize Installation dialog box.</li>
  </ul></li>

  <li>For C/C++ development (applicable for the <b>C/C++</b> and <b>All</b> downloads), you need to additionally install compilers and tools.<!-- For more information, refer to the <a href="cpp-setup-instructions.html">Configuring the NetBeans IDE for C/C++/Fortran</a> document. --></li>
  <li>For HTML5 and JavaScript development for mobile devices (Android and iOS), you need to additionally install SDKs and other development tools for the target development platform.
      For more information, refer to the <a href="http://wiki.netbeans.org/MobileBrowsers">Mobile Browsers</a> wiki page.</li>
  <li>For OS X, you can customize the NetBeans IDE installation from the <b>All</b> and <b>Java EE</b> downloads. The IDE installation from <b>Java SE</b>, <b>HTML5/JavaScript</b>, <b>PHP</b>, and <b>C/C++</b> downloads cannot be customized. </li>
  <li>You can also download <a href="#install_zip">a platform-independent zip file</a> and run the NetBeans IDE executable file. Note that the GlassFish Server Open Source Edition and Apache Tomcat are only available with platform-specific installers. </li>
  <li>To make sample project templates unreachable in the NetBeans IDE installation, see the <a href="http://wiki.netbeans.org/FaqHideSampleProjects">Hide Sample Projects FAQ</a> page.</li>
</ul>
<p align="center"><a href="#top">top</a></p>
<h2><a name="startdownload" id="startdownload"></a>Starting the Download</h2>

<ol>
<li>Go to <a href="/downloads/" target="_blank"> <strong>https://netbeans.org/downloads/</strong></a>.</li>
<li>In the upper right area of the page, select the language and platform from the drop-down list. 
  You can also choose to download and use the platform-independent zip file. </li>
<li>Click the Download button for the download option that you want to install.</li>
<li>Save the installer file to your system.</li>
</ol>
<p align="center"><a href="#top">top</a></p>
<h2><a name="installation"></a>Installing the Software</h2>

<p>Follow the instructions in this section to install the IDE on your system. These installation instructions apply to all supported platforms. For the list of supported platforms and system requirements, see the <a href="relnotes.html#system_requirements">release notes</a>. </p>
<h3><a name="install_windows" id="install_windows">Microsoft Windows and Linux</a></h3>
<p><b>To install the software:</b></p>
  <ol>
    <li>After the download completes, run the installer. 
   <ul>
    <li>For Windows, the installer executable file has the <tt>.exe</tt> extension. Double-click the installer file to run it. </li>
    <li>For Linux platforms, the installer file has the <tt>.sh</tt> extension. For these platforms, you need to make the 
    installer files executable by using the following command: <tt>chmod +x &lt;<i>installer-file-name</i>&gt;</tt>. Type <tt>./&lt;<i>installer-file-name</i>&gt;</tt> to run the installer.</li>
   </ul>
  </li>
    <li>If you downloaded the <b>All</b> or <b>Java EE</b> bundle, you can customize your installation. Perform the following steps at the Welcome page of the installation wizard:
      <ol type="a">
         <li>Click Customize.</li>
         <li>In the Customize Installation dialog box, make your selections.</li>
         <li>Click OK.</li>
      </ol>
    </li>
     <li>At the Welcome page of the installation wizard, click Next.</li>
     <li>At the License agreement page, review the license agreement, click the acceptance check box, and click Next.</li>
	 
     <li>At the NetBeans IDE installation page, do the following:
       <ol type="a">
      <li>Accept the default installation directory for the NetBeans IDE or specify another directory.
         <p><b>Note:</b> The installation directory must be empty and the user profile you are using to run the installer must have 
         read/write permissions for this directory.</p></li>
      <li>(Applicable only to <b>All</b> or <b>Java EE</b> bundle.) Accept the default JDK installation to use with the NetBeans IDE or select a different installation from the drop-down list.
          If the installation wizard did not find a compatible JDK installation to use with the NetBeans IDE, your JDK is not installed 
          in the default location. In this case, specify the path to an installed JDK and click Next, or cancel the current installation. 
          After installing the required JDK version you can restart the installation.
          <p class="notes"><b>Note:</b> If the JDK version is older than the recommended JDK 8, download and install the latest JDK update from <a href="http://www.oracle.com/technetwork/java/javase/downloads/index.html">Java SE Downloads</a> page and restart the NetBeans IDE installer.</p>
      </li>
       </ol></li>
	<li>Click Next.</li>
   <li>If the GlassFish Server Open Source Edition 4.1.1 installation page opens, accept the default installation directory or specify another installation location and click Next. </li>
   <li>If you are installing Apache Tomcat, on its installation page, accept the default installation directory or specify another installation location. Click Next.</li>
   <li>At the Summary page, do the following:
   <ol type="a">
     <li>Verify that the list of components to be installed is correct.</li>
     <li>Select the Check for Updates check box if you want to check the Update Center for possible updates.</li>
     <li>Verify that you have adequate space on your system for the installation.</li>
   </ol>
   </li>
   <li>Click Install to begin the installation.</li>
   <li>At the Setup Complete page, provide anonymous usage data if desired, and click Finish.</li>
  </ol>
<p class="notes"><b>Note:</b> If you encounter problems successfully completing the software installation, see <a href="#troubleshooting">Troubleshooting</a> for descriptions and suggested workarounds for unresolved issues that could affect the installation process. </p>
<h3><a name="install_mac" id="install_mac">OS X</a></h3>
<p><b>To install the software:</b></p>
<ol>
  <li>After the download completes, run the installer. The installer file has the <tt>.dmg</tt> extension. </li>
  <li>On the panel that opens double-click the package icon. The package has the <tt>.pkg</tt> extension. The installation wizard starts.</li>
  <li>Click Continue when the &quot;This package will run a program to determine if the software can be installed.&quot;  dialog box is displayed.</li>
  <li>At the Introduction page of the installation wizard, click Continue.
  <p class="notes"><b>Note:</b> If the JDK version is older than the recommended JDK 8, download and install the latest JDK update from <a href="http://www.oracle.com/technetwork/java/javase/downloads/index.html">Java SE Downloads</a> page and restart the NetBeans IDE installer. </p>
  </li>
  <li>Review the license agreement and click Continue. Click Accept in the pop-up window to accept the license.</li>
  
  <li>At the Select a Destination page, select the drive and click Continue. </li>
  <li>If you downloaded the <b>All</b> or <b>Java EE</b> bundle, you can customize your installation. On the last installation wizard panel, press the Customize button in the bottom left-hand side of the panel. The tree of products is displayed.</li>
  <li>Select the products you want to install.</li>
  <li>Enter the administrator's name and password for your system and click OK to begin the installation.
 </li>
</ol>

<h3><a name="install_zip" id="install_zip">Platform-Independent Package </a></h3>
<p><b>To run the software:</b></p>
<ol>
  <li>After the download of the platform-independent ZIP file completes, extract it to any folder on your system. </li>
  <li>Run the executable file located in the <tt>netbeans/bin</tt> directory. </li>
  <li>Accept the License Agreement. </li>
  <li>Click Next. The NetBeans IDE installation starts. </li>
</ol>
<p><span class="notes"><b>Note</b>: If a compatible JDK installation cannot be found, you might need to manually add a path to the 
JDK installation directory by doing the following:</span></p>
<ol type="a">
  <li>Open the <tt>netbeans.conf</tt> file located in the <tt>netbeans/etc</tt> directory in a text editor.</li>
  <li>Enter the location of a compatible JDK installation for the <tt>netbeans_jdkhome</tt> option. The default location in Windows is <tt>C:\Program Files\Java\jdk1.8.0</tt> or similar.</li>
  <li>Save the <tt>netbeans.conf</tt> file and run the  executable file in the <tt>netbeans/bin</tt> directory.</li>
</ol>

<p><span class="notes"><b>Note</b>: The GlassFish Server Open Source Edition and Apache Tomcat are available only with platform-specific installers.</span></p> 
<p><span class="notes"><b>Note</b>: To use the GlassFish Server Open Source Edition and/or Apache Tomcat that are already installed on your machine, in the NetBeans IDE, click <tt>Servers</tt> on the
<tt>Tools</tt> menu.  This displays the Add Server Instance Wizard which helps to register an instance of the
required web server with the NetBeans IDE.
</span></p>

<p align="center"><a href="#top">top</a></p>
<h2><a name="uninstallation">Uninstalling the Software</a></h2>
<p>Follow the instructions in this section to uninstall the IDE on your system. These uninstallation instructions apply to all supported platforms. For the list of supported platforms, see the <a href="relnotes.html">release notes</a>.</p>
<div>
<h3><a name="uninstall_windows">Microsoft Windows</a></h3>
<p>If necessary, you can uninstall the NetBeans IDE, the GlassFish Server Open Source Edition 4.1.1, and Apache Tomcat using the following procedures.</p>
<p><b>To uninstall the IDE</b>:</p>
<ol>
  <li>Shut down the IDE.  </li>
  <li>From the Control Panel, select Add or Remove Programs, then select NetBeans IDE 8.2 and click Remove.</li>
  <li>To uninstall GlassFish and Tomcat together with the IDE, at the Summary page make sure that the correct versions are listed and check the appropriate checkboxes.</li>
  <li>Check the NetBeans user directory checkbox if you want to remove it together with the  IDE, and click Uninstall. </li>
  <li>At the Summary page, click Uninstall.  </li>
  <li>After uninstallation completes, click Finish.</li>
</ol>
<p><b>To uninstall the GlassFish Server Open Source Edition 4.1.1: </b></p>
<ol>
  <li>Shut down the IDE.</li>
  <li>From the Control Panel, select Add or Remove Programs, then select GlassFish Server Open Source Edition 4.1.1 and click Remove.</li>
</ol>
<p><b>To uninstall Apache Tomcat: </b></p>

<ol>
  <li>Shut down the IDE.</li>
  <li>From the Control Panel, select Add or Remove Programs, then select Apache Tomcat 8.0.27 and click Remove.</li>
</ol>
</div>
<div>
<h3><a name="uninstall_sollinux">Linux</a></h3>
<p>If necessary, you can uninstall the NetBeans IDE, the GlassFish Server Open Source Edition 4.1.1, and Apache Tomcat using the following procedures.</p>
<p><b>To uninstall the IDE</b>:</p>

<ol>
  <li>Shut down the IDE.</li>
  <li>In the IDE installation directory, run the <tt>uninstall.sh</tt> file. </li>
  <li>To uninstall GlassFish and Tomcat together with the IDE, at the Summary page make sure that the correct versions are listed and check the appropriate checkboxes. </li>
  <li>At the Summary page, click Uninstall. 
  </li>
  <li>After uninstallation completes, click Finish.</li>
</ol>
<p><b>To uninstall GlassFish Server Open Source Edition 4.1.1</b>:</p>
<ol>
  <li>Shut down the IDE.</li>
  <li>Locate the application server installation directory.
  <p class="notes"><b>Note</b>: The default installation location is different depending on the type of installation and the platform. The following table shows the default application server installation directory for various platforms.</p>

  <table>
    <tbody>
        <tr class="tblheader">
            <th width="107">Platform</th>
            <th width="130">Installing As...</th>
			<th width="264">GlassFish 4.1.1 Installation</th>
        </tr>
        <tr class="tbltd0">
          <td>Windows</td>
          <td>user with admin rights</td>
          <td><tt>%ProgramFiles%\glassfish-4.1.1</tt></td>
        </tr>
        <tr class="tbltd1">
          <td>Windows</td>
          <td>user</td>
          <td><tt>%USERPROFILE%\glassfish-4.1.1</tt></td>
        </tr>
        <tr class="tbltd1">
            <td>Linux</td>
            <td valign="top">user</td>
            <td valign="top"><tt>~/glassfish-4.1.1</tt></td>
        </tr>
        <tr class="tbltd0">
            <td>Linux</td>
            <td>root</td>
            <td><tt>/usr/local/glassfish-4.1.1</tt></td>
        </tr>
    </tbody>
</table>
  </li>
  <li>In the application server installation directory, run the <tt>uninstall.sh</tt> file.</li>

  <li>At the Summary page, click Uninstall.
  </li>
  <li>After uninstallation completes, click Finish.</li>
</ol>
<p><b>To uninstall Apache Tomcat: </b></p>
<ol>
  <li>Shut down the IDE.</li>

  <li>Locate the Apache Tomcat installation directory. 
    <p class="notes"><b>Note</b>: The default installation location varies depending on the type of installation and the platform. The following table shows the default application server installation directory for different platforms.</p>

  <table>
    <tbody>
        <tr class="tblheader">
            <th width="107">Platform</th>
            <th width="130">Installing As...</th>
			<th width="496">Apache Tomcat 8.0.27 Installation</th>
        </tr>
        <tr class="tbltd0">
          <td>Windows</td>
          <td>user with admin rights</td>
          <td><tt>%ProgramFiles%\Apache Software Foundation\Apache Tomcat 8.0.27</tt></td>
        </tr>
        <tr class="tbltd1">
          <td>Windows</td>
          <td>user</td>
          <td><tt>%USERPROFILE%\Apache Software Foundation\Apache Tomcat 8.0.27</tt></td>
        </tr>
        
        <tr class="tbltd1">

            <td> Linux</td>
            <td valign="top">user</td>
			<td valign="top"><tt>~/apache-tomcat-8.0.27</tt></td>
        </tr>
        <tr class="tbltd0">
            <td>Linux</td>
            <td>root</td>
			<td><tt>/usr/local/apache-tomcat-8.0.27</tt></td>
        </tr>
    </tbody>
</table>
  </li>
  
  <li>In the application server installation directory, run the <tt>uninstall.sh</tt> file.  </li>
  <li>At the Summary page, click Uninstall. </li>
  <li>After uninstallation completes, click Finish</li>
</ol>
</div>

<div>
<h3><a name="uninstall_mac" id="uninstall_mac">OS X</a></h3>
<p><b>To uninstall the IDE and application server</b>:</p>
<ol>
  <li>Shut down the software.</li>
  <li>Drag the program folders or files to the Trash.    
  Note that the default location for the IDE and application server is <tt>/Applications/NetBeans/</tt>.  </li>
</ol>
</div>

<div>
<h3><a name="uninstall_zip" id="uninstall_zip">Platform-Independent Package</a></h3>
<p>To uninstall the IDE files, delete the installation directories of the IDE. </p>
</div>

<p align="center"><a href="#top">top</a></p>

<h2><a name="upgrading"></a>Upgrading and Multiple Installation Support</h2>
<p>Multiple installations of NetBeans IDE 5.x,  6.x, and 7.x can coexist with NetBeans IDE 8.2 on the same system. You do not have to uninstall  the earlier versions in order to install or run NetBeans IDE 8.2. </p>
<p>If you have an existing installation of NetBeans IDE you can choose whether or not to import the user settings from the existing user directory when you run NetBeans IDE 8.2 for the first time.</p>
<p><span class="notes"><b>Note</b>: Incremental version upgrades of the IDE cannot be performed at this time. To upgrade to the most recent version you must download the latest installer.</span></p>
<p align="center"><a href="#top">top</a></p>
<h2><a name="troubleshooting" id="troubleshooting"></a>Troubleshooting</h2>
<div>
<h3>About the Installer Working Directory</h3>
<p>The installer stores data about installation sessions in the installer working directory. Examples of this data are the list of components installed on your system, installation log messages, and registry data. </p>

<p>The default location for the installer working directory is <tt>%USERPROFILE%\.nbi</tt> on Windows and <tt>~/.nbi</tt> on other platforms. The log subdirectory contains the installation log files. </p>
</div>
<div>
<h3><a name="clean"></a>Cleaning Up After Incomplete Installations</h3>
<p>After incomplete or unsuccessful installations, you might need to clean up your system from previous installations. </p>
<p><b>For Microsoft Windows and Linux:</b></p>
<ol>

  <li>Delete the installer working directory.</li>
  <li>Delete the installation directories of the IDE and the GlassFish application server.</li>
  <li>On the Windows platform, delete all <tt>nbi*</tt> registry entries from the following registry keys: 
    <tt>HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall</tt> 
    <tt>HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall</tt> </li>

</ol>
<p><b>For OS X:</b></p>
<ul>
  <li>Drag the program folders or  files to the Trash. </li>
</ul>
</div>
<div>
<h3>Disabling Some Software Before Installation</h3>
<p>It is better to disable firewall, antivirus, and monitoring applications before you start installation. Some of these applications can prevent IDE components from being configured correctly during the installation process. </p>
<p>For example, if you have the Logitech Process Monitor application (<tt>LVPrcSrv.exe</tt>) running on your system, switch it off before installation. </p>

</div>
<p align="center"><a href="#top">top</a></p>
<h2><a name="moreinformation"></a>More Information</h2>

<ul>
<li><a href="index.html" target="_blank">NetBeans IDE 8.2 Release Information</a></li>
<li><a href="relnotes.html" target="_blank">NetBeans IDE 8.2 Release Notes</a></li>
<li><a href="http://wiki.netbeans.org/NetBeansUserFAQ#Installation" target="_blank">NetBeans IDE Installation FAQ</a></li>
</ul>
<div class="feedback-box"><a href="http://www.netbeans.org/about/contact_form.html?to=3&subject=Feedback:%20NetBeans%20IDE%208.2%20Release%20Candidate%20Installation%20Instructions">Send Us Your Feedback</a>
</div>
<br style="clear:both;">
<p align="center"><a href="#top">top</a></p>
</body>
</html>
