Changes to non-public properties are never copied from the UI sequence to the Execute sequence. All properties you intend to set in the UI sequence and use to influence the Execute sequence must be both public and secure.
-----Original Message----- From: Elfe Xu [mailto:elf...@microsoft.com] Sent: Saturday, July 10, 2010 6:59 PM To: wix-users@lists.sourceforge.net Subject: [WiX-users] Property set in UI Sequence are not recognized in Execute Sequence? Hi, I have a dialog with checkboxes to allow user choose the features they want to install, and I have several custom actions to prepare data if user want to install some feature. The INSTALL_AGENT public property allows user to choose features by command line, and the install_agent private property is bind to the checkbox. In the code: <!-Pre set the install_agent property according to cmdline input--> <SetProperty Id="install_agent" Value="1" Before="AppSearch" Sequence="both"><![CDATA[INSTALL_AGENT ~= "YES"]]></SetProperty> <!-In the feature select dialog--> <Control Id="CheckBoxAgent" Type="CheckBox" X="25" Y="103" Width="280" Height="15" CheckBoxValue="1" Property="install_agent" Text="!(loc.FeatureSelection_AgentTitle)"> <Control Id="Next" Type="PushButton" X="236" Y="243" Width="56" Height="17" Default="yes" Text="!(loc.WixUINext)"> <Publish Event="Remove" Value="ALL">1</Publish> <Publish Event="AddLocal" Value="FeatureAgent">install_agent</Publish> </Control> <!-In InstallExecuteSequence, the CustomeAction for preparing registry values, happens before writeRegistryValues--> <Custom Action="CAPrepareAgentRegistryValues" Sequence="4960"><![CDATA[(NOT Installed) AND install_agent]]></Custom> <WriteRegistryValues Sequence="5000" /> I tought the custom action should be executed, if: (1) user use INSTALL_AGENT=YES in cmdline. Or (2) user check the CheckBoxAgent by UI. However, I found actually it only works on first case. In second case, the action is skipped. Here is the log by execute: msiexec /I setup.msi INSTALL_AGENT=NO (1) MSI (c) (B8:70) [09:36:50:953]: Skipping action: Setinstall_agent (condition is false) (2) Action 9:36:56: FeatureSelectionDlg. Dialog created (3) MSI (c) (B8:CC) [09:36:58:628]: PROPERTY CHANGE: Adding install_agent property. Its value is '1'. (4) MSI (s) (98:08) [09:37:11:623]: Skipping action: Setinstall_agent (condition is false) (5) MSI (s) (98:08) [09:37:17:636]: Skipping action: CAPrepareAgentRegistryValues (condition is false) Action (1) (2) (3) are in UI sequence, and (4) (5) are in execute sequence. Action (5) is skipped, but shouldn't the condition be true since install_agent is 1 after action (3)? Seems the action in UI has no effect to condition in execute sequence? If I run msiexec /I setup.msi INSTALL_AGENT=YES, then it works fine. I know that change the condition to ><![CDATA[(NOT Installed) AND &FeatureAgent >= 3]]> would solve my problem, but I would like to understand why use install_agent here would fail. The properties used in UI and Execute sequence are separated and do not influence the other? It is quite different from what I had expected. Thanks, -Elfe ---------------------------------------------------------------------------- -- This SF.net email is sponsored by Sprint What will you do first with EVO, the first 4G phone? Visit sprint.com/first -- http://p.sf.net/sfu/sprint-com-first _______________________________________________ WiX-users mailing list WiX-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/wix-users ------------------------------------------------------------------------------ This SF.net email is sponsored by Sprint What will you do first with EVO, the first 4G phone? Visit sprint.com/first -- http://p.sf.net/sfu/sprint-com-first _______________________________________________ WiX-users mailing list WiX-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/wix-users