home *** CD-ROM | disk | FTP | other *** search
/ Joystick Magazine 1995 May / CdJoystickN°2.iso / clxwrx / wing.mst < prev    next >
Text File  |  1995-02-07  |  10KB  |  351 lines

  1. '**************************************************************************
  2. '*                       WinG Setup Program
  3. '**************************************************************************
  4.  
  5. '$DEFINE DEBUG  ''Define for script development/debugging
  6.  
  7. '$INCLUDE 'setupapi.inc'
  8.  
  9. ''Dialog ID's
  10. CONST WELCOME       = 100
  11. CONST ASKQUIT       = 200
  12. CONST DESTPATH      = 300
  13. CONST DESTPATH2     = 301
  14. CONST EXITFAILURE   = 400
  15. CONST EXITQUIT      = 600
  16. CONST EXITSUCCESS   = 700
  17. CONST APPHELP       = 900
  18. CONST CHECK         = 2500
  19. CONST BADPATH       = 6400
  20. CONST RESTART       = 1000
  21.  
  22. ''File Types
  23. CONST WING_RUNFILES     = 1
  24. CONST WING_BUILDFILES   = 2
  25.  
  26. ''Bitmap ID
  27. CONST LOGO = 1
  28.  
  29. GLOBAL FILEDIALOG   ''File path dialog ID
  30.  
  31. GLOBAL DEST$        ''Default destination directory.
  32. GLOBAL CLOCKDEST$   ''Default destination directory.
  33.  
  34. GLOBAL CHECKSTATES$ ''Dialog list symbol names
  35. GLOBAL WINDRIVE$    ''Windows drive letter.
  36.  
  37. GLOBAL TMPDEST$       '' tmpfile destination
  38.  
  39. GLOBAL bInstallDVA%
  40.  
  41. DECLARE FUNCTION MakePath (szDir$, szFile$) AS STRING
  42. DECLARE FUNCTION GetRealWindowsSysDir AS STRING
  43. DECLARE SUB UpdateWinG32 (szOrig$) 
  44.  
  45. DECLARE FUNCTION OnWin3x LIB "setuphlp.DLL" AS INTEGER
  46. DECLARE FUNCTION VflatdPresent LIB "setuphlp.DLL" AS INTEGER
  47. DECLARE FUNCTION GetRealSystemDir LIB "setuphlp.DLL" (szDir$,cbBuf%) AS INTEGER
  48. DECLARE FUNCTION RestartWindows LIB "setuphlp.DLL" AS INTEGER
  49. DECLARE FUNCTION IsWin32FileNewer LIB "setuphlp.DLL" (szOrig$,szNew$) AS INTEGER
  50. DECLARE SUB RenameFilePlease LIB "setuphlp.DLL" (szOrig$,szNew$) 
  51.  
  52. INIT:
  53.     bInstallDVA% = 0
  54.     
  55.     CUIDLL$ = "mscuistf.dll"            ''Custom user interface dll
  56.     HELPPROC$ = "FHelpDlgProc"          ''Help dialog procedure
  57.  
  58.     SetBitmap CUIDLL$, LOGO
  59.     SetTitle "ClockWerx Demo Setup"
  60.     szInf$ = GetSymbolValue("STF_SRCINFPATH")
  61.     IF szInf$ = "" THEN
  62.    szInf$ = GetSymbolValue("STF_CWDDIR") + "wing.inf"
  63.     END IF
  64.     ReadInfFile szInf$
  65.  
  66. WELCOME:
  67.     sz$ = UIStartDlg(CUIDLL$, WELCOME, "FInfoDlgProc", APPHELP, HELPPROC$)
  68.     IF sz$ = "CONTINUE" THEN
  69.    UIPop 1
  70.     ELSE
  71.    GOSUB ASKQUIT
  72.    GOTO WELCOME
  73.     END IF
  74.  
  75.  
  76.     'CHECKSTATES$ = "CheckItemsIn"
  77.     'AddListItem CHECKSTATES$, "ON"
  78. '    AddListItem CHECKSTATES$, "OFF"
  79.     'AddListItem CHECKSTATES$, "ON"
  80.  
  81. CHECK:
  82.     'sz$ = UIStartDlg(CUIDLL$, CHECK, "FCheckDlgProc", APPHELP, HELPPROC$)
  83.     'IF sz$ = "CONTINUE" THEN
  84.    'UIPop 1
  85.     'ELSE
  86.    'GOSUB ASKQUIT
  87.    'GOTO CHECK
  88.    ' END IF
  89.  
  90.    WINDRIVE$ = MID$(GetWindowsDir, 1, 1)
  91.    DEST$ = WINDRIVE$ + ":\CLOCKWRX"
  92.    FILEDIALOG = DESTPATH2
  93.    GOSUB GETPATH
  94.    SrcDir$ = GetSymbolValue("STF_SRCDIR")
  95.  
  96.    ' save the desired destination
  97.    CLOCKDEST$ = DEST$
  98.    CreateDir CLOCKDEST$, cmoVital
  99.  
  100.    ' if the user wants runtime installed
  101.     CHECKSTATES$ = "CheckItemsOut"
  102.     'IF GetListItem(CHECKSTATES$, WING_RUNFILES) = "ON" THEN
  103.  
  104.    SrcDir$ = GetSymbolValue("STF_SRCDIR")
  105.    DEST$ = GetWindowsSysDir
  106.    
  107.    AddSectionFilesToCopyList "runtime", SrcDir$, DEST$
  108.    
  109.          '
  110.    ' only use DVA on Windows 3.x
  111.    '
  112.    IF OnWin3x() = 1 THEN
  113.        AddSectionFilesToCopyList "dva", SrcDir$, DEST$
  114.        IF VflatdPresent() = 0 THEN
  115.       CreateSysIniKeyValue GetWindowsDir + "system.ini", "386Enh", "device", GetWindowsSysDir+"dva.386", cmoOverwrite
  116.       bInstallDVA% = 1
  117.        END IF
  118.    END IF
  119.    
  120.    DEST$ = GetRealWindowsSysDir
  121.    
  122.    AddSectionFilesToCopyList "wing32", SrcDir$, DEST$
  123.          Dest1$ = MakePath(DEST$,"wing32.dll")
  124.          Dest2$ = MakePath(DEST$,"wing32.xxx")
  125.    RenameFilePlease Dest1$,Dest2$
  126.    
  127.    'CopyFilesInCopyList
  128.    
  129.    'UpdateWinG32 GetRealWindowsSysDir()
  130.  
  131.    ' END IF
  132.  
  133.    ' if the user wants the source installed
  134.    ' IF GetListItem(CHECKSTATES$, WING_BUILDFILES) = "ON" THEN
  135.    'WINDRIVE$ = MID$(GetWindowsDir, 1, 1)
  136.    'DEST$ = WINDRIVE$ + ":\CLOCKWRX"
  137.    'FILEDIALOG = DESTPATH2
  138.    'GOSUB GETPATH
  139.    'SrcDir$ = GetSymbolValue("STF_SRCDIR")
  140.    'CreateDir DEST$, cmoVital
  141.  
  142.    '' add devkit files to destination
  143.     
  144.    ' WinBug.exe taken out for first beta, maybe add it in later, and fix up .lyt file too!
  145.    'CreateDir MakePath(DEST$,"winbug"), cmoNone
  146.    'AddSectionFilesToCopyList "winbug", SrcDir$, MakePath(DEST$,"winbug")
  147.  
  148.    'CreateDir MakePath(DEST$,"bin"), cmoNone
  149.    'AddSectionFilesToCopyList "runtime", SrcDir$, MakePath(DEST$,"bin")
  150.    
  151.    'AddSectionFilesToCopyList "wing32", SrcDir$, MakePath(DEST$,"bin")
  152.          'Dest1$ = MakePath(DEST$,"bin\wing32.dll")
  153.          'Dest2$ = MakePath(DEST$,"bin\wing32.xxx")
  154.    'RenameFilePlease Dest1$,Dest2$
  155.    
  156.    'AddSectionFilesToCopyList "bin", SrcDir$, MakePath(DEST$,"bin")
  157.    'AddSectionFilestoCopyList "readme", SrcDir$, DEST$
  158.    'CreateDir MakePath(DEST$,"include"), cmoNone
  159.    'AddSectionFilesToCopyList "include", SrcDir$, MakePath(DEST$,"include")
  160.    'CreateDir MakePath(DEST$,"help"), cmoNone
  161.    'AddSectionFilesToCopyList "help", SrcDir$, MakePath(DEST$,"help")
  162.    'CreateDir MakePath(DEST$,"lib"), cmoNone
  163.    'AddSectionFilesToCopyList "lib", SrcDir$, MakePath(DEST$,"lib")
  164.    
  165.    GOSUB ADDSAMPLEFILESTOLIST
  166.    CopyFilesInCopyList
  167.    CopyFile MakePath(SrcDir$,"readme.wri" ), MakePath(CLOCKDEST$,"readme.wri"), cmoCopy, 0
  168.    UpdateWinG32 GetRealWindowsSysDir()
  169.    'UpdateWinG32 MakePath( DEST$, "bin" )
  170.    GOSUB ADDGROUP
  171.    ' END IF
  172.  
  173. QUIT:
  174.     ON ERROR GOTO ERRQUIT
  175.  
  176.     IF ERR = 0 THEN
  177.    dlg% = EXITSUCCESS
  178.     ELSEIF ERR = STFQUIT THEN
  179.    dlg% = EXITQUIT
  180.     ELSE
  181.    dlg% = EXITFAILURE
  182.     END IF
  183.  
  184. QUITL1:
  185.     if dlg% = EXITSUCCESS AND bInstallDVA% = 1 then
  186.    sz$ = UIStartDlg(CUIDLL$, RESTART, "FInfoDlgProc", APPHELP, HELPPROC$)
  187.    UIPop 1
  188.    IF sz$ = "CONTINUE" THEN
  189.        rc% = RestartWindows
  190.    ENDIF
  191.     endif
  192.  
  193.     sz$ = UIStartDlg(CUIDLL$, dlg%, "FInfo0DlgProc", 0, "")
  194.     IF sz$ = "REACTIVATE" THEN
  195.    GOTO QUITL1
  196.     END IF
  197.     UIPop 1
  198.     
  199.  
  200.     END
  201.  
  202. ERRQUIT:
  203.     i% = DoMsgBox("Setup sources were corrupted, call 555-1212!", "Setup Message", MB_OK+MB_TASKMODAL+MB_ICONHAND)
  204.     END
  205.  
  206.  
  207. BADPATH:
  208.     sz$ = UIStartDlg(CUIDLL$, BADPATH, "FInfo0DlgProc", 0, "")
  209.     IF sz$ = "REACTIVATE" THEN
  210.    GOTO BADPATH
  211.     END IF
  212.     UIPop 1
  213.     RETURN
  214.  
  215.  
  216. ASKQUIT:
  217.     sz$ = UIStartDlg(CUIDLL$, ASKQUIT, "FQuitDlgProc", 0, "")
  218.  
  219.     IF sz$ = "EXIT" THEN
  220.    UIPopAll
  221.    ERROR STFQUIT
  222.     ELSEIF sz$ = "REACTIVATE" THEN
  223.    GOTO ASKQUIT
  224.     ELSE
  225.    UIPop 1
  226.     END IF
  227.     RETURN
  228.  
  229.  
  230. GETPATH:
  231.     SetSymbolValue "EditTextIn", DEST$
  232.     SetSymbolValue "EditFocus", "END"
  233.  
  234. GETPATHL1:
  235.     sz$ = UIStartDlg(CUIDLL$, FILEDIALOG, "FEditDlgProc", APPHELP, HELPPROC$)
  236.     DEST$ = GetSymbolValue("EditTextOut")
  237.  
  238.     IF sz$ = "CONTINUE" THEN
  239.    IF IsDirWritable(DEST$) = 0 THEN
  240.        GOSUB BADPATH
  241.        GOTO GETPATHL1
  242.    END IF
  243.    UIPop 1
  244.     ELSEIF sz$ = "REACTIVATE" THEN
  245.    GOTO GETPATHL1
  246.     ELSEIF sz$ = "BACK" THEN
  247.    UIPop 1
  248.    GOTO CHECK
  249.     ELSE
  250.    GOSUB ASKQUIT
  251.    GOTO GETPATH
  252.     END IF
  253.  
  254.     RETURN
  255.  
  256. ADDSAMPLEFILESTOLIST:
  257. '  SamplePath$ = MakePath(DEST$,"samples")
  258.    SamplePath$ = CLOCKDEST$
  259.    CreateDir SamplePath$, cmoNone
  260.  
  261. '       Add clockwerx example program
  262.  
  263.    sample$ = "clockwerx"
  264.  
  265.    'CreateDir MakePath(SamplePath$,sample$), cmoNone
  266.    'AddSectionFilesToCopyList sample$, SrcDir$, MakePath(SamplePath$,sample$)
  267.    AddSectionFilesToCopyList sample$, SrcDir$, SamplePath$
  268.  
  269. '       Other sample programs go here
  270.  
  271.    RETURN
  272.    
  273. ADDGROUP:
  274. '  SamplePath$ = MakePath(DEST$,"samples")
  275.    proggroup$ = "ClockWerx"
  276.    CreateProgmanGroup proggroup$, "", cmoNone
  277.    ShowProgmanGroup  proggroup$, 1, cmoNone
  278.    
  279.         path$ = MakePath( CLOCKDEST$, "clockwrx.exe" )
  280.    CreateProgmanItem proggroup$, "ClockWerx Demo", path$, "", cmoOverwrite
  281.    CreateProgmanItem proggroup$, "Read Me", MakePath( CLOCKDEST$, "readme.wri" ), "", cmoOverwrite
  282.    
  283. '       Other sample programs get added here
  284.  
  285.  
  286.    
  287.    RETURN
  288.  
  289. '**
  290. '** Purpose:
  291. '**     Appends a file name to the end of a directory path,
  292. '**     inserting a backslash character as needed.
  293. '** Arguments:
  294. '**     szDir$  - full directory path (with optional ending "\")
  295. '**     szFile$ - filename to append to directory
  296. '** Returns:
  297. '**     Resulting fully qualified path name.
  298. '*************************************************************************
  299. FUNCTION MakePath (szDir$, szFile$) STATIC AS STRING
  300.     IF szDir$ = "" THEN
  301.    MakePath = szFile$
  302.     ELSEIF szFile$ = "" THEN
  303.    MakePath = szDir$
  304.     ELSEIF MID$(szDir$, LEN(szDir$), 1) = "\" THEN
  305.    MakePath = szDir$ + szFile$
  306.     ELSE
  307.    MakePath = szDir$ + "\" + szFile$
  308.     END IF
  309. END FUNCTION
  310.  
  311.  
  312. FUNCTION GetRealWindowsSysDir STATIC AS STRING
  313.     szBuf$ = string$(260, 32)
  314.     cbBuf% = GetRealSystemDir(szBuf$, 260)
  315.     IF cbBuf% = 0 THEN
  316.         ERROR STFERR
  317.     ELSE
  318.         IF cbBuf% > 259 THEN
  319.             res% = DoMsgBox("Buffer Overflow", "MS-Setup Error", MB_ICONHAND+MB_OK)
  320.             ERROR STFERR
  321.         END IF
  322.         szBuf$ = RTRIM$(szBuf$)
  323.         IF MID$(szBuf$, 1, 1) = "\" THEN
  324.             szBuf$ = MID$(CURDIR$, 1, 2) + szBuf$
  325.         ELSEIF MID$(szBuf$, 2, 1) <> ":" THEN
  326.             szBuf$ = MID$(CURDIR$, 1, 3) + szBuf$
  327.         END IF
  328.         IF MID$(szBuf$, LEN(szBuf$), 1) <> "\" THEN
  329.             szBuf$ = szBuf$ + "\"
  330.         END IF
  331.         GetRealWindowsSysDir = szBuf$
  332.     END IF
  333.  
  334.     szBuf$ = ""
  335. END FUNCTION
  336.  
  337. SUB UpdateWinG32 (szOrig$) STATIC 
  338.     '
  339.     ' Here we check the version ourselves of wing32.dll, since 
  340.     ' we can't get version checking for Win32 apps from Win16
  341.     '
  342.     FileNew$ = MakePath(szOrig$, "wing32.dll")
  343.     FileOrig$ = MakePath(szOrig$, "wing32.xxx")
  344.     IF IsWin32FileNewer( FileOrig$, FileNew$ ) THEN
  345.    RemoveFile FileOrig$, cmoForce
  346.     ELSE
  347.       RemoveFile FileNew$, cmoForce    ' get rid of new file
  348.    RenameFilePlease FileOrig$,FileNew$ ' put back old file
  349.     END IF
  350. END SUB
  351.