FeatureCompareSizeRequired Example

InstallShield 2015 ยป InstallScript Language Reference

/*--------------------------------------------------------------*\

*

* InstallShield Example Script

*

* Demonstrates the FeatureAddItem, FeatureSetData,

* FeatureCompareSizeRequired, and SdFeatureMult functions.

*

* Notes: DESTDIR must reference a drive with very little space

*        available, such as a floppy drive. Remember to put a

*        diskette into the floppy drive before running this

*        script.

*

\*--------------------------------------------------------------*/

 

#define FEAT1           "CAD Prog. Files"

#define FEAT1SIZE       25000000

#define FEAT1DESC       "CAD program EXEs and DLLs."

#define FEAT2           "CAD Templates"

#define FEAT2SIZE       18000000

#define FEAT2DESC       "CAD template files."

#define SUBFEAT1        "Industrial"

#define SUBFEAT1SIZE    7000000

#define SUBFEAT1DESC    "CAD industrial engineering template files."

#define SUBFEAT2        "Civil"

#define SUBFEAT2SIZE    5000000

#define SUBFEAT2DESC    "CAD civil engineering template files."

#define SUBFEAT3        "Mechanical"

#define SUBFEAT3SIZE    6000000

#define SUBFEAT3DESC    "CAD mechanical engineering template files."

#define DESTDIR         "a:\\"

#define SDFEATTITLE     "Displaying Script-created Features"

#define SDFEATMSG       "Make sure all features are selected."

#define FEATSIZEERRMSG  "Make sure target drive is accessible."

 

// Include Ifx.h for built-in InstallScript function prototypes.

#include "Ifx.h"

 

export prototype ExFn_FeatureCompareSizeRequired(HWND);

 

function ExFn_FeatureCompareSizeRequired(hMSI)

    STRING svDir, svTarget;

    NUMBER nvSize, nData;

begin

 

    // Disable the Back button in setup dialogs. Disable (BACKBUTTON);

    // Make a script-created feature set that includes subfeatures

    // and give it the media name "Run-time CAD".

    MEDIA = "Run-time CAD";

 

    FeatureAddItem (MEDIA, FEAT1, FEAT1SIZE, TRUE);

 

    FeatureSetData (MEDIA, FEAT1, FEATURE_FIELD_DESCRIPTION,

                      nData, FEAT1DESC);  

                      

    FeatureAddItem (MEDIA, FEAT2, FEAT1SIZE, TRUE);

    

    FeatureSetData (MEDIA, FEAT2, FEATURE_FIELD_DESCRIPTION, nData, FEAT2DESC);  

 

    FeatureAddItem (MEDIA, FEAT2 + "\\" + SUBFEAT1, SUBFEAT1SIZE, TRUE);

 

    FeatureSetData (MEDIA, FEAT2 + "\\" + SUBFEAT1, FEATURE_FIELD_DESCRIPTION,

                     nData, SUBFEAT1DESC);

 

    FeatureAddItem (MEDIA, FEAT2 + "\\" + SUBFEAT2, SUBFEAT2SIZE, TRUE);

 

    FeatureSetData (MEDIA, FEAT2 + "\\" + SUBFEAT2,  FEATURE_FIELD_DESCRIPTION,

                     nData, SUBFEAT2DESC);

 

    FeatureAddItem (MEDIA, FEAT2 + "\\" + SUBFEAT3, SUBFEAT3SIZE, TRUE);

 

    FeatureSetData (MEDIA, FEAT2 + "\\" + SUBFEAT3, FEATURE_FIELD_DESCRIPTION,

                     nData, SUBFEAT3DESC);  

 

    // Display the script-created features and subfeatures.

    SdFeatureMult (SDFEATTITLE, SDFEATMSG, svDir, "");

    

    // Set INSTALLDIR to DESTDIR, which, if you define as a floppy drive

    // (with a diskette in it), causes FeatureCompareSizeRequired

    // to display its 'not enough space' message.

    nvSize = 0;

 

    INSTALLDIR = DESTDIR;

 

    if (FeatureCompareSizeRequired(MEDIA, svTarget, nvSize) < 0) then

        MessageBox (FEATSIZEERRMSG, SEVERE);

    endif;

 

end;