home *** CD-ROM | disk | FTP | other *** search
/ Dinosaurusten Jäljillä / CDRDINO.ISO / dksetup / dkgen.inc < prev    next >
Text File  |  1996-05-09  |  33KB  |  868 lines

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