Scenario: 1. I have several (let's say 4) custom dialogs. The first dialog conatins a list control so the installer can select the 'environment' (i.e., production, test, qa, dev, etc.0. this list is populated dynamically by a custom action. The custom action allows the developer (person building the wix files) to specify (via properties) the different types of environments. This works great. 2. Custom dialogs 2-4 display different values in control fields, based upon the environment selected in the first dialog.
Current Approach: The developer must create a property for each combination of environment and value (for dialogs 2-4). Then the developer must a length list of conditional publish statements for the list control in dialog , to set the value of the dialog 2-4 fields property. Advantage: it works Disadvantage: difficult to maintain, increases opportunity for developer error The Problem: I would like to create a custom action, or equivalent functionality that will run after dialog 1, but before dialog 2-4. This custom action function would inspect the property for the environment (set in dialog 1), and then set the specified property to another property based upon the environment. I have a custom action where I build the correct environment sensitive values. I can get custom actions to run before dialog 1 (which doesn't help) or after all dialogs (which is too late). How can I insert conditional functionality that is dynamic in nature (remember the developer controls the values of items in the environment list control, which will correspond with the number of potential default values specified)? Ideally (in a perfect world) I could insert a function/custom action after Dialog 1. If I try to use the "Publish Event="DoAction" to call a custom action, the CA must be deferred and does not happen when I need it to, between dialogs 1 and 2. Any help, suggestions, or ideas will be appreciated. Thanks, Bob SNIPPETS: Dialog 1 List Box Control: <Control Id="EnvironmentList" Type="ListBox" X="45" Y="73" Width="100" Height="60" TabSkip="no" Property="propInstallEnvironment" Sorted ="no"> <ListBox Property="propInstallEnvironment" > <!-- List items added by Custom Action "PopulateEnvironmentList" --> </ListBox> <!-- Set Appropriate Default Values for WebSite DIALOG --> <Publish Property ="WEB_ADDRESS" Value ="[Development.WEB_ADDRESS]"> <![CDATA[propInstallEnvironment = "Development" AND Development.WEB_ADDRESS <> ""]]> </Publish> <Publish Property ="WEB_ADDRESS" Value ="[QA.WEB_ADDRESS]"> <![CDATA[propInstallEnvironment = "QA" AND QA.WEB_ADDRESS <> ""]]> </Publish> <Publish Property ="WEB_ADDRESS" Value ="[Test.WEB_ADDRESS]"> <![CDATA[propInstallEnvironment = "Test" AND Test.WEB_ADDRESS <> ""]]> </Publish> <Publish Property ="WEB_ADDRESS" Value ="[Production.WEB_ADDRESS]"> <![CDATA[propInstallEnvironment = "Production" AND Production.WEB_ADDRESS <> ""]]> </Publish> Sample Dialog 2-n List Box Control: <Control Id="WebSiteAddressEdit" Type="Edit" X="45" Y="85" Width="220" Height="18" Property="WEB_ADDRESS" Text="{32}" /> Sample of how developer is current setting default values (in main wxs file): <!-- WEB SITE DEFAULTS--> <Property Id ="Development.WEB_ADDRESS" Value="1.2.3.4" /> <Property Id ="Test.WEB_ADDRESS" Value="2.2.3.4" /> <Property Id ="QA.WEB_ADDRESS" Value="3.2.3.4" /> <Property Id ="Production.WEB_ADDRESS" Value="4.2.3.4" /> ------------------------------------------------------------------------------ _______________________________________________ WiX-users mailing list WiX-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/wix-users