home *** CD-ROM | disk | FTP | other *** search
/ Amiga ISO Collection / AmigaUtilCD1.iso / Disk&HD / EDG-CD62.DMS / in.adf / Install < prev    next >
Encoding:
Text File  |  1995-10-24  |  17.2 KB  |  576 lines

  1. ;********************************************************************
  2. ;Installation script for CrossDOS V6 Professional (no CrossPC)
  3. ;********************************************************************
  4.  
  5. ;$VER: Install 6.02 (6.10.95)
  6.  
  7. ;Bugs in Installer V1.22:
  8.  
  9. ;1. The "run" command does not accept a relative path.
  10. ;2. The tooltype delete feature is case-sensitive.
  11.  
  12. ;mycopylib is used because of installer limitations. It uses the following global
  13. ;strings as input:
  14. ;mysource - source
  15. ;mydest - destination
  16. ;mynewname - new name
  17.  
  18. (procedure mycopylib
  19.     (    (set errorflag 0)
  20.         ;form destination file
  21.         (set destfile (tackon mydest mynewname) )
  22.         (if (= 0 (exists destfile) ) 
  23.             (    (copyfiles (source mysource) (dest mydest) (newname mynewname) )
  24.                 (set errorflag 1)
  25.             )
  26.             (    ;the destfile exists, so we must check the versions
  27.                 (if (exists mysource)
  28.                     (    (set sourcevernum (getversion mysource))
  29.                         (set sourcever (/ sourcevernum 65536))
  30.                         (set sourcerev (- sourcevernum (* sourcever 65536)))
  31.                         (set destvernum (getversion destfile))
  32.                         (set destver (/ destvernum 65536))
  33.                         (set destrev (- destvernum (* destver 65536)))
  34.                         (if (or (or (not ks20) (> sourcever destver) )
  35.                                 (and (= sourcever destver) (>= sourcerev destrev) )
  36.                             )
  37.                             (    (copyfiles (source mysource) (dest mydest) (newname mynewname) )
  38.                                 (set errorflag 1)
  39.                             )
  40.                         )
  41.                     )
  42.                 )
  43.             )
  44.         )
  45.         (if (= errorflag 0)
  46.             ;Handle a version conflict
  47.             (if (= @user-level 2)
  48.                 (if (askbool
  49.                         (prompt ("The version of \"%s" mynewname)
  50.                                  "\" currently on your system appears to be "
  51.                                  "newer than the CrossDOS version. Select \"Skip\" to "
  52.                                  "preserve the version currently on your system, "
  53.                                  "or \"Overwrite\" to install the CrossDOS version "
  54.                                  "regardless."
  55.                         )
  56.                         (choices "Overwrite"
  57.                                  "Skip"
  58.                         )
  59.                         (help "This message should only appear if you are "
  60.                               "running Workbench 2.1 or later. If you are not, "
  61.                               "select Overwrite to copy the CrossDOS file anyway."
  62.                         )
  63.                     )
  64.                     (    (copyfiles (source mysource) (dest mydest) (newname mynewname) )
  65.                         (set errorflag 1)
  66.                     )
  67.                 )
  68.             )
  69.         )
  70.     )
  71. )
  72.  
  73. ;********************** CrossDOS UNinstallation **************************
  74. ;Enter with "deletedirstr" set to the name of the directory to terminate
  75. ;and deletepat with the amigados wildcards.
  76. (procedure deletedir
  77.     (if (= 2 (exists deletedirstr) )
  78.         (    (foreach deletedirstr deletepat
  79.                 (delete (tackon deletedirstr @each-name) )
  80.             )
  81.             (delete (tackon deletedirstr ".info") )
  82.             (delete deletedirstr)
  83.             (delete ("%s.info" deletedirstr) )
  84.         )
  85.     )
  86. )
  87.  
  88. (procedure DeleteOldCD
  89.   (    ;misc
  90.     (delete "sys:wbstartup/mountmf")
  91.     (delete "sys:wbstartup/mountmf.info")
  92.  
  93. ;sys:system
  94.     (delete "sys:system/diskchg")
  95.     (delete "sys:system/diskchk")
  96.     (delete "sys:system/IntlTrans")
  97.     (delete "sys:system/kill")
  98.     (delete "sys:system/mdiskcopy")
  99.     (delete    "sys:system/mformat")
  100.     (delete "sys:system/txfilter")
  101.  
  102.     (delete "sys:system/diskchg.info")
  103.     (delete "sys:system/diskchk.info")
  104.     (delete "sys:system/IntlTrans.info")
  105.     (delete "sys:system/kill.info")
  106.     (delete "sys:system/mdiskcopy.info")
  107.     (delete    "sys:system/mformat.info")
  108.     (delete "sys:system/txfilter.info")
  109.  
  110.     (delete "sys:system/Atari_S9.MFormat.info")
  111.     (delete "sys:system/Atari_D9.MFormat.info")
  112.     (delete "sys:system/MSDOS_D9.MFormat.info")
  113.     (delete "sys:system/MSDOS_S9.MFormat.info")
  114.     (delete "sys:system/MSDOS_QD9.MFormat.info")
  115.     (delete "sys:system/MSDOS_Q18.MFormat.info")
  116.  
  117.     (delete "sys:system/DiskChg.di0.info")
  118.     (delete "sys:system/DiskChg.di1.info")
  119.     (delete "sys:system/DiskChg.di2.info")
  120.     (delete "sys:system/DiskChg.di3.info")
  121.  
  122.     (delete "sys:system/Kill.di0.info")
  123.     (delete "sys:system/Kill.di1.info")
  124.     (delete "sys:system/Kill.di2.info")
  125.     (delete "sys:system/Kill.di3.info")
  126.  
  127.     (delete "sys:system/TxFilter.di0.info")
  128.     (delete "sys:system/TxFilter.di1.info")
  129.     (delete "sys:system/TxFilter.di2.info")
  130.     (delete "sys:system/TxFilter.di3.info")
  131.  
  132. ;sys:crossdos
  133.     (delete "sys:crossdos/diskchg")
  134.     (delete "sys:crossdos/diskchk")
  135.     (delete "sys:crossdos/IntlTrans")
  136.     (delete "sys:crossdos/kill")
  137.     (delete "sys:crossdos/mdiskcopy")
  138.     (delete    "sys:crossdos/mformat")
  139.     (delete "sys:crossdos/txfilter")
  140.  
  141.     (delete "sys:crossdos/diskchg.info")
  142.     (delete "sys:crossdos/diskchk.info")
  143.     (delete "sys:crossdos/IntlTrans.info")
  144.     (delete "sys:crossdos/kill.info")
  145.     (delete "sys:crossdos/mdiskcopy.info")
  146.     (delete    "sys:crossdos/mformat.info")
  147.     (delete "sys:crossdos/txfilter.info")
  148.  
  149.     (delete "sys:crossdos/Atari_S9.MFormat.info")
  150.     (delete "sys:crossdos/Atari_D9.MFormat.info")
  151.     (delete "sys:crossdos/MSDOS_D9.MFormat.info")
  152.     (delete "sys:crossdos/MSDOS_S9.MFormat.info")
  153.     (delete "sys:crossdos/MSDOS_QD9.MFormat.info")
  154.     (delete "sys:crossdos/MSDOS_Q18.MFormat.info")
  155.  
  156.     (delete "sys:crossdos/DiskChg.di0.info")
  157.     (delete "sys:crossdos/DiskChg.di1.info")
  158.     (delete "sys:crossdos/DiskChg.di2.info")
  159.     (delete "sys:crossdos/DiskChg.di3.info")
  160.  
  161.     (delete "sys:crossdos/Kill.di0.info")
  162.     (delete "sys:crossdos/Kill.di1.info")
  163.     (delete "sys:crossdos/Kill.di2.info")
  164.     (delete "sys:crossdos/Kill.di3.info")
  165.  
  166.     (delete "sys:crossdos/TxFilter.di0.info")
  167.     (delete "sys:crossdos/TxFilter.di1.info")
  168.     (delete "sys:crossdos/TxFilter.di2.info")
  169.     (delete "sys:crossdos/TxFilter.di3.info")
  170.  
  171.     (delete "sys:crossdos/.info")
  172.     (delete "sys:crossdos")
  173.  
  174.     (if (not (exists "sys:crossdos") )
  175.         (delete "sys:crossdos.info")
  176.     )
  177.  
  178. ;CrossDOS V5+
  179.     (delete "l:MSDOSFileSystem")
  180.     (delete "l:CrossDOSFileSystem")
  181.     (delete "c:TDPatch12")
  182.     (delete "c:TDPatch13")
  183.     (delete "sys:system/CDFormat")
  184.     (delete "sys:system/CDFormat.info")
  185.     (delete "sys:system/CDDiskcopy")
  186.     (delete "sys:system/CDDiskcopy.info")
  187.     (delete "c:CDMount")
  188.     (delete "c:CDMount.info")
  189.  
  190.     (delete "sys:system/CrossDOS")
  191.     (delete "sys:system/CrossDOS.info")
  192.     (delete "sys:system/DiskChg")
  193.     (delete "sys:system/DiskChg.info")
  194.     (delete "devs:dosdrivers/pc0")
  195.     (delete "devs:dosdrivers/pc1")
  196.     (delete "devs:dosdrivers/pc2")
  197.     (delete "devs:dosdrivers/pc3")
  198.     (delete "devs:dosdrivers/pc0.info")
  199.     (delete "devs:dosdrivers/pc1.info")
  200.     (delete "devs:dosdrivers/pc2.info")
  201.     (delete "devs:dosdrivers/pc3.info")
  202.     (set deletedirstr "l:FileSystem_Trans")
  203.     (set deletepat "#?.crossdos")
  204.     (deletedir)
  205.   )
  206. )
  207.  
  208.  
  209. (procedure UnInstallCrossDOS
  210.     (if (askbool
  211.             (prompt "About to UNinstall CrossDOS: This function will try to "
  212.                     "remove CrossDOS completely from your system. "
  213.                     "Are you sure you want to uninstall CrossDOS?"
  214.             )
  215.             (help "This function will try to remove CrossDOS from your system "
  216.                   "to the extent that it is possible to do so safely. Some parts "
  217.                   "of CrossDOS \(such as replacement Mount, Format, and Diskcopy "
  218.                   "commands\) will not be removed, because doing so might "
  219.                   "disrupt the normal functioning of the system. Only in very "
  220.                   "extreme cases should you find it neccessary to revert to the "
  221.                   "to the original \(Commodore-supplied\) commands."
  222.             )
  223.         )
  224.         (    (DeleteOldCD)
  225.  
  226.             ;Comment-out the main mount command from the user-startup
  227.             (if (exists "s:user-startup")
  228.                 (    (startup "CrossDOSV5+ - automatically mount all devices"
  229.                         (help "This procedure only affects the main mount command placed "
  230.                               "in the user-startup by the CrossDOS installation. After uninstallation, "
  231.                               "the command will still be present in exactly the same form, "
  232.                               "but it will be preceded by a \";\" character, thereby nullifying its "
  233.                               "effects."
  234.                         )
  235.                         (prompt ("This step will disable the CrossDOS Mount commmand in the "
  236.                                     "user-startup that normally mounts all devices in the "
  237.                                     "devs:DOSDrivers directory. (Other mount statements are unaffected). "
  238.                                     "If you wish to preserve this "
  239.                                     "functionality, you may choose to skip this part."
  240.                                 )
  241.                         )
  242.                         (command ";Mount >nil: devs:DOSDrivers/~(#?.info)" )
  243.                     )
  244.                 )
  245.             )
  246.             (message "Finished UnInstalling CrossDOS. If you have manually moved "
  247.                      "parts of CrossDOS from their normal location, those files "
  248.                      "are still on your disk."
  249.             )
  250.         )
  251.     )
  252. )
  253.  
  254. ;********************** CrossDOS installation **************************
  255. (procedure ModifyStartup
  256.     (startup "CrossDOSV5+ - automatically mount all devices"
  257.         (prompt "About to install a command in s:user-startup to automatically "
  258.                 "start CrossDOS when you boot your system..."
  259.         )
  260.         (help "Normally you want CrossDOS to be automatically invoked every "
  261.               "time you start your system."
  262.         )
  263.         (command "Mount >nil: devs:DOSDrivers/~(#?.info)")
  264.     )
  265. )
  266.  
  267. (procedure InstallCrossDOS
  268.     (    (message "About to install CrossDOS...")
  269.  
  270.         ;Delete an old installation of CrossDOS
  271.         (if (exists "l:msdosfilesystem")
  272.             (set old 1)    ;if old
  273.             (set old 0)    ;if not old
  274.         )
  275.         (if old
  276.             (    (message "About to delete a previous CrossDOS installation...")
  277.                 (DeleteOldCD)
  278.             )
  279.             (    (delete "sys:system/CDFormat")
  280.                 (delete "sys:system/CDFormat.info")
  281.                 (delete "sys:system/CDDiskcopy")
  282.                 (delete "sys:system/CDDiskcopy.info")
  283.                 (delete "c:CDMount")
  284.                 (delete "c:CDMount.info")
  285.             )
  286.         )
  287.  
  288.         ;Replace old MountMF command
  289.         (if (exists "sys:mountmf")
  290.             (copyfiles (source ":c/MountMF") (dest "sys:") )
  291.         )
  292.         (if (exists "sys:crossdos/mountmf")
  293.             (copyfiles (source ":c/MountMF") (dest "sys:CrossDOS") )
  294.         )
  295.         (if (exists "c:mountmf")
  296.             (copyfiles (source ":c/MountMF") (dest "c:") )
  297.         )
  298.  
  299.         ;Create certain directories if they don't exist
  300.         (makedir "l:FileSystem_Trans" (infos) )
  301.         (makedir "sys:system" (infos) )
  302.  
  303.         ;The purpose of this is to create an icon for the devs: directory if needed.
  304.         (makedir (getassign "devs") (infos) )
  305.         (makedir "devs:DOSDrivers" (infos) )
  306.  
  307.         ;Install mfm.device
  308.         (set mysource "devs/mfm.device")
  309.         (set mydest "devs:")
  310.         (set mynewname "mfm.device")
  311.         (mycopylib)
  312.  
  313.         ;Install Mount command
  314.         (set mysource ":c/Mount")
  315.         (set mydest "c:")
  316.         (set mynewname "Mount")
  317.         (mycopylib)
  318.  
  319.         ;Install CrossDOSFileSystem
  320.         (set mysource ":l/CrossDOSFileSystem")
  321.         (set mydest "l:")
  322.         (set mynewname "CrossDOSFileSystem")
  323.         (mycopylib)
  324.  
  325.         ;Copy devs:dosdrivers
  326.         (foreach ":" "PC?"
  327.             (    (copyfiles (source (":%s" @each-name) ) (dest "devs:DOSDrivers") )
  328.                 (if (not (exists ("devs:DOSDrivers/%s.info" @each-name) (noreq)) )
  329.                     (    (copyfiles (source (":%s.info" @each-name) ) (dest "devs:DOSDrivers") )
  330.                         (tooltype (dest ("devs:DOSDrivers/%s" @each-name) )
  331.                             (noposition)
  332.                             (setdefaulttool "c:Mount")
  333.                             ;Delete the "filesystem=" entry
  334.                             ;Case-sensitive!!! (yet another installer bug)
  335.                             (settooltype "FILESYSTEM")
  336.                         )
  337.                     )
  338.                 )
  339.             )
  340.         )
  341.  
  342.         ;Install Format
  343.         (set mysource ":system/Format")
  344.         (set mydest "sys:system")
  345.         (set mynewname "Format")
  346.         (mycopylib)
  347.  
  348.         ;Install DiskCopy
  349.         (set mysource ":system/DiskCopy" )
  350.         (set mydest "sys:system")
  351.         (set mynewname "DiskCopy")
  352.         (mycopylib)
  353.  
  354.         ;Install the CrossDOS utility
  355.         (copyfiles (source ":system/CrossDOS") (dest "sys:system") (newname "CrossDOS") )
  356.         (copyfiles (source ":system/CrossDOS.info") (dest "sys:system") )
  357.         (tooltype (dest "sys:system/CrossDOS") (noposition) )
  358.  
  359.         ;Copy FileSystem_Trans
  360.         (copyfiles (source ":l/FileSystem_Trans") (dest "l:FileSystem_Trans") (all) (optional nofail))
  361.  
  362.         ;Install QuickPrep
  363.         (set mysource ":system/QuickPrep")
  364.         (set mydest "sys:system")
  365.         (set mynewname "QuickPrep")
  366.         (mycopylib)
  367.  
  368.         ;Last copy operation -- copy DiskChg to sys:system
  369.         (copyfiles (source ":system/DiskChg") (dest "sys:system") (infos) )    ;required!!!
  370.         (tooltype (dest "sys:system/DiskChg") (noposition) )
  371.  
  372.         ;Enter mount command in s:user-startup. Previously we did this whenever
  373.         ;installing on a new CD user's system. Now we don't care whether he has
  374.         ;an old CD, but we do avoid inserting it into the u-s if the user is
  375.         ;running Workbench 2.1 or higher, unless we are in expert mode and
  376.         ;the user overrides our wisdom.
  377.  
  378.         (if (and (= @user-level 2) wb21)
  379.             (    (if (askbool
  380.                         (prompt "If you select \"Install\", a command will be "
  381.                                 "inserted into your s:user-startup file to mount "
  382.                                 "all devices in the DOSDrivers drawer. Since you are "
  383.                                 "running Workbench 2.1 or above, however, this command should "
  384.                                 "already be there, unless you have extensively customized your "
  385.                                 "system. Select \"Skip\" to avoid adding a "
  386.                                 "redundant command \(which won't hurt, but will slow down "
  387.                                 "booting\)."
  388.                         )
  389.                         (choices "Install" "Skip")
  390.                         (help "In most cases you should select \"Skip\".")
  391.                     )
  392.                     (    (user 0)
  393.                         (ModifyStartup)
  394.                         (user 2)
  395.                     )
  396.                 )
  397.             )
  398.             (    (if (not wb21) (ModifyStartup) ) )
  399.         )
  400.  
  401.         ;Mount the stuff now so the user can use it immediately
  402.         ;This 'run' is safe because c: is an explicit path
  403.         (run "c:Mount >nil: devs:DOSDrivers/~(#?.info)")
  404.  
  405.         (message "CrossDOS is now installed.")
  406.     )
  407. )
  408.  
  409.  
  410. ;********************** Configure Hard Disk **************************
  411. (procedure ConfigureHardDisk
  412.     (    (if (= 0 (exists "l:CrossDOSFileSystem") )
  413.             (    (message "CrossDOS 6 is not currently installed. It must "
  414.                          "be installed before you can configure a hard drive. "
  415.                          "Switching to CrossDOS installation..."
  416.                 )
  417.                 (InstallCrossDOS)
  418.             )
  419.         )
  420.  
  421.         (set opt (askchoice
  422.                 (choices "Configure on an Amiga Partition"
  423.                          "Configure a 100% MS-DOS Hard Disk"
  424.                          "Configure a Disk File"
  425.                 )
  426.                 (prompt "Please select an option. * Hit HELP for details!!! *")
  427.                 (help "   \"Configure on an Amiga Partition\"\n"
  428.                       "if you want to configure one of your Amiga partitions "
  429.                       "for use as an MS-DOS hard drive image.\n"
  430.                       "   \"Configure a 100% MS-DOS Hard Disk\".\n"
  431.                       "if you want to configure an entire PHYSICAL hard drive "
  432.                       "(such as a SyQuest or Bernoulli etc).\n"
  433.                       "   \"Configure a Disk File\"\n"
  434.                       "if you want to use a file as an MS-DOS disk image (such "
  435.                       "as JLink, MakeAB, PC-Task and AtOnce disk files)."
  436.                 )
  437.             )
  438.         )
  439.  
  440.         ;Run the ConfigDev program
  441.         (if (= opt 0) (set drivetype "PARTITION") )
  442.         (if (= opt 1) (set drivetype "DISK") )
  443.         (if (= opt 2)
  444.             (    (set drivetype "FILE") 
  445.                     ;Install filedisk.device
  446.                 (set mysource "devs/filedisk.device")
  447.                 (set mydest "devs:")
  448.                 (set mynewname "filedisk.device")
  449.                 (mycopylib)
  450.             )
  451.         )
  452.  
  453.         (run ("%sc/ConfigDisk %s" @execute-dir drivetype))
  454.     )
  455. )
  456.  
  457. ;********************** Product Registration **************************
  458. (procedure Register
  459.     (run ("%sc/Registration %sRegistrationInfo" @execute-dir @execute-dir) )
  460. )
  461.  
  462. ;***************************************************************************
  463. ;***************************** MAIN ****************************************
  464. ;***************************************************************************
  465. ;Force user level to 1 or 2. This is unfortuntely required because otherwise
  466. ;we can't present a menu of choices to the user.
  467. (if (= @user-level 0)
  468.     (
  469.         (user 1)
  470.         (set @user-level 0)
  471.     )
  472. )
  473.  
  474. ;Disallow pretend mode
  475. (if @pretend 
  476.     (    (message "Sorry, you can't run the installation in "
  477.                  "\"pretend\" mode. Exiting..."
  478.         )
  479.         (exit (quiet) )
  480.     )
  481. )
  482.  
  483. ;Test whether we can access :l/CrossDOSFileSystem. If not, the user is
  484. ;not running from the product disk - abort.
  485.  
  486. (if (not (exists ":l/CrossDOSFileSystem") ) 
  487.     (    (message "You must run the installation program from the "
  488.                  "CrossDOS disk. Exiting..."
  489.         )
  490.         (exit (quiet) )
  491.     )
  492. )
  493.  
  494. ;Initialize certain variables
  495. (set pcdir "")
  496. (set harddisk "")
  497.  
  498. (set disklabel (expandpath ":") )
  499. (set @execute-dir disklabel)
  500.  
  501. ;get Kickstart version number
  502. (set ksver (/ (getversion "exec.library" (resident) ) 65536 ) )
  503.  
  504. ;set ks20 variable to 1 if running Kickstart 2.04 or above
  505. (set ks20 (> ksver 36) )
  506.  
  507. ;get Workbench version number
  508. (set wbver (/  (getversion "version.library" (resident) ) 65536 ) )
  509.  
  510. ;set wb21 variable to 1 if running Workbench 2.1 or above
  511. (set wb21 (> wbver 37) )
  512.  
  513.  
  514.  
  515. ;Check whether the disk label is "CrossDOS:"; if not, try to relabel the
  516. ;disk.
  517. ;The rename (relabel in this case) command doesn't seem to work...another
  518. ;installer bug?
  519.  
  520. ;(if (not (= disklabel "CrossDOS:") )
  521. ;    (    (rename (disklabel) ("CrossDOS") (disk) ) )
  522. ;)
  523.  
  524.  
  525. (while 1
  526.     (    ;Attempt to determine what the default menu options should be
  527.         (set defmenu 0)
  528.         (if (not (exists "l:CrossDOSFileSystem") )
  529.             (set defmenu (bitor defmenu %00000101) )
  530.         )
  531.  
  532.         ;Ask the user what he wants to install or do.
  533.  
  534.         (set mainopt
  535.             (askoptions
  536.                 (prompt "Please select all functions that you wish to perform")
  537.                 (choices "Install CrossDOS"
  538.                          "Configure Hard Disk"
  539.                          "Fill out Product Registration"
  540.                          "Uninstall CrossDOS"
  541.                 )
  542.                 (default defmenu)
  543.                 (help "The \"Install CrossDOS\" option installs the "
  544.                       "software. The \"Configure MS-DOS Hard Disk\" option will run ConfigDisk, "
  545.                       "which allows you to set up a drive or partition for "
  546.                       "CrossDOS. The \"Fill out Product Registration\" option will "
  547.                       "prompt you for your name and address, and print it to PRT: (the "
  548.                       "default printer). Using the registration software eliminates "
  549.                       "the difficulties we sometimes have reading hand-written registration cards. "
  550.                       "Use the \"Uninstall CrossDOS\" option to remove CrossDOS."
  551.                 )
  552.             )
  553.         )
  554.  
  555.         (if (= mainopt 0)
  556.             (    (message "You didn\'t select anything. Exiting...")
  557.                 (exit (quiet) )
  558.             )
  559.         )
  560.  
  561.         (if    (NOT (and (in mainopt 3) (BITAND mainopt %00000111) ) )
  562.             (    (if (in mainopt 0) (InstallCrossDOS) )
  563.                 (if (in mainopt 1) (ConfigureHardDisk) )
  564.                 (if (in mainopt 2) (Register) )
  565.                 (if (in mainopt 3) (UninstallCrossDOS) )
  566.                 (exit (quiet) )
  567.             )
  568.             (    (message "The UNinstall option cannot be selected in conjunction "
  569.                          "with any other options. Perhaps you accidentally "
  570.                          "selected it."
  571.                 )
  572.             )
  573.         )
  574.     )
  575. )
  576.