<?xml version="1.0" encoding="utf-8"?>
<Namespace Name="System.Configuration.Install">
  <Docs>
    <summary>
      <attribution license="cc4" from="Microsoft" modified="false" />
      <para>The <see cref="N:System.Configuration.Install" /> namespace provides classes that allow you to write custom installers for your own components. The <see cref="T:System.Configuration.Install.Installer" /> class is the base class for all custom installers in the.NET Framework.</para>
    </summary>
    <remarks>
      <attribution license="cc4" from="Microsoft" modified="false" />
      <para>Through the <see cref="P:System.Configuration.Install.Installer.Installers" /> property, an installer contains a collection of other installers as children. As the installer is executed, it cycles through its children and calls <see cref="M:System.Configuration.Install.Installer.Install(System.Collections.IDictionary)" />, <see cref="M:System.Configuration.Install.Installer.Commit(System.Collections.IDictionary)" />, <see cref="M:System.Configuration.Install.Installer.Rollback(System.Collections.IDictionary)" />, or <see cref="M:System.Configuration.Install.Installer.Uninstall(System.Collections.IDictionary)" />. For an example of an object in the <see cref="P:System.Configuration.Install.Installer.Installers" /> collection, see <see cref="T:System.Diagnostics.EventLogInstaller" />.</para>
      <para>The <see cref="P:System.Configuration.Install.Installer.Context" /> property contains information about the installation. For example, information about the location of the log file for the installation, the location of the file that saves information required by the <see cref="M:System.Configuration.Install.Installer.Uninstall(System.Collections.IDictionary)" /> method, and the command line that was entered when the installation executable was run. For an example of an installation executable, see <format type="text/html"><a href="3F9D0533-F895-4897-B4EA-528284E0241D">Installer Tool (Installutil.exe)</a></format>.</para>
      <para>The <see cref="M:System.Configuration.Install.Installer.Install(System.Collections.IDictionary)" />, <see cref="M:System.Configuration.Install.Installer.Commit(System.Collections.IDictionary)" />, <see cref="M:System.Configuration.Install.Installer.Rollback(System.Collections.IDictionary)" />, and <see cref="M:System.Configuration.Install.Installer.Uninstall(System.Collections.IDictionary)" /> methods are not always called on the same instance of <see cref="T:System.Configuration.Install.Installer" />. For example, you might use an <see cref="T:System.Configuration.Install.Installer" /> to install and commit an application, and then release the reference to that <see cref="T:System.Configuration.Install.Installer" />. Later, uninstalling the application creates a new reference to an <see cref="T:System.Configuration.Install.Installer" />, which means that the <see cref="M:System.Configuration.Install.Installer.Uninstall(System.Collections.IDictionary)" /> method is called on a different instance of <see cref="T:System.Configuration.Install.Installer" />. For this reason, do not save the state of a computer in an installer. Instead, use an <see cref="T:System.Collections.IDictionary" /> that is preserved across calls and passed into the <see cref="M:System.Configuration.Install.Installer.Install(System.Collections.IDictionary)" />, <see cref="M:System.Configuration.Install.Installer.Commit(System.Collections.IDictionary)" />, <see cref="M:System.Configuration.Install.Installer.Rollback(System.Collections.IDictionary)" />, and <see cref="M:System.Configuration.Install.Installer.Uninstall(System.Collections.IDictionary)" /> methods.</para>
    </remarks>
  </Docs>
</Namespace>