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