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

Reihenfolge von Custom Action stimmt nicht


9 replies to this topic

ANo

ANo
  • Full Members
  • 179 posts

Posted 29 September 2011 - 14:50

Hallo, Entschuldigung, aber ich habe gerade ein Brett vor dem Kopf -
ich kriege die Reihenfolge von ein paar Custom Actions in die Reihe.

Meine Aufgabe ist:

- Feature1 wird inst. / nicht inst.

- wird Feature1 nicht installiert, dann soll ActionProperty1 nicht ausgeführt werden

- ActionProperty1 setzt eine public Prop1 = 1
ActionProperty1 wird nicht ausgeführt, wenn Bedingung: &Feature1=2 Or !Feature1=2
dann bleibt/ist Prop1 = 0

- ActionExe wird nicht ausgeführt, wenn Prop1 = 0
(In-Script Execution: Deferred Execution im System Context)


Ich weiß nicht, wann bzw. wo die Aktion ActionProperty1 zu setzen ist.

Könnte mir bitte jemand helfen.
Gruß
André



Stefan Krueger

Stefan Krueger

    InstallSite.org

  • Administrators
  • 13,269 posts

Posted 29 September 2011 - 17:55

Ich bin nicht sicher, ob ich die Frage richtig verstanden habe.

Wenn die Bedingung für die Custom Action ActionExe das Property Prop1 auswertet, dann muss die Aktion, die dieses Property Prop1 setzt, entweder in der Execute Sequenz vor ActionExe stehen, oder in der UI Sequenz.

ANo

ANo
  • Full Members
  • 179 posts

Posted 05 October 2011 - 09:05

Hallo Stefan,

Ich habe PROP1=0 gesetzt

Ich habe die ActionProperty1 eingebunden wie folgt:
Property Name = PROP1
Property Value = 1
Execution Scheduling = Allways execute
Install Exec Sequence = After InstallInitialize
Install Exec Condition = Installed And ( &Feature1=2 Or !Feature1=2)

Ich habe die ActionExe eingebunden wie folgt
Execution Scheduling = Allways execute
Install Exec Sequence = After RegisterFonts
Install Exec Condition = Not(REMOVE~="ALL" Or PATCH) And PROP1=1

Das funktioniert so.
Was mich stört/irritiert ist die Bedingung:
Installed And ( &Feature1=2 Or !Feature1=2).

Ich verstehe nicht was ich falsch mache.
Normal würde ich erwarten, ich komme mit der Bedingung hin:
&Feature1=2 Or !Feature1=2

Gruß
André


ali

ali
  • Full Members
  • 1,008 posts

Posted 06 October 2011 - 10:25

Hi André,
dei Posting ist ewas verwirrend. Du schreibst das "das funktioniert so". Was funktioniert denn nicht? Wird das Property nicht gesetzt oder die Exe nicht ausgeführt?

Edited by ali, 06 October 2011 - 10:28.


Stefan Krueger

Stefan Krueger

    InstallSite.org

  • Administrators
  • 13,269 posts

Posted 07 October 2011 - 14:41

QUOTE
Normal würde ich erwarten, ich komme mit der Bedingung hin:
&Feature1=2 Or !Feature1=2

Das kommt natürlich darauf an, welches Verhalten du möchtest.
&Feature1=2 ergibt True wenn das Feature zuvor installiert war und jetzt entfernt wird.
!Feature1=2 ist True wenn das Feature im Moment nicht installiert ist, also z.B. auch bei der Erstinstallation.

ANo

ANo
  • Full Members
  • 179 posts

Posted 10 October 2011 - 08:02

Hallo Ali und Stefan,
entschuldige bitte Ali für die Verwirrung, die ich stifte.

Meine Frage ist die:
Warum funktioniert es so: Installed And ( &Feature1=2 Or !Feature1=2)
Warum funktioniert es nicht mit: &Feature1=2 Or !Feature1=2

QUOTE
Ich habe die ActionProperty1 eingebunden wie folgt:
Property Name = PROP1
Property Value = 1
Execution Scheduling = Allways execute
Install Exec Sequence = After InstallInitialize
Install Exec Condition = Installed And ( &Feature1=2 Or !Feature1=2)


Habe ich die Aktion in der falschen Sequenz / Reihenfolge eingebunden?
(Ist "After InstallInitialize" falsch?)

Gruß
André

ali

ali
  • Full Members
  • 1,008 posts

Posted 10 October 2011 - 08:55

QUOTE
Warum funktioniert es so: Installed And ( &Feature1=2 Or !Feature1=2)
Warum funktioniert es nicht mit: &Feature1=2 Or !Feature1=2


Der Unterschied in den Bedingungen liegt darin, das die Erste nur dann überhaupt wahr sein kann, wenn das Produkt bereits installiert ist, bei der 2. ist das eben nicht so.

Aber wenn du eine genauere Antwort haben willst, solltest du mal Beschreiben, was du überhapt für ein verhalten wünschst, das kann ich hier nicht erkennen.Wann bzw. in welchen Situationen soll denn die Aktion ausgeführt werden?

ANo

ANo
  • Full Members
  • 179 posts

Posted 10 October 2011 - 15:35

Hallo Ali, danke für die Bemühung mein Anliegen zu verstehen.

Ich möchte wenn das Feature1 nicht installiert ist/wird, daß die PROP1 den Wert 1 hat.
Wenn die PROP1=1 ist, soll unter anderem die ActionExe nicht ausgeführt werden.
(Ich möchte PROP1 benutzen als Bedingung für die ActionExe und nicht Feature1, es ist so.)
Die PROP1 wird auch in der Registry abgelegt.

QUOTE
Ich habe PROP1=0 gesetzt zum Start.


QUOTE
Ich habe die ActionProperty1 eingebunden wie folgt:
Property Name = PROP1
Property Value = 1
Execution Scheduling = Allways execute
Install Exec Sequence = After InstallInitialize
Install Exec Condition = Installed And (&Feature1=2 Or !Feature1=2)


QUOTE
Ich habe die ActionExe eingebunden wie folgt
Execution Scheduling = Allways execute
Install Exec Sequence = After RegisterFonts
Install Exec Condition = Not(REMOVE~="ALL" Or PATCH) And PROP1=0


Sorry, ich hatte hier beim Screiben einen Dreher drin mit PRROP=1/0.

Mich interessiert, daß einfach das folgende nicht richtig sein kann
(auch wenn es so funktioniert).
QUOTE

Install Exec Condition = Installed And ( &Feature1=2 Or !Feature1=2)


Nach meiner Meinung müsste die Aktion für PROP1 so eingebunden sein,
das es reicht folgendes zu setzen:
QUOTE

Install Exec Condition = &Feature1=2 Or !Feature1=2


Im Prinzip weiß ich nicht, ab wann, nach welcher Action, steht mir die Information zur Verfügung, ob ein Feature installiert wird oder nicht.

Gruß
André

Stefan Krueger

Stefan Krueger

    InstallSite.org

  • Administrators
  • 13,269 posts

Posted 10 October 2011 - 15:59

Sorry, es ist immer noch nicht klar, was du willst und was nicht funktioniert. Wenn ich es richtig verstehe, hast du zwei Aktionen:
eine, die ein Proiperty (PROP1) setzt
eine, die eine Custom Action (EXE?) ausführt

Für beide Aktionen hast du Bedingungen vergeben. Welche voin beiden funktioniert nicht wie erwartet?
Die Bedingung für die Aktion, die das Property setzt? (Hast du kontrolliert, ob das Property gesetzt wird)?
Oder die Bedingung für die zweite Aktion, also die Bedingung, die den Wert von PROP1 auswertet?

Kannst du bitet auch schreiben, von welchem Typ die beiden Aktionen sind und wie die In-Script Ausführung eingestellt ist (Immediate, Deferred, ...)

ali

ali
  • Full Members
  • 1,008 posts

Posted 10 October 2011 - 16:40

ich vermute mal das Problem bzw. der unterschied zwischen den beiden Aktionen
Installed And (&Feature1=2 Or !Feature1=2)
&Feature1=2 Or !Feature1=2

liegt darin, das die Bedingung !Feature=2 auch dann wahr ist, wenn du das Produkt zum erstem Mal installierst und das Feature für die Installation abgewählt wird. Auch dann trifft deine Bedingung zu.
Das würde im log so aussehen:
Feature: Feature1; Installed: Absent; Request: Null; Action: Null

!Feature1=2 ist hier true
mit der zusätzlichen Bedingung "Installed" schließt du das für eine Erstinstallation aus und dein Property bleibt 0.

Ich würde mir das an deiner Stelle mal in einem Log ansehen und nachvollziehen.
gruß