home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
DOS/V Power Report 1996 August
/
VPR9608A.BIN
/
vpr_data
/
midi
/
logic
/
emagic.ms_
/
emagic.ms
Wrap
Text File
|
1995-09-20
|
14KB
|
504 lines
'**************************************************************************
'* Copyright 1995 Rainer Schupp
'**************************************************************************
REM 21.09.1995
'$DEFINE XMICRO 1
REM $DEFINE XXXDEUTSCH 1
'$INCLUDE 'setupapi.inc'
'$INCLUDE 'msdetect.inc'
''Dialog ID's
CONST XSWELCOME = 1300
CONST GETDESTPATH = 1700
CONST ASKQUIT = 200
CONST EXITFAILURE = 400
CONST EXITQUIT = 600
CONST EXITSUCCESS = 700
CONST OPTIONS = 800
CONST APPHELP = 900
CONST BADPATH = 6400
CONST FINI = 2100
CONST OPTIO = 2200
CONST CDGETNAME = 7400
CONST DLGWAIT = 2400
CONST DD = 0
'$IFDEF XMICRO
CONST MM = 10
'$ELSE
CONST MM = 0
'$ENDIF
CONST LOGO = 1
GLOBAL DEST$
GLOBAL OPTCUR$
GLOBAL SYSDIR$
GLOBAL SYSINI$
GLOBAL SYSPATH$
GLOBAL WSYSTEMPATH$
GLOBAL RESTARTDIR$
GLOBAL INISTRING$
GLOBAL PROGNAME$
GLOBAL PRNAME$
GLOBAL ADRESS$
GLOBAL PROGPREF$
DECLARE FUNCTION RegOpenKey LIB "SHELL.DLL" (hKey&, szSubKey$, phkResult AS POINTER TO LONG) AS LONG
DECLARE FUNCTION RegCreateKey LIB "shell.dll" (hKey&, szSubKey$, phkResult AS POINTER TO LONG) AS LONG
DECLARE FUNCTION RegDeleteKey LIB "shell.dll" (hKey&, szSubKey$) AS LONG
DECLARE FUNCTION RegCloseKey LIB "shell.dll" (hKey&) AS LONG
DECLARE FUNCTION RegQueryValue LIB "shell.dll" (hKey&, szSubKey$, szValue$, lpcb AS POINTER TO LONG) AS LONG
DECLARE FUNCTION RegSetValue LIB "shell.dll" (hKey&, szSubKey$, dwType&, szValue$, cbValue&) AS LONG
DECLARE FUNCTION RegSetValueEx LIB "shell.dll" (hKey&, szSubKey$, dwRes&, dwType&, szValue$, cbValue&) AS LONG
DECLARE FUNCTION RegEnumKey LIB "shell.dll" (HkEY&, dwIndex&, szBuffer$, dwBufferSize&) AS LONG
DECLARE FUNCTION WritePrivateProfileString LIB "KERNEL" (szSection$, szEntry$, szString$, szFile$) AS INTEGER
DECLARE SUB INSTALL
DECLARE FUNCTION MakePath (szDir$, szFile$) AS STRING
DECLARE FUNCTION KillAct (g$) AS STRING
INIT:
CUIDLL$ = "mscuistf.dll"
HELPPROC$ = "FHelpDlgProc"
'$IFDEF XMICRO
INISTRING$ = "microLogic"
PROGNAME$ = "micLogic"
PRNAME$ = "miclogic"
PROGPREF$ = "mic"
VERSION$ = "1.6"
SUBVERSION$= "MLPC-1603"
'$ELSE
INISTRING$ = "Logic"
PROGNAME$ = "Logic"
PRNAME$ = "logic"
PROGPREF$ = "log"
VERSION$ = "2.1"
SUBVERSION$= "2114"
'$ENDIF
SetBitmap CUIDLL$, LOGO
'$IFDEF XMICRO
SetTitle "MicroLogic " + VERSION$ + " Setup"
'$ELSE
SetTitle "Logic " + VERSION$ + " Setup"
'$ENDIF
szInf$ = GetSymbolValue("STF_SRCINFPATH")
IF szInf$ = "" THEN
szInf$ = GetSymbolValue("STF_CWDDIR") + "EMAGIC.INF"
END IF
ReadInfFile szInf$
OPTCUR$ = "1"
DEST$ = ""
WELCOME:
sz$ = UIStartDlg(CUIDLL$, XSWELCOME+DD+MM, "FInfoDlgProc", APPHELP, HELPPROC$)
IF sz$ = "CONTINUE" THEN
UIPop 1
ELSE
GOSUB ASKQUIT
GOTO WELCOME
END IF
'$IFDEF XMICRO
GETADRAGA:
ADRESS$=""
SetSymbolValue "EditTextIn", ADRESS$
SetSymbolValue "EditFocus", "END"
GETADR:
sz$ = UIStartDlg(CUIDLL$, CDGETNAME+DD, "FNameOrgDlgProc", APPHELP, HELPPROC$)
D$ = GetSymbolValue("NameOut")
E$ = GetSymbolValue("OrgOut")
IF sz$ = "CONTINUE" THEN
UIPop 1
ELSEIF sz$ = "BACK" THEN
GOTO WELCOME
ELSE
UIPop 1
GOSUB ASKQUIT
GOTO GETADR
END IF
IF (LEN(D$) = 0) OR (LEN(E$) = 0) THEN
i%=DoMsgBox("You have to enter a Name and a Address","Wrong Entry",MB_OK+MB_TASKMODAL+MB_ICONHAND)
GOTO GETADRAGA
ENDIF
ADRESS$ = D$ + CHR$(10) + E$
'$ENDIF
SYSDIR$ = GetWindowsDir()
SYSPATH$ = MakePath(SYSDIR$,"system.ini")
GETPATH:
DEST$ = GetIniKeyString("WIN.INI",INISTRING$,"Path")
IF LEN(DEST$) = 0 THEN
'$IFDEF XMICRO
DEST$ = "C:\MICLOGIC"
'$ELSE
DEST$ = "C:\LOGIC"
'$ENDIF
END IF
WSYSTEMPATH$ = MakePath(SYSDIR$,"SYSTEM")
IF DoesDirExist(WSYSTEMPATH$) = 0 THEN
GOTO INVALIDPATH
END IF
SetSymbolValue "EditTextIn", DEST$
SetSymbolValue "EditFocus", "END"
GETPATHL1:
sz$ = UIStartDlg(CUIDLL$, GETDESTPATH+DD, "FEditDlgProc", APPHELP, HELPPROC$)
DEST$ = GetSymbolValue("EditTextOut")
IF sz$ = "CONTINUE" THEN
UIPop 1
ELSEIF sz$ = "BACK" THEN
GOTO WELCOME
ELSE
UIPop 1
GOSUB ASKQUIT
GOTO GETPATH
END IF
AFTDIRTEST:
IF IsDirWritable(DEST$) THEN
ELSE
'$IFDEF XDEUTSCH
i%=DoMsgBox("Der gew臧lte Pfad kann nicht benutzt werden!", "Setup Fehler", MB_OK+MB_TASKMODAL+MB_ICONHAND)
'$ELSE
i%=DoMsgBox("The chosen Path is not valid", "Setup Error", MB_OK+MB_TASKMODAL+MB_ICONHAND)
'$ENDIF
GOTO GETPATH
ENDIF
drv$ = MID$(DEST$,1,1)
IF 2000000 > GetFreeSpaceForDrive(drv$) THEN
'$IFDEF XDEUTSCH
i%=DoMsgBox("Zuwenig freier Speicher auf Laufwerk "+drv$, "Setup Fehler", MB_OK+MB_TASKMODAL+MB_ICONHAND)
'$ELSE
i%=DoMsgBox("Not enough free space on disk "+drv$, "Setup Error", MB_OK+MB_TASKMODAL+MB_ICONHAND)
'$ENDIF
GOTO GETPATH
ENDIF
SrcDir$ = GetSymbolValue("STF_SRCDIR")
IF DoesDirExist(DEST$) THEN
ELSE
CreateDir DEST$, cmoNone
ON ERROR GOTO ERRQUIT
ENDIF
OpenLogFile MakePath(DEST$, "LOGFILE.OUT"), 0
'$IFDEF XMICRO
WriteToLogFile "UserName: "+ADRESS$
'$ENDIF
'$IFNDEF XMICRO
OPTION:
OPTCUR$ = GetIniKeyString ("WIN.INI",INISTRING$,"keyPort")
IF OPTCUR$ = "1" THEN
ELSEIF OPTCUR$ = "2" THEN
ELSE
OPTCUR$ = "1"
ENDIF
SetSymbolValue "EditTextIn", OPTCUR$
SetSymbolValue "EditFocus", "END"
sz$ = UIStartDlg(CUIDLL$, OPTIO+DD, "FEditDlgProc", APPHELP, HELPPROC$)
OPTCUR$ = GetSymbolValue("EditTextOut")
UIPop 1
IF sz$ = "CONTINUE" THEN
ELSEIF sz$ = "BACK" THEN
GOTO GETPATHL1
ELSE
UIPop 1
GOSUB ASKQUIT
GOTO OPTION
END IF
'$ENDIF
cur% = ShowWaitCursor()
Install
RestoreCursor(cur%)
QUIT:
ON ERROR GOTO ERRQUIT
CloseLogFile
IF ERR = 0 THEN
GOTO FINIDLG
ELSEIF ERR = STFQUIT THEN
dlg% = EXITQUIT
ELSE
dlg% = EXITFAILURE
END IF
QUITL1:
SetSymbolValue "EditTextIn",""
sz$ = UIStartDlg(CUIDLL$, dlg% + DD , "FInfo0DlgProc", 0, "")
IF sz$ = "REACTIVATE" THEN
GOTO QUITL1
END IF
UIPop 1
END
FINIDLG:
'$IFNDEF XMICRO
ts$ = GetIniKeyString ("WIN.INI",INISTRING$,"midiDriver")
IF ts$ = "log_midi.dll" THEN
ed$ = "Emagic MIDI System"
ELSEIF ts$ = "log_mmed.dll" THEN
ed$ = "WINDOWS Multimedia System"
ELSE
'$IFDEF XDEUTSCH
ed$ = "Fehlender Eintrag in der win.ini-Datei!"
'$ELSE
ed$ = "ERROR! Missing Entry in win.ini"
'$ENDIF
ENDIF
ed$ = ed$ + " / " + GetIniKeyString("WIN.INI","Logic","keyPort")
SetSymbolValue "EditTextIn", ed$
SetSymbolValue "EditFocus", "END"
FINID1:
sz$ = UIStartDlg(CUIDLL$, FINI+DD, "FEditDlgProc", APPHELP, HELPPROC$)
' DEST$ = GetSymbolValue("EditTextOut")
UIPop 1
IF sz$ = "EXIT" THEN
GOSUB ASKQUIT
GOTO FINIDLG
END IF
'$ENDIF
EXRES1:
'IFDEF XMICRO
SetSymbolValue "EditTextIn",MakePath(DEST$,"miclogic.exe")
sz$ = UIStartDlg(CUIDLL$, DLGWAIT+DD, "FModelessDlgProc", 0, "")
UIPop 1
'ENDIF
sz$ = UIStartDlg(CUIDLL$, EXITSUCCESS+DD, "FInfo0DlgProc", 0, "")
IF sz$ = "CONTINUE" THEN
GOTO DORESTART
ENDIF
END
DORESTART:
UIPopAll
SetRestartDir WSYSTEMPATH$
' SrcDir$ = GetSymbolValue("STF_SRCDIR")
END
REM CopyFile SrcDir$,WSYSTEMPATH$,cmoTimeStamp+cmoOverwrite,0
IF RestartListEmpty() THEN
GOTO RESERR
END IF
i% = ExitExecRestart()
RESERR:
'$IFDEF XDEUTSCH
i% = DoMsgBox("WINDOWS Neustart gescheitert. Bitte manuell neustarten.", "Setup Fehler", MB_OK+MB_TASKMODAL+MB_ICONHAND)
'$ELSE
i% = DoMsgBox("Restart failed! Please restart manually. ", "Setup Error", MB_OK+MB_TASKMODAL+MB_ICONHAND)
'$ENDIF
END
ERRQUIT:
'$IFDEF XDEUTSCH
i% = DoMsgBox("Fehler w臧rend des Setups, kann nicht fortgefhrt werden!", "Setup Fehler", MB_OK+MB_TASKMODAL+MB_ICONHAND)
'$ELSE
i% = DoMsgBox("Some error occured during Setup, maybe sources are corrupted. Unable to continue", "Setup Error", MB_OK+MB_TASKMODAL+MB_ICONHAND)
'$ENDIF
CloseLogFile
END
INVALIDPATH:
SetSymbolValue "EditTextIn",""
sz$ = UIStartDlg(CUIDLL$, BADPATH+DD, "FInfo0DlgProc", 0, "")
UIPop 1
ERR = 55
GOTO QUIT
ASKQUIT:
sz$ = UIStartDlg(CUIDLL$, ASKQUIT+DD, "FQuitDlgProc", 0, "")
IF sz$ = "EXIT" THEN
UIPopAll
ERROR STFQUIT
ELSEIF sz$ = "REACTIVATE" THEN
GOTO ASKQUIT
ELSE
UIPop 1
END IF
RETURN
SUB Install STATIC
SrcDir$ = GetSymbolValue("STF_SRCDIR")
WriteToLogFile ""
WriteToLogFile " User chose as destination directory: '" + DEST$ + "'"
WriteToLogFile " User chose option: '" + OPTCUR$ + "'"
WriteToLogFile ""
AddSectionFilesToCopyList "Files", SrcDir$, DEST$
AddSectionFilesToCopyList "SYSTEM", SrcDir$, WSYSTEMPATH$
CopyFilesInCopyList
CreateIniKeyValue "WIN.INI",INISTRING$,"Path",DEST$, cmoOverwrite
ts$ = GetIniKeyString ("WIN.INI",INISTRING$,"midiDriver")
IF LEN(ts$) = 0 THEN
CreateIniKeyValue "WIN.INI",INISTRING$,"midiDriver",PROGPREF + "_mmed.dll", cmoOverwrite
ENDIF
'$IFNDEF XMICRO
CreateIniKeyValue "WIN.INI",INISTRING$,"keyPort",OPTCUR$, cmoOverwrite
'$ENDIF
CreateIniKeyValue "WIN.INI", INISTRING$, "Version", SUBVERSION$, cmoOverwrite
WriteToLogFile "win.ini section complete, Version " + SUBVERSION$
vv% = GetWindowsMajorVersion()
WriteToLogFile "Windows Major Version = "+STR$(vv%)
vvx% = GetWindowsMinorVersion()
WriteToLogFile "Windows Minor Version = "+STR$(vvx%)
edevfound% = 0
OPEN SYSPATH$ FOR INPUT AS #1
WHILE not EOF (1)
LINE INPUT #1, oneline$
IF edevfound% = 0 THEN
IF INSTR( oneline$, "emagic.386" ) THEN
edevfound% = INSTR( oneline$, "device=emagic.386" )
ENDIF
ENDIF
WEND
CLOSE #1
WriteToLogFile "Syspath=" + SYSPATH$
IF edevfound% THEN
WriteToLogFile "device=emagic.386 entry found in system.ini"
ELSE
IF WritePrivateProfileString( "386Enh","device","emagic.386",SYSPATH$) THEN
WriteToLogFile "device=emagic.386 entry in system.ini created"
ENDIF
ENDIF
ts$ = GetIniKeyString (SYSPATH$,"emagic.386","No_Interface_1_Active")
IF LEN(ts$) = 0 THEN
CreateIniKeyValue SYSPATH$,"emagic.386","No_Interface_1_Active","Yes", cmoOverwrite
ENDIF
IF (PROGPREF+"_midi.dll") = GetIniKeyString( "WIN.INI",INISTRING$,"midiDriver") THEN
WriteToLogFile "[emagic.386] section not created or modified, because Logic Drivers are used"
ELSE
tz$=KillAct("Log2PC")
tz$=KillAct("SC-55mkII")
tz$=KillAct("RAP10")
tz$=KillAct("TG100")
tz$=KillAct("SCC-1")
tz$=KillAct("MPU-401")
tz$=KillAct("05R/W")
tz$=KillAct("MusicQuest-PC-MIDI")
tz$=KillAct("MQX-32M")
tz$=KillAct("Soundblaster-16MPU")
tz$=KillAct("Soundblaster-Pro")
tz$=KillAct("Soundblaster")
tz$=KillAct("MidiTimePiece")
tz$=KillAct("MidiExpress")
tz$=KillAct("Midiator-101")
CreateIniKeyValue SYSPATH$,"emagic.386","No_Interface_1_Active","Yes", cmoOverwrite
WriteToLogFile "[emagic.386] section in system.ini created or modified"
ENDIF
ts$ = MakePath( SYSDIR, PRNAME$+".grp" )
IF DoesFileExist( ts$, femExists ) THEN
ELSE
CreateProgmanGroup PRNAME$, "", cmoOverwrite
ENDIF
CreateProgmanItem PRNAME$, PROGNAME$, MakePath(DEST$,PRNAME$+".exe"), "", cmoOverwrite
CreateProgmanItem PRNAME$, "WELCOME", MakePath(DEST$,PRNAME$+".exe welcome.lso"), "", cmoOverwrite
CreateProgmanItem PRNAME$, "TUTORIAL", MakePath(DEST$,PRNAME$+".exe tutorial.lso"), "", cmoOverwrite
CreateProgmanItem PRNAME$, "READ ME", MakePath(DEST$,"readme.wri"), "", cmoOverwrite
REM XXX CreateProgmanItem PRNAME$, "MIDI Setup", MakePath(DEST$,"midi_set.exe"), "", cmoOverwrite
WriteToLogFile "prog.ini section created ( (micro/Logic Icons Group in Program-Manager)"
CreateIniKeyValue "WIN.INI","Extensions","lso",MakePath(DEST$,PRNAME$+".exe") + " ^.lso" ,cmoOverwrite
ShowProgmanGroup PRNAME$, 1, cmoNone
END SUB
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
FUNCTION KillAct(g$) STATIC AS STRING
IF DoesIniKeyExist(SYSPATH$,"emagic.386",g$ + "_1_Active") THEN
CreateIniKeyValue SYSPATH$,"emagic.386",g$ + "_1_Active","no", cmoOverwrite
ENDIF
IF DoesIniKeyExist(SYSPATH$,"emagic.386",g$ + "_2_Active") THEN
CreateIniKeyValue SYSPATH$,"emagic.386",g$ + "_2_Active","no", cmoOverwrite
ENDIF
END FUNCTION