Exportar (0) Imprimir
Expandir todo

Installer (Clase)

Proporciona la base para las instalaciones personalizadas.

Espacio de nombres: System.Configuration.Install
Ensamblado: System.Configuration.Install (en system.configuration.install.dll)

public class Installer : Component
public class Installer extends Component
public class Installer extends Component

Ésta es la clase base para todos los instaladores personalizados de .NET Framework. Los instaladores son componentes que ayudan a instalar las aplicaciones en un equipo.

Es preciso seguir varios pasos para poder utilizar un Installer:

  • Herede la clase Installer.

  • Reemplace los métodos Install, Commit, Rollback y Uninstall.

  • Agregue RunInstallerAttribute a la clase derivada y establezca su valor en true.

  • Coloque la clase derivada en el ensamblado con la aplicación que desea instalar.

  • Invoque a los instaladores. Por ejemplo, utilice InstallUtil.exe para invocar a los instaladores.

La propiedad Installers contiene una colección de instaladores. Si esta instancia de Installer forma parte de una colección de instaladores, la propiedad Parent se establecerá en la instancia de Installer que contenga la colección. Para obtener un ejemplo del uso de la colección Installers, vea la clase AssemblyInstaller.

Los métodos Install, Commit, Rollback y Uninstall de la clase Installer recorren la colección de instaladores almacenada en la propiedad Installers e invocan al correspondiente método de cada instalador.

No siempre se llama a los métodos Install, Commit, Rollback y Uninstall en la misma instancia de Installer. Por ejemplo, se puede usar una instancia de Installer al instalar y confirmar una aplicación y, a continuación, se libera la referencia a dicha instancia. Más adelante, al desinstalar la aplicación se crea una referencia a una nueva instancia de Installer, lo cual significa que otra instancia de Installer llama al método Uninstall. Por este motivo, en la clase derivada, no es aconsejable guardar el estado de un equipo en un instalador. En lugar de ello, utilice un objeto IDictionary que se conserva en las llamadas y se pasa a los métodos Install, Commit, Rollback y Uninstall.

Existen dos situaciones en las que se muestra la necesidad de guardar la información en el objeto IDictionary donde se guardan los estados. En la primera, supongamos que el instalador establece una clave del Registro. Se debe guardar el valor original de la clave en IDictionary. Si se deshace la instalación, se podrá restaurar el valor original. En la segunda, supongamos que el instalador reemplaza un archivo existente. Guarde el archivo existente en un directorio temporal y la nueva ubicación del archivo en IDictionary. Si se deshace la instalación, el archivo más reciente se eliminará y será reemplazado por el archivo original en la ubicación temporal.

La propiedad Installer.Context contiene información sobre la instalación. Por ejemplo, información relacionada con la ubicación del archivo de registro de la instalación, la ubicación del archivo para guardar la información que requiere el método Uninstall y la línea de comandos que se especificó al ejecutar el ejecutable de instalación.

En el siguiente ejemplo se muestra cómo utilizar la clase Installer. Crea una clase que se hereda de Installer. Cuando Commit está a punto de finalizar, se produce el evento Committing y se muestra un mensaje.

using System;
using System.Collections;
using System.ComponentModel;
using System.Configuration.Install;

// Set 'RunInstaller' attribute to true.
[RunInstaller(true)]
public class MyInstallerClass: Installer
{
   public MyInstallerClass() :base()
   {
      // Attach the 'Committed' event.
      this.Committed += new InstallEventHandler(MyInstaller_Committed);
      // Attach the 'Committing' event.
      this.Committing += new InstallEventHandler(MyInstaller_Committing);

   }
   // Event handler for 'Committing' event.
   private void MyInstaller_Committing(object sender, InstallEventArgs e)
   {
      Console.WriteLine("");
      Console.WriteLine("Committing Event occured.");
      Console.WriteLine("");
   }
   // Event handler for 'Committed' event.
   private void MyInstaller_Committed(object sender, InstallEventArgs e)
   {
      Console.WriteLine("");
      Console.WriteLine("Committed Event occured.");
      Console.WriteLine("");
   }
   // Override the 'Install' method.
   public override void Install(IDictionary savedState)
   {
      base.Install(savedState);
   }
   // Override the 'Commit' method.
   public override void Commit(IDictionary savedState)
   {
      base.Commit(savedState);
   }
   // Override the 'Rollback' method.
   public override void Rollback(IDictionary savedState)
   {
      base.Rollback(savedState);
   }
   public static void Main()
   {
      Console.WriteLine("Usage : installutil.exe Installer.exe ");
   }
}

import System.*;
import System.Collections.*;
import System.ComponentModel.*;
import System.Configuration.Install.*;

// Set 'RunInstaller' attribute to true.
/** @attribute RunInstaller(true)
 */
public class MyInstallerClass extends Installer
{
    public MyInstallerClass()
    {
        // Attach the 'Committed' event.
        this.add_Committed(new InstallEventHandler(MyInstaller_Committed));

        // Attach the 'Committing' event.
        this.add_Committing(new InstallEventHandler(MyInstaller_Committing));
    } //MyInstallerClass

    // Event handler for 'Committing' event.
    private void MyInstaller_Committing(Object sender, InstallEventArgs e)
    {
        Console.WriteLine("");
        Console.WriteLine("Committing Event occured.");
        Console.WriteLine("");
    } //MyInstaller_Committing

    // Event handler for 'Committed' event.
    private void MyInstaller_Committed(Object sender, InstallEventArgs e)
    {
        Console.WriteLine("");
        Console.WriteLine("Committed Event occured.");
        Console.WriteLine("");
    } //MyInstaller_Committed

    // Override the 'Install' method.
    public void Install(IDictionary savedState)
    {
        super.Install(savedState);
    } //Install

    // Override the 'Commit' method.
    public void Commit(IDictionary savedState)
    {
        super.Commit(savedState);
    } //Commit

    // Override the 'Rollback' method.
    public void Rollback(IDictionary savedState)
    {
        super.Rollback(savedState);
    } //Rollback

    public static void main(String[] args)
    {
        Console.WriteLine("Usage : installutil.exe Installer.exe ");
    } //main
} //MyInstallerClass

Los miembros estáticos públicos (Shared en Visual Basic) de este tipo son seguros para la ejecución de subprocesos. No se garantiza que los miembros de instancias sean seguros para la ejecución de subprocesos.

Windows 98, Windows 2000 SP4, Windows Millennium, Windows Server 2003, Windows XP Media Center, Windows XP Professional x64, Windows XP SP2, Windows XP Starter Edition

.NET Framework no admite todas las versiones de cada plataforma. Para obtener una lista de las versiones admitidas, vea Requisitos del sistema.

.NET Framework

Compatible con: 2.0, 1.1, 1.0

Adiciones de comunidad

AGREGAR
Mostrar:
© 2014 Microsoft