home *** CD-ROM | disk | FTP | other *** search
/ Liren Large Software Subsidy 10 / 10.iso / m / m004 / 1.ddi / MORPH.MS_ / MORPH.bin
Encoding:
Text File  |  1993-05-21  |  7.5 KB  |  286 lines

  1. '**************************************************************************
  2. '*                       MSSetup Toolkit Sample 1
  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 BADPATH       = 6400
  20. CONST CDGETSERIAL   = 7900
  21. CONST BADSERIAL      = 8000
  22. CONST NOSERIAL            = 8001
  23.  
  24. ''Bitmap ID
  25. CONST LOGO = 1
  26.  
  27. GLOBAL DEST$        ''Default destination directory.
  28. GLOBAL SAMPDIR$     ''Samples directory
  29. GLOBAL OPTCUR$      ''Option selection from option dialog.
  30. GLOBAL WINDRIVE$    ''Windows Drive Letter.
  31. GLOBAL WINSYSTEM$   ''Windows System Directory
  32. GLOBAL SER$            ''Serial number.
  33.  
  34.  
  35. ''following were taken from windows.h. &H means they're hex
  36. 'CONST WS_VISIBLE=&H10000000
  37. 'CONST WS_BORDER =&H00800000
  38. 'CONST WS_CLIPCHILDREN =&H02000000
  39. 'CONST GWL_STYLE =-16
  40. 'CONST SW_SHOWMAXIMIZED=3
  41.  
  42.  
  43. 'DECLARE FUNCTION ShowWindow  LIB "user.exe" (hWnd%,iShow%) AS INTEGER
  44. 'DECLARE FUNCTION SetWindowLong LIB "user.exe" (hWnd%, offset%, style&) AS LONG  
  45.  
  46.  
  47. DECLARE SUB Install
  48. DECLARE FUNCTION MakePath (szDir$, szFile$) AS STRING
  49.  
  50.  
  51. INIT:
  52.     CUIDLL$ = "mscuistf.dll"            ''Custom user interface dll
  53.     HELPPROC$ = "FHelpDlgProc"          ''Help dialog procedure
  54.  
  55.     SetBitmap CUIDLL$, LOGO
  56.     SetTitle "MORPH"
  57.  
  58. 'hWnd%=HwndFrame()
  59. 'i&=SetWindowLong(hWnd%,GWL_STYLE,WS_VISIBLE+WS_BORDER+WS_CLIPCHILDREN)
  60. 'j%=ShowWindow(hWnd%,SW_SHOWMAXIMIZED)
  61.  
  62.     szInf$ = GetSymbolValue("STF_SRCINFPATH")
  63.     IF szInf$ = "" THEN
  64.         szInf$ = GetSymbolValue("STF_CWDDIR") + "MORPH.INF"
  65.     END IF
  66.     ReadInfFile szInf$
  67.  
  68.     OPTCUR$ = "1"
  69.     WINDRIVE$ = MID$(GetWindowsDir, 1, 1)
  70.     WINSYSTEM$ = GetWindowsSysDir()
  71.     DEST$ = WINDRIVE$ + ":\MORPH"
  72.  
  73. '$IFDEF DEBUG
  74.     i% = SetSizeCheckMode(scmOnIgnore)    '' could use scmOff; def = scmOnFatal
  75.     WinDrive$ = MID$(GetWindowsDir, 1, 1)
  76.     IF IsDriveValid(WinDrive$) = 0 THEN
  77.         i% = DoMsgBox("Windows drive ('"+WinDrive$+"') is not a valid drive.", "DEBUG", MB_TASKMODAL+MB_ICONHAND+MB_OK)
  78.         GOTO QUIT
  79.     END IF
  80. '$ENDIF ''DEBUG
  81.  
  82.  
  83. WELCOME:
  84.     sz$ = UIStartDlg(CUIDLL$, WELCOME, "FInfoDlgProc", APPHELP, HELPPROC$)
  85.     IF sz$ = "CONTINUE" THEN
  86.         UIPop 1
  87.     ELSE
  88.         GOSUB ASKQUIT
  89.         GOTO WELCOME
  90.     END IF
  91.  
  92. GETSERIAL:
  93.     sz$ = UIStartDlg(CUIDLL$, CDGETSERIAL, "FSerialDlgProc", APPHELP, HELPPROC$)
  94.     SER$ = GetSymbolValue("SerialOut")
  95.     IF sz$ = "CONTINUE" THEN
  96.         IF SER$ = "0" THEN
  97.             GOSUB NOSERIAL
  98.             GOTO GETSERIAL
  99.           ELSEIF SER$ = "2" THEN
  100.             GOSUB BADSERIAL
  101.             GOTO GETSERIAL
  102.         END IF
  103.         UIPop 1
  104.     ELSE
  105.         GOSUB ASKQUIT
  106.         GOTO GETSERIAL
  107.     END IF
  108.  
  109. OPTION:
  110.     SetSymbolValue "RadioDefault", OPTCUR$
  111. OPTL1:
  112.     sz$ = UIStartDlg(CUIDLL$, OPTIONS, "FRadioDlgProc", APPHELP, HELPPROC$)
  113.     OPTCUR$ = GetSymbolValue("ButtonChecked")
  114.  
  115.     IF sz$ = "CONTINUE" THEN
  116.         UIPop(1)
  117.     ELSEIF sz$ = "REACTIVATE" THEN
  118.         GOTO OPTL1
  119.     ELSE
  120.         GOSUB ASKQUIT
  121.         GOTO OPTION
  122.     END IF
  123.  
  124.  
  125. GETPATH:
  126.     SetSymbolValue "EditTextIn", DEST$
  127.     SetSymbolValue "EditFocus", "END"
  128. GETPATHL1:
  129.     sz$ = UIStartDlg(CUIDLL$, DESTPATH, "FEditDlgProc", APPHELP, HELPPROC$)
  130.     DEST$ = GetSymbolValue("EditTextOut")
  131.  
  132.     IF sz$ = "CONTINUE" THEN
  133.         IF IsDirWritable(DEST$) = 0 THEN
  134.             GOSUB BADPATH
  135.             GOTO GETPATHL1
  136.           ELSEIF OPTCUR$ = "2" THEN
  137.                 SAMPDIR$ = DEST$ + "\SAMPLES"
  138.         END IF
  139.         UIPop 1
  140.     ELSEIF sz$ = "REACTIVATE" THEN
  141.         GOTO GETPATHL1
  142.     ELSEIF sz$ = "BACK" THEN
  143.         UIPop 1
  144.         GOTO OPTION
  145.     ELSE
  146.         GOSUB ASKQUIT
  147.         GOTO GETPATH
  148.     END IF
  149.  
  150.  
  151.     Install
  152.  
  153.  
  154. QUIT:
  155.     ON ERROR GOTO ERRQUIT
  156.  
  157.     IF ERR = 0 THEN
  158.         dlg% = EXITSUCCESS
  159.     ELSEIF ERR = STFQUIT THEN
  160.         dlg% = EXITQUIT
  161.     ELSE
  162.         dlg% = EXITFAILURE
  163.     END IF
  164. QUITL1:
  165.     sz$ = UIStartDlg(CUIDLL$, dlg%, "FInfo0DlgProc", 0, "")
  166.     IF sz$ = "REACTIVATE" THEN
  167.         GOTO QUITL1
  168.     END IF
  169.     UIPop 1
  170.  
  171.     END
  172.  
  173. ERRQUIT:
  174.     i% = DoMsgBox("Setup sources were corrupted, call (619) 536-8815!", "Setup Error", MB_OK+MB_TASKMODAL+MB_ICONHAND)
  175.     END
  176.  
  177.  
  178.  
  179. BADPATH:
  180.     sz$ = UIStartDlg(CUIDLL$, BADPATH, "FInfo0DlgProc", 0, "")
  181.     IF sz$ = "REACTIVATE" THEN
  182.         GOTO BADPATH
  183.     END IF
  184.     UIPop 1
  185.     RETURN
  186.  
  187. BADSERIAL:
  188.     sz$ = UIStartDlg(CUIDLL$, BADSERIAL, "FInfo0DlgProc", 0, "")
  189.     IF sz$ = "REACTIVATE" THEN
  190.         GOTO BADSERIAL
  191.     END IF
  192.     UIPop 1
  193.     RETURN
  194.  
  195. NOSERIAL:
  196.     sz$ = UIStartDlg(CUIDLL$, NOSERIAL, "FInfo0DlgProc", 0, "")
  197.     IF sz$ = "REACTIVATE" THEN
  198.         GOTO NOSERIAL
  199.     END IF
  200.     UIPop 1
  201.     RETURN
  202.  
  203. ASKQUIT:
  204.     sz$ = UIStartDlg(CUIDLL$, ASKQUIT, "FQuitDlgProc", 0, "")
  205.  
  206.     IF sz$ = "EXIT" THEN
  207.         UIPopAll
  208.         ERROR STFQUIT
  209.     ELSEIF sz$ = "REACTIVATE" THEN
  210.         GOTO ASKQUIT
  211.     ELSE
  212.         UIPop 1
  213.     END IF
  214.     RETURN
  215.  
  216.  
  217.  
  218. '**
  219. '** Purpose:
  220. '**     Builds the copy list and performs all installation operations.
  221. '** Arguments:
  222. '**     none.
  223. '** Returns:
  224. '**     none.
  225. '*************************************************************************
  226. SUB Install STATIC
  227.  
  228.     SrcDir$ = GetSymbolValue("STF_SRCDIR")
  229.     CreateDir DEST$, cmoNone
  230.  
  231. '    OpenLogFile MakePath(DEST$, "LOGFILE.OUT"), 0
  232. '    WriteToLogFile ""
  233. '    WriteToLogFile "  User chose as destination directory: '" + DEST$ + "'"
  234. '    WriteToLogFile "  User chose option: '" + OPTCUR$ + "'"
  235. '    WriteToLogFile ""
  236. '    WriteToLogFile "May have had to create the directory: " + DEST$
  237. '    WriteToLogFile ""
  238.  
  239.     AddSectionFilesToCopyList "Files", SrcDir$, DEST$
  240.     AddSectionFilesToCopyList "WinFiles", SrcDir$, WINSYSTEM$
  241.      IF OPTCUR$ = "2" THEN
  242.         AddSectionFilesToCopyList "Samples", SrcDir$, SAMPDIR$
  243.      ENDIF
  244.     CopyFilesInCopyList
  245.  
  246. '    ini$ = MakePath(DEST$, "DEMO.INI")
  247. '    CreateIniKeyValue "WIN.INI", "Morph Setup", "Option", OPTCUR$, cmoNone
  248. '    CreateIniKeyValue ini$, "Section 1", "Key 1", "Value 1" , cmoNone
  249. '    CreateIniKeyValue ini$, "Section 2", "Key 2", "Value 2" , cmoNone
  250. '    CreateIniKeyValue ini$, "Section 3", "Key 3", "Value 3" , cmoNone
  251.  
  252.     CreateProgmanGroup "MORPH", "", cmoNone
  253.     ShowProgmanGroup  "MORPH", 1, cmoNone
  254.     CreateProgmanItem "MORPH", "morph", MakePath(DEST$,"morph.exe"), "", cmoOverwrite
  255.  
  256. '    AddDos5Help "YOURAPP", "A brief help text for your Windows application."+chr$(10)+"It can be continued on another line with chr$(10).", cmoNone
  257.  
  258. '    CloseLogFile
  259.  
  260. END SUB
  261.  
  262.  
  263.  
  264. '**
  265. '** Purpose:
  266. '**     Appends a file name to the end of a directory path,
  267. '**     inserting a backslash character as needed.
  268. '** Arguments:
  269. '**     szDir$  - full directory path (with optional ending "\")
  270. '**     szFile$ - filename to append to directory
  271. '** Returns:
  272. '**     Resulting fully qualified path name.
  273. '*************************************************************************
  274. FUNCTION MakePath (szDir$, szFile$) STATIC AS STRING
  275.     IF szDir$ = "" THEN
  276.         MakePath = szFile$
  277.     ELSEIF szFile$ = "" THEN
  278.         MakePath = szDir$
  279.     ELSEIF MID$(szDir$, LEN(szDir$), 1) = "\" THEN
  280.         MakePath = szDir$ + szFile$
  281.     ELSE
  282.         MakePath = szDir$ + "\" + szFile$
  283.     END IF
  284. END FUNCTION
  285.  
  286.