home *** CD-ROM | disk | FTP | other *** search
/ A Very Interactive Christmas / CHRISTMAS.ISO / CHRISTMS.MST < prev    next >
Text File  |  1997-10-04  |  11KB  |  365 lines

  1. '$DEFINE DEBUG  ''Define for script development/debugging
  2.  
  3. '$INCLUDE 'setupapi.inc'
  4. '$INCLUDE 'msdetect.inc'
  5.  
  6. ''Dialog ID's
  7. CONST WELCOME            = 100
  8. CONST LICENSE            = 150
  9. CONST ASKQUIT            = 200
  10. CONST DESTPATH           = 300
  11. CONST EXITFAILURE        = 400
  12. CONST EXITQUIT           = 600
  13. CONST EXITSUCCESS        = 700
  14. CONST OPTIONS            = 800
  15. CONST APPHELP            = 900
  16. CONST LAUNCH             = 1000
  17. CONST BADPATH            = 6400
  18. CONST EXTENDEDLIST       = 3900
  19. CONST NEWERVERINSTALLED  = 7801
  20.  
  21. ''Bitmap ID
  22. CONST LOGO = 1
  23.  
  24. GLOBAL DEST$        ''Default destination directory.
  25. GLOBAL CDROMDRV$    ''CD-ROM Drive Letter.
  26. GLOBAL OPTCUR$      ''Option selection from option dialog.
  27.  
  28. CONST WS_VISIBLE            = &H10000000
  29. CONST WS_BORDER             = &H00800000
  30. CONST WS_CLIPCHILDREN       = &H02000000
  31. CONST GWL_STYLE             = -16
  32. CONST SW_SHOWMAXIMIZED      = 3
  33. CONST FN_INF                = "CHRISTMS.INF"
  34. CONST SZ_TITLE              = "A Very Interactive Christmas! Setup"
  35. CONST SZ_GROUPNAME          = "Memorex"
  36. CONST FN_INIDATA            = "CELEBRAT.INI"
  37. CONST FN_HELPFILE           = "CELEBRAT.HLP"
  38. CONST FN_EXE            = "CHRISTMS.EXE"
  39.  
  40. GLOBAL FN_INI$                ' INI Filename (for product)
  41. GLOBAL FN_ICON$               ' Icon Filename (no path)
  42. GLOBAL SZ_DBF$                ' Database Filename (no path)
  43. GLOBAL SZ_PRODUCT$            ' Product Title
  44. GLOBAL SZ_LMICD_ID$           ' LMI CD identifier
  45. GLOBAL SZ_LMICD_TITLE$        ' LMI CD product title
  46. GLOBAL SZ_LMICD_CDTITLE$      ' LMI CD label on CD
  47. GLOBAL SZ_LMICD_PRODUCTLINE$  ' LMI CD product line
  48.  
  49. DECLARE FUNCTION ShowWindow  LIB "user.exe" (hWnd%, iShow%) AS INTEGER
  50. DECLARE FUNCTION SetWindowLong LIB "user.exe" (hWnd%, offset%, style&) AS LONG
  51. DECLARE SUB Install
  52. DECLARE FUNCTION MakePath (szDir$, szFile$) AS STRING
  53. DECLARE FUNCTION WinHelp LIB "User" (hWnd%, lpHelpFile$, wCommand%, dwData&) As INTEGER
  54. DECLARE FUNCTION WinExec Lib "Kernel" (lpCmdLine$, nCmdShow%) As INTEGER
  55.  
  56. INIT:
  57.  
  58.     hWnd%=HwndFrame()
  59.     i1&=SetWindowLong(hWnd%, GWL_STYLE, WS_VISIBLE + WS_BORDER + WS_CLIPCHILDREN)
  60.     j1%=ShowWindow(hWnd%, SW_SHOWMAXIMIZED)
  61.  
  62.     CUIDLL$ = "mscuistf.dll"            ''Custom user interface dll
  63.     HELPPROC$ = "FHelpDlgProc"          ''Help dialog procedure
  64.  
  65.     SetBitmap CUIDLL$, LOGO
  66.     SetTitle SZ_TITLE
  67.  
  68.     szInf$ = GetSymbolValue("STF_SRCINFPATH")
  69.     IF szInf$ = "" THEN
  70.         szInf$ = GetSymbolValue("STF_CWDDIR") + FN_INF
  71.     END IF
  72.     ReadInfFile szInf$
  73.  
  74.  
  75.     OPTCUR$ = "1"
  76. '    DEST$ = SZ_DEST
  77.     CDROMDRV$ = MID$(GetSymbolValue("STF_SRCDIR"), 1, 1) + ":"
  78.  
  79.     ' Read from PLATINUM.INI File
  80.     ini$ = MakePath(CDROMDRV$, FN_INIDATA)
  81.     FN_INI$ = GetIniKeyString (ini$, "Settings", "INIFile")
  82.     FN_ICON$ = GetIniKeyString (ini$, "Setup Information", "Icon")
  83.     DEST$ = GetIniKeyString (ini$, "Setup Information", "Destination")
  84.     SZ_DBF$ = GetIniKeyString (ini$, "Setup Information", "Database")
  85.     SZ_PRODUCT$ = GetIniKeyString (ini$, "Product", "Title")
  86.     SZ_LMICD_ID$ = GetIniKeyString (ini$, "Setup Information", "LMICD_ID")
  87.     SZ_LMICD_TITLE$ = GetIniKeyString (ini$, "Setup Information", "LMICD_Title")
  88.     SZ_LMICD_CDTITLE$ = GetIniKeyString (ini$, "Setup Information", "LMICD_CDTitle")
  89.     SZ_LMICD_PRODUCTLINE$ = GetIniKeyString (ini$, "Setup Information", "LMICD_PRODUCTLINE")
  90.  
  91.     i% = SetSizeCheckMode(scmOff)
  92.  
  93. '$IFDEF DEBUG
  94.     i% = SetSizeCheckMode(scmOnIgnore)    '' could use scmOff; def = scmOnFatal
  95.     WinDrive$ = MID$(GetWindowsDir, 1, 1)
  96.     IF IsDriveValid(WinDrive$) = 0 THEN
  97.         i% = DoMsgBox("Windows drive ('"+WinDrive$+"') is not a valid drive.", "DEBUG", MB_TASKMODAL+MB_ICONHAND+MB_OK)
  98.         GOTO QUIT
  99.     END IF
  100. '$ENDIF 'DEBUG
  101.  
  102.  
  103.  
  104.  
  105.  
  106. WELCOME:
  107.     sz$ = UIStartDlg(CUIDLL$, WELCOME, "FInfoDlgProc", APPHELP, HELPPROC$)
  108.     IF sz$ = "CONTINUE" THEN
  109.         UIPop 1
  110.     ELSE
  111.         GOSUB ASKQUIT
  112.         GOTO WELCOME
  113.     END IF
  114.  
  115.  
  116.  
  117.  
  118.  
  119. 'LICENSE:
  120. '    sz$ = UIStartDlg(CUIDLL$, LICENSE, "FConfirmDlgProc", APPHELP, HELPPROC$)
  121. '    IF sz$ = "CONTINUE" THEN
  122. '        UIPop 1
  123. '    ELSEIF sz$ = "LICENSE" THEN
  124. '        i = WinHelp(hWnd%, MakePath(CDROMDRV$, FN_HELPFILE), 1, 900)
  125. '        GOTO LICENSE
  126. '    ELSEIF sz$ = "REACTIVATE" THEN
  127. '        GOTO LICENSE
  128. '    ELSEIF sz$ = "BACK" THEN
  129. '        UIPop 1
  130. '        GOTO WELCOME
  131. '    ELSE
  132. '        GOSUB ASKQUIT
  133. '        GOTO LICENSE
  134. '    END IF
  135.  
  136.  
  137.  
  138.  
  139.  
  140. 'IF DoesFileExist (MakePath(GetWindowsDir, FN_INI$), femExist) = 1 THEN
  141. '
  142. '    iCurrentVer = Val(GetIniKeyString (MakePath(CDROMDRV$, FN_INIDATA), "Product", "Release"))
  143. '    iInstalledVer = Val(GetIniKeyString (MakePath(GetWindowsDir, FN_INI$), "Product", "Release"))
  144. '
  145. '    If iCurrentVer < iInstalledVer Then
  146. '
  147. 'NEWERVERINSTALLED:
  148. '        sz$ = UIStartDlg(CUIDLL$, NEWERVERINSTALLED, "FInfoDlgProc", APPHELP, HELPPROC$)
  149. '        IF sz$ = "CONTINUE" THEN
  150. '            UIPop 1
  151. '        ELSEIF sz$ = "REACTIVATE" THEN
  152. '            GOTO GETPATHL1
  153. '        ELSEIF sz$ = "BACK" THEN
  154. '            UIPop 1
  155. '            GOTO LICENSE
  156. '        ELSE
  157. '            GOSUB ASKQUIT
  158. '            GOTO NEWERVERINSTALLED
  159. '        END IF
  160. '
  161. '    End If
  162. '
  163. 'END IF
  164.  
  165.  
  166.  
  167.  
  168. GETPATH:
  169.     SetSymbolValue "EditTextIn", DEST$
  170.     SetSymbolValue "EditFocus", "END"
  171. GETPATHL1:
  172.     sz$ = UIStartDlg(CUIDLL$, DESTPATH, "FEditDlgProc", APPHELP, HELPPROC$)
  173.     DEST$ = GetSymbolValue("EditTextOut")
  174.  
  175.     IF sz$ = "CONTINUE" THEN
  176.         IF IsDirWritable(DEST$) = 0 THEN
  177.             GOSUB BADPATH
  178.             GOTO GETPATHL1
  179.         END IF
  180.         UIPop 1
  181.     ELSEIF sz$ = "REACTIVATE" THEN
  182.         GOTO GETPATHL1
  183.     ELSEIF sz$ = "BACK" THEN
  184.         UIPop 1
  185.         GOTO WELCOME
  186.     ELSE
  187.         GOSUB ASKQUIT
  188.         GOTO GETPATH
  189.     END IF
  190.  
  191.  
  192.  
  193.     Install
  194.  
  195.  
  196.  
  197. QUIT:
  198.     ON ERROR GOTO ERRQUIT
  199.  
  200.     IF ERR = 0 THEN
  201.         dlg% = EXITSUCCESS
  202.     ELSEIF ERR = STFQUIT THEN
  203.         dlg% = EXITQUIT
  204.     ELSE
  205.         dlg% = EXITFAILURE
  206.     END IF
  207. QUITL1:
  208.     sz$ = UIStartDlg(CUIDLL$, dlg%, "FInfo0DlgProc", 0, "")
  209.     IF sz$ = "REACTIVATE" THEN
  210.         GOTO QUITL1
  211.     END IF
  212.  
  213.     UIPop 1
  214.  
  215.  
  216.  
  217.  
  218.  
  219. 'IF dlg% = EXITSUCCESS THEN
  220. '
  221. 'LAUNCH:
  222. '    sz$ = UIStartDlg(CUIDLL$, LAUNCH, "FConfirmDlgProc", APPHELP, HELPPROC$)
  223. '    IF sz$ = "RUN" THEN
  224. '        i = WinExec (MakePath(CDROMDRV$, FN_EXE), 1)
  225. '    ELSEIF sz$ = "REACTIVATE" THEN
  226. '        GOTO LAUNCH
  227. '    END IF
  228. '    UIPop 1
  229. '
  230. 'END IF
  231.  
  232.  
  233.  
  234.  
  235.  
  236.     END
  237.  
  238.  
  239.  
  240.  
  241.  
  242. ERRQUIT:
  243.     i% = DoMsgBox("Setup sources were corrupted.  Please try cleaning the CD-ROM and then run setup again.", "Setup Message", MB_OK+MB_TASKMODAL+MB_ICONHAND)
  244.     END
  245.  
  246.  
  247.  
  248. BADPATH:
  249.     sz$ = UIStartDlg(CUIDLL$, BADPATH, "FInfo0DlgProc", 0, "")
  250.     IF sz$ = "REACTIVATE" THEN
  251.         GOTO BADPATH
  252.     END IF
  253.     UIPop 1
  254.     RETURN
  255.  
  256.  
  257.  
  258. ASKQUIT:
  259.     sz$ = UIStartDlg(CUIDLL$, ASKQUIT, "FQuitDlgProc", 0, "")
  260.  
  261.     IF sz$ = "EXIT" THEN
  262.         UIPopAll
  263.         ERROR STFQUIT
  264.     ELSEIF sz$ = "REACTIVATE" THEN
  265.         GOTO ASKQUIT
  266.     ELSE
  267.         UIPop 1
  268.     END IF
  269.     RETURN
  270.  
  271.  
  272.  
  273. '**
  274. '** Purpose:
  275. '**     Builds the copy list and performs all installation operations.
  276. '** Arguments:
  277. '**     none.
  278. '** Returns:
  279. '**     none.
  280. '*************************************************************************
  281. SUB Install STATIC
  282.  
  283.     SrcDir$ = GetSymbolValue("STF_SRCDIR")
  284.     CreateDir DEST$, cmoNone
  285.  
  286.     SetCopyGaugePosition 76, 130
  287.  
  288.     OpenLogFile MakePath(DEST$, "CHRISTMS.ILG"), 0
  289.     WriteToLogFile ""
  290.     WriteToLogFile "  User chose as destination directory: '" + DEST$ + "'"
  291.     WriteToLogFile ""
  292.     WriteToLogFile "May have had to create the directory: " + DEST$
  293.     WriteToLogFile ""
  294.  
  295.     AddSectionKeyFileToCopyList "Main", "1", SrcDir$, DEST$
  296.     AddSectionKeyFileToCopyList "Dynalinks", "1", SrcDir$, GetWindowsSysDir
  297.     CopyFilesInCopyList
  298.  
  299.     ' Create INI File
  300.     ini$ = MakePath(GetWindowsDir, FN_INI$)
  301. '    CreateIniKeyValue ini$, "Settings", "PlayFlic", "-1", cmoOverwrite
  302. '    CreateIniKeyValue ini$, "Settings", "VerifyOnExit", "-1", cmoNone
  303. '    CreateIniKeyValue ini$, "Settings", "PlayButtonSound", "-1", cmoNone
  304. '    CreateIniKeyValue ini$, "Settings", "VerifyDelete", "-1", cmoNone
  305. '    CreateIniKeyValue ini$, "Settings", "MinimizeOnLaunch", "0", cmoNone
  306.  
  307. '    CreateIniKeyValue ini$, "Paths", "Database", MakePath(DEST$, SZ_DBF$), cmoOverwrite
  308. '    CreateIniKeyValue ini$, "Options", "SystemDB", MakePath(DEST$, "system.mda"), cmoOverwrite
  309.  
  310.     CreateIniKeyValue ini$, "Product", "Title", GetIniKeyString (MakePath(CDROMDRV$, FN_INIDATA), "Product", "Title"), cmoOverwrite
  311.     CreateIniKeyValue ini$, "Product", "Release", GetIniKeyString (MakePath(CDROMDRV$, FN_INIDATA), "Product", "Release"), cmoOverwrite
  312.     CreateIniKeyValue ini$, "Product", "ReleaseText", GetIniKeyString (MakePath(CDROMDRV$, FN_INIDATA), "Product", "ReleaseText"), cmoOverwrite
  313.  
  314.     ' Write AutoStart/32 Settings
  315.     CreateIniKeyValue ini$, "Auto Start", "Setting", "1", cmoOverwrite
  316.     CreateIniKeyValue ini$, "Auto Start", "NumFiles", "0", cmoOverwrite
  317.     CreateIniKeyValue ini$, "Auto Start", "EXE", "CHOICE.EXE", cmoOverwrite
  318.  
  319.     CreateIniKeyValue ini$, "Product", "Release", GetIniKeyString (MakePath(CDROMDRV$, FN_INIDATA), "Product", "Release"), cmoOverwrite
  320.     CreateIniKeyValue ini$, "Product", "ReleaseText", GetIniKeyString (MakePath(CDROMDRV$, FN_INIDATA), "Product", "ReleaseText"), cmoOverwrite
  321.  
  322.     ' Create LMICD.INI File, store information in it...
  323.     ini$ = MakePath(GetWindowsDir, "LMICD.INI")
  324.     CreateIniKeyValue ini$, SZ_LMICD_ID$, "Title", SZ_LMICD_TITLE$, cmoOverwrite
  325.     CreateIniKeyValue ini$, SZ_LMICD_ID$, "CDTitle", SZ_LMICD_CDTITLE$, cmoOverwrite
  326.     CreateIniKeyValue ini$, SZ_LMICD_ID$, "ProductLine", SZ_LMICD_PRODUCTLINE$, cmoOverwrite
  327.     CreateIniKeyValue ini$, SZ_LMICD_ID$, "WorkingDir", CDROMDRV$ + "\", cmoOverwrite
  328.  
  329.     CreateProgmanGroup SZ_GROUPNAME, "", cmoNone
  330.     ShowProgmanGroup  SZ_GROUPNAME, 1, cmoNone
  331.     CreateProgmanItem SZ_GROUPNAME, "A Very Interactive Christmas", MakePath(CDROMDRV$, FN_EXE), ",0,0,0,", cmoOverwrite
  332.     CreateProgmanItem SZ_GROUPNAME, "Christmas Jukebox", MakePath(CDROMDRV$, "CDPLAYER.EXE"), ",0,0,0,", cmoOverwrite
  333.     CreateProgmanItem SZ_GROUPNAME, "Christmas Clock", MakePath(DEST$, "WINCLOCK.EXE"), ",0,0,0,", cmoOverwrite
  334. '    CreateProgmanItem SZ_GROUPNAME, SZ_PRODUCT$ + " Help", "winhelp.exe " + MakePath(CDROMDRV$,FN_HELPFILE), MakePath(DEST$,FN_ICON$)+",0,0,0,"+CDROMDRV$ + "\", cmoOverwrite
  335.  
  336.     CloseLogFile
  337.  
  338. END SUB
  339.  
  340.  
  341.  
  342.  
  343.  
  344. '**
  345. '** Purpose:
  346. '**     Appends a file name to the end of a directory path,
  347. '**     inserting a backslash character as needed.
  348. '** Arguments:
  349. '**     szDir$  - full directory path (with optional ending "\")
  350. '**     szFile$ - filename to append to directory
  351. '** Returns:
  352. '**     Resulting fully qualified path name.
  353. '*************************************************************************
  354. FUNCTION MakePath (szDir$, szFile$) STATIC AS STRING
  355.     IF szDir$ = "" THEN
  356.         MakePath = szFile$
  357.     ELSEIF szFile$ = "" THEN
  358.         MakePath = szDir$
  359.     ELSEIF MID$(szDir$, LEN(szDir$), 1) = "\" THEN
  360.         MakePath = szDir$ + szFile$
  361.     ELSE
  362.         MakePath = szDir$ + "\" + szFile$
  363.     END IF
  364. END FUNCTION
  365.