home *** CD-ROM | disk | FTP | other *** search
/ Amiga Format CD 28 / amigaformatcd28.iso / -seriously_amiga- / comms / other / amarquee / install_amarquee < prev    next >
Text File  |  1998-04-23  |  24KB  |  541 lines

  1. ; Installation script for the AMarquee system.
  2. ; by Jeremy Friesner.  Miami support by Fredrik Rambris.
  3.  
  4. (transcript "On installing AMarquee...")
  5.  
  6. ;Take a guess at which stack is installed...
  7. (set DefaultSys 1)  ; default to Miami...
  8. (if (= (run "assign inet: EXISTS" (safe)) 0) (set DefaultSys 2))  ; or Inet225 if assign is there
  9. (if (= (run "assign AmiTCP: EXISTS" (safe)) 0) (set DefaultSys 0))  ; or AmiTCP if assign is there
  10.  
  11. (set tcpsys
  12.   (askchoice
  13.   (prompt "Which TCP software do you wish to use AMarqueed with?")
  14.   (help @askdir-help)
  15.   (default DefaultSys)
  16.   (choices
  17.     "AmiTCP"
  18.     "Miami"
  19.     "Inet225"
  20.     "Other"
  21.     )
  22.   )
  23. )
  24.  
  25. (set DaemonFileName "AMarqueed")         ; default
  26. (set LibraryFileName"amarquee.library")  ; default
  27. (set tcpname "(Unknown)")                ; default
  28. (set dbDir "")                           ; default
  29.  
  30. (select tcpsys
  31.   (                              ; for AmiTCP
  32.    (set servdir "AmiTCP:serv")
  33.    (set tcpname "AmiTCP")
  34.    (set dbDir "AmiTCP:db") 
  35.   )
  36.   (
  37.     (set servdir "")             ; for Miami--ask user
  38.     (set tcpname "Miami")
  39.   )
  40.   (                              ; for Inet225
  41.    (set servdir "Inet:serv")
  42.    (set tcpname "Inet225")
  43.    (set dbDir "Inet:db")
  44.    (set DaemonFileName "AMarqueed.inet225")
  45.    (set LibraryFileName "amarquee.library.inet225")
  46.   )
  47.   (set servdir "")               ; for Other--ask user
  48. )
  49.  
  50. (set InstallOpts
  51.   (askoptions
  52.     (
  53.       (prompt "Please indicate which parts of the AMarquee system you wish to install.")
  54.       (help "Which parts of the AMarquee system you should install depend on what you want to do with AMarquee on your system.  Only install the AMarquee server if you wish to use your computer as a host for other Amigas to connect to with their AMarquee programs.  Only install the AMarquee C include files if you wish to write your own AMarquee programs.")
  55.       (choices
  56.         "amarquee.library"
  57.         "AMarqueed server"
  58.         "AMarquee.library C include files"
  59.         "AMarquee.library C++ wrapper file"
  60.         "AMarquee.library PCQ include & .lib files"
  61.         "AMarquee Documentation"
  62.         "AMarquee Example Programs"
  63.       )
  64.       (default 35)
  65.     )
  66.   )
  67. )
  68.  
  69. (if (BITAND InstallOpts 1)
  70.   (
  71.     ; install amarquee.library
  72.     (copylib (source LibraryFileName) (dest "LIBS:") (newname "amarquee.library"))
  73.   )
  74. )
  75.  
  76. (if (BITAND InstallOpts 2)
  77.   (
  78.     ; install AMarqueed server
  79.         
  80.     (if (= tcpsys 3)  ; Other... 
  81.       (message "\nThis Installer script only knows how to install AMarqueed for AmiTCP, Inet225, or Miami.  To install AMarqueed for another system, you will need to do it yourself.  See the AMarquee installation documentation for what needs to be done for Miami, Inet225, or AmiTCP; your TCP stack will likely have similar requirements.  This script can still install the other components of the AMarquee package, though.")
  82.       (
  83.         (if (= servdir "")
  84.           (set servdir   ; Otherwise, Miami
  85.             (askdir
  86.               (prompt "Where do you want to put the AMarquee server executable, AMarqueed?")
  87.               (help @askdir-help)
  88.               (default "Work:")
  89.             )
  90.           )
  91.         )
  92.         
  93.         ; Copy server file
  94.         (copyfiles (source DaemonFileName) (dest servdir) (newname "AMarqueed"))
  95.  
  96.         (set makeResident
  97.           (askbool
  98.             (
  99.               (prompt "\n\nDo you wish to make AMarqueed resident in memory?  This will save memory when multiple connections are active simultaneously.")
  100.               (help "Making a program resident causes AmigaDOS to keep its executable in memory permanently.  When the program is run, instead of loading a new copy of the code into memory, the resident code is shared by the new process.")
  101.               (default 1)
  102.             )
  103.           ) 
  104.         )
  105.  
  106.         (if (= makeResident 1)
  107.           (
  108.             (set InetDPath "AMarqueed")
  109.             (startup "AMarqueed" 
  110.               (prompt ("\n\nOkay to put the line\n\nresident >NIL: %s pure\n\ninto your s:user-startup?" (tackon servdir "AMarqueed")))
  111.               (help "This line in your user-startup will load AMarqueed into memory so that it can be found when needed by inetd.  If you choose not to add this line here, you will need to execute it somewhere else, or inetd will not be able to find AMarqueed and will refuse AMarqueed connections.")
  112.               (command ("resident >NIL: %s PURE" (tackon servdir "AMarqueed") ) )
  113.             )
  114.             (run "resident >NIL: AMarqueed PURE" (safe))  ; in case they don't reboot before trying it out!
  115.           )
  116.           (
  117.             (set InetDPath (tackon servdir "AMarqueed") )
  118.           )
  119.         )
  120.             
  121.         ; modify config files!
  122.         (if (OR (= tcpsys 0) (= tcpsys 2))  ; AmiTCP or Inet225!
  123.           (
  124.             ; modify AmiTCP/Inet225 config files
  125.             (delete "t:edit_text_succeeded")
  126.             (set ARexxRunString (cat "sys:rexxc/rx EditTextFile.rexx " dbDir "/services AMarquee AMarquee^^^^^^^^2957/tcp"))
  127.             (run
  128.               (ARexxRunString)
  129.               (prompt "\n\nTo use AMarqueed with " tcpname ", the line:\n\nAMarquee 2957/tcp\n\nneeds to be present in your " dbDir "/services file.  Do you wish me to update the file?  (Note:  AMarquee will not receive connections if this line is not precisely as shown above!)")
  130.               (help "The inclusion of this line into " dbDir "/services is done by an ARexx script which is smart enough to correctly edit previous installations.  Also it will make a backup (to " dbDir "/services.bak) before writing.")
  131.               (confirm)
  132.             )
  133.             (if (not (exists "t:edit_text_succeeded") )
  134.               (message "The config file editing script (EditTextFile.rexx) did not complete successfully.  You may need to edit your " dbDir "/services file yourself.  Look in the 'Installation' section of the AMarquee docs for instructions.")
  135.             )
  136.             (delete "t:edit_text_succeeded")
  137.             (set userName "root")
  138.             (if (= tcpsys 2) (set userName ""))  ; Inet225 doesn't have the username field
  139.             (set ARexxRunString (cat "sys:rexxc/rx EditTextFile.rexx " dbDir "/inetd.conf AMarquee AMarquee^^^^stream^^^^^^tcp^nowait^" userName "^^^^" InetDPath))
  140.  
  141.             (run
  142.               (ARexxRunString)
  143.               (prompt (cat "\nAlso, the line:\n\nAMarquee stream tcp nowait " userName " " InetDPath "\n\nneeds to be present in your " dbDir "/inetd.conf file.  Do you wish me to update that file?\n(Note:  AMarquee will not receive connections if this line is not precisely as shown above!)"))
  144.               (help "The inclusion of this line into " dbDir "/inetd.conf is done by an ARexx script which is smart enough to correctly edit previous installations.  Also it will make a backup (to " dbDir "/inetd.conf.bak) before writing.")
  145.               (confirm)
  146.             )
  147.  
  148.             (if (not (exists "t:edit_text_succeeded") )
  149.               (message "The config file editing script (EditTextFile.rexx) did not complete successfully.  You may need to edit your " dbDir "/inetd.conf file yourself.  Look in the 'Installation' section of the AMarquee docs for instructions.")
  150.             )
  151.           )
  152.           (
  153.             ; Do config files for Miami: Create the textfile with a pointer to AMarqueed
  154.             (textfile
  155.               (dest "t:dbtemp")
  156.               (append
  157.                 "ADD services AMarquee 2957/tcp\n"
  158.                 ("ADD inetd AMarquee stream tcp nowait root %s\n" InetDPath)
  159.               )
  160.             )
  161.  
  162.             ; Add the lines to envarc:MiamiChangeDB (i.e. don't overwrite! Other programs
  163.             ; may have their lines there too)
  164.             (run "type t:dbtemp >>envarc:MiamiChangeDB")
  165.  
  166.             ; If Miami is running... why not make it read the new settings?
  167.             (run "SYS:Rexxc/RX \"ADDRESS MIAMI.1;changedb\"")
  168.  
  169.             ; Clean up
  170.             (delete "t:dbtemp")
  171.           )
  172.         )
  173.  
  174.         ; set ENV vars if desired
  175.         (set ServerOpts
  176.           (askoptions
  177.             (prompt "There are several ENV variables AMarqueed looks at to determine limits on usage of your system.  Please check the usage limitations you wish to enforce.")
  178.             (help "Each of these options will set for you an ENV variable.  This variable will be copied into ENVARC: so that it will be retained after rebooting.  To change the setting later, simply edit the file in ENVARC:, or use setenv and then copy the file from env: to envarc: when you are happy with it.")
  179.             (choices 
  180.               "Limit memory used per connection" 
  181.               "Specify minimum amount of memory to keep free" 
  182.               "Limit number of connections per host" 
  183.               "Limit total number of connections" 
  184.               "Ban certain hosts or programs" 
  185.               "Set AMarqueed's execution priority" 
  186.               "Adjust idle-ping rate"
  187.               "Give special privileges to certain clients"
  188.               "Limit size of servers' message queues"
  189.             )
  190.             (default 0)
  191.           )
  192.         )
  193.  
  194.         (if (BITAND ServerOpts 1)
  195.           (
  196.             ; AMARQUEED_MAXMEM
  197.             (set AMarqueed_MaxMem
  198.               (asknumber
  199.                 (prompt "\n\nSpecify the maximum amount (in kilobytes) of memory that each AMarquee connection may allocate.  (Enter -1 to impose no individual allocation limit)")
  200.                 (help "By setting this value, you can guarantee that no one AMarqueed process will dynamically allocate more than a certain amount of your RAM.")
  201.                 (range -1 99999999999)
  202.                 (default -1)
  203.               )
  204.             )
  205.             (textfile
  206.               (dest "ENVARC:AMARQUEED_MAXMEM")
  207.               (append AMarqueed_MaxMem)
  208.             )
  209.           )
  210.         )
  211.  
  212.         (if (BITAND ServerOpts 2)
  213.           (
  214.             ; AMARQUEED_MINFREE
  215.             (set AMarqueed_MinFree
  216.               (asknumber
  217.                 (prompt "\n\nSpecify (in kilobytes) the minimum amount of memory that should be left free on your system at all times.  (Enter -1 to impose no minimum free store restriction)")
  218.                 (help "By setting this value, you can guarantee that no AMarqueed process will grab the last kilobytes of memory left in your system.  Of course, this ENV variable cannot affect what other programs do...")
  219.                 (range -1 99999999999)
  220.                 (default -1)
  221.               )
  222.             )
  223.             (textfile
  224.               (dest "ENVARC:AMARQUEED_MINFREE")
  225.               (append AMarqueed_MinFree)
  226.             )
  227.           )
  228.         )
  229.  
  230.         (if (BITAND ServerOpts 4)
  231.           (
  232.             ; AMARQUEED_MAXCONN
  233.             (set AMarqueed_MaxConn
  234.               (asknumber
  235.                 (prompt "\n\nSpecify the maximum number of simultaneous connections that any one Amiga may have to your AMarquee server. (Enter -1 to impose no maximum number of connections)")
  236.                 (help "This setting will prevent any one client machine from hogging your system by opening too many connections.")
  237.                 (range -1 99999999999)
  238.                 (default -1)
  239.               )
  240.             )
  241.  
  242.             (textfile
  243.               (dest "ENVARC:AMARQUEED_MAXCONN")
  244.               (append AMarqueed_MaxConn)
  245.             )
  246.           )
  247.         )
  248.  
  249.         (if (BITAND ServerOpts 8)
  250.           (
  251.             ; AMARQUEED_TOTALMAXCONN
  252.             (set AMarqueed_TotalMaxConn
  253.               (asknumber
  254.                 (prompt "\n\nSpecify the total maximum number of simultaneous AMarquee connections that can exist on your system at once. (Enter -1 to impose no maximum number of connections)")
  255.                 (help "By setting this value, you can guarantee that no more than (n) Amarquee connections will ever be active at once.  Using this in combination with the AMARQUEED_MAXMEM ENV variable puts a finite limit on the total amount of your RAM that could be in use by Amarqueed at any one time.")
  256.                 (range -1 99999999999)
  257.                 (default -1)
  258.               )
  259.             )
  260.             (textfile
  261.               (dest "ENVARC:AMARQUEED_TOTALMAXCONN")
  262.               (append AMarqueed_TotalMaxConn)
  263.             )
  264.           )
  265.         )
  266.  
  267.         (if (BITAND ServerOpts 16)
  268.           (
  269.             ; AMARQUEED_BANNED
  270.             (set AMarqueed_banned
  271.               (askstring
  272.                 (prompt "\n\nSpecify a regular expression to determine which hosts and/or programs should be banned from your computer. (Leave blank to impose no restrictions)  The regular expression should be in the form /HostExp/ProgExp.  See the Help for examples.")
  273.                 (help "Examples:  To ban all hosts from Australia, use /#?.au/#?.  Or to ban all amarquee clients named Bob, use /#?/Bob.  Or perhaps you have a list of things to ban:  /(evil.hackers.com|sdcc8.ucsd.edu|fred.nerd.org)/#?")
  274.                 (default "")
  275.               )
  276.             )
  277.             (textfile 
  278.               (dest "ENVARC:AMARQUEED_BANNED")
  279.               (append AMarqueed_BANNED)
  280.             )
  281.           )
  282.         )
  283.  
  284.         (if (BITAND ServerOpts 32)
  285.           (
  286.             ; AMARQUEED_PRIORITY
  287.             (set AMarqueed_Priority
  288.               (asknumber
  289.                 (prompt "\n\nSpecify the priority that AMarqueed daemons should execute at.")
  290.                 (help "This is the standard Amiga priority system--lower priority programs get less CPU time when the system is busy, higher priority programs get more.")
  291.                 (range -128 127)
  292.                 (default -10)
  293.               )
  294.             )
  295.             (textfile
  296.               (dest "ENVARC:AMARQUEED_PRIORITY")
  297.               (append AMarqueed_Priority)
  298.             )
  299.           )
  300.         )
  301.  
  302.         (if (BITAND ServerOpts 64)
  303.           (
  304.             ; AMARQUEED_PINGRATE
  305.             (set AMarqueed_PingRate
  306.               (asknumber
  307.                 (prompt "\n\nSpecify the number of minutes of idle time that should elapse before an idle-ping query is issued.")
  308.                 (help "In order to ensure that all connections are still 'live', AMarqueed occasionally sends out an 'are you still there?' request to any client that hasn't been heard from for a while.  Shorter ping rates cause a (very) slight extra demand on network and CPU usage, but cut down on the likelihood of 'dead' connections taking up memory.")
  309.                 (range 1 99999999999)
  310.                 (default 3)
  311.               )
  312.             )
  313.             (textfile 
  314.               (dest "ENVARC:AMARQUEED_PINGRATE")
  315.               (append AMarqueed_PingRate)
  316.             )
  317.           )
  318.         )
  319.         
  320.         (if (BITAND ServerOpts 128)
  321.           (
  322.             (set PrivOpts
  323.               (askoptions
  324.                 (prompt "These settings allow you to give special abilities to machines or programs that you trust.  These privileges could be abused by evil people, so don't give them out lightly!\n\nSPECIFY WHO MAY:")
  325.                 (help "Each of these options will set for you an ENV variable.  This variable will be copied into ENVARC: so that it will be retained after rebooting.  To change the setting later, simply edit the file in ENVARC:, or use setenv and then copy the file from env: to envarc: when you are happy with it.")
  326.                 (choices 
  327.                   "Kill (i.e. forcibly disconnect) other clients"
  328.                   "Send system messages (i.e. 'wall' messages)"
  329.                   "Change AMarqueed Settings & Env Variables"
  330.                   "Do ALL of the above"
  331.                 )
  332.                 (default 0)
  333.               )
  334.             )
  335.             
  336.             (if (BITAND PrivOpts 1)
  337.               (
  338.                 ; Kill Clients Privilege
  339.                 (set AMarqueed_KillClients
  340.                   (askstring
  341.                     (prompt "\n\nSpecify a regular expression to determine which hosts and/or programs may kill other clients on your server. (Leave blank to not give this privilege to anyone)  The regular expression should be in the form /HostExp/ProgExp.  See the Help for examples.")
  342.                     (help "Examples:  To give this privilege to all computers from Australia, use /#?.au/#?.  Or to give this privilege to all clients named Bob, use /#?/Bob.  Or perhaps you have a list of things to this privilege to:  /(localhost|sdcc8.ucsd.edu|fred.nerd.org)/#?")
  343.                     (default "/localhost/#?")
  344.                   )
  345.                 )
  346.                 (textfile 
  347.                   (dest "ENVARC:AMARQUEED_KILLCLIENTS")
  348.                   (append AMarqueed_KillClients)
  349.                 )
  350.               )
  351.             )
  352.             
  353.             (if (BITAND PrivOpts 2)
  354.               (
  355.                 ; Send System Messages
  356.                 (set AMarqueed_SendSysMessages
  357.                   (askstring
  358.                     (prompt "\n\nSpecify a regular expression to determine which hosts and/or programs may send 'system messages' on your server. (Leave blank to not give this privilege to anyone)  The regular expression should be in the form /HostExp/ProgExp.  (See help for info on what System Messages are).")
  359.                     (help "'System Messages' are a special form of message that may be sent over AMarquee.  They are meant to be used by the server administrator to send special messages (such as 'I'm shutting down the server now') to every client on the system.")
  360.                     (default "/localhost/#?")
  361.                   )
  362.                 )
  363.                 (textfile 
  364.                   (dest "ENVARC:AMARQUEED_SENDSYSMESSAGES")
  365.                   (append AMarqueed_SendSysMessages)
  366.                 )
  367.               )
  368.             )
  369.             
  370.             (if (BITAND PrivOpts 4)
  371.               (
  372.                 ; Send System Messages
  373.                 (set AMarqueed_Admin
  374.                   (askstring
  375.                     (prompt "\n\nSpecify a regular expression to determine which hosts and/or programs may change AMarqueed environment variables on your server. The regular expression should be in the form /HostExp/ProgExp.  (Leave blank to not give this privilege to anyone)  NOTE:  IF A USER HAS THIS PRIVILEGE, HE IS ABLE TO ACQUIRE ALL OTHER PRIVILEGES AS WELL!  (See help for examples).")
  376.                     (help "Examples:  To give admin privileges to all computers from Australia, use /#?.au/#?.  Or to give full admin privileges to all clients named Bob, use /#?/Bob.  Or perhaps you have a list of things to give privileges to:  /(localhost|sdcc8.ucsd.edu|fred.nerd.org)/#?")
  377.                     (default "/localhost/#?")
  378.                   )
  379.                 )
  380.                 (textfile 
  381.                   (dest "ENVARC:AMARQUEED_ADMIN")
  382.                   (append AMarqueed_Admin)
  383.                 )
  384.               )
  385.             )
  386.             
  387.             (if (BITAND PrivOpts 8)
  388.               (
  389.                 ; All special privileges
  390.                 (set AMarqueed_AllPrivileges
  391.                   (askstring
  392.                     (prompt "\n\This parameter is a shortcut way to give certain clients ALL of the other privileges at once.  Specify a regular expression to determine which hosts and/or programs should get all privileges on your server. (Leave blank to not give full privileges to anyone)  The regular expression should be in the form /HostExp/ProgExp.  See the Help for examples.")
  393.                     (help "Examples:  To give full admin privileges to all computers from Australia, use /#?.au/#?.  Or to give full admin privileges to all clients named Bob, use /#?/Bob.  Or perhaps you have a list of things to give privileges to:  /(localhost|sdcc8.ucsd.edu|fred.nerd.org)/#?")
  394.                     (default "/localhost/#?")
  395.                   )
  396.                 )
  397.                 (textfile 
  398.                   (dest "ENVARC:AMARQUEED_ALLPRIVILEGES")
  399.                   (append AMarqueed_AllPrivileges)
  400.                 )
  401.               )
  402.             )
  403.           )
  404.         )
  405.  
  406.         (if (BITAND ServerOpts 256)
  407.           (
  408.             ; AMARQUEED_MAXQUEUEDMESSAGES
  409.             (set AMarqueed_MaxQueuedMessages
  410.               (asknumber
  411.                 (prompt "\n\nSpecify the maximum number of internal messages that an AMarqueed daemon may have in its message queue, or -1 to leave it unlimited.")
  412.                 (help "With this setting you can limit the size of each daemon's internal message queue; if the queue length exceeds the value you specify (due to perhaps a bad TCP connection), the daemon for that connection will be terminated and the connection closed.  50 is a good minimum value for this setting.")
  413.                 (range 1 99999999999)
  414.                 (default 50)
  415.               )
  416.             )
  417.             (textfile 
  418.               (dest "ENVARC:AMARQUEED_MAXQUEUEDMESSAGES")
  419.               (append AMarqueed_MaxQueuedMessages)
  420.             )
  421.           )
  422.         )
  423.  
  424.         (if (> ServerOpts 0) 
  425.           (run "copy ENVARC:AMARQUEED_#? env:")
  426.         )
  427.       )
  428.     )
  429.   )
  430. )
  431.  
  432. (if (BITAND InstallOpts 4) 
  433.   (
  434.     ; install AMarquee C includes
  435.     (set IncludeDir
  436.       (askdir
  437.         (prompt "Please indicate your C Amiga include directory.  This is the directory that contains the clib, libraries, fd, and pragmas subdirectories for your C or C++ compiler.")
  438.           (help "The Installer script is now going to install header files into your Amiga include directory.  The files to be installed include clib/amarquee_protos.h, libraries/amarquee.h, pragmas/amarquee_pragmas.h, and fd/amarquee.fd")
  439.           (default "include:amiga")
  440.       )
  441.     )
  442.     (copyfiles
  443.       (source "include/amiga")
  444.       (dest IncludeDir)
  445.       (all)
  446.     )
  447.   )
  448. )
  449.  
  450.  
  451. (if (BITAND InstallOpts 8)
  452.   (
  453.     ; install AMarquee C++ wrapper class/headerfile
  454.     (set WrapperDir
  455.       (askdir
  456.         (prompt "Please indicate the directory to put the C++ header file Session.h:")
  457.         (help "No new directory will be created!  Session.h contains a wrapper C++ class named Session, that lets you use amarquee.library in a more object-oriented fashion.")
  458.         (default "include:")
  459.         (newpath)
  460.       )
  461.     )
  462.     (copyfiles
  463.       (source "include/Session.h")
  464.       (dest WrapperDir)
  465.     )
  466.   )
  467. )
  468.  
  469.  
  470. (if (BITAND InstallOpts 16) 
  471.   (
  472.     ; install AMarquee PCQ includes
  473.     (set IncludeDir
  474.       (askdir
  475.         (prompt "Please indicate your PCQ include directory.  This is the directory that contains the Intuition, Libraries, Resources, and other subdirectories for PCQ.")
  476.           (help "The Installer script is now going to install the header file AMarquee.i into the Libraries subdir of your PCQ include directory.")
  477.           (default "include:")
  478.       )
  479.     )
  480.     (copyfiles
  481.       (source "PCQ/AMarquee.i")
  482.       (dest (tackon IncludeDir "Libraries"))
  483.       (all)
  484.     )
  485.  
  486.  
  487.     ; install AMarquee PCQ lib
  488.     (set LibDir
  489.       (askdir
  490.         (prompt "Please indicate where you would like the stub library, AMarquee.lib, to be put.  One good place to keep it is in the same directory as PCQ.lib.")
  491.           (help "The Installer script is now going to install AMarquee.lib.  AMarquee.lib is a link library with stub functions that call the corresponding functions in amarquee.library, on behalf of your PCQ program.")
  492.           (default "include:/")
  493.       )
  494.     )
  495.     (copyfiles
  496.       (source "PCQ/AMarquee.lib")
  497.       (dest LibDir)
  498.       (all)
  499.     )
  500.   )
  501. )
  502.  
  503. (if (BITAND InstallOpts 32)
  504.   (
  505.     ; install AMarquee docs
  506.     (set DocDir
  507.       (askdir
  508.         (prompt "Please indicate the directory to put the AMarquee.guide into:")
  509.         (help "No new directory will be created!")
  510.         (default "ram:")
  511.         (newpath)
  512.       )
  513.     )
  514.     (copyfiles
  515.       (source "AMarquee.guide")
  516.       (dest DocDir)
  517.       (infos)
  518.     )
  519.   )
  520. )
  521.  
  522. (if (BITAND InstallOpts 64)
  523.   (
  524.     ; install AMarquee example programs
  525.     (set ExampleDir
  526.       (askdir
  527.         (prompt "Please indicate the directory to create the ExamplePrograms directory in.")                (help "A new directory named AMarqueeExamples will be created in the directory you specify.")
  528.         (default "ram:")
  529.         (newpath)
  530.       )
  531.     )
  532.     (set FileDir (tackon ExampleDir "AMarqueeExamples"))
  533.     (makedir FileDir)
  534.     (copyfiles
  535.       (source "Examples")
  536.       (dest FileDir)
  537.       (all)
  538.     )
  539.   )
  540. )
  541.