home *** CD-ROM | disk | FTP | other *** search
/ Computerworld 1996 March / Computerworld_1996-03_cd.bin / hp / drivers / laserjet / lj4mv / ppdsetup.mst < prev    next >
Text File  |  1995-02-27  |  8KB  |  283 lines

  1. '**************************************************************************
  2. '*                       MSSetup Script for AdobePS.drv 3.0
  3. '**************************************************************************
  4.  
  5. '$DEFINE DEBUG  ''Define for script development/debugging
  6.  
  7. '$INCLUDE 'setupapi.inc'
  8. '$INCLUDE 'msdetect.inc'
  9.  
  10. ''Dialog ID's
  11. CONST WELCOME       = 100
  12. CONST ASKQUIT       = 200
  13. CONST README        = 300
  14. CONST QUITAPPS      = 400
  15. CONST READONLY_DRV_EXIST = 450
  16. CONST NEWER_DRV_EXIST = 460
  17. CONST WINSYS        = 500
  18. CONST EXITFAILURE   = 600
  19. CONST EXITQUIT      = 700
  20. CONST EXITSUCCESS   = 800
  21. CONST EXITRESTART   = 850
  22. CONST TOOBIG        = 900
  23. CONST NOWRITE       = 1000
  24. CONST APPHELPCE     = 1100
  25. CONST APPHELPCBE    = 1200
  26. CONST APPHELPRS     = 1300
  27. CONST LOADING       = 1400
  28. CONST INVISIBLE     = 1500
  29.                       
  30. ''Bitmap ID
  31. CONST LOGO = 1
  32.  
  33. GLOBAL DEST$        ''Default destination directory.
  34. GLOBAL TMPDIR$      ''Temporary Dir name
  35. GLOBAL Restart%
  36. GLOBAL RebootMsg%
  37.  
  38. DECLARE FUNCTION MakePath (szDir$, szFile$) AS STRING
  39.  
  40. '******************************************************************
  41. '** Declare the funcitons in USER.EXE we need to register a
  42. '** unique message identifier and needed to post that message
  43. '** to the NSETUP.EXE program.  See the Windows api documentation
  44. '** for additional information on these functions. 
  45. '******************************************************************
  46. DECLARE FUNCTION PostMessage LIB "user" (hwnd%, msg%, wparam%, lparam&) AS INTEGER
  47. DECLARE FUNCTION RegisterWindowMessage LIB "user" (szRebootMessage$) AS INTEGER
  48.  
  49. INIT:
  50.     CUIDLL$ = "mscuistf.dll"            ''Custom user interface dll
  51.     HELPPROC$ = "FHelpDlgProc"          ''Help dialog procedure
  52.  
  53.     SetBitmap CUIDLL$, LOGO
  54.     SetTitle "PostScript Printer Driver Setup"
  55.  
  56.     szInf$ = GetSymbolValue("STF_SRCINFPATH")
  57.     IF szInf$ = "" THEN
  58.         szInf$ = GetSymbolValue("STF_CWDDIR") + "PPDSETUP.INF"
  59.     END IF
  60.     ReadInfFile szInf$
  61.  
  62.     DEST$ = "C:\WINDOWS\SYSTEM"
  63.     TMPDIR$ = ":\~pdrvset.t"
  64.  
  65. '$IFDEF DEBUG
  66.     i% = SetSizeCheckMode(scmOnIgnore)    '' could use scmOff; def = scmOnFatal
  67.     WinDrive$ = MID$(GetWindowsDir, 1, 1)
  68.     IF IsDriveValid(WinDrive$) = 0 THEN
  69.         i% = DoMsgBox("Windows drive ('"+WinDrive$+"') is not a valid drive.", "DEBUG", MB_TASKMODAL+MB_ICONHAND+MB_OK)
  70.         GOTO QUIT
  71.     ELSE
  72.        TMPDIR$ = WinDrive$ + TMPDIR$
  73.     END IF
  74. '$ENDIF ''DEBUG
  75. '***************************************************************
  76. '**  Here we go registering the message so we can communicate
  77. '**  with NSETUP.EXE.
  78. '***************************************************************
  79.     RebootMsg% = RegisterWindowMessage ("DrvSetup")
  80.  
  81. README:
  82.     sz$ = UIStartDlg(CUIDLL$, README, "FInfoDlgProc", APPHELPRS, HELPPROC$)
  83.     IF sz$ = "BACK" THEN
  84.         UIPop 1
  85.         sz$ = UIStartDlg(CUIDLL$, LOADING, "FExecWrite", 0, "")
  86.         IF sz$ = "CANCEL" THEN
  87.             UIPop 1
  88.             sz$ = UIStartDlg(CUIDLL$, NOWRITE, "FInfoDlgProc", 0, "")
  89.         END IF
  90.     END IF
  91.     UIPop 1
  92.  
  93.  
  94. WELCOME:
  95.     sz$ = UIStartDlg(CUIDLL$, WELCOME, "FInfoDlgProc", APPHELPCE, HELPPROC$)
  96.     IF sz$ = "CONTINUE" THEN
  97.         UIPop 1
  98.     ELSE
  99.         GOSUB ASKQUIT
  100.         GOTO WELCOME
  101.     END IF
  102.  
  103. '' README: moved to the front of WELCOME:
  104.  
  105.  
  106. CHECKBUSY:
  107.     WINDOWS$ = GetWindowsDir ()
  108.     SetSymbolValue "WindowsDir", WINDOWS$
  109.     DEST$ = GetWindowsSysDir ()
  110.     SetSymbolValue "WindowsSysDir", DEST$
  111.     IF IsDirWritable(DEST$) = 0 THEN
  112.        SetSymbolValue "WinSysDirWritable", "0"
  113.     ELSE 
  114.        SetSymbolValue "WinSysDirWritable", "1"
  115.     END IF
  116.  
  117.     sz$ = UIStartDlg(CUIDLL$, INVISIBLE, "FBusyModule", 0, "")
  118.     IF sz$ = "REALBUSY" THEN
  119.         dlg% = QUITAPPS
  120.         sz$ = UIStartDlg(CUIDLL$, dlg%, "FInfoDlgProc", 0, "")
  121.         Restart%=0
  122.         UIPopAll
  123.         END
  124.     END IF
  125.  
  126.     IF sz$ = "NEWDRVEXIST" THEN
  127.         dlg% = NEWER_DRV_EXIST
  128.         sz$ = UIStartDlg(CUIDLL$, dlg%, "FInfoDlgProc", 0, "")
  129.         Restart%=0
  130.         UIPopAll
  131.        END
  132.     ELSEIF sz$ = "DRVEXISTINSYS" THEN
  133.         dlg% = READONLY_DRV_EXIST
  134.         sz$ = UIStartDlg(CUIDLL$, dlg%, "FInfoDlgProc", 0, "")
  135.         Restart%=0
  136.         UIPopAll
  137.         END
  138.     ELSEIF sz$ = "BUSY" THEN
  139.         '' remember to re-start windows at the end. Fix bug 260
  140.         Restart%=1
  141.     ELSE
  142.         Restart%=0
  143.     END IF
  144.     UIPop 1
  145.  
  146.  
  147. CHECKWIN:
  148.     DEST$ = GetWindowsSysDir ()
  149.  
  150.     IF IsDirWritable(DEST$) = 0 THEN
  151.         sz$ = UIStartDlg(CUIDLL$, WINSYS, "FInfoDlgProc", APPHELPCBE, HELPPROC$)
  152.         IF sz$ = "CONTINUE" THEN
  153.             DEST$ = GetWindowsDir ()
  154.             UIPop 1
  155.         ELSEIF sz$ = "BACK" THEN
  156.             UIPop 1
  157.             GOTO README
  158.         ELSE
  159.             GOSUB ASKQUIT
  160.             GOTO WELCOME
  161.         END IF
  162.     END IF
  163.  
  164.     GOSUB INSTALL
  165.  
  166.     ini$ = MakePath(DEST$, "CONTROL.INI")
  167.     CreateIniKeyValue ini$, "MMCPL", "AdobeApps", "adobepsi.cpl" , cmoNone
  168.         
  169. QUIT:
  170.     ON ERROR GOTO ERRQUIT
  171.  
  172.     IF ERR = 0 THEN
  173.         IF Restart% = 0 THEN
  174.         '' always restart if sucess: dlg% = EXITSUCCESS
  175.         dlg% = EXITRESTART
  176.         ELSE
  177.         dlg% = EXITRESTART
  178.         END IF
  179.     ELSEIF ERR = STFQUIT THEN
  180.         dlg% = EXITQUIT
  181.     ELSE
  182.         dlg% = EXITFAILURE
  183.     END IF
  184. QUITL1:
  185.     sz$ = UIStartDlg(CUIDLL$, dlg%, "FInfoDlgProc", 0, "")
  186.     IF sz$ = "REACTIVATE" THEN
  187.         GOTO QUITL1
  188.     ELSEIF sz$ = "EXIT" THEN
  189.         i% = PostMessage (65535, RebootMsg%, 0, 0)
  190. '' doesn't work for 3.11:    dlg%=ExitExecRestart() 
  191. '' only one button now:
  192. ''    ELSEIF sz$ = "CANCEL" THEN
  193. ''       i% = DoMsgBox("Setup copied files correctly, you may need to restart Windows to use the new driver", "Setup Message", MB_OK+MB_TASKMODAL)
  194.     END IF
  195.     UIPop 1
  196.  
  197.     END
  198.  
  199. ERRQUIT:
  200.     i% = DoMsgBox("Setup sources were corrupted, call technical support!", "Setup Message", MB_OK+MB_TASKMODAL+MB_ICONHAND)
  201.     END
  202.  
  203. BADPATH:
  204.     sz$ = UIStartDlg(CUIDLL$, BADPATH, "FInfo0DlgProc", 0, "")
  205.     IF sz$ = "REACTIVATE" THEN
  206.         GOTO BADPATH
  207.     END IF
  208.     UIPop 1
  209.     RETURN
  210.  
  211.  
  212. ASKQUIT:
  213.     sz$ = UIStartDlg(CUIDLL$, ASKQUIT, "FQuitDlgProc", 0, "")
  214.  
  215.     IF sz$ = "EXIT" THEN
  216.         UIPopAll
  217.         ERROR STFQUIT
  218.     ELSEIF sz$ = "REACTIVATE" THEN
  219.         GOTO ASKQUIT
  220.     ELSE
  221.         UIPop 1
  222.     END IF
  223.     RETURN
  224.  
  225. '**
  226. '** Purpose:
  227. '**     Builds the copy list and performs all installation operations.
  228. '** Arguments:
  229. '**     none.
  230. '** Returns:
  231. '**     none.
  232. '*************************************************************************
  233. INSTALL:
  234.  
  235.     SrcDir$ = GetSymbolValue("STF_SRCDIR")
  236.  
  237. ''    SetRestartDir TMPDIR$
  238. '' Copy the Readme.wri ourselves: fix bug 470: use ini$ temporarily:
  239.     szReadme$ = GetSymbolValue("DRV_README")
  240.     szSrcReadme$ = MakePath(SrcDir$, szReadme$)
  241.     szDestReadme$ = MakePath(DEST$, szReadme$)
  242.     CopyFile szSrcReadme$, szDestReadme$, cmoOverwrite,0
  243.  
  244. '' Copy Watermar.INI now: fix bug 458
  245.     szWater$ = GetSymbolValue("DRV_WATER")
  246.     szSrcWater$ = MakePath(SrcDir$, szWater$)
  247.     DEST_WIN$ = GetWindowsDir ()
  248.     szDestWater$ = MakePath(DEST_WIN$, szWater$)
  249.     '' copy only if "watermar.ini" doesn't exist:
  250.     Wet%=DoesFileExist(szDestWater$, femExists)
  251.     IF Wet% = 0 THEN
  252.        CopyFile szSrcWater$, szDestWater$, cmoBackup,0
  253.     END IF
  254.  
  255.     AddSectionFilesToCopyList "Files", SrcDir$, DEST$
  256.     CopyFilesInCopyList
  257.  
  258.     RETURN
  259.  
  260.  
  261. '**
  262. '** Purpose:
  263. '**     Appends a file name to the end of a directory path,
  264. '**     inserting a backslash character as needed.
  265. '** Arguments:
  266. '**     szDir$  - full directory path (with optional ending "\")
  267. '**     szFile$ - filename to append to directory
  268. '** Returns:
  269. '**     Resulting fully qualified path name.
  270. '*************************************************************************
  271. FUNCTION MakePath (szDir$, szFile$) STATIC AS STRING
  272.     IF szDir$ = "" THEN
  273.         MakePath = szFile$
  274.     ELSEIF szFile$ = "" THEN
  275.         MakePath = szDir$
  276.     ELSEIF MID$(szDir$, LEN(szDir$), 1) = "\" THEN
  277.         MakePath = szDir$ + szFile$
  278.     ELSE
  279.         MakePath = szDir$ + "\" + szFile$
  280.     END IF
  281. END FUNCTION
  282.  
  283.