home *** CD-ROM | disk | FTP | other *** search
/ swCHIP 1991 January / swCHIP_95-1.bin / desktop / homeplan / hplanet.mst < prev    next >
Text File  |  1995-12-09  |  9KB  |  342 lines

  1. '**************************************************************************
  2. '*                       Home Planet Setup
  3. '**************************************************************************
  4.  
  5. '$DEFINE DEBUG  ''Define for script development/debugging
  6.  
  7. '$INCLUDE 'setupapi.inc'
  8. '$INCLUDE 'msdetect.inc'
  9.  
  10. ''Dialog ID's
  11. CONST WELCOME       = 100
  12. CONST ASKQUIT       = 200
  13. CONST DESTPATH      = 300
  14. CONST EXITFAILURE   = 400
  15. CONST EXITQUIT      = 600
  16. CONST EXITSUCCESS   = 700
  17. CONST OPTIONS       = 800
  18. CONST APPHELP       = 900
  19. CONST CHECK         = 2500
  20. CONST TOOBIG        = 6300
  21. CONST BADPATH       = 6400
  22. CONST CDCONFIRMINFO = 7300
  23. CONST CDGETNAMEORG  = 7500
  24.  
  25. ''Bitmap ID
  26. CONST LOGO = 1
  27.  
  28. ''Resource IDs
  29. CONST REGISTRATION = 257
  30. CONST USERNAME = 1
  31. CONST ORGNAME = 2
  32.  
  33. GLOBAL SrcDir$      ''Source directory
  34. GLOBAL DEST$        ''Default destination directory
  35. GLOBAL OPTCUR$      ''Option selection from option dialog
  36. GLOBAL IMAGES$      ''Images directory
  37. GLOBAL SOUNDS$      ''Sounds directory
  38. GLOBAL EXTRACOSTS$
  39. GLOBAL UNAME$
  40. GLOBAL UORG$
  41. GLOBAL ListSym$
  42. GLOBAL cost&
  43. GLOBAL instApp%
  44. GLOBAL instSaver%
  45.  
  46. DECLARE SUB Install
  47. DECLARE FUNCTION MakePath (szDir$, szFile$) AS STRING
  48.  
  49. INIT:
  50.     CUIDLL$ = "mscuistf.dll"            '' Custom user interface dll
  51.     HELPPROC$ = "FHelpDlgProc"          '' Help dialog procedure
  52.     IMAGES$ = "IMAGES"                  '' Image directory
  53.     SOUNDS$ = "SOUNDS"                  '' Sound directory
  54.  
  55.     SetBitmap CUIDLL$, LOGO
  56.     SetTitle "Home Planet Setup"
  57.  
  58.     szInf$ = GetSymbolValue("STF_SRCINFPATH")
  59.     IF szInf$ = "" THEN
  60.         szInf$ = GetSymbolValue("STF_CWDDIR") + "HPLANET.INF"
  61.     END IF
  62.     ReadInfFile szInf$
  63.  
  64.     OPTCUR$ = "1"
  65.     DEST$ = "C:\HPLANET"
  66.  
  67. '$IFDEF DEBUG
  68.  ''i% = SetCopyMode(0)
  69.     i% = SetSizeCheckMode(scmOnIgnore)    '' could use scmOff; def = scmOnFatal
  70.     WinDrive$ = MID$(GetWindowsDir, 1, 1)
  71.     IF IsDriveValid(WinDrive$) = 0 THEN
  72.         i% = DoMsgBox("Windows drive ('"+WinDrive$+"') is not a valid drive.", "DEBUG", MB_TASKMODAL+MB_ICONHAND+MB_OK)
  73.         GOTO QUIT
  74.     END IF
  75. '$ENDIF ''DEBUG
  76.  
  77.  
  78. WELCOME:
  79.     sz$ = UIStartDlg(CUIDLL$, WELCOME, "FInfoDlgProc", APPHELP, HELPPROC$)
  80.     IF sz$ = "CONTINUE" THEN
  81.         UIPop 1
  82.     ELSE
  83.         GOSUB ASKQUIT
  84.         GOTO WELCOME
  85.     END IF
  86.  
  87.     '' Query user which components should be installed
  88.  
  89. ASKOPTS:
  90.     SetSymbolValue "CheckItemsIn", ""
  91.     AddListItem "CheckItemsIn", "ON"
  92.     AddListItem "CheckItemsIn", "ON"
  93.     SetSymbolValue "OptionsGreyed", ""
  94. ASKOPTS1:
  95.     sz$ = UIStartDlg(CUIDLL$, CHECK, "FCheckDlgProc", APPHELP, HELPPROC$)
  96.     IF sz$ = "CONTINUE" THEN
  97.         UIPop 1
  98.     ELSEIF sz$ = "REACTIVATE" THEN
  99.         GOTO ASKOPTS1
  100.     ELSEIF sz$ = "BACK" THEN
  101.         UIPop 1
  102.         GOTO WELCOME
  103.     ELSE
  104.         GOSUB ASKQUIT
  105.         GOTO ASKOPTS
  106.     END IF
  107.     instApp% = GetListItem("CheckItemsOut", 1) = "ON"
  108.     instSaver% = GetListItem("CheckItemsOut", 2) = "ON"
  109.     IF (instApp% = 0 AND instSaver% = 0) THEN
  110.         GOTO QUIT
  111.     END IF
  112.     IF instApp% = 0 THEN
  113.         GOTO DOCOPY
  114.     END IF
  115.  
  116.     '' Ask for path name into which application will be installed
  117.  
  118. GETPATH:
  119.     SetSymbolValue "EditTextIn", DEST$
  120.     SetSymbolValue "EditFocus", "END"
  121. GETPATHL1:
  122.     sz$ = UIStartDlg(CUIDLL$, DESTPATH, "FEditDlgProc", APPHELP, HELPPROC$)
  123.     DEST$ = GetSymbolValue("EditTextOut")
  124.  
  125.     IF sz$ = "CONTINUE" THEN
  126.         IF IsDirWritable(DEST$) = 0 THEN
  127.             GOSUB BADPATH
  128.             GOTO GETPATHL1
  129.         END IF
  130.         UIPop 1
  131.     ELSEIF sz$ = "REACTIVATE" THEN
  132.         GOTO GETPATHL1
  133.     ELSEIF sz$ = "BACK" THEN
  134.         UIPop 1
  135.         GOTO WELCOME
  136.     ELSE
  137.         GOSUB ASKQUIT
  138.         GOTO GETPATH
  139.     END IF
  140.  
  141. DOCOPY:
  142.     SrcDir$ = GetSymbolValue("STF_SRCDIR")
  143.  
  144.     ClearCopyList
  145.     IF instApp% THEN
  146.         AddSectionFilesToCopyList "Program", SrcDir$, DEST$
  147.         AddSectionFilesToCopyList "Files", SrcDir$, DEST$
  148.         AddSectionFilesToCopyList "Images", SrcDir$, MakePath(DEST$, IMAGES$)
  149.         AddSectionFilesToCopyList "Sounds", SrcDir$, MakePath(DEST$, SOUNDS$)
  150.     END IF
  151.     IF instSaver% THEN
  152.         AddSectionFilesToCopyList "ScreenSaver", SrcDir$, GetWindowsDir()
  153.     END IF
  154.  
  155.     ListSym$ = "AppNeeds"
  156.     EXTRACOSTS$ = "ExtraCosts"
  157.     FOR i% = 1 TO 26 STEP 1
  158.         AddListItem EXTRACOSTS$, "0"
  159.     NEXT i%
  160.     StillNeed& = GetCopyListCost(EXTRACOSTS$, ListSym$, "")
  161.     if StillNeed& > 0 then
  162.         gosub toobig
  163.         goto askopts
  164.     end if
  165.     cost& = 0
  166.     FOR i% = 1 TO 26 STEP 1
  167.         cost&  = cost& + VAL(GetListItem(ListSym$, i%))
  168.     NEXT i%
  169.  
  170. GETUSER:
  171.     IF instApp% = 0 THEN
  172.         GOTO DOINST
  173.     END IF
  174.     SetSymbolValue "EditTextIn", ""
  175.     SetSymbolValue "EditFocus", "END"
  176. GETUSER1:
  177.     sz$ = UIStartDlg(CUIDLL$, CDGETNAMEORG, "FnameOrgDlgProc", APPHELP, HELPPROC$)
  178.     UNAME$ = GetSymbolValue("NameOut")
  179.     UORG$ = GetSymbolValue("OrgOut")
  180.  
  181.     IF sz$ = "CONTINUE" THEN
  182.         IF LEN(uname$) = 0 THEN
  183.             GOTO GETuser1
  184.         END IF
  185.         UIPop 1
  186.     ELSEIF sz$ = "REACTIVATE" THEN
  187.         GOTO GETuser1
  188.     ELSEIF sz$ = "BACK" THEN
  189.         UIPop 1
  190.         GOTO WELCOME
  191.     ELSE
  192.         GOSUB ASKQUIT
  193.         GOTO GEtuser
  194.     END IF
  195.  
  196.     SetSymbolValue "ConfirmTextIn", ""
  197.     AddListItem "ConfirmTextIn", UNAME$
  198.     AddListItem "ConfirmTextIn", UORG$
  199. GETuser2:
  200.     sz$ = UIStartDlg(CUIDLL$, CDCONFIRMINFO, "FConfirmDlgProc", APPHELP, HELPPROC$)
  201.     IF sz$ = "CONTINUE" THEN
  202.         UIPop 1
  203.     ELSEIF sz$ = "REACTIVATE" THEN
  204.         GOTO GETuser2
  205.     ELSEIF sz$ = "BACK" THEN
  206.         UIPop 1
  207.         GOTO GETUSER
  208.     ELSE
  209.         GOSUB ASKQUIT
  210.         GOTO GETUSER
  211.     END IF
  212.  
  213. DOINST:
  214.     Install
  215.  
  216. QUIT:
  217.     ON ERROR GOTO ERRQUIT
  218.  
  219.     IF ERR = 0 THEN
  220.         dlg% = EXITSUCCESS
  221.     ELSEIF ERR = STFQUIT THEN
  222.         dlg% = EXITQUIT
  223.     ELSE
  224.         dlg% = EXITFAILURE
  225.     END IF
  226. QUITL1:
  227.     sz$ = UIStartDlg(CUIDLL$, dlg%, "FInfo0DlgProc", 0, "")
  228.     IF sz$ = "REACTIVATE" THEN
  229.         GOTO QUITL1
  230.     END IF
  231.     UIPop 1
  232.  
  233.     END
  234.  
  235. ERRQUIT:
  236.     i% = DoMsgBox("Setup sources were corrupted!", "Setup Message", MB_OK+MB_TASKMODAL+MB_ICONHAND)
  237.     END
  238.  
  239.  
  240. TOOBIG:
  241.     sz$ = UIStartDlg(CUIDLL$, TOOBIG, "FInfo0DlgProc", 0, "")
  242.     IF sz$ = "REACTIVATE" THEN
  243.         GOTO TOOBIG
  244.     END IF
  245.     UIPop 1
  246.     RETURN
  247.  
  248.  
  249. BADPATH:
  250.     sz$ = UIStartDlg(CUIDLL$, BADPATH, "FInfo0DlgProc", 0, "")
  251.     IF sz$ = "REACTIVATE" THEN
  252.         GOTO BADPATH
  253.     END IF
  254.     UIPop 1
  255.     RETURN
  256.  
  257.  
  258.  
  259. ASKQUIT:
  260.     sz$ = UIStartDlg(CUIDLL$, ASKQUIT, "FQuitDlgProc", 0, "")
  261.  
  262.     IF sz$ = "EXIT" THEN
  263.         UIPopAll
  264.         ERROR STFQUIT
  265.     ELSEIF sz$ = "REACTIVATE" THEN
  266.         GOTO ASKQUIT
  267.     ELSE
  268.         UIPop 1
  269.     END IF
  270.     RETURN
  271.  
  272.  
  273.  
  274. '**
  275. '** Purpose:
  276. '**     Builds the copy list and performs all installation operations.
  277. '** Arguments:
  278. '**     none.
  279. '** Returns:
  280. '**     none.
  281. '*************************************************************************
  282. SUB Install STATIC
  283.  
  284.     CreateDir DEST$, cmoNone
  285.     CreateDir MakePath(DEST$, IMAGES$), cmoNone
  286.     CreateDir MakePath(DEST$, SOUNDS$), cmoNone
  287.  
  288.     OpenLogFile MakePath(DEST$, "install.log"), 0
  289.     WriteToLogFile "Home Planet Installation Log"
  290.     WriteToLogFile ""
  291.     WriteToLogFile "Destination directory: '" + DEST$ + "'"
  292.     WriteToLogFile "User name: " + UNAME$
  293.     WriteToLogFile "Organisation name: " + UORG$
  294.     WriteToLogFile "Total disc space used by installed files: " + STR$(cost& / 1024) + "K"
  295.  
  296.     CopyFilesInCopyList
  297.  
  298.     IF instApp% THEN
  299.             if (len(UNAME$) > 55) then
  300.                 UNAME$ = MID$(UNAME$, 1, 55)
  301.             end if
  302.             if (len(UORG$) > 55) then
  303.                 UORG$ = MID$(UORG$, 1, 55)
  304.             end if
  305.             StampResource "Program", "Hplanet", DEST$, REGISTRATION, USERNAME, UNAME$ + CHR$(0), len(UNAME$) + 1
  306.             if (len(UORG$) > 0) then 
  307.                 StampResource "Program", "Hplanet", DEST$, REGISTRATION, ORGNAME, UORG$ + CHR$(0), len(UORG$) + 1
  308.             end if
  309.             CreateProgmanGroup "Home Planet", "", cmoNone
  310.             ShowProgmanGroup  "Home Planet", 1, cmoNone
  311.             CreateProgmanItem "Home Planet", "Home Planet", MakePath(DEST$, "hplanet.exe"), "", cmoOverwrite
  312.  
  313.             AddDos5Help "HPLANET", "Autodesk Home Planet for Windows."+chr$(10)+"Open a Window on the universe.", cmoNone
  314.     END IF
  315.  
  316.     CloseLogFile
  317.  
  318. END SUB
  319.  
  320. '**
  321. '** Purpose:
  322. '**     Appends a file name to the end of a directory path,
  323. '**     inserting a backslash character as needed.
  324. '** Arguments:
  325. '**     szDir$  - full directory path (with optional ending "\")
  326. '**     szFile$ - filename to append to directory
  327. '** Returns:
  328. '**     Resulting fully qualified path name.
  329. '*************************************************************************
  330. FUNCTION MakePath (szDir$, szFile$) STATIC AS STRING
  331.     IF szDir$ = "" THEN
  332.         MakePath = szFile$
  333.     ELSEIF szFile$ = "" THEN
  334.         MakePath = szDir$
  335.     ELSEIF MID$(szDir$, LEN(szDir$), 1) = "\" THEN
  336.         MakePath = szDir$ + szFile$
  337.     ELSE
  338.         MakePath = szDir$ + "\" + szFile$
  339.     END IF
  340. END FUNCTION
  341.  
  342.