Valuta il contenuto e lascia un commento

  Attiva vista per larghezza di banda ridotta
Questa pagina è specifica di
Microsoft Visual Studio 2008/.NET Framework 3.5

Sono disponibili anche altre versioni per quanto indicato di seguito:
Riferimento a .NET Framework
Classe Installer

Aggiornamento: novembre 2007

Fornisce la base per installazioni personalizzate.

Spazio dei nomi:  System.Configuration.Install
Assembly:  System.Configuration.Install (in System.Configuration.Install.dll)

Visual Basic - (Dichiarazione)
Public Class Installer _
    Inherits Component
Visual Basic (Utilizzo)
Dim instance As Installer
C#
public class Installer : Component
Visual C++
public ref class Installer : public Component
J#
public class Installer extends Component
JScript
public class Installer extends Component

La classe base per tutti i programmi di installazione personalizzati di .NET Framework. I programmi di installazione sono componenti che facilitano l'installazione di applicazioni in un computer.

Per utilizzare un Installer è necessario attenersi alla procedura che segue:

  • Ereditare la classe Installer.

  • Eseguire l'override dei metodi Install, Commit, Rollback e Uninstall.

  • Aggiungere l'attributo RunInstallerAttribute alla classe derivata e impostarlo su true.

  • Inserire la classe derivata nell'assembly con l'applicazione da installare.

  • Richiamare i programmi di installazione, ad esempio tramite InstallUtil.exe.

La proprietà Installers contiene un insieme di programmi di installazione. Se questa istanza di Installer è parte di un insieme Installer, la proprietà Parent verrà impostata sull'istanza di Installer che contiene l'insieme. Per un esempio di utilizzo dell'insieme Installers, vedere la classe AssemblyInstaller.

I metodi Install, Commit, Rollback e Uninstall della classe Installer scorrono l'insieme dei programmi di installazione memorizzati nella proprietà Installers e richiamano il metodo corrispondente di ogni programma di installazione.

I metodi Install, Commit, Rollback e Uninstall non vengono sempre chiamati nella stessa istanza di Installer. È possibile ad esempio utilizzare un'istanza di Installer per installare un'applicazione, eseguirne il commit e quindi rilasciare il riferimento a tale istanza. Successivamente, disinstallando l'applicazione verrà creato un nuovo riferimento a un'istanza di Installer, ovvero il metodo Uninstall verrà chiamato da una diversa istanza di Installer. Per questo motivo, nella classe derivata, si consiglia di non salvare lo stato di un computer in un programma di installazione. Utilizzare invece un oggetto IDictionary che viene mantenuto tra le diverse chiamate e passato nei metodi Install, Commit, Rollback e Uninstall.

Nei due casi che seguono viene illustrata la necessità di salvare le informazioni nell'oggetto IDictionary salvato. Nel primo caso, si supponga che nel programma di installazione venga automaticamente impostata una chiave del Registro di sistema. È necessario che il valore originale della chiave venga salvato nell'oggetto IDictionary. In caso di rollback dell'installazione, tale valore potrà così essere ripristinato. Nel secondo caso, si supponga che il programma di installazione porti alla sostituzione di un file esistente. Salvare il file esistente in una directory temporanea e il nuovo percorso del file nell'oggetto IDictionary. In caso di rollback dell'installazione, il file più recente verrà eliminato e sostituito da quello originale, che si trova nel percorso temporaneo.

La proprietà Installer..::.Context contiene informazioni sull'installazione, ad esempio il percorso del file di log dell'installazione, il percorso del file in cui vengono salvate le informazioni necessarie al metodo Uninstall e la riga di comando immessa durante l'esecuzione del file eseguibile di installazione.

Nell'esempio riportato di seguito viene illustrato l'utilizzo della classe Installer. Viene creata una classe che eredita da Installer. Quando il metodo Commit sta per essere completato, viene generato l'evento Committing e viene visualizzato un messaggio.

Visual Basic
Imports System
Imports System.Collections
Imports System.ComponentModel
Imports System.Configuration.Install

' Set 'RunInstaller' attribute to true.
<RunInstaller(True)> _
Public Class MyInstallerClass
   Inherits Installer

   Public Sub New()
       MyBase.New()
      ' Attach the 'Committed' event.
      AddHandler Me.Committed, AddressOf MyInstaller_Committed
      ' Attach the 'Committing' event.
      AddHandler Me.Committing, AddressOf MyInstaller_Committing
   End Sub 'New

   ' Event handler for 'Committing' event.
   Private Sub MyInstaller_Committing(ByVal sender As Object, _
                                      ByVal e As InstallEventArgs)
      Console.WriteLine("")
      Console.WriteLine("Committing Event occured.")
      Console.WriteLine("")
   End Sub 'MyInstaller_Committing

   ' Event handler for 'Committed' event.
   Private Sub MyInstaller_Committed(ByVal sender As Object, _
                                     ByVal e As InstallEventArgs)
      Console.WriteLine("")
      Console.WriteLine("Committed Event occured.")
      Console.WriteLine("")
   End Sub 'MyInstaller_Committed

   ' Override the 'Install' method.
   Public Overrides Sub Install(ByVal savedState As IDictionary)
      MyBase.Install(savedState)
   End Sub 'Install

   ' Override the 'Commit' method.
   Public Overrides Sub Commit(ByVal savedState As IDictionary)
      MyBase.Commit(savedState)
   End Sub 'Commit

   ' Override the 'Rollback' method.
   Public Overrides Sub Rollback(ByVal savedState As IDictionary)
      MyBase.Rollback(savedState)
   End Sub 'Rollback
   Public Shared Sub Main()
      Console.WriteLine("Usage : installutil.exe Installer.exe ")
   End Sub 'Main
End Class 'MyInstallerClass

C#
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 ");
   }
}

Visual C++
#using <System.dll>
#using <System.Configuration.Install.dll>

using namespace System;
using namespace System::Collections;
using namespace System::ComponentModel;
using namespace System::Configuration::Install;

// Set 'RunInstaller' attribute to true.

[RunInstaller(true)]
ref class MyInstallerClass: public Installer
{
private:

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


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


public:
   MyInstallerClass()
   {

      // Attach the 'Committed' event.
      this->Committed += gcnew InstallEventHandler( this, &MyInstallerClass::MyInstaller_Committed );

      // Attach the 'Committing' event.
      this->Committing += gcnew InstallEventHandler( this, &MyInstallerClass::MyInstaller_Committing );
   }


   // Override the 'Install' method.
   virtual void Install( IDictionary^ savedState ) override
   {
      Installer::Install( savedState );
   }


   // Override the 'Commit' method.
   virtual void Commit( IDictionary^ savedState ) override
   {
      Installer::Commit( savedState );
   }


   // Override the 'Rollback' method.
   virtual void Rollback( IDictionary^ savedState ) override
   {
      Installer::Rollback( savedState );
   }

};

int main()
{
   Console::WriteLine( "Usage : installutil.exe Installer.exe " );
}


J#
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

Qualsiasi membro static (Shared in Visual Basic) pubblico di questo tipo è thread-safe. I membri di istanza non sono garantiti come thread-safe.

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 e .NET Compact Framework non supportano tutte le versioni di ciascuna piattaforma. Per un elenco delle versioni supportate, vedere Requisiti di sistema di .NET Framework.

.NET Framework

Supportato in: 3.5, 3.0, 2.0, 1.1, 1.0
Contenuti della community   Che cos'è Contenuti della community?
Aggiungi nuovo contenuto RSS  Annotazioni
Processing
© 2009 Microsoft Corporation. Tutti i diritti riservati. Condizioni per l'utilizzo  |  Marchi  |  Informativa sulla privacy
Page view tracker