home *** CD-ROM | disk | FTP | other *** search
/ OTTO Shopping Interactiv…1994 - 1995 Autumn/Winter / OTTO_CD.iso / setup / ottoset.mst < prev    next >
Encoding:
Text File  |  1994-07-16  |  13.6 KB  |  452 lines

  1. '**************************************************************************
  2. '*                       Setup fuer OTTO Katalog-CD
  3. '**************************************************************************
  4.  
  5. ' DEFINE DEBUG  ''Define for script development/debugging
  6.  
  7. '$INCLUDE 'setupapi.inc'
  8. '$INCLUDE 'msdetect.inc'
  9.  
  10. Declare Function ShowWindow Lib "User" (hWnd%, nCmdShow%) As Integer
  11.  
  12. ''Dialog ID's
  13. CONST WELCOME       = 100
  14. CONST ASKQUIT       = 200
  15. CONST DESTPATH      = 300
  16. CONST EXITFAILURE   = 400
  17. CONST EXITQUIT      = 600
  18. CONST EXITSUCCESS   = 700
  19. CONST OPTIONS       = 800
  20. CONST APPHELP       = 900
  21. CONST BADPATH       = 6400
  22. CONST VFW_INSTALL   = 5000
  23. CONST ML_OTTOPLATZ    = 5001
  24. ''Bitmap ID
  25. CONST LOGO = 1
  26.  
  27. CONST APPFILES     = 1
  28. CONST PEKOS_YESNOCANCEL=3
  29. CONST PEKOS_YESNO=4
  30. CONST PEKOS_IDCANCEL=2
  31. CONST PEKOS_YES=6
  32. CONST PEKOS_NO=7
  33.  
  34.  
  35.  
  36. GLOBAL DEST$            ''Default destination directory.
  37. GLOBAL OPTCUR$          ''Option selection from option dialog.
  38. GLOBAL WINDRIVE$        ''Windows drive letter.
  39. GLOBAL VFW_INSTALLED     '' Ist Video fuer Windows schon installiert?
  40. GLOBAL OLE_INSTALLED     '' Ole 2.0 Installed
  41. GLOBAL SYS_SPACE&        '' Extra Platz, wenn ole2 bzw. vfw nicht installiert
  42. GLOBAL OTTO_SPACE&        '' Platz fⁿr Ottokatalog-Installation
  43. GLOBAL MiniInst
  44.  
  45. ''CustInst list symbol names
  46. GLOBAL APPNEEDS$    ''Option list costs per drive
  47. GLOBAL EXTRACOSTS$  ''List of extra costs to add per drive
  48. GLOBAL BIGLIST$     ''List of option files cost calc results (boolean)
  49.  
  50.  
  51. DECLARE SUB Install
  52. DECLARE FUNCTION MakePath (szDir$, szFile$) AS STRING
  53. DECLARE SUB RecalcOptFiles (ftype%)
  54. DECLARE SUB RecalcPath
  55. DECLARE SUB Check_System(szDir$)
  56.  
  57. INIT:
  58.     CUIDLL$ = "mscuistf.dll"            ''Custom user interface dll
  59.     HELPPROC$ = "FHelpDlgProc"          ''Help dialog procedure
  60.  
  61.     SetBitmap CUIDLL$, LOGO
  62.     SetTitle "OTTO CD-Katalog Setup"
  63.     SetAbout "OTTO CD-Katalog Setup","Peter K÷hnkow, 1994, Mⁿnchen"
  64.     szInf$ = GetSymbolValue("STF_SRCINFPATH")
  65.  
  66.     IF szInf$ = "" THEN
  67.            szInf$ = GetSymbolValue("STF_CWDDIR") + "ottoset.INF"
  68.     END IF
  69.     WINDRIVE$ = MID$(GetWindowsDir, 1, 1)
  70.     Check_System(GetSymbolValue("STF_CWDDIR")+"vfw.inf")
  71.     '' SYS_SPACE&=765333            '' TEST !!!!!!!!!!!!!!
  72.     if SYS_SPACE&>0 then
  73.             t1$="Ihnen fehlen auf Ihren Laufwerk: '"+UCASE$(WINDRIVE$)+"' ca. "
  74.             t2$=str$((SYS_SPACE&/1024))+" KB Platz um Video fⁿr Windows zu installieren!"
  75.             t3$=" Schaffen Sie bitte Platz und installieren Sie erneut."
  76.             i% = DoMsgBox(t1$+t2$+t3$,"Setup Message", MB_OK+MB_TASKMODAL+MB_ICONHAND)
  77.             dlg%=EXITQUIT
  78.             goto QUITL1
  79.     end if
  80.     ReadInfFile szInf$
  81.  
  82.     OPTCUR$ = "1"
  83.  
  84.     DEST$ = WINDRIVE$ + ":\OTTOKAT"
  85.  
  86.     ''Disk cost list symbols
  87.     APPNEEDS$   = "AppNeeds"
  88.     EXTRACOSTS$ = "ExtraCosts"
  89.     BIGLIST$    = "BigList"
  90.     FOR i% = 1 TO 3 STEP 1
  91.         AddListItem BIGLIST$, ""
  92.     NEXT i%
  93.     FOR i% = 1 TO 26 STEP 1
  94.         AddListItem EXTRACOSTS$, "0"
  95.     NEXT i%
  96.     'VFW_INSTALLED = DoesIniKeyExist(GetWindowsDir+"system.ini","mci","AVIVideo")
  97.     'OLE_INSTALLED = DoesFileExist(GetWindowsSysDir+"ole2.reg")
  98. '$IFDEF DEBUG
  99.     i% = DoMsgBox("VFW = "+str$(VFW_INSTALLED), "Setup Message", MB_OK+MB_TASKMODAL+MB_ICONHAND)
  100. '$ENDIF
  101.  
  102.  
  103.  
  104. '$IFDEF DEBUG
  105.     i% = SetSizeCheckMode(scmOnIgnore)    '' could use scmOff; def = scmOnFatal
  106.     WinDrive$ = MID$(GetWindowsDir, 1, 1)
  107.     IF IsDriveValid(WinDrive$) = 0 THEN
  108.         i% = DoMsgBox("Windows drive ('"+WinDrive$+"') is not a valid drive.", "DEBUG", MB_TASKMODAL+MB_ICONHAND+MB_OK)
  109.         GOTO QUIT
  110.     END IF
  111. '$ENDIF ''DEBUG
  112.  
  113.  
  114. WELCOME:
  115.     sz$ = UIStartDlg(CUIDLL$, WELCOME, "FInfoDlgProc", APPHELP, HELPPROC$)
  116. '$IFDEF DEBUG
  117.     i% = DoMsgBox("After Welcome", "Setup Message", MB_OK+MB_TASKMODAL+MB_ICONHAND)
  118. '$ENDIF
  119.     IF sz$ = "CONTINUE" THEN
  120.         UIPop 1
  121.     ELSE
  122.         GOSUB ASKQUIT
  123.         GOTO WELCOME
  124.     END IF
  125.  
  126.  
  127. OPTION:
  128. '$IFDEF DEBUG
  129.     i% = DoMsgBox("Option", "Setup Message", MB_OK+MB_TASKMODAL+MB_ICONHAND)
  130. '$ENDIF
  131.  
  132. '    SetSymbolValue "RadioDefault", OPTCUR$
  133. 'OPTL1:
  134. '    sz$ = UIStartDlg(CUIDLL$, OPTIONS, "FRadioDlgProc", APPHELP, HELPPROC$)
  135. '    OPTCUR$ = GetSymbolValue("ButtonChecked")
  136.  
  137. '    IF sz$ = "CONTINUE" THEN
  138. '        UIPop(1)
  139. '    ELSEIF sz$ = "REACTIVATE" THEN
  140. '        GOTO OPTL1
  141. '    ELSE
  142. '        GOSUB ASKQUIT
  143. '        GOTO OPTION
  144. '    END IF
  145.  
  146.  
  147. GETPATH:
  148. '$IFDEF DEBUG
  149.     i% = DoMsgBox("GetPath", "Setup Message", MB_OK+MB_TASKMODAL+MB_ICONHAND)
  150. '$ENDIF
  151.     SetSymbolValue "EditTextIn", DEST$
  152.     SetSymbolValue "EditFocus", "END"
  153. GETPATHL1:
  154.     MiniInst = 0
  155.     sz$ = UIStartDlg(CUIDLL$, DESTPATH, "FEditDlgProc", APPHELP, HELPPROC$)
  156.     DEST$ = GetSymbolValue("EditTextOut")
  157.  
  158.     IF sz$ = "CONTINUE" THEN
  159.         IF IsDirWritable(DEST$) = 0 THEN
  160.             GOSUB BADPATH
  161.             GOTO GETPATHL1
  162.         END IF
  163.         RecalcPath
  164.                 ''OTTO_SPACE&=3450123     '' TEST!!!!!!!!!!!!!!!
  165.         if OTTO_SPACE& > 0 THEN
  166.             t1$="Um den OTTO-CD-Katalog zu installieren, ben÷tigen Sie noch ca. "+str$(OTTO_SPACE&/1024)+" KB"
  167.             t2$="Platz auf Ihrem Laufwerk '"+UCASE$(MID$(DEST$,1,1))+"'. Wenn Sie eine Minimalinstallation "
  168.             t3$="durchfⁿhren wollen, drⁿcken Sie nun 'Ja'."
  169.             i% = DoMsgBox(t1$+t2$+t3$, "OTTO-CD-Katalog Setup", PEKOS_YESNOCANCEL+MB_TASKMODAL+MB_ICONINFORMATION)
  170.             if i%=PEKOS_NO then
  171.                 UIPop 1
  172.                 dlg%=EXITQUIT
  173.                 goto QUITL1
  174.             elseif i%=PEKOS_IDCANCEL then
  175.                 goto GETPATHL1
  176.             else
  177.                 MiniInst = 1
  178.             endif
  179.         end if
  180.         UIPop 1
  181.     ELSEIF sz$ = "REACTIVATE" THEN
  182.         GOTO GETPATHL1
  183.     ELSEIF sz$ = "BACK" THEN
  184.         UIPop 1
  185.         GOTO WELCOME
  186.     ELSE
  187.         GOSUB ASKQUIT
  188.         GOTO GETPATH
  189.     END IF
  190. '$IFDEF DEBUG
  191.     i% = DoMsgBox("Vor Install", "Setup Message", MB_OK+MB_TASKMODAL+MB_ICONHAND)
  192. '$ENDIF
  193.  
  194.  
  195.     Install
  196.  
  197.  
  198. QUIT:
  199.     ON ERROR GOTO ERRQUIT
  200.  
  201.     IF ERR = 0 THEN
  202.         dlg% = EXITSUCCESS
  203.     ELSEIF ERR = STFQUIT THEN
  204.         dlg% = EXITQUIT
  205.     ELSE
  206.         dlg% = EXITFAILURE
  207.     END IF
  208. QUITL1:
  209.     sz$ = UIStartDlg(CUIDLL$, dlg%, "FInfoPDlgProc", 0, "")
  210.     if dlg%=EXITSUCCESS THEN
  211. '$IFDEF DEBUG
  212.         i% = DoMsgBox(sz$, "pekos Setup Message"+str$(HwndFrame()), MB_OK+MB_TASKMODAL+MB_ICONHAND)
  213. '$endif
  214.         if sz$="CONTINUE" then
  215.                 uipop 1
  216.                 end
  217.         elseif sz$="BTX" then
  218.                 chdrive GetSymbolValue("STF_SRCDIR")
  219.                 chdir "\amaris"
  220.                 Run "vbxsetup"
  221.                 i%=ShowWindow(HwndFrame(),1)
  222.                 goto QUITL1
  223.         elseif sz$="VFW" then
  224.           t1$="Windows wird nach der Installation von Video fⁿr Windows "
  225.             t2$="neu gestartet."
  226.             t3$=" Video fⁿr Windows jetzt installieren?"
  227.             i% = DoMsgBox(t1$+t2$+t3$, "Video fⁿr Windows Installation", PEKOS_YESNO+MB_TASKMODAL+MB_ICONINFORMATION)
  228.             if i%=PEKOS_NO then
  229.                 goto QUITL1
  230.             else
  231.                 chdrive GetSymbolValue("STF_SRCDIR")
  232.                 chdir "\vfw"
  233.                 Run "\setup\waitfor.exe " + str$(HwndFrame()),NOWAIT
  234.  
  235.             endif
  236.         end if
  237.     END IF
  238.     IF sz$ = "REACTIVATE" THEN
  239.         GOTO QUITL1
  240.     END IF
  241.     UIPop 1
  242.  
  243.     END
  244.  
  245. ERRQUIT:
  246.     i% = DoMsgBox("Setup Dateien auf der CD nicht lesbar.", "Setup Message", MB_OK+MB_TASKMODAL+MB_ICONHAND)
  247.     END
  248.  
  249.  
  250.  
  251. BADPATH:
  252.     sz$ = UIStartDlg(CUIDLL$, BADPATH, "FInfo0DlgProc", 0, "")
  253.     IF sz$ = "REACTIVATE" THEN
  254.         GOTO BADPATH
  255.     END IF
  256.     UIPop 1
  257.     RETURN
  258.  
  259.  
  260.  
  261. ASKQUIT:
  262.     sz$ = UIStartDlg(CUIDLL$, ASKQUIT, "FQuitDlgProc", 0, "")
  263.  
  264.     IF sz$ = "EXIT" THEN
  265.         UIPopAll
  266.         ERROR STFQUIT
  267.     ELSEIF sz$ = "REACTIVATE" THEN
  268.         GOTO ASKQUIT
  269.     ELSE
  270.         UIPop 1
  271.     END IF
  272.     RETURN
  273.  
  274.  
  275.  
  276. '**
  277. '** Purpose:
  278. '**     Builds the copy list and performs all installation operations.
  279. '** Arguments:
  280. '**     none.
  281. '** Returns:
  282. '**     none.
  283. '*************************************************************************
  284. SUB Install STATIC
  285.  
  286.     SrcDir$ = GetSymbolValue("STF_SRCDIR") + "bin"
  287. '$IFDEF DEBUG
  288.     i% = DoMsgBox(SrcDir$+" "+str$(MiniInst), "Setup Message", MB_OK+MB_TASKMODAL+MB_ICONHAND)
  289. '$ENDIF
  290.         CreateProgmanGroup "OTTO-CD-Katalog", "", cmoNone
  291.         ShowProgmanGroup  "OTTO-CD-Katalog", 1, cmoNone
  292.         if MiniInst = 0 then
  293.                 CreateDir DEST$, cmoNone
  294. '$ifdef DEBUG
  295.                 x%=SetCopyMode(0)
  296. '$endif
  297.                 Open MakePath(DEST$,"OTTOREG.INI") for output as 1
  298.                 close 1
  299.                 OpenLogFile MakePath(DEST$, "LOGFILE.OUT"), 0
  300.                 WriteToLogFile ""
  301.                 WriteToLogFile "  Anwender wΣhlte Verzeichnis:'" + DEST$ + "'"
  302.                 WriteToLogFile ""
  303.                 CopyFilesInCopyList
  304.                 CreateProgmanItem "OTTO-CD-Katalog", "OTTO-CD-Katalog", MakePath(DEST$,"ottokat1.exe"+" "+GetSymbolValue("STF_SRCDIR")), "", cmoOverwrite
  305. '** Nicht mehr eintragen:               CreateProgmanItem "OTTO-CD-Katalog","OTTO-CD-Katalog Datex-J Bestellung", MakePath(DEST$,"ottobtx.exe"), "", cmoOverwrite
  306.                 CloseLogFile
  307.     else
  308.                 CreateProgmanItem "OTTO-CD-Katalog", "OTTO-CD-Katalog", MakePath(SrcDir$,"ottokat1.exe"+" "+GetSymbolValue("STF_SRCDIR")), "", cmoOverwritec
  309. '** Nicht mehr eintragen:               CreateProgmanItem "OTTO-CD-Katalog","OTTO-CD-Katalog Datex-J Bestellung", MakePath(SrcDir$,"ottobtx.exe"), "", cmoOverwrite
  310.     end if
  311.     CreateProgmanItem "OTTO-CD-Katalog", "BTX-Setup",mid$(GetSymbolValue("STF_SRCDIR"),1,1)+":\amaris\vbxsetup","", cmoOverwrite
  312. END SUB
  313.  
  314.  
  315.  
  316. '**
  317. '** Purpose:
  318. '**     Appends a file name to the end of a directory path,
  319. '**     inserting a backslash character as needed.
  320. '** Arguments:
  321. '**     szDir$  - full directory path (with optional ending "\")
  322. '**     szFile$ - filename to append to directory
  323. '** Returns:
  324. '**     Resulting fully qualified path name.
  325. '*************************************************************************
  326. FUNCTION MakePath (szDir$, szFile$) STATIC AS STRING
  327.     IF szDir$ = "" THEN
  328.         MakePath = szFile$
  329.     ELSEIF szFile$ = "" THEN
  330.         MakePath = szDir$
  331.     ELSEIF MID$(szDir$, LEN(szDir$), 1) = "\" THEN
  332.         MakePath = szDir$ + szFile$
  333.     ELSE
  334.         MakePath = szDir$ + "\" + szFile$
  335.     END IF
  336. END FUNCTION
  337.  
  338.  
  339.  
  340. '**
  341. '** Purpose:
  342. '**     Recalculates disk space for the given option files and sets
  343. '**     the status info symbol "StatusItemsText".
  344. '** Arguments:
  345. '**     ftype% - type of files to add, one of the following:
  346. '**             APPFILES, OPTFILES1, OPTFILES2
  347. '** Returns:
  348. '**     none.
  349. '*************************************************************************
  350. SUB RecalcOptFiles (ftype%) STATIC
  351. '$IFDEF DEBUG
  352.     i% = DoMsgBox("RecalcFiles", "Setup Message", MB_OK+MB_TASKMODAL+MB_ICONHAND)
  353. '$ENDIF
  354.  
  355.     CursorSave% = ShowWaitCursor()
  356.      ClearCopyList
  357.      SrcDir$ = GetSymbolValue("STF_SRCDIR") + "bin"
  358.  
  359.      AddSectionFilesToCopyList "Files", SrcDir$, DEST$
  360.  
  361.     fExtra% = 0
  362.     IF ftype% = APPFILES THEN
  363.         ListSym$ = APPNEEDS$
  364.     END IF
  365.  
  366. '$IFDEF DEBUG
  367.     i% = DoMsgBox("vor Listcost", "Setup Message", MB_OK+MB_TASKMODAL+MB_ICONHAND)
  368. '$ENDIF
  369.  
  370.     StillNeed& = GetCopyListCost(EXTRACOSTS$, ListSym$, "")
  371.     OTTO_SPACE&=StillNeed&
  372.     cost& = 0
  373.     FOR i% = 1 TO 26 STEP 1
  374.         cost&  = cost& + VAL(GetListItem(ListSym$, i%))
  375.     NEXT i%
  376.  
  377. '$IFDEF DEBUG
  378.     i% = DoMsgBox(str$(StillNeed&)+" "+str$(cost&), "Setup Message", MB_OK+MB_TASKMODAL+MB_ICONHAND)
  379. '$ENDIF
  380.  
  381.  
  382.     IF StillNeed& > 0 THEN
  383.         ReplaceListItem BIGLIST$, ftype%, "YES"
  384.     ELSE
  385.         ReplaceListItem BIGLIST$, ftype%, ""
  386.     END IF
  387.  
  388.     IF fExtra% THEN
  389.         ReplaceListItem EXTRACOSTS$, ndrive%, "0"
  390.     END IF
  391.     RestoreCursor CursorSave%
  392.     ListSym$ = ""
  393. '$IFDEF DEBUG
  394.     i% = DoMsgBox("RecalcFiles", "Setup Message", MB_OK+MB_TASKMODAL+MB_ICONHAND)
  395. '$ENDIF
  396.  
  397. END SUB
  398.  
  399.  
  400. '**
  401. '** Purpose:
  402. '**     Recalculates disk space and sets option status info according
  403. '**     to the current destination path.
  404. '** Arguments:
  405. '**     none.
  406. '** Returns:
  407. '**     none.
  408. '*************************************************************************
  409. SUB RecalcPath STATIC
  410.  
  411. '$IFDEF DEBUG
  412.     i% = DoMsgBox("RecalcPath", "Setup Message", MB_OK+MB_TASKMODAL+MB_ICONHAND)
  413. '$ENDIF
  414.  
  415.     CursorSave% = ShowWaitCursor()
  416.     CUIDLL$ = "mscuistf.dll"            ''Custom user interface dll
  417.     sz$ = UIStartDlg(CUIDLL$, ML_OTTOPLATZ, "FModelessDlgProc", 0,"")
  418.     RecalcOptFiles APPFILES
  419.     UIPop 1
  420.     RestoreCursor CursorSave%
  421. END SUB
  422.  
  423.  
  424. SUB Check_System(myInf$) STATIC
  425. '$IFDEF DEBUG
  426.     i% = DoMsgBox("Check_System", "Setup Message", MB_OK+MB_TASKMODAL+MB_ICONHAND)
  427. '$ENDIF
  428.     CUIDLL$ = "mscuistf.dll"            ''Custom user interface dll
  429.     sz$ = UIStartDlg(CUIDLL$, VFW_INSTALL, "FModelessDlgProc", 0,"")
  430.  
  431.     ReadInfFile myInf$
  432.     ClearCopyList
  433.     SrcDir$ = GetSymbolValue("STF_SRCDIR") + "vfw"
  434.     WinDir$ = GetWindowsDir()
  435.     WinSysDir$ = GetWindowsSysDir()
  436. ''  Runtime files (on Windows disk)
  437.     AddSectionFilesToCopyList "VfW Runtime", SrcDir$, WinSysDir$
  438.     AddSectionFilesToCopyList "OLE2", SrcDir$, WinSysDir$
  439.     AddSectionFilesToCopyList "ACM Drivers", SrcDir$, WinSysDir$
  440.     AddSectionFilesToCopyList "MPlayer", SrcDir$, WinDir$
  441.     AddSectionFilesToCopyList "AVICodecs", SrcDir$, WinSysDir$
  442.     AddSectionFilesToCopyList "Indeo-ini", SrcDir$, WinDir$
  443.  
  444. ''  Check windrive diskspace
  445.     SYS_SPACE& = GetCopyListCost ("","", "")
  446. '$IFDEF DEBUG
  447.     i% = DoMsgBox("Check_System"+str$(SYS_SPACE&), "Setup Message", MB_OK+MB_TASKMODAL+MB_ICONHAND)
  448. '$ENDIF
  449.     ClearCopyList
  450.     UIPop 1
  451. END SUB
  452.