InstallUISequence typically runs in its entirety before
InstallExecuteSequence is processed (the execute sequence is processed by
the ExecuteAction action). You can't set a property in the execute sequence
and expect its value to appear in the UI sequence. You should schedule your
custom action in the UI sequence before your Show action.

Public properties are copied from the client process to the server process,
but not in the other direction, which is I think what you're trying to do
here.

If you need the property in the execute sequence as well, it needs to be a
public property (ALLCAPS, as this one is), and you should schedule the
custom action in the execute sequence as well so that your install still
works in no-UI mode (msiexec /qn). If you want it only to run once, set
CustomAction/@Execute to "firstSequence".

-- 
Mike Dimmick

-----Original Message-----
From: [EMAIL PROTECTED]
[mailto:[EMAIL PROTECTED] On Behalf Of WiX'ed
Sent: 26 April 2007 21:24
To: wix-users@lists.sourceforge.net
Subject: [WiX-users] Property Visibility and Custom Actions

Given a property:

<Property Id='MYPROPERTY' Value='0' />

I have a custom action that sets it to different values depending on  
what it finds:

<CustomAction Id='SetMyProperty' BinaryKey='HelperDLL'  
DllEntry='SetMyProperty' />

<InstallExecuteSequence>
        <Custom Action='SetMyProperty' After='ValidateProductID'>NOT  
Installed</Custom>
</InstallExecuteSequence>

I need to show a dialog (among other things) depending on the value  
of this property:

<InstallUISequence>
        <Show Dialog="MyDialog" After='ExecuteAction'>MYPROPERTY = 1</Show>
</InstallUISequence>

The problem is that no matter what value the custom action sets for  
MYPROPERTY, it is always 0 (whatever I defined at the top or not  
defined at all if I don't) when the dialog 'MyDialog' is supposed to  
run.

The msiexec log shows MYPROPERTY being properly set by the custom  
action:

<...snip...>
MSI (s) (DC!0C) [15:31:05:718]: PROPERTY CHANGE: Modifying MYPROPERTY  
property. Its current value is '0'. Its new value: '1'.
<...snip...>

But I see these two lines showing the different values:

<...snip...>
Property(S): MYPROPERTY = 1
<...snip...>
Property(C): MYPROPERTY = 0
<...snip...>

I assume these to be "Client" and "Server". How do I make this work?  
I'm sorry if this is simple but I'm still having a hard time grasping  
MSI.

TIA

g

-------------------------------------------------------------------------
This SF.net email is sponsored by DB2 Express
Download DB2 Express C - the FREE version of DB2 express and take
control of your XML. No limits. Just data. Click to get it now.
http://sourceforge.net/powerbar/db2/
_______________________________________________
WiX-users mailing list
WiX-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/wix-users


-------------------------------------------------------------------------
This SF.net email is sponsored by DB2 Express
Download DB2 Express C - the FREE version of DB2 express and take
control of your XML. No limits. Just data. Click to get it now.
http://sourceforge.net/powerbar/db2/
_______________________________________________
WiX-users mailing list
WiX-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/wix-users

Reply via email to