home *** CD-ROM | disk | FTP | other *** search
/ PC PowerPlay 10 / PCPP #10.iso / editors / hexedit / hex.mst < prev    next >
Encoding:
Text File  |  1996-08-02  |  11.8 KB  |  340 lines

  1. '**************************************************************************
  2. '*                       Hex Workshop Setup Script
  3. '**************************************************************************
  4.  
  5. '$DEFINE DEBUG  ''Define for script development/debugging
  6.  
  7. '$INCLUDE 'setupapi.inc'
  8. '$INCLUDE 'msdetect.inc'
  9. '$INCLUDE 'msregdb.inc'
  10.  
  11. ''Dialog ID's
  12. CONST DESTPATH      = 300
  13. CONST BADPATH       = 6400
  14.  
  15. CONST ASKQUIT       = 200
  16. CONST EXITFAILURE   = 400
  17. CONST EXITQUIT      = 600
  18. CONST EXITSUCCESS   = 700
  19.  
  20. CONST APPHELP       = 900
  21.  
  22. CONST ASKFMEXT      = 800
  23.  
  24. CONST ASKVCTOOLS    = 2500
  25.  
  26. ''Bitmap ID
  27. CONST LOGO = 1
  28.  
  29. CONST WS_VISIBLE = &H10000000
  30. CONST WS_BORDER = &H00800000
  31. CONST WS_CLIPCHILDREN =    &H02000000
  32. CONST GWL_STYLE = -16
  33. CONST SW_SHOWMAXIMIZED = 3
  34.                 
  35.                 
  36. GLOBAL VERSION$     ''Hex Workshop Version
  37. GLOBAL DEST$        ''Default destination directory.
  38. GLOBAL PATH$        ''Path retrieved from WIN.INI
  39. GLOBAL WINDRIVE$    ''Windows drive
  40. GLOBAL WINDIR$        ''Windows directory
  41.                                              
  42. DECLARE FUNCTION MakePath (szDir$, szFile$) AS STRING
  43. DECLARE FUNCTION GetDir (szPath$) AS STRING
  44.  
  45. DECLARE FUNCTION ShowWindow  LIB "user.exe" (hWnd%, iShow%) AS INTEGER
  46. DECLARE FUNCTION SetWindowLong LIB "user.exe" (hWnd%, offset%, style&) AS LONG     
  47.  
  48.  
  49. INIT:
  50.  
  51. '' General Init                         
  52.     VERSION$ = "2.20"
  53.  
  54.     CUIDLL$ = "mscuistf.dll"            ''Custom user interface dll
  55.     HELPPROC$ = "FHelpDlgProc"          ''Help dialog procedure
  56.  
  57.     SetBitmap CUIDLL$, LOGO
  58.     SetTitle ""
  59.  
  60.     szInf$ = GetSymbolValue("STF_SRCINFPATH")
  61.     IF szInf$ = "" THEN
  62.         szInf$ = GetSymbolValue("STF_CWDDIR") + "HEX.INF"
  63.     END IF
  64.     ReadInfFile szInf$
  65.  
  66. '' Maximize Window and eliminate title bar
  67.     hWnd% = HwndFrame()
  68.     rc% = SetWindowLong(hWnd%, GWL_STYLE, WS_VISIBLE + WS_BORDER + WS_CLIPCHILDREN)
  69.     rc% = ShowWindow(hWnd%, SW_SHOWMAXIMIZED)
  70.  
  71. '' Path Init (get current path if present)
  72.     PATH$ = GetIniKeyString("WIN.INI", "Hex Workshop", "Path")
  73.     IF LEN(PATH$) = 0 THEN
  74.         WINDRIVE$ = MID$(GetWindowsDir, 1, 1)
  75.         DEST$ = WINDRIVE$ + ":\HEXWORKS"
  76.     ELSE
  77.            DEST$ = GetDir(PATH$)
  78.     ENDIF
  79.  
  80.  
  81.  
  82. GETPATHDLG:
  83. '' Path to Install Init
  84.  
  85.     SetSymbolValue "EditTextIn", DEST$
  86.     SetSymbolValue "EditFocus", "END"
  87. GETPATHAGAIN:    
  88. '' Path to Install Entry
  89.  
  90.     sz$ = UIStartDlg(CUIDLL$, DESTPATH, "FEditDlgProc", APPHELP, HELPPROC$)
  91.     DEST$ = GetSymbolValue("EditTextOut")
  92.  
  93.     IF sz$ = "CONTINUE" THEN
  94.         IF IsDirWritable(DEST$) = 0 THEN
  95.             GOSUB BADPATH
  96.             GOTO GETPATHAGAIN
  97.         END IF
  98.         UIPop 1
  99.     ELSEIF sz$ = "REACTIVATE" THEN
  100.         GOTO GETPATHAGAIN
  101.     ELSE
  102.         GOSUB ASKQUIT
  103.         GOTO GETPATHDLG
  104.     END IF
  105.  
  106.  
  107.         
  108.         
  109. INSTALL:               
  110. '' Installation
  111.  
  112.     SrcDir$ = GetSymbolValue("STF_SRCDIR")
  113.     CreateDir DEST$, cmoNone
  114.  
  115.     AddSectionFilesToCopyList "AppFiles", SrcDir$, DEST$
  116.     
  117.     CopyFilesInCopyList
  118.     
  119.  
  120.  
  121. '' Program Group
  122.     CreateProgmanGroup "Hex Workshop", "", cmoNone
  123.     ShowProgmanGroup  "Hex Workshop", 1, cmoNone
  124.     CreateProgmanItem "Hex Workshop", "Hex Workshop", MakePath(DEST$, "HWORKS16.EXE"), "", cmoOverwrite
  125.     CreateProgmanItem "Hex Workshop", "Base Converter", MakePath(DEST$, "BCONV16.EXE"), "", cmoOverwrite
  126.     CreateProgmanItem "Hex Workshop", "Calculator", MakePath(DEST$, "CALC16.EXE"), "", cmoOverwrite
  127.     CreateProgmanItem "Hex Workshop", "Hex Workshop Help", MakePath(DEST$, "HEXWORKS.HLP"), "", cmoOverwrite
  128.     CreateProgmanItem "Hex Workshop", "Readme", MakePath(DEST$, "README16.TXT"), "", cmoOverwrite
  129.     CreateProgmanItem "Hex Workshop", "How to Order", MakePath(DEST$, "HOWORDER.TXT"), "", cmoOverwrite
  130.     CreateProgmanItem "Hex Workshop", "Order Form", MakePath(DEST$, "ORDERFRM.TXT"), "", cmoOverwrite
  131.  
  132.  
  133.  
  134. '' Enter Path and Version in WIN.INI
  135.     CreateIniKeyValue "WIN.INI", "Hex Workshop", "Path", MakePath(DEST$, "HWORKS16.EXE"), cmoOverwrite
  136.     CreateIniKeyValue "WIN.INI", "Hex Workshop", "CurrentVersion", VERSION$, cmoOverwrite
  137.  
  138.  
  139.  
  140. '' Register Hex Workshop in Registry
  141.     CreateRegKeyValue "HexWorkshop", "HexWorkshop File"
  142.     CreateRegKeyValue "HexWorkshop\Shell\Open\Command", MakePath(DEST$, "HWORKS16.EXE %1")
  143.  
  144.  
  145.  
  146. '' Handle File Manager Extension (if it exists, update it, if not, ask the user)
  147.     WINDIR$ = GetWindowsDir()
  148.     rv% = DoesIniKeyExist(MakePath(WINDIR$, "WINFILE.INI"), "AddOns", "HexWorkshop")
  149.     IF rv% = 1 THEN
  150.         CreateIniKeyValue MakePath(WINDIR$, "WINFILE.INI"), "AddOns", "HexWorkshop", MakePath(DEST$, "HWFMGR.DLL"), cmoOverwrite
  151.     ELSE
  152.         sz$ = UIStartDlg(CUIDLL$, ASKFMEXT, "FRadioDlgProc", 0, "")
  153.         UIPop 1
  154.         IF sz$ = "CONTINUE" THEN
  155.             CreateIniKeyValue MakePath(WINDIR$, "WINFILE.INI"), "AddOns", "HexWorkshop", MakePath(DEST$, "HWFMGR.DLL"), cmoOverwrite
  156.         END IF
  157.     END IF
  158.  
  159.  
  160.  
  161. '' Handle MSVC Tools
  162.     bToolsFound% = 0
  163.     rv% = DoesFileExist(MakePath(WINDIR$, "MSVC.INI"), femExists)
  164.     IF rv% = 1 THEN
  165.         sz$ = GetIniKeyString(MakePath(WINDIR$, "MSVC.INI"), "Microsoft Visual C++", "ToolNumber")
  166.         IF LEN(sz$) > 0 THEN 
  167.             numTools% = VAL(sz$)
  168.             FOR i% = 1 TO numTools%
  169.                 strTool$ = "ToolPathName" + LTRIM$(STR$(i%))    
  170.                 sz$ = GetIniKeyString(MakePath(WINDIR$, "MSVC.INI"), "Microsoft Visual C++", strTool$)
  171.                 rv% = INSTR(sz$, "HWORKS16")
  172.                 IF rv% > 0 THEN
  173.                     CreateIniKeyValue MakePath(WINDIR$, "MSVC.INI"), "Microsoft Visual C++", strTool$, MakePath(DEST$, "HWORKS16.EXE"), cmoOverwrite
  174.                     bToolsFound% = 1
  175.                 ENDIF
  176.                 rv% = INSTR(sz$, "BCONV16")
  177.                 IF rv% > 0 THEN
  178.                     CreateIniKeyValue MakePath(WINDIR$, "MSVC.INI"), "Microsoft Visual C++", strTool$, MakePath(DEST$, "BCONV16.EXE"), cmoOverwrite
  179.                     bToolsFound% = 1
  180.                 ENDIF
  181.                 rv% = INSTR(sz$, "CALC16")
  182.                 IF rv% > 0 THEN
  183.                     CreateIniKeyValue MakePath(WINDIR$, "MSVC.INI"), "Microsoft Visual C++", strTool$, MakePath(DEST$, "CALC16.EXE"), cmoOverwrite
  184.                     bToolsFound% = 1
  185.                 ENDIF
  186.             NEXT
  187.         END IF
  188.         IF bToolsFound% = 0 THEN    
  189.             i% = FAddListItem("CheckItemsIn", "ON")
  190.             i% = FAddListItem("CheckItemsIn", "ON")
  191.             i% = FAddListItem("CheckItemsIn", "ON")
  192.             sz$ = UIStartDlg(CUIDLL$, ASKVCTOOLS, "FCheckDlgProc", 0, "")
  193.             UIPop 1
  194.         
  195.             i% = CbGetListItem("CheckItemsOut", 1, hwTool$, 32)
  196.             IF hwTool$ = "ON" THEN
  197.                 numTools% = numTools% + 1
  198.                 strTool$ = "ToolPathName" + LTRIM$(STR$(numTools%))    
  199.                 CreateIniKeyValue MakePath(WINDIR$, "MSVC.INI"), "Microsoft Visual C++", strTool$, MakePath(DEST$, "HWORKS16.EXE"), cmoOverwrite
  200.                 strTool$ = "ToolMenuText" + LTRIM$(STR$(numTools%))    
  201.                 CreateIniKeyValue MakePath(WINDIR$, "MSVC.INI"), "Microsoft Visual C++", strTool$, "&Hex Workshop", cmoOverwrite
  202.                 strTool$ = "ToolArguments" + LTRIM$(STR$(numTools%))    
  203.                 CreateIniKeyValue MakePath(WINDIR$, "MSVC.INI"), "Microsoft Visual C++", strTool$, "", cmoOverwrite
  204.                 strTool$ = "ToolInitialDir" + LTRIM$(STR$(numTools%))                                    
  205.                 CreateIniKeyValue MakePath(WINDIR$, "MSVC.INI"), "Microsoft Visual C++", strTool$, "", cmoOverwrite
  206.                 strTool$ = "ToolAskArguments" + LTRIM$(STR$(numTools%))    
  207.                 CreateIniKeyValue MakePath(WINDIR$, "MSVC.INI"), "Microsoft Visual C++", strTool$, "0", cmoOverwrite
  208.                 CreateIniKeyValue MakePath(WINDIR$, "MSVC.INI"), "Microsoft Visual C++", "ToolNumber", LTRIM$(STR$(numTools%)), cmoOverwrite
  209.             END IF
  210.         
  211.             i% = CbGetListItem("CheckItemsOut", 2, bcTool$, 32)
  212.             IF bcTool$ = "ON" THEN
  213.                 numTools% = numTools% + 1
  214.                 strTool$ = "ToolPathName" + LTRIM$(STR$(numTools%))    
  215.                 CreateIniKeyValue MakePath(WINDIR$, "MSVC.INI"), "Microsoft Visual C++", strTool$, MakePath(DEST$, "BCONV16.EXE"), cmoOverwrite
  216.                 strTool$ = "ToolMenuText" + LTRIM$(STR$(numTools%))    
  217.                 CreateIniKeyValue MakePath(WINDIR$, "MSVC.INI"), "Microsoft Visual C++", strTool$, "&Base Converter", cmoOverwrite
  218.                 strTool$ = "ToolArguments" + LTRIM$(STR$(numTools%))    
  219.                 CreateIniKeyValue MakePath(WINDIR$, "MSVC.INI"), "Microsoft Visual C++", strTool$, "", cmoOverwrite
  220.                 strTool$ = "ToolInitialDir" + LTRIM$(STR$(numTools%))                                    
  221.                 CreateIniKeyValue MakePath(WINDIR$, "MSVC.INI"), "Microsoft Visual C++", strTool$, "", cmoOverwrite
  222.                 strTool$ = "ToolAskArguments" + LTRIM$(STR$(numTools%))    
  223.                 CreateIniKeyValue MakePath(WINDIR$, "MSVC.INI"), "Microsoft Visual C++", strTool$, "0", cmoOverwrite
  224.                 CreateIniKeyValue MakePath(WINDIR$, "MSVC.INI"), "Microsoft Visual C++", "ToolNumber", LTRIM$(STR$(numTools%)), cmoOverwrite
  225.             END IF
  226.         
  227.             i% = CbGetListItem("CheckItemsOut", 3, hcTool$, 32)
  228.             IF hcTool$ = "ON" THEN
  229.                 numTools% = numTools% + 1
  230.                 strTool$ = "ToolPathName" + LTRIM$(STR$(numTools%))    
  231.                 CreateIniKeyValue MakePath(WINDIR$, "MSVC.INI"), "Microsoft Visual C++", strTool$, MakePath(DEST$, "CALC16.EXE"), cmoOverwrite
  232.                 strTool$ = "ToolMenuText" + LTRIM$(STR$(numTools%))    
  233.                 CreateIniKeyValue MakePath(WINDIR$, "MSVC.INI"), "Microsoft Visual C++", strTool$, "Hex &Calculator", cmoOverwrite
  234.                 strTool$ = "ToolArguments" + LTRIM$(STR$(numTools%))    
  235.                 CreateIniKeyValue MakePath(WINDIR$, "MSVC.INI"), "Microsoft Visual C++", strTool$, "", cmoOverwrite
  236.                 strTool$ = "ToolInitialDir" + LTRIM$(STR$(numTools%))                                    
  237.                 CreateIniKeyValue MakePath(WINDIR$, "MSVC.INI"), "Microsoft Visual C++", strTool$, "", cmoOverwrite
  238.                 strTool$ = "ToolAskArguments" + LTRIM$(STR$(numTools%))    
  239.                 CreateIniKeyValue MakePath(WINDIR$, "MSVC.INI"), "Microsoft Visual C++", strTool$, "0", cmoOverwrite
  240.                 CreateIniKeyValue MakePath(WINDIR$, "MSVC.INI"), "Microsoft Visual C++", "ToolNumber", LTRIM$(STR$(numTools%)), cmoOverwrite
  241.             END IF
  242.         END IF    
  243.     END IF
  244.     
  245.  
  246.  
  247. QUIT:
  248.     ON ERROR GOTO ERRQUIT
  249.  
  250.     IF ERR = 0 THEN
  251.         dlg% = EXITSUCCESS
  252.     ELSEIF ERR = STFQUIT THEN
  253.         dlg% = EXITQUIT
  254.     ELSE
  255.         dlg% = EXITFAILURE
  256.     END IF
  257. QUITL1:
  258.     sz$ = UIStartDlg(CUIDLL$, dlg%, "FInfo0DlgProc", 0, "")
  259.     IF sz$ = "REACTIVATE" THEN
  260.         GOTO QUITL1
  261.     END IF
  262.     UIPop 1
  263.  
  264.     END
  265.  
  266. ERRQUIT:
  267.     i% = DoMsgBox("Setup sources were corrupted", "Setup Message", MB_OK + MB_TASKMODAL + MB_ICONHAND)
  268.     END               
  269.     
  270.     
  271. '' Prompt To Quit Message Box
  272.  
  273. ASKQUIT:
  274.     sz$ = UIStartDlg(CUIDLL$, ASKQUIT, "FQuitDlgProc", 0, "")
  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.  
  286. '' Error Message Boxes
  287.  
  288.  
  289. BADPATH:
  290.     sz$ = UIStartDlg(CUIDLL$, BADPATH, "FInfo0DlgProc", 0, "")
  291.     IF sz$ = "REACTIVATE" THEN
  292.         GOTO BADPATH
  293.     END IF
  294.     UIPop 1
  295.     RETURN                                                                
  296.     
  297.     
  298.     
  299.  
  300. '*************************************************************************
  301. '**
  302. '** Purpose:
  303. '**     Appends a file name to the end of a directory path,
  304. '**     inserting a backslash character as needed.
  305. '** Arguments:
  306. '**     szDir$  - full directory path (with optional ending "\")
  307. '**     szFile$ - filename to append to directory
  308. '** Returns:
  309. '**     Resulting fully qualified path name.
  310. '*************************************************************************
  311.  
  312. FUNCTION MakePath (szDir$, szFile$) STATIC AS STRING
  313.     IF szDir$ = "" THEN
  314.         MakePath = szFile$
  315.     ELSEIF szFile$ = "" THEN
  316.         MakePath = szDir$
  317.     ELSEIF MID$(szDir$, LEN(szDir$), 1) = "\" THEN
  318.         MakePath = szDir$ + szFile$
  319.     ELSE
  320.         MakePath = szDir$ + "\" + szFile$
  321.     END IF
  322. END FUNCTION
  323.  
  324. '*************************************************************************
  325. '**
  326. '** Purpose:
  327. '**     
  328. '**     .
  329. '** Arguments:
  330. '**   
  331. '** Returns:
  332. '**    
  333. '*************************************************************************
  334.  
  335. FUNCTION GetDir (szPath$) STATIC AS STRING
  336.     SPLITPATH szPath$, szDrv$, szDir$, szFilename$, szExt$
  337.     GetDir = szDrv$ + szDir$
  338. END FUNCTION
  339.  
  340.