home *** CD-ROM | disk | FTP | other *** search
/ Power Pack Spiele 2 / SPIELEPP2.ISO / daten / winskat / disk1 / setup.ms_ / setup.bin
Text File  |  1995-12-22  |  11KB  |  382 lines

  1.  
  2. '' Setup-Anweisungen für WinSkat
  3.  
  4. '$INCLUDE 'setupapi.inc'
  5. '$INCLUDE 'msdetect.inc'
  6.  
  7. CONST ASKQUIT      = 200
  8. CONST DESTPATH     = 300
  9. CONST EXITFAILURE  = 400
  10. CONST EXITQUIT     = 600
  11. CONST EXITSUCCESS  = 700
  12. CONST APPHELP      = 900
  13. CONST CUSTINST     = 6200
  14. CONST TOOBIG       = 6300
  15. CONST BADPATH      = 6400
  16.  
  17. CONST LOGO         = 1
  18.  
  19. CONST APPFILES     = 1
  20. CONST OPTFILES1    = 2
  21. CONST OPTFILES2    = 3
  22. CONST OPTFILES3    = 4
  23.  
  24. CONST WM_FONTCHANGE = 29
  25. CONST HWND_BROADCAST = -1
  26.  
  27. GLOBAL DEST$
  28. GLOBAL WINDRIVE$
  29.  
  30. GLOBAL APPNEEDS$ 
  31. GLOBAL OPT1NEEDS$
  32. GLOBAL OPT2NEEDS$
  33. GLOBAL OPT3NEEDS$
  34. GLOBAL EXTRACOSTS$
  35. GLOBAL BIGLIST$ 
  36.  
  37. GLOBAL CHECKSTATES$
  38. GLOBAL STATUSTEXT$
  39. GLOBAL DRIVETEXT$
  40.  
  41. DECLARE SUB AddOptFilesToCopyList ( ftype% )
  42. DECLARE SUB RecalcOptFiles ( ftype% )
  43. DECLARE SUB RecalcPath
  44. DECLARE SUB SetDriveStatus
  45. DECLARE FUNCTION MakePath ( szDir$, szFile$ ) AS STRING
  46. DECLARE FUNCTION CreateScalableFontResource LIB "GDI.EXE" (fHidden%, FOTFile$, TTFFile$, SysDir$) AS INTEGER
  47. DECLARE FUNCTION AddFontResource LIB "GDI.EXE" (FOTFile$) AS INTEGER
  48. DECLARE FUNCTION SendMessage LIB "USER.EXE" (hWnd%, Message%, wParam%, lParam&) AS LONG
  49.  
  50.  
  51. INIT:
  52.     CUIDLL$ = "mscuistf.dll"
  53.     HELPPROC$ = "FHelpDlgProc"
  54.  
  55.     SetBitmap CUIDLL$, LOGO
  56.     SetTitle "Fischer - Setup"
  57.  
  58.     szInf$ = GetSymbolValue( "STF_SRCINFPATH" )
  59.     IF szInf$ = "" THEN
  60.         szInf$ = GetSymbolValue( "STF_CWDDIR" ) + "setup.inf"
  61.     END IF
  62.     ReadInfFile szInf$
  63.  
  64.     WINDRIVE$ = MID$( GetWindowsDir, 1, 1 )
  65.     DEST$ = "C:\SPIELE\WINSKAT"
  66.  
  67.     CHECKSTATES$ = "CheckItemsState"
  68.     STATUSTEXT$  = "StatusItemsText"
  69.     DRIVETEXT$   = "DriveStatusText"
  70.  
  71.     AddListItem CHECKSTATES$, "ON"
  72.     AddListItem CHECKSTATES$, "ON"
  73.     AddListItem CHECKSTATES$, "ON"
  74.     AddListItem CHECKSTATES$, "ON"
  75.  
  76.     FOR i% = 1 TO 4 STEP 1
  77.         AddListItem STATUSTEXT$, ""
  78.     NEXT i%
  79.  
  80.     FOR i% = 1 TO 7 STEP 1
  81.         AddListItem DRIVETEXT$, ""
  82.     NEXT i%
  83.     ReplaceListItem DRIVETEXT$, 7, DEST$
  84.  
  85.     APPNEEDS$   = "AppNeeds"
  86.     OPT1NEEDS$  = "Opt1Needs"
  87.     OPT2NEEDS$  = "Opt2Needs"
  88.     OPT3NEEDS$  = "Opt3Needs"
  89.     EXTRACOSTS$ = "ExtraCosts"
  90.     BIGLIST$    = "BigList"
  91.  
  92.     FOR i% = 1 TO 4 STEP 1
  93.         AddListItem BIGLIST$, ""
  94.     NEXT i%
  95.  
  96.     FOR i% = 1 TO 26 STEP 1
  97.         AddListItem EXTRACOSTS$, "0"
  98.     NEXT i%
  99.  
  100.     RecalcPath
  101.  
  102.     SetDriveStatus
  103.  
  104. CUSTINST:
  105.     sz$ = UIStartDlg( CUIDLL$, CUSTINST, "FCustInstDlgProc", APPHELP, HELPPROC$ )
  106.  
  107.     IF sz$ = "CONTINUE" THEN
  108.         FOR i% = 1 TO 4 STEP 1
  109.             IF GetListItem( BIGLIST$, i% ) <> "" THEN
  110.                 GOSUB TOOBIG
  111.                 GOTO CUSTINST
  112.             END IF
  113.         NEXT i%
  114.         IF GetListItem( CHECKSTATES$, APPFILES ) = "ON" THEN
  115.             MajorVer% = GetWindowsMajorVersion()
  116.             MinorVer% = GetWindowsMinorVersion()
  117.             Processor% = GetProcessorType()
  118.             IF MajorVer% < 3 OR ( MajorVer% = 3 AND MinorVer% < 10 ) THEN
  119.                 i% = DoMsgBox( "Skat für Windows benötigt mindestens Microsoft Windows, Version 3.10!", "Fischer - Setup", MB_OK + MB_TASKMODAL + MB_ICONHAND )
  120.                 GOTO CUSTINST
  121.             END IF
  122.             IF Processor% < 3 THEN
  123.                 i% = DoMsgBox( "Skat für Windows benötigt mindestens einen 386er - Prozessor!", "Fischer - Setup", MB_OK + MB_TASKMODAL + MB_ICONHAND )
  124.                 GOTO CUSTINST
  125.             END IF
  126.             IF GetListItem( CHECKSTATES$, OPTFILES1 ) = "OFF" THEN
  127.                 IF GetListItem( CHECKSTATES$, OPTFILES2 ) = "OFF" THEN
  128.                     i% = DoMsgBox( "Skat für Windows braucht auch Karten!", "Fischer - Setup", MB_OK + MB_TASKMODAL + MB_ICONHAND )
  129.                     GOTO CUSTINST
  130.                 END IF
  131.             END IF
  132.         END IF
  133.         UIPop 1
  134.         GOTO INSTALL
  135.     ELSEIF sz$ = "PATH" THEN
  136.         GOTO GETPATH
  137.     ELSEIF sz$ = "CHK1" THEN
  138.         RecalcOptFiles APPFILES
  139.         SetDriveStatus
  140.         GOTO CUSTINST
  141.     ELSEIF sz$ = "CHK2" THEN
  142.         RecalcOptFiles OPTFILES1
  143.         SetDriveStatus
  144.         GOTO CUSTINST
  145.     ELSEIF sz$ = "CHK3" THEN
  146.         RecalcOptFiles OPTFILES2
  147.         SetDriveStatus
  148.         GOTO CUSTINST
  149.     ELSEIF sz$ = "CHK4" THEN
  150.         RecalcOptFiles OPTFILES3
  151.         SetDriveStatus
  152.         GOTO CUSTINST
  153.     ELSEIF sz$ = "REACTIVATE" THEN
  154.         RecalcPath
  155.         SetDriveStatus
  156.         GOTO CUSTINST
  157.     ELSE
  158.         GOSUB ASKQUIT
  159.         GOTO CUSTINST
  160.     END IF
  161.  
  162. INSTALL:
  163.     ClearCopyList
  164.     AddOptFilesToCopyList APPFILES
  165.     AddOptFilesToCopyList OPTFILES1
  166.     AddOptFilesToCopyList OPTFILES2
  167.     AddOptFilesToCopyList OPTFILES3
  168.     CreateDir DEST$, cmoNone
  169.     CopyFilesInCopyList
  170.  
  171.     IF GetListItem( CHECKSTATES$, APPFILES ) = "ON" THEN
  172.         CreateProgmanItem "Spiele", "WinSkat", MakePath( DEST$, "wskat.exe" ), "", cmoOverwrite
  173.         CreateProgmanItem "Spiele", "WinSkat Hilfe", "winhelp.exe "+ MakePath( DEST$, "wskat.hlp" ), "", cmoOverwrite
  174.         CreateProgmanItem "Spiele", "WinSkat Tips", "notepad.exe "+ MakePath( DEST$, "tips.txt" ), "", cmoOverwrite
  175.  
  176.         SYSDIR$ = GetWindowsSysDir()
  177.         i% = CreateScalableFontResource ( 0, SYSDIR$ + "QUILLSCN.FOT", "QUILLSCN.TTF", SYSDIR$ )
  178.         i% = AddFontResource ( SYSDIR$ + "QUILLSCN.FOT" )
  179.         FontName$ = STRING$( 64, 32 )
  180.         i% = GetTypeFaceNameFromTTF( SYSDIR$ + "QUILLSCN.TTF", FontName$, 64 )
  181.         CreateIniKeyValue "WIN.INI", "fonts", FontName$ +" (TrueType)", "QUILLSCN.FOT", cmoOverwrite
  182.         i% = SendMessage ( HWND_BROADCAST, WM_FONTCHANGE, 0, 0 )
  183.  
  184.     END IF
  185.  
  186. QUIT:
  187.     ON ERROR GOTO ERRQUIT
  188.  
  189.     IF ERR = 0 THEN
  190.         dlg% = EXITSUCCESS
  191.     ELSEIF ERR = STFQUIT THEN
  192.         dlg% = EXITQUIT
  193.     ELSE
  194.         dlg% = EXITFAILURE
  195.     END IF
  196.  
  197. QUITL1:
  198.     sz$ = UIStartDlg( CUIDLL$, dlg%, "FInfo0DlgProc", 0, "" )
  199.     IF sz$ = "REACTIVATE" THEN
  200.         GOTO QUITL1
  201.     END IF
  202.     UIPop 1
  203.  
  204.     END
  205.  
  206. ERRQUIT:
  207.     i% = DoMsgBox( "Dieser Diskettensatz ist fehlerhaft!", "Fischer - Setup", MB_OK+MB_TASKMODAL+MB_ICONHAND )
  208.     END
  209.  
  210. GETPATH:
  211.     SetSymbolValue "EditTextIn", DEST$
  212.     SetSymbolValue "EditFocus", "END"
  213.  
  214. GETPATHL1:
  215.     sz$ = UIStartDlg( CUIDLL$, DESTPATH, "FEditDlgProc", APPHELP, HELPPROC$ )
  216.  
  217.     IF sz$ = "CONTINUE" THEN
  218.         olddest$ = DEST$
  219.         DEST$ = GetSymbolValue( "EditTextOut" )
  220.  
  221.         IF IsDirWritable( DEST$ ) = 0 THEN
  222.             GOSUB BADPATH
  223.             GOTO GETPATHL1
  224.         END IF
  225.         UIPop 1
  226.  
  227.         IF LEN( DEST$ ) > 23 THEN
  228.             ReplaceListItem DRIVETEXT$, 7, MID$( DEST$, 1, 23 )+"..."
  229.         ELSE
  230.             ReplaceListItem DRIVETEXT$, 7, DEST$
  231.         END IF
  232.  
  233.         IF ( olddest$ <> DEST$ ) AND ( olddest$ <> DEST$+"\" ) AND ( olddest$+"\" <> DEST$ ) THEN
  234.             RecalcPath
  235.             SetDriveStatus
  236.         END IF
  237.  
  238.         olddest$ = ""
  239.         GOTO CUSTINST
  240.     ELSEIF sz$ = "REACTIVATE" THEN
  241.         RecalcPath
  242.         SetDriveStatus
  243.         GOTO GETPATHL1
  244.     ELSEIF sz$ = "EXIT" THEN
  245.         GOSUB ASKQUIT
  246.         GOTO GETPATHL1
  247.     ELSE
  248.         UIPop 1
  249.         GOTO CUSTINST
  250.     END IF
  251.  
  252. TOOBIG:
  253.     sz$ = UIStartDlg( CUIDLL$, TOOBIG, "FInfo0DlgProc", 0, "" )
  254.     IF sz$ = "REACTIVATE" THEN
  255.         RecalcPath
  256.         SetDriveStatus
  257.         GOTO TOOBIG
  258.     END IF
  259.     UIPop 1
  260.     RETURN
  261.  
  262. BADPATH:
  263.     sz$ = UIStartDlg( CUIDLL$, BADPATH, "FInfo0DlgProc", 0, "" )
  264.     IF sz$ = "REACTIVATE" THEN
  265.         RecalcPath
  266.         SetDriveStatus
  267.         GOTO BADPATH
  268.     END IF
  269.     UIPop 1
  270.     RETURN
  271.  
  272. ASKQUIT:
  273.     sz$ = UIStartDlg( CUIDLL$, ASKQUIT, "FQuitDlgProc", 0, "" )
  274.  
  275.     IF sz$ = "EXIT" THEN
  276.         UIPopAll
  277.         ERROR STFQUIT
  278.     ELSEIF sz$ = "REACTIVATE" THEN
  279.         GOTO ASKQUIT
  280.     ELSE
  281.         UIPop 1
  282.     END IF
  283.     RETURN
  284.  
  285. SUB AddOptFilesToCopyList ( ftype% ) STATIC
  286.  
  287.     IF GetListItem( CHECKSTATES$, ftype% ) = "ON" THEN
  288.         SrcDir$ = GetSymbolValue( "STF_SRCDIR" )
  289.         IF ftype% = APPFILES THEN
  290.             AddSectionFilesToCopyList "REMOVE", SrcDir$, GetWindowsDir()
  291.             AddSectionFilesToCopyList "WSkat", SrcDir$, DEST$
  292.             AddSectionFilesToCopyList "SKS", SrcDir$, MakePath( DEST$, "SKS" )
  293.             AddSectionFilesToCopyList "SYS", SrcDir$, GetWindowsSysDir()
  294.         ELSEIF ftype% = OPTFILES1 THEN
  295.             AddSectionFilesToCopyList "DKarten", SrcDir$, DEST$
  296.         ELSEIF ftype% = OPTFILES2 THEN
  297.             AddSectionFilesToCopyList "FKarten", SrcDir$, DEST$
  298.         ELSEIF ftype% = OPTFILES3 THEN
  299.             AddSectionFilesToCopyList "WAV", SrcDir$, MakePath( DEST$, "WAV" )
  300.         END IF
  301.         SrcDir$ = ""
  302.     END IF
  303. END SUB
  304.  
  305. SUB RecalcOptFiles ( ftype% ) STATIC
  306.     CursorSave% = ShowWaitCursor(  )
  307.     ClearCopyList
  308.     AddOptFilesToCopyList ftype%
  309.  
  310.     fExtra% = 0
  311.     IF ftype% = APPFILES THEN
  312.         ListSym$ = APPNEEDS$
  313.         IF GetListItem( CHECKSTATES$, APPFILES ) = "ON" THEN
  314.             ndrive% = ASC( ucase$( WINDRIVE$ ) ) - ASC( "A" ) + 1
  315.             ReplaceListItem EXTRACOSTS$, ndrive%, "10240"
  316.             fExtra% = 1
  317.         END IF
  318.     ELSEIF ftype% = OPTFILES1 THEN
  319.         ListSym$ = OPT1NEEDS$
  320.     ELSEIF ftype% = OPTFILES2 THEN
  321.         ListSym$ = OPT2NEEDS$
  322.     ELSEIF ftype% = OPTFILES3 THEN
  323.         ListSym$ = OPT3NEEDS$
  324.     END IF
  325.  
  326.     StillNeed& = GetCopyListCost( EXTRACOSTS$, ListSym$, "" )
  327.  
  328.     cost& = 0
  329.     FOR i% = 1 TO 26 STEP 1
  330.         cost&  = cost& + VAL( GetListItem( ListSym$, i% ) )
  331.     NEXT i%
  332.     ReplaceListItem STATUSTEXT$, ftype%, STR$( cost& / 1024 ) + " K"
  333.  
  334.     IF StillNeed& > 0 THEN
  335.         ReplaceListItem BIGLIST$, ftype%, "YES"
  336.     ELSE
  337.         ReplaceListItem BIGLIST$, ftype%, ""
  338.     END IF
  339.  
  340.     IF fExtra% THEN
  341.         ReplaceListItem EXTRACOSTS$, ndrive%, "0"
  342.     END IF
  343.     RestoreCursor CursorSave%
  344.     ListSym$ = ""
  345. END SUB
  346.  
  347. SUB RecalcPath STATIC
  348.  
  349.     CursorSave% = ShowWaitCursor(  )
  350.  
  351.     RecalcOptFiles APPFILES
  352.     RecalcOptFiles OPTFILES1
  353.     RecalcOptFiles OPTFILES2
  354.     RecalcOptFiles OPTFILES3
  355.  
  356.     RestoreCursor CursorSave%
  357. END SUB
  358.  
  359. SUB SetDriveStatus STATIC
  360.  
  361.     drive$ = MID$( DEST$, 1, 1 )
  362.     ndrive% = ASC( ucase$( drive$ ) ) - ASC( "A" ) + 1
  363.     cost& = VAL( GetListItem( APPNEEDS$, ndrive% ) ) + VAL( GetListItem( OPT1NEEDS$, ndrive% ) ) + VAL( GetListItem( OPT2NEEDS$, ndrive% ) ) + VAL( GetListItem( OPT3NEEDS$, ndrive% ) )
  364.     free& = GetFreeSpaceForDrive( drive$ )
  365.     ReplaceListItem DRIVETEXT$, 1, drive$ + ":"
  366.     ReplaceListItem DRIVETEXT$, 2, STR$( cost& / 1024 ) + " K"
  367.     ReplaceListItem DRIVETEXT$, 3, STR$( free& / 1024 ) + " K"
  368.  
  369. END SUB
  370.  
  371. FUNCTION MakePath ( szDir$, szFile$ ) STATIC AS STRING
  372.     IF szDir$ = "" THEN
  373.         MakePath = szFile$
  374.     ELSEIF szFile$ = "" THEN
  375.         MakePath = szDir$
  376.     ELSEIF MID$( szDir$, LEN( szDir$ ), 1 ) = "\" THEN
  377.         MakePath = szDir$ + szFile$
  378.     ELSE
  379.         MakePath = szDir$ + "\" + szFile$
  380.     END IF
  381. END FUNCTION
  382.