home *** CD-ROM | disk | FTP | other *** search
/ Oceans Below (Bundled Version) / OCEANS_MPC.bin / oceans.rul < prev    next >
Text File  |  1993-08-26  |  13KB  |  411 lines

  1. //
  2. //      OCEANS BELOW v1.0  Installation Script
  3. //      by Terry R. Schussler
  4. //      (c) 1993 by gray matter design.  All rights reserved.
  5. //      This code licensed to Amazing Media, Inc. for internal use.
  6. //
  7. //
  8. //      Notes: Requires ~235K of hard disk space to install
  9. //
  10.  
  11.  
  12.     /*--------------------------------------------------------*/
  13.     /*                  Constant Declarations                 */
  14.     /*--------------------------------------------------------*/
  15. #define STD_MAX_SIZE         200
  16.  
  17. #define TOTAL_FILE_SIZE      400000
  18. #define ALT_FILE_SIZE         50000
  19. #define BASE_FILE_SIZE       125000
  20.  
  21.     /*--------------------------------------------------------*/
  22.     /*                  Variable Declarations                 */
  23.     /*--------------------------------------------------------*/
  24. declare
  25.  
  26.     string  szText[ STD_MAX_SIZE ], szDefPath[ STD_MAX_SIZE ];
  27.     string  szResultPath[ STD_MAX_SIZE ];
  28.     string  szDisk[ 50 ];
  29.     string  szBitmapPath[ STD_MAX_SIZE ];
  30.     string  szErrMsg [ STD_MAX_SIZE ];
  31.     string  szErrFile [ STD_MAX_SIZE ];
  32.     string  szREADME [ STD_MAX_SIZE ];
  33.     string  szDir[ STD_MAX_SIZE ];
  34.     string  szQTWPath[ STD_MAX_SIZE ];
  35.     string  szPath[ STD_MAX_SIZE ];
  36.     string  szIconPath[ STD_MAX_SIZE ];
  37.     string  szBMPPath[ STD_MAX_SIZE ];
  38.     string  szProgramPath[ STD_MAX_SIZE ];
  39.     string  szDrive[ STD_MAX_SIZE ];
  40.     string  szText2[ STD_MAX_SIZE ];
  41.  
  42.  
  43.     number  nSpaceRequired;
  44.     number  fileHandle;
  45.     number  nNumber;
  46.  
  47. program /* Must use program keyword to start the statements */
  48.  
  49.  
  50. Start:
  51.        Enable( DEFWINDOWMODE );
  52.        Handler( EXIT, HandleExit );
  53.  
  54.        // Set the color of the back to be WHITE
  55.        SetColor( BACKGROUND, RGB(255,255,255) );
  56.  
  57.        SetColor( STATUSBAR, RGB(255,0,0) );
  58.        SetFont( FONT_TITLE, STYLE_BOLD, "Helv" );
  59.  
  60.        SetTitle( "OCEANS BELOW INSTALLER", 45, BACKGROUNDCAPTION );
  61.        SetStatusWindow( 0, "Beginning installation process..." );
  62.  
  63.        // Enable various objects.
  64.        Enable( BITMAPFADE );    // All bitmaps will fade into the screen.
  65.        Disable( FEEDBACK_FULL );  // Feedback window disabled
  66. //       Enable( FEEDBACK_OPERATION );  // Feedback window enabled
  67.        Disable( HELP );         // Help Button
  68.        Disable( EXIT );          // Exit Button
  69.        Disable( PAUSE );        // Pause Button
  70.        Enable( STATUS );        // Status, % Complete Bar Window
  71.        Enable( TEXT );          // Info Windows
  72.        Enable( BACKGROUND );    // Display background and all windows
  73.  
  74.        SizeWindow( INFO, 460, 150 );
  75.        PlaceWindow( INFO, 60, 10, LOWER_RIGHT );
  76.  
  77.        // In Info Window to display the shuttle.lis information
  78.        SetInfoWindow( "Information", "OCEANS.LIS" );
  79.  
  80.        // Determine target location for files
  81.        GetDisk( TARGETDIR, szDisk );
  82.        StrCopy( szDefPath, szDisk );
  83.        StrConcat( szDefPath, "\\" );
  84.  
  85.        nSpaceRequired = TOTAL_FILE_SIZE;
  86.  
  87. DrawBitmaps:
  88. // Place OCEANS logo in the top center
  89. //      StrCopy( szBMPPath, SRCDIR );
  90. //      AppendToPath( szBMPPath, "OCEANS.BMP" );
  91. //      PlaceBitmap( szBMPPath, 101, 210, 3, UPPER_LEFT );
  92.  
  93.     Disable( BITMAPFADE );  // Bitmaps will now be drawn and not faded in
  94.  
  95.  
  96. TargetLoc:
  97.        SetStatusWindow( 0, "Installing OCEANS BELOW..." );
  98.  
  99. BeginInstall:
  100.  
  101.        // Check to see if enough space is free on the destination.
  102.        // GetDiskSpace returns free space in LAST_RESULT.
  103.        GetDiskSpace( szDisk );
  104.        if LAST_RESULT > nSpaceRequired goto EnoughSpace;
  105.  
  106.        StrCopy( szText, "Not enough space on ");
  107.        StrConcat( szText, szDisk );
  108.        StrConcat( szText, " - Aborting installation.");
  109.        MessageBox( szText, WARNING );
  110.     StrCopy( TARGETDIR, SRCDIR );
  111.     DeleteFile( "sync.fil" );
  112.  
  113.     exit;
  114.  
  115. EnoughSpace:
  116.  
  117. DirExists:
  118.        SetStatusWindow( 0, "Continuing installation..." );
  119.        StrCopy( TARGETDIR, szResultPath );
  120.  
  121.        // Check to see if INSTALL.INS exists on the CD
  122.        // If it does, then it must the right disk.
  123.  
  124.        StrCopy( szText, SRCDIR );
  125.        AppendToPath( szText, "INSTALL.INS" );
  126.        GetFileInfo( szText, FILE_DATE, nNumber, szText2 );
  127.        if LAST_RESULT != FALSE then
  128.  
  129.        // Ask user to enter a disk in drive.
  130.  
  131.      StrCopy( szText, "Please insert OCEANS BELOW CD...");
  132.      SetDialogTitle( DLG_ENTER_DISK, "CD Disk Request" );
  133.      EnterDisk( szText, "install.ins");
  134.  
  135.      if LAST_RESULT != TRUE then
  136.         call ConfirmCancel;  // Call to confirm cancel
  137.         goto DirExists;      // returned, therefore continue
  138.      endif;
  139.        endif;
  140.  
  141.        call FileTransfer;
  142.  
  143. endInstall:
  144.  
  145.        StrCopy( szText, "OCEANS BELOW has just been\nsuccessfully installed.\nPlease reboot your computer before\nrunning OCEANS BELOW.");
  146.        MessageBeep( 0 );
  147.        SetDialogTitle( DLG_MSG_INFORMATION, "Successful Installation" );
  148.        MessageBox( szText, INFORMATION ); // Get the user to acknowledge success
  149.  
  150.        StrCopy( TARGETDIR, SRCDIR );
  151.        DeleteFile( "sync.fil" );
  152.        
  153.        AskYesNo( "Would you like to view\nthe Read Me file for\nOCEANS BELOW?", TRUE );
  154.        if LAST_RESULT = YES then
  155.       StrCopy( szREADME, szResultPath );
  156.       AppendToPath( szREADME,"OCEANS.TXT");
  157.       LaunchApp("notepad.exe", szREADME );
  158.        else
  159. // Show the Program Manager and the Program Group we created
  160.       AppCommand( PROGMAN, CMD_MAXIMIZE );
  161.       ShowGroup( "OCEANS", 1 );
  162.        endif;
  163.  
  164.        exit;  //Exit installation program.
  165.  
  166. //-----------------------------------------------------------------------------
  167. //
  168. //      Name:       FileTransfer
  169. //
  170. //      Descrip:    This procedure will handle the file transfer for this
  171. //                  installation.
  172. //
  173. //      Params:
  174. //
  175. //-----------------------------------------------------------------------------
  176. FileTransfer:
  177.  
  178.        StrCopy( TARGETDIR, szDefPath );
  179.  
  180.        StatusUpdate( ON, 3);
  181.        SetStatusWindow( 3, "Copying file ... OCEANS.ICO" );
  182.        CopyFile( "OCEANS.ICO", "OCEANS.ICO" );
  183.        if LAST_RESULT < 0 then
  184.       StrCopy( szErrFile, "OCEANS.ICO" );
  185.       call CopyError;
  186.        endif;
  187.  
  188. // Put this into the Windows directory //
  189.        StrCopy( TARGETDIR, WINDIR);
  190.        StatusUpdate( ON, 3);
  191.        SetStatusWindow( 3, "Copying file ... OCEANS.INI" );
  192.        CopyFile( "OCEANS.INI", "OCEANS.INI" );
  193.        if LAST_RESULT < 0 then
  194.       StrCopy( szErrFile, "OCEANS.INI" );
  195.       call CopyError;
  196.        endif;
  197.  
  198.        StatusUpdate( ON, 5);
  199.        SetStatusWindow( 3, "Copying file ... OCEANS.TXT" );
  200.        CopyFile( "OCEANS.TXT", "OCEANS.TXT" );
  201.        if LAST_RESULT < 0 then
  202.       StrCopy( szErrFile, "OCEANS.TXT" );
  203.       call CopyError;
  204.        endif;
  205.  
  206. //////////////////////////////////////////////////////////////////
  207. //
  208. //      Install QTW
  209. //
  210. //      Ask the user if we can install the required QTW files.
  211. //      If he is agreeable install it
  212. //----------------------------------------------------------------
  213.       
  214. // BeginQTWInstall:
  215.  
  216.   StrCopy(szText, "Oceans Below requires QuickTime to run properly.  Click YES to install QuickTime and add its path to your AUTOEXEC.BAT file.");
  217.     
  218. //      GetDisk(szResultPath, szDisk);
  219. //      StrCopy(szPath, szDisk);
  220. //      AppendToPath(szPath, "QTW");
  221.  
  222.   AskYesNo(szText, YES);
  223.     if LAST_RESULT = YES then
  224.       call CopyQuickTime;
  225.     else
  226.       StrCopy(szText, "Warning: You will need QuickTime installed\nto properly run OCEANS BELOW.");
  227.       MessageBeep( 0 );
  228.       SetDialogTitle( DLG_MSG_WARNING, "QuickTime Reminder!" );
  229.       MessageBox( szText, WARNING );
  230.     endif;
  231.  
  232. // finishInstall:
  233.  
  234. // This creates a Windows Program Group for OCEANS
  235.        CreateProgGroup( "OCEANS" );
  236.        StrCopy( szProgramPath, SRCDIR );
  237.        AppendToPath( szProgramPath, "OCEANS.EXE" );
  238.        StrCopy( szIconPath, szDefPath );
  239.        AppendToPath( szIconPath, "OCEANS.ICO" );
  240.        AddProgItem( "OCEANS", "OCEANS", szProgramPath, szIconPath);
  241.        StrCopy( TARGETDIR, szDefPath );
  242.        DeleteFile( "OCEANS.ICO" );
  243.        StrCopy( szProgramPath, WINDIR );
  244.        AppendToPath( szProgramPath, "OCEANS.TXT" );
  245.        AddProgItem( "OCEANS", "OCEANS Read Me", szProgramPath, "");
  246.  
  247. // Installation is done
  248.        Disable( STATUS );
  249.  
  250. return;
  251.  
  252. //----------------------------------------------------------------
  253.  
  254. CopyQuickTime:
  255.  
  256.        StatusUpdate( ON, 8);
  257.      SetStatusWindow( 7, "Continuing installation..." );
  258.  
  259. //   QuickTime for Windows needs to be installed
  260.  
  261.       StrCopy(szQTWPath, szDefPath);
  262.       AppendToPath(szQTWPath, "QTW");
  263.  
  264. // Check to see if Directory Exists
  265.  
  266.     ExistsDir(szQTWPath);
  267.     if LAST_RESULT = EXISTS goto QTWDirExists;
  268.     CreateDir(szQTWPath);
  269.     if LAST_RESULT = EXISTS goto QTWDirExists;
  270.     StrCopy( szText, "Cannot create QuickTime directory. ");
  271.     StrConcat( szText, " - Aborting installation.");
  272.     MessageBox( szText, WARNING );
  273.     StrCopy( TARGETDIR, SRCDIR );
  274.     DeleteFile( "sync.fil" );
  275.  
  276.     exit;
  277.  
  278. QTWDirExists:
  279.  
  280.        // Check to see if QTIM.DLL exists in the QuickTime
  281.        // directory. If it doesn't, then install QuickTime.
  282.  
  283.        StrCopy( szText, szQTWPath );
  284.        AppendToPath( szText, "QTIM.DLL" );
  285.        GetFileInfo( szText, FILE_DATE, nNumber, szText2 );
  286.        if LAST_RESULT != FALSE then
  287.  
  288.        // Copy the files to szQTWPath
  289.  
  290.      StrCopy(TARGETDIR, szQTWPath);
  291.  
  292.      StatusUpdate( ON, 96);
  293.      SetStatusWindow( 9, "Decompressing QuickTime files ... QTIME.LI$" );
  294.      DeCompress( "QTIME.LI$", "" );
  295.      if LAST_RESULT < 0 then
  296.         StrCopy( szErrFile, "QTIME.LI$" );
  297.         call CopyError;
  298.      endif;
  299.        else
  300.      StrCopy( szText, "QuickTime is already installed in\nthe \\QTW directory, so I will not\n install QuickTime.");
  301.      MessageBeep( 0 );
  302.      SetDialogTitle( DLG_MSG_WARNING, "QuickTime Installation Warning!" );
  303.      MessageBox( szText, WARNING );
  304.        endif;
  305.  
  306.        StrCopy(TARGETDIR, WINDIR);
  307.        StatusUpdate( ON, 100);
  308.     SetStatusWindow( 96, "Copying file ... QTW.INI");
  309.     CopyFile( "QTW.INI", "QTW.INI" );
  310.     if LAST_RESULT < 0 then
  311.         StrCopy(szErrFile, "QTW.INI" );
  312.         call CopyError;
  313.     endif;
  314.  
  315. // Now install things in the user specified directory
  316.        StrCopy( TARGETDIR, szDefPath );
  317.  
  318. // Now back up the user's AUTOEXEC.BAT file to AUTOEXEC.OLD
  319.  
  320.        BatchGetFileName( szText );
  321.        GetDisk( szText, szText2 );
  322.        StrConcat( szText2, "\\AUTOEXEC.OLD" );
  323.        BatchFileLoad( szText );
  324.        BatchFileSave( "AUTOEXEC.OLD" );
  325.        StrCopy( szText, "Your AUTOEXEC.BAT file has been backed\nup to ");
  326.        StrConcat( szText, szText2 );
  327.        StrConcat( szText, " and a new AUTOEXEC.BAT has been created." );
  328.        MessageBeep( 0 );
  329.        SetDialogTitle( DLG_MSG_INFORMATION, "AUTOEXEC.BAT Modification Note" );
  330.        MessageBox( szText, INFORMATION );
  331.  
  332. // Add QuickTime path to the AUTOEXEC.BAT file
  333.     EzBatchAddPath("PATH", szQTWPath, "", BEFORE);
  334.  
  335. //--end of QuickTime installation section
  336.  
  337. return;
  338.  
  339. //-----------------------------------------------------------------------------
  340. //
  341. //      Name:       ConfirmCancel
  342. //
  343. //      Descrip:    This will as the users if they want to terminate the
  344. //                  installation.
  345. //
  346. //      Params:
  347. //
  348. //-----------------------------------------------------------------------------
  349. ConfirmCancel:
  350.  
  351.       AskYesNo( "Are you sure you want to CANCEL installation ?", FALSE );
  352.  
  353.       if LAST_RESULT = FALSE then return;
  354.       endif;
  355.  
  356.       StrCopy( szText, "Installation is aborted.");
  357.       MessageBeep( 0 );
  358.       SetDialogTitle( DLG_MSG_WARNING, "Aborted Installation Warning!" );
  359.       MessageBox( szText, WARNING );
  360.  
  361.       StrCopy( TARGETDIR, SRCDIR );
  362.       DeleteFile( "sync.fil" );
  363.       exit;
  364.  
  365. return;
  366.  
  367. //-----------------------------------------------------------------------------
  368. //
  369. //      Name:       CopyError
  370. //
  371. //      Descrip:    This will be invoked when an error occurs during a
  372. //                  file transfer operation.
  373. //
  374. //      Params:     szErrFile
  375. //
  376. //-----------------------------------------------------------------------------
  377. CopyError:
  378.  
  379.   StrCopy( szErrMsg, "Unable to copy or decompress file: ");
  380.   StrConcat( szErrMsg, szErrFile);
  381.   MessageBeep( 0 );
  382.   SetDialogTitle( DLG_MSG_SEVERE, "Problem Occurred!" );
  383.   MessageBox( szErrMsg, SEVERE );
  384.  
  385. return;
  386.  
  387. //-----------------------------------------------------------------------------
  388. //
  389. //      Name:       HandleExit
  390. //
  391. //      Descrip:    This will be invoked when the exit button is hit.
  392. //
  393. //-----------------------------------------------------------------------------
  394. HandleExit:     // This will handle the exit button
  395.  
  396.     AskYesNo( "Are you sure you want to exit?", FALSE );
  397.     if LAST_RESULT = NO then
  398.        return;
  399.     endif;
  400.  
  401.     StrCopy( szText, "Installation is aborted.");
  402.     MessageBeep( 0 );
  403.     SetDialogTitle( DLG_MSG_WARNING, "Aborted Installation Warning!" );
  404.     MessageBox( szText, WARNING );
  405.  
  406.     StrCopy( TARGETDIR, SRCDIR );
  407.     DeleteFile( "sync.fil" );
  408.  
  409.     exit;
  410.  
  411.