이 설명서는 보관되지만 유지 되지 않습니다.

Installer 클래스

업데이트: 2007년 11월

사용자 지정 설치의 기반을 제공합니다.

네임스페이스:  System.Configuration.Install
어셈블리:  System.Configuration.Install(System.Configuration.Install.dll)

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

이 클래스는 .NET Framework의 모든 사용자 지정 설치 관리자에 대한 기본 클래스입니다. 설치 관리자는 시스템에 응용 프로그램을 설치하는 것을 도와주는 구성 요소입니다.

Installer를 사용하려면 다음 단계를 수행해야 합니다.

  • Installer 클래스를 상속합니다.

  • Install, Commit, RollbackUninstall 메서드를 재정의합니다.

  • RunInstallerAttribute를 파생 클래스에 추가한 다음 true로 설정합니다.

  • 설치할 응용 프로그램의 어셈블리에 파생 클래스를 배치합니다.

  • 설치 관리자를 호출합니다. 예를 들어, InstallUtil.exe를 사용하여 설치 관리자를 호출합니다.

Installers 속성에는 설치 관리자의 컬렉션이 들어 있습니다. Installer의 이 인스턴스가 설치 관리자 컬렉션의 일부인 경우 Parent 속성은 컬렉션을 포함하는 Installer 인스턴스로 설정됩니다. Installers 컬렉션 사용의 예제를 보려면 AssemblyInstaller 클래스를 참조하십시오.

Installer 클래스의 Install, Commit, RollbackUninstall 메서드는 Installers 속성에 저장된 설치 관리자 컬렉션을 조사하여 각 설치 관리자의 해당 메서드를 호출합니다.

Install, Commit, RollbackUninstall 메서드가 항상 같은 Installer 인스턴스에서 호출되는 것은 아닙니다. 예를 들어, 응용 프로그램을 설치 및 커밋하는 동안 하나의 Installer 인스턴스를 사용하고 나면 해당 인스턴스에 대한 참조가 해제됩니다. 나중에 응용 프로그램을 제거하면 새 Installer 인스턴스에 대한 참조가 만들어집니다. 이는 Uninstall 메서드가 Installer의 다른 인스턴스에 의해 호출됨을 의미합니다. 따라서 파생 클래스에서는 컴퓨터 상태를 설치 관리자에 저장하지 마십시오. 대신에 호출 간에 보존되고 Install, Commit, RollbackUninstall 메서드에 전달되는 IDictionary를 사용하십시오.

다음 두 경우에는 상태 보호기 IDictionary에 정보를 저장해야 합니다. 먼저, 설치 관리자가 레지스트리 키를 설정한다고 가정합니다. 키의 원래 값을 IDictionary에 저장해야 합니다. 설치가 롤백되면 원래 값을 복원할 수 있습니다. 다음으로, 설치 관리자가 기존 파일을 대체한다고 가정합니다. 기존 파일은 임시 디렉터리에 저장하고 파일의 새 위치는 IDictionary에 저장합니다. 설치가 롤백되면 새로운 파일이 삭제되고 임시 위치에 있는 원래 파일로 대체됩니다.

Installer.Context 속성에는 설치에 대한 정보가 들어 있습니다. 예를 들어, 설치용 로그 파일의 위치, Uninstall 메서드에 필요한 정보를 저장할 파일의 위치, 설치 실행 파일이 실행될 때 입력을 수행했던 명령줄에 대한 정보가 들어 있습니다.

다음 예제에서는 Installer 클래스를 사용하는 방법을 보여 줍니다. 여기에서는 Installer에서 상속하여 클래스를 만듭니다. Commit이 완료되기 직전에 Committing 이벤트가 발생하고 메시지가 표시됩니다.

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


이 형식의 모든 공용 static(Visual Basic의 경우 Shared) 멤버는 스레드로부터 안전합니다. 인터페이스 멤버는 스레드로부터 안전하지 않습니다.

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

.NET Framework 및 .NET Compact Framework에서 모든 플랫폼의 전체 버전을 지원하지는 않습니다. 지원되는 버전의 목록을 보려면 .NET Framework 시스템 요구 사항을 참조하십시오.

.NET Framework

3.5, 3.0, 2.0, 1.1, 1.0에서 지원
표시: