home *** CD-ROM | disk | FTP | other *** search
/ Multi-CD Magazin 1993 January / MultiCDMagazin0193_2ndEd.bin / squeue / zsetupsq.ms_ / zsetupsq.ms
Text File  |  1993-09-28  |  10KB  |  299 lines

  1. '**************************************************************************
  2. '*  Zenographics Setup Script for SuperQueue
  3. '*  (C) 1993 Zenographics Inc.
  4. '**************************************************************************
  5.  
  6.  
  7. ''$DEFINE DEBUG  'Define for script development/debugging;  comment
  8.          'out or remove this definition for release versions.
  9.  
  10. '==============================================================================
  11. '   Include files
  12. '------------------------------------------------------------------------------
  13. '$INCLUDE 'zapi.mst'
  14. '$INCLUDE 'zdetect.mst'
  15.  
  16. '==============================================================================
  17. '   Constant Declarations
  18. '==============================================================================
  19. 'Dialog ID's.  These numbers identify a dialog template in MSCUISTF.DLL.
  20. CONST IDD_MSG_WELCOME_SQ    = 3000
  21. CONST IDD_MSG_FAILURE        = 1200
  22. CONST IDD_MSG_ABORTED        = 1300
  23. CONST IDD_MSG_COMPLETED     = 1400
  24. CONST IDD_ASK_AUTOQUEUE     = 6000
  25. CONST IDD_MSG_HOWTOUNQUEUE  = 3100
  26. CONST IDD_ERR_BADPATH        = 8200
  27. CONST IDD_MSG_SQNOTONPATH   = 3600
  28.  
  29. CONST FALSE = 0
  30. CONST TRUE  = (NOT FALSE)
  31.  
  32. 'Bitmap ID.  This identifies the bitmap resource used for the logo in the
  33. 'main window.
  34. CONST LOGO_SUPERQUEUE    = 1
  35.  
  36.  
  37. '==============================================================================
  38. '   Global Variable and Procedure Declarations
  39. '==============================================================================
  40. GLOBAL CUIDLL$        'Holds name of our custom DLL
  41. GLOBAL HELPPROC$    'Holds name of the help dialog procedure
  42. GLOBAL CWDIR$        'Path of current working directory
  43. GLOBAL WINPATH$     'The Windows path
  44. GLOBAL SYSPATH$     'the Windows System path
  45. GLOBAL INSTPATH$
  46. GLOBAL HELPID$
  47.  
  48. GLOBAL StatusItems$
  49.  
  50. DECLARE SUB DoAskQuit
  51. DECLARE SUB FCloseApplication LIB "MSCUI_sq.DLL" (AppClassName$, hInst%)
  52. declare sub SetFrameHandle lib "mscui_sq.dll" (hwnd%)
  53. DECLARE FUNCTION AppendBackslash (a$) AS STRING
  54. DECLARE SUB CreatePathList( a$ )
  55. DECLARE FUNCTION SearchList (listname$, key$) AS INTEGER
  56. DECLARE SUB WinExec LIB "KERNEL.EXE" ( Appname$, Show% )
  57.  
  58. '==============================================================================
  59. '   Code
  60. '   ----
  61. '   Actual work starts here.
  62. '==============================================================================
  63.  
  64.  
  65. '-----------------------------
  66.  
  67.     '$IFDEF VERBOSE
  68.     echo on
  69.     '$ENDIF
  70.     CUIDLL$ = "mscui_sq.dll"    'Custom user interface dll
  71.     HELPPROC$ = ""        'Help dialog procedure
  72.     INFFILENAME$ = "ZENO.INF"    'Our specific disk layout .INF filename
  73.     SrcPath$ = GetSymbolValue("STF_SRCDIR")
  74.     CWD$ = GetSymbolValue("STF_CWDDIR")
  75.     WinIniFile$ = GetWindowsDir + "WIN.INI"
  76.     WINPATH$ = GetWindowsDir
  77.     SYSPATH$ = GetWindowsSysDir
  78.     INSTPATH$ = WINPATH$
  79.     TempList$ = "MAINTEMPLIST"
  80.     HelpID$ = "HelpTopic"
  81.  
  82.     StatusItems$ = "StatusItems"
  83.     SetupLog$ = "SQSETUP.LOG"
  84.     ProgManGroup$ = "SuperQueue"
  85.  
  86.     SetBitmap CUIDLL$, LOGO_SUPERQUEUE
  87.     SetWindowText HwndFrame(), "SuperQueue Setup"
  88.     SetFrameHandle HwndFrame()
  89.  
  90. 'Figure out where to find the disk layout .INF file.  First check
  91. 'to see if the user explicitly named an .INF path and filename, otherwise
  92. 'look for one in the current working directory.
  93.  
  94.     szInf$ = GetSymbolValue("STF_SRCINFPATH")
  95.     IF szInf$ = "" THEN
  96.     szInf$ = CWD$ + INFFILENAME$
  97.     END IF
  98.     ReadInfFile szInf$
  99.  
  100.     'Close these if they're running.
  101.     FCloseApplication "SUPERQUE", HinstFrame
  102.  
  103.     'Check that we're running in at least Windows 3.10.
  104.     i% = GetWindowsMajorVersion * 100 + GetWindowsMinorVersion
  105.  
  106.     '' ### AK 4.93 ###
  107.     if i% < 310 then
  108.     i% = DoMsgBox("SuperQueue erfordert Windows 3.10 oder höher.", "Setup Error", MB_ICONHAND)
  109.     end
  110.     end if
  111.  
  112.  
  113. '--------------------------------------------------------------------------
  114. 'This is the initial dialog box that the user sees, "Welcome".
  115. 'Show the Welcome dialog box and wait for a user decision.
  116.  
  117.     CreatePathList( "PathList" )
  118.  
  119. WELCOME:
  120.     SetSymbolValue "EditTextIn", INSTPATH$
  121.     sz$ = ""
  122.     while sz$ <> "CONTINUE"
  123.     sz$ = UIStartDlg(CUIDLL$, IDD_MSG_WELCOME_SQ, "FEditDlgProc", 0, "")
  124.     if sz$ = "EXIT" then
  125.         error STFQUIT
  126.     end if
  127.     wend
  128.     UIPop 1
  129.     INSTPATH$ = GetSymbolValue( "EditTextOut" )
  130.     if FIsDirWritable( INSTPATH$ ) = 0 then
  131.     sz$ = ""
  132.     RemoveSymbol StatusItems$
  133.     AddListItem StatusItems$, INSTPATH$
  134.     while sz$ <> "CONTINUE"
  135.         sz$ = UIStartDlg( CUIDLL$, IDD_ERR_BADPATH, "FBadPathDlgProc", 0, "" )
  136.     wend
  137.     UIPOP 1
  138.     goto WELCOME
  139.     end if
  140.  
  141.     if SearchList( "PathList", AppendBackslash( INSTPATH$ )) = 0 then
  142.     sz$ = ""
  143.     RemoveSymbol StatusItems$
  144.     AddListItem StatusItems$, INSTPATH$
  145.     while sz$ <> "CONTINUE" and sz$ <> "BACK"
  146.         sz$ = UIStartDlg( CUIDLL$, IDD_MSG_SQNOTONPATH, "FBadPathDlgProc", 0, "" )
  147.     wend
  148.     UIPop 1
  149.     if sz$ <> "CONTINUE" then
  150.         goto WELCOME
  151.     end if
  152.     end if
  153.  
  154. '==============================================================================
  155. '  Here's the actual file copying, WIN.INI file changes, etc.
  156. '==============================================================================
  157.  
  158. INSTALLATION:
  159.  
  160.     CreateDir INSTPATH$, cmoVital
  161.     OpenLogFile INSTPATH$ + SetupLog$, 0
  162.     print "Installation Path: ";INSTPATH$
  163.  
  164.     AddSectionFilesToCopyList "System", SrcPath$, SYSPATH$
  165.     AddSectionFilesToCopyList "SuperQueue", SrcPath$, INSTPATH$
  166.     AddSectionFilesToCopyList "Miscellaneous", SrcPath$, INSTPATH$
  167.  
  168.  
  169. '----------------------------
  170. 'Now install the files!
  171.     '$IFDEF DEBUG
  172.     i% = SetCopyMode (0)
  173.     '$ENDIF
  174.     CopyFilesInCopyList
  175.     ResetCopyList
  176. '----------------------------
  177.  
  178. 'Make changes to .INI files here.
  179.     CreateIniKeyValue WinIniFile$, "SuperQueue", "Processing", "2", cmoOverwrite
  180.  
  181.     ProgManGroup$ = "SuperQueue"
  182.     CreateProgmanGroup ProgManGroup$, "", cmoNone
  183.     ShowProgmanGroup ProgManGroup$, 1, cmoNone
  184.     CreateProgmanItem ProgManGroup$, "Super Queue", INSTPATH$ + "SUPERQUE.EXE", "", cmoOverwrite
  185.  
  186. ''  ### 4.93 AK ### -- we don't use SQ SuperHelp, so commented out
  187. ''  CreateProgmanItem ProgManGroup$, "SuperQueue SuperHelp", "WINHELP " + INSTPATH$ + "SQSUPER.HLP", "", cmoOverwrite
  188.  
  189.     CreateProgmanItem ProgManGroup$, "Read Me", "WRITE " + INSTPATH$ + "SQREADME.WRI", "", cmoOverwrite
  190.     CreateProgmanItem ProgManGroup$, "De-Install", "WRITE " + INSTPATH$ + "SQDEINST.WRI", "", cmoOverwrite
  191.  
  192. ' If the Windows has a default printer registered, ask 'em if they want
  193. ' it to be queued.
  194.     a$ = GetIniKeyString( WinIniFile$, "windows", "device" )
  195.     b$ = ucase$( GetNthFieldFromIniString( a$, 2 ))
  196.     a$ = GetNthFieldFromIniString( a$, 1 )
  197.     if a$ <> "" and b$ <> "QD" then
  198.     RemoveSymbol StatusItems$
  199.     AddListItem StatusItems$, a$
  200.     sz$ = ""
  201.     while sz$ <> "CONTINUE" and sz$ <> "EXIT"
  202.         sz$ = UIStartDlg( CUIDLL$, IDD_ASK_AUTOQUEUE, "FBadPathDlgProc", 0, "")
  203.     wend
  204.     UIPop 1
  205.     if sz$ = "CONTINUE" then
  206.         sz$ = ""
  207.         while sz$ <> "CONTINUE"
  208.         sz$ = UIStartDlg( CUIDLL$, IDD_MSG_HOWTOUNQUEUE, "FInfoDlgProc", 0, "" )
  209.         wend
  210.         UIPOP 1
  211.         CreateIniKeyValue WinIniFile$, "SuperQueue", a$, "*B", cmoNone
  212.         'Turn off Print Manager, turn on "Direct To Port".
  213.         CreateIniKeyValue WinIniFile$, "windows", "spooler", "no", cmoOverwrite
  214.         CreateIniKeyValue WinIniFile$, "windows", "DosPrint", "no", cmoOverwrite
  215.     end if
  216.     end if
  217.     CreateProgmanItem ProgManGroup$, "sqsetup.log", "NOTEPAD " + INSTPATH$ + SetupLog$, "", cmoOverwrite
  218.     WinExec INSTPATH$ + "SUPERQUE.EXE", 7   'Run SQ as an icon (inactive).
  219.  
  220.     sz$ = ""
  221.     while sz$ <> "CONTINUE"
  222.     sz$ = UIStartDlg( CUIDLL$, IDD_MSG_COMPLETED, "FInfoDlgProc", 0, "" )
  223.     wend
  224.     UIPopAll
  225.     END
  226.  
  227.  
  228. '------------------------------------------------------------------------------
  229. FUNCTION AppendBackslash( a$ ) STATIC AS STRING
  230.     if mid$( a$, len( a$ ), 1 ) <> "\" then
  231.     a$ = a$ + "\"
  232.     end if
  233.     AppendBackslash = a$
  234. END FUNCTION
  235.  
  236. '------------------------------------------------------------------------------
  237. SUB CreatePathList( a$ ) STATIC
  238.     RemoveSymbol a$
  239.     AddListItem a$, GetWindowsDir
  240.     AddListItem a$, GetWindowsSysDir
  241.     path$ = string$( 512, 32 )
  242.     i% = CbGetEnvVariableValue( "PATH", path$, 512 )
  243.     if path$ <> "" then
  244.     i% = 1
  245.     path$ = rtrim$(path$)
  246.     while i% <> 0
  247.         j% = instr( i%, path$, ";" )
  248.         if j% then
  249.         b$ = mid$( path$, i%, j% - i% )
  250.         i% = j% + 1
  251.         else
  252.         b$ = mid$( path$, i% )
  253.         i% = 0
  254.         end if
  255.         if len(b$) then
  256.         AddListItem a$, AppendBackslash( b$ )
  257.         end if
  258.     wend
  259.     end if
  260. END SUB
  261.  
  262. '------------------------------------------------------------------------------
  263. ' ### ak 9.93 ### compare both strings in uppercase
  264.  
  265. FUNCTION SearchList ( listname$, key$ ) STATIC AS INTEGER
  266.     for i% = GetListLength( listname$ ) to 1 step -1
  267.     if ucase$( key$ ) = ucase$( GetListItem( listname$, i% )) then
  268.         exit for
  269.     end if
  270.     next
  271.     SearchList = i%
  272. END FUNCTION
  273.  
  274. '==============================================================================
  275. '   Error Handling
  276. '==============================================================================
  277. QUIT:
  278.     ON ERROR GOTO ERRQUIT
  279.  
  280.     IF ERR = STFQUIT THEN
  281.     dlg% = IDD_MSG_ABORTED
  282.     ELSE
  283.     dlg% = IDD_MSG_FAILURE
  284.     END IF
  285.     IF ERR <> 0 THEN
  286.     PRINT "Abend: ERR="; ERR
  287.     END IF
  288.     sz$ = ""
  289.     while sz$ <> "CONTINUE"
  290.     sz$ = UIStartDlg(CUIDLL$, dlg%, "FInfo0DlgProc", 0, "")
  291.     wend
  292.     UIPop 1
  293.     END
  294.  
  295. ERRQUIT:
  296.     i% = DoMsgBox("Setup sources were corrupted, call Zenographics Technical Support!", "Setup Message", MB_OK+MB_TASKMODAL+MB_ICONHAND)
  297.     END
  298.  
  299.