home *** CD-ROM | disk | FTP | other *** search
/ DOS/V Power Report 1996 August / VPR9608A.BIN / vpr_data / midi / logic / emagic.ms_ / emagic.ms
Text File  |  1995-09-20  |  14KB  |  504 lines

  1. '**************************************************************************
  2. '*               Copyright  1995  Rainer Schupp
  3. '**************************************************************************
  4.  
  5. REM 21.09.1995
  6.  
  7. '$DEFINE XMICRO 1
  8. REM $DEFINE XXXDEUTSCH 1
  9.  
  10. '$INCLUDE 'setupapi.inc'
  11. '$INCLUDE 'msdetect.inc'
  12.  
  13. ''Dialog ID's
  14. CONST XSWELCOME     = 1300
  15. CONST GETDESTPATH   = 1700
  16. CONST ASKQUIT       = 200
  17. CONST EXITFAILURE   = 400
  18. CONST EXITQUIT      = 600
  19. CONST EXITSUCCESS   = 700
  20. CONST OPTIONS       = 800
  21. CONST APPHELP       = 900
  22. CONST BADPATH       = 6400
  23. CONST FINI          = 2100
  24. CONST OPTIO         = 2200
  25. CONST CDGETNAME     = 7400
  26. CONST DLGWAIT       = 2400
  27.  
  28.  
  29. CONST DD = 0
  30. '$IFDEF XMICRO
  31. CONST MM = 10
  32. '$ELSE
  33. CONST MM = 0
  34. '$ENDIF
  35.  
  36. CONST LOGO = 1
  37.  
  38. GLOBAL DEST$      
  39. GLOBAL OPTCUR$ 
  40. GLOBAL SYSDIR$
  41. GLOBAL SYSINI$
  42. GLOBAL SYSPATH$
  43. GLOBAL WSYSTEMPATH$
  44. GLOBAL RESTARTDIR$
  45. GLOBAL INISTRING$
  46. GLOBAL PROGNAME$
  47. GLOBAL PRNAME$
  48. GLOBAL ADRESS$
  49. GLOBAL PROGPREF$
  50.  
  51. DECLARE FUNCTION RegOpenKey LIB "SHELL.DLL" (hKey&, szSubKey$, phkResult AS POINTER TO LONG) AS LONG
  52. DECLARE FUNCTION RegCreateKey LIB "shell.dll" (hKey&, szSubKey$, phkResult AS POINTER TO LONG) AS LONG
  53. DECLARE FUNCTION RegDeleteKey LIB "shell.dll" (hKey&, szSubKey$) AS LONG
  54. DECLARE FUNCTION RegCloseKey LIB "shell.dll" (hKey&) AS LONG
  55. DECLARE FUNCTION RegQueryValue LIB "shell.dll" (hKey&, szSubKey$, szValue$, lpcb AS POINTER TO LONG) AS LONG
  56. DECLARE FUNCTION RegSetValue LIB "shell.dll" (hKey&, szSubKey$, dwType&, szValue$, cbValue&) AS LONG
  57. DECLARE FUNCTION RegSetValueEx LIB "shell.dll" (hKey&, szSubKey$, dwRes&, dwType&, szValue$, cbValue&) AS LONG
  58. DECLARE FUNCTION RegEnumKey LIB "shell.dll" (HkEY&, dwIndex&, szBuffer$, dwBufferSize&) AS LONG
  59. DECLARE FUNCTION WritePrivateProfileString LIB "KERNEL" (szSection$, szEntry$, szString$, szFile$) AS INTEGER
  60.  
  61.  
  62. DECLARE SUB INSTALL
  63. DECLARE FUNCTION MakePath (szDir$, szFile$) AS STRING
  64. DECLARE FUNCTION KillAct (g$) AS STRING
  65.  
  66. INIT:
  67.     CUIDLL$ = "mscuistf.dll"    
  68.     HELPPROC$ = "FHelpDlgProc"  
  69.  
  70. '$IFDEF XMICRO
  71.     INISTRING$ = "microLogic"
  72.     PROGNAME$  = "micLogic"
  73.     PRNAME$    = "miclogic"
  74.     PROGPREF$  = "mic"
  75.     VERSION$   = "1.6"
  76.     SUBVERSION$= "MLPC-1603"
  77. '$ELSE
  78.     INISTRING$ = "Logic"
  79.     PROGNAME$  = "Logic"
  80.     PRNAME$    = "logic"
  81.     PROGPREF$  = "log"
  82.     VERSION$   = "2.1"
  83.     SUBVERSION$= "2114"
  84. '$ENDIF
  85.  
  86.     SetBitmap CUIDLL$, LOGO
  87. '$IFDEF XMICRO
  88.     SetTitle "MicroLogic " + VERSION$ + " Setup"
  89. '$ELSE
  90.     SetTitle "Logic " + VERSION$ + " Setup"
  91. '$ENDIF 
  92.  
  93.     szInf$ = GetSymbolValue("STF_SRCINFPATH")
  94.     IF szInf$ = "" THEN
  95.         szInf$ = GetSymbolValue("STF_CWDDIR") + "EMAGIC.INF"
  96.     END IF
  97.     ReadInfFile szInf$
  98.  
  99.     OPTCUR$ = "1"
  100.     DEST$ = ""
  101.  
  102.  
  103.  
  104.  
  105. WELCOME:
  106.     sz$ = UIStartDlg(CUIDLL$, XSWELCOME+DD+MM, "FInfoDlgProc", APPHELP, HELPPROC$)
  107.     IF sz$ = "CONTINUE" THEN
  108.         UIPop 1
  109.     ELSE
  110.         GOSUB ASKQUIT
  111.         GOTO WELCOME
  112.     END IF
  113.  
  114.  
  115.  
  116. '$IFDEF XMICRO
  117. GETADRAGA:
  118.     ADRESS$=""
  119.     SetSymbolValue "EditTextIn", ADRESS$
  120.     SetSymbolValue "EditFocus", "END"
  121.  
  122. GETADR:
  123.     sz$ = UIStartDlg(CUIDLL$, CDGETNAME+DD, "FNameOrgDlgProc", APPHELP, HELPPROC$)
  124.     D$ = GetSymbolValue("NameOut") 
  125.     E$ = GetSymbolValue("OrgOut")
  126.  
  127.     IF sz$ = "CONTINUE" THEN
  128.         UIPop 1
  129.     ELSEIF sz$ = "BACK" THEN
  130.         GOTO WELCOME
  131.     ELSE
  132.         UIPop 1
  133.         GOSUB ASKQUIT
  134.         GOTO GETADR
  135.    END IF
  136.  
  137.   IF (LEN(D$) = 0) OR (LEN(E$) = 0) THEN
  138.       i%=DoMsgBox("You have to enter a Name and a Address","Wrong Entry",MB_OK+MB_TASKMODAL+MB_ICONHAND)
  139.       GOTO GETADRAGA
  140.   ENDIF
  141.   ADRESS$ = D$ + CHR$(10) + E$
  142. '$ENDIF
  143.     
  144.     SYSDIR$ = GetWindowsDir()
  145.     SYSPATH$ = MakePath(SYSDIR$,"system.ini")
  146.  
  147.  
  148. GETPATH:
  149.     DEST$ = GetIniKeyString("WIN.INI",INISTRING$,"Path")
  150.     IF LEN(DEST$) = 0 THEN
  151. '$IFDEF XMICRO
  152.       DEST$ = "C:\MICLOGIC"
  153. '$ELSE
  154.       DEST$ = "C:\LOGIC"
  155. '$ENDIF
  156.     END IF         
  157.  
  158.     WSYSTEMPATH$ = MakePath(SYSDIR$,"SYSTEM")
  159.  
  160.     IF DoesDirExist(WSYSTEMPATH$) = 0 THEN
  161.         GOTO INVALIDPATH
  162.     END IF
  163.  
  164.  
  165.     SetSymbolValue "EditTextIn", DEST$
  166.     SetSymbolValue "EditFocus", "END"
  167.  
  168.  
  169. GETPATHL1:
  170.     sz$ = UIStartDlg(CUIDLL$, GETDESTPATH+DD, "FEditDlgProc", APPHELP, HELPPROC$)
  171.     DEST$ = GetSymbolValue("EditTextOut")
  172.     
  173.  
  174.     IF sz$ = "CONTINUE" THEN
  175.         UIPop 1
  176.     ELSEIF sz$ = "BACK" THEN
  177.         GOTO WELCOME
  178.     ELSE
  179.         UIPop 1
  180.         GOSUB ASKQUIT
  181.         GOTO GETPATH
  182.    END IF
  183.  
  184. AFTDIRTEST:
  185.     IF IsDirWritable(DEST$) THEN
  186.     ELSE
  187. '$IFDEF XDEUTSCH
  188.        i%=DoMsgBox("Der gew臧lte Pfad kann nicht benutzt werden!", "Setup Fehler", MB_OK+MB_TASKMODAL+MB_ICONHAND)
  189. '$ELSE
  190.        i%=DoMsgBox("The chosen Path is not valid", "Setup Error", MB_OK+MB_TASKMODAL+MB_ICONHAND)
  191. '$ENDIF
  192.        GOTO GETPATH
  193.     ENDIF
  194.  
  195.  
  196.     drv$ = MID$(DEST$,1,1)
  197.     IF 2000000 > GetFreeSpaceForDrive(drv$) THEN
  198. '$IFDEF XDEUTSCH
  199.        i%=DoMsgBox("Zuwenig freier Speicher auf Laufwerk "+drv$, "Setup Fehler", MB_OK+MB_TASKMODAL+MB_ICONHAND)
  200. '$ELSE
  201.        i%=DoMsgBox("Not enough free space on disk "+drv$, "Setup Error", MB_OK+MB_TASKMODAL+MB_ICONHAND)
  202. '$ENDIF
  203.        GOTO GETPATH
  204.     ENDIF
  205.     
  206.     SrcDir$ = GetSymbolValue("STF_SRCDIR")
  207.     IF DoesDirExist(DEST$) THEN
  208.     ELSE
  209.        CreateDir DEST$, cmoNone
  210.        ON ERROR GOTO ERRQUIT
  211.     ENDIF
  212.  
  213.  
  214.     OpenLogFile MakePath(DEST$, "LOGFILE.OUT"), 0
  215.  
  216. '$IFDEF XMICRO
  217.    WriteToLogFile "UserName: "+ADRESS$
  218. '$ENDIF
  219.  
  220. '$IFNDEF XMICRO
  221.  OPTION:
  222.     OPTCUR$ = GetIniKeyString ("WIN.INI",INISTRING$,"keyPort")
  223.     IF OPTCUR$ = "1" THEN
  224.     ELSEIF OPTCUR$ = "2" THEN
  225.     ELSE
  226.       OPTCUR$ = "1"
  227.     ENDIF
  228.  
  229.     SetSymbolValue "EditTextIn", OPTCUR$
  230.     SetSymbolValue "EditFocus", "END"
  231.  
  232.     sz$ = UIStartDlg(CUIDLL$, OPTIO+DD, "FEditDlgProc", APPHELP, HELPPROC$)
  233.     OPTCUR$ = GetSymbolValue("EditTextOut")
  234.    UIPop 1
  235.  
  236.     IF sz$ = "CONTINUE" THEN
  237.         
  238.     ELSEIF sz$ = "BACK" THEN
  239.         GOTO GETPATHL1
  240.     ELSE
  241.         UIPop 1
  242.         GOSUB ASKQUIT
  243.         GOTO OPTION
  244.    END IF
  245. '$ENDIF
  246.  
  247.     cur% = ShowWaitCursor()
  248.     Install
  249.     RestoreCursor(cur%)
  250.  
  251. QUIT:
  252.     ON ERROR GOTO ERRQUIT
  253.     CloseLogFile
  254.     
  255.     IF ERR = 0 THEN
  256.         GOTO FINIDLG
  257.     ELSEIF ERR = STFQUIT THEN
  258.         dlg% = EXITQUIT
  259.     ELSE
  260.         dlg% = EXITFAILURE
  261.     END IF
  262. QUITL1:
  263.     SetSymbolValue "EditTextIn",""
  264.     sz$ = UIStartDlg(CUIDLL$, dlg% + DD , "FInfo0DlgProc", 0, "")
  265.     IF sz$ = "REACTIVATE" THEN
  266.         GOTO QUITL1
  267.     END IF
  268.     UIPop 1
  269.     END
  270.  
  271.  
  272. FINIDLG:
  273. '$IFNDEF XMICRO
  274.     ts$ = GetIniKeyString ("WIN.INI",INISTRING$,"midiDriver")
  275.     IF ts$ = "log_midi.dll" THEN
  276.       ed$ = "Emagic MIDI System"
  277.     ELSEIF ts$ = "log_mmed.dll" THEN
  278.       ed$ = "WINDOWS Multimedia System"
  279.     ELSE
  280. '$IFDEF XDEUTSCH
  281.       ed$ = "Fehlender Eintrag in der win.ini-Datei!"
  282. '$ELSE
  283.       ed$ = "ERROR! Missing Entry in win.ini"
  284. '$ENDIF
  285.     ENDIF
  286.  
  287.     ed$ = ed$ + "     /      " + GetIniKeyString("WIN.INI","Logic","keyPort")
  288.     
  289.     SetSymbolValue "EditTextIn", ed$
  290.     SetSymbolValue "EditFocus", "END"
  291. FINID1:
  292.     sz$ = UIStartDlg(CUIDLL$, FINI+DD, "FEditDlgProc", APPHELP, HELPPROC$)
  293. '    DEST$ = GetSymbolValue("EditTextOut")
  294.     
  295.     UIPop 1
  296.  
  297.     IF sz$ = "EXIT" THEN
  298.         GOSUB ASKQUIT
  299.         GOTO FINIDLG
  300.     END IF
  301. '$ENDIF
  302.  
  303.  
  304. EXRES1:
  305. 'IFDEF XMICRO
  306.     SetSymbolValue "EditTextIn",MakePath(DEST$,"miclogic.exe")
  307.     sz$ = UIStartDlg(CUIDLL$, DLGWAIT+DD, "FModelessDlgProc", 0, "")
  308.     UIPop 1
  309. 'ENDIF
  310.     sz$ = UIStartDlg(CUIDLL$, EXITSUCCESS+DD, "FInfo0DlgProc", 0, "")
  311.  
  312.     IF sz$ = "CONTINUE" THEN
  313.         GOTO DORESTART
  314.     ENDIF
  315.     END
  316.  
  317. DORESTART:
  318.     UIPopAll
  319.     SetRestartDir WSYSTEMPATH$
  320. '    SrcDir$ = GetSymbolValue("STF_SRCDIR")
  321. END
  322.     REM CopyFile SrcDir$,WSYSTEMPATH$,cmoTimeStamp+cmoOverwrite,0 
  323.     IF RestartListEmpty() THEN
  324.       GOTO RESERR
  325.     END IF    
  326.  
  327.     i% = ExitExecRestart()
  328. RESERR: 
  329. '$IFDEF XDEUTSCH
  330.     i% = DoMsgBox("WINDOWS Neustart gescheitert. Bitte manuell neustarten.", "Setup Fehler", MB_OK+MB_TASKMODAL+MB_ICONHAND)
  331. '$ELSE
  332.     i% = DoMsgBox("Restart failed! Please restart manually. ", "Setup Error", MB_OK+MB_TASKMODAL+MB_ICONHAND)
  333. '$ENDIF
  334.     END
  335.     
  336. ERRQUIT:
  337. '$IFDEF XDEUTSCH
  338.     i% = DoMsgBox("Fehler w臧rend des Setups, kann nicht fortgefhrt werden!", "Setup Fehler", MB_OK+MB_TASKMODAL+MB_ICONHAND)
  339. '$ELSE
  340.     i% = DoMsgBox("Some error occured during Setup, maybe sources are corrupted. Unable to continue", "Setup Error", MB_OK+MB_TASKMODAL+MB_ICONHAND)
  341. '$ENDIF
  342.     CloseLogFile
  343.     END
  344.  
  345.  
  346. INVALIDPATH:
  347.     SetSymbolValue "EditTextIn",""
  348.     sz$ = UIStartDlg(CUIDLL$, BADPATH+DD, "FInfo0DlgProc", 0, "")
  349.     UIPop 1
  350.     ERR = 55
  351.     GOTO QUIT
  352.  
  353.  
  354.  
  355.  
  356.  
  357.  
  358. ASKQUIT:
  359.     sz$ = UIStartDlg(CUIDLL$, ASKQUIT+DD, "FQuitDlgProc", 0, "")
  360.  
  361.     IF sz$ = "EXIT" THEN
  362.         UIPopAll
  363.         ERROR STFQUIT
  364.     ELSEIF sz$ = "REACTIVATE" THEN
  365.         GOTO ASKQUIT
  366.     ELSE
  367.         UIPop 1
  368.     END IF
  369.     RETURN
  370.  
  371.  
  372.  
  373. SUB Install STATIC
  374.  
  375.     SrcDir$ = GetSymbolValue("STF_SRCDIR")
  376.  
  377.  
  378.  
  379.     WriteToLogFile ""
  380.     WriteToLogFile "  User chose as destination directory: '" + DEST$ + "'"
  381.     WriteToLogFile "  User chose option: '" + OPTCUR$ + "'"
  382.     WriteToLogFile ""
  383.  
  384.     AddSectionFilesToCopyList "Files", SrcDir$, DEST$
  385.     AddSectionFilesToCopyList "SYSTEM", SrcDir$, WSYSTEMPATH$
  386.     CopyFilesInCopyList
  387.  
  388.     CreateIniKeyValue "WIN.INI",INISTRING$,"Path",DEST$, cmoOverwrite
  389.     ts$ = GetIniKeyString ("WIN.INI",INISTRING$,"midiDriver")
  390.     IF LEN(ts$) = 0 THEN
  391.       CreateIniKeyValue "WIN.INI",INISTRING$,"midiDriver",PROGPREF + "_mmed.dll", cmoOverwrite
  392.     ENDIF
  393.  
  394. '$IFNDEF XMICRO
  395.     CreateIniKeyValue "WIN.INI",INISTRING$,"keyPort",OPTCUR$, cmoOverwrite
  396. '$ENDIF    
  397.  
  398.     CreateIniKeyValue "WIN.INI", INISTRING$, "Version", SUBVERSION$, cmoOverwrite
  399.     WriteToLogFile "win.ini section complete, Version " + SUBVERSION$
  400.  
  401.  
  402.     vv% = GetWindowsMajorVersion()
  403.     WriteToLogFile "Windows Major Version = "+STR$(vv%)
  404.     vvx% = GetWindowsMinorVersion()
  405.     WriteToLogFile "Windows Minor Version = "+STR$(vvx%)
  406.     
  407.     edevfound% = 0
  408.     OPEN SYSPATH$ FOR INPUT AS #1
  409.     WHILE not EOF (1)
  410.         LINE INPUT #1, oneline$
  411.         IF edevfound% = 0 THEN
  412.           IF INSTR( oneline$, "emagic.386" ) THEN
  413.             edevfound% = INSTR( oneline$, "device=emagic.386" )
  414.           ENDIF
  415.         ENDIF
  416.     WEND
  417.     CLOSE #1
  418.     
  419.       WriteToLogFile "Syspath=" + SYSPATH$
  420.  
  421.     IF edevfound% THEN
  422.       WriteToLogFile "device=emagic.386 entry found in system.ini"
  423.     ELSE
  424.       IF WritePrivateProfileString( "386Enh","device","emagic.386",SYSPATH$) THEN
  425.         WriteToLogFile "device=emagic.386 entry in system.ini created"
  426.       ENDIF
  427.     ENDIF
  428.   
  429.     
  430.     ts$ = GetIniKeyString (SYSPATH$,"emagic.386","No_Interface_1_Active")
  431.     IF LEN(ts$) = 0 THEN
  432.       CreateIniKeyValue SYSPATH$,"emagic.386","No_Interface_1_Active","Yes", cmoOverwrite
  433.     ENDIF
  434.  
  435.     IF (PROGPREF+"_midi.dll") = GetIniKeyString( "WIN.INI",INISTRING$,"midiDriver")  THEN
  436.         WriteToLogFile "[emagic.386] section not created or modified, because Logic Drivers are used"
  437.     ELSE
  438.         tz$=KillAct("Log2PC")
  439.         tz$=KillAct("SC-55mkII")
  440.         tz$=KillAct("RAP10")
  441.         tz$=KillAct("TG100")
  442.         tz$=KillAct("SCC-1")
  443.         tz$=KillAct("MPU-401")
  444.         tz$=KillAct("05R/W")
  445.         tz$=KillAct("MusicQuest-PC-MIDI")
  446.         tz$=KillAct("MQX-32M")
  447.         tz$=KillAct("Soundblaster-16MPU")
  448.         tz$=KillAct("Soundblaster-Pro")
  449.         tz$=KillAct("Soundblaster")
  450.         tz$=KillAct("MidiTimePiece")
  451.         tz$=KillAct("MidiExpress")
  452.         tz$=KillAct("Midiator-101")
  453.         CreateIniKeyValue SYSPATH$,"emagic.386","No_Interface_1_Active","Yes", cmoOverwrite
  454.         WriteToLogFile "[emagic.386] section in system.ini created or modified"
  455.     ENDIF
  456.     
  457.  
  458.     ts$ = MakePath( SYSDIR, PRNAME$+".grp" )
  459.     IF DoesFileExist( ts$, femExists ) THEN
  460.     ELSE
  461.       CreateProgmanGroup PRNAME$, "", cmoOverwrite
  462.     ENDIF
  463.     CreateProgmanItem PRNAME$, PROGNAME$, MakePath(DEST$,PRNAME$+".exe"), "", cmoOverwrite
  464.     CreateProgmanItem PRNAME$, "WELCOME", MakePath(DEST$,PRNAME$+".exe welcome.lso"), "", cmoOverwrite
  465.     CreateProgmanItem PRNAME$, "TUTORIAL", MakePath(DEST$,PRNAME$+".exe tutorial.lso"), "", cmoOverwrite
  466.     CreateProgmanItem PRNAME$, "READ ME", MakePath(DEST$,"readme.wri"), "", cmoOverwrite
  467.  
  468. REM   XXX CreateProgmanItem PRNAME$, "MIDI Setup", MakePath(DEST$,"midi_set.exe"), "", cmoOverwrite
  469.  
  470.     WriteToLogFile "prog.ini section created ( (micro/Logic Icons Group in Program-Manager)"
  471.  
  472.     CreateIniKeyValue "WIN.INI","Extensions","lso",MakePath(DEST$,PRNAME$+".exe") + " ^.lso" ,cmoOverwrite
  473.  
  474.     ShowProgmanGroup  PRNAME$, 1, cmoNone
  475.  
  476.  
  477. END SUB
  478.  
  479.  
  480.  
  481.  
  482. FUNCTION MakePath (szDir$, szFile$) STATIC AS STRING
  483.     IF szDir$ = "" THEN
  484.         MakePath = szFile$
  485.     ELSEIF szFile$ = "" THEN
  486.         MakePath = szDir$
  487.     ELSEIF MID$(szDir$, LEN(szDir$), 1) = "\" THEN
  488.         MakePath = szDir$ + szFile$
  489.     ELSE
  490.         MakePath = szDir$ + "\" + szFile$
  491.     END IF
  492. END FUNCTION
  493.  
  494. FUNCTION KillAct(g$) STATIC AS STRING
  495.      IF DoesIniKeyExist(SYSPATH$,"emagic.386",g$ + "_1_Active") THEN
  496.         CreateIniKeyValue SYSPATH$,"emagic.386",g$ + "_1_Active","no", cmoOverwrite
  497.      ENDIF
  498.      IF DoesIniKeyExist(SYSPATH$,"emagic.386",g$ + "_2_Active") THEN
  499.         CreateIniKeyValue SYSPATH$,"emagic.386",g$ + "_2_Active","no", cmoOverwrite
  500.      ENDIF
  501. END FUNCTION
  502.  
  503.  
  504.