Jump to content


This is a ready-only archive of the InstallSite Forum. You cannot post any new content here. / Dies ist ein Archiv des InstallSite Forums. Hier können keine neuen Beiträge veröffentlicht werden.
Photo

Featureauswahl zur Laufzeit bestimmen


5 replies to this topic

filou

filou
  • Members
  • 9 posts

Posted 16 February 2006 - 19:44

Hallo,
gibt es irgendeine Möglichkeit zur Laufzeit die Auswahl der Features, welche der User selektiert hat, heraus zufinden?
Die Versuche mit FeatureIsItemSelected, FeatureSelectItems, FeatureGetData und FeatureSetData mit FEATURE_FIELED_SELECTED und FEATURE_FIELD_VISIBLE brachten keinen Erfolg. Diese Funktionen dienen wohl auch eher der Bestimmung welche Features schon installiert sind.

Ich brauche jedoch eine Möglichkeit in Abhängigkeit von gewählten Features bestimmte Properties setzen zu können.
Bin für jede Hilfe dankbar.

ali

ali
  • Full Members
  • 1,008 posts

Posted 17 February 2006 - 10:56

ich gehe mal davon aus, das du die Propertys mit einer CA setzt und nicht mit Script, da BasicMSI. Du kannst also eine CA erstellen "Erstellen einer Eigenschaft" und dort die Bedingung zb. &Fetaure=3 angeben damit die CA nur ausgeführt wird, wenn das Feature als Local zu installieren markiert ist.

Hilft dir das?

filou

filou
  • Members
  • 9 posts

Posted 17 February 2006 - 12:16

Hi ALi,
Dank erst mal für die prompte Antwort. So richtig komme ich mit der Antwort jedoch noch nicht weiter.
Mir ist jedoch immer noch nicht klar, wie ich heraus finden kann welche Features der User gewählt b.z.w. abgewählt hat, und das nachdem der User die Dialogsequenz beendet hat und noch bevor das Installationsprogramm irgendwelche Dateien auf das Zielsystem kopiert hat.

Was bedeutet "wenn das Feature als Local zu installieren markiert ist"?
Entfernte Installation = lokal bevorzugt? Wie komme ich an diese Information?

Ich versuche einmal zu beschreiben was ich vorhabe.
Es gibt in meiner Installation ein Feature (Common) welches für das zu installierende Programm notwendig ist und somit für den Anwender weder sichtbar noch abwählbar sein soll.
Nun kann der User eine Komponente (Dienste) wählen und beschliesst damit bestimmte Programmteile als Dienst ausführen zu wollen. Tut der User dies, so müssen bestimmte Kommponenten im Feature Common deaktiviert werden.
Dies ist notwendig da sonst falsche Programmteile auf dem Zielsystem installiert und auch entsprechende Verknüpfungen in Autostart angelegt werden.
Programm und Dienst dürfen nicht gleichzeitig laufen.




ali

ali
  • Full Members
  • 1,008 posts

Posted 17 February 2006 - 13:11

Naja, da komen natürlich noch fragen auf:
Auf welchen Betriebssystemen soll das laufen? Da du von Diensten redest, schätze ich mal W2k und XP, 2000S und 2003S aber auch noch NT 4.0?
Soll das alles auch noch Silent laufen können?

Zum einen brauchst du doch dafür jetzt nicht unbeding wissen wie der Stati der Feature ist, sondern nur sicherstellen das bestimmte Programmteile nicht installiert werden wenn dein Dienst ausgewählt wurde.
Dies kannst du schon mit Bedingungen erreichen. Zum einen ist die Frage, kannst du die Komponeten so bündeln das diese in Featur aufgeteilt sind, die abhängig vom Dienst ausgewählt werden oder nicht. Wenn ja kannst du beim auswählen des Service durch den Benutzer ein Property setzen, diese als Bedingung im Feature einsetzen und wenn das Property einen Wert hat dann wird das Feature mit dem Programmteilen zb. auf Installationstufe 200 gesetzt, also nicht installiert. Das Feature das die Dienste enthält wird hingegen durch das Property in der Bedingung auf Installationsstufe 90 gesetzt, also installiert.
Wenn du das nicht möchtetst, kannst du auch in den Dialogen die Feature an oder abwählen (AddLocal, Remove) wen ein bestimmtes Property gesetzt ist, so bekommst du das auch hin. Das würde dann allerdings nicht Silent funktionieren.

Für das umsetzen in einem Script würde denk ich MsiGetFeatureState was helfen.

Edited by ali, 17 February 2006 - 13:13.


filou

filou
  • Members
  • 9 posts

Posted 17 February 2006 - 14:47

Hi Ali,
nocheinmal vielen Dank für die prompte Antwort.

Wieder fehlt mir jedoch der entscheidende Hinweis, wie stelle ich fest ob das Feature Dienste vom User gewählt oder abgewählt ist.

Das ganze soll auf W2k, WinXP, Win2003 laufen.

Die CA und der Scriptcode sind schon fertig und functionieren, jedoch muss ich noch die entsprechende Variable/Property (INSTALLSERVICES) von Hand im Code setzen. In Abhängigkeit von INSTALLSERVICES soll entweder der Service installiert werden oder eine andere Komponente.

Das Property INSTALLSERVICES soll auf 1 gesetzt werden wenn der User die Komponente Dienste auswählt, und auf 0 wenn er die Komponente Dienste abwählt. Wie kann ich das erreichen?

Der letzte Abschnitt beschreibt letztendlich den Mechanismus den ich benötige und INSTALLSERVICES ist das Property welches den weiteren Verlauf der Installation steuert.


ali

ali
  • Full Members
  • 1,008 posts

Posted 20 February 2006 - 16:18

http://www.installsi...ifaq/a/1014.htm