Eingabe von Variablen

Fragen zum AKInstallerMSI
Antworten
DanielW
Beiträge: 2
Registriert: 11.03.2019, 16:27

Eingabe von Variablen

Beitrag von DanielW »

Hallo zusammen,

ich beschäftige mich jetzt sein einiger Zeit mit AKInstallerMSI und finde es echt klasse. :)

Jetzt bin ich aber auf ein Problem gestoßen. Und zwar muss ich beliebig viele Webs im IIS anlegen können die man auch benennen können muss.
Also quasi eine Variable Pro Web. Aus der sich dann der festgelegte Pfad, Name des Webs usw. ergibt.

Jetzt ist die Frage wie ich das konfiguriere, dass der User einfach nur ein Dialog angezeigt bekommt wo er ein plus drückt für beliebig viele webs. Und daneben ein namen eingeben kann.

Wie werden allgemein Variablen im Programm vergeben? Funktioniert das über die Eigenschaften?
Andreas Kapust
Administrator
Beiträge: 1083
Registriert: 29.02.2004, 15:51
Wohnort: Hamburg
Kontaktdaten:

Re: Eingabe von Variablen

Beitrag von Andreas Kapust »

Guten Tag.

Ich fürchte das Anlegen beliebig vieler Einträge über die vorhandene IIS-Custom Action ist nicht möglich, da hier immer ein Eintrag einer Einrichtung entspricht, welcher natürlich Eigenschaften nutzen kann, aber eben nur eine pro Eintrag.
Weiterhin ist die UI des Windows Installers sehr eingeschränkt, so ist z. B. ein Control immer an eine Eigenschaft gebunden.
In beiden Fällen kommt man um Programmierung nicht drum rum.
Der Ablauf wäre im groben so:

UI:
Man richtet einen DialogEins mit Eingabefeld und Listbox und Hinzufügen- und Entfernen-Schalter ein. Hinzufügen/Entfernen sind jeweils mit einer CA verbunden, die den aktuellen Eintrag des Eingabefeldes in der Tabelle ListBox sucht und entfernt oder einträgt. Danach muss der DialogZwei (identisch zu DialogEins) aufgerufen werden. DialogZwei springt über Hinzufügen/Entfernen DialogEins an.

Hintergrund: MSI kann keine Controls zur Laufzeit ändern, Daten werden also nur beim Erstellen des Dialogs ausgelesen. Darum behilft man sich mit zwei Dialogen, die sich gegenseitig aufrufen, ein Dialog kann sich leider nicht selbst aufrufen.

Aktion:
Es werden jeweils eine CA für die Initialisierung, Ausführung, Rollback benötigt.

Initialisierung: Sammelt alle Daten aus der Tabelle ListBox, welche die Eigenschaft der ListBox –Eigenschaft entsprechen, stellt fest ob Erstinstallation, Folgeinstallation oder Deinstallation aktiv ist, ein entsprechender Eintrag neu angelegt wird und übermittelt diese an die Ausführung.
Neu anzulegende Einträge werden zusätzlich an Rollback übermittelt.


Ausführung: Diese wird verzögert mit erhöhten Rechten ausgeführt und übernimmt die gesammelten Daten von Initialisierung und richtet die Daten ein. Sammelt alle neu angelegten Einträge und schreibt diese in die Registry oder eine Datei. Webs mit gleichen Namen müssten je nachdem übergangen oder Reinitialisiert werden.

Rollback: Alle Einträge aus Liste der neu anzulegenden Einträge werden entfernt.

Weiterhin: Wenn der Dialog zum Anlegen bei einer Folgeinstallation nicht übersprungen wird, muss die Tabelle ListBox mit den in Registry oder Datei enthaltenen Daten befüllt werden.
Alles durchaus machbar.
Mit freundlichen Grüßen,
AKApplications, Andreas Kapust
DanielW
Beiträge: 2
Registriert: 11.03.2019, 16:27

Re: Eingabe von Variablen

Beitrag von DanielW »

Hallo Herr Kapust,

sie sind ja eine richtige One Man Army bei ihrer Firma :D

Danke für ihre Antwort aber ich habe ehrlich gesagt das Programm noch nicht so gut im Griff um das alles 100% zu verstehen.

Ich denke mal das der knifflige Teil der ist "beliebig viele" webs anzulegen. Und was ist wenn ich erstmal nur ein festes Web anlege, dass der Kunde dann benennen kann?

Mir ist im Programm zudem noch nicht klar wie ich ein Dialog zum eintippen einer "Variable/Eigenschaft" erstellen kann. Muss ich hier die EditCtrl1 box benutzen?

Gruß DanielW
Andreas Kapust
Administrator
Beiträge: 1083
Registriert: 29.02.2004, 15:51
Wohnort: Hamburg
Kontaktdaten:

Re: Eingabe von Variablen

Beitrag von Andreas Kapust »

Guten Tag.

Allgemein:
Eine oder mehrere festen WebSites können Sie über Systemkonfiguration -> IIS anlegen.
Hier könnte auch als Name z. B. [MEINEWEBSITE] verwendet werden.

Diese könnten mit speziellen Bedingungen verbunden werden (siehe unten).

Dialog:
Benutzen Sie einen bestehenden Dialog, fügen Sie dort ein Edit-Control ein und nutzen als Eigenschaft MEINEWEBSITE.
Dann wird der Wert aus dem Edit der Eigenschaft zugewiesen und IIS nutzt diesen Wert (dank [...]) als Namen.

Benutzen Sie einen eigenen Dialog, muss der verbunden werden z. B. mit Welcome und SetupTypeOneFeature und dann verfahren Sie wie oben.

Speziellen Bedingungen:

Haben Sie als z. B. 5 Einträge definiert, und auf einem Dialog ein Eingabefeld, welches die Anzahl abfragt (abgelegt in NameCount),

könnten Sie auf einem anderen Dialog 5 Eingabefelder anlegen und diese per ControlCondition steuern
1: nix
2: Hide NameCount < 1
3: Hide NameCount < 2
...

Bedingungeni IIS:
WebSite2: NameCount>=1
WebSite3: NameCount>=2

Sollen es 20 oder mehr WebSites sein, wird es aufwendig (und der Dialog sehr groß ;-) ).

Eigenschaften:
Werden diese komplett groß geschrieben lassen sie sich von außen ändern z. B. MEINEWEBSITE
MeineWebSite kann nicht von außen geändert werden.

Außen bedeutet msiexec.exe /i setup.msi MEINEWEBSITE=SuperSpace
Mit freundlichen Grüßen,
AKApplications, Andreas Kapust
Antworten