Laden...

EntryPoint Property Format

Erstellt von diver vor 17 Jahren Letzter Beitrag vor 17 Jahren 1.833 Views
D
diver Themenstarter:in
44 Beiträge seit 2006
vor 17 Jahren
EntryPoint Property Format

Kontext meiner Frage:
Generell:
ms-help://MS.VSCC.v80/MS.MSDN.v80/MS.VisualStudio.v80.de/dv_deploy/html/208ca054-b2bd-4d27-a64d-79ba153c8d78.htm
Problem:
ms-help://MS.VSCC.v80/MS.MSDN.v80/MS.VisualStudio.v80.de/dv_deploy/html/e204310e-1f15-4efb-ac40-ce5c97ba4514.htm

Bei der Erstellung einer Setup - Datei aus einem Projekt ist es möglich benutzer definierte Aktionen anzugeben welche zu einem bestimmten Zeitpunkt der Installation ausgeführt werden sollen. Diese Aktionen können z.B. exe oder dll files sein.

Die Verwendung von exe files bereitet mir dabei keine Probleme jedoch möchte ich auf dlls zurückgreifen. Hierzu auch die Frage:

Bei der Angabe über den "Benutzerdefinierte Vorgangseigenschaften-Editor" des "entryPoint (Einstiegspunktes)" der dll bekomme ich bei der erstellung des setup projektes stets die Fehlermeldung, dass dieser in der angegebenen dll nicht gefunden werden konnte. Der Einstiegspunkt ist bei mir eine public static void methode.
In welchem Format ist diese als entrypoint anzugeben ?

Namespace.ClassName.Method ?
ClassName.Method ?
(habe so ziemlich alle Kombinationen auch Method() durchprobiert)

Muss ich im code der dll die methode vllt als einstiegspunkt markieren bzw.
auf Besonderheiten für die dll - Erstellung Rücksicht nehmen ?

Ich habe bereits sämtliche docs der ms help durch deswegen hoffe ich hier auf Hilfe.
X(

Gruß diver

3.170 Beiträge seit 2006
vor 17 Jahren

Hallo,
Ich denke für das Setup mußt Du in der .dll eine Installerklasse bereitstellen (ist als Dokumentvorlage enthalten).
In der kannst Du dann Install, Commit, Rollback und Uninstall überschreiben.
Wenn Du dann die .dll bei den benutzerdefinierten Aktionen hinzufügst, wird die entsprechende Methode ausgeführt.

EDIT:
Oder direkt EventHandler für alle möglichen während der Installation auftretenden Ereignisse im Konstuktor der Installerklasse anhängen.

Non quia difficilia sunt, non audemus, sed quia non audemus, difficilia sunt! - Seneca

D
diver Themenstarter:in
44 Beiträge seit 2006
vor 17 Jahren

Ich habe die Veränderungen dementsprechend angepasst:

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

namespace SomeNameSpace {
[RunInstaller(true)]
public class SetupSupport : Installer {
public SetupSupport() {
}
// Override the 'Commit' method of the Installer class.
public override void Commit(System.Collections.IDictionary mySavedState) {
base.Commit(mySavedState);
Console.WriteLine("The Commit method of 'SetupSupport'"
+ "has been called");
}
}
}

Im Anschluss bei benutzerdefinierten Aktionen im Commit Ordner abgelegt.
Der Entrypoint (bei mir 'Commit') wurde nach meinem Kenntnis stand ebenfalls gefunden. Ich habe beim testen des Setups (bei der Installation) nur ein Problem festgestellt. Ich bekomme beim Setup folgende Fehlermeldung:

"Die Datei C:...\SetupSupport.InstallState konnte nicht gefunden werden".

Woran könnte dieses wohl liegen ?

Gruß Diver

3.170 Beiträge seit 2006
vor 17 Jahren

Hallo,

du musst wenn Du nur Commit() nutzen willst die .dll trotzdem im Setup auch für die Install-Aktion eintragen. Sonst wird die Install()-Methode der Installer-Klasse nicht ausgeführt, und die genannte Datei, die das Commit benötigt, wird nicht angelegt.

Non quia difficilia sunt, non audemus, sed quia non audemus, difficilia sunt! - Seneca

D
diver Themenstarter:in
44 Beiträge seit 2006
vor 17 Jahren

Habe dies noch angepasst und es läuft jetzt einwandtfrei 👍 .
Von meiner Seite ein großes Dankeschön,
wäre vermutlich hier ohne support hängen geblieben !

Wollte noch zum Abschluß fragen ob es vllt. zu diesem Thema (InstallerKlassen, Erstellung, etc.) gute online resourcen gibt oder wie man sich diesbzgl. informieren kann (vllt. auch zum setup life cylce) ? Ist bis jetzt nämlich das erste mal,
dass ich mich von der ms help nicht rundum abgedeckt fühlte.

Gruß diver

3.170 Beiträge seit 2006
vor 17 Jahren

Hallo,
eigentlich ist alles im google zu finden. Eine spezielle Seite fällt mir da gerade nicht ein, suchen musst du schon selbst.

Non quia difficilia sunt, non audemus, sed quia non audemus, difficilia sunt! - Seneca