home *** CD-ROM | disk | FTP | other *** search
/ Tietosanakirja Tiede / DKMMSCIE.ISO / dksetup / dkgen.inc < prev    next >
Text File  |  1995-10-19  |  29KB  |  802 lines

  1. '^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  2. '
  3. '   DKGEN.INC
  4. '
  5. '^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  6. '08/08/95 test for Norton Anti Virus
  7. '03/08/95 const for uninstall and min register added
  8. '07/07/95 Correct so unregisters use of ctl3d
  9. '01/06/95 No choice about adding icons to progman
  10. '?/05/95  If bundle with sampler need to test for cirrus driver - put into mst file
  11. '12/03/95 Alternative function added, readme icon has shortened name
  12.  
  13. '$INCLUDE 'setupapi.inc'
  14. '$INCLUDE 'msdetect.inc'
  15. '$INCLUDE 'dklang.inc'
  16.  
  17. CONST SOURCE_BINARIES_SUBDIR = "DKCODE"
  18. CONST SOURCE_SETUP_SUBDIR = "DKSETUP"
  19. CONST SETUP_INF_FILENAME = "SETUP.INF"
  20. CONST CUIDLL_FILENAME = "mscuistf.dll"
  21. CONST SETUP_INI_BINARIES_SECTION_NAME = "BIN"
  22. CONST SETUP_INI_SH_BINARIES_SECTION_NAME = "BIN Shared"
  23. CONST SETUP_INI_WING_BINARIES_NAME = "WinG Runtime"
  24. CONST SETUP_INI_WING32_BINARIES_NAME = "WinG32"
  25. CONST SETUP_INI_ACM_SECTION_NAME = "ACM Drivers"
  26. CONST SETUP_INI_FONTS_SECTION_NAME = "Fonts"
  27.  
  28. 'unin, min register
  29. CONST UNINSTALL_EXE_FILE = "UNINSTAL.exe"
  30. CONST DKREG_INI_DIR = "\MMAPP"
  31. CONST DKREG_INI_PATH = "\MMAPP\MMAPP.ini"
  32. CONST WIN_INI_ENTRY = "path"
  33.  
  34. CONST PRODUCT_INI_DIR_SECTION_NAME = "Directory"
  35. CONST PRODUCT_INI_DIR_ENTRY_NAME = "Data"
  36.  
  37. CONST MINIMUM_DISK_SPACE = 2048 ' For Minimum install
  38.  
  39. ' Procs
  40. CONST PROC_HELP = "FHelpDlgProc"
  41.  
  42. DECLARE FUNCTION ExitWindowsExec LIB "USER.EXE" (szEXE$, szParams$) AS INTEGER
  43.  
  44. DECLARE FUNCTION Ctl3dRegister LIB "CTL3D.DLL" (hInst%) AS INTEGER
  45. DECLARE FUNCTION Ctl3dUnregister LIB "CTL3D.DLL" (hInst%) AS INTEGER
  46. DECLARE FUNCTION Ctl3dAutoSubClass LIB "CTL3D.DLL" (hInst%) AS INTEGER
  47.  
  48. DECLARE FUNCTION OnWin3x LIB "setuphlp.DLL" AS INTEGER
  49. DECLARE FUNCTION VflatdPresent LIB "setuphlp.DLL" AS INTEGER
  50. DECLARE FUNCTION GetRealSystemDir LIB "setuphlp.DLL" (szDir$,cbBuf%) AS INTEGER
  51. DECLARE FUNCTION RestartWindows LIB "setuphlp.DLL" AS INTEGER
  52. DECLARE FUNCTION IsWin32FileNewer LIB "setuphlp.DLL" (szOrig$,szNew$) AS INTEGER
  53. DECLARE SUB RenameFilePlease LIB "setuphlp.DLL" (szOrig$,szNew$)
  54.  
  55. DECLARE FUNCTION FIsVGA LIB "mscuistf.dll" AS INTEGER
  56. DECLARE FUNCTION FIs256Colour LIB "mscuistf.dll" AS INTEGER
  57. DECLARE FUNCTION Welcome() AS INTEGER
  58. DECLARE FUNCTION TestSystem() AS INTEGER
  59. DECLARE FUNCTION GetDiskSpaceNeeded(drive%) AS LONG
  60. DECLARE SUB Initialise(prodName$, defInstallPath$, msgCaption$)
  61. DECLARE SUB DeInitialise()
  62. DECLARE SUB AskQuit()
  63. DECLARE SUB BadPath()
  64. DECLARE SUB NetworkDrive()
  65. DECLARE SUB UpdateIndeoAVIDrivers()
  66. DECLARE SUB UpdateWinGDrivers()
  67. DECLARE SUB UpdateADPCMDrivers()
  68. 'DECLARE SUB UpdateProgramManager(prodName$, appExeFile$, appPengeFile$, readmeFile$, readmeStr$, onCDROM%)
  69. 'DECLARE SUB UpdateProgramManagerAlt(prodName$, readmeName$, appExeFile$, appPengeFile$, readmeFile$, readmeStr$, onCDROM%)
  70. DECLARE FUNCTION MakePath (szDir$, szFile$) AS STRING
  71. DECLARE FUNCTION GetRealWindowsSysDir AS STRING
  72. DECLARE SUB UpdateWinG32 (szOrig$)
  73. DECLARE SUB HandleRestart()
  74. DECLARE SUB InitCommonInstall()
  75. DECLARE SUB EndCommonInstall(appReadmeFile$, inRoot%, szEditorExe$)
  76. DECLARE FUNCTION LicenseAgreement() AS INTEGER
  77. DECLARE FUNCTION InstallSame() AS INTEGER
  78. DECLARE FUNCTION InstallNewer() AS INTEGER
  79. DECLARE FUNCTION InstallOlder() AS INTEGER
  80.  
  81. ' Error messages
  82. CONST ERR_OK = 100
  83. CONST ERR_EXITFAIL = 101
  84. CONST ERR_WINVERFAIL = 102
  85. CONST ERR_NODISKSPACE = 103
  86.  
  87. ' Navigation messages
  88. CONST NAV_FORWARD = 0
  89. CONST NAV_BACK = 1
  90. CONST NAV_EXIT = 2
  91. CONST NAV_RUN = 3
  92.  
  93.  
  94. ' Bitmap ID
  95. CONST LOGO = 1
  96.  
  97. 'QUIT ASKQUIT
  98. 'ABORT EXITFAILURE
  99. 'BADEXIT EXITQUIT
  100. 'SUCCES EXITSUCCESS
  101. 'WELHELP APPHELP
  102. 'DONEVIDEO DONENEWSYSSOFT
  103. 'DONENOVIDEO DONENOSYSSOFT
  104. 'ADDSYSTEMSOFTWARE NEWSYSTEMSOFTWARE
  105. 'WRONGADPCM NEWADPCM
  106. 'NOSYSSOFTWARE WARNNOSYSSOFT
  107.  
  108. ' Dialog ID's
  109. CONST IDD_WELCOME       = 100
  110. CONST IDD_CUSTOMHELP    = 106
  111. CONST IDD_SPEED         = 111
  112. CONST IDD_ASKQUIT       = 200
  113. CONST IDD_DESTPATH      = 300
  114. CONST IDD_EXITFAILURE   = 400
  115. CONST IDD_EXITQUIT      = 600
  116. CONST IDD_EXITSUCCESS   = 700
  117. CONST IDD_APPHELP       = 900
  118. CONST IDD_DONENEWSYSSOFT    = 1100
  119. CONST IDD_DONENOSYSSOFT     = 1800
  120. CONST IDD_NEWSYSTEMSOFTWARE = 2300
  121. CONST IDD_NEWADPCM      = 2600
  122. CONST IDD_WARNNOSYSSOFT = 3100
  123. CONST IDD_MAILMAN       = 1500
  124. CONST IDD_CUSTOM        = 6200
  125. CONST IDD_BADPATH       = 6400
  126. CONST IDD_NEED31        = 6401
  127. CONST IDD_NOMOUSE       = 6402
  128. CONST IDD_BADVGA        = 6403
  129. CONST IDD_NOT256        = 6404
  130. CONST IDD_POORMACHINE   = 6405
  131. CONST IDD_AWFULMACHINE  = 6406
  132. CONST IDD_PATHHELP      = 6407
  133. CONST IDD_WHIZZHELP     = 6408
  134. CONST IDD_URKADPCM      = 6409
  135. CONST IDD_ADPCMHELP     = 6410
  136. CONST IDD_NODISKSPACE   = 6411
  137. CONST IDD_NETWORKDRIVE  = 6412
  138. CONST IDD_LICENSE       = 6420
  139. CONST IDD_INSTALLSAME   = 6430
  140. CONST IDD_INSTALLNEWER  = 6440
  141. CONST IDD_INSTALLOLDER  = 6450
  142.  
  143.  
  144. GLOBAL szWinPath As String
  145. GLOBAL szWinSysPath As String
  146. GLOBAL szWinDrive As String
  147. GLOBAL szSrcSetupPath As String
  148. GLOBAL szSrcBinPath As String
  149. GLOBAL szDestPath As String
  150. GLOBAL szOldDestPath As String
  151. GLOBAL szPengePath As String
  152. GLOBAL szINFPath As String
  153. GLOBAL szAppINIPath As String
  154. GLOBAL szMsgCaption As String
  155. GLOBAL szButton As String
  156. GLOBAL szMinimalInstall As String
  157. GLOBAL szAddPMItem As String
  158. GLOBAL szExpressCustomChoice As String
  159. GLOBAL szMMappPath As String
  160. GLOBAL szInstExePath As String
  161. GLOBAL szInstExeDate As String
  162. GLOBAL szCdExePath As String
  163. GLOBAL szCdExeDate As String
  164.  
  165. GLOBAL fPreviousMode As Integer
  166. GLOBAL fWillNotFit As Integer
  167. GLOBAL fSystemUpdated As Integer
  168. GLOBAL hDlg As Integer
  169. GLOBAL dButton As Integer
  170. GLOBAL dWinDrive As Integer
  171. GLOBAL dDestDrive As Integer
  172. GLOBAL dCursor As Integer
  173.  
  174.  
  175.  
  176. '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
  177. Sub InitCommonInstall() STATIC
  178.     AddToBillboardList CUIDLL_FILENAME, IDD_MAILMAN, "MailmanDlgProc", 2500
  179.     SetCopyGaugePosition -1, 150
  180. End Sub
  181.  
  182.  
  183. ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
  184. Sub EndCommonInstall(appReadmeFile$, inRoot%, szEditorExe$) STATIC
  185.     if RestartListEmpty = 0 or fSystemUpdated = 1 then
  186.         hDlg = IDD_DONENEWSYSSOFT
  187.     else
  188.         hDlg = IDD_DONENOSYSSOFT
  189.     end if
  190.  
  191. QuitLoop:
  192.     szButton = UIStartDlg(CUIDLL_FILENAME, hDlg, "FInfoDlgProc", 0, "")
  193.     select case szButton
  194.     case "REACTIVATE"
  195.         goto QuitLoop
  196.     case "CONTINUE"     'Read me
  197.         if inRoot% = 1 then
  198.             szReadMe$ = MakePath( mid$(szSrcSetupPath, 1, (len(szSrcSetupPath) - len(SOURCE_SETUP_SUBDIR))-1), appReadmeFile$)
  199.         else
  200.             szReadMe$ = MakePath(szSrcBinPath, appReadmeFile$)
  201.         end if
  202.         if szEditorExe$ = "write.exe " then
  203.             run szEditorExe$ + szReadMe$, nowait
  204.         else
  205.             run szEditorExe$ + szReadMe$
  206.         end if
  207.         goto QuitLoop
  208.     case "BACK"     'Restart Windows
  209.         HandleRestart
  210.     case "EXIT"         'Return to Windows
  211.         if hDlg = IDD_DONENEWSYSSOFT then
  212.             dButton = DoMsgBox( STR_SYSMESSAGE, szMsgCaption$, MB_OK+MB_TASKMODAL+MB_ICONHAND)
  213.         end if
  214.     end select
  215.  
  216.     UIPop 1
  217. End Sub
  218.  
  219.  
  220.  
  221. '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
  222. Sub Initialise(prodName$, defInstallPath$, msgCaption$) STATIC
  223.     ret% = Ctl3dRegister(HinstFrame())
  224.     ret% = Ctl3dAutoSubClass(HinstFrame())
  225.  
  226.     szMsgCaption$ = msgCaption$
  227.  
  228.     cursor% = ShowWaitCursor()
  229.  
  230.     ClearCopyList
  231.     szWinSysPath = ucase$(GetWindowsSysDir ())
  232.     szWinPath = ucase$(GetWindowsDir ())
  233.     dWinDrive = asc(mid$((szWinPath), 1,1)) - asc("A")+1
  234.     szWinDrive = mid$(szWinPath, 1,1)
  235.  
  236.     szSrcSetupPath = ucase$(GetSymbolValue ("STF_SRCDIR"))
  237.     szSrcBinPath = mid$(szSrcSetupPath, 1, (len(szSrcSetupPath) - len(SOURCE_SETUP_SUBDIR))-1) + SOURCE_BINARIES_SUBDIR
  238.     szDestPath = szWinDrive + ":" + defInstallPath$
  239.  
  240.     SetTitle szMsgCaption$
  241.     SetBitmap CUIDLL_FILENAME, 1
  242.     SetAbout prodName$, STR_COPYRIGHT
  243.  
  244.     fPreviousMode = SetBeepingMode (1)
  245.     fPreviousMode = SetDecompMode (1)
  246.     fPreviousMode = SetSilentMode (0)
  247.  
  248.     szINFPath = ucase$(GetSymbolValue("STF_SRCINFPATH"))
  249.     if szINFPath = "" then
  250.         szINFPath = ucase$(GetSymbolValue("STF_CWDDIR")) + SETUP_INF_FILENAME
  251.     end if
  252.     ReadInfFile szINFPath
  253.  
  254.     szExpressCustomChoice = "EXPRESS"
  255.     szMinimalInstall = "OFF"
  256. '    szAddPMItem = "ON"
  257.  
  258.     fSystemUpdated = 0
  259.  
  260.     RestoreCursor(cursor%)
  261. End Sub
  262.  
  263.  
  264.  
  265. '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
  266. Sub DeInitialise() STATIC
  267.     ret% = Ctl3dUnregister(HinstFrame())
  268. End Sub
  269.  
  270.  
  271. '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
  272. Sub AskQuit() STATIC
  273. begin:
  274.     szButton = UIStartDlg(CUIDLL_FILENAME, IDD_ASKQUIT, "FQuitDlgProc", 0, "")
  275.     select case szButton
  276.     case "REACTIVATE"
  277.         goto begin
  278.     case "EXIT"
  279.         error STFQUIT
  280.     case "CONTINUE"
  281.         UIPop 1
  282.     end select
  283. End Sub
  284.  
  285.  
  286. '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
  287. Sub BadPath() STATIC
  288. begin:
  289.     szButton = UIStartDlg(CUIDLL_FILENAME, IDD_BADPATH, "FInfo0DlgProc", 0, "")
  290.     select case szButton
  291.     case "REACTIVATE"
  292.         goto begin
  293.     end select
  294.     UIPop 1
  295. End Sub
  296.  
  297.  
  298.  
  299. ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
  300. Sub NetworkDrive() STATIC
  301. begin:
  302.     szButton = UIStartDlg(CUIDLL_FILENAME, IDD_NETWORKDRIVE, "FInfo0DlgProc", 0, "")
  303.     select case szButton
  304.     case "REACTIVATE"
  305.         goto begin
  306.     end select
  307.     UIPop 1
  308. End Sub
  309.  
  310. ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
  311. Function InstallSame() STATIC As Integer
  312. begin:
  313.     szButton = UIStartDlg(CUIDLL_FILENAME, IDD_INSTALLSAME, "FInfoDlgProc", 0, "" )
  314.  
  315.     select case szButton
  316.     case "CONTINUE"
  317.         UIPop 1
  318.         InstallSame = NAV_FORWARD
  319.     case "BACK"
  320.         InstallSame = NAV_BACK
  321.     case "EXIT"
  322.         InstallSame = NAV_EXIT
  323.     end select
  324. End Function
  325.  
  326. ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
  327. Function InstallNewer() STATIC As Integer
  328. begin:
  329.     szButton = UIStartDlg(CUIDLL_FILENAME, IDD_INSTALLNEWER, "FInfoDlgProc", 0, "" )
  330.  
  331.     select case szButton
  332.     case "CONTINUE"
  333.         UIPop 1
  334.         InstallNewer = NAV_FORWARD
  335.     case "BACK"
  336.         InstallNewer = NAV_BACK
  337.     case "EXIT"
  338.         InstallNewer = NAV_EXIT
  339.     end select
  340. End Function
  341.  
  342. ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
  343. Function InstallOlder() STATIC As Integer
  344. begin:
  345.     szButton = UIStartDlg(CUIDLL_FILENAME, IDD_INSTALLOLDER, "FInfoDlgProc", 0, "" )
  346.  
  347.     select case szButton
  348.     case "CONTINUE"
  349.         UIPop 1
  350.         InstallOlder = NAV_FORWARD
  351.     case "BACK"
  352.         InstallOlder = NAV_BACK
  353.     case "EXIT"
  354.         InstallOlder = NAV_EXIT
  355.     end select
  356. End Function
  357.  
  358. ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
  359. Function LicenseAgreement() STATIC As Integer
  360. begin:
  361.     szButton = UIStartDlg( CUIDLL_FILENAME, IDD_LICENSE, "FInfoDlgProc", 0, "" )
  362.     select case szButton
  363.     case "CONTINUE"
  364.         UIPop 1
  365.         LicenseAgreement = NAV_FORWARD
  366.     case "EXIT"
  367.         LicenseAgreement = NAV_EXIT
  368.     end select
  369. End Function
  370.  
  371. ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
  372. Function Welcome() STATIC As Integer
  373. begin:
  374.     szButton = UIStartDlg(CUIDLL_FILENAME, IDD_WELCOME, "FInfoDlgProc", IDD_APPHELP, PROC_HELP)
  375.     select case szButton
  376.     case "REACTIVATE"
  377.         goto begin
  378.     case "CONTINUE"
  379.         UIPop 1
  380.         Welcome = NAV_FORWARD
  381.     case "EXIT"
  382.         AskQuit
  383.         goto begin
  384.     end select
  385. End Function
  386.  
  387.  
  388.  
  389. ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
  390. Function TestSystem() STATIC As Integer
  391.  
  392. TestNortonAntiVirus:
  393.     szWinString$ = GetIniKeyString( "win.ini", "windows", "load")
  394.     ret% = instr( szWinString,"NAV\navtsrw.exe" )
  395.     if ret% <> 0  then
  396.         dButton = DoMsgBox(STR_NAV, szMsgCaption$, MB_OK)
  397.     endif
  398.  
  399. TestWinVer:
  400.     if GetWindowsMajorVersion() < 3 or (GetWindowsMajorVersion() = 3 and GetWindowsMinorVersion() < 10) then
  401.         TestWinVerDlgLoop:
  402.             szButton = UIStartDlg (CUIDLL_FILENAME, IDD_NEED31, "FInfoDlgProc", IDD_AWFULMACHINE, PROC_HELP)
  403.             select case szButton
  404.             case "REACTIVATE"
  405.                 goto TestWinVerDlgLoop
  406.             case "BACK"
  407.                 UIPop 1
  408.                 TestSystem = NAV_BACK
  409.                 goto back
  410.             case "CONTINUE"
  411.                 UIPop 1
  412.                 goto TestVGA
  413.             case "EXIT"
  414.                 AskQuit
  415.                 goto TestWinVerDlgLoop
  416.             end select
  417.     end if
  418.  
  419. TestVGA:
  420.     if GetScreenWidth () < 640 or GetScreenHeight () < 480 then
  421.         TestVGADlgLoop:
  422.             szButton = UIStartDlg (CUIDLL_FILENAME, IDD_BADVGA, "FInfoDlgProc", IDD_AWFULMACHINE, PROC_HELP)
  423.             select case szButton
  424.             case "REACTIVATE"
  425.                 goto TestVGADlgLoop
  426.             case "BACK"
  427.                 UIPop 1
  428.                 TestSystem = NAV_BACK
  429.                 goto back
  430.             case "CONTINUE"
  431.                 UIPop 1
  432.                 goto TestMouse
  433.             case "EXIT"
  434.                 AskQuit
  435.                 goto TestVGADlgLoop
  436.             end select
  437.         end if
  438.  
  439. TestMouse:
  440.     if HasMouseInstalled() = false then
  441.     TestMouseDlgLoop:
  442.         szButton = UIStartDlg (CUIDLL_FILENAME, IDD_NOMOUSE, "FInfoDlgProc", IDD_AWFULMACHINE, PROC_HELP)
  443.         select case szButton
  444.         case "REACTIVATE"
  445.             goto TestMouseDlgLoop
  446.         case "BACK"
  447.             UIPop 1
  448.             TestSystem = NAV_BACK
  449.         case "CONTINUE"
  450.             UIPop 1
  451.             goto TestColour
  452.         case "EXIT"
  453.             AskQuit
  454.             goto TestMouseDlgLoop
  455.         end select
  456.     end if
  457.  
  458. TestColour:
  459.     if FIs256Colour() = false then
  460.     TestColourDlgLoop:
  461.         szButton = UIStartDlg (CUIDLL_FILENAME, IDD_NOT256, "FInfoDlgProc", IDD_POORMACHINE, PROC_HELP)
  462.         select case szButton
  463.         case "REACTIVATE"
  464.             goto TestColourDlgLoop
  465.         case "BACK"
  466.             UIPop 1
  467.             TestSystem = NAV_BACK
  468.             goto back
  469.         case "CONTINUE"
  470.             UIPop 1
  471.             TestSystem = NAV_FORWARD
  472.         case "EXIT"
  473.             AskQuit
  474.             goto TestColourDlgLoop
  475.         end select
  476.     end if
  477.  
  478. back:
  479. End Function
  480.  
  481.  
  482. ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
  483. '**
  484. '** Purpose:
  485. '**     Appends a file name to the end of a directory path,
  486. '**     inserting a backslash character as needed.
  487. '** Arguments:
  488. '**     szDir$  - full directory path (with optional ending "\")
  489. '**     szFile$ - filename to append to directory
  490. '** Returns:
  491. '**     Resulting fully qualified path name.
  492. '*************************************************************************
  493. FUNCTION MakePath (szDir$, szFile$) STATIC AS STRING
  494.     IF szDir$ = "" THEN
  495.         MakePath = szFile$
  496.     ELSEIF szFile$ = "" THEN
  497.         MakePath = szDir$
  498.     ELSEIF MID$(szDir$, LEN(szDir$), 1) = "\" THEN
  499.         MakePath = szDir$ + szFile$
  500.     ELSE
  501.         MakePath = szDir$ + "\" + szFile$
  502.     END IF
  503. END FUNCTION
  504.  
  505.  
  506.  
  507. '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
  508. Sub HandleRestart() STATIC
  509.     ' Check there are system files to install AND check if Windows v3.1 or greater
  510.     if RestartListEmpty = 0 and GetWindowsMajorVersion >= 3 and GetWindowsMajorVersion >= 1 then
  511.         dButton = DoMsgBox(STR_EXIT, szMsgCaption$, MB_OK+MB_TASKMODAL+MB_ICONINFORMATION)
  512.         tryagain:
  513.         if ExitExecRestart = 1 then
  514.             ' Exit failed
  515.             dButton = DoMsgBox(STR_EXITFAIL, szMsgCaption$, MB_OK+MB_TASKMODAL+MB_ICONSTOP)
  516.             goto tryagain
  517.         end if
  518.     end if
  519.  
  520.     if RestartListEmpty = 1 then ' Empty, but we have to reboot
  521.         dummy% = ExitWindowsExec(MakePath(szDestPath, "_msrstrt.exe"), "")
  522.     end if
  523. End Sub
  524.  
  525.  
  526.  
  527. ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
  528. 'Sub UpdateProgramManager(prodName$, appExeFile$, appPengeFile$, readmeFile$, readmeStr$, onCDROM%) STATIC
  529. 'Dim szReadmeTitle As String
  530. 'Dim szInf As String
  531. '
  532. '    if onCDROM% = 1 then    'sampler
  533. '        CreateProgmanGroup STR_COMPANYNAME, "", cmoNone
  534. '        ShowProgmanGroup   STR_COMPANYNAME, 1, cmoNone
  535. '        szReadmeTitle = prodName$ + " " + readmeStr$
  536. '
  537. '        szInf = MakePath( mid$(szSrcSetupPath, 1, (len(szSrcSetupPath) - len(SOURCE_SETUP_SUBDIR))-1), appExeFile$)
  538. '        CreateProgmanItem STR_COMPANYNAME, prodName$, szInf, MakePath(szDestPath, "sampler.ico"), cmoOverwrite
  539. ''        CreateProgmanItem STR_COMPANYNAME, szReadmeTitle, "notepad.exe " + MakePath( mid$(szSrcSetupPath, 1, (len(szSrcSetupPath) - len(SOURCE_SETUP_SUBDIR))-1), readmeFile$), "", cmoOverwrite
  540. '    else
  541. '        if szAddPMItem = "ON" then
  542. '            CreateProgmanGroup STR_COMPANYNAME, "", cmoNone
  543. '            ShowProgmanGroup   STR_COMPANYNAME, 1, cmoNone
  544. '            szReadmeTitle = prodName$ + " " + readmeStr$
  545. '            if szMinimalInstall = "ON" then
  546. '                szInf = MakePath(szSrcBinPath, appExeFile$) + " " + MakePath(szSrcBinPath, appPengeFile$)
  547. '                CreateProgmanItem STR_COMPANYNAME, prodName$, szInf, szInf, cmoOverwrite
  548. '                CreateProgmanItem STR_COMPANYNAME, szReadmeTitle, "notepad.exe " + MakePath(szSrcBinPath, readmeFile$), "", cmoOverwrite
  549. '            else
  550. '                szInf = MakePath(szDestPath, appExeFile$) + " " + MakePath(szDestPath, appPengeFile$)
  551. '                CreateProgmanItem STR_COMPANYNAME, prodName$, szInf, szInf, cmoOverwrite
  552. '                CreateProgmanItem STR_COMPANYNAME, szReadmeTitle, "notepad.exe " + MakePath(szDestPath, readmeFile$), "", cmoOverwrite
  553. '            end if
  554. '        end if
  555. '    end if
  556. '
  557. 'End Sub
  558.  
  559.  
  560. ''''''''''''''''''''''''''''''''''''''''''''
  561.  
  562. '' Alternative function for french stowaway
  563. '' Readme icon has shortened name
  564. 'Sub UpdateProgramManagerAlt(prodName$, readmeName$, appExeFile$, appPengeFile$, readmeFile$, readmeStr$, onCDROM%) STATIC
  565. 'Dim szReadmeTitle As String
  566. 'Dim szInf As String
  567. '
  568. '    if onCDROM% = 1 then    'sampler
  569. '        CreateProgmanGroup STR_COMPANYNAME, "", cmoNone
  570. '        ShowProgmanGroup   STR_COMPANYNAME, 1, cmoNone
  571. '        szReadmeTitle = readmeName$ + " " + readmeStr$
  572. '
  573. '        szInf = MakePath( mid$(szSrcSetupPath, 1, (len(szSrcSetupPath) - len(SOURCE_SETUP_SUBDIR))-1), appExeFile$)
  574. '        CreateProgmanItem STR_COMPANYNAME, prodName$, szInf, MakePath(szDestPath, "sampler.ico"), cmoOverwrite
  575. ''        CreateProgmanItem STR_COMPANYNAME, szReadmeTitle, "notepad.exe " + MakePath( mid$(szSrcSetupPath, 1, (len(szSrcSetupPath) - len(SOURCE_SETUP_SUBDIR))-1), readmeFile$), "", cmoOverwrite
  576. '   else
  577. '        if szAddPMItem = "ON" then
  578. '            CreateProgmanGroup STR_COMPANYNAME, "", cmoNone
  579. '            ShowProgmanGroup   STR_COMPANYNAME, 1, cmoNone
  580. '            szReadmeTitle = readmeName$ + " " + readmeStr$
  581. '            if szMinimalInstall = "ON" then
  582. '                szInf = MakePath(szSrcBinPath, appExeFile$) + " " + MakePath(szSrcBinPath, appPengeFile$)
  583. '                CreateProgmanItem STR_COMPANYNAME, prodName$, szInf, szInf, cmoOverwrite
  584. '                CreateProgmanItem STR_COMPANYNAME, szReadmeTitle, "notepad.exe " + MakePath(szSrcBinPath, readmeFile$), "", cmoOverwrite
  585. '            else
  586. '                szInf = MakePath(szDestPath, appExeFile$) + " " + MakePath(szDestPath, appPengeFile$)
  587. '                CreateProgmanItem STR_COMPANYNAME, prodName$, szInf, szInf, cmoOverwrite
  588. '                CreateProgmanItem STR_COMPANYNAME, szReadmeTitle, "notepad.exe " + MakePath(szDestPath, readmeFile$), "", cmoOverwrite
  589. '            end if
  590. '        end if
  591. '    end if
  592. '
  593. 'End Sub
  594.  
  595.  
  596.  
  597. '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
  598. Function GetDiskSpaceNeeded( drive% ) STATIC As Long
  599. Dim dDummy As Long
  600.  
  601.     cursor% = ShowWaitCursor()
  602.  
  603.     SetSymbolValue "ExtraSpace", ""
  604.     SetSymbolValue "Needed", ""
  605.     SetSymbolValue "Cost", ""
  606.  
  607.     'Drives A - Z
  608.     for i% = 1 to 26
  609.         AddListItem "ExtraSpace", ""
  610.     next i%
  611.  
  612.     ReplaceListItem "ExtraSpace", dWinDrive, str$(MINIMUM_DISK_SPACE)    '2K for the INI file
  613.  
  614.     dDummy = GetCopyListCost("ExtraSpace","Needed","Cost")
  615.  
  616.     GetDiskSpaceNeeded = val(GetListItem ("Needed", drive))
  617.  
  618.     RemoveSymbol "Needed"
  619.     RemoveSymbol "Cost"
  620.     RemoveSymbol "ExtraSpace"
  621.  
  622.     RestoreCursor(cursor%)
  623. End Function
  624.  
  625.  
  626.  
  627. ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
  628. Sub UpdateIndeoAVIDrivers() STATIC
  629. Dim szWMDriver As String
  630. Dim szACMDriver As String
  631.  
  632.     szWMDriver = GetIniKeyString(MakePath(szWinPath,"system.ini"), "drivers", "WaveMapper")
  633.  
  634.     if not(szWMDriver = "msacm.drv") then
  635.         fSystemUpdated = 1
  636.     end if
  637.  
  638.  
  639.     if VflatdPresent() = 0 then
  640.         CreateSysIniKeyValue szWinPath + "system.ini", "386Enh", "device", "dva.386", cmoOverwrite
  641.         fSystemUpdated = 1
  642.     end if
  643.     CreateIniKeyValue szWinPath + "system.ini", "Drivers", "VIDC.IV32", "ir32.dll", cmoOverwrite
  644.     CreateIniKeyValue szWinPath + "system.ini", "Drivers", "VIDC.IV31", "ir32.dll", cmoOverwrite
  645.     CreateIniKeyValue szWinPath + "system.ini", "Drivers", "VIDC.RT21", "ir21.dll", cmoOverwrite
  646.     CreateIniKeyValue szWinPath + "system.ini", "Drivers", "VIDC.YVU9", "iyvu9.dll", cmoOverwrite
  647.     CreateIniKeyValue szWinPath + "system.ini", "Drivers", "VIDC.CVID", "iccvid.drv", cmoOverwrite
  648.     CreateIniKeyValue szWinPath + "system.ini", "Drivers", "VIDC.MSVC", "msvidc.drv", cmoOverwrite
  649.     CreateIniKeyValue szWinPath + "system.ini", "Drivers", "VIDC.MRLE", "MSRLE.drv", cmoOverwrite
  650.     CreateIniKeyValue szWinPath + "WIN.INI", "mci extensions", "avi", "AVIVideo", cmoOverwrite
  651.     CreateIniKeyValue szWinPath + "system.ini", "mci", "AVIVideo", "mciavi.drv", cmoOverwrite
  652.     CreateIniKeyValue szWinPath + "system.ini", "Drivers", "WaveMapper", "msacm.drv", cmoOverwrite
  653.     CreateIniKeyValue szWinPath + "system.ini", "Drivers", "MSACM.msadpcm", "msadpcm.acm", cmoOverwrite
  654.     CreateIniKeyValue szWinPath + "system.ini", "Drivers", "MSACM.imaadpcm", "imaadpcm.acm", cmoOverwrite
  655.     CreateIniKeyValue szWinPath + "control.ini", "drivers.desc", "ir21.dll", "Intel Indeo(TM) Video R2.1", cmoOverwrite
  656.     CreateIniKeyValue szWinPath + "control.ini", "drivers.desc", "msacm.drv", "Microsoft Sound Mapper V2.00", cmoOverwrite
  657.     CreateIniKeyValue szWinPath + "control.ini", "drivers.desc", "msadpcm.acm", "Microsoft ADPCM Codec V2.00", cmoOverwrite
  658.     CreateIniKeyValue szWinPath + "control.ini", "drivers.desc", "imaadpcm.acm", "Microsoft IMA ADPCM Codec V2.00", cmoOverwrite
  659. End Sub
  660.  
  661.  
  662.  
  663. '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
  664. Sub UpdateWinGDrivers() STATIC
  665. Dim szDest As String
  666. Dim szDest1 As String
  667. Dim szDest2 As String
  668.  
  669.     ' only use DVA on Windows 3.x
  670.     if OnWin3x() = 1 then
  671.         AddSectionFilesToCopyList "dva", szSrcBinPath, szWinSysPath
  672.         if VflatdPresent() = 0 then
  673.             CreateSysIniKeyValue szWinPath + "system.ini", "386Enh", "device", szWinSysPath+"dva.386", cmoOverwrite
  674.             fSystemUpdated = 1
  675.         end if
  676.     end if
  677.  
  678.     szDest = GetRealWindowsSysDir
  679.     szDest1 = MakePath(szDest,"wing32.dll")
  680.     szDest2 = MakePath(szDest,"wing32.xxx")
  681.     RenameFilePlease szDest1, szDest2
  682.  
  683.     UpdateWinG32 GetRealWindowsSysDir()
  684. End Sub
  685.  
  686. '''''''''''''''''''''''''''''''''''''''''''''''''
  687.  
  688. FUNCTION GetRealWindowsSysDir STATIC AS STRING
  689.     szBuf$ = string$(260, 32)
  690.     cbBuf% = GetRealSystemDir(szBuf$, 260)
  691.     IF cbBuf% = 0 THEN
  692.         ERROR STFERR
  693.     ELSE
  694.         IF cbBuf% > 259 THEN
  695.             res% = DoMsgBox("Buffer Overflow", "MS-Setup Error", MB_ICONHAND+MB_OK)
  696.             ERROR STFERR
  697.         END IF
  698.         szBuf$ = RTRIM$(szBuf$)
  699.         IF MID$(szBuf$, 1, 1) = "\" THEN
  700.             szBuf$ = MID$(CURDIR$, 1, 2) + szBuf$
  701.         ELSEIF MID$(szBuf$, 2, 1) <> ":" THEN
  702.             szBuf$ = MID$(CURDIR$, 1, 3) + szBuf$
  703.         END IF
  704.         IF MID$(szBuf$, LEN(szBuf$), 1) <> "\" THEN
  705.             szBuf$ = szBuf$ + "\"
  706.         END IF
  707.         GetRealWindowsSysDir = szBuf$
  708.     END IF
  709.  
  710.     szBuf$ = ""
  711. END FUNCTION
  712.  
  713. '''''''''''''''''''''''''''''''''''''''''''''''''
  714.  
  715. SUB UpdateWinG32 (szOrig$) STATIC
  716.     '
  717.     ' Here we check the version ourselves of wing32.dll, since
  718.     ' we can't get version checking for Win32 apps from Win16
  719.     '
  720.     FileNew$ = MakePath(szOrig$, "wing32.dll")
  721.     FileOrig$ = MakePath(szOrig$, "wing32.xxx")
  722.     IF IsWin32FileNewer( FileOrig$, FileNew$ ) THEN
  723.     RemoveFile FileOrig$, cmoForce
  724.     ELSE
  725.         RemoveFile FileNew$, cmoForce       ' get rid of new file
  726.     RenameFilePlease FileOrig$,FileNew$ ' put back old file
  727.     END IF
  728. END SUB
  729.  
  730.  
  731.  
  732. '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
  733. Sub UpdateADPCMDrivers() STATIC
  734. Dim szWMDriver As String
  735. Dim szACMDriver As String
  736. Dim fUpdate As Integer
  737.  
  738.     ' Check WaveMapper driver
  739.     szWMDriver = GetIniKeyString(MakePath(szWinPath,"system.ini"), "drivers", "WaveMapper")
  740.     szACMDriver = GetIniKeyString (MakePath(szWinPath, "system.ini"), "MSACM", "Install")
  741.  
  742.     if not(szWMDriver = "msacm.drv") then
  743.     ' Isn't installed so...
  744.  
  745.         ' If NO ADPCM drivers are installed so...
  746.         if (szWMDriver = "") then
  747.             ' Display a dialog saying "there are no ADPCM drivers on your system..."
  748.             fUpdate = 1
  749.         else
  750.             ' There is a different adpcm driver in there so warn about compatibility
  751.         loop1:
  752.             szButton = UIStartDlg(CUIDLL_FILENAME, IDD_URKADPCM, "FInfoDlgProc", IDD_ADPCMHELP, PROC_HELP)
  753.             select case szButton
  754.             case "REACTIVATE"
  755.                 goto loop1
  756.             case "EXIT"
  757.                 AskQuit
  758.                 goto loop1
  759.             case "CONTINUE"     ' YES
  760.                 UIPop 1
  761.                 fUpdate = 1
  762.             case "CANCEL"       ' NO
  763.                 UIPop 1
  764.                 fUpdate = 0
  765.             case "BACK"
  766.                 UIPop 1
  767.                 ' return back flag
  768.             end select
  769.         end if
  770.  
  771.  
  772.         if fUpdate = 1 then
  773.             CreateIniKeyValue szWinPath + "system.ini", "drivers", "WaveMapper", "msacm.drv", cmoOverwrite
  774.             CreateIniKeyValue szWinPath + "system.ini", "MSACM", "Install", "msadpcm.acm", cmoOverwrite
  775.             CreateIniKeyValue szWinPath + "control.ini", "drivers.desc", "msacm.drv","MS Audio Compression Manager", cmoOverwrite
  776.             CreateIniKeyValue szWinPath + "control.ini", "Userinstallable.drivers", "WaveMapper", "msacm.drv", cmoOverwrite
  777.             CreateIniKeyValue szWinPath + "control.ini", "related.desc", "WaveMapper", "", cmoOverwrite
  778.             fSystemUpdated = 1
  779.         else
  780.         noSysSoftware:
  781.             ' No install warning
  782.             szButton = UIStartDlg(CUIDLL_FILENAME, IDD_WARNNOSYSSOFT, "FInfoDlgProc", 0, "")
  783.             select case szButton
  784.             case "REACTIVATE"
  785.                 goto noSysSoftware
  786.             case "EXIT"
  787.                 AskQuit
  788.                 goto noSysSoftware
  789.             case "CONTINUE"
  790.                 UIPop 1
  791.             case "BACK"
  792.                 UIPop 1
  793.                 goto loop1
  794.             end select
  795.         end if
  796.  
  797.     end if
  798.  
  799. End Sub
  800.  
  801.  
  802. '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''