1
votes

I have some features which should be mutual exclusive, but also these futures are shown only if some specific software is installed. Now I want to allow user choose just one from these features to install.. Any ideas? I can not use radiobuttons because features are based on condition (if some software is installed or not and we can not disable just some radiobutton...) Also I was trying to do it in futuretree selection... I know how to allow user to choose just one feature, (just calling costfinalize action after each change on featureselection tree) but then if user press next and then back... all features are disabled...

        <Feature Id='FM10' AllowAdvertise="no" TypicalDefault="install" ConfigurableDirectory="INSTALLDIR" Level='5000' Title="Frame Maker 10 files" Description="Frame Maker 10 files.">
            <ComponentRef Id='FAMSMainFM10DLL_component' />
            <Condition Level="0">NOT FM10HOME AND NOT REMOVE</Condition>
            <Condition Level="5000"><![CDATA[(&FM72 = 3 OR &FM72 = 4 OR &FM71 = 3 OR &FM71 = 4 OR &FM70 = 3 OR &FM70 = 4 OR &FM8 = 3 OR &FM8 = 4) AND FM10HOME]]></Condition>

        </Feature>

        <Feature Id='FM8' AllowAdvertise="no" TypicalDefault="install" ConfigurableDirectory="INSTALLDIR" Level='5000' Title="Frame Maker 8 files" Description="Frame Maker 8 files.">
            <ComponentRef Id='FAMSMainFM8DLL_component' />
            <Condition Level="0">NOT FM80HOME AND NOT REMOVE</Condition>
            <Condition Level="5001"><![CDATA[(&FM72 = 3 OR &FM72 = 4 OR &FM71 = 3 OR &FM71 = 4 OR &FM70 = 3 OR &FM70 = 4 OR &FM10 = 3 OR &FM10 = 4) AND FM80HOME]]></Condition>
        </Feature>

        <Feature Id='FM70' AllowAdvertise="no" TypicalDefault="install" ConfigurableDirectory="INSTALLDIR" Level='5000' Title="Frame Maker 7 files" Description="Frame Maker 7.0 files.">
            <ComponentRef Id='FAMSMainFM7DLL_component' />
            <Condition Level="0">NOT FM70HOME AND NOT FM71HOME AND NOT FM72HOME AND NOT REMOVE</Condition>
            <Condition Level="5001"><![CDATA[(&FM71 = 3 OR &FM71 = 4 OR &FM72 = 3 OR &FM72 = 4 OR &FM10 = 3 OR &FM10 = 4 OR &FM8 = 3 OR &FM8 = 4) AND FM70HOME]]></Condition>
        </Feature>

        <Feature Id='FM71' AllowAdvertise="no" TypicalDefault="install" ConfigurableDirectory="INSTALLDIR" Level='5000' Title="Frame Maker 7 files" Description="Frame Maker 7.1 files.">
            <ComponentRef Id='FAMSMainFM7DLL_component' />
            <Condition Level="0">NOT FM70HOME AND NOT FM71HOME AND NOT FM72HOME AND NOT REMOVE</Condition>
            <Condition Level="5001"><![CDATA[(&FM10 = 3 OR &FM10 = 4 OR &FM8 = 3 OR &FM8 = 4) AND FM71HOME]]></Condition>
        </Feature>

        <Feature Id='FM72' AllowAdvertise="no" TypicalDefault="install" ConfigurableDirectory="INSTALLDIR" Level='5000' Title="Frame Maker 7 files" Description="Frame Maker 7.2 files.">
            <ComponentRef Id='FAMSMainFM7DLL_component' />
            <Condition Level="0">NOT FM70HOME AND NOT FM71HOME AND NOT FM72HOME AND NOT REMOVE</Condition>
            <Condition Level="5001"><![CDATA[(&FM70 = 3 OR &FM70 = 4 OR &FM71 = 3 OR &FM71 = 4 OR &FM10 = 3 OR &FM10 = 4 OR &FM8 = 3 OR &FM8 = 4) AND FM72HOME]]></Condition>
        </Feature>
1

1 Answers

0
votes

finally I solved it:

        <Feature Id='FM10' AllowAdvertise="no" TypicalDefault="install" ConfigurableDirectory="INSTALLDIR" Level='5000' Title="Frame Maker 10 files" Description="Frame Maker 10 files.">
            <ComponentRef Id='FAMSMainFM10DLL_component' />
            <Condition Level="5000">FM10T = "LOCKED" AND FM10HOME</Condition>
            <Condition Level="1">FM10T = "UNLOCKED" AND FM10HOME</Condition>
            <Condition Level="0">NOT FM10HOME AND NOT REMOVE</Condition>
        </Feature>

        <Feature Id='FM8' AllowAdvertise="no" TypicalDefault="install" ConfigurableDirectory="INSTALLDIR" Level='5000' Title="Frame Maker 8 files" Description="Frame Maker 8 files.">
            <ComponentRef Id='FAMSMainFM8DLL_component' />
            <Condition Level="5001">FM8T = "LOCKED" AND FM80HOME</Condition>
            <Condition Level="1">FM8T = "UNLOCKED" AND FM80HOME</Condition>
            <Condition Level="0">NOT FM80HOME AND NOT REMOVE</Condition>
        </Feature>

        <Feature Id='FM70' AllowAdvertise="no" TypicalDefault="install" ConfigurableDirectory="INSTALLDIR" Level='5000' Title="Frame Maker 7.0 files" Description="Frame Maker 7.0 files.">
            <ComponentRef Id='FAMSMainFM7DLL_component' />
            <Condition Level="5001">FM7T = "LOCKED" AND FM70HOME</Condition>
            <Condition Level="1">FM70T = "UNLOCKED" AND FM70HOME</Condition>
            <Condition Level="0">NOT FM70HOME AND NOT REMOVE</Condition>
        </Feature>

        <Feature Id='FM71' AllowAdvertise="no" TypicalDefault="install" ConfigurableDirectory="INSTALLDIR" Level='5000' Title="Frame Maker 7.1 files" Description="Frame Maker 7.1 files.">
            <ComponentRef Id='FAMSMainFM7DLL_component' />
            <Condition Level="5001">FM71T = "LOCKED" AND FM71HOME</Condition>
            <Condition Level="1">FM71T = "UNLOCKED" AND FM71HOME</Condition>
            <Condition Level="0">NOT FM71HOME AND NOT REMOVE</Condition>
        </Feature>

        <Feature Id='FM72' AllowAdvertise="no" TypicalDefault="install" ConfigurableDirectory="INSTALLDIR" Level='5000' Title="Frame Maker 7.2 files" Description="Frame Maker 7.2 files.">
            <ComponentRef Id='FAMSMainFM7DLL_component' />
            <Condition Level="5001">FM72T = "LOCKED" AND FM72HOME</Condition>
            <Condition Level="1">FM72T = "UNLOCKED" AND FM72HOME</Condition>
            <Condition Level="0">NOT FM72HOME AND NOT REMOVE</Condition>
        </Feature>

and:

        <Control Id="Tree" Type="SelectionTree" X="25" Y="85" Width="175" Height="115" Property="_BrowseProperty" Sunken="yes" TabSkip="no" Text="!(loc.CustomizeDlgTree)" >
            <Publish Property="FM70T" Value="UNLOCKED">MsiSelectionTreeSelectedFeature = "FM70" AND (MsiSelectionTreeSelectedAction = 3 OR MsiSelectionTreeSelectedAction = 4)</Publish>
            <Publish Property="FM71T" Value="UNLOCKED">MsiSelectionTreeSelectedFeature = "FM71" AND (MsiSelectionTreeSelectedAction = 3 OR MsiSelectionTreeSelectedAction = 4)</Publish>
            <Publish Property="FM72T" Value="UNLOCKED">MsiSelectionTreeSelectedFeature = "FM72" AND (MsiSelectionTreeSelectedAction = 3 OR MsiSelectionTreeSelectedAction = 4)</Publish>
            <Publish Property="FM8T" Value="UNLOCKED">MsiSelectionTreeSelectedFeature = "FM8" AND (MsiSelectionTreeSelectedAction = 3 OR MsiSelectionTreeSelectedAction = 4)</Publish>
            <Publish Property="FM10T" Value="UNLOCKED">MsiSelectionTreeSelectedFeature = "FM10" AND (MsiSelectionTreeSelectedAction = 3 OR MsiSelectionTreeSelectedAction = 4)</Publish>

            <Publish Property="FM70T" Value="LOCKED">NOT MsiSelectionTreeSelectedFeature = "FM70" AND NOT (MsiSelectionTreeSelectedAction = 3 OR MsiSelectionTreeSelectedAction = 4)</Publish>
            <Publish Property="FM71T" Value="LOCKED">NOT MsiSelectionTreeSelectedFeature = "FM71" AND NOT (MsiSelectionTreeSelectedAction = 3 OR MsiSelectionTreeSelectedAction = 4)</Publish>
            <Publish Property="FM72T" Value="LOCKED">NOT MsiSelectionTreeSelectedFeature = "FM72" AND NOT (MsiSelectionTreeSelectedAction = 3 OR MsiSelectionTreeSelectedAction = 4)</Publish>
            <Publish Property="FM8T" Value="LOCKED">NOT MsiSelectionTreeSelectedFeature = "FM8" AND NOT (MsiSelectionTreeSelectedAction = 3 OR MsiSelectionTreeSelectedAction = 4)</Publish>
            <Publish Property="FM10T" Value="LOCKED">NOT MsiSelectionTreeSelectedFeature = "FM10" AND NOT (MsiSelectionTreeSelectedAction = 3 OR MsiSelectionTreeSelectedAction = 4)</Publish>
            <Publish Event="DoAction" Value="CostFinalize">1</Publish>
        </Control>