home *** CD-ROM | disk | FTP | other *** search
/ AmigActive 4 / AACD04.ISO / AACD / Games / JOTDStartup / Developer / InstallWizard / InstallWizard < prev    next >
Text File  |  1999-11-18  |  17KB  |  580 lines

  1. ; setup
  2.  
  3. (set #iwversion "1.5")
  4. (set #year "1999")    ; not certified for year 2000, update needed :)
  5. (set #sourcedir "source")
  6. (set #iconsdir "icons")
  7. (set #bindir "binary")
  8. (set #readmedir "readme")
  9. (set #inspartsdir "installer-parts")
  10.  
  11. ; work variables
  12.  
  13. (set #sedcommand "binary/sed")
  14. (set #sedfile "T:sedfile")
  15.  
  16. ; get environment variables
  17.  
  18. (set #authorname (getenv "INSW/AUTHORNAME"))
  19. (set #authoremail (getenv "INSW/AUTHOREMAIL"))
  20. (set #editor (getenv "INSW/EDITOR"))
  21. (set #installroot (getenv "INSW/INSTALLROOT"))
  22. (set #loaderdevroot (getenv "INSW/LOADERDEVROOT"))
  23.  
  24. ; check for authorname, compulsory
  25.  
  26. (if (= #authorname "")
  27.     (abort "The environment variable AUTHORNAME is empty!")
  28. )
  29.  
  30. (if (= #authoremail "")
  31.     (set #authoremail "no email")
  32. )
  33.  
  34. (set #srcsubdir "")
  35. (set #subdir "")
  36. (set #indextype 0)
  37. (set #indexascii 49)
  38.  
  39. ; user prompts
  40.  
  41. (set #gamename
  42.     (askstring (prompt "What's the name of the game/demo you want\nto create an install for ?")
  43.     (help "This name will be used to set the game name, not the game directory\n"
  44.           "so you can include spaces in it")
  45.     (default "")
  46.     )
  47. )
  48.  
  49. (set #srctype
  50.      (askchoice (prompt ("What kind of media %s is originally stored on?" #gamename ))
  51.                 (help "The install procedure will be different depending on the\n"
  52.                       "source (files/diskfiles, etc...)")
  53.                 (choices
  54.                   "Standard files (CD-ROM)"
  55.                   "Standard files (floppies)"
  56.                   "Standard diskfiles (disk2file, DIC)"
  57.                   "Non standard disk files (custom disk ripper)"
  58.                   "Non standard files (custom file ripper)"
  59.                 )
  60.              1
  61.       )
  62. )
  63.  
  64. (set #nbdisks 1)
  65.  
  66. (if (NOT (= 0 #srctype))
  67. (
  68.   (set #nbdisks
  69.     (asknumber (prompt "How many disks does the game come with")
  70.                (help "This number will be used in the install-script"
  71.                      "and maybe in the loader")
  72.                (range 1 9)
  73.     )
  74.  
  75.   )
  76.  
  77. (if (> #nbdisks 1)
  78. (
  79.   (set #indextype
  80.      (askchoice (prompt "What's the first disk index?")
  81.                 (help "If the disks do not have a incremental disk index\n"
  82.                       "then you'll do it by hand later!")
  83.                 (choices
  84.                   "1"
  85.                   "A"
  86.                   "a"
  87.                 )
  88.              0
  89.       )
  90.   )
  91.  
  92.   (if (= 1 #indextype)
  93.     (set #indexascii 65)
  94.   )
  95.  
  96.   (if (= 2 #indextype)
  97.     (set #indexascii 97)
  98.   )
  99.  
  100.  
  101. )
  102.  
  103. )
  104. )
  105. )
  106.  
  107. (set #gamedir
  108.     (askstring (prompt "What should the drawer name be called ?\n\n"
  109.                    "(don't put the HD suffix)?")
  110.                (help "The user and developper install drawer names\n"
  111.                      "will be computed accordingly")
  112.                (default #gamename)
  113.     )
  114. )
  115.  
  116. (set #osemu
  117.      (askbool (prompt "Will the loader use OS emulation module ?")
  118.                 (help "OS emulation module was written by Harry\n"
  119.                       "and allows to run many games by emulating the Amiga OS\n"
  120.                       "which ensures OS-independance, WB startup, clean quit...")
  121.                 (choices
  122.                   "Yes"
  123.                   "No"
  124.                 )
  125.                 (default 1)
  126.       )
  127. )
  128.  
  129. (set #osblast 1)
  130.  
  131. ; if osemu is active, the OS won't be active, else, ask
  132.  
  133. (if (= 0 #osemu)
  134. (set #osblast
  135.      (askbool (prompt "Does the launching process overtakes the system ?")
  136.                 (help "If you write a JST loader, it will overtake the system\n"
  137.                       "but if you use JST as a degrader only, then it won't")
  138.                 (choices
  139.                   "Yes"
  140.                   "No"
  141.                 )
  142.                 (default 1)
  143.       )
  144. )
  145. )
  146.  
  147. ; if OS is to be disabled, ask chipmem size
  148.  
  149. (set #chipsize 0)
  150. (set #extsize 0)
  151.  
  152. (if (= 1 #osblast)
  153. (
  154. (set #chipsize
  155.      (askchoice (prompt "Which amount of chip memory will the game use")
  156.                 (help "If it's an old ECS game, it will probably use only 512K\n"
  157.                       "If it's AGA, it often demands 1 or 2megs\n\n"
  158.                       "If you need to specify another size, do it manually\n"
  159.                       "in the asm source. The 'any will do' choice tells\n"
  160.                       "JST to save the actual maxchip size of the computer\n"
  161.                       "the loader is beign run on\n")
  162.                 (choices
  163.                   "any will do"
  164.                   "512K ($80000 bytes)"
  165.                   "1024K ($100000 bytes)"
  166.                   "1536K ($180000 bytes)"
  167.                   "2048K ($200000 bytes)"
  168.                 )
  169.              2
  170.       )
  171. )
  172. (set #extsize
  173.      (askchoice (prompt "Which amount of expansion memory will the game use")
  174.                 (help "If it's an old ECS game, it will probably use only 512K\n"
  175.                       "If it's AGA, it often demands 1 or 2megs\n\n"
  176.                       "If you need to specify another size, do it manually\n"
  177.                       "in the asm source")
  178.                 (choices
  179.                   "none"
  180.                   "512K ($80000 bytes)"
  181.                   "1024K ($100000 bytes)"
  182.                 )
  183.              1
  184.       )
  185. )
  186.  
  187. (set #chipsize (* #chipsize $80000))
  188. (set #extsize (* #extsize $80000))
  189.  
  190. (set #noaga
  191.      (askbool (prompt "Is the game AGA or ECS ?")
  192.                 (help "If you specify AGA, the loader will display\nan error on a ECS computer")
  193.                 (choices
  194.                   "ECS"
  195.                   "AGA"
  196.                 )
  197.                 (default 1)
  198.       )
  199. )
  200.  
  201. (if (AND (= 0 #noaga) (NOT (= $200000 #chipsize)))
  202.   (message "Warning!\nyou selected AGA\n"
  203.            "with a chipmem size different of 2Megs")
  204. )
  205.  
  206. (if (OR (= 2 #srctype) (= 3 #srctype))
  207.   (set #diskfile
  208.     (askstring (prompt "What should be the prefix of the diskfiles ?")
  209.                (help "This string will be used in the install-script"
  210.                      "and in the loader")
  211.                (default ("%s.d" #gamedir))
  212.     )
  213.  
  214.   )
  215. )
  216.  
  217. (set #fromfiles 0)
  218.  
  219. (if (OR (= 4 #srctype) (= 1 #srctype) (= 0 #srctype))
  220.  (
  221.   (set #fromfiles 1)
  222.   (set #subdir
  223.     (askstring (prompt "If you want to store the files in a subdir\n"
  224.                        "enter the subdir name here")
  225.                (help "Leave empty if you don't want a subdir")
  226.                (default "")
  227.     )
  228.  
  229.   )
  230.  
  231.   (set #sizelimit
  232.     (asknumber (prompt "What's the max size file limit for HDLOAD")
  233.                (help "This number will be used in the loader for\n"
  234.                      "the argument of LoadSmallFiles()")
  235.                (range 100 500000)
  236.                (default 10000)
  237.     )
  238.   )
  239.  )
  240.  
  241. )
  242.  
  243.  
  244. ); end osblast
  245.  
  246. ); end non-osblast 
  247.  
  248. (set #readmefile
  249.    (askstring (prompt "What should be the name of the readme ?")
  250.               (help "Name of the readme file, should be the same as user install dir")
  251.               (default ("%shd.readme" #gamedir))
  252.     )
  253. )
  254.  
  255.  
  256. (if (OR (= 0 #srctype) (AND (= 1 #srctype) (= 1 #nbdisks) ) )
  257. (
  258. (set #noindex 1)
  259. (set #disklabel
  260.    (askstring (prompt "What's the label of the disk/CDROM\n")
  261.               (help "The label is also the volume name")
  262.               (default #gamedir)
  263.     )
  264. )
  265. (set #srcsubdir
  266.   (askstring (prompt "If the base directory is not the root of the volume,\n"
  267.                      "enter the subdir name here, else leave empty")
  268.              (help "Leave empty if the source is the root directory")
  269.              (default "")
  270.   )
  271.  
  272. )
  273.  
  274. )
  275. )
  276.  
  277. (if (AND (= 1 #srctype) (> #nbdisks 1) )
  278. (
  279. (set #noindex 0)
  280. (set #disklabel
  281.    (askstring (prompt "What's the label prefix of the disks\n"
  282.                       "(without the number if there are more than one disk) ?")
  283.               (help "If the game has more than one disk,\n"
  284.                     "the program assumes that the disks are labelled\n"
  285.                     "like this <disklabel>1, <disklabel>2, etc...")
  286.               (default #gamedir)
  287.     )
  288. )
  289. )
  290. )
  291.  
  292.  
  293. (set #installdir (tackon #installroot ("%sHD" #gamedir)) )
  294. (set #loaderdevdir (tackon #loaderdevroot ("%sHDDev" #gamedir)) )
  295.  
  296. (makedir #installdir (infos) )
  297. (makedir #loaderdevdir (infos) )
  298.  
  299. ; only on installs with 1 disk, or else could be too strict
  300.  
  301. (if (AND (= 2 #srctype) (= 1 #nbdisks))
  302.   (set #srarg
  303.      (askbool (prompt "Is the disk protected by Rob Northern Copylock (track 0 head 1)")
  304.                 (help "If you're not sure of this, answer no, you'll add SKIPROB\n"
  305.                       "by hand in the generated install if disk2file reports an error")
  306.                 (choices
  307.                   "No"
  308.                   "Yes"
  309.                 )
  310.                 (default 1)
  311.       )
  312.   )
  313. )
  314.  
  315. ; working...
  316.  
  317. (working)
  318.  
  319. (if (= 1 #srarg)
  320.    (set #skiprob "SKIPROB")
  321. )
  322.  
  323. ; loader name
  324.  
  325. (set #loaderfile ("%sHD" #gamedir))
  326.  
  327. ; build the sed command file
  328.  
  329. (textfile (dest #sedfile) (append ("s#%%gamename%%#%s#g\n" #gamename)) )
  330. (textfile (dest #sedfile) (include #sedfile) (append ("s#%%authorname%%#%s#g\n" #authorname)) )
  331. (textfile (dest #sedfile) (include #sedfile) (append ("s#%%authoremail%%#%s#g\n" #authoremail)) )
  332. (textfile (dest #sedfile) (include #sedfile) (append ("s#%%authorname%%#%s#g\n" #authorname)) )
  333. (textfile (dest #sedfile) (include #sedfile) (append ("s#%%year%%#%s#g\n" #year)) )
  334. (textfile (dest #sedfile) (include #sedfile) (append ("s#%%iwversion%%#%s#g\n" #iwversion)) )
  335. (textfile (dest #sedfile) (include #sedfile) (append ("s#%%diskfile%%#%s#g\n" #diskfile)) )
  336. (textfile (dest #sedfile) (include #sedfile) (append ("s#%%nbdisks%%#%ld#g\n" #nbdisks)) )
  337. (textfile (dest #sedfile) (include #sedfile) (append ("s#%%skiprob%%#%s#g\n" #skiprob)) )
  338. (textfile (dest #sedfile) (include #sedfile) (append ("s#%%readmefile%%#%s#g\n" #readmefile)) )
  339. (textfile (dest #sedfile) (include #sedfile) (append ("s#%%loaderfile%%#%s#g\n" #loaderfile)) )
  340. (textfile (dest #sedfile) (include #sedfile) (append ("s#%%gamedir%%#%s#g\n" #gamedir)) )
  341. (textfile (dest #sedfile) (include #sedfile) (append ("s#%%disklabel%%#%s#g\n" #disklabel)) )
  342. (textfile (dest #sedfile) (include #sedfile) (append ("s#%%extsize%%#$%lx#g\n" #extsize)) )
  343. (textfile (dest #sedfile) (include #sedfile) (append ("s#%%chipsize%%#$%lx#g\n" #chipsize)) )
  344. (textfile (dest #sedfile) (include #sedfile) (append ("s#%%sizelimit%%#%ld#g\n" #sizelimit)) )
  345. (textfile (dest #sedfile) (include #sedfile) (append ("s#%%subdir%%#%s#g\n" #subdir)) )
  346. (textfile (dest #sedfile) (include #sedfile) (append ("s#%%srcsubdir%%#%s#g\n" #srcsubdir)) )
  347. (textfile (dest #sedfile) (include #sedfile) (append ("s#%%indexascii%%#%ld#g\n" #indexascii)) )
  348. (if (= 2 #srctype)
  349.   (textfile (dest #sedfile) (include #sedfile) (append "s#%disksize%#STD_DISK_SIZE#g\n") )
  350. )
  351.  
  352. (if (= 1 #osblast)
  353. (
  354.  
  355. (if (= #fromfiles 1)
  356.   (textfile (dest #sedfile) (include #sedfile) (append "/!diskload/d\n") )  ; then
  357.   (textfile (dest #sedfile) (include #sedfile) (append "/!fileload/d\n") )  ; else
  358. )
  359.  
  360. (if (= 0 #osemu)
  361.   (textfile (dest #sedfile) (include #sedfile) (append "/!osemu/d\n") )
  362. )
  363.  
  364. (if (= 1 #noaga)
  365.   (textfile (dest #sedfile) (include #sedfile) (append "/!aga/d\n") )
  366. )
  367.  
  368. (if (= 0 #extsize)
  369.   (textfile (dest #sedfile) (include #sedfile) (append "/!expmem/d\n") )
  370. )
  371.  
  372. (if (= "" #subdir)
  373.   (textfile (dest #sedfile) (include #sedfile) (append "/!subdir/d\n") )
  374. )
  375.  
  376. ; anyway remove all ! comments
  377.  
  378. (textfile (dest #sedfile) (include #sedfile) (append "s#[     ]*; ![a-z].*##\n") )
  379.  
  380. ; copy the binary loader template
  381.  
  382. (copyfiles (source (tackon #bindir "TestHD")) (dest #loaderdevdir) (newname #loaderfile))
  383. (copyfiles (source (tackon #iconsdir "TestHD.info")) (dest #loaderdevdir) (newname ("%s.info" #loaderfile)) )
  384. (copyfiles (source (tackon #bindir "TestHD")) (dest #installdir) (newname #loaderfile))
  385. (copyfiles (source (tackon #iconsdir "TestHD.info")) (dest #installdir) (newname ("%s.info" #loaderfile)) )
  386.  
  387.  copy the Build file+icon
  388.  
  389. (copyfiles (source (tackon #sourcedir "Build")) (dest #loaderdevdir))
  390. (copyfiles (source (tackon #iconsdir "Build.info")) (dest #loaderdevdir))
  391.  
  392. ; generate the Makefile source
  393.  
  394. (run ("%s -f %s %s > %s" 
  395.        #sedcommand
  396.        #sedfile
  397.       (tackon #sourcedir "Makefile")
  398.       (tackon #loaderdevdir "Makefile") )
  399. )
  400.  
  401. (set #srcname ("%s.asm" #loaderfile) )
  402.  
  403. ; copy the Makefile and source icon
  404.  
  405. (copyfiles (source (tackon #iconsdir "Makefile.info")) (dest #loaderdevdir) )
  406. (copyfiles (source (tackon #iconsdir "hd.asm.info")) (dest #loaderdevdir) (newname ("%s.info" #srcname)) )
  407.  
  408. ; sets default tool $EDITOR for both asm file and Makefile
  409.  
  410. (tooltype (dest (tackon #loaderdevdir "Makefile")) (setdefaulttool #editor))
  411. (tooltype (dest (tackon #loaderdevdir #srcname)) (setdefaulttool #editor))
  412.  
  413. ; generate the asm source file template
  414.  
  415. (run ("%s -f %s %s > %s" 
  416.        #sedcommand
  417.        #sedfile
  418.       (tackon #sourcedir "hd.asm")
  419.       (tackon #loaderdevdir #srcname) )
  420. )
  421.  
  422. ; add loadseg utility subroutine
  423.  
  424. (if (= 1 #osemu)
  425.   (textfile (dest (tackon #loaderdevdir #srcname) )
  426.             (include (tackon #loaderdevdir #srcname) )
  427.             (include (tackon #sourcedir "loadseg.asm") )
  428.   )
  429. )
  430.  
  431. ) ; end of osblast
  432.  
  433. ; OS is used, create an empty script
  434.  
  435. (
  436. (copyfiles (source (tackon #iconsdir "RunGame.info") ) (dest #installdir) (newname "RunGame.icon") )
  437. (textfile (dest (tackon #installdir "RunGame")) (append (";; JST %s EXECUTE") #gamedir) )
  438. )
  439.  
  440. ) ; end of not osblast
  441.  
  442. ; generate the specific readme
  443.  
  444. (set #fullreadme (tackon #installdir #readmefile) )
  445.  
  446. (run ("%s -f %s %s > %s" 
  447.        #sedcommand
  448.        #sedfile
  449.       (tackon #readmedir "gamehd.readme")
  450.       #fullreadme )
  451. )
  452.  
  453. ; include OSEmu text if is used
  454.  
  455. (if (= 1 #osemu)
  456. (textfile (dest #fullreadme) (include #fullreadme) (include (tackon #readmedir "osemu.readme")) )
  457. )
  458.  
  459. ; processes the icons
  460.  
  461. (copyfiles (source (tackon #iconsdir "gamehd.readme.info") )
  462.            (dest #installdir)
  463.            (newname ("%s.info" #readmefile) )
  464. )
  465.  
  466. (set #installiconname ("Install-%s.info" #gamedir) )
  467.  
  468. (copyfiles (source (tackon #iconsdir "Install-game.info"))
  469.            (dest #installdir)
  470.            (newname #installiconname)
  471. )
  472.  
  473. ; generates the install script
  474.  
  475. (set #installdest ("Install-%s" #gamedir) )
  476. (set #tmpinstall (tackon "T:" #installdest) )
  477.  
  478. (set #installicon (tackon #installdir #installiconname) )
  479. (set #finalicon (tackon #installdir #installdest) )
  480.  
  481. ; sets the tooltypes
  482.  
  483. (tooltype (dest #finalicon) (settooltype "APPNAME" #gamename) )
  484. (tooltype (dest #finalicon) (settooltype "MINUSER" "expert") )
  485.  
  486. (if (> #srctype 1)
  487.   (tooltype (dest #finalicon) (settooltype "PRETEND" "FALSE") )
  488. )
  489.  
  490. ; appends files to main file
  491.  
  492. (textfile (dest #tmpinstall) (include (tackon #inspartsdir "Install-init")) )
  493.  
  494. (if (= 1 #osemu)
  495. (
  496. (textfile (dest #tmpinstall) (include #tmpinstall) (include (tackon #inspartsdir "Copy-osemu")) )
  497. (copyfiles (source (tackon #bindir "OSEmu.400")) (dest #installdir))
  498. )
  499. )
  500. (if (= 1 #osblast)
  501. (textfile (dest #tmpinstall) (include #tmpinstall) (include (tackon #inspartsdir "Copy-loader")) )
  502. )
  503.  
  504. (if (> #srctype 1)
  505. (textfile (dest #tmpinstall) (include #tmpinstall) (include (tackon #inspartsdir "Choose-drive")) )
  506. )
  507.  
  508. (if (NOT (= "" #subdir))
  509.   (textfile (dest #tmpinstall) (include #tmpinstall) (append ("\n(set #subdir \"%s\")\n\n" #subdir)) )
  510. )
  511.  
  512. ;; loop to make disk images/copy files
  513.  
  514. (if (> #srctype 0)
  515. (
  516. (set #diskno 1)
  517. (while
  518.   (<= #diskno #nbdisks)
  519.   (
  520.  
  521.     (if (= 2 #srctype)
  522.      (textfile (dest #tmpinstall) (include #tmpinstall) (include (tackon #inspartsdir "Make-diskimage")) )
  523.     )
  524.  
  525.      (if (= 1 #srctype)
  526.       (
  527.        (if (= #noindex 0)
  528.          (textfile (dest #tmpinstall) (include #tmpinstall) (append "(set #currentdisk (\"%disklabel%%lc\" #diskno))\n") )
  529.          (textfile (dest #tmpinstall) (include #tmpinstall) (append "(set #currentdisk \"%disklabel%\")\n") )
  530.        )
  531.          (textfile (dest #tmpinstall) (include #tmpinstall) (include (tackon #inspartsdir "Copy-floppy")) )
  532.        )
  533.      )
  534.  
  535.      (if (> #srctype 2)
  536.         (textfile (dest #tmpinstall) (include #tmpinstall) (append "(run \"any ripper command\")\n") )
  537.      )
  538.    (textfile (dest #tmpinstall) (include #tmpinstall) (append "(set #diskno (+ #diskno 1))\n") )
  539.    )
  540.  
  541.    (set #diskno (+ #diskno 1))
  542.   )
  543.  
  544. )
  545. ;; CD-ROM source (srctype = 0)
  546. (textfile (dest #tmpinstall) (include #tmpinstall) (include (tackon #inspartsdir "Copy-cdrom")) )
  547. )
  548.  
  549. (if (= #osblast 0)
  550. (textfile (dest #tmpinstall) (include #tmpinstall) (include (tackon #inspartsdir "Copy-startup")) )
  551. )
  552.  
  553. ; generate the specific install-script
  554.  
  555. (run ("%s -f %s %s > %s" 
  556.        #sedcommand
  557.        #sedfile
  558.        #tmpinstall
  559.        #finalicon)
  560. )
  561.  
  562. ; cleanup
  563.  
  564. (delete #tmpinstall)
  565. ;;(delete #sedfile)
  566.  
  567. ; optionnal readme edition
  568.  
  569. (if (= 1 
  570. (askbool (prompt "Do you want to edit the readme file now?")
  571.    (help "You'll be able to edit it later anyway")
  572.    (choices "Yes" "No")
  573.    (default 0)
  574. )
  575. )
  576. (run ("%s %s" #editor (tackon #installdir #readmefile) ))
  577. )
  578.  
  579. ; install-script generated
  580.