home *** CD-ROM | disk | FTP | other *** search
/ CD-ROM Today - The Disc! 15 / cdrt15.iso / mac / DKSETUP / DKGEN.INC < prev    next >
Text File  |  1995-04-07  |  20KB  |  614 lines

  1. '$INCLUDE 'setupapi.inc'
  2. '$INCLUDE 'msdetect.inc'
  3. '$INCLUDE 'dklang.inc'
  4.  
  5. CONST SOURCE_BINARIES_SUBDIR = "DKCODE"
  6. CONST SOURCE_SETUP_SUBDIR = "DKSETUP"
  7. CONST SETUP_INF_FILENAME = "SETUP.INF"
  8. CONST CUIDLL_FILENAME = "mscuistf.dll"
  9. CONST SETUP_INI_BINARIES_SECTION_NAME = "BIN"
  10. CONST SETUP_INI_WING_BINARIES_NAME = "WinG Runtime"
  11. CONST SETUP_INI_WING32_BINARIES_NAME = "WinG32"
  12. CONST SETUP_INI_ACM_SECTION_NAME = "ACM Drivers"
  13. CONST SETUP_INI_FONTS_SECTION_NAME = "Fonts"
  14.  
  15. CONST PRODUCT_INI_DIR_SECTION_NAME = "Directory"
  16. CONST PRODUCT_INI_DIR_ENTRY_NAME = "Data"
  17. CONST STR_COMPANYNAME = "DK Multimedia"
  18. CONST STR_COPYRIGHT = "⌐ 1995 DK Multimedia"
  19.  
  20. CONST MINIMUM_DISK_SPACE = 2048 ' For Minimum install
  21.  
  22. ' Procs
  23. CONST PROC_HELP = "FHelpDlgProc"
  24.  
  25. DECLARE FUNCTION ExitWindowsExec LIB "USER.EXE" (szEXE$, szParams$) AS INTEGER
  26.  
  27. DECLARE FUNCTION Ctl3dRegister LIB "CTL3D.DLL" (hInst%) AS INTEGER
  28. DECLARE FUNCTION Ctl3dUnregister LIB "CTL3D.DLL" (hInst%) AS INTEGER
  29. DECLARE FUNCTION Ctl3dAutoSubClass LIB "CTL3D.DLL" (hInst%) AS INTEGER
  30.  
  31. DECLARE FUNCTION OnWin3x LIB "setuphlp.DLL" AS INTEGER
  32. DECLARE FUNCTION VflatdPresent LIB "setuphlp.DLL" AS INTEGER
  33. DECLARE FUNCTION GetRealSystemDir LIB "setuphlp.DLL" (szDir$,cbBuf%) AS INTEGER
  34. DECLARE FUNCTION RestartWindows LIB "setuphlp.DLL" AS INTEGER
  35. DECLARE FUNCTION IsWin32FileNewer LIB "setuphlp.DLL" (szOrig$,szNew$) AS INTEGER
  36. DECLARE SUB RenameFilePlease LIB "setuphlp.DLL" (szOrig$,szNew$)
  37.  
  38. DECLARE FUNCTION FIsVGA LIB "mscuistf.dll" AS INTEGER
  39. DECLARE FUNCTION FIs256Colour LIB "mscuistf.dll" AS INTEGER
  40. DECLARE FUNCTION Welcome() AS INTEGER
  41. DECLARE FUNCTION TestSystem() AS INTEGER
  42. DECLARE FUNCTION GetDiskSpaceNeeded(drive%) AS LONG
  43. DECLARE SUB Initialise(prodName$, defInstallPath$, msgCaption$)
  44. DECLARE SUB DeInitialise()
  45. DECLARE SUB AskQuit()
  46. DECLARE SUB BadPath()
  47. DECLARE SUB NetworkDrive()
  48. DECLARE SUB UpdateIndeoAVIDrivers()
  49. DECLARE SUB UpdateWinGDrivers()
  50. DECLARE SUB UpdateADPCMDrivers()
  51. DECLARE SUB UpdateProgramManager(prodName$, appExeFile$, appPengeFile$, readmeFile$, readmeStr$, onCDROM%)
  52. DECLARE FUNCTION MakePath (szDir$, szFile$) AS STRING
  53. DECLARE FUNCTION GetRealWindowsSysDir AS STRING
  54. DECLARE SUB UpdateWinG32 (szOrig$)
  55. DECLARE SUB HandleRestart()
  56. DECLARE SUB InitCommonInstall()
  57. DECLARE SUB EndCommonInstall(appReadmeFile$, inRoot%)
  58.  
  59. ' Error messages
  60. CONST ERR_OK = 100
  61. CONST ERR_EXITFAIL = 101
  62. CONST ERR_WINVERFAIL = 102
  63. CONST ERR_NODISKSPACE = 103
  64.  
  65. ' Navigation messages
  66. CONST NAV_FORWARD = 0
  67. CONST NAV_BACK = 1
  68.  
  69.  
  70. ' Bitmap ID
  71. CONST LOGO = 1
  72.  
  73. ' Dialog ID's
  74. CONST IDD_WELCOME       = 100
  75. CONST IDD_CUSTOMHELP    = 106
  76. CONST IDD_SPEED         = 111
  77. CONST IDD_ASKQUIT       = 200
  78. CONST IDD_DESTPATH      = 300
  79. CONST IDD_EXITFAILURE   = 400
  80. CONST IDD_EXITQUIT      = 600
  81. CONST IDD_EXITSUCCESS   = 700
  82. CONST IDD_APPHELP       = 900
  83. CONST IDD_DONENEWSYSSOFT    = 1100
  84. CONST IDD_DONENOSYSSOFT     = 1800
  85. CONST IDD_NEWSYSTEMSOFTWARE = 2300
  86. CONST IDD_NEWADPCM      = 2600
  87. CONST IDD_WARNNOSYSSOFT = 3100
  88. CONST IDD_MAILMAN       = 1500
  89. CONST IDD_CUSTOM        = 6200
  90. CONST IDD_BADPATH       = 6400
  91. CONST IDD_NEED31        = 6401
  92. CONST IDD_NOMOUSE       = 6402
  93. CONST IDD_BADVGA        = 6403
  94. CONST IDD_NOT256        = 6404
  95. CONST IDD_POORMACHINE   = 6405
  96. CONST IDD_AWFULMACHINE  = 6406
  97. CONST IDD_PATHHELP      = 6407
  98. CONST IDD_WHIZZHELP     = 6408
  99. CONST IDD_URKADPCM      = 6409
  100. CONST IDD_ADPCMHELP     = 6410
  101. CONST IDD_NODISKSPACE   = 6411
  102. CONST IDD_NETWORKDRIVE  = 6412
  103.  
  104.  
  105. GLOBAL szWinPath As String
  106. GLOBAL szWinSysPath As String
  107. GLOBAL szWinDrive As String
  108. GLOBAL szSrcSetupPath As String
  109. GLOBAL szSrcBinPath As String
  110. GLOBAL szDestPath As String
  111. GLOBAL szOldDestPath As String
  112. GLOBAL szPengePath As String
  113. GLOBAL szINFPath As String
  114. GLOBAL szAppINIPath As String
  115. GLOBAL szMsgCaption As String
  116. GLOBAL szButton As String
  117. GLOBAL szMinimalInstall As String
  118. GLOBAL szAddPMItem As String
  119. GLOBAL szExpressCustomChoice As String
  120.  
  121. GLOBAL fPreviousMode As Integer
  122. GLOBAL fWillNotFit As Integer
  123. GLOBAL fSystemUpdated As Integer
  124. GLOBAL hDlg As Integer
  125. GLOBAL dButton As Integer
  126. GLOBAL dWinDrive As Integer
  127. GLOBAL dDestDrive As Integer
  128. GLOBAL dCursor As Integer
  129.  
  130.  
  131. Sub InitCommonInstall() STATIC
  132.     AddToBillboardList CUIDLL_FILENAME, IDD_MAILMAN, "MailmanDlgProc", 2500
  133.     SetCopyGaugePosition -1, 150
  134.     fSystemUpdated = 0
  135. End Sub
  136.  
  137. Sub EndCommonInstall(appReadmeFile$, inRoot%) STATIC
  138.     if RestartListEmpty = 0 or fSystemUpdated = 1 then
  139.         hDlg = IDD_DONENEWSYSSOFT
  140.     else
  141.         hDlg = IDD_DONENOSYSSOFT
  142.     end if
  143.  
  144. QuitLoop:
  145.     szButton = UIStartDlg(CUIDLL_FILENAME, hDlg, "FInfoDlgProc", 0, "")
  146.     select case szButton
  147.     case "REACTIVATE"
  148.         goto QuitLoop
  149.     case "CONTINUE"
  150.         if inRoot% = 1 then
  151.             szReadMe$ = MakePath( mid$(szSrcSetupPath, 1, (len(szSrcSetupPath) - len(SOURCE_SETUP_SUBDIR))-1), appReadmeFile$)
  152.         else
  153.             szReadMe$ = MakePath(szSrcBinPath, appReadmeFile$)
  154.         end if
  155.         run "notepad.exe " + szReadMe$, NOWAIT
  156.         goto QuitLoop
  157.     case "BACK"
  158.         HandleRestart
  159.     case "EXIT"
  160.         if hDlg = IDD_DONENEWSYSSOFT then
  161.             dButton = DoMsgBox( STR_SYSMESSAGE, szMsgCaption$, MB_OK+MB_TASKMODAL+MB_ICONHAND)
  162.         end if
  163.     end select
  164.  
  165.     UIPop 1
  166. End Sub
  167.  
  168.  
  169.  
  170. Sub Initialise(prodName$, defInstallPath$, msgCaption$) STATIC
  171.     ret% = Ctl3dRegister(HinstFrame())
  172.     ret% = Ctl3dAutoSubClass(HinstFrame())
  173.  
  174.     szMsgCaption$ = msgCaption$
  175.  
  176.     cursor% = ShowWaitCursor()
  177.  
  178.     ClearCopyList
  179.     szWinSysPath = GetWindowsSysDir ()
  180.     szWinPath = GetWindowsDir ()
  181.     dWinDrive = asc(mid$(szWinPath, 1,1)) - asc("A")+1
  182.     szWinDrive = mid$(szWinPath, 1,1)
  183.  
  184.     szSrcSetupPath = GetSymbolValue ("STF_SRCDIR")
  185.     szSrcBinPath = mid$(szSrcSetupPath, 1, (len(szSrcSetupPath) - len(SOURCE_SETUP_SUBDIR))-1) + SOURCE_BINARIES_SUBDIR
  186.     szDestPath = szWinDrive + ":" + defInstallPath$
  187.  
  188.     SetTitle szMsgCaption$
  189.     SetBitmap CUIDLL_FILENAME, 1
  190.     SetAbout prodName$, STR_COPYRIGHT
  191.  
  192.     fPreviousMode = SetBeepingMode (1)
  193.     fPreviousMode = SetDecompMode (1)
  194.     fPreviousMode = SetSilentMode (0)
  195.  
  196.     szINFPath = GetSymbolValue("STF_SRCINFPATH")
  197.     if szINFPath = "" then
  198.         szINFPath = GetSymbolValue("STF_CWDDIR") + SETUP_INF_FILENAME
  199.     end if
  200.     ReadInfFile szINFPath
  201.  
  202.     szExpressCustomChoice = "EXPRESS"
  203.     szMinimalInstall = "OFF"
  204.     szAddPMItem = "ON"
  205.  
  206.     RestoreCursor(cursor%)
  207. End Sub
  208.  
  209.  
  210. Sub DeInitialise() STATIC
  211.     ret% = Ctl3dRegister(HinstFrame())
  212. End Sub
  213.  
  214.  
  215. Sub AskQuit() STATIC
  216. begin:
  217.     szButton = UIStartDlg(CUIDLL_FILENAME, IDD_ASKQUIT, "FQuitDlgProc", 0, "")
  218.     select case szButton
  219.     case "REACTIVATE"
  220.         goto begin
  221.     case "EXIT"
  222.         error STFQUIT
  223.     case "CONTINUE"
  224.         UIPop 1
  225.     end select
  226. End Sub
  227.  
  228. Sub BadPath() STATIC
  229. begin:
  230.     szButton = UIStartDlg(CUIDLL_FILENAME, IDD_BADPATH, "FInfo0DlgProc", 0, "")
  231.     select case szButton
  232.     case "REACTIVATE"
  233.         goto begin
  234.     end select
  235.     UIPop 1
  236. End Sub
  237.  
  238. Sub NetworkDrive() STATIC
  239. begin:
  240.     szButton = UIStartDlg(CUIDLL_FILENAME, IDD_NETWORKDRIVE, "FInfo0DlgProc", 0, "")
  241.     select case szButton
  242.     case "REACTIVATE"
  243.         goto begin
  244.     end select
  245.     UIPop 1
  246. End Sub
  247.  
  248.  
  249. Function Welcome() STATIC As Integer
  250. begin:
  251.     szButton = UIStartDlg(CUIDLL_FILENAME, IDD_WELCOME, "FInfoDlgProc", IDD_APPHELP, PROC_HELP)
  252.     select case szButton
  253.     case "REACTIVATE"
  254.         goto begin
  255.     case "CONTINUE"
  256.         UIPop 1
  257.         Welcome = NAV_FORWARD
  258.     case "EXIT"
  259.         AskQuit
  260.         goto begin
  261.     end select
  262. End Function
  263.  
  264.  
  265.  
  266.  
  267. Function TestSystem() STATIC As Integer
  268. TestWinVer:
  269.     if GetWindowsMajorVersion() < 3 or (GetWindowsMajorVersion() = 3 and GetWindowsMinorVersion() < 10) then
  270.         TestWinVerDlgLoop:
  271.             szButton = UIStartDlg (CUIDLL_FILENAME, IDD_NEED31, "FInfoDlgProc", IDD_AWFULMACHINE, PROC_HELP)
  272.             select case szButton
  273.             case "REACTIVATE"
  274.                 goto TestWinVerDlgLoop
  275.             case "BACK"
  276.                 UIPop 1
  277.                 TestSystem = NAV_BACK
  278.                 goto back
  279.             case "CONTINUE"
  280.                 UIPop 1
  281.                 goto TestVGA
  282.             case "EXIT"
  283.                 AskQuit
  284.                 goto TestWinVerDlgLoop
  285.             end select
  286.     end if
  287.  
  288. TestVGA:
  289.     if GetScreenWidth () < 640 or GetScreenHeight () < 480 then
  290.         TestVGADlgLoop:
  291.             szButton = UIStartDlg (CUIDLL_FILENAME, IDD_BADVGA, "FInfoDlgProc", IDD_AWFULMACHINE, PROC_HELP)
  292.             select case szButton
  293.             case "REACTIVATE"
  294.                 goto TestVGADlgLoop
  295.             case "BACK"
  296.                 UIPop 1
  297.                 TestSystem = NAV_BACK
  298.                 goto back
  299.             case "CONTINUE"
  300.                 UIPop 1
  301.                 goto TestMouse
  302.             case "EXIT"
  303.                 AskQuit
  304.                 goto TestVGADlgLoop
  305.             end select
  306.         end if
  307.  
  308. TestMouse:
  309.     if HasMouseInstalled() = false then
  310.     TestMouseDlgLoop:
  311.         szButton = UIStartDlg (CUIDLL_FILENAME, IDD_NOMOUSE, "FInfoDlgProc", IDD_AWFULMACHINE, PROC_HELP)
  312.         select case szButton
  313.         case "REACTIVATE"
  314.             goto TestMouseDlgLoop
  315.         case "BACK"
  316.             UIPop 1
  317.             TestSystem = NAV_BACK
  318.         case "CONTINUE"
  319.             UIPop 1
  320.             goto TestColour
  321.         case "EXIT"
  322.             AskQuit
  323.             goto TestMouseDlgLoop
  324.         end select
  325.     end if
  326.  
  327.  
  328. TestColour:
  329.     if FIs256Colour() = false then
  330.     TestColourDlgLoop:
  331.         szButton = UIStartDlg (CUIDLL_FILENAME, IDD_NOT256, "FInfoDlgProc", IDD_POORMACHINE, PROC_HELP)
  332.         select case szButton
  333.         case "REACTIVATE"
  334.             goto TestColourDlgLoop
  335.         case "BACK"
  336.             UIPop 1
  337.             TestSystem = NAV_BACK
  338.             goto back
  339.         case "CONTINUE"
  340.             UIPop 1
  341.             TestSystem = NAV_FORWARD
  342.         case "EXIT"
  343.             AskQuit
  344.             goto TestColourDlgLoop
  345.         end select
  346.     end if
  347.  
  348. back:
  349. End Function
  350.  
  351.  
  352.  
  353. '**
  354. '** Purpose:
  355. '**     Appends a file name to the end of a directory path,
  356. '**     inserting a backslash character as needed.
  357. '** Arguments:
  358. '**     szDir$  - full directory path (with optional ending "\")
  359. '**     szFile$ - filename to append to directory
  360. '** Returns:
  361. '**     Resulting fully qualified path name.
  362. '*************************************************************************
  363. FUNCTION MakePath (szDir$, szFile$) STATIC AS STRING
  364.     IF szDir$ = "" THEN
  365.         MakePath = szFile$
  366.     ELSEIF szFile$ = "" THEN
  367.         MakePath = szDir$
  368.     ELSEIF MID$(szDir$, LEN(szDir$), 1) = "\" THEN
  369.         MakePath = szDir$ + szFile$
  370.     ELSE
  371.         MakePath = szDir$ + "\" + szFile$
  372.     END IF
  373. END FUNCTION
  374.  
  375.  
  376.  
  377.  
  378. Sub HandleRestart() STATIC
  379.     ' Check there are system files to install AND check if Windows v3.1 or greater
  380.     if RestartListEmpty = 0 and GetWindowsMajorVersion >= 3 and GetWindowsMajorVersion >= 1 then
  381.         dButton = DoMsgBox(STR_EXIT, szMsgCaption$, MB_OK+MB_TASKMODAL+MB_ICONINFORMATION)
  382.         tryagain:
  383.         if ExitExecRestart = 1 then
  384.             ' Exit failed
  385.             dButton = DoMsgBox(STR_EXITFAIL, szMsgCaption$, MB_OK+MB_TASKMODAL+MB_ICONSTOP)
  386.             goto tryagain
  387.         end if
  388.     end if
  389.  
  390.     if RestartListEmpty = 1 then ' Empty, but we have to reboot
  391.         dummy% = ExitWindowsExec(MakePath(szDestPath, "_msrstrt.exe"), "")
  392.     end if
  393. End Sub
  394.  
  395.  
  396. Sub UpdateProgramManager(prodName$, appExeFile$, appPengeFile$, readmeFile$, readmeStr$, onCDROM%) STATIC
  397. Dim szReadmeTitle As String
  398. Dim szInf As String
  399.  
  400.     if onCDROM% = 1 then
  401.         CreateProgmanGroup STR_COMPANYNAME, "", cmoNone
  402.         ShowProgmanGroup   STR_COMPANYNAME, 1, cmoNone
  403.         szReadmeTitle = prodName$ + " " + readmeStr$
  404.  
  405.         szInf = MakePath( mid$(szSrcSetupPath, 1, (len(szSrcSetupPath) - len(SOURCE_SETUP_SUBDIR))-1), appExeFile$)
  406.         CreateProgmanItem STR_COMPANYNAME, prodName$, szInf, MakePath(szDestPath, "sampler.ico"), cmoOverwrite
  407.         CreateProgmanItem STR_COMPANYNAME, szReadmeTitle, "notepad.exe " + MakePath( mid$(szSrcSetupPath, 1, (len(szSrcSetupPath) - len(SOURCE_SETUP_SUBDIR))-1), readmeFile$), "", cmoOverwrite
  408.     else
  409.         if szAddPMItem = "ON" then
  410.             CreateProgmanGroup STR_COMPANYNAME, "", cmoNone
  411.             ShowProgmanGroup   STR_COMPANYNAME, 1, cmoNone
  412.             szReadmeTitle = prodName$ + " " + readmeStr$
  413.             if szMinimalInstall = "ON" then
  414.                 szInf = MakePath(szSrcBinPath, appExeFile$) + " " + MakePath(szSrcBinPath, appPengeFile$)
  415.                 CreateProgmanItem STR_COMPANYNAME, prodName$, szInf, szInf, cmoOverwrite
  416.                 CreateProgmanItem STR_COMPANYNAME, szReadmeTitle, "notepad.exe " + MakePath(szSrcBinPath, readmeFile$), "", cmoOverwrite
  417.             else
  418.                 szInf = MakePath(szDestPath, appExeFile$) + " " + MakePath(szDestPath, appPengeFile$)
  419.                 CreateProgmanItem STR_COMPANYNAME, prodName$, szInf, szInf, cmoOverwrite
  420.                 CreateProgmanItem STR_COMPANYNAME, szReadmeTitle, "notepad.exe " + MakePath(szDestPath, readmeFile$), "", cmoOverwrite
  421.             end if
  422.         end if
  423.     end if
  424.  
  425. End Sub
  426.  
  427.  
  428.  
  429. Function GetDiskSpaceNeeded( drive% ) STATIC As Long
  430. Dim dDummy As Long
  431.  
  432.     cursor% = ShowWaitCursor()
  433.  
  434.     SetSymbolValue "ExtraSpace", ""
  435.     SetSymbolValue "Needed", ""
  436.     SetSymbolValue "Cost", ""
  437.  
  438.     'Drives A - Z
  439.     for i% = 1 to 26
  440.         AddListItem "ExtraSpace", ""
  441.     next i%
  442.  
  443.     ReplaceListItem "ExtraSpace", dWinDrive, str$(MINIMUM_DISK_SPACE)    '2K for the INI file
  444.  
  445.     dDummy = GetCopyListCost("ExtraSpace","Needed","Cost")
  446.  
  447.     GetDiskSpaceNeeded = val(GetListItem ("Needed", drive))
  448.  
  449.     RemoveSymbol "Needed"
  450.     RemoveSymbol "Cost"
  451.     RemoveSymbol "ExtraSpace"
  452.  
  453.     RestoreCursor(cursor%)
  454. End Function
  455.  
  456.  
  457. Sub UpdateIndeoAVIDrivers() STATIC
  458. Dim szWMDriver As String
  459. Dim szACMDriver As String
  460.  
  461.     szWMDriver = GetIniKeyString(MakePath(szWinPath,"system.ini"), "drivers", "WaveMapper")
  462.  
  463.     if not(szWMDriver = "msacm.drv") then
  464.         fSystemUpdated = 1
  465.     end if
  466.  
  467.  
  468.     if VflatdPresent() = 0 then
  469.         CreateSysIniKeyValue szWinPath + "system.ini", "386Enh", "device", "dva.386", cmoOverwrite
  470.         fSystemUpdated = 1
  471.     end if
  472.     CreateIniKeyValue szWinPath + "system.ini", "Drivers", "VIDC.IV32", "ir32.dll", cmoOverwrite
  473.     CreateIniKeyValue szWinPath + "system.ini", "Drivers", "VIDC.IV31", "ir32.dll", cmoOverwrite
  474.     CreateIniKeyValue szWinPath + "system.ini", "Drivers", "VIDC.RT21", "ir21.dll", cmoOverwrite
  475.     CreateIniKeyValue szWinPath + "system.ini", "Drivers", "VIDC.YVU9", "iyvu9.dll", cmoOverwrite
  476.     CreateIniKeyValue szWinPath + "system.ini", "Drivers", "VIDC.CVID", "iccvid.drv", cmoOverwrite
  477.     CreateIniKeyValue szWinPath + "system.ini", "Drivers", "VIDC.MSVC", "msvidc.drv", cmoOverwrite
  478.     CreateIniKeyValue szWinPath + "system.ini", "Drivers", "VIDC.MRLE", "MSRLE.drv", cmoOverwrite
  479.     CreateIniKeyValue szWinPath + "WIN.INI", "mci extensions", "avi", "AVIVideo", cmoOverwrite
  480.     CreateIniKeyValue szWinPath + "system.ini", "mci", "AVIVideo", "mciavi.drv", cmoOverwrite
  481.     CreateIniKeyValue szWinPath + "system.ini", "Drivers", "WaveMapper", "msacm.drv", cmoOverwrite
  482.     CreateIniKeyValue szWinPath + "system.ini", "Drivers", "MSACM.msadpcm", "msadpcm.acm", cmoOverwrite
  483.     CreateIniKeyValue szWinPath + "system.ini", "Drivers", "MSACM.imaadpcm", "imaadpcm.acm", cmoOverwrite
  484.     CreateIniKeyValue szWinPath + "control.ini", "drivers.desc", "ir21.dll", "Intel Indeo(TM) Video R2.1", cmoOverwrite
  485.     CreateIniKeyValue szWinPath + "control.ini", "drivers.desc", "msacm.drv", "Microsoft Sound Mapper V2.00", cmoOverwrite
  486.     CreateIniKeyValue szWinPath + "control.ini", "drivers.desc", "msadpcm.acm", "Microsoft ADPCM Codec V2.00", cmoOverwrite
  487.     CreateIniKeyValue szWinPath + "control.ini", "drivers.desc", "imaadpcm.acm", "Microsoft IMA ADPCM Codec V2.00", cmoOverwrite
  488. End Sub
  489.  
  490. Sub UpdateWinGDrivers() STATIC
  491. Dim szDest As String
  492. Dim szDest1 As String
  493. Dim szDest2 As String
  494.  
  495.     ' only use DVA on Windows 3.x
  496.     if OnWin3x() = 1 then
  497.         AddSectionFilesToCopyList "dva", szSrcBinPath, szWinSysPath
  498.         if VflatdPresent() = 0 then
  499.             CreateSysIniKeyValue szWinPath + "system.ini", "386Enh", "device", szWinSysPath+"dva.386", cmoOverwrite
  500.             fSystemUpdated = 1
  501.         end if
  502.     end if
  503.  
  504.     szDest = GetRealWindowsSysDir
  505.     szDest1 = MakePath(szDest,"wing32.dll")
  506.     szDest2 = MakePath(szDest,"wing32.xxx")
  507.     RenameFilePlease szDest1, szDest2
  508.  
  509.     UpdateWinG32 GetRealWindowsSysDir()
  510. End Sub
  511.  
  512. FUNCTION GetRealWindowsSysDir STATIC AS STRING
  513.     szBuf$ = string$(260, 32)
  514.     cbBuf% = GetRealSystemDir(szBuf$, 260)
  515.     IF cbBuf% = 0 THEN
  516.         ERROR STFERR
  517.     ELSE
  518.         IF cbBuf% > 259 THEN
  519.             res% = DoMsgBox("Buffer Overflow", "MS-Setup Error", MB_ICONHAND+MB_OK)
  520.             ERROR STFERR
  521.         END IF
  522.         szBuf$ = RTRIM$(szBuf$)
  523.         IF MID$(szBuf$, 1, 1) = "\" THEN
  524.             szBuf$ = MID$(CURDIR$, 1, 2) + szBuf$
  525.         ELSEIF MID$(szBuf$, 2, 1) <> ":" THEN
  526.             szBuf$ = MID$(CURDIR$, 1, 3) + szBuf$
  527.         END IF
  528.         IF MID$(szBuf$, LEN(szBuf$), 1) <> "\" THEN
  529.             szBuf$ = szBuf$ + "\"
  530.         END IF
  531.         GetRealWindowsSysDir = szBuf$
  532.     END IF
  533.  
  534.     szBuf$ = ""
  535. END FUNCTION
  536.  
  537. SUB UpdateWinG32 (szOrig$) STATIC
  538.     '
  539.     ' Here we check the version ourselves of wing32.dll, since
  540.     ' we can't get version checking for Win32 apps from Win16
  541.     '
  542.     FileNew$ = MakePath(szOrig$, "wing32.dll")
  543.     FileOrig$ = MakePath(szOrig$, "wing32.xxx")
  544.     IF IsWin32FileNewer( FileOrig$, FileNew$ ) THEN
  545.     RemoveFile FileOrig$, cmoForce
  546.     ELSE
  547.         RemoveFile FileNew$, cmoForce       ' get rid of new file
  548.     RenameFilePlease FileOrig$,FileNew$ ' put back old file
  549.     END IF
  550. END SUB
  551.  
  552.  
  553.  
  554. Sub UpdateADPCMDrivers() STATIC
  555. Dim szWMDriver As String
  556. Dim szACMDriver As String
  557. Dim fUpdate As Integer
  558.  
  559.     ' Check WaveMapper driver
  560.     szWMDriver = GetIniKeyString(MakePath(szWinPath,"system.ini"), "drivers", "WaveMapper")
  561.     szACMDriver = GetIniKeyString (MakePath(szWinPath, "system.ini"), "MSACM", "Install")
  562.  
  563.     if not(szWMDriver = "msacm.drv") then
  564.     ' Isn't installed so...
  565.     loop1:
  566.         szButton = UIStartDlg(CUIDLL_FILENAME, IDD_URKADPCM, "FInfoDlgProc", IDD_ADPCMHELP, PROC_HELP)
  567.         select case szButton
  568.         case "REACTIVATE"
  569.             goto loop1
  570.         case "EXIT"
  571.             AskQuit
  572.             goto loop1
  573.         case "CONTINUE"     ' YES
  574.             UIPop 1
  575.             fUpdate = true
  576.         case "CANCEL"       ' NO
  577.             UIPop 1
  578.             fUpdate = false
  579.         case "BACK"
  580.             UIPop 1
  581.             ' return back flag
  582.         end select
  583.  
  584.         if fUpdate = true then
  585.             CreateIniKeyValue szWinPath + "system.ini", "drivers", "WaveMapper", "msacm.drv", cmoOverwrite
  586.             CreateIniKeyValue szWinPath + "system.ini", "MSACM", "Install", "msadpcm.acm", cmoOverwrite
  587.             CreateIniKeyValue szWinPath + "control.ini", "drivers.desc", "msacm.drv","MS Audio Compression Manager", cmoOverwrite
  588.             CreateIniKeyValue szWinPath + "control.ini", "Userinstallable.drivers", "WaveMapper", "msacm.drv", cmoOverwrite
  589.             CreateIniKeyValue szWinPath + "control.ini", "related.desc", "WaveMapper", "", cmoOverwrite
  590.             fSystemUpdated = 1
  591.         else
  592.         noSysSoftware:
  593.             ' No install warning
  594.             szButton = UIStartDlg(CUIDLL_FILENAME, IDD_WARNNOSYSSOFT, "FInfoDlgProc", 0, "")
  595.             select case szButton
  596.             case "REACTIVATE"
  597.                 goto noSysSoftware
  598.             case "EXIT"
  599.                 AskQuit
  600.                 goto noSysSoftware
  601.             case "CONTINUE"
  602.                 UIPop 1
  603.             case "BACK"
  604.                 UIPop 1
  605.                 goto loop1
  606.             end select
  607.         end if
  608.  
  609.     end if
  610.  
  611. End Sub
  612.  
  613.  
  614.