C# Setup-Projekt Variablenverarbeitung eigener Dialogfelder
-
Bitte ließ meinen Eintrag GENAUER...
Mir geht es nicht darum in eine Datei zu schreiben, sondern WIE ich die eingetragenen Werte vor Abschluss der Installation innerhalb des Setup-Projektes in eine Datei zu sichern...
Wie ich eine Datei zu verwalten habe ist mir schon klar...
-
Achso, sry hab mich da vorallem auf deinen letzten Satz gestüzt, und den oberenteil irgendwie ausgeblendet^^
-
Hallo Chakuza,
Deiner Setup-Projektmappe fügst Du ein zweites Projekt namens SetupLibrary hinzu. Darin erstellst Du eine Klasse die von System.Configuration.Install.Installer ableitet und die Methode Install() überschreibt.
Im nächsten Schritt wird im eigentlichen Setup-Projekt eine "Benutzerdefinierte Aktion" unter dem Punkt "Installieren" hinzugefügt, mit dem Wert "Primäre Ausgabe von SetupLibrary".Sobald das Setup fertig ist, wird Dein Code der Install()-Methode ausgeführt. In diesem Code kannst Du die gesetzten Werte der Dialogfelder in eine Ini-Datei schreiben (oder beliebige andere Aktionen ausführen). Zu diesem Zeitpunkt existieren bereits die Ordner, die das Setup anzulegen hat.
Es gibt in der MSDN eine gute Step-by-Step-Anleitung. Den Link habe ich gerade nicht zur Hand, aber die obigen Stichworte reichen Dir vielleicht für weiteres googlen aus.
-
Hallo µ,
recht herzlichen Dank für deine recht schnelle und detailreiche Antwort.
Also werde ich jetzt erst einmal die Installerklasse im Dienst-Projekt beifügen.
(Der Setup installiert einen Dienst)
Danke und ggf. bis später
Chakuza
-
Wie genau frage ich denn die gesetzten Werte von den Dialogfeldern ab???
-
Hallo µ,
ich habe mich an deine Anleitung gehalten und vorab folgendes Script in die Installerklasse geschrieben:
[System.Security.Permissions.SecurityPermission(System.Security.Permissions.SecurityAction.Demand)] public override void Install(IDictionary stateSaver) { base.Install(stateSaver); System.IO.Directory.CreateDirectory("C:\\test"); }
Leider wurde nach dem Setup kein verzeichnis erstellt.
Was genau mache ich falsch?
Danke & Viele Grüße
Chakuza
-
Also, ich konnte jetzt nach Abschluss den ordner erstellen.
Nun bleibt nur noch die Frage, was ich genau in das Install hineinschreiben muss um die gesetzten Werte der Dialogfelder abzugreifen.
Vorab Danke & Sorry fürs nerven
-
Hat sich erledigt, hab herausgefunden wie es funktioniert.
Vielen Dank
-
Chakuza schrieb:
Hat sich erledigt, hab herausgefunden wie es funktioniert.
Nur zur bitte: Wenn du eine Lösung gefunden hast, ist es nie verkehrt diese hier auch kurz zu erwähnen, wenn andere das gleiche Problem haben und auf den Thread stoßen.
-
Ja, soviel Zeit sollte sein, ich weiß nämlich auch nicht, wie ich an die Werte aus den Dialogfeldern rankomme!
-
Ah, okay, war ja klar, suche zwei Stunden nach der Lösung und 15 min nachdem ich mich in einem Forum beschwere, dass einer die Lösung nicht postet finde ich es selbst heraus:
Der Property-Name (z.B. EDITA1 oder wie ihr es auch konfiguriert) bleibt als Installerproperty erhalten. Allerdings werden den benutzerdefinierten Aktionen nicht immer alle Properties übergeben. Dies muss man selbst veranlassen.
Klickt dafür auf eure benutzerdefinierte Aktion in der Ansicht "Benutzerdefinierte Aktionen" (z.B. unter Installieren auf "Primäre Ausgabe von DeinProjektname"). Dann könnt ihr beliebige Parameter unter CustomActionData in den Eigenschaften übergeben. Das Format ist:/VariablenName1="MANUELLERWERT1" /VariablenName2="[PROPERTYNAME]"
PROPERTYNAME wäre z.B. euer EDIT1A oder was immer ihr euch dafür ausgesucht habt.
Dann könnt ihr in eurer Installer-Methode (BeforeInstall, AfterInstall oder welche auch immer) so darauf zugreifen:
Me.Context.Parameters("VariablenName2")
Hier würde dann jetzt der Inhalt von der Property PROPERTYNAME stehen.
Ich hoffe, das hilft anderen mehr weiter als Chakuza.
Gruß Base69