
    ;***********************************************************************
    ; SOURCE MEDIA DESCRIPTION			
    ; ------------------------
    ;***********************************************************************
    [Source Media Descriptions]
        1 = "CD-Rom Labelled Windows NT"
        2 = "CD-Rom Labelled ActiveX(tm) SDK"
    
    
    
    ;***********************************************************************
    ; CONSTANTS FOR USING DIALOGS
    ;***********************************************************************
    [GeneralConstants]
    
        ;
        ; Constants to support the use of radio button dialogs
        ;
    
        Radio1  = "1"
        Radio2  = "2"
        Radio3  = "3"
        Radio4  = "4"
        Radio5  = "5"
        Radio6  = "6"
        Radio7  = "7"
        Radio8  = "8"
        Radio9  = "9"
    
        ;
        ; Constants to support the use of checkbox dialogs
    
        Chosen    = "ON"
        NotChosen = "OFF"
    
    
    [RegistryConstants]
    
        MaskAllAccess = 33554432
        NoTitle       = 0
        RegLastError  = $(!REG_ERROR_SUCCESS)
    
    
    ;************************************************************************
    ; CONFIGURATION CHOICES
    ; ---------------------
    ; the sections below contain the different choices supported for
    ; the configuration items shown.  an id section establishes the
    ; language independent IDs supported by nt setup.  for each language
    ; supported a text section displays the text used for the different
    ; choices
    ;************************************************************************
    
    ;********************************
    ; PLATFORM INDEPENDENT CHOICES
    ;********************************
    ;----------------------------------------------------
    ; LANGUAGE CHOICES
    ;----------------------------------------------------
    
    ;----------------------------------------------------
    ; PROCESSOR CHOICES
    ;----------------------------------------------------
    [ProcessorID]
    
        ProcessorID_I386  = I386
        ProcessorID_I486  = I486
        ProcessorID_I586  = I586
        ProcessorID_R4000 = R4000
        ProcessorID_ALPHA = ALPHA_AXP
        ProcessorID_PPC601 = PPC601
        ProcessorID_PPC603 = PPC603
        ProcessorID_PPC604 = PPC604
        ProcessorID_PPC620 = PPC620
    
    ;----------------------------------------------------
    ; PLATFORM CHOICES
    ;----------------------------------------------------
    [PlatformID]
    
        PlatformID_I386 = i386
        PlatformID_MIPS = mips
        PlatformID_ALPHA = alpha
        PlatformID_PPC = ppc
    
    ;**************************************************************
    ;  UI VARIABLES
    ;**************************************************************
    
    [ProcessorVar]
    
        STF_PROCESSOR = "" ? $(LIBHANDLE) GetProcessor
        STF_PLATFORM  = ""
    
    [LocaleVar]
        ;
        ; Locale for Win95 debug dlls
        ;
    
        STF_LOCALE       = "" ? $(SDKLIBHANDLE) GetWindowsLocaleID
    
        ;
        ; On the topic of locales, set manifest constants
        ;
    
        LANGID_JPN = "JPN"
        LANGID_ENG = "ENG"
    
    
    
    [UiVars]
    
        ;
        ; Destination TOOLS Drive Particulars
        ;
        VolumeList      = {} ? $(LIBHANDLE) GetHardDriveLetters
        VolumeFreeList  = {} ? $(LIBHANDLE) GetHardDriveFreeSpace
        VolumeFSList    = {} ? $(LIBHANDLE) GetHardDriveFileSystems
        DestVolume      = ""
        ;
    
        ;
        ; Windows NT Directory
        ;
    
        STF_WINDOWSPATH    = "" ? $(!LIBHANDLE) GetWindowsNtDir
        STF_HOSTOS         = "" ? $(!SDKLIBHANDLE) GetWindowsPlatform
    
        ;
        ; INetSDK directory
        ;
    
        INETSDK = "\INetSDK"
    
        ;
        ; Installation mode
        ;
    
        MinInteract         = $(Radio1)
        MaxInteract         = $(Radio2)
        STF_INSTALL_MODE    = $(MinInteract)
    
        ;
        ; INetSDK Setup Help IDs
        ;
    
        !IDH_DB_TOOLSWELCOME_INS   = 3000
        !IDH_DB_MSTINSTALLMODE_INS = 3010
        !IDH_DB_MSTDEST_INS        = 3020
        !IDH_DB_MSTOPTIONS_INS     = 3030
    
    
    [EnvironmentVars]
        ;
        ; user environment variables in the current user's profile
        ;
    
        PathEnvVar     = {} ? $(LIBHANDLE) GetEnvVar $(PRIVILEGES) Path
        LibEnvVar      = {} ? $(LIBHANDLE) GetEnvVar $(PRIVILEGES) Lib
        IncludeEnvVar  = {} ? $(LIBHANDLE) GetEnvVar $(PRIVILEGES) Include
        InitEnvVar     = {} ? $(LIBHANDLE) GetEnvVar $(PRIVILEGES) init
        INetSDKRootEnvVar  = {} ? $(LIBHANDLE) GetEnvVar $(PRIVILEGES) INetSDKRoot
        MsToolsRootEnvVar  = {} ? $(LIBHANDLE) GetEnvVar $(PRIVILEGES) MsToolsRoot
        INetSDKRootEnvVar2  = {} ? $(LIBHANDLE) GetEnvVar $(PRIVILEGES) INetSDK
        MsToolsRootEnvVar2  = {} ? $(LIBHANDLE) GetEnvVar $(PRIVILEGES) MsTools
    
    
    [VarsPlatformCommon]
        ;
        ; Installation options
        ;
    
        DoTools        = $(Chosen)
        DoBins         = $(Chosen)
        DoLibs         = $(Chosen)
        DoHeaders      = $(Chosen)
        DoOnlineHelp   = $(Chosen)
        DoSamples      = $(Chosen)
        DoSample       = $(Chosen)
        DoINetSDK          = $(Chosen)
        DoPDCOther     = $(Chosen)
     
        HeadersSize      = 0
        OnlineHelpSize   = 9908000  ;this is in primary
        SamplesSize      = 0
        SampleSize       = 0  ;this is the other choice on size
    
        ;
        ; Options to disable
        ;
    
        DisableList = {}
        SamplesDisableList = {}
        ToolsDisableList = {}
    
        TotalList = {Tools, OnlineHelp, Samples}
        ToolsList = {Bins, Headers, Libs, OnlineHelp}
        SamplesList = {Sample}
    
    [VarsI386]
        ;
        MinToolsSize     = 12
        MaxToolsSize     = 12
        BinsSize         = 0
        LibsSize         = 0
        WinntDLLSize     = 0
        ToolsSize        = 0
    
    [VarsMips]
        MinToolsSize     = 12
        MaxToolsSize     = 12
        BinsSize         = 0
        LibsSize         = 0
        WinntDLLSize     = 0
        ToolsSize        = 0
    
    [VarsAlpha]
        MinToolsSize     = 12
        MaxToolsSize     = 12
        BinsSize         = 0
        LibsSize         = 0
        WinntDLLSize     = 0
        ToolsSize        = 0
    
    [Varsppc]
        MinToolsSize     = 12
        MaxToolsSize     = 12
        BinsSize         = 0
        LibsSize         = 0
        WinntDLLSize     = 0
        ToolsSize        = 0
    
    [VarsOS]
        Target95    = $(Chosen)
        TargetNT    = $(Chosen)
    
    [StringsENG]
        String1 = "Setup cannot install on the current processor."$(!LF)$(!LF)+
                  "Cannot proceed with install."
    
        String4 = "Setup couldn't copy over the ActiveX SDK files. "$(!LF)$(!LF)+
                  "Cannot proceed with install."
    
        String5 = "Error querying init directory. "$(!LF)$(!LF)+
                  "Initializing our own init directory."
    
        String6 = "Error querying environment variables."$(!LF)$(!LF)+
                  "Cannot proceed with install."
    
        String7 = "Error modifying environment variables."$(!LF)$(!LF)+
                  "Cannot proceed with install."
    
        String8  = "Size required for full installation is: "
        String9  = "Minimum size required for custom installation is: "
        String10 = " MB.  "
        String11 = "No drive was found with this much space."$(!LF)$(!LF)+
                   "Cannot proceed with install."
    
        String12 = "There is enough space for the minimum ActiveX SDK installation. "+
                   "You need to run Setup again and choose custom installation."
    
        String13 = "Setup needs a full path specification of your destination.  Please "+
                   "reenter a new path.  An example of af full path is: "
    
        String14 = "The drive entered in the ActiveX SDK destination path does not "+
                   "have enough space for a minimal installation.  Please reenter a "+
    	           "new path."
    
        String15 = "There is no space free for the optional ActiveX SDK components."
        String16 = "Setup has detected that you have chosen to install to a network "+
    	           "drive.  If you are certain that this drive is a valid drive, and "+
                   "that it has sufficient space, please hit OK to continue.  Otherwise, "+
                   "choose Cancel to select another drive."
        String17 = "The chosen drive does not have enough space to install the chosen "+
                   "components.  Please choose less components, or another destination."
        String18 = "Setup was unable to locate the Windows NT CD in the specified"+
    	           " location.  Please choose OK to select a new drive, or CANCEL "+
    	           "to continue without copying the .DBG files."
        String19 = "Setup will attempt to copy the .DBG files from the ActiveX SDK "+
    	           "or network image. These files are used by Windbg to provide "+
    	           "complete symbolic information for the Win32 API. Please enter the "+
                       "full path to the root of the ActiveX SDK."
        String20 = "Please re-enter a pathname which does not include spaces."
        String21 = "Setup was unable to copy the .DBG files, please see the ActiveX SDK"+
                   " Getting Started manual for further information."
    
    
    
    ;--------------------
    ; BILLBOARD MESSAGES
    ;--------------------
    [BillboardsENG]
    Billboard1 = "Please wait while Setup creates directories on the destination drive."
    
    
    ;***************************************************************************
    ; DIALOGS
    ; -------
    ; the following sections contain the dialogs used to interact with the user.
    ; for each language supported there is a different dialog section.
    ;***************************************************************************
    
    
    ;-----------------------------------------------
    ; WELCOME DIALOG
    ;-----------------------------------------------
    [WelcomeDlgENG]
        DlgType     = Info
        DlgTemplate = SDK_WELCOME
        Caption     = "ActiveX(tm) SDK Setup"
    
        DlgText     = "Welcome to Setup."$(LF)$(LF)+
                      "The Setup program for the Microsoft ActiveX(tm) "+
                      "Development Kit for Microsoft Windows "+
                      "installs ActiveX development tools.  "+
                      "Each Setup dialog has basic instructions for "+
                      "completing a step of the installation.  "$(LF)$(LF)+
                      "To install the ActiveX SDK on your computer now, click Next "+
                      "or press Enter."$(LF)$(LF)+
                      "To exit Setup without installing the ActiveX SDK, click Cancel "+
                      "or press F3."$(LF)$(LF)$(LF)+
                      "Please consult the ReadMe.Txt files in the root of your "+
                      "ActiveX SDK installation for more information."
    
        Continue     = "&Next >" 
        Back         = "< &Back"
        Exit         = "Cancel"
    
    
    ;-----------------------------------------------
    ; INSTALL MODE DIALOG
    ;-----------------------------------------------
    [InstallModeDlgENG]
        DlgType     = "Radio"
        DlgTemplate = "SDK_INSTALLMODE"
        Caption     = "Setup Methods"
        DlgText     = "Express Setup installs the ActiveX SDK using default settings "+
                      "and detected configuration."$(LF)$(LF)+
                      "Custom Setup gives you more control in viewing detected configuration "+
                      "and choosing options."$(LF)$(LF)+
                      "Choose one of the two Setup methods:"
    
        Continue     = "&Next >" 
        Back         = "< &Back"
        Exit         = "Cancel"
    
        RadioHeader   = ""
        Radio1Text    = "&Express Setup"
        Radio2Text    = "&Custom Setup"
        RadioDefault  = $(STF_INSTALL_MODE)
        OptionsGreyed = {}
    
    ;-----------------------------------------------
    ; TOOLS DESTINATION DIALOG
    ;-----------------------------------------------
    [DestinationDlgENG]
        DlgType      = Combination
        DlgTemplate  = "SDK_DESTTOOLS"
        Caption      = "ActiveX SDK Destination"
        DlgText      = "Setup recommends installing the ActiveX SDK on the following "+
                       "hard disk drive."
    
        Combo1Label  = "Destination Drive:"
    
        Continue     = "&Next >"
        Back         = "< &Back"
        Exit         = "Cancel"
    
        GroupLabel   = "Destination Drive Characteristics"
    
        Static1Label = "Available Space:"
        Static1Text  = $(DestVolumeFree)
        footer1      = "MB"
        footer2      = "( For Full Setup )"
        footer3      = "( For Minimal Setup )"
        Static2Label = "Space Needed:"
        Static2Text  = $(MaxToolsSize)
        Static3Text  = $(MinToolsSize)
    
        TextFields   = {$(Static1Text), $(Static2Text), $(Static3Text)}
    
        ;
        ; Editboxes in the dialog
        ;
    
        EditLabel   = "SDK Directory:"
        EditTextLim = 256
        EditTextIn  = $(INetSDKDir)
        EditFocus   = "ALL"
    
        Combo1List   = $(DestVolumeList)
        Combo1Out    = $(DestVolume)
    
        ComboListItemsIn  = {Combo1List}
        ComboListItemsOut = {Combo1Out}
    
        NotifyFields = {YES}
    
    
    ;-------------------------------------------------------------
    ; PARTIAL INSTALL COMPONENTS
    ;-------------------------------------------------------------
    [INetSDKOptionsDlgENG]
        DlgType     = "Check1"
        DlgTemplate = "SDK_COMPONENTS_OPTIONS"
        Caption     = "ActiveX SDK Install Options"
    
        DlgText     = "The following optional groups of files (components) can be "+
                      "installed on your system. "+
                      "To remove a component, clear its checkbox. "+
                      "To install a component, check its checkbox. "+
                      "To remove or install specific files within a component, "+
                      "choose Files... for that component."
    
        Check1Text  = "Copy ActiveX Dev. Environment."
        Check2Text  = "Copy Online Reference files."
        Check3Text  = "Copy ActiveX SDK samples."
    
    
        Continue    = "&Finish"
        Back        = "< &Back"
        Exit        = "Cancel"
    
        CheckHeader    = "Components:"
        Customise      = "Customize:"
        SizeHeader     = "Bytes Used:"
        Files          = "Files..."
        SpaceRequired  = "Disk Space Required:"
        SpaceAvailable = "Disk Space Available:"
        footer1        = "Bytes"
        SizeAvailable  = $(FreeForOptional)
    
        CheckItemsIn      = { $(DoTools), $(DoOnlineHelp), $(DoSamples) }
        CheckItemsInSizes = { $(ToolsSize), $(OnlineHelpSize), $(SampleSize) }
        OptionsGreyed     = $(DisableList)
    
    [INetSDKOptionsDlgENG2]
        DlgType     = "Check1"
        DlgTemplate = "SDK_COMPONENTS_OPTIONS2"
        Caption     = "ActiveX SDK Install Options"
    
        DlgText     = "The following optional groups of files (components) can be "+
                      "installed on your system. "+
                      "To remove a component, clear its checkbox. "+
                      "To install a component, check its checkbox. "+
                      "To remove or install specific files within a component, "+
                      "choose Files... for that component."
    
        Check1Text  = "Copy ActiveX SDK."
        Check2Text  = "Copy Other PDC Files."
    
    
        Continue    = "&Finish"
        Back        = "< &Back"
        Exit        = "Cancel"
    
        CheckHeader    = "Components:"
        Customise      = "Customize:"
        SizeHeader     = "Bytes Used:"
        Files          = "Files..."
        SpaceRequired  = "Disk Space Required:"
        SpaceAvailable = "Disk Space Available:"
        footer1        = "Bytes"
        SizeAvailable  = $(FreeForOptional)
    
        CheckItemsIn      = { $(DoTools), $(DoOnlineHelp) }
        CheckItemsInSizes = { $(ToolsSize), $(SamplesSize)}
        OptionsGreyed     = $(DisableList)
    
    
    ;-------------------------------------------------------------
    ; PARTIAL INSTALL COMPONENTS
    ;-------------------------------------------------------------
    [SDKSamplesDlgENG]
        DlgType     = "Check1"
        DlgTemplate = "SDK_SAMPLES_OPTIONS"
        Caption     = "ActiveX SDK Samples Install Options"
    
        DlgText     = "The following optional groups of samples can be installed "+
                      "on your system. "+
                      "To remove a group, clear its checkbox. "+
                      "To install a group, check its checkbox."$(!LF)$(!LF)
    
        Check1Text  = "Copy Standard ActiveX samples."
        Check2Text  = ""
        Check3Text  = ""
    
        OK          = "OK"
        Cancel      = "Cancel"
    
        CheckHeader    = "Components:"
        Customise      = "Customize:"
        SizeHeader     = "Bytes Used:"
        Files          = "Files..."
        SpaceRequired  = "Disk Space Required:"
        SpaceAvailable = "Disk Space Available:"
        footer1        = "Bytes"
        SizeAvailable  = $(FreeForOptional)
    
        CheckItemsIn      = { $(DoSamples)}
        CheckItemsInSizes = { $(SampleSize) }
        OptionsGreyed     = $(SamplesDisableList)
    
    
    ;-------------------------------------------------------------
    ; PARTIAL TOOLS COMPONENTS
    ;-------------------------------------------------------------
    [THLDlgENG]
        DlgType     = "Check1"
        DlgTemplate = "SDK_THL_OPTIONS"
        Caption     = "ActiveX SDK Environment Install Options"
    
        DlgText     = "The following optional components can be installed "+
                      "on your system. "+
                      "To remove a group, clear its checkbox. "+
                      "To install a group, check its checkbox."$(!LF)$(!LF)
    
        Check1Text  = "Copy ActiveX Development Tools."
        Check2Text  = "Copy ActiveX Headers."
        Check3Text  = "Copy ActiveX Libraries."
    
        OK          = "OK"
        Cancel      = "Cancel"
    
        CheckHeader    = "Components:"
        Customise      = "Customize:"
        SizeHeader     = "Bytes Used:"
        Files          = "Files..."
        SpaceRequired  = "Disk Space Required:"
        SpaceAvailable = "Disk Space Available:"
        footer1        = "Bytes"
        SizeAvailable  = $(FreeForOptional)
    
        CheckItemsIn      = { $(DoBins),   $(DoHeaders),   $(DoLibs) }
        CheckItemsInSizes = { $(BinsSize), $(HeadersSize), $(LibsSize)) }
        OptionsGreyed     = $(ToolsDisableList)
    
    ;--------------------------------------------------------------
    ; k) SETUP DONE - RESTART DIALOG
    ;--------------------------------------------------------------
    [SetupDoneDlgENG]
        DlgType     = "Info"
        DlgTemplate = "SDK_RESTART"
        Caption     = "ActiveX SDK Setup"
        DlgText     = "The Microsoft ActiveX Software Development Kit is now installed.  "+
                      "You must install Internet Explorer 3.0 (final version) and the "+
                      "May '96 release of the Win32 SDK or later to build and run most of the "+
                      "samples."$(LF)$(LF)+
    				  $(ShutDownMethod)
        Windows     = "Exit to &Windows"
        OK          = "OK"
    
    
    ;--------------------------------------------------------------
    ; k) SETUP NOT DONE - RESTART DIALOG
    ;--------------------------------------------------------------
    [SetupNotDoneDlgENG]
        DlgType     = "Info"
        DlgTemplate = "SDK_RESTART"
        Caption     = "ActiveX SDK Setup"
        DlgText     = "The Microsoft ActiveX Software Development Kit for Microsoft Windows has not been installed."$(LF)$(LF)+
                      "Please select OK to exit back to Windows."
        Windows     = "Exit to &Windows"
        OK          = "OK"
    
    
    ;--------------------------------------------------------------
    ; k) QUERY IF WANT TO PROCEED WITH INSTALL OF xxx
    ;--------------------------------------------------------------
    [WantToSetupIE]
        STF_MB_TITLE = "Setup Test Platform"
        STF_MB_TEXT  = "Would you like to install a test platform browser "+
                       "to host ActiveX Controls and ActiveX Documents?"
        DlgType      = "MessageBox"
        STF_MB_TYPE  = 3
        STF_MB_ICON  = 5
        STF_MB_DEF   = 2
    
    
    [WantToSetupAVrml]
        STF_MB_TITLE = "Setup Test Platform"
        STF_MB_TEXT  = "Would you like to install ActiveVRML "+
                       "to create and view interactive 3D multimedia?"
        DlgType      = "MessageBox"
        STF_MB_TYPE  = 3
        STF_MB_ICON  = 5
        STF_MB_DEF   = 2
    
      [WantToReplaceSystemFile]
          STF_MB_TITLE = "Replace Newer File"
          STF_MB_TEXT  = "System File: "$($0)$(!LF)$(!LF)+
                         "The file currently on your system is newer than "+
                         "the file setup is installing. "+
                         "Would you like setup to replace it anyway?"
          DlgType      = "MessageBox"
          STF_MB_TYPE  = 3
          STF_MB_ICON  = 4
          STF_MB_DEF   = 2
  
    ;**************************************************************************
    ; DLL LOAD and FREE
    ; the following section contain commands to load specific dll libraries and
    ; to free them
    ;**************************************************************************
    
    ;----------------------------------------------
    ; a) DETECT LIBRARY
    ;----------------------------------------------
    [LoadSetupLibrary]
        LoadLibrary "x" $(STF_CWDDIR)setupdll.dll LIBHANDLE
        exit
    
    [LoadSDKSetupLibrary]
        LoadLibrary "x" $(!STF_SRCDIR)INetsdk\bin\$(STF_PLATFORM)\sdkdlg.dll SDKLIBHANDLE
        exit
    
    [FreeSetupLibrary]
        FreeLibrary $(LIBHANDLE)
        FreeLibrary $(SDKLIBHANDLE)
        exit
    
    
    
    ;**************************************************************************
    ; PROGRESS GUAGE VARIABLES
    ;**************************************************************************
    
    [ProgressCopyENG]
        ProCaption   = "ActiveX SDK Setup"
        ProCancel    = "Cance&l"
        ProCancelMsg = "ActiveX SDK isn't correctly installed.  Are you sure "+
                       "you want to cancel copying files?"
        ProCancelCap = "Setup Message"
        ProText1     = "Copying:"
        ProText2     = "To:"
    
    
    ;-----------------------------------------------------------------------
    ; ROUTINE:      CreateKey
    ;
    ; DESCRIPTION:  Creates a key and fixes the values indicated.
    ;               Key is Handle\Key1\Key2\...\Keyn. Value list
    ;               is for Valuen.
    ;
    ; INPUTS:       $0: Handle into registry
    ;               $1: KeyTreeComponents {Key1Info, Key2Info..}
    ;               $2: ValueList {Value1Info, Value2Info, Value3Info}
    ;
    ; OUTPUTS:      $R0: Status: STATUS_SUCCESSFUL
    ;                            STATUS_FAILED
    ;                            STATUS_ERROR_CREATEKEY
    ;                            STATUS_ERROR_CREATEVALUE
    ;
    ;               $R1: Handle to created key
    ;
    ;------------------------------------------------------------------------
    
    [CreateKey]
    
        ;
        ; Initialize
        ;
    
        set Status = STATUS_FAILED
        read-syms RegistryConstants
    
        ;
        ; traverse down the keytreecomponents and open/create components as
        ; you go along
        ;
    
    
        set BaseHandle = $($0)
        set KeyHandle  = $(BaseHandle)
    
        ForListDo $($1)
    
            set KeyInfo = $($)
            set KeyName = *($(KeyInfo), 1)
    
            ;
            ; Try opening the key first
    
            OpenRegKey $(BaseHandle) "" $(KeyName) $(MaskAllAccess) KeyHandle
            ifint $(RegLastError) != $(!REG_ERROR_SUCCESS)
                ;
                ; Key doesn't exist
                ;
                ;Debug-Output "REGISTRY.INF: Key"$(KeyName)"doesn't exist.  Will create key"
    
                set RegLastError = 0
                CreateRegKey $(BaseHandle) $(KeyInfo) "" $(MaskAllAccess) "" KeyHandle
                ifint $(RegLastError) != $(!REG_ERROR_SUCCESS)
                    set Status = STATUS_ERROR_CREATEKEY
                     ;Debug-Output "REGISTRY.INF: Error in creating key"
                    goto endcreate
                endif
            endif
    
            ifstr(i) $(BaseHandle) != $($0)
                CloseRegKey $(BaseHandle)
                ifint $(RegLastError) != $(!REG_ERROR_SUCCESS)
                    set Status = STATUS_ERROR_CREATEKEY
                     ;Debug-Output "REGISTRY.INF: Error in closing base handle"
                    goto endcreate
                endif
            endif
    
            set BaseHandle = $(KeyHandle)
    
        EndForListDo
    
        ifstr(i) $($2) != {}
            shell "" AddValueList $(KeyHandle) $($2)
            ifstr(i) $($R0) != STATUS_SUCCESSFUL
                set Status = STATUS_ERROR_CREATEVALUE
                goto endcreate
            endif
        endif
        set Status = STATUS_SUCCESSFUL
    
    endcreate = +
        ifstr(i) $(Status) != STATUS_SUCCESSFUL
             ;Debug-Output "REGISTRY.INF: CreateKey Error:"$(Status)
        endif
        Return $(Status) $(KeyHandle)
    
    
    ;*************************************************************************
    ;
    ;     SECTION:   AddValueList
    ;
    ;     PURPOSE:   Given a nested list of value items, add each to the given
    ;                key.   Key is left open.
    ;
    ;   ARGUMENTS:   $0    Registry key handle
    ;                $1    List of value items; for example:
    ;                          { {ValueName1,0,$(!REG_VT_SZ),$(ValueData1)}, +
    ;                            {ValueName2,0,$(!REG_VT_SZ),$(ValueData2)} }
    ;
    ;     RETURNS:   $R0   Status
    ;
    ;
    ;*************************************************************************
    
    [AddValueList]
       set Status = STATUS_FAILED
       read-syms RegistryConstants
    
       ForListDo $($1)
           SetRegValue $($0) $($)
           ifint $(RegLastError) != $(!REG_ERROR_SUCCESS)
               ;Debug-Output "REGISTRY.INF: CreateValue failed:"$($)
               goto end_addvaluelist
           endif
       EndForListDo
       set Status = STATUS_SUCCESSFUL
    
    end_addvaluelist = +
       return $(Status)
    
    ;**************************************************************************
    ;
    ;   SetValue
    ;
    ;   Checks if key is present, and if so, sets the value. The key must exist
    ;
    ;   $0  Key Handle
    ;   $1  Key name
    ;   $2  Value Name
    ;
    ;**************************************************************************
    [SetValue]
        set Status = STATUS_FAILED
        read-syms RegistryConstants
        
        OpenRegKey $($0) "" $($1) $(!REG_KEY_WRITE) TempKey
    
        ifint $(RegLastError) != $(!REG_ERROR_SUCCESS)
            ;Debug-Output "REGISTRY.INF: OpenRegKey Failed: "$($)" "$($0)" "$($1)" "$($2)
            goto end_set_value
        endif
    
        SetRegValue $(TempKey), $($2)
        
        ifint $(RegLastError) != $(!REG_ERROR_SUCCESS)
            ;Debug-Output "REGISTRY.INF: SetRegValue Failed:"$($)
            CloseRegKey $(TempKey)
            goto end_set_value
        endif
        
        set Status = STATUS_SUCCESSFUL
    
    end_set_value = +
        return $(Status) $(KeyValue)
            
    
    ;**************************************************************************
    ;
    ;   GetValue
    ;
    ;   Checks if key is present, and if so, returns the value
    ;
    ;   $0  Key Handle
    ;   $1  Key name
    ;   $2  Value Name
    ;
    ;**************************************************************************
    [GetValue]
        set Status = STATUS_FAILED
        read-syms RegistryConstants
        
        OpenRegKey $($0) "" $($1) $(!REG_KEY_READ) TempKey
    
        ifint $(RegLastError) != $(!REG_ERROR_SUCCESS)
            ;Debug-Output "REGISTRY.INF: OpenRegKey Failed: "$($)" "$($0)" "$($1)" "$($2)
            goto end_get_value
        endif
    
        GetRegValue $(TempKey), $($2), KeyValue
        
        ifint $(RegLastError) != $(!REG_ERROR_SUCCESS)
            ;Debug-Output "REGISTRY.INF: GetRegValue Failed:"$($)
            CloseRegKey $(TempKey)
            goto end_get_value
        endif
        
        set Status = STATUS_SUCCESSFUL
    
    end_get_value = +
        return $(Status) $(KeyValue)
            
  [DetectFileTime]
     FileDateTime = {"0","0"} ? $(!LIBHANDLE) GetFileLastWriteTime $(FileDateTimeName)
    
    ;**************************************************************************
    ; SHELL COMMANDS SCRIPT
    ;**************************************************************************
    
    [Shell Commands]
        ;
        ; Initialise the app, by setting the caption and loading the support library
        ;
        set-title "ActiveX SDK"
        set Exit_Code = $(!SETUP_ERROR_GENERAL)
        install   LoadSetupLibrary
    
        StartWait
    
        ;
        ; read general constants
        ;
    
        set-subst LF = "\n"
        read-syms GeneralConstants
    
    
        ;
        ; read and detect the processor we are working on
        ;
    
        read-syms ProcessorID
        read-syms PlatformID
        read-syms ProcessorVar
        detect    ProcessorVar
    
        ;
        ; Check processor type, see if it is supported, if so what platform does it
        ; belong to.
        ;
    
        ifstr(i) $(STF_PROCESSOR) == $(ProcessorID_I386)
            set STF_PLATFORM = $(PlatformID_I386)
        else-ifstr(i) $(STF_PROCESSOR) == $(ProcessorID_I486)
            set STF_PLATFORM = $(PlatformID_I386)
        else-ifstr(i) $(STF_PROCESSOR) == $(ProcessorID_I586)
            set STF_PLATFORM = $(PlatformID_I386)
        else-ifstr(i) $(STF_PROCESSOR) == $(ProcessorID_R4000)
            set STF_PLATFORM = $(PlatformID_MIPS)
        else-ifstr(i) $(STF_PROCESSOR) == $(ProcessorID_ALPHA)
            set STF_PLATFORM = $(PlatformID_ALPHA)
        else-ifstr(i) $(STF_PROCESSOR) == $(ProcessorID_PPC601)
            set STF_PLATFORM = $(PlatformID_PPC)
        else-ifstr(i) $(STF_PROCESSOR) == $(ProcessorID_PPC603)
            set STF_PLATFORM = $(PlatformID_PPC)
        else-ifstr(i) $(STF_PROCESSOR) == $(ProcessorID_PPC604)
            set STF_PLATFORM = $(PlatformID_PPC)
        else-ifstr(i) $(STF_PROCESSOR) == $(ProcessorID_PPC620)
            set STF_PLATFORM = $(PlatformID_PPC)
        else
    
            ; Unfortunately, we haven't detected language yet,
            ;  so default to English, report error, and quit.
    
            STF_LANGUAGE = "ENG"
            shell "subroutn.inf" SetupMessage $(!STF_LANGUAGE) "FATAL" $(String1)
            goto setupnotdone
        endif

    ;Hack off: here to test code i.e. Set STF_PLATFORM = $(PlatformID_ALPHA)
     ;   set STF_PLATFORM = $(PlatformID_ALPHA)
    
    
        ;
        ; Call into our DLL to determine Locale
        ;  Although NEC is not a proper Windows locale,
        ;  it is a possible return value from our GetWindowsLocaleID()
        ;
    
        install   LoadSDKSetupLibrary
    
        read-syms LocaleVar
        detect    LocaleVar
        ifstr(i) $(STF_LOCALE) == ""
            set STF_LOCALE = "usa"
        endif
    
        set STF_LANGUAGE = $(LANGID_ENG)
	set STF_UI_LANGUAGE = $(LANGID_ENG)
        
        
        read-syms Strings$(!STF_LANGUAGE)
        read-syms Billboards$(!STF_LANGUAGE)
    
        read-syms  RegistryConstants
    
        ;
        ; Call the library function to see if we have admin privileges
        ;
    
        LibraryProcedure STATUS, $(!LIBHANDLE), TestAdmin
        ifstr(i) $(STATUS) == "YES"
     	set PRIVILEGES = SYSTEM
        else
            set PRIVILEGES = USER
        endif
    
        ;
        ; read the UI Variables and detect their setting on the current machine
        ;
    
        read-syms UiVars
        detect    UiVars
        read-syms Vars$(STF_PLATFORM)
        read-syms VarsPlatformCommon
        read-syms VarsOS
    
        ;
        ; Dynamically adjust the variables just read.
        ;
    
        EndWait
    
    welcome =+
        read-syms WelcomeDlg$(STF_LANGUAGE)
    
        ui start "Welcome" $(SDKLIBHANDLE)
        ifstr(i) $(DLGEVENT) == "CONTINUE"
            ui pop 1
            goto queryinstallmode
        else-ifstr(i) $(DLGEVENT) == "EXIT"
            shell "" QueryUserQuit
            ifstr(i) $($R1) == "OK"
                ui pop 1
                goto setupnotdone
            else
                goto welcome
            endif
        else
            goto end
        endif
    
        ;
        ; show install mode dialog and query if we are to operate in express mode
        ; or in full install
        ;
    
    queryinstallmode =+
    ;  
    ;  Check for license only once
    ;
    ifstr(i) $(AcceptLicense) != "TRUE"
        ;
        ; Show license agreement and get acceptance
        ;
        LibraryProcedure RetCode, $(SDKLIBHANDLE), ShowLicenseAgreement $(STF_SRCDIR)license\license.txt

        ifstr(i) $(RetCode) != "SUCCESS"
	        goto setupnotdone
        endif

        set AcceptLicense = "TRUE"
    endif
    
        read-syms InstallModeDlg$(STF_LANGUAGE)
        ui start "InstallMode" $(SDKLIBHANDLE)
        ifstr(i) $(DLGEVENT) == "CONTINUE"
            ui pop 1
            set STF_INSTALL_MODE = $(ButtonChecked)
            goto setdestination
        else-ifstr(i) $(DLGEVENT) == "EXIT"
            shell "" QueryUserQuit
            ifstr(i) $($R1) == "OK"
                ui pop 1
                goto setupnotdone
            else
                goto queryinstallmode
            endif
        else-ifstr(i) $(DLGEVENT) == "BACK"
            ui pop 1
            goto welcome
        else
            goto end
        endif
    
    setdestination =+
    
        ;
        ; go through the volume list and form the destination volume list of
        ; all volumes which have the size needed to install the INetsdk.
        ;
        set DestVolumeList = {}
        set DestVolumeFreeList = {}
    
        ForListDo $(VolumeList)
    
           set CurrentVolume      = *($(VolumeList), $(#))
           set CurrentVolumeFree  = *($(VolumeFreeList), $(#))
           set CurrentVolumeFS    = *($(VolumeFSList), $(#))
    
           set DestVolumeList     = >($(DestVolumeList),     $(CurrentVolume))
           set DestVolumeFreeList = >($(DestVolumeFreeList), $(CurrentVolumeFree))
    
    skipvol=+
        EndForListDo
    
        ;
        ; destination drive is the drive with the maximum space
        ;
    
        set DestVolume     = ""
        set DestVolumeFree = 0
    
        ForListDo $(DestVolumeList)
            set Volume     = $($)
            set VolumeFree = *($(DestVolumeFreeList), ~($(DestVolumeList), $(Volume)))
    
            ifint $(VolumeFree) > $(DestVolumeFree)
                set DestVolume     = $(Volume)
                set DestVolumeFree = $(VolumeFree)
            endif
    
        EndForListDo
    
        ;
        ; Check for previous installs, and set default target install
        ;
    
        set KeySDKPath = "SOFTWARE\Microsoft\INetSDK\Directories"
    
        shell "" GetValue $(!REG_H_CUSER) $(KeySDKPath) "Install Dir"
    
    	ifstr(i) $($R0) == STATUS_FAILED
            set INetSDKDir = $(DestVolume)$(INETSDK)
        else
            set INetSDKDir = *($($R1),4)
            GetDriveInPath DestVolume $(INetSDKDir)
            set DestVolumeFree = *($(DestVolumeFreeList), ~($(DestVolumeList), $(DestVolume)))
        endif
    
    
        ;
        ; display tools destination, size available and needed for
        ; user approval
        ;
    
    destination =+
    
        ifstr(i) $(STF_INSTALL_MODE) == $(MinInteract)
           ifint $(DestVolumeFree) < $(MaxToolsSize)
               shell "subroutn.inf" SetupMessage $(!STF_LANGUAGE) "FATAL" $(String8)$(MaxToolsSize)$(String10)$(String12)
               goto setupnotdone
           else
               goto INetsdkdirs
           endif
        endif
    
        read-syms DestinationDlg$(STF_LANGUAGE)
        ui start "Destination" $(SDKLIBHANDLE)
        ifstr(i) $(DLGEVENT) == "NOTIFY"
    
            ifstr(i) $(Combo1Out) != $(DestVolume)
                set ReInit = YES
                set DestVolume     = $(Combo1Out)
                set DestVolumeFree = *($(DestVolumeFreeList), ~($(DestVolumeList), $(DestVolume)))
                set INetSDKDir     = $(DestVolume)$(INETSDK)
            else
                set ReInit = NO
            endif
            goto destination
    
        else-ifstr(i) $(DLGEVENT) == "CONTINUE"
            set ReInit = NO
            LibraryProcedure IsFullPath, $(SDKLIBHANDLE), SDKCheckPathFullPathSpec $(EditTextOut)
            ifstr(i) $(IsFullPath) == "NO"
                shell "subroutn.inf" SetupMessage $(!STF_LANGUAGE) "NONFATAL" $(String13)$(DestVolume)$(INETSDK)
                goto destination
            else
                ;
                ; see if there is any whitespace in the filename, if so, bail
                ;
                LibraryProcedure STATUS, $(!LIBHANDLE), WhiteSpaceCheck $(EditTextOut)
                ifstr(i) $(STATUS) == "YES"
                    shell "subroutn.inf" SetupMessage $(!STF_LANGUAGE) "NONFATAL" $(String20)
                    goto destination
                else
                    GetDriveInPath Drive, $(EditTextOut)
                    Ifcontains(i) $(Drive) in $(DestVolumeList)
                        set DestVolume     = $(Drive)
                        set DestVolumeFree = *($(DestVolumeFreeList), ~($(DestVolumeList), $(DestVolume)))
                        set INetSDKDir     = $(EditTextOut)
                    else
                        shell "subroutn.inf" SetupMessage $(!STF_LANGUAGE) "WARNING" $(String16)
                        ifstr(i) $($R0) != STATUS_SUCCESSFUL
    			            goto destination
                        else
                            ifstr(i) $($R1) == "OK"
    			                set DestVolume = $(Drive)
    			                set DestVolumeFree = $(MaxToolsSize)
    			                set INetSDKDir = $(EditTextOut)
                            else
                                set ReInit = NO
                                goto destination
                            endif
                        endif
                    endif
                endif
            endif
    
            ui pop 1
            goto INetsdkdirs
    
        else-ifstr(i) $(DLGEVENT) == "EXIT"
    
            set ReInit = NO
            shell "" QueryUserQuit
            ifstr(i) $($R1) == "OK"
                ui pop 1
                goto setupnotdone
            else
                goto destination
            endif
        else-ifstr(i) $(DLGEVENT) == "BACK"
            ui pop 1
            goto queryinstallmode
        else
            goto end
        endif
    
    
    INetsdkdirs = +
    
        set INetSDKRoot = $(INetSDKDir)
    
    	LibraryProcedure INetSDKDir, $(LIBHANDLE), AppendBackSlash $(INetSDKDir)
    
    	;
        ; First find all the destination directories for the tools
        ;
    
        set INetSDKPath    = $(INetSDKDir)Bin
        set INetSDKLib     = $(INetSDKDir)Lib
        set INetSDKLicense = $(INetSDKDir)License
        set INetSDKInclude = $(INetSDKDir)Include
    	; No doc dir right now just specs
        set INetSDKSpecs   = $(INetSDKDir)Specs
    	;set INetSDKDoc    = $(INetSDKDir)
        set INetSDKHelp    = $(INetSDKDir)Help
    
        ;
        ; main install.  ask user for options on main install.
        ;
    
    INetSDK = +
        ifstr(i) $(STF_HOSTOS) == "WIN95"
    		goto InstallOptions
     	endif
    
    	ifstr(i) $(!STF_PLATFORM) == $(PlatformID_I386)
    			; NT x86
    			goto InstallOptions
     	else
    			; RISC
    			; TODO: set other RISC options here
    			; Debug-Output "Installing on RISC"

			; * (geraldd, conrisc use)
			  goto InstallOptions
			; (geraldd, sanrisc use 
    			; set DoLibs = $(NotChosen)
			
    			
        endif
    
    InstallOptions = +
        ifstr(i) $(STF_INSTALL_MODE) == $(MinInteract)
            goto INetSDKinstall
        endif
    
        ifint $(DestVolumeFree) < $(MaxToolsSize)
            set DoTools          = $(NotChosen)
            set DoOnlineHelp     = $(NotChosen)
        else
            set DoTools          = $(Chosen)
            set DoOnlineHelp     = $(Chosen)
        endif
    
    INetSDKrepeat = +
        ;;
    	;;  Skip dialog -- TODO review sample options
    	;;
    
        goto INetSDKinstall
    
    	;;
    	;; Install options are still meaningless.  I will remove the misleading
    	;; dialog and prompt
    	;;
    
        set FreeForOptional = $(DestVolumeFree)
        ifstr(i) $(FreeForOptional) == 0
            shell "subroutn.inf" SetupMessage $(!STF_LANGUAGE) "NONFATAL" $(String15)
        endif
    
        set SamplesSize = 0
        set ToolsSize   = 0
    
    	ForListDo $(ToolsList)
    	    ifstr(i) $(Do$($)) == $(Chosen)
    	    	set-add ToolsSize = $(ToolsSize) $($($)Size)
    	    endif
    	EndForListDo
    
    	ForListDo $(SamplesList)
    	    ifstr(i) $(Do$($)) == $(Chosen)
                ;Debug-Output "Adding stuff for sampleslist"
                        ;Debug-Output $($)
    			set-add SamplesSize = $(SamplesSize) $($($)Size)
    	    endif
    	EndForListDo
    
        read-syms INetSDKOptionsDlg$(STF_LANGUAGE)2
        ui start "Options" $(SDKLIBHANDLE)
        ifstr(i) $(DLGEVENT) == "CONTINUE"
            set DoINetSDK      = *($(CheckItemsOut), 1)
            set DoPDCOther     = *($(CheckItemsOut), 2)
            ui pop 1
            goto checkdestfree
    
        else-ifstr(i) $(DLGEVENT) == "BACK"
            ui pop 1
            goto destination
    
        else-ifstr(i) $(DLGEVENT) == "EXIT"
            shell "" QueryUserQuit
            ifstr(i) $($R1) == "OK"
                ui pop 1
                goto setupnotdone
            else
                goto INetSDKrepeat
            endif
        else
            goto "end"
        endif
    
    checkdestfree =+
        set ToolsSize = 0
        set SamplesSize = 0
        set TotalRequiredSize = 0
        set BytesFree = $(DestVolumeFree)
    
    	ForListDo $(ToolsList)
    	    ifstr(i) $(Do$($)) == $(Chosen)
    	    	set-add ToolsSize = $(ToolsSize) $($($)Size)
    	    endif
    	EndForListDo
    
    	ForListDo $(SamplesList)
    	    ifstr(i) $(Do$($)) == $(Chosen)
    	    	set-add SamplesSize = $(SamplesSize) $($($)Size)
    	    endif
    	EndForListDo
    
        ForListDo $(TotalList)
            ifstr(i) $(Do$($)) == $(Chosen)
                set-add TotalRequiredSize = $(TotalRequiredSize) $($($)Size)
            endif
        EndForListDo
    
        ;
        ; TotalRequiredSize is bytes, but BytesFree is MB... Convert bytes to MB
        ;  because other direction causes overflow on drives with > 2 GB free.
        ;
    
        set-div TotalRequiredSize = $(TotalRequiredSize) 1024
        set-div TotalRequiredSize = $(TotalRequiredSize) 1024
    
    
        ifint $(TotalRequiredSize) > $(BytesFree)
            shell "subroutn.inf" SetupMessage $(!STF_LANGUAGE) "NONFATAL" $(String17)
            goto INetSDKrepeat
        endif
    
    
        ;
        ; build INetSDK copy list
        ;
    
    INetSDKinstall	=+
        
        StartWait
        shell "" SystemFilesBackup
        shell "subroutn.inf" PushBillboard STATUSDLG $(Billboard1)
        install Install-CopyToolsFiles
        shell "subroutn.inf" PopBillboard
        EndWait
    
    finish = +
    
        ;
        ; first copy all the files over
        ;
    	
        read-syms ProgressCopy$(STF_LANGUAGE)
        install Install-All-Files-Now
        ifstr(i) $(STF_INSTALL_OUTCOME) == "STF_SUCCESS"
            goto INetSDKconfig
        else
            shell "subroutn.inf" SetupMessage $(!STF_LANGUAGE) "FATAL" $(String4)
            goto setupnotdone
        endif
    
    
    INetSDKconfig=+
        ifstr(i) $(STF_HOSTOS) == "WINNT"
        read-syms EnvironmentVars
        detect    EnvironmentVars
    
       	;to ensure the we come ahead of mstools
        set MSTdir = *(*($(MsToolsRootEnvVar2),4),1)
        Set INSdir = *(*($(INetSDKRootEnvVar2),4),1)
        LibraryProcedure MSTdir, $(LIBHANDLE), AppendBackSlash $(MSTdir)
      	LibraryProcedure INSdir, $(LIBHANDLE), AppendBackSlash $(INSdir)
        endif
    
        install Install-INetSDK-Groups



    setupdone=+

        read-syms SetupDoneDlg$(STF_LANGUAGE)
        EndWait
        ui start "Done" $(SDKLIBHANDLE)
        goto end

    setupnotdone=+
        read-syms SetupNotDoneDlg$(STF_LANGUAGE)
        EndWait
        ui start "NotDone" $(SDKLIBHANDLE)
        ifstr(i) $(DLGEVENT) == "CONTINUE"
            ui pop 1
            goto end
        else
            goto end
        endif
    
    end = +

        install   FreeSetupLibrary
    	exit
    
    
    
    ;*****************************************************************
    ;                                                                *
    ;         INSTALLATION SUPPORT ROUTINES                          *
    ;                                                                *
    ;*****************************************************************
    
    ;-----------------------------------------------------------------------
    ; ROUTINE:      QueryUserQuit
    ;
    ; DESCRIPTION:  This routine queries whether the user wants to quit setup
    ;
    ; INPUTS:       None
    ;
    ; OUTPUTS:      $R0: Status:     STATUS_SUCCESSFUL |
    ;                                STATUS_FAILED
    ;
    ;               $R1: UserAction: OK | CANCEL
    ;
    ;------------------------------------------------------------------------
    
    [QueryUserQuit]
    
        set Status     = STATUS_FAILED
        set UserAction = CANCEL
    
        ;
        ; read in quit message
        ;
        read-syms ExitWarningDlg$(!STF_LANGUAGE)
        ui start "ExitWarning"
        ifstr(i) $(DLGEVENT) == "YES"
            set Status     = STATUS_SUCCESSFUL
            set UserAction = "OK"
    
        else-ifstr(i) $(DLGEVENT) == "NO"
            set Status     = STATUS_SUCCESSFUL
            set UserAction = "CANCEL"
        else
        endif
    
    fin_QueryUserQuit = +
        Return $(Status) $(UserAction)
    
    
    
    ;----------------------------------------------
    ; EXIT WINDOWS NT TOOLS SETUP WARNING
    ;----------------------------------------------
    
    [ExitWarningDlgENG]
        DlgType      = "MessageBox"
        STF_MB_TITLE = "Exit ActiveX SDK Setup"
        STF_MB_TEXT  = "ActiveX SDK isn't correctly installed.  Are you "+
                       "sure you want to exit Setup?"
        STF_MB_TYPE  = 3
        STF_MB_ICON  = 5
        STF_MB_DEF   = 2
    
    
      ;-----------------------------------------------------------------------
      ; ROUTINE:      QueryReplaceFile
      ;
      ; DESCRIPTION:  This routine queries whether the user wants to replace a file
      ;
      ; INPUTS:       $0:    UserFile
      ;               $1:    InstallFile
      ;
      ; USER ACTION:  $R0:    YES | NO 
      ;               only required if current file is newer, if older return YES
      ;
      ;------------------------------------------------------------------------

      [QueryReplaceFile]

          set FileDateTimeName =  $($0)
          set UserFileName =  $($0)
          ;Debug-Output $($0)
          Detect DetectFileTime
          set CurrentDate = $(FileDateTime)
          ;Debug-Output $(CurrentDate)
  
          set FileDateTimeName =  $($1)
          ;Debug-Output $($1)
          Detect DetectFileTime
          ;Debug-Output $(FileDateTime)
      
          set ReplaceFile = YES
          ifint *($(CurrentDate),2) > *($(FileDateTime),2)
              ;Debug-Output "Current later than install"
              set ReplaceFile = NO
              ;prompt for replace
;              read-syms WantToReplaceSystemFile
;
;              ui start "Welcome" $(SDKLIBHANDLE)
;              ifstr(i) $(DLGEVENT) == "YES"
;                  ui pop 1
;                  set ReplaceFile = YES
;              else
;                  ui pop 1
;              endif
          else-ifint *($(CurrentDate),2) == *($(FileDateTime),2)
              ifint *($(CurrentDate),1) >  *($(FileDateTime),1)
                  ;Debug-Output "Current later that install"
                  set ReplaceFile = NO
                  ;prompt for replace
;                  read-syms WantToReplaceSystemFile
;
;                  ui start "Welcome" $(SDKLIBHANDLE)
;                  ifstr(i) $(DLGEVENT) == "YES"
;                      ui pop 1
;                      set ReplaceFile = YES
;                  else
;                      ui pop 1
;                  endif
              endif
          endif
  
          return $(ReplaceFile)

    ;-----------------------------------------------------------------------
    ; ROUTINE:      AppendNewValueToEnvVar
    ;
    ; DESCRIPTION:  Looks at the existing value of an environment variable
    ;               and appends a new value if it is not already present
    ;
    ; INPUTS:       $0:  OldValueList
    ;               $1:  NewValue
    ;
    ; OUTPUTS:      $R0: Status: STATUS_SUCCESSFUL
    ;                            STATUS_FAILED
    ;
    ;               $R1: Changed?
    ;               $R2: NewValueList
    ;
    ;------------------------------------------------------------------------
    
    [AppendNewValueToEnvVar]
        ;
        set Status       = STATUS_FAILED
        set NewValueList = {}
        set Changed      = TRUE
        ;
        set Error = NO
        ForListDo $($0)
            ifstr(i) $(Error) == NO
                ifstr(i) $(Changed) == TRUE
                     LibraryProcedure ExpandedValue, $(!LIBHANDLE), ExpandSz $($)
                     ifstr(i) $(ExpandedValue) == "ERROR"
                         set Error = YES
                     else-ifstr(i) $(ExpandedValue) == $($1)
                         set Changed = FALSE
                     endif
                endif
            endif
        EndForListDo
    
        ifstr(i) $(Error) == "YES"
            goto finish_append
        endif
    
        set Status = STATUS_SUCCESSFUL
        ifstr(i) $(Changed) == TRUE
           set NewValueList = >($($0), $($1))
        endif
    
    finish_append = +
        return $(Status) $(Changed) $(NewValueList)
    
    ;-----------------------------------------------------------------------
    ; ROUTINE:      AppendNewValueToEnvVar2
    ;
    ; DESCRIPTION:  Looks at the existing value of an environment variable
    ;               and appends a new value if it is not already present
    ;
    ; INPUTS:       $0:  OldValueList
    ;               $1:  NewValue
    ;
    ; OUTPUTS:      $R0: Status: STATUS_SUCCESSFUL
    ;                            STATUS_FAILED
    ;
    ;               $R1: Changed?
    ;               $R2: NewValueList
    ;
    ;------------------------------------------------------------------------
    
    [AppendNewValueToEnvVar2]
        ;
        set Status       = STATUS_FAILED
        set NewValueList = {}
        set NewValueList2 = {}
        set Changed      = TRUE
        set MSTFound = NO
        ;
        set Error = NO
        ForListDo $($0)
            ifstr(i) $(Error) == NO
                ifstr(i) $(Changed) == TRUE
                     LibraryProcedure ExpandedValue, $(!LIBHANDLE), ExpandSz $($)
                     ;Debug-Output $(ExpandedValue)
                     ;Debug-Output $(!MSTdir)"bin"
                     ifstr(i) $(ExpandedValue) == "ERROR"
                         set Error = YES
                     else-ifstr(i) $(ExpandedValue) == $($1)
                         set Changed = FALSE
                     else-ifstr(i) $(ExpandedValue) == $(!MSTdir)"bin"
                         set MSTFound = YES
                         set Error = YES
                         set NewValueList2 = >($(NewValueList2), $($1))
                         set NewValueList2 = >($(NewValueList2), $($))
                     else
                     set NewValueList2 = >($(NewValueList2), $($))
                     endif
                endif
            else
               ; Error or done
               set NewValueList2 = >($(NewValueList2), $($))
            endif
        EndForListDo
    
        ifstr(i) $(Error) == YES
            ifstr(i) $(MSTFound) == YES
                set NewValueList = $(NewValueList2)
                set Status = STATUS_SUCCESSFUL
                set Changed = TRUE
            endif
            goto finish_append2
        endif
    
        set Status = STATUS_SUCCESSFUL
        ifstr(i) $(Changed) == TRUE
           set NewValueList = >($($0), $($1))
        endif
    
    finish_append2 = +
        ;Debug-Output "Here is the old value list"
        ;Debug-Output $($0)
        ;Debug-Output "Here is the new value list"
        ;Debug-Output $(NewValueList)
        return $(Status) $(Changed) $(NewValueList)
    
    ;-----------------------------------------------------------------------
    ; ROUTINE:      PrependNewValueToEnvVar
    ;
    ; DESCRIPTION:  Looks at the existing value of an environment variable
    ;               and prepends a new value if it is not already present
    ;
    ; INPUTS:       $0:  OldValueList
    ;               $1:  NewValue
    ;
    ; OUTPUTS:      $R0: Status: STATUS_SUCCESSFUL
    ;                            STATUS_FAILED
    ;
    ;               $R1: Changed?
    ;               $R2: NewValueList
    ;
    ;------------------------------------------------------------------------
    
    [PrependNewValueToEnvVar]
        ;
        set Status       = STATUS_FAILED
        set NewValueList = {}
        set Changed      = TRUE
        ;
        set Error = NO
        ForListDo $($0)
            ifstr(i) $(Error) == NO
                ifstr(i) $(Changed) == TRUE
                     LibraryProcedure ExpandedValue, $(!LIBHANDLE), ExpandSz $($)
                     ifstr(i) $(ExpandedValue) == "ERROR"
                         set Error = YES
                     else-ifstr(i) $(ExpandedValue) == $($1)
                         set Changed = FALSE
                     endif
                endif
            endif
        EndForListDo
    
        ifstr(i) $(Error) == "YES"
            goto finish_prepend
        endif
    
        set Status = STATUS_SUCCESSFUL
        ifstr(i) $(Changed) == TRUE
           set NewValueList = $($1)
           ForListDo $($0)
               set NewValueList = >($(NewValueList), $($))
           EndForListDo
        endif
    
    finish_prepend = +
        return $(Status) $(Changed) $(NewValueList)
    
      ;-----------------------------------------------------------------------
      ; ROUTINE:      QueryReplaceFile
      ;
      ; DESCRIPTION:  This routine queries whether the user wants to replace a file
      ;
      ; INPUTS:       $0:    UserFile
      ;               $1:    InstallFile
      ;
      ; USER ACTION:  $R0:    YES | NO 
      ;               only required if current file is newer, if older return YES
      ;
      ;------------------------------------------------------------------------
      [QueryReplaceFile]
          set FileDateTimeName =  $($0)
          set UserFileName =  $($0)
          ;Debug-Output $($0)
          Detect DetectFileTime
          set CurrentDate = $(FileDateTime)
          ;Debug-Output $(CurrentDate)
  
          set FileDateTimeName =  $($1)
          ;Debug-Output $($1)
          Detect DetectFileTime
          ;Debug-Output $(FileDateTime)
      
          set ReplaceFile = YES
          ifint *($(CurrentDate),2) > *($(FileDateTime),2)
              ;Debug-Output "Current later that install"
              set ReplaceFile = NO
              ;prompt for replace
              read-syms WantToReplaceSystemFile
         
              ui start "Welcome" $(SDKLIBHANDLE)
              ifstr(i) $(DLGEVENT) == "YES"
                  ui pop 1
                  set ReplaceFile = YES
              else
                  ui pop 1
              endif
          else-ifint *($(CurrentDate),2) == *($(FileDateTime),2)
              ifint *($(CurrentDate),1) >  *($(FileDateTime),1)
                  ;Debug-Output "Current later that install"
                  set ReplaceFile = NO
                  ;prompt for replace
                  read-syms WantToReplaceSystemFile
          
                  ui start "Welcome" $(SDKLIBHANDLE)
                  ifstr(i) $(DLGEVENT) == "YES"
                      ui pop 1
                      set ReplaceFile = YES
                  else
                      ui pop 1
                  endif
              endif
          endif
  
          return $(ReplaceFile)    
    ;-----------------------------------------------------------------------
    ; ROUTINE:      SetEnvironmentString
    ;
    ; DESCRIPTION:  Set the value for a user environment string
    ;
    ; INPUTS:       $0:  VarList
    ;               $1:  Privileges
    ;
    ; OUTPUTS:      $R0: Status: STATUS_SUCCESSFUL
    ;                            STATUS_FAILED
    ;
    ;
    ;------------------------------------------------------------------------
    
    [SetEnvironmentString]
        ;
        ;
        set Status = STATUS_FAILED
    
        set Var          = *($($0), 1)
        set VarTitle     = *($($0), 2)
        set VarRegType   = *($($0), 3)
        set VarValueList = *($($0), 4)
    
        set VarValue = ""
        ForListDo $(VarValueList)
           ifstr(i) $(VarValue) != ""
               set VarValue = $(VarValue)";"$($)
           else
               set VarValue = $($)
           endif
        EndForListDo
    
        LibraryProcedure STATUS, $(!LIBHANDLE), SetEnvVar $($1) $(Var) $(VarTitle) $(VarRegType) $(VarValue)
        ifstr(i) $(STATUS) == "ERROR"
           goto finish_setenvstr
        endif
        set Status = STATUS_SUCCESSFUL
    
    finish_setenvstr = +
        Return $(Status)
    
  
    ;*****************************************************************
    ;                                                                *
    ;         INSTALLATION SUPPORT ROUTINES                          *
    ;                                                                *
    ;*****************************************************************
    
    [Install-INetSDK-Groups]
    
        ifstr(i) $(PRIVILEGES) == "SYSTEM"
    	    set Common = "Common"
        else
            set Common = ""
        endif
    
        set ToolsGroup = "ActiveX SDK"
        Create$(Common)ProgManGroup $(ToolsGroup) ""
        Show$(Common)ProgManGroup   $(ToolsGroup), 1
    
        ;Debug-Output "About to Jump in to Create Icons"
        ifstr(i) $(DoOnlineHelp) == $(Chosen)
            set HelpGroup = $(ToolsGroup)
            ;Debug-Output "Creating Icon"
    
    
            Create$(Common)ProgmanItem  $(HelpGroup) , "ActiveX SDK Help InfoViewer"  $(INetSDKHelp)\"infoview ActiveX.MVB" "" 0
  
        endif
    
        Remove$(Common)ProgmanItem  $(ToolsGroup) , "ReadMe"
        Create$(Common)ProgmanItem  $(ToolsGroup) , "ReadMe" $(INetSDKDir)\"ReadMe.txt" "" ""
    
        LibraryProcedure RetCode,$(!LIBHANDLE), CheckFileExistance $(INetSDKDir)\Bin\OLEViewer.exe
        ifstr(i) $(RetCode) == "YES"
        Remove$(Common)ProgmanItem  $(ToolsGroup) , "OLE Viewer"
        Create$(Common)ProgmanItem  $(ToolsGroup) , "OLE Viewer" $(INetSDKDir)\Bin\"OLEViewer.exe" "" ""
        endif
    
        Show$(Common)ProgManGroup   $(ToolsGroup), 6
    
        exit
    
    ;************************************************************************
    ;                                                                       *
    ;  INETSDK SYSTEM FILES REPLACEMENT                                     *
    ;                                                                       *
    ;************************************************************************
    
[ShellCreateDir]
  LibraryProcedure STATUS, $(!SDKLIBHANDLE), CreateNestDir  $($0)
  Return

[SystemFilesBackup]    
return    
    ;************************************************************************
    ;                                                                       *
    ;  INETSDK SUPPORT                                                      *
    ;                                                                       *
    ;************************************************************************
    
    [Install-CopyToolsFiles]
        set STF_VITAL = ""
     
     ifstr(i) $(DoINetSDK) == $(Chosen ) 
    
        ;
        ; 1. INETSDK - always done
        ;
    
        LibraryProcedure STATUS, $(!SDKLIBHANDLE), CreateNestDir  $(INetSDKDir)
	;
	; Always create \license
	;

        CreateDir  $(INetSDKLicense)
        AddSectionFilesToCopyList Files-INetSDK-license      $(!STF_SRCDIR)INetSDK\license      $(INetSDKLicense)

        ;
        ; 2. Help files - conditional
        ;
    
        ifstr(i) $(!DoOnlineHelp)  == $(!Chosen)
    
            CreateDir $(INetSDKHelp)

            AddSectionFilesToCopyList Files-INetSDK-Help $(!STF_SRCDIR)INetSDK\Help $(INetSDKHelp)

;help hack
            AddSectionFilesToCopyList Files-INetSDK-Help-$(STF_PLATFORM) $(!STF_SRCDIR)INetSDK\Help\$(STF_PLATFORM) $(INetSDKHelp)
    
    
            ;
            ; The infoview program looks at infoview.ini for config info.
            ;  provide the minimum set we need to make it work.
            ;
    
            ReplaceIniKeyValue "infoview.ini", "ActiveX.Settings", "licensed.name", "ActiveX SDK User"
            ReplaceIniKeyValue "infoview.ini", "ActiveX.Settings", "licensed.organization", " "
            ReplaceIniKeyValue "infoview.ini", "ActiveX.Settings", "license_version", "N/A"
            ReplaceIniKeyValue "infoview.ini", "ActiveX.Settings", "license_last_read", "N/A"
    
            ReplaceIniKeyValue "infoview.ini", "ActiveX.MVB", "title", "Microsoft ActiveX Software Development Kit"
            ReplaceIniKeyValue "infoview.ini", "ActiveX.MVB", "LocalDir", $(INetSDKHelp)
            ReplaceIniKeyValue "infoview.ini", "ActiveX.MVB", "Path", $(INetSDKHelp)
            ReplaceIniKeyValue "infoview.ini", "ActiveX.MVB", "EXE", $(INetSDKHelp)"\infoview.exe"
    
            ReplaceIniKeyValue "infoview.ini", "series", "ActiveX", "ActiveX.MVB"
            ReplaceIniKeyValue "infoview.ini", "all titles", "ActiveX.MVB", "ActiveX.MVB"
    
    
        endif
    
        ;
        ; 3. INetSDK samples - conditional
        ;
    
    
        ifstr(i) $(!DoSamples) == "Do not do it" ; was == $(!Chosen)
    
          CreateDir $(INetSDKDir)Samples
    
          CreateDir $(INetSDKDir)Samples\BaseCtl
          CreateDir $(INetSDKDir)Samples\BaseCtl\FrameWrk
          CreateDir $(INetSDKDir)Samples\BaseCtl\Include
    
          CreateDir $(INetSDKDir)Samples\BaseCtl\IELnk
          CreateDir $(INetSDKDir)Samples\BaseCtl\IEMime
          CreateDir $(INetSDKDir)Samples\BaseCtl\ToDoSvr
          CreateDir $(INetSDKDir)Samples\BaseCtl\WebImage
          CreateDir $(INetSDKDir)Samples\BaseCtl\Card
          CreateDir $(INetSDKDir)Samples\BaseCtl\ObjVw
    
          CreateDir $(INetSDKDir)Samples\Framer
          CreateDir $(INetSDKDir)Samples\Progress

;          CreateDir $(INetSDKDir)Samples\MSConf
;          CreateDir $(INetSDKDir)Samples\MSConf\CnfTest
;          CreateDir $(INetSDKDir)Samples\MSConf\Excel
;          CreateDir $(INetSDKDir)Samples\MSConf\EzConf
;          CreateDir $(INetSDKDir)Samples\MSConf\Word

          CreateDir $(INetSDKDir)Samples\AXScript
          CreateDir $(INetSDKDir)Samples\AXScript\Spruuids
          CreateDir $(INetSDKDir)Samples\AXScript\Spruuids\Src
          CreateDir $(INetSDKDir)Samples\AXScript\Spruuids\Src\Inc_Ext

          CreateDir $(INetSDKDir)Samples\Range

          CreateDir $(INetSDKDir)Samples\UrlPad

          CreateDir $(INetSDKDir)Samples\VBScript

          CreateDir $(INetSDKDir)Samples\WinInet
          CreateDir $(INetSDKDir)Samples\WinInet\FTPJr
          CreateDir $(INetSDKDir)Samples\WinInet\HTTPDump
          CreateDir $(INetSDKDir)Samples\WinInet\HTTPAuth

          CreateDir $(INetSDKDir)Samples\WebPost
          CreateDir $(INetSDKDir)Samples\WebPost\WbPost
          CreateDir $(INetSDKDir)Samples\WebPost\WbProv

          ; Begin Nashville

         ; CreateDir $(INetSDKDir)Samples\Wab
         ; CreateDir $(INetSDKDir)Samples\Wab\ApiTest

          ; End Nashville

          AddSectionFilesToCopyList Files-INetSDK-Samples                  $(!STF_SRCDIR)INetSDK\Samples                   $(INetSDKDir)Samples
          
          AddSectionFilesToCopyList Files-INetSDK-Samples-BaseCtl          $(!STF_SRCDIR)INetSDK\Samples\BaseCtl           $(INetSDKDir)Samples\BaseCtl
          AddSectionFilesToCopyList Files-INetSDK-Samples-BaseCtl-FrameWrk $(!STF_SRCDIR)INetSDK\Samples\BaseCtl\FrameWrk  $(INetSDKDir)Samples\BaseCtl\FrameWrk
          AddSectionFilesToCopyList Files-INetSDK-Samples-BaseCtl-Include  $(!STF_SRCDIR)INetSDK\Samples\BaseCtl\Include   $(INetSDKDir)Samples\BaseCtl\Include
          AddSectionFilesToCopyList Files-INetSDK-Samples-BaseCtl-IELnk    $(!STF_SRCDIR)INetSDK\Samples\BaseCtl\IELnk     $(INetSDKDir)Samples\BaseCtl\IELnk
          AddSectionFilesToCopyList Files-INetSDK-Samples-BaseCtl-IEMime   $(!STF_SRCDIR)INetSDK\Samples\BaseCtl\IEMime    $(INetSDKDir)Samples\BaseCtl\IEMime
          AddSectionFilesToCopyList Files-INetSDK-Samples-BaseCtl-ToDoSvr  $(!STF_SRCDIR)INetSDK\Samples\BaseCtl\ToDoSvr   $(INetSDKDir)Samples\BaseCtl\ToDoSvr
          AddSectionFilesToCopyList Files-INetSDK-Samples-BaseCtl-WebImage $(!STF_SRCDIR)INetSDK\Samples\BaseCtl\WebImage  $(INetSDKDir)Samples\BaseCtl\WebImage
          AddSectionFilesToCopyList Files-INetSDK-Samples-BaseCtl-Card $(!STF_SRCDIR)INetSDK\Samples\BaseCtl\Card  $(INetSDKDir)Samples\BaseCtl\Card
          AddSectionFilesToCopyList Files-INetSDK-Samples-BaseCtl-ObjVw $(!STF_SRCDIR)INetSDK\Samples\BaseCtl\ObjVw  $(INetSDKDir)Samples\BaseCtl\ObjVw


          AddSectionFilesToCopyList Files-INetSDK-Samples-Framer           $(!STF_SRCDIR)INetSDK\Samples\Framer            $(INetSDKDir)Samples\Framer

;          AddSectionFilesToCopyList Files-INetSDK-Samples-MSConf           $(!STF_SRCDIR)INetSDK\Samples\MSConf            $(INetSDKDir)Samples\MSConf
;          AddSectionFilesToCopyList Files-INetSDK-Samples-MSConf-CnfTest   $(!STF_SRCDIR)INetSDK\Samples\MSConf\CnfTest    $(INetSDKDir)Samples\MSConf\CnfTest
;          AddSectionFilesToCopyList Files-INetSDK-Samples-MSConf-Excel     $(!STF_SRCDIR)INetSDK\Samples\MSConf\Excel      $(INetSDKDir)Samples\MSConf\Excel
;          AddSectionFilesToCopyList Files-INetSDK-Samples-MSConf-EzConf    $(!STF_SRCDIR)INetSDK\Samples\MSConf\EzConf     $(INetSDKDir)Samples\MSConf\EzConf
;          AddSectionFilesToCopyList Files-INetSDK-Samples-MSConf-Word      $(!STF_SRCDIR)INetSDK\Samples\MSConf\Word       $(INetSDKDir)Samples\MSConf\Word

          AddSectionFilesToCopyList Files-INetSDK-Samples-Progress         $(!STF_SRCDIR)INetSDK\Samples\Progress          $(INetSDKDir)Samples\Progress

          AddSectionFilesToCopyList Files-INetSDK-Samples-WinInet-Range    $(!STF_SRCDIR)INetSDK\Samples\Range             $(INetSDKDir)Samples\Range

          AddSectionFilesToCopyList Files-INetSDK-Samples-VBScript-Spruuids $(!STF_SRCDIR)INetSDK\Samples\AXScript\Spruuids  $(INetSDKDir)Samples\AXScript\Spruuids
          AddSectionFilesToCopyList Files-INetSDK-Samples-VBScript-Spruuids-Src $(!STF_SRCDIR)INetSDK\Samples\AXScript\Spruuids\Src $(INetSDKDir)Samples\AXScript\Spruuids\Src

          AddSectionFilesToCopyList Files-INetSDK-Samples-UrlPad           $(!STF_SRCDIR)INetSDK\Samples\UrlPad            $(INetSDKDir)Samples\UrlPad

          AddSectionFilesToCopyList Files-INetSDK-Samples-VBScript         $(!STF_SRCDIR)INetSDK\Samples\VBScript          $(INetSDKDir)Samples\VBScript

          AddSectionFilesToCopyList Files-INetSDK-Samples-WinInet          $(!STF_SRCDIR)INetSDK\Samples\WinInet           $(INetSDKDir)Samples\WinInet
          AddSectionFilesToCopyList Files-INetSDK-Samples-WinInet-FTPJr $(!STF_SRCDIR)INetSDK\Samples\WinInet\FTPJr  $(INetSDKDir)Samples\WinInet\FTPJr
          AddSectionFilesToCopyList Files-INetSDK-Samples-WinInet-HTTPDump $(!STF_SRCDIR)INetSDK\Samples\WinInet\HTTPDump  $(INetSDKDir)Samples\WinInet\HTTPDump
          AddSectionFilesToCopyList Files-INetSDK-Samples-WinInet-HTTPAuth $(!STF_SRCDIR)INetSDK\Samples\WinInet\HTTPAuth  $(INetSDKDir)Samples\WinInet\HTTPAuth

          AddSectionFilesToCopyList Files-WebPost-Include                  $(!STF_SRCDIR)INetSDK\Include                   $(INetSDKDir)Include
          AddSectionFilesToCopyList Files-WebPost-Lib-$(STF_PLATFORM)      $(!STF_SRCDIR)INetSDK\Lib\$(STF_PLATFORM)       $(INetSDKDir)Lib

          AddSectionFilesToCopyList Files-NashSDK-Samples-WebPost          $(!STF_SRCDIR)INetSDK\Samples\WebPost           $(INetSDKDir)Samples\WebPost
          AddSectionFilesToCopyList Files-NashSDK-Samples-WebPost-WbPost   $(!STF_SRCDIR)INetSDK\Samples\WebPost\WbPost    $(INetSDKDir)Samples\WebPost\WbPost
          AddSectionFilesToCopyList Files-NashSDK-Samples-WebPost-WbProv   $(!STF_SRCDIR)INetSDK\Samples\WebPost\WbProv    $(INetSDKDir)Samples\WebPost\WbProv

          ; Begin Nashville

         ; AddSectionFilesToCopyList Files-NashSDK-Include                  $(!STF_SRCDIR)INetSDK\Include                   $(INetSDKDir)Include
         ; AddSectionFilesToCopyList Files-NashSDK-Specs                    $(!STF_SRCDIR)INetSDK\Specs                     $(INetSDKDir)Specs
         ; AddSectionFilesToCopyList Files-NashSDK-Lib-$(STF_PLATFORM)      $(!STF_SRCDIR)INetSDK\Lib\$(STF_PLATFORM)       $(INetSDKDir)Lib

         ; AddSectionFilesToCopyList Files-NashSDK-Samples-Wab-ApiTest      $(!STF_SRCDIR)INetSDK\Samples\Wab\ApiTest       $(INetSDKDir)Samples\Wab\ApiTest

          ; End Nashville

        endif
    
    endif
    ; end of INetSDK
    
    ifstr(i) $( DoPDCOther) == $(Chosen )
         ;CreateDir Put directory here
         ;AddSectionFilesToCopyList section-name $(!STF_SRCDIR)sourcepath  $(INetSDKDir)destpath
    endif
    ;endif PDCOther
    
    
    exit
    
    
    [Install-SeeIfFileIsPresent]
    LibraryProcedure STATUS,$(!LIBHANDLE), CheckFileExistance $(FileToCheck)
    exit
    
    [Install-All-Files-Now]
        CopyFilesInCopyList
        exit
    
    
    ;
    ; REGULAR INETSDK
    ;

[Files-INetSDK-Bin-i386]
; geraldd, sanrisc

[Files-INetSDK-Bin-alpha]

; geraldd sanrisc
[Files-INetSDK-Bin-mips]

; geraldd sanrisc
[Files-INetSDK-Bin-ppc]


[Files-INetSDK-Help-OLE]

[Files-INetSDK-Help-alpha]
1,INFOVIEW.EXE,!DECOMPRESS,NOLOG

[Files-INetSDK-Help-mips]
1,INFOVIEW.EXE,!DECOMPRESS,NOLOG

[Files-INetSDK-Help-ppc]
1,INFOVIEW.EXE,!DECOMPRESS,NOLOG

[Files-INetSDK-Help-i386]
1,INFOVIEW.EXE,!DECOMPRESS,NOLOG


[Files-INetSDK-Help]
1,ACTIVEX.AUX,!DECOMPRESS,NOLOG
1,ACTIVEX.CAC,!DECOMPRESS,NOLOG
1,ACTIVEX.IDX,!DECOMPRESS,NOLOG
1,ACTIVEX.KWD,!DECOMPRESS,NOLOG
1,ACTIVEX.MVB,!DECOMPRESS,NOLOG

[Files-INetSDK-Include]

[Files-INetSDK-Lib-i386]

; geraldd sanrisc
[Files-INetSDK-Lib-alpha]

; geraldd sanrisc
[Files-INetSDK-Lib-mips]
; geraldd sanrisc

[Files-INetSDK-Lib-ppc]

[Files-INetSDK-Lib]

[Files-INetSDK-License]
1,LICENSE.TXT,!DECOMPRESS,NOLOG
1,REDIST.TXT,!DECOMPRESS,NOLOG

[Files-INetSDK-Other]
1,LICENSE.TXT,!DECOMPRESS,NOLOG
1,REDIST.TXT,!DECOMPRESS,NOLOG



[Files-INetSDK-Specs]

[Files-INetSDK-System32-i386]
; 1,DATAPATH.TLB,!DECOMPRESS,NOLOG

; geraldd sanrisc
[Files-INetSDK-System32-alpha]

;geraldd sanrisc
[Files-INetSDK-System32-ppc]

;geraldd sanrisc
[Files-INetSDK-System32-mips]




[Files-INetSDK]
1,README.TXT,!DECOMPRESS,NOLOG
1,SETENV.BAT,!DECOMPRESS,NOLOG

[Files-NashSDK-Include]
1,JOBSCHED.H,!DECOMPRESS,NOLOG
1,WAB.H,!DECOMPRESS,NOLOG
1,WABAPI.H,!DECOMPRESS,NOLOG
1,WABCODE.H,!DECOMPRESS,NOLOG
1,WABDEFS.H,!DECOMPRESS,NOLOG
1,WABIAB.H,!DECOMPRESS,NOLOG
1,WABMEM.H,!DECOMPRESS,NOLOG
1,WABNOT.H,!DECOMPRESS,NOLOG
1,WABTAGS.H,!DECOMPRESS,NOLOG
1,WABUTIL.H,!DECOMPRESS,NOLOG

[Files-NashSDK-Lib-i386]
1,MSTASK.LIB,!DECOMPRESS,NOLOG
1,WAB32.LIB,!DECOMPRESS,NOLOG

;geraldd sanrisc
;[Files-NashSDK-Lib-ppc]

;geraldd sanrisc
;[Files-NashSDK-Lib-alpha]

;geraldd sanrisc
;[Files-NashSDK-Lib-mips]

[Files-NashSDK-Samples-Wab-ApiTest]
1,APITEST.C,!DECOMPRESS,NOLOG
1,APITEST.DEF,!DECOMPRESS,NOLOG
1,APITEST.H,!DECOMPRESS,NOLOG
1,APITEST.RC,!DECOMPRESS,NOLOG
1,INSTRING.C,!DECOMPRESS,NOLOG
1,INSTRING.H,!DECOMPRESS,NOLOG
1,INSTRING.RC,!DECOMPRESS,NOLOG
1,MAKEFILE,!DECOMPRESS,NOLOG

[Files-NashSDK-Samples-WebPost-WbPost]
1,MAKEFILE,!DECOMPRESS,NOLOG
1,README.TXT,!DECOMPRESS,NOLOG
1,WBPOST.CPP,!DECOMPRESS,NOLOG
1,WBPOST.H,!DECOMPRESS,NOLOG

[Files-NashSDK-Samples-WebPost-WbProv]
1,GUID.C,!DECOMPRESS,NOLOG
1,MAKEFILE,!DECOMPRESS,NOLOG
1,README.TXT,!DECOMPRESS,NOLOG
1,RESOURCE.H,!DECOMPRESS,NOLOG
1,SITE.CPP,!DECOMPRESS,NOLOG
1,WBPROV.CPP,!DECOMPRESS,NOLOG
1,WBPROV.DEF,!DECOMPRESS,NOLOG
1,WBPROV.H,!DECOMPRESS,NOLOG
1,WBPROV.RC,!DECOMPRESS,NOLOG
1,WIZARD.CPP,!DECOMPRESS,NOLOG

[Files-NashSDK-Samples-WebPost]
1,MAKEFILE,!DECOMPRESS,NOLOG

[Files-NashSDK-Specs]
1,WABAPI.DOC,!DECOMPRESS,NOLOG

[Files-WebPost-Include]
1,WPAPI.H,!DECOMPRESS,NOLOG
1,WPGUID.H,!DECOMPRESS,NOLOG
1,WPOBJ.H,!DECOMPRESS,NOLOG
1,WPSPI.H,!DECOMPRESS,NOLOG

[Files-WebPost-Lib-i386]
1,WEBPOST.LIB,!DECOMPRESS,NOLOG

;geraldd sanrisc
[Files-WebPost-Lib-ppc]
;1,WEBPOST.LIB,!DECOMPRESS,NOLOG

;geraldd sanrisc
[Files-WebPost-Lib-alpha]

;geraldd sanrisc
[Files-WebPost-Lib-mips]


