home *** CD-ROM | disk | FTP | other *** search
/ Lingua Land / lingua_land.iso / lingua / lingua.mst < prev    next >
Text File  |  1996-08-21  |  13KB  |  487 lines

  1. '**************************************************************************
  2. '*                       LinguaLand setup application
  3. '**************************************************************************
  4.  
  5. '$DEFINE DEBUG  ''Define for script development/debugging
  6.  
  7. '$INCLUDE 'setupapi.inc'
  8. '$INCLUDE 'msdetect.inc'
  9. '$INCLUDE 'msregdb.inc'
  10. '$INCLUDE 'msshared.inc'
  11.  
  12. ''Dialog ID's
  13. CONST WELCOME           = 100
  14. CONST ASKQUIT           = 200
  15. CONST DESTPATH          = 300
  16. CONST EXITFAILURE       = 400
  17. CONST EXITWIN32S    = 500
  18. CONST EXITQUIT          = 600
  19. CONST EXITSUCCESS       = 700
  20. CONST OPTIONS           = 800
  21. CONST APPHELP           = 900
  22. CONST RESTARTDLG    = 1000
  23. CONST BADPATH           = 6400
  24. CONST SMALLWIN          = 2200
  25. CONST RESTART           = 2600
  26. CONST RESTARTII         = 2700
  27. CONST WAIT        = 5000
  28. CONST GETPASSWORD    = 7801
  29. CONST HELP_1           = 7802
  30. CONST HELP_2           = 7803
  31. CONST HELP_3           = 7804
  32.  
  33. ''Bitmap ID
  34. CONST LOGO = 1
  35.  
  36. GLOBAL DEST$            ''Default destination directory.
  37. GLOBAL DESTSYS$        '' system directory
  38. GLOBAL LANGUAGE$        ''Student language
  39. GLOBAL LangLearn$        '' Learn language
  40. GLOBAL CUIDLL$            ''Custom user interface dll
  41. GLOBAL HELPPROC$        ''Help dialog procedure
  42.  
  43. DECLARE SUB Install
  44. DECLARE SUB Register
  45. DECLARE SUB NativeLanguage
  46. DECLARE FUNCTION MakePath (szDir$, szFile$) AS STRING
  47. DECLARE fUNCTION ExitWindowsExec  LIB "User" (Exec$, Param$) AS INTEGER
  48. DECLARE FUNCTION OnWindowsNT LIB "INIUPD.DLL" AS INTEGER
  49. DECLARE FUNCTION ShowWindow LIB "user" (hwnd%, flag%) AS INTEGER
  50. DECLARE FUNCTION IsWin32sLoaded LIB "INIUPD.DLL" (arg1$) AS INTEGER
  51.  
  52.  
  53.  
  54.  
  55. INIT:                            
  56.    ' Okno na caly ekran                   
  57.    i% = ShowWindow(HwndFrame(),3)
  58.     
  59.     DEST$ = "C:\Lingua"
  60.     LangLearn$ = ""
  61.     LANGUAGE$ = "PL"
  62.     DESTSYS$ = GetWindowsSysDir()
  63.     
  64.     CUIDLL$ = "mscuistf.dll"   
  65.     HELPPROC$ = "FHelpDlgProc"          
  66.  
  67.     SetBitmap CUIDLL$, LOGO
  68.     SetTitle "Lingua Land Setup"
  69.  
  70.     szInf$ = GetSymbolValue("STF_SRCINFPATH")
  71.     IF szInf$ = "" THEN
  72.         szInf$ = GetSymbolValue("STF_CWDDIR") + "Lingua.INF"
  73.     END IF
  74.     ReadInfFile szInf$
  75.     szInf$ = ""
  76.  
  77.     '' Can not run on versions less than 3.10.
  78.     IF GetWindowsMajorVersion = 3 AND GetWindowsMinorVersion < 12 AND OnWindowsNT = 0 THEN
  79.         '' Check if Win32s is partially installed
  80.         sz$ = GetIniKeyString (DESTSYS$ + "WIN32S.INI", "Win32s", "Setup")
  81.         '' If WIN32S.INI specifies Win32s Setup=0, then force complete Win32s file overwrite
  82.         IF sz$ = "0" THEN
  83.         ERR = 5
  84.             GOTO QUIT
  85.         END IF
  86.         '' If WIN32S.INI is missing, try and reinstall Win32s files/recreate WIN32S.INI
  87.         IF sz$ <> "1" THEN
  88.         ERR = 5
  89.             GOTO QUIT
  90.         END IF
  91.  
  92.         '' If Win32s is already installed, get running version number
  93.         i% = DoesFileExist( DESTSYS$ + "W32SYS.DLL", femExists )
  94.         IF i% = 1 THEN
  95.             i% = IsWin32sLoaded( szOldVer$ )
  96.         ENDIF
  97.  
  98.         IF i% = 0 THEN
  99.         ERR = 5
  100.             GOTO QUIT
  101.         END IF
  102.     END IF
  103.  
  104.  
  105. WELCOME:                                                     
  106.     sz$ = UIStartDlg(CUIDLL$, WELCOME, "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. GETPATH:
  116.     SetSymbolValue "EditTextIn", DEST$
  117.     SetSymbolValue "EditFocus", "END"
  118. GETPATHL1:
  119.     sz$ = UIStartDlg(CUIDLL$, DESTPATH, "FEditDlgProc", HELP_3, HELPPROC$)
  120.     DEST$ = GetSymbolValue("EditTextOut")
  121.  
  122.     IF sz$ = "CONTINUE" THEN
  123.         IF IsDirWritable(DEST$) = 0 THEN
  124.             GOSUB BADPATH
  125.             GOTO GETPATHL1
  126.         END IF
  127.         UIPop 1
  128.     ELSEIF sz$ = "REACTIVATE" THEN
  129.         GOTO GETPATHL1
  130.     ELSEIF sz$ = "BACK" THEN
  131.         UIPop 1
  132.     GOTO WELCOME
  133.     ELSE
  134.         GOSUB ASKQUIT
  135.         GOTO GETPATH
  136.     END IF
  137.  
  138.  
  139.     Install     
  140.     sz$ = UIStartDlg(CUIDLL$, RESTARTDLG, "FInfoDlgProc", 0, "")
  141.     IF sz$ = "CONTINUE" THEN
  142.         i% = ExitWindowsExec( GetWindowsDir() + "_MSRSTRT.EXE", "_MSSETUP.BAT" )    
  143.     ENDIF
  144.  
  145. QUIT:
  146.     ON ERROR GOTO ERRQUIT
  147.  
  148.     IF ERR = 0 THEN
  149.         dlg% = EXITSUCCESS
  150.     ELSEIF ERR = STFQUIT THEN
  151.         dlg% = EXITQUIT
  152.     ELSEIF ERR = 5 THEN
  153.     dlg% = EXITWIN32S
  154.     ELSE
  155.         dlg% = EXITFAILURE
  156.     END IF
  157. QUITL1:
  158.     sz$ = UIStartDlg(CUIDLL$, dlg%, "FInfo0DlgProc", 0, "")
  159.     IF sz$ = "REACTIVATE" THEN
  160.         GOTO QUITL1
  161.     END IF
  162.     UIPop 1
  163.  
  164.     END
  165.  
  166. ERRQUIT:
  167.     i% = DoMsgBox("Setup sources were corrupted, call 555-1212!", "Setup Message", MB_OK+MB_TASKMODAL+MB_ICONHAND)
  168.     END
  169.  
  170.  
  171.  
  172. BADPATH:
  173.     sz$ = UIStartDlg(CUIDLL$, BADPATH, "FInfo0DlgProc", 0, "")
  174.     IF sz$ = "REACTIVATE" THEN
  175.         GOTO BADPATH
  176.     END IF
  177.     UIPop 1
  178.     RETURN
  179.  
  180.  
  181.  
  182. ASKQUIT:
  183.     sz$ = UIStartDlg(CUIDLL$, ASKQUIT, "FQuitDlgProc", 0, "")
  184.  
  185.     IF sz$ = "EXIT" THEN
  186.         UIPopAll
  187.         ERROR STFQUIT
  188.     ELSEIF sz$ = "REACTIVATE" THEN
  189.         GOTO ASKQUIT
  190.     ELSE
  191.         UIPop 1
  192.     END IF
  193.     RETURN
  194.        
  195.        
  196.        
  197. '**
  198. '** Purpose:
  199. '**     Builds the copy list and performs all installation operations.
  200. '** Arguments:
  201. '**     none.
  202. '** Returns:
  203. '**     none.
  204. '*************************************************************************
  205. SUB Install STATIC
  206.  
  207.     SrcDir$ = GetSymbolValue("STF_SRCDIR")
  208.     CreateDir DEST$, cmoNone
  209.  
  210.     OpenLogFile MakePath(DEST$, "LOGFILE.OUT"), 0
  211.     WriteToLogFile ""
  212.     WriteToLogFile "  User chose as destination directory: '" + DEST$ + "'"
  213.     WriteToLogFile ""
  214.     WriteToLogFile "May have had to create the directory: " + DEST$
  215.     WriteToLogFile ""                    
  216.     WriteToLogFile "Windows directory: " + GetWindowsDir
  217.     WriteToLogFile ""                    
  218.     WriteToLogFile "Windows directory: " + GetWindowsSysDir
  219.     WriteToLogFile ""                    
  220.     
  221. '// Create directories    
  222.    newDir$ = DEST$
  223.    CreateDir newDir$, cmoNone    
  224.    WinDir$ = GetWindowsDir()
  225.    WinSysDir$ = GetWindowsSysDir()
  226.     
  227.  
  228.    IF OnWindowsNT <> 0 THEN
  229.     WinSysDir$ = WinDir$ +"System32\"
  230.    END IF
  231. '//    Install runtime libraries
  232.    version% = GetWindowsMinorVersion()     
  233.  
  234.    AddSectionFilesToCopyList "Bin", SrcDir$, DEST$
  235.  
  236.    IF GetWindowsMajorVersion = 3 AND GetWindowsMinorVersion < 12 AND OnWindowsNT = 0 THEN
  237.        AddSectionFilesToCopyList "win32s", SrcDir$, WinSysDir$
  238.    ELSE
  239.        AddSectionFilesToCopyList "Runtime95", SrcDir$, WinSysDir$
  240.    END IF
  241.        
  242.    AddSectionFilesToCopyList "Fonts", SrcDir$, WinSysDir$
  243.                                                      
  244.                                                      
  245. ''  Check windrive diskspace
  246.     SizeReq& = GetCopyListCost ("","", "")
  247.     IF SizeReq& <> 0 THEN
  248.         sz$ = UIStartDlg(CUIDLL$, SMALLWIN, "FInfo0DlgProc", 0, "")
  249.         END
  250.     END IF
  251.  
  252. '// Copy files
  253.     
  254.    CopyFilesInCopyList
  255.            
  256.    IF GetWindowsMajorVersion = 3 AND GetWindowsMinorVersion < 12 THEN
  257.        Run( "regsvr32 /s " + SrcDir$ + "\runtime\win32s\mfc40.dll" )
  258.        Run( "regsvr32 /s " + SrcDir$ + "\runtime\win32s\olepro32.dll" )
  259.    END IF
  260.  
  261.    sz$ = UIStartDlg(CUIDLL$, WAIT, "FModelessDlgProc", 0, "")          
  262.  
  263.    Register   
  264.  
  265.    UIPop 1
  266.  
  267. '//    Register fonts in windows
  268.     CreateIniKeyValue "win.ini", "fonts", "Comic Sans MS (True Type)", "COMIC.FOT", cmoOverwrite
  269.     
  270. '//     Create program manager group 
  271.     CreateProgmanGroup "Lingua Land", "", cmoNone
  272.     ShowProgmanGroup  "Lingua Land", 1, cmoNone
  273.        sz$ = MakePath(DEST$,"Lingua.exe")
  274.        CreateProgmanItem "Lingua Land", "Lingua Land", sz$, "", cmoOverwrite
  275.    
  276.    CloseLogFile
  277.    
  278. END SUB
  279.  
  280.  
  281.  
  282.  
  283.  
  284.  
  285. '**
  286. '** Purpose:
  287. '**     Register OLE & ini files
  288. '** Arguments:
  289. '**     none.
  290. '** Returns:
  291. '**     none.
  292. '*************************************************************************
  293. SUB Register STATIC
  294.  
  295.  
  296.     SrcDir$ = GetSymbolValue("STF_SRCDIR")
  297.     WinDir$ = GetWindowsDir()
  298.     WinSysDir$ = GetWindowsSysDir()
  299.     
  300.  
  301. '//    Edit lingua.ini file in Windows directory  
  302.     ini$ = MakePath(WinDir$, "Lingua.ini")
  303.     CreateIniKeyValue ini$, "Main", "Learn", LangLearn$, cmoOverwrite
  304.     NativeLanguage 
  305.  
  306.     ' Create pathes
  307.     value$ = MakePath(SrcDir$,"data\")
  308.     CreateIniKeyValue ini$, "Path", "Data", value$, cmoOverwrite
  309.     CreateIniKeyValue ini$, "Path", "bin", Dest$ +"\", cmoOverwrite
  310.     value$ = MakePath(SrcDir$,"config\")
  311.     CreateIniKeyValue ini$, "Path", "config", value$, cmoOverwrite
  312.     value$ = MakePath(SrcDir$,"picture\")
  313.     CreateIniKeyValue ini$, "Path", "picture", value$, cmoOverwrite
  314.     value$ = MakePath(SrcDir$,"sound\")
  315.     CreateIniKeyValue ini$, "Path", "sound", value$, cmoOverwrite
  316.  
  317.     ' Add fonts
  318.     CreateIniKeyValue ini$, "Font", "usa", "Comic Sans MS", cmoOverwrite
  319.     CreateIniKeyValue ini$, "font", "pl", "Arial CE,238", cmoOverwrite
  320.     CreateIniKeyValue ini$, "font", "tr", "Arial,162", cmoOverwrite
  321.     CreateIniKeyValue ini$, "font", "rus", "Arial Cyr,204", cmoOverwrite
  322.  
  323.  
  324.     ' register components
  325.        sz$ = MakePath(DEST$,"Animate.dll")
  326.         Run("regsvr32.exe /s " + sz$)   
  327.        sz$ = MakePath(DEST$,"Baloon.ocx")
  328.         Run("regsvr32.exe /s " + sz$)   
  329.        sz$ = MakePath(DEST$,"Cartoon.ocx")
  330.         Run("regsvr32.exe /s " + sz$)   
  331.        sz$ = MakePath(DEST$,"Cross.ocx")
  332.         Run("regsvr32.exe /s " + sz$)   
  333.        sz$ = MakePath(DEST$,"Fallword.ocx")
  334.         Run("regsvr32.exe /s " + sz$)   
  335.        sz$ = MakePath(DEST$,"Garden.ocx")
  336.         Run("regsvr32.exe /s " + sz$)   
  337.        sz$ = MakePath(DEST$,"Grama.ocx")
  338.         Run("regsvr32.exe /s " + sz$)   
  339.        sz$ = MakePath(DEST$,"Label.ocx")
  340.         Run("regsvr32.exe /s " + sz$)   
  341.        sz$ = MakePath(DEST$,"peter.ocx")
  342.         Run("regsvr32.exe /s " + sz$)   
  343.        sz$ = MakePath(DEST$,"Crosscom.ocx")
  344.         Run("regsvr32.exe /s " + sz$)   
  345.        sz$ = MakePath(DEST$,"shoot.ocx")
  346.         Run("regsvr32.exe /s " + sz$)   
  347.        sz$ = MakePath(DEST$,"totlscor.ocx")
  348.         Run("regsvr32.exe /s " + sz$)   
  349.        sz$ = MakePath(DEST$,"txtstore.ocx")
  350.         Run("regsvr32.exe /s " + sz$)   
  351.        sz$ = MakePath(DEST$,"factory.ocx")
  352.         Run("regsvr32.exe /s " + sz$)   
  353.        sz$ = MakePath(DEST$,"Intro.ocx")
  354.         Run("regsvr32.exe /s " + sz$)   
  355.        sz$ = MakePath(DEST$,"video32.ocx")
  356.         Run("regsvr32.exe /s " + sz$)   
  357.  
  358.  
  359. END SUB
  360.  
  361.  
  362.  
  363.  
  364. '**
  365. '** Purpose:
  366. '**     Appends a file name to the end of a directory path,
  367. '**     inserting a backslash character as needed.
  368. '** Arguments:
  369. '**     szDir$  - full directory path (with optional ending "\")
  370. '**     szFile$ - filename to append to directory
  371. '** Returns:
  372. '**     Resulting fully qualified path name.
  373. '*************************************************************************
  374. FUNCTION MakePath (szDir$, szFile$) STATIC AS STRING
  375.     IF szDir$ = "" THEN
  376.         MakePath = szFile$
  377.     ELSEIF szFile$ = "" THEN
  378.         MakePath = szDir$
  379.     ELSEIF MID$(szDir$, LEN(szDir$), 1) = "\" THEN
  380.         MakePath = szDir$ + szFile$
  381.     ELSE
  382.         MakePath = szDir$ + "\" + szFile$
  383.     END IF
  384. END FUNCTION
  385.  
  386.  
  387.  
  388. SUB NativeLanguage STATIC 
  389.  
  390.     ini$ = MakePath(GetWindowsDir(), "Lingua.ini")
  391.  
  392.     lang$ = UCASE$(GetIniKeyString ("WIN.INI", "Intl", "sLanguage"))
  393.     native$ = "GB"
  394.     
  395.     IF lang$ = "ENU" THEN
  396.     native$ = "USA"
  397.     ELSEIF lang$ = "ENG" THEN
  398.     native$ = "GB"
  399.     ELSEIF lang$ = "DEA" THEN
  400.     native$ = "D"
  401.     ELSEIF lang$ = "DEC" THEN
  402.     native$ = "D"
  403.     ELSEIF lang$ = "DEL" THEN
  404.     native$ = "D"
  405.     ELSEIF lang$ = "DEU" THEN
  406.     native$ = "D"
  407.     ELSEIF lang$ = "DES" THEN
  408.     native$ = "D"
  409.     ELSEIF lang$ = "FRB" THEN
  410.     native$ = "F"
  411.     ELSEIF lang$ = "FRL" THEN
  412.     native$ = "F"
  413.     ELSEIF lang$ = "FRA" THEN
  414.     native$ = "F"
  415.     ELSEIF lang$ = "FRS" THEN
  416.     native$ = "F"
  417.     ELSEIF lang$ = "PLK" THEN
  418.     native$ = "PL"
  419.     ELSEIF lang$ = "RUS" THEN
  420.     native$ = "RUS"
  421.     ELSEIF lang$ = "TRK" THEN
  422.     native$ = "TR"
  423.     ELSEIF lang$ = "DAN" THEN
  424.     native$ = "DK"
  425.     ELSEIF lang$ = "SVE" THEN
  426.     native$ = "S"
  427.     ELSEIF lang$ = "NOR" THEN
  428.     native$ = "N"
  429.     ELSEIF lang$ = "NON" THEN
  430.     native$ = "N"
  431.     ELSEIF lang$ = "FIN" THEN
  432.     native$ = "FIN"
  433.     ELSEIF lang$ = "ELL" THEN
  434.     native$ = "GR"
  435.     ELSEIF lang$ = "ESS" THEN
  436.     native$ = "E"
  437.     ELSEIF lang$ = "ESL" THEN
  438.     native$ = "E"
  439.     ELSEIF lang$ = "ESD" THEN
  440.     native$ = "E"
  441.     ELSEIF lang$ = "ESF" THEN
  442.     native$ = "E"
  443.     ELSEIF lang$ = "ESG" THEN
  444.     native$ = "E"
  445.     ELSEIF lang$ = "ESO" THEN
  446.     native$ = "E"
  447.     ELSEIF lang$ = "ESC" THEN
  448.     native$ = "E"
  449.     ELSEIF lang$ = "ESM" THEN
  450.     native$ = "E"
  451.     ELSEIF lang$ = "ESA" THEN
  452.     native$ = "E"
  453.     ELSEIF lang$ = "ESZ" THEN
  454.     native$ = "E"
  455.     ELSEIF lang$ = "ESR" THEN
  456.     native$ = "E"
  457.     ELSEIF lang$ = "ESP" THEN
  458.     native$ = "E"
  459.     ELSEIF lang$ = "ESY" THEN
  460.     native$ = "E"
  461.     ELSEIF lang$ = "ESV" THEN
  462.     native$ = "E"
  463.     ELSEIF lang$ = "ESN" THEN
  464.     native$ = "E"
  465.     ELSEIF lang$ = "ITA" THEN
  466.     native$ = "I"
  467.     ELSEIF lang$ = "ITS" THEN
  468.     native$ = "I"
  469.     ELSEIF lang$ = "PTB" THEN
  470.     native$ = "P"
  471.     ELSEIF lang$ = "PTG" THEN
  472.     native$ = "P"
  473.     ELSEIF lang$ = "HUN" THEN
  474.     native$ = "H"
  475.     ELSEIF lang$ = "CSY" THEN
  476.     native$ = "CZ"
  477.     ELSEIF lang$ = "SKY" THEN
  478.     native$ = "SL"
  479.     ELSEIF lang$ = "ROM" THEN
  480.     native$ = "RO"
  481.     ELSEIF lang$ = "BGR" THEN
  482.     native$ = "BG"
  483.     ENDIF
  484.  
  485.     CreateIniKeyValue ini$, "Main", "Native", native$, cmoOverwrite
  486.     
  487. END SUB