home *** CD-ROM | disk | FTP | other *** search
/ Australian Personal Computer: Business Software / BusinessSoftware-Disk4PhotoStudio.img / ps20.exe / PSTUDIO.MS_ / PSTUDIO.MS
Encoding:
Text File  |  1997-01-08  |  7.4 KB  |  259 lines

  1. '**************************************************************************
  2. '*            for PhotoStudio Setup
  3. '**************************************************************************
  4.  
  5. '' no debug '$DEFINE DEBUG  ''Define for script development/debugging
  6.  
  7. '$INCLUDE 'setupapi.inc'
  8. '$INCLUDE 'msdetect.inc'
  9.  
  10. ''Dialog ID's
  11. CONST ASKQUIT      = 200
  12. CONST DESTPATH     = 300
  13. CONST EXITFAILURE  = 400
  14. CONST EXITQUIT     = 600
  15. CONST EXITSUCCESS  = 700
  16. CONST OPTIONS      = 800
  17. CONST APPHELP      = 900
  18. CONST CUSTINST     = 6200
  19. CONST TOOBIG       = 6300
  20. CONST BADPATH      = 6400
  21.  
  22. ''Bitmap ID
  23. CONST LOGO         = 1
  24.  
  25. GLOBAL DEST$        ''Default destination directory.
  26. GLOBAL WINDRIVE$    ''Windows drive letter.
  27.  
  28. ''Dialog list symbol names
  29. GLOBAL CHECKSTATES$
  30. GLOBAL STATUSTEXT$
  31. GLOBAL DRIVETEXT$
  32.  
  33.  
  34. DECLARE SUB SetDriveStatus
  35. DECLARE FUNCTION MakePath (szDir$, szFile$) AS STRING
  36.  
  37.  
  38.  
  39. INIT:
  40.     CUIDLL$ = "mscuistf.dll"            ''custom user interface dll
  41.     HELPPROC$ = "FHelpDlgProc"          ''Help dialog procedure
  42.  
  43.     SetBitmap CUIDLL$, LOGO
  44.     SetTitle "PhotoStudio Setup"
  45.  
  46.     szInf$ = GetSymbolValue("STF_SRCINFPATH")
  47.     IF szInf$ = "" THEN
  48.         szInf$ = GetSymbolValue("STF_CWDDIR") + "PSTUDIO.INF"
  49.     END IF
  50.     ReadInfFile szInf$
  51.  
  52.     WINDRIVE$ = MID$(GetWindowsDir, 1, 1)
  53.     DEST$ = WINDRIVE$ + ":\PSTUDIO"
  54.  
  55.     ''CustInst list symbols
  56.     CHECKSTATES$ = "CheckItemsState"
  57.     STATUSTEXT$  = "StatusItemsText"
  58.     DRIVETEXT$   = "DriveStatusText"
  59.     FOR i% = 1 TO 3 STEP 1
  60.         AddListItem CHECKSTATES$, "ON"
  61.     NEXT i%
  62.     FOR i% = 1 TO 3 STEP 1
  63.         AddListItem STATUSTEXT$, ""
  64.     NEXT i%
  65.     FOR i% = 1 TO 7 STEP 1
  66.         AddListItem DRIVETEXT$, ""
  67.     NEXT i%
  68.     ReplaceListItem DRIVETEXT$, 7, DEST$
  69.  
  70.     SetDriveStatus
  71.  
  72.  '$IFDEF DEBUG
  73.     i% = SetSizeCheckMode(scmOnIgnore)    '' could use scmOff; def = scmOnFatal
  74.  '$ENDIF ''DEBUG
  75.  
  76.  
  77.  
  78. CUSTINST:
  79.     sz$ = UIStartDlg(CUIDLL$, CUSTINST, "FCustInstDlgProc", APPHELP, HELPPROC$)
  80.  
  81.     IF sz$ = "CONTINUE" THEN
  82.         UIPop 1
  83.         GOTO INSTALL
  84.     ELSEIF sz$ = "PATH" THEN
  85.         GOTO GETPATH
  86.     ELSEIF sz$ = "REACTIVATE" THEN
  87.         SetDriveStatus
  88.         GOTO CUSTINST
  89.     ELSE
  90.         GOSUB ASKQUIT
  91.         GOTO CUSTINST
  92.     END IF
  93.  
  94.  
  95.  
  96. INSTALL:
  97.     ClearCopyList
  98.      SrcDir$ = GetSymbolValue("STF_SRCDIR")
  99.     WinDir$ = GetWindowsDir()
  100.     AddSectionFilesToCopyList "AppFiles", SrcDir$, DEST$
  101.     AddSectionFilesToCopyList "Plugins", SrcDir$, MakePath(DEST$,"PLUGINS")
  102.     AddSectionFilesToCopyList "Patterns", SrcDir$, MakePath(DEST$,"PATTERNS")
  103.     AddSectionFilesToCopyList "Samples", SrcDir$, MakePath(DEST$,"SAMPLES")
  104.     AddSectionFilesToCopyList "Albums", SrcDir$, MakePath(DEST$,"ALBUMS")
  105.     AddSectionFilesToCopyList "Stamps", SrcDir$, MakePath(DEST$,"STAMPS")
  106.     AddSectionFilesToCopyList "SysFiles", SrcDir$, WinDir$
  107.     CreateDir DEST$, cmoNone
  108.     CopyFilesInCopyList
  109.  
  110. ''    CreateIniKeyValue WinDir$ + "system.ini", "boot", "SCRNSAVE.EXE", MakePath(WinDir$,"ASSLDSHW.SCR"), cmoOverwrite
  111.     CreateIniKeyValue WinDir$ + "control.ini", "ScreenSaver.ArcSoft Slide Show", "Path", MakePath(DEST$,"albums\"), cmoOverwrite
  112. ''    CreateIniKeyValue WinDir$ + "win.ini", "windows", "ScreenSaveActive", "1", cmoOverwrite
  113. ''    CreateIniKeyValue WinDir$ + "win.ini", "Extensions", "bmp", MakePath(DEST$,"pstudio.exe ^.bmp"), cmoOverwrite
  114. ''    CreateIniKeyValue WinDir$ + "win.ini", "Extensions", "tif", MakePath(DEST$,"pstudio.exe ^.tif"), cmoOverwrite
  115. ''    CreateIniKeyValue WinDir$ + "win.ini", "Extensions", "jpg", MakePath(DEST$,"pstudio.exe ^.jpg"), cmoOverwrite
  116.     CreateProgmanGroup "PhotoStudio", "", cmoNone
  117.     ShowProgmanGroup  "PhotoStudio", 1, cmoNone
  118.     CreateProgmanItem "PhotoStudio", "PhotoStudio 2.0", MakePath(DEST$,"pstudio.exe"), "", cmoOverwrite
  119.     CreateProgmanItem "PhotoStudio", "Register & Order", MakePath(DEST$,"qkorder.exe"), "", cmoOverwrite
  120.     CreateProgmanItem "PhotoStudio", "PhotoStudio Readme", "write.exe "+MakePath(DEST$,"readme.wri"), "", cmoOverwrite
  121.     CreateProgmanItem "PhotoStudio", "PhotoStudio Help", "winhelp.exe "+MakePath(DEST$,"pstudio.hlp"), "", cmoOverwrite
  122.  
  123. QUIT:
  124.     ON ERROR GOTO ERRQUIT
  125.  
  126.     IF ERR = 0 THEN
  127.         dlg% = EXITSUCCESS
  128.     ELSEIF ERR = STFQUIT THEN
  129.         dlg% = EXITQUIT
  130.     ELSE
  131.         dlg% = EXITFAILURE
  132.     END IF
  133. QUITL1:
  134.     sz$ = UIStartDlg(CUIDLL$, dlg%, "FInfo0DlgProc", 0, "")
  135.     IF sz$ = "REACTIVATE" THEN
  136.         GOTO QUITL1
  137.     END IF
  138.     UIPop 1
  139.  
  140.     END
  141.  
  142. ERRQUIT:
  143.     i% = DoMsgBox("Setup sources were corrupted!", "Setup Message", MB_OK+MB_TASKMODAL+MB_ICONHAND)
  144.     END
  145.  
  146.  
  147.  
  148. GETPATH:
  149.     SetSymbolValue "EditTextIn", DEST$
  150.     SetSymbolValue "EditFocus", "END"
  151. GETPATHL1:
  152.     sz$ = UIStartDlg(CUIDLL$, DESTPATH, "FEditDlgProc", APPHELP, HELPPROC$)
  153.  
  154.     IF sz$ = "CONTINUE" THEN
  155.         olddest$ = DEST$
  156.         DEST$ = GetSymbolValue("EditTextOut")
  157.  
  158.         ''Validate new path.
  159.         IF IsDirWritable(DEST$) = 0 THEN
  160.             GOSUB BADPATH
  161.             GOTO GETPATHL1
  162.         END IF
  163.         UIPop 1
  164.  
  165.         ''Truncate display if too long.
  166.         IF LEN(DEST$) > 23 THEN
  167.             ReplaceListItem DRIVETEXT$, 7, MID$(DEST$, 1, 23)+"..."
  168.         ELSE
  169.             ReplaceListItem DRIVETEXT$, 7, DEST$
  170.         END IF
  171.  
  172.         ''Recalc if path changed.
  173.         IF (olddest$ <> DEST$) AND (olddest$ <> DEST$+"\") AND (olddest$+"\" <> DEST$) THEN
  174.             SetDriveStatus
  175.         END IF
  176.  
  177.         olddest$ = ""
  178.         GOTO CUSTINST
  179.     ELSEIF sz$ = "REACTIVATE" THEN
  180.         SetDriveStatus
  181.         GOTO GETPATHL1
  182.     ELSEIF sz$ = "EXIT" THEN
  183.         GOSUB ASKQUIT
  184.         GOTO GETPATHL1
  185.     ELSE
  186.         UIPop 1
  187.         GOTO CUSTINST
  188.     END IF
  189.  
  190.  
  191. BADPATH:
  192.     sz$ = UIStartDlg(CUIDLL$, BADPATH, "FInfo0DlgProc", 0, "")
  193.     IF sz$ = "REACTIVATE" THEN
  194.         SetDriveStatus
  195.         GOTO BADPATH
  196.     END IF
  197.     UIPop 1
  198.     RETURN
  199.  
  200.  
  201.  
  202. ASKQUIT:
  203.     sz$ = UIStartDlg(CUIDLL$, ASKQUIT, "FQuitDlgProc", 0, "")
  204.  
  205.     IF sz$ = "EXIT" THEN
  206.         UIPopAll
  207.         ERROR STFQUIT
  208.     ELSEIF sz$ = "REACTIVATE" THEN
  209.         GOTO ASKQUIT
  210.     ELSE
  211.         UIPop 1
  212.     END IF
  213.     RETURN
  214.  
  215.  
  216. '**
  217. '** Purpose:
  218. '**     Sets drive status info according to latest disk space calcs.
  219. '** Arguments:
  220. '**     none.
  221. '** Returns:
  222. '**     none.
  223. '*************************************************************************
  224. SUB SetDriveStatus STATIC
  225.  
  226.     drive$ = MID$(DEST$, 1, 1)
  227.     ndrive% = ASC(ucase$(drive$)) - ASC("A") + 1
  228.     cost& = 3100
  229.     free& = GetFreeSpaceForDrive(drive$)
  230.     ReplaceListItem DRIVETEXT$, 1, drive$ + ":"
  231.     ReplaceListItem DRIVETEXT$, 2, STR$(cost&) + " K"
  232.     ReplaceListItem DRIVETEXT$, 3, STR$(free& / 1024) + " K"
  233.  
  234. END SUB
  235.  
  236.  
  237. '**
  238. '** Purpose:
  239. '**     Appends a file name to the end of a directory path,
  240. '**     inserting a backslash character as needed.
  241. '** Arguments:
  242. '**     szDir$  - full directory path (with optional ending "\")
  243. '**     szFile$ - filename to append to directory
  244. '** Returns:
  245. '**     Resulting fully qualified path name.
  246. '*************************************************************************
  247. FUNCTION MakePath (szDir$, szFile$) STATIC AS STRING
  248.     IF szDir$ = "" THEN
  249.         MakePath = szFile$
  250.     ELSEIF szFile$ = "" THEN
  251.         MakePath = szDir$
  252.     ELSEIF MID$(szDir$, LEN(szDir$), 1) = "\" THEN
  253.         MakePath = szDir$ + szFile$
  254.     ELSE
  255.         MakePath = szDir$ + "\" + szFile$
  256.     END IF
  257. END FUNCTION
  258.  
  259.