home *** CD-ROM | disk | FTP | other *** search
- '**************************************************************************
- '* Hex Workshop Setup Script
- '**************************************************************************
-
- '$DEFINE DEBUG ''Define for script development/debugging
-
- '$INCLUDE 'setupapi.inc'
- '$INCLUDE 'msdetect.inc'
- '$INCLUDE 'msregdb.inc'
-
- ''Dialog ID's
- CONST DESTPATH = 300
- CONST BADPATH = 6400
-
- CONST ASKQUIT = 200
- CONST EXITFAILURE = 400
- CONST EXITQUIT = 600
- CONST EXITSUCCESS = 700
-
- CONST APPHELP = 900
-
- CONST ASKFMEXT = 800
-
- CONST ASKVCTOOLS = 2500
-
- ''Bitmap ID
- CONST LOGO = 1
-
- CONST WS_VISIBLE = &H10000000
- CONST WS_BORDER = &H00800000
- CONST WS_CLIPCHILDREN = &H02000000
- CONST GWL_STYLE = -16
- CONST SW_SHOWMAXIMIZED = 3
-
-
- GLOBAL VERSION$ ''Hex Workshop Version
- GLOBAL DEST$ ''Default destination directory.
- GLOBAL PATH$ ''Path retrieved from WIN.INI
- GLOBAL WINDRIVE$ ''Windows drive
- GLOBAL WINDIR$ ''Windows directory
-
- DECLARE FUNCTION MakePath (szDir$, szFile$) AS STRING
- DECLARE FUNCTION GetDir (szPath$) AS STRING
-
- DECLARE FUNCTION ShowWindow LIB "user.exe" (hWnd%, iShow%) AS INTEGER
- DECLARE FUNCTION SetWindowLong LIB "user.exe" (hWnd%, offset%, style&) AS LONG
-
-
- INIT:
-
- '' General Init
- VERSION$ = "2.20"
-
- CUIDLL$ = "mscuistf.dll" ''Custom user interface dll
- HELPPROC$ = "FHelpDlgProc" ''Help dialog procedure
-
- SetBitmap CUIDLL$, LOGO
- SetTitle ""
-
- szInf$ = GetSymbolValue("STF_SRCINFPATH")
- IF szInf$ = "" THEN
- szInf$ = GetSymbolValue("STF_CWDDIR") + "HEX.INF"
- END IF
- ReadInfFile szInf$
-
- '' Maximize Window and eliminate title bar
- hWnd% = HwndFrame()
- rc% = SetWindowLong(hWnd%, GWL_STYLE, WS_VISIBLE + WS_BORDER + WS_CLIPCHILDREN)
- rc% = ShowWindow(hWnd%, SW_SHOWMAXIMIZED)
-
- '' Path Init (get current path if present)
- PATH$ = GetIniKeyString("WIN.INI", "Hex Workshop", "Path")
- IF LEN(PATH$) = 0 THEN
- WINDRIVE$ = MID$(GetWindowsDir, 1, 1)
- DEST$ = WINDRIVE$ + ":\HEXWORKS"
- ELSE
- DEST$ = GetDir(PATH$)
- ENDIF
-
-
-
- GETPATHDLG:
- '' Path to Install Init
-
- SetSymbolValue "EditTextIn", DEST$
- SetSymbolValue "EditFocus", "END"
- GETPATHAGAIN:
- '' Path to Install Entry
-
- sz$ = UIStartDlg(CUIDLL$, DESTPATH, "FEditDlgProc", APPHELP, HELPPROC$)
- DEST$ = GetSymbolValue("EditTextOut")
-
- IF sz$ = "CONTINUE" THEN
- IF IsDirWritable(DEST$) = 0 THEN
- GOSUB BADPATH
- GOTO GETPATHAGAIN
- END IF
- UIPop 1
- ELSEIF sz$ = "REACTIVATE" THEN
- GOTO GETPATHAGAIN
- ELSE
- GOSUB ASKQUIT
- GOTO GETPATHDLG
- END IF
-
-
-
-
- INSTALL:
- '' Installation
-
- SrcDir$ = GetSymbolValue("STF_SRCDIR")
- CreateDir DEST$, cmoNone
-
- AddSectionFilesToCopyList "AppFiles", SrcDir$, DEST$
-
- CopyFilesInCopyList
-
-
-
- '' Program Group
- CreateProgmanGroup "Hex Workshop", "", cmoNone
- ShowProgmanGroup "Hex Workshop", 1, cmoNone
- CreateProgmanItem "Hex Workshop", "Hex Workshop", MakePath(DEST$, "HWORKS16.EXE"), "", cmoOverwrite
- CreateProgmanItem "Hex Workshop", "Base Converter", MakePath(DEST$, "BCONV16.EXE"), "", cmoOverwrite
- CreateProgmanItem "Hex Workshop", "Calculator", MakePath(DEST$, "CALC16.EXE"), "", cmoOverwrite
- CreateProgmanItem "Hex Workshop", "Hex Workshop Help", MakePath(DEST$, "HEXWORKS.HLP"), "", cmoOverwrite
- CreateProgmanItem "Hex Workshop", "Readme", MakePath(DEST$, "README16.TXT"), "", cmoOverwrite
- CreateProgmanItem "Hex Workshop", "How to Order", MakePath(DEST$, "HOWORDER.TXT"), "", cmoOverwrite
- CreateProgmanItem "Hex Workshop", "Order Form", MakePath(DEST$, "ORDERFRM.TXT"), "", cmoOverwrite
-
-
-
- '' Enter Path and Version in WIN.INI
- CreateIniKeyValue "WIN.INI", "Hex Workshop", "Path", MakePath(DEST$, "HWORKS16.EXE"), cmoOverwrite
- CreateIniKeyValue "WIN.INI", "Hex Workshop", "CurrentVersion", VERSION$, cmoOverwrite
-
-
-
- '' Register Hex Workshop in Registry
- CreateRegKeyValue "HexWorkshop", "HexWorkshop File"
- CreateRegKeyValue "HexWorkshop\Shell\Open\Command", MakePath(DEST$, "HWORKS16.EXE %1")
-
-
-
- '' Handle File Manager Extension (if it exists, update it, if not, ask the user)
- WINDIR$ = GetWindowsDir()
- rv% = DoesIniKeyExist(MakePath(WINDIR$, "WINFILE.INI"), "AddOns", "HexWorkshop")
- IF rv% = 1 THEN
- CreateIniKeyValue MakePath(WINDIR$, "WINFILE.INI"), "AddOns", "HexWorkshop", MakePath(DEST$, "HWFMGR.DLL"), cmoOverwrite
- ELSE
- sz$ = UIStartDlg(CUIDLL$, ASKFMEXT, "FRadioDlgProc", 0, "")
- UIPop 1
- IF sz$ = "CONTINUE" THEN
- CreateIniKeyValue MakePath(WINDIR$, "WINFILE.INI"), "AddOns", "HexWorkshop", MakePath(DEST$, "HWFMGR.DLL"), cmoOverwrite
- END IF
- END IF
-
-
-
- '' Handle MSVC Tools
- bToolsFound% = 0
- rv% = DoesFileExist(MakePath(WINDIR$, "MSVC.INI"), femExists)
- IF rv% = 1 THEN
- sz$ = GetIniKeyString(MakePath(WINDIR$, "MSVC.INI"), "Microsoft Visual C++", "ToolNumber")
- IF LEN(sz$) > 0 THEN
- numTools% = VAL(sz$)
- FOR i% = 1 TO numTools%
- strTool$ = "ToolPathName" + LTRIM$(STR$(i%))
- sz$ = GetIniKeyString(MakePath(WINDIR$, "MSVC.INI"), "Microsoft Visual C++", strTool$)
- rv% = INSTR(sz$, "HWORKS16")
- IF rv% > 0 THEN
- CreateIniKeyValue MakePath(WINDIR$, "MSVC.INI"), "Microsoft Visual C++", strTool$, MakePath(DEST$, "HWORKS16.EXE"), cmoOverwrite
- bToolsFound% = 1
- ENDIF
- rv% = INSTR(sz$, "BCONV16")
- IF rv% > 0 THEN
- CreateIniKeyValue MakePath(WINDIR$, "MSVC.INI"), "Microsoft Visual C++", strTool$, MakePath(DEST$, "BCONV16.EXE"), cmoOverwrite
- bToolsFound% = 1
- ENDIF
- rv% = INSTR(sz$, "CALC16")
- IF rv% > 0 THEN
- CreateIniKeyValue MakePath(WINDIR$, "MSVC.INI"), "Microsoft Visual C++", strTool$, MakePath(DEST$, "CALC16.EXE"), cmoOverwrite
- bToolsFound% = 1
- ENDIF
- NEXT
- END IF
- IF bToolsFound% = 0 THEN
- i% = FAddListItem("CheckItemsIn", "ON")
- i% = FAddListItem("CheckItemsIn", "ON")
- i% = FAddListItem("CheckItemsIn", "ON")
- sz$ = UIStartDlg(CUIDLL$, ASKVCTOOLS, "FCheckDlgProc", 0, "")
- UIPop 1
-
- i% = CbGetListItem("CheckItemsOut", 1, hwTool$, 32)
- IF hwTool$ = "ON" THEN
- numTools% = numTools% + 1
- strTool$ = "ToolPathName" + LTRIM$(STR$(numTools%))
- CreateIniKeyValue MakePath(WINDIR$, "MSVC.INI"), "Microsoft Visual C++", strTool$, MakePath(DEST$, "HWORKS16.EXE"), cmoOverwrite
- strTool$ = "ToolMenuText" + LTRIM$(STR$(numTools%))
- CreateIniKeyValue MakePath(WINDIR$, "MSVC.INI"), "Microsoft Visual C++", strTool$, "&Hex Workshop", cmoOverwrite
- strTool$ = "ToolArguments" + LTRIM$(STR$(numTools%))
- CreateIniKeyValue MakePath(WINDIR$, "MSVC.INI"), "Microsoft Visual C++", strTool$, "", cmoOverwrite
- strTool$ = "ToolInitialDir" + LTRIM$(STR$(numTools%))
- CreateIniKeyValue MakePath(WINDIR$, "MSVC.INI"), "Microsoft Visual C++", strTool$, "", cmoOverwrite
- strTool$ = "ToolAskArguments" + LTRIM$(STR$(numTools%))
- CreateIniKeyValue MakePath(WINDIR$, "MSVC.INI"), "Microsoft Visual C++", strTool$, "0", cmoOverwrite
- CreateIniKeyValue MakePath(WINDIR$, "MSVC.INI"), "Microsoft Visual C++", "ToolNumber", LTRIM$(STR$(numTools%)), cmoOverwrite
- END IF
-
- i% = CbGetListItem("CheckItemsOut", 2, bcTool$, 32)
- IF bcTool$ = "ON" THEN
- numTools% = numTools% + 1
- strTool$ = "ToolPathName" + LTRIM$(STR$(numTools%))
- CreateIniKeyValue MakePath(WINDIR$, "MSVC.INI"), "Microsoft Visual C++", strTool$, MakePath(DEST$, "BCONV16.EXE"), cmoOverwrite
- strTool$ = "ToolMenuText" + LTRIM$(STR$(numTools%))
- CreateIniKeyValue MakePath(WINDIR$, "MSVC.INI"), "Microsoft Visual C++", strTool$, "&Base Converter", cmoOverwrite
- strTool$ = "ToolArguments" + LTRIM$(STR$(numTools%))
- CreateIniKeyValue MakePath(WINDIR$, "MSVC.INI"), "Microsoft Visual C++", strTool$, "", cmoOverwrite
- strTool$ = "ToolInitialDir" + LTRIM$(STR$(numTools%))
- CreateIniKeyValue MakePath(WINDIR$, "MSVC.INI"), "Microsoft Visual C++", strTool$, "", cmoOverwrite
- strTool$ = "ToolAskArguments" + LTRIM$(STR$(numTools%))
- CreateIniKeyValue MakePath(WINDIR$, "MSVC.INI"), "Microsoft Visual C++", strTool$, "0", cmoOverwrite
- CreateIniKeyValue MakePath(WINDIR$, "MSVC.INI"), "Microsoft Visual C++", "ToolNumber", LTRIM$(STR$(numTools%)), cmoOverwrite
- END IF
-
- i% = CbGetListItem("CheckItemsOut", 3, hcTool$, 32)
- IF hcTool$ = "ON" THEN
- numTools% = numTools% + 1
- strTool$ = "ToolPathName" + LTRIM$(STR$(numTools%))
- CreateIniKeyValue MakePath(WINDIR$, "MSVC.INI"), "Microsoft Visual C++", strTool$, MakePath(DEST$, "CALC16.EXE"), cmoOverwrite
- strTool$ = "ToolMenuText" + LTRIM$(STR$(numTools%))
- CreateIniKeyValue MakePath(WINDIR$, "MSVC.INI"), "Microsoft Visual C++", strTool$, "Hex &Calculator", cmoOverwrite
- strTool$ = "ToolArguments" + LTRIM$(STR$(numTools%))
- CreateIniKeyValue MakePath(WINDIR$, "MSVC.INI"), "Microsoft Visual C++", strTool$, "", cmoOverwrite
- strTool$ = "ToolInitialDir" + LTRIM$(STR$(numTools%))
- CreateIniKeyValue MakePath(WINDIR$, "MSVC.INI"), "Microsoft Visual C++", strTool$, "", cmoOverwrite
- strTool$ = "ToolAskArguments" + LTRIM$(STR$(numTools%))
- CreateIniKeyValue MakePath(WINDIR$, "MSVC.INI"), "Microsoft Visual C++", strTool$, "0", cmoOverwrite
- CreateIniKeyValue MakePath(WINDIR$, "MSVC.INI"), "Microsoft Visual C++", "ToolNumber", LTRIM$(STR$(numTools%)), cmoOverwrite
- END IF
- END IF
- END IF
-
-
-
- QUIT:
- ON ERROR GOTO ERRQUIT
-
- IF ERR = 0 THEN
- dlg% = EXITSUCCESS
- ELSEIF ERR = STFQUIT THEN
- dlg% = EXITQUIT
- ELSE
- dlg% = EXITFAILURE
- END IF
- QUITL1:
- sz$ = UIStartDlg(CUIDLL$, dlg%, "FInfo0DlgProc", 0, "")
- IF sz$ = "REACTIVATE" THEN
- GOTO QUITL1
- END IF
- UIPop 1
-
- END
-
- ERRQUIT:
- i% = DoMsgBox("Setup sources were corrupted", "Setup Message", MB_OK + MB_TASKMODAL + MB_ICONHAND)
- END
-
-
- '' Prompt To Quit Message Box
-
- ASKQUIT:
- sz$ = UIStartDlg(CUIDLL$, ASKQUIT, "FQuitDlgProc", 0, "")
- IF sz$ = "EXIT" THEN
- UIPopAll
- ERROR STFQUIT
- ELSEIF sz$ = "REACTIVATE" THEN
- GOTO ASKQUIT
- ELSE
- UIPop 1
- END IF
- RETURN
-
-
- '' Error Message Boxes
-
-
- BADPATH:
- sz$ = UIStartDlg(CUIDLL$, BADPATH, "FInfo0DlgProc", 0, "")
- IF sz$ = "REACTIVATE" THEN
- GOTO BADPATH
- END IF
- UIPop 1
- RETURN
-
-
-
-
- '*************************************************************************
- '**
- '** Purpose:
- '** Appends a file name to the end of a directory path,
- '** inserting a backslash character as needed.
- '** Arguments:
- '** szDir$ - full directory path (with optional ending "\")
- '** szFile$ - filename to append to directory
- '** Returns:
- '** Resulting fully qualified path name.
- '*************************************************************************
-
- FUNCTION MakePath (szDir$, szFile$) STATIC AS STRING
- IF szDir$ = "" THEN
- MakePath = szFile$
- ELSEIF szFile$ = "" THEN
- MakePath = szDir$
- ELSEIF MID$(szDir$, LEN(szDir$), 1) = "\" THEN
- MakePath = szDir$ + szFile$
- ELSE
- MakePath = szDir$ + "\" + szFile$
- END IF
- END FUNCTION
-
- '*************************************************************************
- '**
- '** Purpose:
- '**
- '** .
- '** Arguments:
- '**
- '** Returns:
- '**
- '*************************************************************************
-
- FUNCTION GetDir (szPath$) STATIC AS STRING
- SPLITPATH szPath$, szDrv$, szDir$, szFilename$, szExt$
- GetDir = szDrv$ + szDir$
- END FUNCTION
-
-