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

CustomActionData und Deferred CA


4 replies to this topic

reo

reo
  • Full Members
  • 15 posts

Posted 19 May 2008 - 14:01

Hallo

Ich habe das Internet und alle NewsGropus durchforstet (inkl. Tip: MSI Properties and Deferred Execution vom Macrovision und Decode the CustomActionData Property in InstallScript von Christoph Painter) und keine Lösung zu meinem Problem gefunden.

Mein Problem besteht darin, dass ich eine Deferred CA habe, die ein InstallScript aufruft und in diesesm Script brauche ich eine Property z.B. USERNAME. Die Property ist immer leer resp. der Wert besteht aus einem /.

Mein Aufbau:
Custom action: ReadPropDeferred
Type 51 (set a property)
Property name: ReadPropDeferred
Value: [USERNAME]
In-script Execution: Immediate Execution
Install Exec sequence: After StopService

Custom action: Test
Type: InstallScript
Return Processing: Synchronous (Ignores exit code)
In-script Execution: Deferred Execution
Install Exec sequence: After StartService

Script:
export prototype Test(HWND);
function Test(hMSI)

string szSupportDir, svName;
NUMBER nvBuffer;

begin
nvBuffer = 256;
MsiGetProperty (hMSI, "CustomActionData", svName, nvBuffer);
MessageBox ("UserName= "^svName, SEVERE);
end;

Als Attachement auch noch die Logdatei in gezippter Form angehängt.

Was muss ich machen, damit ich mein Property abfragen kann und der Wert mehr als nur aus einem / besteht?

Vielen Dank für alle Hilfe.

Gruss reo



Attached Files



mkkk

mkkk
  • Full Members
  • 63 posts

Posted 19 May 2008 - 15:53

Alle Properties, die Du zwischen InstallFiles() und InstallFinalize() benötigts, mußt Du vor InstallFiles() in das Property CustomActionData kopieren.
Nur dieses und ich glaube ein zwei andere Properties können in dem Bereich ausgelesen werden.

ali

ali
  • Full Members
  • 1,008 posts

Posted 19 May 2008 - 16:03

Hallo,
du musst erst mal eine CA erstellen, in der du der Script-CA das CustomActionData zuweist.

1.
Erstellen CA51 - Name zb. SetCAData
Eigenschaft = ReadPropDeferred
Wert = [USERNAME]
Einfügen vor InstallValidate.
2.
dann eine Scriptfunktion mit dem selben Name des Eigenschaftwertes oben also "ReadPropDeferred".
MsiGetProperty (hMSI, "CustomActionData", svName, nvBuffer); usw.
3.
Dann eine Script-CA mit dem Eigenschaftswert von oben, also "ReadPropDeferred" in der das Script ausgeführt wird.

Edited by ali, 19 May 2008 - 16:05.


Stefan Krueger

Stefan Krueger

    InstallSite.org

  • Administrators
  • 13,269 posts

Posted 19 May 2008 - 19:24

Das Proeprty, das du per type 51 setzt muss genauso heissen wie die deferred action, also in deinem Beispiel "Test".

reo

reo
  • Full Members
  • 15 posts

Posted 20 May 2008 - 14:34

Vielen Dank an alle Beteiligten, mein Problem ist behoben.

Die Lösung war:
Das Property in der CA (Type 51) muss den gleichen Namen haben wie die CA, die verzögert (deferred) ausgeführt wird.


Gruss reo

Edited by reo, 20 May 2008 - 14:40.