This project is read-only.

Howto: Erstellen eines eigenen Installers

Es können mit dem InstallerFramework eigene, kompatible Installer erstellt werden, indem sie von der abstakten AdvancedInstaller-Schnittstelle abgeleitet werden, siehe AdvancedInstaller-Klasse. Im Konstruktor des Installers sollte die maximale Anzahl der Fortschrittsstufen festgelegt werden.

public class MyInstaller: AdvancedInstaller
{
  public MyInstaller
  {
     this.MaxSteps = new StepInfo(1, 1);
  }
}

Dann können eigene Installationsvorgänge durch Überschreiben der Install- und Uninstallmethode definiert werden. In jedem Installationsvorgang muss die Basisimplementierung aufgerufen werden, um die in der Installers-Eigenschaft festgelegten untergeordneten Installationsvorgänge auszuführen.
Es ist üblich, vor und nach der Ausführung der Basisimplementierung sowie am Ende einer Methode einen Log-Eintrag zu schreiben. Durch Festlegen der CurrentSteps-Variablen kann die Fortschrittstufe der Installation festgelegt werden. Nach jedem Installationsvorgang muss die Forschrittsstufe gleich der maximalen Stufenanzahl sein!
public override void Install(IDictionary stateSaver)
{
  this.Log.LogMessage("MyInstaller hat die Installation gestartet.");
  base.Install(stateSaver);
  this.Log.LogMessage("Komponenten werden installiert...");

  // TODO: Installieren der Komponenten
  stateSaver.Add("var", "<info string>");

  this.Log.LogMessage("MyInstaller hat die Installation abgeschlossen.");
  this.CurrentSteps = 1;
}

public override void Uninstall(IDictionary savedState)
{
  this.Log.LogMessage("MyInstaller hat die Deinstallation gestartet.");
  base.Uninstall(savedState);
  this.Log.LogMessage("Komponenten werden entfernt...");

  // TODO: Entfernen der Komponenten mit den Informationen aus savedState
  this.Log.LogMessage((string)savedState["var"] + " wurde beim Entfernen ausgelesen.");   

  this.Log.LogMessage("MyInstaller hat die Deinstallation abgeschlossen.");
  this.CurrentSteps = 1;
}

Last edited Jun 8, 2009 at 4:19 PM by root, version 10

Comments

No comments yet.