home *** CD-ROM | disk | FTP | other *** search
/ Computer Buyer 1995 November / SHOWCASE.ISO / disk1 / install.mst < prev    next >
Text File  |  1995-08-03  |  10KB  |  326 lines

  1. '**************************************************************************
  2. '*                       MSSetup for Updata 'Profit
  3. '*     Adapted from standard Updata Setup by J. Thomas - July 95
  4. '**************************************************************************
  5.  
  6. '$DEFINE DEBUG  ''Define for script development/debugging
  7.  
  8. '$INCLUDE 'setupapi.inc'
  9. '$INCLUDE 'msdetect.inc'
  10.  
  11. ''Dialog ID's
  12. CONST MB_OKCANCEL       = 1
  13. CONST MB_YESNO          = 4
  14. CONST MB_ICONQUESTION = 32
  15. CONST WELCOME       = 100
  16. CONST ASKQUIT       = 200
  17. CONST DESTPATH      = 300
  18. CONST EXITFAILURE   = 400
  19. CONST EXITQUIT      = 600
  20. CONST EXITSUCCESS   = 700
  21. CONST OPTIONS       = 800
  22. CONST APPHELP       = 900
  23. CONST BADPATH       = 6400
  24. CONST MODELESS      = 5000
  25. CONST CDGETNAMEORG  = 7500
  26. CONST MODELESS_1    = 10000
  27. CONST MODELESS_2    = 10001
  28. CONST MODELESS_3    = 10002
  29. CONST MODELESS_4    = 10003
  30. ''CONST MODELESS_5    = 10004
  31.  
  32. ''Bitmap ID
  33. CONST LOGO = 1
  34.  
  35. GLOBAL DEST$        ''Default destination directory.
  36. GLOBAL OPTCUR$      ''Option selection from option dialog.
  37. GLOBAL NameOut$         ''Name entered
  38. GLOBAL OrgOut$          ''Organisation entered
  39. GLOBAL nIniFlag%        ''1 if ini file is one system
  40.  
  41. DECLARE SUB Install
  42. DECLARE FUNCTION MakePath (szDir$, szFile$) AS STRING
  43. DECLARE FUNCTION CreateWindow LIB "user" (szClassName$,szWindowName$,dwStyle%,nX%,nY%,nWidth%,nHeight%,hwndParent%,hMenu%,hInst%,szPnt%) AS INTEGER
  44. DECLARE FUNCTION ShowWindow LIB "user" (hWnd%,nCmdShow%) AS INTEGER
  45. DECLARE FUNCTION SetWindowLong LIB "user" (hWnd%,nOffset%,nVal%) AS INTEGER
  46. DECLARE FUNCTION UserInput LIB "s_optns.dll" (hWnd%, szString3$ ) AS INTEGER
  47. DECLARE FUNCTION EditSystemFiles LIB "s_edsys.dll" (hWnd%) AS INTEGER
  48. DECLARE FUNCTION CheckIniEntry LIB "s_edsys.dll" (hWnd%, szString4$, szString5$) AS INTEGER
  49. DECLARE FUNCTION WerePriceFilesChosen LIB "s_edsys.dll" ( hWnd% ) AS INTEGER
  50. DECLARE FUNCTION UnZipFiles LIB "s_edsys.dll" ( hWnd%, szString6$ ) AS INTEGER
  51. DECLARE FUNCTION IsStringInString LIB "mscuistf.dll" (szString1$ , szString2$) AS INTEGER
  52. DECLARE FUNCTION ChangeDir LIB "mscuistf.dll" (szDir$) AS INTEGER
  53. DECLARE FUNCTION WinExec LIB "kernel" (lpCmdLine$, nCmdShow% ) AS INTEGER
  54. DECLARE SUB CreateBackDrop
  55. DECLARE SUB SetParameters
  56.  
  57.  
  58. INIT:
  59.     CUIDLL$ = "mscuistf.dll"           ''Custom user interface dll
  60.     HELPPROC$ = "FHelpDlgProc"          ''Help dialog procedure
  61.  
  62.     SetBitmap CUIDLL$, LOGO
  63.     SetTitle "Updata Profit v1.0 Setup"
  64.  
  65.     CreateBackDrop
  66.  
  67.     szInf$ = GetSymbolValue("STF_SRCINFPATH")
  68.     IF szInf$ = "" THEN
  69.         szInf$ = GetSymbolValue("STF_CWDDIR") + "FILES.INF"
  70.     END IF
  71.  
  72.  
  73.     DEST$ = "C:\Profit"
  74.  
  75. '$IFDEF DEBUG
  76.     i% = SetSizeCheckMode(scmOnIgnore)    '' could use scmOff; def = scmOnFatal
  77.     WinDrive$ = MID$(GetWindowsDir, 1, 1)
  78.     IF IsDriveValid(WinDrive$) = 0 THEN
  79.         i% = DoMsgBox("Windows drive ('"+WinDrive$+"') is not a valid drive.", "DEBUG", MB_TASKMODAL+MB_ICONHAND+MB_OK)
  80.         GOTO QUIT
  81.     END IF
  82. '$ENDIF ''DEBUG
  83.  
  84.  
  85. GETPATH:
  86.     SetSymbolValue "EditTextIn", DEST$
  87.     SetSymbolValue "EditFocus", "END"
  88. GETPATHL1:
  89.     sz$ = UIStartDlg(CUIDLL$, DESTPATH, "FEditDlgProc", APPHELP, HELPPROC$)
  90.     DEST$ = GetSymbolValue("EditTextOut")
  91.  
  92.     IF sz$ = "CONTINUE" THEN
  93.         IF IsDirWritable(DEST$) = 0 THEN
  94.             GOSUB BADPATH
  95.         GOTO GETPATHL1
  96.         END IF
  97.         UIPop 1
  98.     ELSEIF sz$ = "REACTIVATE" THEN
  99.             GOTO GETPATHL1
  100.     ELSE
  101.             UIPop 1
  102.             GOSUB ASKQUIT
  103.             GOTO GETPATH
  104.     END IF
  105.  
  106.  
  107.     WinDrive$ = GetWindowsDir()
  108.     WinFile$ = WinDrive$ + "Uswin.INI"
  109.     nIniFlag% = DoesFileExist (WinFile$,femExists )
  110.     if nIniFlag% = 0 Then
  111.     sz$ = UIStartDlg(CUIDLL$,CDGETNAMEORG,"FNameOrgDlgProc",APPHELP,HELPPROC$)
  112.     NameOut$=GetSymbolValue("NameOut")
  113.     OrgOut$=GetSymbolValue("OrgOut")
  114.     UIPop 1
  115.     end if
  116.  
  117.     IF sz$ = "CONTINUE" THEN
  118.  
  119.  
  120.     ReadInfFile szInf$
  121.  
  122.         Install
  123.         ClearBillboardList
  124.     ELSE
  125.         UIPop 1
  126.         GOSUB ASKQUIT
  127.         GOTO GETPATH
  128.     END IF
  129.  
  130. QUIT:
  131.  
  132.     SetSymbolValue "Path", DEST$
  133.     ON ERROR GOTO ERRQUIT
  134.  
  135.     IF ERR = 0 THEN
  136.         dlg% = EXITSUCCESS
  137.     ELSEIF ERR = STFQUIT THEN
  138.             dlg% = EXITQUIT
  139.     ELSE
  140.             dlg% = EXITFAILURE
  141.     END IF
  142. QUITL1:
  143.   ''  sz$ = UIStartDlg(CUIDLL$, dlg%, "FInfo0DlgProc", 0, "")
  144.   ''  IF sz$ = "REACTIVATE" THEN
  145.    ''     GOTO QUITL1
  146.    '' END IF
  147.     UIPop 1
  148.  
  149.     END
  150.  
  151. ERRQUIT:
  152.     i% = DoMsgBox("Setup sources were corrupted, call 0181-874-4747!", "Setup Message", MB_OK+MB_TASKMODAL+MB_ICONHAND)
  153.     END
  154.  
  155.  
  156.  
  157. BADPATH:
  158.     sz$ = UIStartDlg(CUIDLL$, BADPATH, "FInfo0DlgProc", 0, "")
  159.     IF sz$ = "REACTIVATE" THEN
  160.         GOTO BADPATH
  161.     END IF
  162.     UIPop 1
  163.     RETURN
  164.  
  165. ASKQUIT:
  166.     sz$ = UIStartDlg(CUIDLL$, ASKQUIT, "FQuitDlgProc", 0, "")
  167.  
  168.     IF sz$ = "EXIT" THEN
  169.         UIPopAll
  170.         ERROR STFQUIT
  171.     ELSEIF sz$ = "REACTIVATE" THEN
  172.             GOTO ASKQUIT
  173.     ELSE
  174.             UIPop 1
  175.     END IF
  176.     RETURN
  177.  
  178.  
  179.  
  180. SUB SetParameters STATIC
  181.  
  182.     drive$ = MID$(DEST$, 1, 1)
  183.     SizeofFreeDisk& = GetFreeSpaceForDrive(drive$)
  184.     IF SizeofFreeDisk& < 5072000 THEN
  185.     StringOne$ =  "You need at least 5MB of free space on your hard disk to install the Updata for Windows Files"
  186.     StringTwo$ =  ""
  187.     MessageString$ = StringOne$ + StringTwo$
  188.     i% = DoMsgBox( MessageString$, "WARNING", MB_TASKMODAL+MB_ICONHAND+MB_OK)
  189.     WriteToLogFile "Not enough space to install Profit files"
  190.     END IF
  191.     IF SizeofFreeDisk& > 5072000 THEN
  192.     WriteToLogFile "Enough space to install Profit files"
  193.     END IF
  194.  
  195.     WinMajorVer% = GetWindowsMajorVersion()
  196.     WinMinorVer% = GetWindowsMajorVersion()
  197.     IF WinMajorVer% = 3 THEN
  198.         IF WinMinorVer% > 0 THEN
  199.             WriteToLogFile "Windows Version 3.1 detected."
  200.         END IF
  201.     END IF
  202.     IF WinMajorVer% = 3 THEN
  203.         IF WinMinorVer% < 1 THEN
  204.             i% = DoMsgBox("This Program requires Windows 3.1 or greater.", "ERROR", MB_TASKMODAL+MB_ICONHAND+MB_OK)
  205.             WriteToLogFile "Windows 3.0 detected."
  206.         END IF
  207.     END IF
  208.  
  209.  
  210.     WinDrive$ = GetWindowsDir()
  211.  
  212.  
  213.     SourceDrive$ = MakePath(DEST$, "Uswin.INI")
  214.     WinFile$ = WinDrive$ + "Uswin.INI"
  215.  
  216.  
  217.     if nIniFlag% = 0 Then
  218.     CopyFile SourceDrive$, WinFile$, cmoNone, 0
  219.     WriteToLogFile "Uswin.INI file copied OK."
  220.     ''CreateIniKeyValue WinFile$,"LICENCE","NAME",NameOut$,cmoOverwrite
  221.     ''CreateIniKeyValue WinFile$,"LICENCE","ORG",OrgOut$,cmoOverwrite
  222.     else
  223.         WriteToLogFile "Uswin.INI file already exists."
  224.     end if
  225.  
  226.     CreateIniKeyValue WinFile$,"PATHS","UPDATA",Dest$,cmoOverwrite
  227.  
  228.     Path$ = GetEnvVariableValue ( "PATH" )
  229.     i% = IsStringInString ( DEST$, Path$ )
  230.  
  231.  
  232.     WinDrive$ = GetWindowsDir()
  233.     WinFile$ = WinDrive$ + "Uswin.INI"
  234.     i%=DoesIniKeyExist( WinFile$, "CHARTS", "Window0" )
  235.     IF i% = 1 THEN
  236.     szEntry$= GetIniKeyString( WinFile$, "CHARTS", "Window0" )
  237.     i%=CheckIniEntry(hwndFrame,szEntry$,DEST$)
  238.     IF NOT i% = 1 THEN
  239.         RemoveIniSection WinFile$, "CHARTS", cmoNone
  240.     END IF
  241.     END IF
  242.  
  243.  
  244. END SUB
  245.  
  246.  
  247.  
  248.  
  249. '**
  250. '** Purpose:
  251. '**     Builds the copy list and performs all installation operations.
  252. '** Arguments:
  253. '**     none.
  254. '** Returns:
  255. '**     none.
  256. '*************************************************************************
  257. SUB Install STATIC
  258.  
  259.     SrcDir$ = GetSymbolValue("STF_SRCDIR")
  260.     CreateDir DEST$, cmoNone
  261.  
  262.     CreateDir DEST$+"\prices", cmoNone
  263.  
  264.  
  265.     OpenLogFile MakePath(DEST$, "LOGFILE.OUT"), 0
  266.     WriteToLogFile ""
  267.     WriteToLogFile "  User chose as destination directory: '" + DEST$ + "'"
  268.     WriteToLogFile "  User chose option: '" + OPTCUR$ + "'"
  269.     WriteToLogFile ""
  270.     WriteToLogFile "May have had to create the directory: " + DEST$
  271.     WriteToLogFile ""
  272.  
  273.     AddSectionFilesToCopyList "Files", SrcDir$, DEST$
  274.     AddToBillboardList "mscuistf.dll", MODELESS_1,"Billboard_1DlgProc", 1
  275.     AddToBillboardList "mscuistf.dll", MODELESS_1,"Billboard_2DlgProc", 1
  276.     AddToBillboardList "mscuistf.dll", MODELESS_1,"Billboard_3DlgProc", 1
  277.     AddToBillboardList "mscuistf.dll", MODELESS_1,"Billboard_4DlgProc", 1
  278.     CopyFilesInCopyList
  279.  
  280.  
  281.  
  282.     SetParameters
  283.  
  284.     CreateProgmanGroup "Updata Profit", "", cmoNone
  285.     ShowProgmanGroup  "Updata Profit", 1, cmoNone
  286.     CreateProgmanItem "Updata Profit", "Updata Profit v1.0", MakePath(DEST$,"profit.exe"), "", cmoOverwrite
  287.     CreateProgmanItem "Updata Profit", "Updata Profit Readme", MakePath(DEST$,"uswin.wri"), "", cmoOverwrite
  288.  
  289.  
  290.  
  291.     CloseLogFile
  292.  
  293. END SUB
  294.  
  295.  
  296.  
  297. '**
  298. '** Purpose:
  299. '**     Appends a file name to the end of a directory path,
  300. '**     inserting a backslash character as needed.
  301. '** Arguments:
  302. '**     szDir$  - full directory path (with optional ending "\")
  303. '**     szFile$ - filename to append to directory
  304. '** Returns:
  305. '**     Resulting fully qualified path name.
  306. '*************************************************************************
  307. FUNCTION MakePath (szDir$, szFile$) STATIC AS STRING
  308.     IF szDir$ = "" THEN
  309.         MakePath = szFile$
  310.     ELSEIF szFile$ = "" THEN
  311.             MakePath = szDir$
  312.     ELSEIF MID$(szDir$, LEN(szDir$), 1) = "\" THEN
  313.                 MakePath = szDir$ + szFile$
  314.         ELSE
  315.                 MakePath = szDir$ + "\" + szFile$
  316.     END IF
  317. END FUNCTION
  318.  
  319.  
  320. SUB CreateBackDrop STATIC
  321.  
  322.     SetWin%=SetWindowLong(HwndFrame,-16,449773568)
  323.     ShowWin%=ShowWindow(hwndFrame,3)
  324.  
  325. END SUB
  326.