home *** CD-ROM | disk | FTP | other *** search
/ PC World Komputer 1998 July & August / Pcwk78a98.iso / Wtestowe / Clico / DESKTOP / DISK1 / INST_MV.MS_ / INST_MV.MS
Text File  |  1997-04-08  |  33KB  |  1,499 lines

  1. ''***************************************************************************
  2. ''                  File : INST_MV.MST
  3. ''***************************************************************************
  4.  
  5. ''$DEFINE DEBUG  ''Define for script development/debugging
  6.  
  7. '$INCLUDE 'inst_mv.con'
  8. '$INCLUDE 'inst_mv.glb'
  9. '$INCLUDE 'inst_mv.dec'
  10. '$INCLUDE 'setupapi.inc'
  11. '$INCLUDE 'msdetect.inc'
  12. '$INCLUDE 'conf_mv.mst'
  13.  
  14. ''***************************************************************************
  15. ''                  Function : INIT
  16. ''***************************************************************************
  17.  
  18. INIT:
  19.  
  20.     '' Check on version
  21.  
  22.     major% = GetWindowsMajorVersion()
  23.     minor% = GetWindowsMinorVersion()
  24.  
  25.     '' Ensure 3.1 or above
  26.  
  27.     IF ( (major% < 3) OR ( (major% = 3) AND (minor% < 1) ) ) THEN
  28.  
  29.     '' Display message box as warning
  30.  
  31.     mess_ret% = DoMsgBox("Setup requires version 3.1 of Windows or above to install correctly","Setup",MB_OK)
  32.  
  33.     '' Drop out BEFORE attempting to call the DLL
  34.  
  35.     END
  36.  
  37.     END IF
  38.         
  39.     '' Set exit procedure
  40.  
  41.     ON ERROR GOTO QUIT
  42.  
  43.     '' Do initialisation required in case exit occurs
  44.  
  45.     HELPPROC$ = "FHelpDlgProc"
  46.     ZoomWindow(HwndFrame())
  47.  
  48.     CUIDLL$ = "mv_inst.dll"
  49.     g_wait_cursor% = -1
  50.  
  51.     '' Look for installation level
  52.  
  53.     src_inf$ = GetSymbolValue("STF_SRCINFPATH")
  54.     IF src_inf$ = "" THEN
  55.     src_inf$ = GetSymbolValue("STF_CWDDIR")
  56.     END IF
  57.     temp_file$ = src_inf$ + "X.INS"
  58.  
  59.     IF DoesFileExist(temp_file$,femExist) = 1 THEN
  60.  
  61.     '' Set global to indicate that X values should be around
  62.  
  63.     g_X_in_inf_file% = TRUE%
  64.  
  65.     '' Logo bitmap is displayed and our title set up
  66.  
  67.     g_product_name$ = "MultiView/X"
  68.     SetBitmap CUIDLL$, LOGO_X
  69.  
  70.     ELSE
  71.  
  72.     '' Not expecting an X installation
  73.  
  74.     g_X_in_inf_file% = FALSE%
  75.  
  76.     '' Logo bitmap is displayed and our title set up
  77.  
  78.     g_product_name$ = "MultiView DeskTop"
  79.     SetBitmap CUIDLL$, LOGO
  80.  
  81.     END IF
  82.  
  83.     g_tempdir$ = GetSymbolValue("STF_CWDDIR")
  84.  
  85.     ''msg% = DoMsgBox(g_tempdir$,"temp dir", MB_OK)
  86.  
  87.     '' DEV619 Get the windows operating system ie 3.1, 95, ot NT
  88.     g_i_WinVersion% = Is32BitOperatingSystem(g_tempdir)
  89.  
  90.  
  91.     SetTitle "Installation of " + g_product_name$
  92.  
  93.     '' Set up initial symbol tables et cetera
  94.  
  95.     PerformInitialisation
  96.  
  97.     '' Check files on the system for existing installation
  98.  
  99.     g_first_inst% = TestFirstInstallation%
  100.  
  101.     '' Display welcome box - No longer needed
  102.  
  103.     '' DisplayWelcomeDialog
  104.  
  105.     '' Check for first installation
  106.  
  107.     IF (g_first_inst% = TRUE%) THEN
  108.  
  109.     '' Take input from serial number and key if not previously installed
  110.  
  111.     CheckSerialKey
  112.  
  113.     '' Now get path for installation - note return values, etc, are set
  114.     '' up in the global symbol table. Only done if not upgrading 
  115.  
  116.     if ( GetSymbolValue(INST_METHOD$) = "2" ) THEN
  117.         '' KEVFIX 16-07-96 Upgrade of serial & modem code to 5.01 new rs232
  118.         BFXNetType$ = GetIniKeyString(MakePath(g_win_dir$, "mview.ini"), "Install Network", "cursel")
  119.         IF BFXNetType$ = "direct" THEN
  120.             CreateIniKeyValue MakePath(g_win_dir$, "mview.ini"),"Install Network","cursel","rs232",cmoAll  
  121.         ELSE
  122.             IF BFXNetType$ = "modem" THEN
  123.                 CreateIniKeyValue MakePath(g_win_dir$, "mview.ini"),"Install Network","cursel","modem232",cmoAll  
  124.             ENDIF
  125.         ENDIF
  126.         UpgradeSerialSupport
  127.     ELSE
  128.  
  129.         GetInstallationPath
  130.  
  131.     ENDIF
  132.  
  133.     ELSE
  134.     
  135.     '' Need to check if demo version installed
  136.  
  137.     CheckForDemoInstallation(HwndFrame())
  138.  
  139.     g_change_serial_no$ = GetSymbolValue("ChangeSerialNo")
  140.  
  141.     '' DEV 453
  142.     IF ( g_change_serial_no$ = "FALSE" ) THEN
  143.  
  144.         '' Do nothing
  145.  
  146.     ELSE
  147.  
  148.         '' Change of serial number is required - BFX471
  149.     
  150.         CheckSerialKey
  151.  
  152.         burn_ok% = burn(MakePath(g_path_name$,"MVIEW.EXE"), TRUE%, FALSE%, "99/99999999", 2)
  153.  
  154.         IF burn_ok% = FALSE% THEN
  155.  
  156.             burn_ok% = burn(MakePath(g_path_name$,"MVIEW.EXE"), TRUE%, FALSE%, "JSBJSBJSB??", 2)
  157.     
  158.         ENDIF
  159.  
  160.         burn_ok% = burn(MakePath(g_path_name$,"MXFER.EXE"), TRUE%, FALSE%, "99/99999999", 1)
  161.  
  162.         IF burn_ok% = FALSE% THEN
  163.  
  164.             burn_ok% = burn(MakePath(g_path_name$,"MXFER.EXE"), TRUE%, FALSE%, "JSBJSBJSB??", 1)
  165.  
  166.         ENDIF
  167.  
  168.     ENDIF
  169.  
  170.     ENDIF
  171.  
  172. RESTART_INST:
  173.  
  174.     '' Now go to standard install dialog to pick off options needed
  175.  
  176.     GetSystemConfiguration
  177.  
  178.     '' First test for all flags set, disk space OK etc
  179.  
  180.     inst_ok% = TestInstallationSetup%
  181.  
  182.     '' If this is OK then perform the installation
  183.  
  184.     IF inst_ok% = TRUE% THEN
  185.  
  186.     PerformInstallation
  187.  
  188.     ELSE
  189.  
  190.     CheckReconfigOption
  191.  
  192.     '' Re-run config section
  193.  
  194.     GOTO RESTART_INST
  195.  
  196.     ENDIF
  197.  
  198.     '' Test if program manager group option needed (first installation) and if win32 printing program is to be called
  199.  
  200.     IF g_first_inst% = TRUE% THEN 
  201.                                   
  202.     '' do the win32 printing install
  203.                                       
  204.     ConfigPrinter
  205.  
  206.     '' Get required name, etc, for progman group
  207.  
  208.     ProgmanGroupOption
  209.  
  210.     ELSE
  211.  
  212.     '' See if X is around
  213.  
  214.     IF g_X_in_inf_file% = TRUE% THEN
  215.  
  216.         AddXProgmanDetails
  217.  
  218.     END IF
  219.  
  220.     ENDIF
  221.  
  222.     '' Display exit box - this can reflect error or standard exit OK
  223.  
  224.     ExitDialog
  225.  
  226. '' End of function : INIT
  227.  
  228. ''***************************************************************************
  229. ''                  Function : PerformInitialisation
  230. ''***************************************************************************
  231.  
  232. SUB PerformInitialisation STATIC
  233.  
  234.     '' Set up strings for dialog
  235.  
  236.     InitialiseStrings(HwndFrame())
  237.     
  238.     '' Check initialisation successful - BFX 205
  239.     
  240.     IF GetSymbolValue(INITIALISE_DONE$) = "No" THEN
  241.      
  242.      '' Initialisation unsuccessful
  243.  
  244.      g_exit_flag% = EXIT_ERROR%
  245.                   
  246.      '' Exit program
  247.      
  248.      ExitDialog
  249.      
  250.     ENDIF
  251.  
  252.     '' Get drive and directory with windows on
  253.  
  254.     g_win_dir$ = GetWindowsDir
  255.     g_win_drive$ = MID$(GetWindowsDir, 1, 1)
  256.  
  257.     '' Initialise global path name value and VSL name
  258.  
  259.     g_path_name$ = GetSymbolValue(PATH_NAME$)
  260.     g_vsl_name$ = MakePath(g_path_name$, "VSL")
  261.     g_tcp_dir$ = MakePath(g_path_name$, "TCP")
  262.     g_sys_dir$ = MakePath(g_win_dir$, "SYSTEM")
  263.     g_setup_dir$ = MakePath(g_path_name$, "SETUP")
  264.     
  265.     '' BFX184
  266.     g_language_dir$ = MakePath(g_path_name$, "LANGUAGE")
  267.  
  268.     '' BFX310
  269.     g_script_dir$ = MakePath(g_path_name$, "SCRIPT")
  270.  
  271.  
  272.     '' Set up path for the file information (.INF) file
  273.  
  274.     g_src_inf$ = GetSymbolValue("STF_SRCINFPATH")
  275.  
  276.     IF g_src_inf$ = "" THEN
  277.     g_src_inf$ = GetSymbolValue("STF_CWDDIR")
  278.     END IF
  279.  
  280.  
  281.     '' Read all information from the disk layout file
  282.  
  283.     file_name$ = g_src_inf$ + "MVIEWF.INF"
  284.     ReadInfFile file_name$
  285.  
  286.     '' Set up source directory
  287.  
  288.     g_src_inf$ = GetSymbolValue("STF_SRCDIR")
  289.  
  290.     '' Initialise drive, status and overflow symbols
  291.  
  292.     FOR i_loop% = 1 TO 4 STEP 1
  293.  
  294.     AddListItem STATUSTEXT$, ""
  295.  
  296.     NEXT i_loop%
  297.  
  298.     FOR i_loop% = 1 TO 4 STEP 1
  299.  
  300.     AddListItem BIGLIST$, ""
  301.  
  302.     NEXT i_loop%
  303.  
  304.     FOR i_loop% = 1 TO 6 STEP 1
  305.  
  306.     AddListItem DRIVETEXT$, ""
  307.  
  308.     NEXT i_loop%
  309.  
  310.     FOR i_loop% = 1 TO 26 STEP 1
  311.  
  312.     AddListItem EXTRA$, "0"
  313.  
  314.     NEXT i_loop%
  315.  
  316.     '' Set all global flags to defaults
  317.  
  318.     actual_install% = FALSE%
  319.     g_exit_flag%   = EXIT_OK%
  320.     g_first_inst%  = TRUE%
  321.     g_host_set%    = TRUE%
  322.     g_network_set% = TRUE%
  323.     g_JSB_set%     = TRUE%
  324.     g_tcpip_ok%    = TRUE%
  325.     g_add_auto%    = FALSE%
  326.  
  327.     g_update_all%  = TRUE%
  328.     g_update_desk% = TRUE%
  329.     g_update_net%  = TRUE%
  330.     g_update_X%    = TRUE%
  331.  
  332.     '' BFX440 - initialise g_change_serial_no as FALSE
  333.     g_change_serial_no$ = "FALSE"    
  334.  
  335. END SUB
  336.  
  337. '' End of function : PerformInitialisation
  338.  
  339. ''***************************************************************************
  340. ''                  Function : DisplayWelcomeDialog
  341. ''***************************************************************************
  342.  
  343. SUB DisplayWelcomeDialog STATIC
  344.  
  345. STARTWELCOME:
  346.  
  347.     '' Display standard message box
  348.  
  349.     dialog_return$ = UIStartDlg(CUIDLL$, WELCOME, "Welcome",APPHELP, HELP_PROC$)
  350.  
  351.     SELECT CASE dialog_return$
  352.  
  353.     CASE REACTIVATE$
  354.  
  355.         '' Simply redisplay dialog
  356.  
  357.         GOTO STARTWELCOME
  358.  
  359.     CASE EXIT_VAL$
  360.  
  361.         '' Set exit flag to incomplete
  362.  
  363.         g_exit_flag% = EXIT_INCOMPLETE%
  364.  
  365.         '' Call exit procedure
  366.  
  367.         ExitDialog
  368.  
  369.         '' Redisplay dialog
  370.  
  371.         GOTO STARTWELCOME
  372.  
  373.     CASE ELSE
  374.  
  375.         '' Remove welcome window and continue
  376.  
  377.         UIPop 1
  378.  
  379.     END SELECT
  380.  
  381. END SUB
  382.  
  383. '' End of function : DisplayWelcomeDialog
  384.  
  385. ''***************************************************************************
  386. ''                  Function : CheckSerialKey
  387. ''***************************************************************************
  388.  
  389. SUB CheckSerialKey STATIC
  390.  
  391.     '' BFX440 - Display information dialog for serial no and activation key
  392.  
  393.     '' BFX572 - Popup message if it is not an upgrade 
  394.     
  395.     Upgrade$ = GetSymbolValue("Product_Upgrade")
  396.  
  397.     IF ( g_change_serial_no$ = "FALSE" )  AND (Upgrade$ <> "Yes" ) THEN
  398.  
  399.     SetSymbolValue "PopupSymbol", "2"       
  400.  
  401.     dialog_return$ = UIStartDLg(CUIDLL$, POPUP_MESSAGE, "PopupMessage" ,APPHELP, HELP_PROC$)
  402.  
  403.     ENDIF
  404.  
  405. STARTKEY:
  406.  
  407.     '' Serialisation key checking - if Continue then assume this is OK as
  408.     '' dialog routine will do actual checking
  409.  
  410.     dialog_return$ = UIStartDlg(CUIDLL$, SERIALISE, "Serialise",APPHELP, HELP_PROC$)
  411.  
  412.     SELECT CASE dialog_return$
  413.  
  414.     CASE REACTIVATE$
  415.  
  416.         '' Simply redisplay dialog
  417.  
  418.         GOTO STARTKEY
  419.  
  420.     CASE EXIT_VAL$
  421.  
  422.         UIPop 2
  423.  
  424.         '' Set exit flag to incomplete
  425.  
  426.         g_exit_flag% = EXIT_INCOMPLETE%
  427.  
  428.         '' Call exit procedure
  429.  
  430.         ExitDialog
  431.  
  432.         '' Redisplay dialog - continue must have been requested
  433.  
  434.     IF ( g_change_serial_no$ = "FALSE" )  AND (P_Upgrade$ <> "Yes" ) THEN
  435.  
  436.         SetSymbolValue "PopupSymbol", "2"       
  437.  
  438.         dialog_return$ = UIStartDLg(CUIDLL$, POPUP_MESSAGE, "PopupMessage" ,APPHELP, HELP_PROC$)
  439.  
  440.         ENDIF
  441.  
  442.         '' Redisplay dialog - continue must have been requested
  443.  
  444.         GOTO STARTKEY
  445.  
  446.     CASE ELSE
  447.  
  448.         '' BFX440 - Remove serialise window and continue - else assumed as OK
  449.  
  450.     IF ( g_change_serial_no$ = "FALSE" )  AND (P_Upgrade$ <> "Yes" ) THEN
  451.  
  452.         UIPop 2
  453.         ELSE
  454.  
  455.         UIPop 1
  456.         ENDIF
  457.     
  458.     END SELECT
  459.  
  460. END SUB
  461.  
  462. '' End of function : CheckSerialKey
  463.  
  464. ''***************************************************************************
  465. ''                  Function : GetInstallationPath
  466. ''***************************************************************************
  467.  
  468. SUB GetInstallationPath STATIC
  469.  
  470. STARTPATH:
  471.  
  472.     '' Call path dialog - needs help function adding
  473.  
  474.     dialog_return$ = UIStartDlg(CUIDLL$, DESTPATH, "PathName",APPHELP, HELP_PROC$)
  475.  
  476.     SELECT CASE dialog_return$
  477.  
  478.     CASE REACTIVATE$
  479.  
  480.         '' Simply redisplay dialog
  481.  
  482.         GOTO STARTPATH
  483.  
  484.     CASE EXIT_VAL$
  485.  
  486.         '' Set exit flag to incomplete
  487.  
  488.         g_exit_flag% = EXIT_INCOMPLETE%
  489.  
  490.         '' Call exit procedure
  491.  
  492.         ExitDialog
  493.  
  494.         '' Redisplay dialog - continue must have been requested
  495.  
  496.         GOTO STARTPATH
  497.  
  498.     CASE ELSE
  499.  
  500.         '' Assume Continue - check path is valid. First take name
  501.         '' from symbol table
  502.  
  503.         new_name$ = GetSymbolValue(PATH_NAME$)
  504.  
  505.         '' Ensure that this is valid
  506.         
  507.     '' BFX171
  508.     
  509.         IF (GetSymbolValue(VALID_PATH$) = "0") THEN
  510.  
  511.             '' Call basic error message box
  512.  
  513.             DisplayBadPathMessage
  514.  
  515.             '' Re-display full dialog box
  516.  
  517.             GOTO STARTPATH
  518.  
  519.         ENDIF
  520.         
  521.         '' At this point the path is acceptable so continue - store path
  522.  
  523.         g_path_name$ = new_name$
  524.         g_vsl_name$ = MakePath(g_path_name$, "VSL")
  525.         g_tcp_dir$ = MakePath(g_path_name$, "TCP")
  526.         g_setup_dir$ = MakePath(g_path_name$, "SETUP")
  527.  
  528.         '' BFX184
  529.         g_language_dir$ = MakePath(g_path_name$, "LANGUAGE")
  530.  
  531.         '' BFX310
  532.         g_script_dir$ = MakePath(g_path_name$, "SCRIPT")
  533.  
  534.         '' Remove path dialog
  535.  
  536.         UIPop 1
  537.  
  538.     END SELECT
  539.  
  540. END SUB
  541.  
  542. '' End of function : GetInstallationPath
  543.  
  544. ''***************************************************************************
  545. ''                  Function : DisplayBadPathMessage
  546. ''***************************************************************************
  547.  
  548. SUB DisplayBadPathMessage STATIC
  549.  
  550. STARTBADPATH:
  551.  
  552.     '' Call bad path dialog
  553.  
  554.     dialog_return$ = UIStartDlg(CUIDLL$, BADPATH, "BadPath",0, "")
  555.  
  556.     SELECT CASE dialog_return$
  557.  
  558.     CASE REACTIVATE$
  559.  
  560.         '' Simply redisplay dialog
  561.  
  562.         GOTO STARTBADPATH
  563.  
  564.     CASE ELSE
  565.  
  566.         '' Remove bad path dialog
  567.  
  568.         UIPop 1
  569.  
  570.     END SELECT
  571.  
  572. END SUB
  573.  
  574. '' End of function : DisplayBadPathMessage
  575.  
  576. ''***************************************************************************
  577. ''                  Function : GetSystemConfiguration
  578. ''***************************************************************************
  579.  
  580. SUB GetSystemConfiguration STATIC
  581.  
  582. STARTCONFIG:
  583.  
  584.     '' Set up size values
  585.  
  586.     CalculateSizeNeeded
  587.  
  588.     '' Now display values
  589.  
  590.     SetDriveStatus
  591.  
  592.     '' Call configuration box - help needs adding
  593.  
  594.     dialog_return$ = UIStartDlg(CUIDLL$, CUSTINST2, "MainConfig",APPHELP, HELP_PROC$)
  595.  
  596.     SELECT CASE dialog_return$
  597.  
  598.     CASE REACTIVATE$
  599.  
  600.         '' Simply redisplay dialog
  601.  
  602.         GOTO STARTCONFIG
  603.  
  604.     CASE EXIT_VAL$
  605.  
  606.         '' Set exit flag to incomplete
  607.  
  608.         g_exit_flag% = EXIT_INCOMPLETE%
  609.  
  610.         '' Call exit procedure - i.e. query user's wish to exit
  611.  
  612.         ExitDialog
  613.  
  614.         '' Restart dialog - if continue was called then re-initialise
  615.         '' the dialog box in case disk space, etc, has changed since
  616.         '' the request to exit was made
  617.  
  618.         GOTO STARTCONFIG
  619.  
  620.     CASE INSTALL$
  621.  
  622.         '' Remove current window and continue with installation
  623.  
  624.         UIPop 1
  625.  
  626.     CASE X_WARN$
  627.  
  628.         '' Test for warning message
  629.  
  630.         tcp_ok% = DisplayTCPWarning%
  631.  
  632.         IF tcp_ok% = TRUE% THEN
  633.  
  634.         '' Remove current window and continue with installation
  635.  
  636.         UIPop 1
  637.  
  638.         ELSE
  639.  
  640.         '' Re-display
  641.  
  642.         GOTO STARTCONFIG
  643.  
  644.         END IF
  645.  
  646.     CASE X_WARN_HOST$
  647.  
  648.         '' Test for warning message
  649.  
  650.         tcp_ok% = DisplayTCPWarning%
  651.  
  652.         IF tcp_ok% = TRUE% THEN
  653.  
  654.         GetHostNameForSystem
  655.  
  656.         '' If host was set OK then continue
  657.  
  658.         IF g_host_set% = TRUE% THEN
  659.  
  660.             UIPop 1
  661.  
  662.         ELSE
  663.  
  664.             '' Otherwise clear flag and re-configure
  665.  
  666.             g_host_set% = TRUE%
  667.  
  668.             GOTO STARTCONFIG
  669.  
  670.         ENDIF
  671.  
  672.         ELSE
  673.  
  674.         '' Re-display
  675.  
  676.         GOTO STARTCONFIG
  677.  
  678.         END IF
  679.  
  680.     CASE JSB_INST_WARN$
  681.  
  682.         '' BFX532: Following code commented out as warning dialog is
  683.         '' no longer required
  684.  
  685.         '' Test for warning message
  686.  
  687.         '' jsb_ok% = DisplayJSBWarning%
  688.  
  689.         ''IF jsb_ok% = TRUE% THEN
  690.  
  691.         '' Remove current window and continue with installation
  692.  
  693.         UIPop 1
  694.  
  695.         ''ELSE
  696.  
  697.         '' Re-display
  698.  
  699.         '' GOTO STARTCONFIG
  700.  
  701.         '' END IF
  702.  
  703.         '' ..BFX532
  704.  
  705.     CASE GETCONFIG_WARN$
  706.  
  707.         '' Test for warning message
  708.  
  709.         jsb_ok% = DisplayJSBWarning%
  710.  
  711.         IF jsb_ok% = TRUE% THEN
  712.  
  713.         GetJSBConfiguration
  714.  
  715.         '' If JSB set value is OK then continue with installation
  716.  
  717.         IF g_JSB_set% = TRUE% THEN
  718.  
  719.             '' Remove current window and continue with installation
  720.  
  721.             UIPop 1
  722.  
  723.         ELSE
  724.  
  725.             '' Otherwise clear flag and re-configure
  726.  
  727.             g_JSB_set% = TRUE%
  728.  
  729.             GOTO STARTCONFIG
  730.  
  731.         ENDIF
  732.  
  733.         ELSE
  734.  
  735.         '' Re-display
  736.  
  737.         GOTO STARTCONFIG
  738.  
  739.         END IF
  740.  
  741.     CASE JSB_CONFIG_ADD$
  742.  
  743.         GetJSBConfiguration
  744.  
  745.         '' If JSB set value is OK then continue with installation
  746.  
  747.         IF g_JSB_set% = TRUE% THEN
  748.  
  749.         '' Remove current window and continue with installation
  750.  
  751.         UIPop 1
  752.  
  753.         ELSE
  754.  
  755.         '' Otherwise clear flag and re-configure
  756.  
  757.         g_JSB_set% = TRUE%
  758.  
  759.         GOTO STARTCONFIG
  760.  
  761.         ENDIF
  762.  
  763.     CASE HOST_NAME_ADD$
  764.  
  765.         GetHostNameForSystem
  766.  
  767.         '' If host was set OK then continue
  768.  
  769.         IF g_host_set% = TRUE% THEN
  770.  
  771.         UIPop 1
  772.  
  773.         ELSE
  774.  
  775.         '' Otherwise clear flag and re-configure
  776.  
  777.         g_host_set% = TRUE%
  778.  
  779.         GOTO STARTCONFIG
  780.  
  781.         ENDIF
  782.  
  783.     CASE DESKTOP$
  784.  
  785.         '' Call desktop configuration function
  786.  
  787.         GetDesktopConfigurationOptions
  788.  
  789.         '' Return to the main dialog
  790.  
  791.         GOTO STARTCONFIG
  792.  
  793.     CASE X_OPTION$
  794.  
  795.         '' Call X configuration function
  796.  
  797.         GetXConfigurationOptions
  798.  
  799.         '' Return to the main dialog
  800.  
  801.         GOTO STARTCONFIG
  802.  
  803.     CASE NET_OPTION$
  804.  
  805.         '' Call Network configuration function
  806.  
  807.         GetNetworkConfigurationOptions
  808.  
  809.         '' Return to the main dialog
  810.  
  811.         GOTO STARTCONFIG
  812.  
  813.     CASE ELSE
  814.  
  815.         '' Exit as an error - should never happen
  816.  
  817.         g_exit_flag% = EXIT_ERROR%
  818.  
  819.         '' Call exit procedure - this will exit regardless
  820.  
  821.         ExitDialog
  822.  
  823.     END SELECT
  824.  
  825. END SUB
  826.  
  827. '' End of function : GetSystemConfiguration
  828.  
  829. ''***************************************************************************
  830. ''                  Function : PerformInstallation
  831. ''***************************************************************************
  832.  
  833. SUB PerformInstallation STATIC
  834.  
  835.     '' Set global to actual install
  836.  
  837.     actual_install% = TRUE%
  838.  
  839.     '' Build copy list
  840.  
  841.     ClearCopyList
  842.     AddApplicationFiles
  843.     AddDesktopFiles
  844.     AddNetworkFiles
  845.     AddXFiles
  846.  
  847.     '' Add billboards if this is first installation
  848.  
  849.     ClearBillboardList
  850.  
  851.     '' See if x application files are going on 
  852.  
  853.     x_add$ = GetSymbolValue("X_Addition")
  854.  
  855.     IF g_first_inst = TRUE% OR x_add$ = "Yes" THEN
  856.  
  857.     FOR i_loop% = 1 TO NUM_BOARDS STEP 1
  858.  
  859.         AddToBillBoardList CUIDLL$, BILLBOARD1, "FModelessDlgProc", 1
  860.  
  861.     NEXT i_loop%
  862.  
  863.     END IF
  864.  
  865.     '' Set the position of the copy gauge away from dead centre
  866.  
  867.     width% =  GetScreenWidth()
  868.     height% = GetScreenHeight()
  869.  
  870.     '' Get new position for dialog - note 190 & 90 lifted from GAUGE.DLG and
  871.     '' this will need changing if necessary
  872.  
  873.     new_pos_x% = ReturnDialogPixels( DIALOG_WIDTH,  190, width% )
  874.     new_pos_y% = ReturnDialogPixels( DIALOG_HEIGHT, 90,  height% )
  875.  
  876.     SetCopyGaugePosition new_pos_x%, new_pos_y%
  877.  
  878.     CopyFilesInCopyList
  879.  
  880.     '' Now do a hard copy to overwrite the .LST file with the one needed
  881.     '' for hard disk operations if a first installation
  882.  
  883.     x_add$ = GetSymbolValue("X_Addition")
  884.  
  885.     IF ( (g_first_inst% = TRUE%) OR (x_add$ = "Yes") ) THEN
  886.  
  887.     CopyFile MakePath(g_setup_dir$,"SETUP.NEW"), MakePath(g_setup_dir$,"SETUP.LST"), cmoOverwrite, 0
  888.  
  889.     END IF
  890.  
  891.     '' Copy required translation DLL to translat.dll - BFX184
  892.  
  893.     translat_dll$ = GetSymbolValue ( LANGUAGE$ )
  894.  
  895.     IF DoesFileExist ( MakePath(g_language_dir$, translat_dll$), femRead ) = 1 THEN
  896.  
  897.         CopyFile MakePath(g_language_dir$, translat_dll$), MakePath(g_path_name$,"TRANSLAT.DLL"), cmoOverwrite, 0
  898.  
  899.     ENDIF
  900.  
  901.     '' Check symbol if 'C' wants to force autoupdate
  902.  
  903.     test_auto$ = GetSymbolValue("ForceAutoCheck")
  904.  
  905.     '' If an update to files is required, get values
  906.  
  907.     IF ( (g_first_inst% = TRUE%) OR (g_add_auto% = TRUE%) OR (test_auto$ = "Yes") ) THEN
  908.     
  909.     '' BFX532: Only ask for autoexec updating if not upgrading
  910.         
  911.         IF ( GetSymbolValue ( INST_METHOD$ ) = "2" ) THEN
  912.         
  913.         ELSE
  914.     
  915.             '' Get level of autoexec updating required
  916.     
  917.             TestAutoExec
  918.         
  919.         ENDIF
  920.         
  921.         '' ...bfx532                    
  922.  
  923.     END IF
  924.  
  925.     '' Update .INI files for latest values
  926.  
  927.     UpdateAllFiles(HwndFrame())
  928.  
  929.  
  930.     '' Get terminal type here if this is a first installation
  931.  
  932.     '' BFX530 handle errros when updating files 
  933.  
  934.     F_Error$ = "No"
  935.  
  936.     F_Error$ = GetSymbolValue("File_Error")
  937.  
  938.     IF F_Error$ = "Yes" THEN
  939.         
  940.         g_exit_flag% = EXIT_ERROR%
  941.  
  942.         '' Call exit procedure - this will exit regardless
  943.  
  944.         ExitDialog
  945.      
  946.     END IF
  947.  
  948.     '' Get terminal type here if this is a first installation
  949.  
  950.     IF ( GetSymbolValue ( INST_METHOD$ ) <> "2" ) AND ( g_first_inst% = TRUE% ) THEN
  951.  
  952.        GetTermLogin
  953.  
  954.     ENDIF
  955.     
  956.     '' Clear remaining values
  957.  
  958.     RemoveSymbol("DesktopNames")
  959.     RemoveSymbol("DesktopOptions")
  960.     RemoveSymbol("NetworkOptions")
  961.     RemoveSymbol("XNames")
  962.  
  963.     '' If this is first installation then add serial number to desktop
  964.  
  965.     IF (g_first_inst% = TRUE%) THEN
  966.  
  967.     burn_ok% = burn(MakePath(g_path_name$,"MVIEW.EXE"), TRUE%, FALSE%, "NULL", 2)
  968.  
  969.     burn_ok% = burn(MakePath(g_path_name$,"MXFER.EXE"), TRUE%, FALSE%, "NULL", 1)
  970.  
  971.     ELSE
  972.  
  973.     burn_ok% = TRUE
  974.  
  975.     ENDIF
  976.  
  977.     '' See if burn OK
  978.  
  979.     IF burn_ok% THEN
  980.  
  981.     '' Do nothing
  982.  
  983.     ELSE
  984.  
  985.     '' Inform user
  986.  
  987.     SerialisationFailed
  988.  
  989.     '' Flag error
  990.  
  991.     g_exit_flag% = EXIT_ERROR%
  992.  
  993.     '' Call exit procedure - this will exit regardless
  994.  
  995.     ExitDialog
  996.  
  997.     END IF
  998.  
  999. END SUB
  1000.  
  1001. '' End of function : PerformInstallation
  1002.  
  1003. ''***************************************************************************
  1004. ''                  Function : ProgmanGroupOption
  1005. ''***************************************************************************
  1006.  
  1007. SUB ProgmanGroupOption STATIC
  1008.  
  1009. STARTPROGMAN:
  1010.  
  1011.     '' Offer new or add to existing group - needs help function
  1012.  
  1013.     dialog_return$ = UIStartDlg(CUIDLL$, PROGMANGROUP, "ProgmanOption",APPHELP, HELP_PROC$)
  1014.  
  1015.     SELECT CASE dialog_return$
  1016.  
  1017.     CASE REACTIVATE$
  1018.  
  1019.         '' Simply redisplay dialog
  1020.  
  1021.         GOTO STARTPROGMAN
  1022.  
  1023.     CASE ELSE
  1024.  
  1025.         '' Assume continue has been selected - remove dialog and
  1026.         '' add group
  1027.  
  1028.         UIPop 1
  1029.  
  1030.         AddNewProgmanDetails
  1031.  
  1032.     END SELECT
  1033.  
  1034. END SUB
  1035.  
  1036. '' End of function : ProgmanGroupOption
  1037.  
  1038. ''***************************************************************************
  1039. ''                  Function : HostAddressFunction
  1040. ''***************************************************************************
  1041.  
  1042. SUB HostAddressFunction STATIC
  1043.  
  1044. STARTHOSTADDRESS:
  1045.  
  1046.     '' Offer new or add to existing group - needs help function
  1047.  
  1048.     dialog_return$ = UIStartDlg(CUIDLL$, HOSTADDRESS, "GetHostAddress",0, "")
  1049.  
  1050.     SELECT CASE dialog_return$
  1051.  
  1052.     CASE REACTIVATE$
  1053.  
  1054.         '' Simply redisplay dialog
  1055.  
  1056.         GOTO STARTHOSTADDRESS
  1057.  
  1058.     CASE ELSE
  1059.  
  1060.         '' Assume continue has been selected - remove dialog
  1061.  
  1062.         UIPop 1
  1063.  
  1064.     END SELECT
  1065.  
  1066. END SUB
  1067.  
  1068. '' End of function : HostAddressFunction
  1069.  
  1070. ''***************************************************************************
  1071. ''                  Function : ExitDialog
  1072. ''***************************************************************************
  1073.  
  1074. SUB ExitDialog STATIC
  1075.  
  1076.     SELECT CASE g_exit_flag%
  1077.  
  1078.     CASE EXIT_INCOMPLETE%
  1079.  
  1080. STARTQUERY:
  1081.         '' Display query exit
  1082.  
  1083.         dialog_return$ = UIStartDlg(CUIDLL$, ASKQUIT, "ExitQuery", 0, "")
  1084.  
  1085.         SELECT CASE dialog_return$
  1086.  
  1087.         CASE REACTIVATE$
  1088.  
  1089.             '' Simply redisplay dialog
  1090.  
  1091.             GOTO STARTQUERY
  1092.  
  1093.         CASE EXIT_VAL$
  1094.  
  1095.             '' Clear dialog
  1096.  
  1097.             UIPop 1
  1098.  
  1099.             '' Call exit procedure and don't change exit flag
  1100.  
  1101.             ExitDialogAction
  1102.  
  1103.         CASE ELSE
  1104.  
  1105.             '' Reset exit flag to OK
  1106.  
  1107.             g_exit_flag% = EXIT_OK%
  1108.  
  1109.             '' Clear dialog
  1110.  
  1111.             UIPop 1
  1112.  
  1113.         END SELECT '' For dialog returns
  1114.  
  1115.     CASE ELSE
  1116.  
  1117.         '' Call Dialog to perform exit action as this is where an error
  1118.         '' or full installation has occurred
  1119.  
  1120.         ExitDialogAction
  1121.  
  1122.     END SELECT
  1123.  
  1124. END SUB
  1125.  
  1126. '' End of function : ExitDialog
  1127.  
  1128. ''***************************************************************************
  1129. ''                  Function : ExitDialogAction
  1130. ''***************************************************************************
  1131.  
  1132. SUB ExitDialogAction STATIC
  1133.  
  1134.     '' Reset cursor if necessary
  1135.  
  1136.     IF g_wait_cursor% <> -1 THEN
  1137.  
  1138.     RestoreCursor g_wait_cursor%
  1139.     g_wait_cursor% = -1
  1140.  
  1141.     END IF
  1142.  
  1143.     '' An exit has been requested - clear any dialogs
  1144.  
  1145.     UIPopAll
  1146.  
  1147.     '' This checks local copies of unlisted drivers. Added here at CUT I
  1148.     '' to avoid leaving the files behind if an error exit occurs during
  1149.     '' installation. If files don't exist then this call will have no
  1150.     '' effect.
  1151.  
  1152.     DeleteUnlistedDrivers(HwndFrame())
  1153.  
  1154.     '' Switch on the setting of the global error flag
  1155.  
  1156.     SELECT CASE g_exit_flag%
  1157.  
  1158.     CASE EXIT_OK%
  1159.  
  1160.         force$ = GetSymbolValue ("ForceAuto")
  1161.  
  1162.         IF ( (g_add_auto% = TRUE%) OR (force$ = "Yes")) THEN
  1163.  
  1164.         '' All installation and configuration OK - autoexec changed
  1165.  
  1166.         SetSymbolValue "ExitSymbol" , "1"
  1167.  
  1168.         ELSE
  1169.  
  1170.         '' All installation and configuration OK
  1171.  
  1172.         SetSymbolValue "ExitSymbol" , "2"
  1173.  
  1174.         END IF
  1175.  
  1176.     CASE EXIT_INCOMPLETE%
  1177.  
  1178.         '' Installation was not completed
  1179.  
  1180.         SetSymbolValue "ExitSymbol" , "3"
  1181.  
  1182.         '' Update any files
  1183.  
  1184.         TestRestoreFiles        
  1185.  
  1186.     CASE EXIT_ERROR%
  1187.  
  1188.         '' Display error message
  1189.  
  1190.         SetSymbolValue "ExitSymbol" , "4"
  1191.  
  1192.         '' Update any files 
  1193.  
  1194.         TestRestoreFiles        
  1195.  
  1196.     CASE EXIT_WINDOWS%
  1197.  
  1198.         '' Display error message
  1199.  
  1200.         SetSymbolValue "ExitSymbol" , "6"
  1201.  
  1202.     CASE ELSE
  1203.  
  1204.         '' Exit flag has been corrupted - treat as special case
  1205.         '' of error exit
  1206.  
  1207.         SetSymbolValue "ExitSymbol" , "5"
  1208.  
  1209.         '' Update any files 
  1210.  
  1211.         TestRestoreFiles        
  1212.         
  1213.     END SELECT
  1214.  
  1215.     '' Display dialog
  1216.  
  1217. STARTEXITMESSAGE:
  1218.  
  1219.     '' Call exit message
  1220.  
  1221.     '' BFX490 Tonyr : Execute the readme.txt file after a succesfull exit 
  1222.     
  1223.     '' BFX532: Added code to give user option to display readme.txt
  1224.     ''         if a successful installation
  1225.  
  1226.     IF ( g_exit_flag% = EXIT_OK%) AND ( g_first_inst% = TRUE%) THEN
  1227.  
  1228.     dialog_return$ = UIStartDlg(CUIDLL$, EXIT_AND_README, "ExitMessage",0, "")
  1229.     
  1230.     ELSE
  1231.  
  1232.     dialog_return$ = UIStartDlg(CUIDLL$, EXITQUIT, "ExitMessage",0, "")
  1233.  
  1234.     END IF
  1235.  
  1236.     SELECT CASE dialog_return$
  1237.  
  1238.     CASE REACTIVATE$
  1239.  
  1240.         '' Simply redisplay dialog
  1241.  
  1242.         GOTO STARTEXITMESSAGE
  1243.  
  1244.     CASE EXIT_VAL$
  1245.  
  1246.         '' Remove dialog
  1247.  
  1248.         UIPop 1
  1249.  
  1250.     CASE ELSE
  1251.  
  1252.         '' Remove dialog
  1253.  
  1254.         UIPop 1
  1255.  
  1256.         IF ( g_exit_flag% = EXIT_OK%) AND ( g_first_inst% = TRUE%) THEN
  1257.  
  1258.             '' Display readme file
  1259.  
  1260.             ExecReadmeFile(MakePath(g_path_name$,"README.TXT"))
  1261.  
  1262.             '' BFX572 Load X readme as well if X version found.
  1263.  
  1264.             IF g_X_in_inf_file% = TRUE% THEN
  1265.  
  1266.                 ExecReadmeFile(MakePath(g_path_name$,"README_X.TXT"))
  1267.  
  1268.             END IF
  1269.  
  1270.         ENDIF
  1271.  
  1272.     END SELECT
  1273.  
  1274.     '' Setup script finished - note this is the only standard exit
  1275.  
  1276.     END
  1277.  
  1278. END SUB
  1279.  
  1280. '' End of function : ExitDialogAction
  1281.  
  1282. ''***************************************************************************
  1283. ''                  Function : TestFirstInstallation
  1284. ''***************************************************************************
  1285.  
  1286. FUNCTION TestFirstInstallation% STATIC
  1287.  
  1288.     '' Check value of symbol set up from DLL
  1289.  
  1290.     first$ = GetSymbolValue(FIRST_INST$)
  1291.  
  1292.     '' Set flag to true or false
  1293.  
  1294.     IF first$ = "Yes" THEN
  1295.  
  1296.     TestFirstInstallation% = TRUE%
  1297.  
  1298.     '' Store source string
  1299.  
  1300.     CreateIniKeyValue MakePath(g_win_dir$, "mview.ini"),"Install Path","Source",g_src_inf$, cmoOverwrite
  1301.  
  1302.     ELSE
  1303.  
  1304.     TestFirstInstallation% = FALSE%
  1305.  
  1306.     '' Update source string with stored value
  1307.  
  1308.     g_src_inf$ = GetIniKeyString(MakePath(g_win_dir$, "mview.ini"),"Install Path","Source")
  1309.  
  1310.     END IF
  1311.  
  1312. END FUNCTION
  1313.  
  1314. '' End of function : TestFirstInstallation
  1315.  
  1316. ''***************************************************************************
  1317. ''                  Function : DisplayTCPWarning
  1318. ''***************************************************************************
  1319.  
  1320. FUNCTION DisplayTCPWarning% STATIC
  1321.  
  1322. STARTWARN:
  1323.  
  1324.     dialog_return$ = UIStartDlg(CUIDLL$, TCPWARNING, "TCPWarning",0, "")
  1325.  
  1326.     SELECT CASE dialog_return$
  1327.  
  1328.     CASE REACTIVATE$
  1329.  
  1330.         '' Simply redisplay dialog
  1331.  
  1332.         GOTO STARTWARN
  1333.  
  1334.     CASE EXIT_VAL$
  1335.  
  1336.         '' Set return to FALSE
  1337.  
  1338.         DisplayTCPWarning% = FALSE%
  1339.  
  1340.         '' Remove dialog and continue
  1341.  
  1342.         UIPop 1
  1343.  
  1344.     CASE ELSE
  1345.  
  1346.         '' Set return to TRUE - assuming continue
  1347.  
  1348.         DisplayTCPWarning% = TRUE%
  1349.  
  1350.         '' Remove dialog and continue
  1351.  
  1352.         UIPop 1
  1353.  
  1354.     END SELECT
  1355.  
  1356. END FUNCTION
  1357.  
  1358. '' End of function : DisplayTCPWarning
  1359.  
  1360. ''***************************************************************************
  1361. ''                  Function : DisplayJSBWarning
  1362. ''***************************************************************************
  1363.  
  1364. FUNCTION DisplayJSBWarning% STATIC
  1365.  
  1366. STARTJSBWARN:
  1367.  
  1368.     dialog_return$ = UIStartDlg(CUIDLL$, JSBWARNING, "JSBWarning",0, "")
  1369.  
  1370.     SELECT CASE dialog_return$
  1371.  
  1372.     CASE REACTIVATE$
  1373.  
  1374.         '' Simply redisplay dialog
  1375.  
  1376.         GOTO STARTJSBWARN
  1377.  
  1378.     CASE EXIT_VAL$
  1379.  
  1380.         '' Set return to FALSE
  1381.  
  1382.         DisplayJSBWarning% = FALSE%
  1383.  
  1384.         '' Remove dialog and continue
  1385.  
  1386.         UIPop 1
  1387.  
  1388.     CASE ELSE
  1389.  
  1390.         '' Set return to TRUE - assuming continue
  1391.  
  1392.         DisplayJSBWarning% = TRUE%
  1393.  
  1394.         '' Remove dialog and continue
  1395.  
  1396.         UIPop 1
  1397.  
  1398.     END SELECT
  1399.  
  1400. END FUNCTION
  1401.  
  1402. '' End of function : DisplayJSBWarning
  1403.  
  1404. ''***************************************************************************
  1405. ''                  Function : TestAutoExec
  1406. ''***************************************************************************
  1407.  
  1408. SUB TestAutoExec STATIC
  1409.  
  1410.     '' Get type of autoexec update required - done in 'C' section
  1411.  
  1412. STARTAUTO:
  1413.  
  1414.     dialog_return$ = UIStartDlg(CUIDLL$, AUTOEXEC, "AutoexecCheck",0, "")
  1415.  
  1416.     SELECT CASE dialog_return$
  1417.  
  1418.     CASE REACTIVATE$
  1419.  
  1420.         '' Simply redisplay dialog
  1421.  
  1422.         GOTO STARTAUTO
  1423.  
  1424.     CASE ELSE
  1425.  
  1426.         '' Remove dialog and continue
  1427.  
  1428.         UIPop 1
  1429.  
  1430.     END SELECT
  1431.  
  1432. END SUB
  1433.  
  1434. ''End of function : TestAutoExec
  1435.  
  1436. ''***************************************************************************
  1437. ''                  Function : TestRestoreFiles
  1438. ''***************************************************************************
  1439.  
  1440. SUB TestRestoreFiles STATIC
  1441.  
  1442.     '' If this is first installation or an X addition to an existing setup
  1443.     '' tidy up the .ini files
  1444.  
  1445.     '' See if x application files are going on
  1446.  
  1447.     x_add$ = GetSymbolValue("X_Addition")
  1448.  
  1449.     if ( (g_first_inst% = TRUE%) OR (x_add$ = "Yes") ) THEN
  1450.  
  1451.     '' Remove MVIEW.ini file
  1452.  
  1453.     RemoveFile g_win_dir$ + "MVIEW.INI", cmoForce
  1454.  
  1455.     '' Rename .BAK file
  1456.  
  1457.     IF (DoesFileExist(GetWindowsDir() + "MVIEW.BAK", femExists) ) THEN
  1458.  
  1459.         RenameFile g_win_dir$ + "MVIEW.BAK", "MVIEW.INI"
  1460.  
  1461.     ENDIF
  1462.  
  1463.     '' Remove BUTTONS.ini file
  1464.  
  1465.     RemoveFile g_win_dir$ + "BUTTONS.INI", cmoForce
  1466.  
  1467.     '' Rename .BAK file
  1468.  
  1469.     IF (DoesFileExist(GetWindowsDir() + "BUTTONS.BAK", femExists) ) THEN
  1470.  
  1471.         RenameFile g_win_dir$ + "BUTTONS.BAK", "BUTTONS.INI"
  1472.  
  1473.     ENDIF
  1474.  
  1475.     ENDIF
  1476.  
  1477. END SUB
  1478.  
  1479. '' End of function : TestRestoreFiles
  1480.  
  1481. ''***************************************************************************
  1482. ''                  Function : QUIT
  1483. ''***************************************************************************
  1484.  
  1485. QUIT:
  1486.  
  1487.     '' Set global error flag
  1488.  
  1489.     g_exit_flag% = EXIT_ERROR%
  1490.  
  1491.     '' Call standard error dialog - this token is used to allow use of
  1492.     '' ON ERROR GOTO command
  1493.  
  1494.     ExitDialog
  1495.  
  1496. END
  1497.  
  1498. ''End of function : QUIT
  1499.