home *** CD-ROM | disk | FTP | other *** search
/ Fanclub Das Freakmagazin 2 / FANCLUB2.ISO / patches / powerhse / power.mst < prev    next >
Text File  |  1995-11-14  |  9KB  |  334 lines

  1. '' ****************************************************************
  2. '* POWER.MST
  3. '**************************************************************************
  4.     
  5.     '' Global variables
  6.  
  7.     GLOBAL update_error%
  8.     GLOBAL SrcDrive$
  9.     GLOBAL TitleShortName$
  10.     GLOBAL TitleLongName$
  11.     GLOBAL PromptForPath%
  12.     GLOBAL DefaultPath$
  13.     GLOBAL ProgManGroup$
  14.     GLOBAL ProgManItem$
  15.     GLOBAL szTitleDir$
  16.  
  17. '' ****************************************************************
  18. '' ** Setup Variables
  19. '' ****************************************************************
  20.  
  21.      TitleShortName$ = "PowerHouse"
  22.      TitleLongName$     = "PowerHouse"
  23.     PromptForPath%     = 1                        '' we prompt for the install path
  24.      DefaultPath$     = "C:\POWER"            '' default install path when prompt is displayed   
  25.     ProgManGroup$     = "PowerHouse"            '' program manager group 
  26.      ProgManItem$     = "PowerHouse"            '' program manager item title
  27.     
  28. '***********************************************************************
  29. '** Mainline
  30. '***********************************************************************
  31.  
  32.     GLOBAL CUIDLL$
  33.  
  34.     '' Include files
  35.     '$INCLUDE 'setupapi.inc'
  36.     '$INCLUDE 'msdetect.inc'
  37.     CUIDLL$ = "mscuistf.dll"  '' Custom UI dll
  38.     
  39.     '' Dialog ID's
  40.     CONST DESTPATH      = 1000
  41.     CONST APPHELP       = 2000
  42.     CONST TOOBIG        = 3000
  43.     CONST BADPATH       = 4000
  44.     CONST SUCCESS       = 5000
  45.     CONST CONT_PH_SETUP = 101
  46.     CONST EXIT_PH_SETUP = 102
  47.     CONST UPDATE_FAIL     = 1001 '' update fail dlg box
  48.  
  49.      CONST LOGO = 100   '' bitmap resource id
  50.     
  51.     '' Functions and subroutines
  52.     DECLARE FUNCTION MakePath (szDir$, szFile$) AS STRING
  53.     DECLARE FUNCTION GetTitleDir (szDefault$) AS STRING
  54.     DECLARE FUNCTION CopyFiles(szTitleDir$) AS INTEGER
  55.     DECLARE SUB ModifyProgramManager
  56.     DECLARE SUB ShowSuccess
  57.     
  58.     '' functions from WinG install
  59.     DECLARE FUNCTION GetRealWindowsSysDir AS STRING
  60.     DECLARE FUNCTION GetRealSystemDir LIB "setuphlp.DLL" (szDir$,cbBuf%) AS INTEGER
  61.  
  62.     '' return value displayer for debug purposes
  63.      ''i% = DoMsgBox(STR$(i%), "Setup Message", MB_OK+MB_TASKMODAL+MB_ICONHAND)
  64.  
  65. INIT:
  66.     bInstallDVA% = 0
  67.  
  68.     '' init error flag
  69.     update_error = 0
  70.     
  71.     CUIDLL$ = "mscuistf.dll"            ''Custom user interface dll
  72.     HELPPROC$ = "FHelpDlgProc"          ''Help dialog procedure
  73.  
  74.     '' Set the title and banner bitmap. You must rebuild MSCUISTF.DLL to 
  75.     '' alter the banner bitmap.
  76.     
  77.      SetTitle "PowerHouse"
  78.     SetBitmap CUIDLL$, LOGO 
  79.     
  80.     SrcDir$ = GetSymbolValue("STF_SRCDIR")
  81.     SrcDrive$ = MID$(SrcDir$,1,1)
  82.  
  83. POWER:
  84.     
  85.     i% = SetSizeCheckMode(scmOff)
  86.     
  87.     
  88.     '' Read in the INF file.
  89.     
  90.      ReadInfFile GetSymbolValue("STF_CWDDIR") + "POWER.INF"
  91.     
  92.     '' Decide where to put title files
  93.     IF PromptForPath% = 1 THEN
  94.         szTitleDir$ = GetTitleDir(DefaultPath$)
  95.         IF szTitleDir$ = "" THEN
  96.             ERROR STFQUIT
  97.             GOTO QUIT
  98.         ENDIF
  99.     ELSE
  100.         ''szTitleDir$ = GetWindowsDir()
  101.       szTitleDir$ = "C:\POWER"
  102.     ENDIF   
  103.     
  104.     '' check to see if there is a powerhouse file in the specified directory
  105.     '' if not then we exit the update and report error
  106.     ret_val% = DoesFileExist(szTitleDir$+"\repair.edy",femRead)
  107.     IF    ret_val% = 0 THEN
  108.         update_error% = 1
  109.         GOTO QUIT
  110.     ENDIF
  111.  
  112.     '' Copy files
  113.     IF CopyFiles(szTitleDir$) = 0 THEN
  114.         GOTO QUIT
  115.     ENDIF
  116.     
  117.     ModifyProgramManager    
  118.     ShowSuccess
  119.     END
  120.  
  121. QUIT:
  122.     ON ERROR GOTO ERRQUIT
  123.  
  124.     '' if we had an update error then do the error message
  125.     IF    update_error% = 1 THEN
  126.         dlg% = UPDATE_FAIL
  127.         GOTO DLG
  128.     END IF
  129.  
  130.     IF ERR = 0 THEN
  131.         dlg% = EXITSUCCESS
  132.     ELSEIF ERR = STFQUIT THEN
  133.         dlg% = EXITQUIT
  134.     ELSEIF ERR = EXIT_PH_SETUP THEN
  135.         dlg% = EXIT_PH_SETUP
  136.     ELSE
  137.         dlg% = EXITFAILURE
  138.     END IF
  139.         
  140.  
  141. DLG:
  142.     ''i% = DoMsgBox(STR$(ERR)+" "+STR$(dlg%), "PowerHouse Update Message", MB_OK+MB_TASKMODAL+MB_ICONHAND)
  143.     
  144.     UIPop 1
  145.         sz$ = UIStartDlg(CUIDLL$, dlg%, "FInfoDlgProc", 0, "")
  146.     END
  147.  
  148. ERRQUIT:
  149.     i% = DoMsgBox("Setup sources were corrupted, please call Impressions 001 61722 50500", "PowerHouse Update Message", MB_OK+MB_TASKMODAL+MB_ICONHAND)
  150.     END
  151.     
  152.  
  153. '*************************************************************************
  154. '** Purpose:
  155. '**     Prompts the user for a path for the title files
  156. '** Arguments:
  157. '**     szDefault$ - default path
  158. '** Returns:
  159. '**     New valid path name, or "" if the user quit.
  160. '*************************************************************************
  161.  
  162. FUNCTION GetTitleDir (szDefault$) STATIC AS STRING
  163.  
  164.     SetSymbolValue "String", TitleShortName$
  165.     SetSymbolValue "EditTextIn", szDefault$
  166.     SetSymbolValue "EditFocus", "ALL"
  167.  
  168.     GETPATH:
  169.  
  170.     sz$ = UIStartDlg(CUIDLL$, DESTPATH, "FEditDlgProc", APPHELP, "FHelpDlgProc")
  171.  
  172.     IF sz$ = "CONTINUE" THEN
  173.         szTitleDir$ = GetSymbolValue("EditTextOut")
  174.         IF IsDirWritable(szTitleDir$) = 0 THEN
  175.  
  176.             BADPATH:
  177.  
  178.             sz$ = UIStartDlg(CUIDLL$, BADPATH, "FInfoDlgProc", 0, "")
  179.             IF sz$ = "REACTIVATE" THEN
  180.                 GOTO BADPATH
  181.             END IF
  182.             UIPop 1
  183.             GOTO GETPATH
  184.         END IF
  185.         UIPop 1
  186.         CreateDir szTitleDir$, cmoNone
  187.  
  188.     ELSEIF sz$ = "REACTIVATE" THEN
  189.         GOTO GETPATH
  190.     ELSE
  191.         szTitleDir$ = ""
  192.  
  193.     END IF
  194.  
  195.     GetTitleDir = szTitleDir$
  196.  
  197. END FUNCTION
  198.  
  199.  
  200. '*************************************************************************
  201. '** Purpose:
  202. '**     Copies the files in the INF file
  203. '** Arguments:
  204. '**     szTitleDir$ - destination directory for the title files
  205. '** Returns
  206. '**     1 if files were copied, 0 otherwise
  207. '*************************************************************************
  208.  
  209. FUNCTION CopyFiles(szTitleDir$) STATIC AS INTEGER
  210.  
  211.     '' Add all of the title files to the copy list
  212.     AddSectionFilesToCopyList "UPDATE FILES", GetSymbolValue("STF_SRCDIR"), szTitleDir$
  213.  
  214.     '' Check size
  215.     szExtras$ = "Extra"
  216.     szCosts$ = "Costs"
  217.     szNeededs$ = "Neededs"
  218.     FOR i% = 1 TO 26 STEP 1
  219.         AddListItem szExtras$, "0"
  220.     NEXT i%
  221.     
  222.     '' We assume that VIEWER.INI will take another 4K
  223.      ReplaceListItem szExtras$, ASC(MID$(UCASE$(GetWindowsDir()), 1, 1)) - ASC("A") + 1, STR$(4096)
  224.     
  225.     '' Get amount of space required
  226.     StillNeed& = GetCopyListCost(szExtras$, szCosts$, szNeededs$)
  227.     
  228.     '' Put up a message if there is not enough space
  229.     FOR i% = 1 TO 26 STEP 1
  230.         IF VAL(GetListItem(szNeededs$, i%)) > 0 THEN
  231.     
  232.             SetSymbolValue "String1", LTRIM$(STR$(VAL(GetListItem(szCosts$, i%)) / 1024))
  233.             SetSymbolValue "String2", CHR$(i% - 1 + ASC("A"))
  234.     
  235.             TOOBIG:
  236.     
  237.             sz$ = UIStartDlg(CUIDLL$, TOOBIG, "FInfoDlgProc", 0, "")
  238.             IF sz$ = "REACTIVATE" THEN
  239.                 GOTO TOOBIG
  240.             END IF
  241.             UIPop 1
  242.             CopyFiles = 0
  243.             GOTO DONTCOPY
  244.         END IF
  245.     NEXT i%
  246.  
  247.     '' Copy the files
  248.     CopyFilesInCopyList
  249.     
  250.     CopyFiles = 1
  251.  
  252. DONTCOPY:
  253.  
  254. END FUNCTION
  255.  
  256. '*************************************************************************
  257. '** Purpose:
  258. '**     Puts up a success dialog
  259. '*************************************************************************
  260.  
  261. SUB ShowSuccess STATIC
  262.  
  263.     SUCCESS:
  264.     
  265.     SetSymbolValue "String1", TitleShortName$
  266.     sz$ = UIStartDlg(CUIDLL$, SUCCESS, "FInfoDlgProc", 0, "")
  267.     IF sz$ = "REACTIVATE" THEN
  268.         GOTO SUCCESS
  269.     END IF
  270.     UIPop 1
  271.     
  272. END SUB
  273.  
  274. '*************************************************************************
  275. '** Purpose:
  276. '**     Creates program manager entries for the title
  277. '*************************************************************************
  278.  
  279. SUB ModifyProgramManager STATIC
  280.  
  281.      CreateProgmanItem ProgmanGroup$, ProgmanItem$, szTitleDir$+"\POWHS.EXE",szTitleDir$+"\POWERH.ICO",cmoOverwrite
  282.  
  283. END SUB
  284.  
  285. '**
  286. '** Purpose:
  287. '**     Appends a file name to the end of a directory path,
  288. '**     inserting a backslash character as needed.
  289. '** Arguments:
  290. '**     szDir$  - full directory path (with optional ending "\")
  291. '**     szFile$ - filename to append to directory
  292. '** Returns:
  293. '**     Resulting fully qualified path name.
  294. '*************************************************************************
  295. FUNCTION MakePath (szDir$, szFile$) STATIC AS STRING
  296.     IF szDir$ = "" THEN
  297.     MakePath = szFile$
  298.     ELSEIF szFile$ = "" THEN
  299.     MakePath = szDir$
  300.     ELSEIF MID$(szDir$, LEN(szDir$), 1) = "\" THEN
  301.     MakePath = szDir$ + szFile$
  302.     ELSE
  303.     MakePath = szDir$ + "\" + szFile$
  304.     END IF
  305. END FUNCTION
  306.  
  307.  
  308. FUNCTION GetRealWindowsSysDir STATIC AS STRING
  309.     szBuf$ = string$(260, 32)
  310.     cbBuf% = GetRealSystemDir(szBuf$, 260)
  311.     IF cbBuf% = 0 THEN
  312.     ERROR STFERR
  313.     ELSE
  314.     IF cbBuf% > 259 THEN
  315.         res% = DoMsgBox("Buffer Overflow", "MS-Setup Error", MB_ICONHAND+MB_OK)
  316.         ERROR STFERR
  317.     END IF
  318.     szBuf$ = RTRIM$(szBuf$)
  319.     IF MID$(szBuf$, 1, 1) = "\" THEN
  320.         szBuf$ = MID$(CURDIR$, 1, 2) + szBuf$
  321.     ELSEIF MID$(szBuf$, 2, 1) <> ":" THEN
  322.         szBuf$ = MID$(CURDIR$, 1, 3) + szBuf$
  323.     END IF
  324.     IF MID$(szBuf$, LEN(szBuf$), 1) <> "\" THEN
  325.         szBuf$ = szBuf$ + "\"
  326.     END IF
  327.     GetRealWindowsSysDir = szBuf$
  328.     END IF
  329.  
  330.     szBuf$ = ""
  331. END FUNCTION
  332.  
  333.  
  334.