home *** CD-ROM | disk | FTP | other *** search
/ Entrepreneur's Library / Image.iso / inotec / setup.ms_ / setup.ms
Encoding:
Text File  |  1994-03-15  |  13.5 KB  |  484 lines

  1. '**************************************************************************
  2. '*                       ITSetup Demo
  3. '**************************************************************************
  4.  
  5. '*'$DEFINE DEBUG  ''Define for script development/debugging
  6.  
  7.  
  8. '$INCLUDE 'setupapi.inc'
  9. '$INCLUDE 'msdetect.inc'
  10.  
  11. '$ifdef DEBUG
  12. DECLARE SUB NickErr (szApi$, szArgs$)
  13. '$endif ''DEBUG
  14.  
  15. CONST ASKQUIT      = 200
  16. CONST DESTPATH     = 300
  17. CONST EXITFAILURE  = 400
  18. CONST EXITQUIT     = 600
  19. CONST EXITSUCCESS  = 700
  20. CONST OPTIONS      = 800
  21. CONST APPHELP      = 900
  22. CONST CUSTINST     = 6200
  23. CONST TOOBIG       = 6300
  24. CONST BADPATH      = 6400
  25.  
  26. CONST LOGO         = 1
  27.  
  28. CONST APPFILES     = 1
  29. CONST OPTFILES1    = 2
  30.  
  31.  
  32. GLOBAL DEST$        
  33. GLOBAL WINSYSDIR$   
  34. GLOBAL WINDRIVE$    
  35. GLOBAL OPT1OPT$     
  36.  
  37. GLOBAL APPNEEDS$ 
  38. GLOBAL OPT1NEEDS$
  39. GLOBAL EXTRACOSTS$ 
  40. GLOBAL BIGLIST$    
  41. GLOBAL ININUM%
  42.  
  43. GLOBAL CHECKSTATES$
  44. GLOBAL STATUSTEXT$
  45. GLOBAL DRIVETEXT$
  46. GLOBAL DRIVEPATH$
  47. GLOBAL DIRPATH$
  48. GLOBAL FILEPATH$
  49. GLOBAL EXTPATH$
  50. GLOBAL STREXP$
  51.  
  52. DECLARE SUB AddOptFilesToCopyList (ftype%)
  53. DECLARE SUB RecalcOptFiles (ftype%)
  54. DECLARE SUB RecalcPath
  55. DECLARE SUB SetDriveStatus
  56. DECLARE FUNCTION MakePath (szDir$, szFile$) AS STRING
  57.  
  58.  
  59.  
  60. INIT:
  61.     CUIDLL$ = "mscuistf.dll" 
  62.     HELPPROC$ = "FHelpDlgProc" 
  63.     
  64.     SetBitmap CUIDLL$, LOGO
  65.     SetTitle "Inotec Setup"
  66.  
  67.     szInf$ = GetSymbolValue("STF_SRCINFPATH")
  68.     IF szInf$ = "" THEN
  69.         szInf$ = GetSymbolValue("STF_CWDDIR") + "SETUP.INF"
  70.     END IF
  71.     ReadInfFile szInf$
  72.  
  73.     WINDRIVE$ = MID$(GetWindowsDir, 1, 1)
  74.     DEST$ = "C:\INOTEC"
  75.     WINSYSDIR$ = GetWindowsSysDir
  76.     
  77.     RemoveIniSection "WIN.INI", "It", cmoNone    
  78.     ININUM% = 0
  79.     
  80.     CHECKSTATES$ = "CheckItemsState"
  81.     STATUSTEXT$  = "StatusItemsText"
  82.     DRIVETEXT$   = "DriveStatusText"
  83.     FOR i% = 1 TO 3 STEP 1
  84.         AddListItem CHECKSTATES$, "ON"
  85.     NEXT i%
  86.     FOR i% = 1 TO 3 STEP 1
  87.         AddListItem STATUSTEXT$, ""
  88.     NEXT i%
  89.     FOR i% = 1 TO 7 STEP 1
  90.         AddListItem DRIVETEXT$, ""
  91.     NEXT i%
  92.     ReplaceListItem DRIVETEXT$, 7, DEST$
  93.  
  94.     APPNEEDS$   = "AppNeeds"
  95.     OPT1NEEDS$  = "Opt1Needs"
  96.     EXTRACOSTS$ = "ExtraCosts"
  97.     BIGLIST$    = "BigList"
  98.     FOR i% = 1 TO 3 STEP 1
  99.         AddListItem BIGLIST$, ""
  100.     NEXT i%
  101.     FOR i% = 1 TO 26 STEP 1
  102.         AddListItem EXTRACOSTS$, "0"
  103.     NEXT i%
  104.  
  105.     ''File Option Variables
  106.  
  107.     RecalcPath
  108.     SetDriveStatus
  109.  
  110. '$IFDEF DEBUG
  111.     i% = SetSizeCheckMode(scmOnIgnore)    '' could use scmOff; def = scmOnFatal
  112. '$ENDIF ''DEBUG
  113.  
  114.  
  115.  
  116. CUSTINST:
  117.     sz$ = UIStartDlg(CUIDLL$, CUSTINST, "FCustInstDlgProc", APPHELP, HELPPROC$)
  118.  
  119.     IF sz$ = "CONTINUE" THEN
  120.         ''Install only if it will fit.
  121.         FOR i% = 1 TO 3 STEP 1
  122.             IF GetListItem(BIGLIST$, i%) <> "" THEN
  123.                 GOSUB TOOBIG
  124.                 GOTO CUSTINST
  125.             END IF
  126.         NEXT i%
  127.         UIPop 1
  128.         GOTO INSTALL
  129.     ELSEIF sz$ = "PATH" THEN
  130.         GOTO GETPATH
  131.     ELSEIF sz$ = "REACTIVATE" THEN
  132.         RecalcPath
  133.         SetDriveStatus
  134.         GOTO CUSTINST
  135.     ELSE
  136.         GOSUB ASKQUIT
  137.         GOTO CUSTINST
  138.     END IF
  139.  
  140.  
  141.  
  142. INSTALL:
  143.     SrcDir$ = GetSymbolValue("STF_SRCDIR")
  144.     CreateDir DEST$, cmoNone 
  145.     IF ININUM% = 0 THEN
  146.         CreateDir DEST$ + "\itb", cmoNone
  147.         CreateDir DEST$ + "\itw", cmoNone
  148.         CreateDir DEST$ + "\itf", cmoNone
  149.         CreateDir DEST$ + "\itr", cmoNone
  150.     END IF
  151.     DBDIR$ = DEST$ + "\db" + LTRIM$(STR$(ININUM%))
  152.     CreateDir DBDIR$, cmoNone
  153.  
  154.     ClearCopyList
  155.  
  156.     IF ININUM% = 0 THEN
  157.         AddSectionFilesToCopyList "itb", SrcDir$, DEST$ + "\itb"
  158.         AddSectionFilesToCopyList "itw", SrcDir$, DEST$ + "\itw"
  159.         AddSectionFilesToCopyList "itf", SrcDir$, DEST$ + "\itf"
  160.         AddSectionFilesToCopyList "itr", SrcDir$, DEST$ + "\itr"
  161.         AddSectionFilesToCopyList "sys", SrcDir$, WINSYSDIR$
  162.     END IF
  163.     AddSectionFilesToCopyList "Db", SrcDir$, DBDIR$
  164.  
  165.     CopyFilesInCopyList
  166.  
  167.     IF ININUM% = 0 THEN                           
  168.         ITBDEST$ = DEST$ + "\itb\"
  169.         ITWDEST$ = DEST$ + "\itw\"
  170.         ITFDEST$ = DEST$ + "\itf\"
  171.         ITRDEST$ = DEST$ + "\itr\"
  172.     ELSE
  173.         STREXP$ = GetIniKeyString ("WIN.INI", "IT", "Itb")
  174.         SPLITPATH STREXP$, DRIVEPATH$, DIRPATH$, FILEPATH$, EXTPATH$
  175.         ITBDEST$ = DRIVEPATH$ + DIRPATH$
  176.         STREXP$ = GetIniKeyString ("WIN.INI", "IT", "Itw")
  177.         SPLITPATH STREXP$, DRIVEPATH$, DIRPATH$, FILEPATH$, EXTPATH$
  178.         ITWDEST$ = DRIVEPATH$ + DIRPATH$
  179.         STREXP$ = GetIniKeyString ("WIN.INI", "IT", "Itf")
  180.         SPLITPATH STREXP$, DRIVEPATH$, DIRPATH$, FILEPATH$, EXTPATH$
  181.         ITFDEST$ = DRIVEPATH$ + DIRPATH$
  182.         STREXP$ = GetIniKeyString ("WIN.INI", "IT", "Itr")
  183.         SPLITPATH STREXP$, DRIVEPATH$, DIRPATH$, FILEPATH$, EXTPATH$
  184.         ITRDEST$ = DRIVEPATH$ + DIRPATH$
  185.     END IF
  186.     
  187.     CreateIniKeyValue "WIN.INI", "It", "Itb", ITBDEST$ + "itb.exe", cmoNone
  188.     CreateIniKeyValue "WIN.INI", "It", "Itw", ITWDEST$ + "itw.exe", cmoNone
  189.     CreateIniKeyValue "WIN.INI", "It", "Itf", ITFDEST$ + "itf.exe", cmoNone
  190.     CreateIniKeyValue "WIN.INI", "It", "Itr", ITRDEST$ + "itr.exe", cmoNone
  191.     
  192.     INI$ = "ItbIni" + LTRIM$(STR$(ININUM%))
  193.     INIF$ = ITBDEST$ + "itb" + LTRIM$(STR$(ININUM%)) + ".ini"
  194.     CreateIniKeyValue "WIN.INI", "It", INI$, INIF$, cmoNone
  195.     IF ININUM% = 0 THEN
  196.         RemoveFile ITBDEST$ + "itb0.ini", cmoNone
  197.         RenameFile ITBDEST$ + "itb.ini", "itb0.ini"
  198.     ELSE  
  199.         CopyFile ITBDEST$ + "itb0.ini", INIF$, cmoNone, 0
  200.     END IF
  201.     RemoveIniKey INIF$, "Parameters", "dbpath", cmoNone
  202.     CreateIniKeyValue INIF$, "Parameters", "dbpath", DBDIR$, cmoNone
  203.     RemoveIniKey INIF$, "Parameters", "rptpath", cmoNone
  204.     CreateIniKeyValue INIF$, "Parameters", "rptpath", DBDIR$, cmoNone
  205.  
  206.     INI$ = "ItwIni" + LTRIM$(STR$(ININUM%))
  207.     INIF$ = ITWDEST$ + "itw" + LTRIM$(STR$(ININUM%)) + ".ini"
  208.     CreateIniKeyValue "WIN.INI", "It", INI$, INIF$, cmoNone
  209.     IF ININUM% = 0 THEN
  210.         RemoveFile ITWDEST$ + "itw0.ini", cmoNone
  211.         RenameFile ITWDEST$ + "itw.ini", "itw0.ini"
  212.     ELSE  
  213.         CopyFile ITWDEST$ + "itw0.ini", INIF$, cmoNone, 0
  214.     END IF
  215.     RemoveIniKey INIF$, "Parameters", "dbpath", cmoNone
  216.     CreateIniKeyValue INIF$, "Parameters", "dbpath", DBDIR$, cmoNone
  217.  
  218.     INI$ = "ItfIni" + LTRIM$(STR$(ININUM%))
  219.     INIF$ = ITFDEST$ + "itf" + LTRIM$(STR$(ININUM%)) + ".ini"
  220.     CreateIniKeyValue "WIN.INI", "It", INI$, INIF$, cmoNone
  221.     IF ININUM% = 0 THEN
  222.         RemoveFile ITFDEST$ + "itf0.ini", cmoNone
  223.         RenameFile ITFDEST$ + "itf.ini", "itf0.ini"
  224.     ELSE  
  225.         CopyFile ITFDEST$ + "itf0.ini", INIF$, cmoNone, 0
  226.     END IF
  227.     RemoveIniKey INIF$, "Parameters", "dbpath", cmoNone
  228.     CreateIniKeyValue INIF$, "Parameters", "dbpath", DBDIR$, cmoNone
  229.  
  230.  
  231.     INI$ = "Account" + LTRIM$(STR$(ININUM% + 1))
  232.     CreateProgmanGroup INI$, "", cmoNone
  233.     ShowProgmanGroup  INI$, 1, cmoNone                               
  234.     INIF$ = ITBDEST$ + "itb.exe -i" + LTRIM$(STR$(ININUM%))
  235.     CreateProgmanItem INI$, "Accounter", INIF$, INIF$, cmoOverwrite
  236.     INIF$ = ITWDEST$ + "itw.exe -i" + LTRIM$(STR$(ININUM%))
  237.     CreateProgmanItem INI$, "Wages", INIF$, INIF$, cmoOverwrite
  238.     INIF$ = ITFDEST$ + "itf.exe -i" + LTRIM$(STR$(ININUM%))
  239.     CreateProgmanItem INI$, "Blank", INIF$, INIF$, cmoOverwrite
  240.  
  241. QUIT:
  242.     ON ERROR GOTO ERRQUIT
  243.  
  244.     IF ERR = 0 THEN
  245.         dlg% = EXITSUCCESS
  246.     ELSEIF ERR = STFQUIT THEN
  247.         dlg% = EXITQUIT
  248.     ELSE
  249.         dlg% = EXITFAILURE
  250.     END IF
  251. QUITL1:
  252.     sz$ = UIStartDlg(CUIDLL$, dlg%, "FInfo0DlgProc", 0, "")
  253.     IF sz$ = "REACTIVATE" THEN
  254.         GOTO QUITL1
  255.     END IF
  256.     UIPop 1
  257.  
  258.     END
  259.  
  260. ERRQUIT:
  261.     i% = DoMsgBox("Setup sources were corrupted, call (095)267-6610!", "Setup Message", MB_OK+MB_TASKMODAL+MB_ICONHAND)
  262.     END
  263.  
  264.  
  265.  
  266. GETPATH:
  267.     SetSymbolValue "EditTextIn", DEST$
  268.     SetSymbolValue "EditFocus", "END"
  269. GETPATHL1:
  270.     sz$ = UIStartDlg(CUIDLL$, DESTPATH, "FEditDlgProc", APPHELP, HELPPROC$)
  271.  
  272.     IF sz$ = "CONTINUE" THEN
  273.         olddest$ = DEST$
  274.         DEST$ = GetSymbolValue("EditTextOut")
  275.  
  276.         IF IsDirWritable(DEST$) = 0 THEN
  277.             GOSUB BADPATH
  278.             GOTO GETPATHL1
  279.         END IF
  280.         UIPop 1
  281.  
  282.         IF LEN(DEST$) > 23 THEN
  283.             ReplaceListItem DRIVETEXT$, 7, MID$(DEST$, 1, 23)+"..."
  284.         ELSE
  285.             ReplaceListItem DRIVETEXT$, 7, DEST$
  286.         END IF
  287.  
  288.         IF (olddest$ <> DEST$) AND (olddest$ <> DEST$+"\") AND (olddest$+"\" <> DEST$) THEN
  289.             RecalcPath
  290.             SetDriveStatus
  291.         END IF
  292.  
  293.         olddest$ = ""
  294.         GOTO CUSTINST
  295.     ELSEIF sz$ = "REACTIVATE" THEN
  296.         RecalcPath
  297.         SetDriveStatus
  298.         GOTO GETPATHL1
  299.     ELSEIF sz$ = "EXIT" THEN
  300.         GOSUB ASKQUIT
  301.         GOTO GETPATHL1
  302.     ELSE
  303.         UIPop 1
  304.         GOTO CUSTINST
  305.     END IF
  306.  
  307.  
  308.  
  309.  
  310. TOOBIG:
  311.     sz$ = UIStartDlg(CUIDLL$, TOOBIG, "FInfo0DlgProc", 0, "")
  312.     IF sz$ = "REACTIVATE" THEN
  313.         RecalcPath
  314.         SetDriveStatus
  315.         GOTO TOOBIG
  316.     END IF
  317.     UIPop 1
  318.     RETURN
  319.  
  320.  
  321.  
  322. BADPATH:
  323.     sz$ = UIStartDlg(CUIDLL$, BADPATH, "FInfo0DlgProc", 0, "")
  324.     IF sz$ = "REACTIVATE" THEN
  325.         RecalcPath
  326.         SetDriveStatus
  327.         GOTO BADPATH
  328.     END IF
  329.     UIPop 1
  330.     RETURN
  331.  
  332.  
  333.  
  334. ASKQUIT:
  335.     sz$ = UIStartDlg(CUIDLL$, ASKQUIT, "FQuitDlgProc", 0, "")
  336.  
  337.     IF sz$ = "EXIT" THEN
  338.         UIPopAll
  339.         ERROR STFQUIT
  340.     ELSEIF sz$ = "REACTIVATE" THEN
  341.         GOTO ASKQUIT
  342.     ELSE
  343.         UIPop 1
  344.     END IF
  345.     RETURN
  346.  
  347.  
  348.  
  349. '*************************************************************************
  350. SUB AddOptFilesToCopyList (ftype%) STATIC
  351.  
  352.     SrcDir$ = GetSymbolValue("STF_SRCDIR")
  353.     IF ftype% = APPFILES THEN
  354.         IF ININUM% = 0 THEN
  355.             AddSectionFilesToCopyList "itb", SrcDir$, DEST$
  356.             AddSectionFilesToCopyList "itw", SrcDir$, DEST$
  357.             AddSectionFilesToCopyList "itf", SrcDir$, DEST$
  358.             AddSectionFilesToCopyList "itr", SrcDir$, DEST$
  359.         END IF
  360.         AddSectionFilesToCopyList "Db", SrcDir$, DEST$
  361.     ELSEIF ftype% = OPTFILES1 THEN
  362.         IF ININUM% = 0 THEN
  363.             AddSectionFilesToCopyList "sys", SrcDir$, WINSYSDIR$
  364.         END IF
  365.     END IF
  366.     SrcDir$ = ""
  367. END SUB
  368.  
  369.  
  370. '*************************************************************************
  371. SUB RecalcOptFiles (ftype%) STATIC
  372.     CursorSave% = ShowWaitCursor()
  373.     ClearCopyList
  374.     AddOptFilesToCopyList ftype%
  375.  
  376.     IF ftype% = APPFILES THEN
  377.         ListSym$ = APPNEEDS$
  378.         ''Add extra cost to Windows drive for ini/progman, etc.
  379.         ndrive% = ASC(ucase$(WINDRIVE$)) - ASC("A") + 1
  380.         ReplaceListItem EXTRACOSTS$, ndrive%, "10240"
  381.     ELSEIF ftype% = OPTFILES1 THEN
  382.         ListSym$ = OPT1NEEDS$
  383.     END IF
  384.  
  385.     StillNeed& = GetCopyListCost(EXTRACOSTS$, ListSym$, "")
  386.  
  387.     cost& = 0
  388.     FOR i% = 1 TO 26 STEP 1
  389.         cost&  = cost& + VAL(GetListItem(ListSym$, i%))
  390.     NEXT i%
  391.  
  392.     IF StillNeed& > 0 THEN
  393.         ReplaceListItem BIGLIST$, ftype%, "YES"
  394.     ELSE
  395.         ReplaceListItem BIGLIST$, ftype%, ""
  396.     END IF
  397.  
  398.       RestoreCursor CursorSave%
  399.       ListSym$ = ""
  400. END SUB
  401.  
  402.  
  403. '*************************************************************************
  404. SUB RecalcPath STATIC
  405.  
  406.     CursorSave% = ShowWaitCursor()
  407.  
  408.     RecalcOptFiles APPFILES
  409.     RecalcOptFiles OPTFILES1
  410.  
  411.     RestoreCursor CursorSave%
  412. END SUB
  413.  
  414.  
  415. '*************************************************************************
  416. SUB SetDriveStatus STATIC
  417.  
  418.     drive$ = MID$(DEST$, 1, 1)
  419.  
  420.     IF drive$ = WINDRIVE$ THEN
  421.         ndrive% = ASC(ucase$(drive$)) - ASC("A") + 1
  422.         cost& = VAL(GetListItem(APPNEEDS$, ndrive%))
  423.         cost& = cost& + VAL(GetListItem(OPT1NEEDS$, ndrive%))
  424.         free& = GetFreeSpaceForDrive(drive$)
  425.         ReplaceListItem DRIVETEXT$, 1, drive$ + ":"
  426.         ReplaceListItem DRIVETEXT$, 2, STR$(cost& / 1024) + " K"
  427.         ReplaceListItem DRIVETEXT$, 3, STR$(free& / 1024) + " K"
  428.  
  429.         ReplaceListItem DRIVETEXT$, 4, ""
  430.         ReplaceListItem DRIVETEXT$, 5, ""
  431.         ReplaceListItem DRIVETEXT$, 6, ""
  432.     ELSE
  433.         ndrive% = ASC(ucase$(drive$)) - ASC("A") + 1
  434.         cost& = VAL(GetListItem(APPNEEDS$, ndrive%))
  435.         free& = GetFreeSpaceForDrive(drive$)
  436.         ReplaceListItem DRIVETEXT$, 1, drive$ + ":"
  437.         ReplaceListItem DRIVETEXT$, 2, STR$(cost& / 1024) + " K"
  438.         ReplaceListItem DRIVETEXT$, 3, STR$(free& / 1024) + " K"
  439.  
  440.         ndrive% = ASC(ucase$(WINDRIVE$)) - ASC("A") + 1
  441.         cost& = VAL(GetListItem(OPT1NEEDS$, ndrive%))
  442.         IF cost& = 0 THEN
  443.             ReplaceListItem DRIVETEXT$, 4, ""
  444.             ReplaceListItem DRIVETEXT$, 5, ""
  445.             ReplaceListItem DRIVETEXT$, 6, ""
  446.         ELSE
  447.             free& = GetFreeSpaceForDrive(WINDRIVE$)
  448.             ReplaceListItem DRIVETEXT$, 4, WINDRIVE$ + ":"
  449.             ReplaceListItem DRIVETEXT$, 5, STR$(cost& / 1024) + " K"
  450.             ReplaceListItem DRIVETEXT$, 6, STR$(free& / 1024) + " K"
  451.         END IF
  452.     END IF
  453. END SUB
  454.  
  455.  
  456. '*************************************************************************
  457. FUNCTION MakePath (szDir$, szFile$) STATIC AS STRING
  458.     IF szDir$ = "" THEN
  459.         MakePath = szFile$
  460.     ELSEIF szFile$ = "" THEN
  461.         MakePath = szDir$
  462.     ELSEIF MID$(szDir$, LEN(szDir$), 1) = "\" THEN
  463.         MakePath = szDir$ + szFile$
  464.     ELSE
  465.         MakePath = szDir$ + "\" + szFile$
  466.     END IF
  467. END FUNCTION
  468.  
  469. '$ifdef DEBUG
  470. '**************************************************************************
  471. SUB NickErr (szApi$, szArgs$) STATIC      ''DEBUG only
  472.  
  473.     lpText$ = szApi$ + ": "
  474.     if szArgs$ <> "" then
  475.         lpText$ = lpText$ + " (" + szArgs$ + ")"
  476.     end if
  477.     lpCaption$ = "Nick Msg"
  478.     res% = DoMsgBox(lpText$, lpCaption$, MB_TASKMODAL+MB_ICONHAND+MB_OK)
  479. ''    print lpText$
  480.     lpText$ = ""
  481.     lpCaption$ = ""
  482. END SUB
  483. '$endif ''DEBUG
  484.