home *** CD-ROM | disk | FTP | other *** search
/ Power-Programmierung / CD2.mdf / doc / wintutor / demo94.ms_ / demo94.ms
Encoding:
Text File  |  1994-05-17  |  7.6 KB  |  296 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.  
  11. PRODUCT$    = "DEMO94"
  12. REGKEY_1$   = PRODUCT$ + "UsrName"
  13. REGKEY_2$   = PRODUCT$ + "UsrOrg"
  14. TITLE$        = "Lernprogramme von PROKODA"
  15. DESTDIR$    = PRODUCT$
  16. REGFILE$      = PRODUCT$ + ".rgt"
  17.  
  18. ''Dialog ID's
  19. CONST WELCOME           = 100
  20. CONST ASKQUIT           = 200
  21. CONST DESTPATH          = 300
  22. CONST EXITFAILURE       = 400
  23. CONST EXITQUIT          = 600
  24. CONST EXITSUCCESS       = 700
  25. CONST APPHELP           = 900
  26. CONST APPHELP_1           = 1100
  27. CONST APPHELP_2           = 1200
  28. CONST BADPATH             = 6400            
  29. CONST CDCONFIRMINFO     = 7300
  30. CONST CDGETNAMEORG      = 7500    
  31. CONST CDCONFIRMNOSPACE     = 8000
  32.  
  33. ''Bitmap ID
  34. CONST LOGO = 1
  35.  
  36. GLOBAL DEST$        ''Default destination directory.
  37. GLOBAL OPTCUR$      ''Option selection from option dialog.
  38. GLOBAL USRNAME$
  39. GLOBAL USRORG$
  40. GLOBAL REGORG$
  41. GLOBAL FILENEED$
  42. GLOBAL EXTRACOSTS$
  43.  
  44. DECLARE SUB Install
  45. DECLARE FUNCTION MakePath (szDir$, szFile$) AS STRING
  46. DECLARE FUNCTION PadSymbol (szString$, size) AS STRING
  47.  
  48. INIT:
  49.     CUIDLL$   = "mscuistf.dll"         ''Custom user interface dll
  50.     HELPPROC$ = "FHelpDlgProc"          ''Help dialog procedure
  51.  
  52.     SetBitmap CUIDLL$, LOGO
  53.     SetTitle TITLE$
  54.  
  55.     szInf$ = GetSymbolValue("STF_SRCINFPATH")
  56.     IF szInf$ = "" THEN
  57.         szInf$ = GetSymbolValue("STF_CWDDIR") + "SETUP.INF"
  58.     END IF
  59.     ReadInfFile szInf$
  60.  
  61.     EXTRACOSTS$ = "ExtraCosts"
  62.     FOR i% = 1 TO 26 STEP 1
  63.             AddListItem EXTRACOSTS$, "0"
  64.     NEXT i%
  65.  
  66.     WinDrive$ = MID$(GetWindowsDir, 1, 1)
  67.     DEST$ = Windrive$ + ":\TUTORWIN\Demo94"
  68.  
  69. '$IFDEF DEBUG
  70.     i% = SetSizeCheckMode(scmOnIgnore)    '' could use scmOff; def = scmOnFatal
  71.     WinDrive$ = MID$(GetWindowsDir, 1, 1)
  72.     IF IsDriveValid(WinDrive$) = 0 THEN
  73.             i% = DoMsgBox("Windows drive ('"+WinDrive$+"') is not a valid drive.", "DEBUG", MB_TASKMODAL+MB_ICONHAND+MB_OK)
  74.         GOTO QUIT
  75.     END IF
  76. '$ENDIF ''DEBUG
  77.  
  78.  
  79. WELCOME:
  80.         MajorNo% = GetWindowsMajorVersion()
  81.         MinorNo% = GetWindowsMinorVersion()
  82.  
  83.         IF ( MajorNo% < 3 ) THEN
  84.             i% = DoMsgBox("Das Programm erfordert Windows Version 3.1 oder nachfolgende Versionen.", "Setup-Nachricht", MB_TASKMODAL+MB_ICONHAND+MB_OK)
  85.         ERR = STFQUIT
  86.         GOTO QUIT
  87.     END IF
  88.  
  89.         IF ( MinorNo% < 1 ) THEN
  90.         i% = DoMsgBox("Das Programm erfordert Windows Version 3.1 oder nachfolgende Versionen.", "Setup-Nachricht", MB_TASKMODAL+MB_ICONHAND+MB_OK)
  91.         ERR = STFQUIT
  92.         GOTO QUIT
  93.     END IF
  94.  
  95.         sz$ = UIStartDlg(CUIDLL$, WELCOME, "FInfoDlgProc", APPHELP, HELPPROC$)
  96.         UIPop 1
  97.  
  98.         IF sz$ <> "CONTINUE" THEN
  99.         ERR = STFQUIT
  100.         GOTO QUIT
  101.         END IF
  102.  
  103. REGISTRATION:
  104. CONFIRM:
  105. GETPATH:
  106.     SetSymbolValue "EditTextIn", DEST$
  107.     SetSymbolValue "EditFocus", "END"
  108. GETPATHL1:
  109.         sz$ = UIStartDlg(CUIDLL$, DESTPATH, "FEditDlgProc", APPHELP_2, HELPPROC$)
  110.     DEST$ = GetSymbolValue("EditTextOut")
  111.  
  112.     IF sz$ = "CONTINUE" THEN
  113.             IF IsDirWritable(DEST$) = 0 THEN
  114.                 GOSUB BADPATH
  115.                 GOTO GETPATHL1
  116.             END IF
  117.             UIPop 1
  118.     ELSEIF sz$ = "REACTIVATE" THEN
  119.             GOTO GETPATHL1
  120.     ELSEIF sz$ = "BACK" THEN
  121.             UIPop 1
  122.         GOTO REGISTRATION
  123.     ELSE
  124.             GOSUB ASKQUIT
  125.             GOTO GETPATH
  126.     END IF
  127.  
  128.           
  129. CHECKSPACE:
  130.  
  131.         CursorSave% = ShowWaitCursor()
  132.         FILENEED$ = "FileNeed"
  133.     SrcDir$ = GetSymbolValue("STF_SRCDIR")
  134.         ClearCopyList
  135.         AddSectionFilesToCopyList "Files", SrcDir$, DEST$
  136.  
  137.         StillNeed& = GetCopyListCost(EXTRACOSTS$, FILENEED$, "")
  138.  
  139.         cost& = 0
  140.         FOR i% = 1 TO 26 STEP 1
  141.         cost&  = cost& + VAL(GetListItem(FILENEED$, i%))
  142.         NEXT i%
  143.  
  144.         drive$ = MID$(DEST$, 1, 1)
  145.         free& = GetFreeSpaceForDrive(drive$)
  146.      
  147.     RestoreCursor CursorSave%
  148.  
  149.         IF free& < cost& THEN
  150.             CONFIRMTEXTIN$ = "ConfirmTextIn"
  151.             FOR i% = 1 TO 10 STEP 1
  152.             AddListItem CONFIRMTEXTIN$, ""
  153.             NEXT i%
  154.  
  155.  
  156.             ReplaceListItem CONFIRMTEXTIN$, 1, STR$(cost& / 1024) + " K"
  157.             ReplaceListItem CONFIRMTEXTIN$, 2, STR$(free& / 1024) + " K"
  158.  
  159.             sz$ = UIStartDlg(CUIDLL$, CDCONFIRMNOSPACE, "FConfirmDlgProc", APPHELP, HELPPROC$)
  160.             UIPop 1
  161.  
  162.             IF sz$ = "CONTINUE" THEN
  163.               GOTO CHECKSPACE
  164.             ELSEIF sz$ = "BACK" THEN
  165.                 UIPop 1
  166.             GOTO GETPATH
  167.           ELSE
  168.               GOSUB ASKQUIT
  169.               GOTO CHECKSPACE
  170.             END IF                 
  171.                               
  172.     END IF
  173.  
  174.         Install
  175.  
  176.  
  177. QUIT:
  178. ''        ON ERROR GOTO ERRQUIT
  179.  
  180.         IF ERR = 0 THEN
  181.             dlg% = EXITSUCCESS
  182.         ELSEIF ERR = STFQUIT THEN
  183.             dlg% = EXITQUIT
  184.         ELSE
  185.             dlg% = EXITFAILURE
  186.         END IF
  187. QUITL1:
  188.         sz$ = UIStartDlg(CUIDLL$, dlg%, "FInfo0DlgProc", 0, "")
  189.         IF sz$ = "REACTIVATE" THEN
  190.             GOTO QUITL1
  191.         END IF
  192.         UIPop 1
  193.  
  194.         END
  195.  
  196. ERRQUIT:
  197.     i% = DoMsgBox("Die Quelldateien des Setup-Programms sind beschΣdigt! Die Installation ist so nicht m÷glich.", "Setup Nachricht", MB_OK+MB_TASKMODAL+MB_ICONHAND)
  198.         END
  199.  
  200.  
  201.  
  202. BADPATH:
  203.         sz$ = UIStartDlg(CUIDLL$, BADPATH, "FInfo0DlgProc", 0, "")
  204.         IF sz$ = "REACTIVATE" THEN
  205.             GOTO BADPATH
  206.         END IF
  207.         UIPop 1
  208.         RETURN
  209.  
  210.  
  211.  
  212. ASKQUIT:
  213.         sz$ = UIStartDlg(CUIDLL$, ASKQUIT, "FQuitDlgProc", 0, "")
  214.  
  215.         IF sz$ = "EXIT" THEN
  216.             UIPopAll
  217.             ERROR STFQUIT
  218.         ELSEIF sz$ = "REACTIVATE" THEN
  219.             GOTO ASKQUIT
  220.         ELSE
  221.             UIPop 1
  222.         END IF
  223.         RETURN
  224.  
  225.  
  226.  
  227. '**
  228. '** Purpose:
  229. '**     Builds the copy list and performs all installation operations.
  230. '** Arguments:
  231. '**     none.
  232. '** Returns:
  233. '**     none.
  234. '*************************************************************************
  235. SUB Install STATIC
  236.  
  237.         SrcDir$ = GetSymbolValue("STF_SRCDIR")
  238.         CreateDir DEST$, cmoNone
  239.  
  240.         AddSectionFilesToCopyList "Files", SrcDir$, DEST$
  241.         CopyFilesInCopyList
  242.  
  243.     Prog$ = DEST$ + "\adwin.exe tw_demo"
  244.     Other$ = ",,,," + DEST$
  245.  
  246.         CreateProgmanGroup "TutorWin Lernprogramme", "", cmoNone
  247.         ShowProgmanGroup  "TutorWin Lernprogramme", 1, cmoNone
  248.     CreateProgmanItem "TutorWin Lernprogramme", "TutorWin Demo", Prog$, Other$, cmoOverwrite
  249.  
  250. END SUB
  251.  
  252.  
  253.  
  254. '**
  255. '** Purpose:
  256. '**     Appends a file name to the end of a directory path,
  257. '**     inserting a backslash character as needed.
  258. '** Arguments:
  259. '**     szDir$  - full directory path (with optional ending "\")
  260. '**     szFile$ - filename to append to directory
  261. '** Returns:
  262. '**     Resulting fully qualified path name.
  263. '*************************************************************************
  264. FUNCTION MakePath (szDir$, szFile$) STATIC AS STRING
  265.         IF szDir$ = "" THEN
  266.             MakePath = szFile$
  267.         ELSEIF szFile$ = "" THEN
  268.             MakePath = szDir$
  269.     ELSEIF MID$(szDir$, LEN(szDir$), 1) = "\" THEN
  270.             MakePath = szDir$ + szFile$
  271.         ELSE
  272.             MakePath = szDir$ + "\" + szFile$
  273.         END IF
  274. END FUNCTION
  275.  
  276.  
  277. '**
  278. '** Purpose:
  279. '**     Padding a String to size
  280. '**                                                  
  281. '** Arguments:
  282. '**     szString$ - String to pad                                 
  283. '**     len_to - desired length
  284. '** Returns:
  285. '**     padded String.
  286. '*************************************************************************
  287. FUNCTION PadSymbol (szString$, len_to ) STATIC AS STRING
  288.     actlen = LEN(szString$)
  289. ''    i% = DoMsgBox(szString$ + "    " + STR$(actlen), "PadSymbol", MB_TASKMODAL+MB_ICONHAND+MB_OK)
  290.     IF actlen < len_to THEN
  291.         FOR i = actlen to len_to STEP 1
  292.             szString$ = szString$ + " "
  293.         NEXT i
  294.     END IF
  295.     PadSymbol = szString$
  296. END FUNCTION