home *** CD-ROM | disk | FTP | other *** search
/ Bill Gates - Unplugged - Comdex 1993 / CD_ROM.ISO / ole / watermar / install / ivsetup.ms_ / ivsetup.ms
Text File  |  1993-10-20  |  23KB  |  826 lines

  1. '**************************************************************************
  2. '*                       Ivsetup.mst
  3. '**************************************************************************
  4.  
  5. '$INCLUDE 'setupapi.inc'
  6. '$INCLUDE 'msdetect.inc'
  7. '$INCLUDE 'msregdb.inc'
  8.  
  9. ''Dialog ID's
  10. CONST WELCOME       = 100
  11. CONST ASKQUIT       = 200
  12. CONST DESTPATH      = 300
  13. CONST EXITFAILURE   = 400
  14. CONST EXITQUIT      = 600
  15. CONST EXITSUCCESS   = 700
  16. CONST APPHELP       = 900
  17. CONST BADPATH       = 6400
  18. CONST TOOBIG        = 6300
  19. CONST CUSTINST      = 6200
  20. CONST CDBADFILE     = 7200
  21. CONST CDGETNAME     = 7400
  22. CONST CDGETNAMEORG  = 7500
  23. CONST CDGETORG      = 7600
  24. CONST CDBADNAME     = 7700
  25. CONST CDBADORG      = 7800
  26.  
  27. ''Bitmap ID
  28. CONST LOGO = 1
  29.  
  30. ''Install Time Constants
  31. CONST    GRACEDAYS    = 5
  32. CONST    DEMODAYS    = 45
  33. CONST    REMINDCYCLE    = 10
  34.  
  35.  
  36. ''File Types
  37. CONST WATERFILES    = 1
  38. CONST IMAGEFILES    = 2
  39. CONST SCANFILES       = 3
  40. CONST DELETEFILES   = 4
  41. CONST OLDFILES$        = "DeleteFiles"     '' List of Obsolete files to be deleted
  42.  
  43.  
  44. GLOBAL DEST$        ''Default destination directory.
  45. GLOBAL WINDRIVE$    ''Windows drive letter.
  46. GLOBAL CUSTNAME$    ''customer name
  47. GLOBAL FAXDIR$      ''Default fax directory
  48. GLOBAL IMAGEDIR$    ''Default Image directory
  49. GLOBAL WINSYS$      ''Windows system directory
  50.  
  51. GLOBAL WMRKINI$     '' Watermark INI file path
  52. GLOBAL REGINI$        '' Registration INI file path
  53. GLOBAL WININI$      '' Windows INI file path
  54.  
  55. ''CustInstInst list symbol names
  56.  
  57. GLOBAL WATERNEEDS$  ''List of Installation costs per drive
  58. GLOBAL IMAGENEEDS$
  59. GLOBAL SCANNEEDS$
  60. GLOBAL EXTRACOSTS$  ''List of extra costs to add per drive
  61. GLOBAL BIGLIST$     ''List of option files cost calc results (boolean)
  62.  
  63.  
  64.  
  65. ''Dialog list symbol names
  66. GLOBAL CHECKSTATES$
  67. GLOBAL STATUSTEXT$
  68. GLOBAL DRIVETEXT$
  69. GLOBAL MORETEXT$
  70.  
  71. GLOBAL warningShown%
  72.  
  73. DECLARE SUB Install
  74. DECLARE SUB AddOptFilesToCopyList (ftype%)
  75. DECLARE SUB RecalcOptFiles (ftype%)
  76. DECLARE SUB RecalcPath
  77. DECLARE SUB IsItBig
  78. DECLARE SUB SetDriveStatus
  79. DECLARE FUNCTION MakePath (szDir$, szFile$) AS STRING
  80.  
  81.          
  82. INIT:
  83.     CUIDLL$ = "mscuistf.dll"            ''Custom user interface dll
  84.     HELPPROC$ = "FHelpDlgProc"          ''Help dialog procedure
  85.  
  86.     SetBitmap CUIDLL$, LOGO
  87.     SetTitle "Watermark Discovery Edition Trial Pack"
  88.  
  89.     szInf$ = GetSymbolValue("STF_SRCINFPATH")
  90.     IF szInf$ = "" THEN
  91.     szInf$ = GetSymbolValue("STF_CWDDIR") + "ivsetup.INF"
  92.     END IF
  93.     ReadInfFile szInf$
  94.  
  95.     OPTCUR$ = "1"
  96.     WINDRIVE$ = MID$(GetWindowsDir, 1, 1)
  97.     DEST$ = WINDRIVE$+ ":\WATERMRK"
  98.     IMAGEDIR$ = DEST$+ "\IMAGES"
  99.     FAXDIR$ = DEST$+ "\IMAGES"
  100.     WINSYS = DEST$
  101.     
  102.     WMRKINI$ = MakePath(GetWindowsDir(), "WATERMRK.INI")
  103.     REGINI$     = MakePath(GetWindowsDir(), "wmbd.rse")
  104.     WININI$  = "WIN.INI"
  105.     
  106.     warningShown% = 0       ' Have not shown Network Sharing warning yet.
  107.  
  108.  
  109.      ''CustInst list symbols
  110.     CHECKSTATES$ = "CheckItemsState"
  111.     STATUSTEXT$  = "StatusItemsText"
  112.     DRIVETEXT$   = "DriveStatusText"
  113.     MORETEXT$    = "MoreText"
  114.     FOR i% = 1 TO 3 STEP 1
  115.         AddListItem CHECKSTATES$, "ON"
  116.     NEXT i%
  117.     FOR i% = 1 TO 3 STEP 1
  118.         AddListItem STATUSTEXT$, ""
  119.     NEXT i%
  120.  
  121.     FOR i% = 1 TO 7 STEP 1
  122.     AddListItem DRIVETEXT$, ""
  123.     NEXT i%
  124.     FOR i% = 1 TO 3 STEP 1
  125.     AddListItem MORETEXT$, ""
  126.     NEXT i%
  127.  
  128.  
  129.     ''Disk cost list symbols
  130.  
  131.     WATERNEEDS$ = "Waterneeds"
  132.     IMAGENEEDS$ = "Imageneeds"
  133.     SCANNEEDS$  = "Scanneeds"
  134.     EXTRACOSTS$ = "ExtraCosts"
  135.     BIGLIST$    = "BigList"
  136.  
  137.     FOR i% = 1 TO 3 STEP 1
  138.         AddListItem BIGLIST$, ""
  139.     NEXT i%
  140.     FOR i% = 1 TO 26 STEP 1
  141.         AddListItem EXTRACOSTS$, "0"
  142.     NEXT i%
  143.  
  144.     
  145. '    IsItBig
  146.     RecalcPath
  147.     SetDriveStatus
  148.  
  149.  
  150.  
  151. WELCOME:
  152.     sz$ = UIStartDlg(CUIDLL$, WELCOME, "FInfoDlgProc", APPHELP, HELPPROC$)
  153.     IF sz$ = "CONTINUE" THEN
  154.        UIPop 1
  155.     ELSE
  156.     GOSUB ASKQUIT
  157.     GOTO WELCOME
  158.     END IF
  159.  
  160. GETNAME:
  161.     CUSTNAME$ = GetIniKeyString (WMRKINI$, "defaults", "Username")
  162.     SetSymbolValue "EditTextIn", CUSTNAME$
  163.     SetSymbolValue "EditFocus", "END"
  164. GETNAME1:
  165.     sz$ = UIStartDlg(CUIDLL$, CDGETNAME, "FEditDlgProc", APPHELP, HELPPROC$)
  166.  
  167.     IF sz$ = "CONTINUE" THEN
  168.      CUSTNAME$ = GetSymbolValue("EditTextOut")
  169.  
  170.     ''Write name again if too long
  171.     IF LEN(CUSTNAME$) > 20 THEN
  172.     GOSUB BADNAME
  173.         GOTO GETNAME1
  174.     ENDIF
  175.         ''Write name if omitted
  176.     IF CUSTNAME$ = "" THEN
  177.     GOSUB BADNAME1
  178.         GOTO GETNAME1
  179.     ENDIF
  180.  
  181.     ELSEIF sz$ = "EXIT" THEN
  182.     GOSUB ASKQUIT
  183.     GOTO GETNAME1
  184.     END IF
  185.         UIPop 1             
  186.     
  187.  
  188. GETPATH:
  189.     SetSymbolValue "EditTextIn", DEST$
  190.     SetSymbolValue "EditFocus", "END"
  191. GETPATHL1:
  192.     sz$ = UIStartDlg(CUIDLL$, DESTPATH, "FEditDlgProc", APPHELP, HELPPROC$)
  193.  
  194.     IF sz$ = "CONTINUE" THEN
  195.     olddest$ = DEST$
  196.     DEST$ = GetSymbolValue("EditTextOut")
  197.  
  198.     ''Validate new path.
  199.     IF IsDirWritable(DEST$) = 0 THEN
  200.         GOSUB BADPATH
  201.         GOTO GETPATHL1
  202.     END IF
  203.     
  204.     length% = LEN(DEST$)
  205.  
  206.     IF length% > 3 THEN
  207.  
  208.     tempbuf$ = MID$(DEST$, length%)
  209.     
  210.     'i% = DoMsgBox("DEST ('"+DEST$+"').", "Information", MB_TASKMODAL+MB_ICONHAND+MB_OK)
  211.     
  212.     'i% = DoMsgBox( " tempbuf: ('"+tempbuf$+"')", "Information", MB_TASKMODAL+MB_ICONHAND+MB_OK)
  213.  
  214.         IF tempbuf$ = "\" THEN
  215.         'i% = DoMsgBox( "Found the backslash", "Information", MB_TASKMODAL+MB_ICONHAND+MB_OK)
  216.         tempbuf$ = MID$(DEST$, 1, (length%-1))
  217.         DEST$ = tempbuf$
  218.         'i% = DoMsgBox( "DEST now: ('"+DEST$+"').", "Information", MB_TASKMODAL+MB_ICONHAND+MB_OK)
  219.         END IF
  220.  
  221.     END IF  
  222.     'i% = DoMsgBox( "DEST now: ('"+DEST$+"').", "Information", MB_TASKMODAL+MB_ICONHAND+MB_OK)
  223.  
  224.     ''Check there is no Watermark there already. 
  225.     ''First remove any trailing \ from the path
  226.     EXISTTEST$ = DEST$
  227.     IF (MID$(EXISTTEST$, LEN(EXISTTEST$))) = "\" THEN
  228.     EXISTTEST$ = MID$(EXISTTEST$, 1, LEN(EXISTTEST$) - 1)
  229.     ENDIF
  230.     IF DoesFileExist(EXISTTEST$ + "\watermrk.exe", femExists) = 1 THEN
  231.         '' Put up a dialog boxcomplaining
  232.         i% = DoMsgBox( "Watermark is already installed in the directory '"+DEST$+"'.You cannot install this version of Watermark over an old version.", "Watermark", MB_TASKMODAL+MB_ICONSTOP+MB_OK)
  233.         '' Go back to where we were
  234.         DEST$ = olddest$
  235.         GOTO GETPATHL1
  236.     ENDIF
  237.  
  238.     '    IsItBig
  239.         RecalcPath
  240.         SetDriveStatus
  241.     UIPop 1
  242.  
  243.     ''Truncate display if too long.
  244.     IF LEN(DEST$) > 23 THEN
  245.         ReplaceListItem DRIVETEXT$, 7, MID$(DEST$, 1, 23)+"..."
  246.     ELSE
  247.         ReplaceListItem DRIVETEXT$, 7, DEST$
  248.     END IF
  249.  
  250.     ''Recalc if path changed.
  251.     IF (olddest$ <> DEST$) AND (olddest$ <> DEST$+"\") AND (olddest$+"\" <> DEST$) THEN
  252. '        IsItBig
  253.         RecalcPath
  254.         SetDriveStatus
  255.     END IF
  256.  
  257.     olddest$ = ""
  258.     GOTO WARNING
  259.     ELSEIF sz$ = "REACTIVATE" THEN
  260. '        IsItBig
  261.     RecalcPath
  262.     SetDriveStatus
  263.     GOTO GETPATHL1
  264.     ELSEIF sz$ = "BACK" THEN
  265.     UIPop 1
  266.     GOTO GETNAME
  267.     ELSEIF sz$ = "EXIT" THEN
  268.     GOSUB ASKQUIT
  269.     GOTO GETPATHL1
  270.     ELSE
  271.     UIPop 1
  272.     END IF
  273.  
  274. WARNING:
  275.     if warningShown% = 1 then
  276.         goto GETIMAGE
  277.     end if
  278.     warningShown% = 1
  279.     sz$ = UIStartDlg(CUIDLL$, CDBADFILE, "FInfoDlgProc", APPHELP, HELPPROC$)
  280.     IF sz$ = "CONTINUE" THEN
  281.        UIPop 1
  282.     ELSE
  283.     GOSUB ASKQUIT
  284.     GOTO WARNING
  285.     END IF
  286.  
  287.  
  288. GETIMAGE:
  289.     IMAGEDIR$ = DEST$+"\IMAGES"
  290.     SetSymbolValue "EditTextIn", IMAGEDIR$
  291.     SetSymbolValue "EditFocus", "END"
  292. GETIMAGE1:
  293.     sz$ = UIStartDlg(CUIDLL$, CDGETNAMEORG, "FEditDlgProc", APPHELP, HELPPROC$)
  294.  
  295.     IF sz$ = "CONTINUE" THEN
  296.     olddest$ = IMAGEDIR$
  297.     IMAGEDIR$ = GetSymbolValue("EditTextOut")
  298.  
  299.     ''Validate new path.
  300.     IF IsDirWritable(IMAGEDIR$) = 0 THEN
  301.         GOSUB BADPATH
  302.         GOTO GETIMAGE1
  303.     END IF
  304.  
  305.     length1% = LEN(IMAGEDIR$)
  306.  
  307.     IF length1% > 3 THEN
  308.  
  309.         tempbuf$ = MID$(IMAGEDIR$, length1%)
  310.     
  311.         IF tempbuf$ = "\" THEN
  312.             tempbuf$ = MID$(IMAGEDIR$, 1, (length1%-1))
  313.             IMAGEDIR$ = tempbuf$
  314.         END IF
  315.  
  316.     END IF  
  317.               
  318. '        IsItBig
  319.     RecalcPath
  320.     SetDriveStatus
  321.     UIPop 1
  322.  
  323.     ''Truncate display if too long.
  324.     IF LEN(IMAGEDIR$) > 23 THEN
  325.         ReplaceListItem MORETEXT$, 1, MID$(IMAGEDIR$, 1, 23)+"..."
  326.     ELSE
  327.         ReplaceListItem MORETEXT$, 1, IMAGEDIR$
  328.     END IF
  329.  
  330.     ''Recalc if path changed.
  331.     IF (olddest$ <> IMAGEDIR$) AND (olddest$ <> IMAGEDIR$+"\") AND (olddest$+"\" <> IMAGEDIR$) THEN
  332. '        IsItBig
  333.     RecalcPath
  334.     SetDriveStatus
  335.     END IF
  336.  
  337.     olddest$ = ""
  338.     GOTO GETFAX
  339.     ELSEIF sz$ = "EXIT" THEN
  340.     GOSUB ASKQUIT
  341.     GOTO GETIMAGE1
  342.     ELSE
  343.     UIPop 1
  344.     END IF
  345.  
  346.  
  347. GETFAX:
  348.     FAXDIR$ = IMAGEDIR$
  349.     SetSymbolValue "EditTextIn", FAXDIR$
  350.     SetSymbolValue "EditFocus", "END"
  351. GETFAX1:
  352.     sz$ = UIStartDlg(CUIDLL$, CDGETORG, "FEditDlgProc", APPHELP, HELPPROC$)
  353.  
  354.     IF sz$ = "CONTINUE" THEN
  355.     olddest$ = FAXDIR$
  356.     FAXDIR$ = GetSymbolValue("EditTextOut")
  357.  
  358.     ''Validate new path.
  359.     IF IsDirWritable(FAXDIR$) = 0 THEN
  360.         GOSUB BADPATH
  361.         GOTO GETFAX1
  362.     END IF
  363.  
  364.     length2% = LEN(FAXDIR$)
  365.  
  366.     IF length2% > 3 THEN
  367.  
  368.         tempbuf$ = MID$(FAXDIR$, length2%)
  369.     
  370.         IF tempbuf$ = "\" THEN
  371.             tempbuf$ = MID$(FAXDIR$, 1, (length2%-1))
  372.             FAXDIR$ = tempbuf$
  373.         END IF
  374.  
  375.     END IF  
  376.               
  377. '        IsItBig
  378.     RecalcPath
  379.     SetDriveStatus
  380.     UIPop 1
  381.  
  382.     ''Truncate display if too long.
  383.     IF LEN(FAXDIR$) > 23 THEN
  384.         ReplaceListItem MORETEXT$, 2, MID$(FAXDIR$, 1, 23)+"..."
  385.     ELSE
  386.         ReplaceListItem MORETEXT$, 2, FAXDIR$
  387.     END IF
  388.  
  389.     ''Recalc if path changed.
  390.     IF (olddest$ <> FAXDIR$) AND (olddest$ <> FAXDIR$+"\") AND (olddest$+"\" <> FAXDIR$) THEN
  391. '        IsItBig
  392.     RecalcPath
  393.     SetDriveStatus
  394.     END IF
  395.  
  396.     olddest$ = ""
  397.     GOTO CUSTINST
  398.     ELSEIF sz$ = "EXIT" THEN
  399.     GOSUB ASKQUIT
  400.     GOTO GETFAX1
  401.     ELSE
  402.     UIPop 1
  403.     END IF
  404.  
  405.  
  406.  
  407.  
  408. CUSTINST:
  409.     sz$ = UIStartDlg(CUIDLL$, CUSTINST, "FCustInstDlgProc", APPHELP, HELPPROC$)
  410.  
  411.     IF sz$ = "CONTINUE" THEN
  412.         ''Install only if it will fit.
  413.         FOR i% = 1 TO 3 STEP 1
  414.             IF GetListItem(BIGLIST$, i%) <> "" THEN
  415.                 GOSUB TOOBIG
  416.                 GOTO CUSTINST
  417.             END IF
  418.         NEXT i%
  419.         UIPop 1
  420. '        GOTO INSTALL
  421.     ELSEIF sz$ = "PATH" THEN
  422.         UIPop 1
  423.         GOTO GETPATH
  424.     ELSEIF sz$ = "CHK1" THEN
  425.         RecalcOptFiles WATERFILES
  426.         SetDriveStatus
  427.         GOTO CUSTINST
  428.     ELSEIF sz$ = "CHK2" THEN
  429.         RecalcOptFiles IMAGEFILES
  430.         SetDriveStatus
  431.         GOTO CUSTINST
  432.     ELSEIF sz$ = "REACTIVATE" THEN
  433.         RecalcPath
  434.         SetDriveStatus
  435.         GOTO CUSTINST
  436.     ELSE
  437.         GOSUB ASKQUIT
  438.         GOTO CUSTINST
  439.     END IF
  440.  
  441.     
  442.  
  443.  
  444.  
  445.  
  446.     Install
  447.  
  448.  
  449. QUIT:
  450.     ON ERROR GOTO ERRQUIT
  451.  
  452.     IF ERR = 0 THEN
  453.     dlg% = EXITSUCCESS
  454.     ELSEIF ERR = STFQUIT THEN
  455.     dlg% = EXITQUIT
  456.     ELSE
  457.     dlg% = EXITFAILURE
  458.     END IF
  459.  
  460. QUITL1:
  461.     sz$ = UIStartDlg(CUIDLL$, dlg%, "FInfo0DlgProc", 0, "")
  462.     IF sz$ = "REACTIVATE" THEN
  463.     GOTO QUITL1
  464.     END IF
  465.     UIPop 1
  466.  
  467.     END
  468.  
  469. ERRQUIT:
  470.     i% = DoMsgBox("The setup files were corrupted, please contact product support for help", "Watermark Discovery Trial Pack Setup", MB_OK+MB_TASKMODAL+MB_ICONHAND)
  471.     END
  472.  
  473.  
  474. TOOBIG:
  475.     sz$ = UIStartDlg(CUIDLL$, TOOBIG, "FInfo0DlgProc", 0, "")
  476.     IF sz$ = "REACTIVATE" THEN
  477. '    IsItBig
  478.     SetDriveStatus
  479.     GOTO TOOBIG
  480.     END IF
  481.     UIPop 1
  482.     RETURN
  483.  
  484. BADNAME:
  485.     sz$ = UIStartDlg(CUIDLL$, CDBADNAME, "FInfo0DlgProc", 0, "")
  486.     IF sz$ = "REACTIVATE" THEN
  487.     GOTO BADNAME
  488.     END IF
  489.     UIPop 1
  490.     RETURN
  491.  
  492. BADNAME1:
  493.     sz$ = UIStartDlg(CUIDLL$, CDBADORG, "FInfo0DlgProc", 0, "")
  494.     IF sz$ = "REACTIVATE" THEN
  495.     GOTO BADNAME1
  496.     END IF
  497.     UIPop 1
  498.     RETURN
  499.  
  500.  
  501. BADPATH:
  502.     sz$ = UIStartDlg(CUIDLL$, BADPATH, "FInfo0DlgProc", 0, "")
  503.     IF sz$ = "REACTIVATE" THEN
  504.     GOTO BADPATH
  505.     END IF
  506.     UIPop 1
  507.     RETURN
  508.  
  509.  
  510.  
  511. ASKQUIT:
  512.     sz$ = UIStartDlg(CUIDLL$, ASKQUIT, "FQuitDlgProc", 0, "")
  513.  
  514.     IF sz$ = "EXIT" THEN
  515.     UIPopAll
  516.     ERROR STFQUIT
  517.     ELSEIF sz$ = "REACTIVATE" THEN
  518.     GOTO ASKQUIT
  519.     ELSE
  520.     UIPop 1
  521.     END IF
  522.     RETURN
  523.  
  524.  
  525.  
  526. '*************************************************************************
  527. '**
  528. '** Purpose:
  529. '**     Builds the copy list and performs all installation operations.
  530. '** Arguments:
  531. '**     none.
  532. '** Returns:
  533. '**     none.
  534. '*************************************************************************
  535. SUB Install STATIC
  536.  
  537.     SrcDir$ = GetSymbolValue("STF_SRCDIR")
  538.     CreateDir DEST$, cmoNone
  539.  
  540.     OpenLogFile MakePath(DEST$, "LOGFILE.OUT"), 0
  541.     WriteToLogFile ""
  542.     WriteToLogFile "  User chose as destination directory: '" + DEST$ + "'"
  543.     WriteToLogFile ""
  544.     WriteToLogFile "May have had to create the directory: " + DEST$
  545.     WriteToLogFile ""
  546.  
  547.  
  548.     IF GetListItem(CHECKSTATES$,WATERFILES)="ON" THEN
  549.       ClearCopyList
  550.       AddSectionFilesToCopyList "Waterfiles", SrcDir$, DEST$
  551.       CopyFilesInCopyList
  552.     END IF
  553.  
  554.     't$ = DEST$+"\watermrk.exe"    
  555.     'disp$ = GetVersionOfFile(t$)
  556.  
  557.     'i% = DoMsgBox("Version ('"+disp$+"').", t$, MB_TASKMODAL+MB_ICONHAND+MB_OK)
  558.  
  559.     IF GetListItem(CHECKSTATES$,IMAGEFILES)="ON" THEN
  560.     ClearCopyList
  561.     CreateDir IMAGEDIR$, cmoNone
  562.     AddSectionFilesToCopyList "Imagefiles",SrcDir$, IMAGEDIR$
  563.     CopyFilesInCopyList 
  564.     END IF
  565.         
  566.     temp$ = "Tiff File,_WMVIEW.DLL"
  567.  
  568.     CreateIniKeyValue WMRKINI$, "Objects",  "tifffile", temp$,     cmoOverwrite
  569.     CreateIniKeyValue WMRKINI$, "defaults", "Username", CUSTNAME$, cmoOverwrite
  570.     CreateIniKeyValue WMRKINI$, "defaults", "Openpath", IMAGEDIR$, cmoOverwrite
  571.     CreateIniKeyValue WMRKINI$, "defaults", "Faxpath",  FAXDIR$,   cmoOverwrite
  572.  
  573.     temp$ = DEST$ + "\WATERMRK.FLD"
  574.     CreateIniKeyValue WMRKINI$, "defaults", "FieldTemplates",TEMP$, cmoOverwrite
  575.     CreateIniKeyValue WMRKINI$, "defaults", "KeepTidy","On", cmoOverwrite
  576.     CreateIniKeyValue WMRKINI$, "Associations", "tif","tifffile", cmoOverwrite
  577.  
  578.     CreateIniKeyValue WMRKINI$, "FaxFileType",  "FaxFileType", "Winfax 3.0", cmoOverwrite
  579.     CreateIniKeyValue WMRKINI$, "FaxFileType",  "Winfax 3.0", "_WMWFP.DLL,GETWINFAXFILE,GETWINFAXPAGES", cmoOverwrite
  580.  
  581.     temp$ = DEST$ + "\Watermrk.exe ^.TIF"
  582.     
  583.     CreateIniKeyValue WININI$, "Extensions", "TIF", temp$, cmoOverwrite
  584.     
  585.     exe$ = MakePath(DEST$, "WATERMRK.EXE tifffile")
  586.     path$ = DEST$ + "\WATERMRK.EXE"
  587.  
  588.     CreateRegKeyValue ".tif","Watermrk"
  589.     CreateRegKeyValue "Watermrk","Image Objects"
  590.     CreateRegKeyValue "Watermrk\protocol\StdFileEditing\server",path$
  591.     CreateRegKeyValue "Watermrk\protocol\StdFileEditing\verb\0","edit"
  592.     DeleteRegKey "Bolero"                                             
  593.  
  594.     '' Determine the date stamp for today's date
  595.     ''  (by getting the date of the Watermark INI file
  596.     ''
  597.     tt$ = GetDateOfFile(WMRKINI$)
  598.     td% = (GetYearFromDate(tt$)-1980)*512 + GetMonthFromDate(tt$)*32 + GetDayFromDate(tt$)
  599.     RD$ = chr$(td% AND 255) + chr$( (td%/256) AND 255) + chr$(DEMODAYS) + chr$(GRACEDAYS) + chr$(REMINDCYCLE)
  600.  
  601. '    i% = DoMsgBox("Date is "+TT$+ ", Value is: " + str$(TD), "Information", MB_TASKMODAL+MB_ICONHAND+MB_OK)
  602.  
  603.     '' Stamp the Date information into a resource in _WMVIEW.DLL
  604.     ''
  605.     StampResource "Waterfiles","_wmview.dll",DEST$,1000,1000,RD$,5
  606.  
  607. '    i% = DoMsgBox("Stamped!", "Information", MB_TASKMODAL+MB_ICONHAND+MB_OK)
  608.  
  609.     '' Create the Registration INI file
  610.     '' This must be done AFTER the resource is modified --- if this succeeds
  611.     '' Then we will not allow re-installation
  612.     ''
  613.     CreateIniKeyValue WMRKINI$, "defaults", "defaults",  "0",   cmoOverwrite
  614.     CreateIniKeyValue REGINI$, "Settings", "Registration", RD$, cmoOverwrite
  615.  
  616. '    i% = DoMsgBox("INI'd!", "Information", MB_TASKMODAL+MB_ICONHAND+MB_OK)
  617.     
  618.     discov$ = "Watermark Trial Pack"
  619.     CreateProgmanGroup discov$, "", cmoNone
  620.     ShowProgmanGroup  discov$, 1, cmoNone
  621.     CreateProgmanItem discov$, "Watermark" ,exe$, "", cmoOverwrite
  622.     CreateProgmanItem discov$, "Watermark - Read Me First"  ,"WRITE "+DEST$+"\readme.wri", "", cmoOverwrite
  623.     
  624.  '   AddDos5Help "YOURAPP", "A brief help text for your Windows application."+chr$(10)+"It can be continued on another line with chr$(10).", cmoNone
  625.  
  626.     CloseLogFile
  627.  
  628. END SUB
  629.  
  630. '*************************************************************************
  631. '**
  632. '** Purpose:
  633. '**     Adds the specified option files to the copy list.
  634. '** Arguments:
  635. '**     ftype%  - type of files to add, one of the following:
  636. '**             WATERFILES, IMAGEFILES
  637. '** Returns:
  638. '**     none.
  639. '*************************************************************************
  640. SUB AddOptFilesToCopyList (ftype%) STATIC
  641.  
  642.     IF GetListItem(CHECKSTATES$, ftype%) = "ON" THEN
  643.         SrcDir$ = GetSymbolValue("STF_SRCDIR")
  644.         IF ftype% = WATERFILES THEN
  645.             AddSectionFilesToCopyList "Waterfiles", SrcDir$, DEST$
  646.         ELSEIF ftype% = IMAGEFILES THEN
  647.             AddSectionFilesToCopyList "Imagefiles", SrcDir$, IMAGEDIR$
  648.         END IF
  649.         SrcDir$ = ""
  650.     END IF
  651. END SUB
  652.  
  653. '*************************************************************************
  654. '**
  655. '** Purpose:
  656. '**     Recalculates disk space for the given option files and sets
  657. '**     the status info symbol "StatusItemsText".
  658. '** Arguments:
  659. '**     ftype% - type of files to add, one of the following:
  660. '**             WATERFILES, IMAGEFILES
  661. '** Returns:
  662. '**     none.
  663. '*************************************************************************
  664. SUB RecalcOptFiles (ftype%) STATIC
  665.     CursorSave% = ShowWaitCursor()
  666.     ClearCopyList
  667.     AddOptFilesToCopyList ftype%
  668.  
  669.     fExtra% = 0
  670.     IF ftype% = WATERFILES THEN
  671.         ListSym$ = WATERNEEDS$
  672.         IF GetListItem(CHECKSTATES$, WATERFILES) = "ON" THEN
  673.             ''Add extra cost to Windows drive for ini/progman, etc.
  674.             ndrive% = ASC(ucase$(WINDRIVE$)) - ASC("A") + 1
  675.             ReplaceListItem EXTRACOSTS$, ndrive%, "10240"
  676.             fExtra% = 1
  677.         END IF
  678.     ELSEIF ftype% = IMAGEFILES THEN
  679.         ListSym$ = IMAGENEEDS$
  680.     END IF
  681.  
  682.     StillNeed& = GetCopyListCost(EXTRACOSTS$, ListSym$, "")
  683.  
  684.     cost& = 0
  685.     FOR i% = 1 TO 26 STEP 1
  686.         cost&  = cost& + VAL(GetListItem(ListSym$, i%))
  687.     NEXT i%
  688.     ReplaceListItem STATUSTEXT$, ftype%, STR$(cost& / 1024) + " K"
  689.  
  690.     IF StillNeed& > 0 THEN
  691.         ReplaceListItem BIGLIST$, ftype%, "YES"
  692.     ELSE
  693.         ReplaceListItem BIGLIST$, ftype%, ""
  694.     END IF
  695.  
  696.     IF fExtra% THEN
  697.         ReplaceListItem EXTRACOSTS$, ndrive%, "0"
  698.     END IF
  699.     RestoreCursor CursorSave%
  700.     ListSym$ = ""
  701. END SUB
  702.  
  703.  
  704. '*************************************************************************
  705. '**
  706. '** Purpose:
  707. '**     Recalculates disk space and sets option status info according
  708. '**     to the current destination path.
  709. '** Arguments:
  710. '**     none.
  711. '** Returns:
  712. '**     none.
  713. '*************************************************************************
  714. SUB RecalcPath STATIC
  715.  
  716.     CursorSave% = ShowWaitCursor()
  717.  
  718.     RecalcOptFiles WATERFILES
  719.     RecalcOptFiles IMAGEFILES
  720.  
  721.     RestoreCursor CursorSave%
  722. END SUB
  723.  
  724.  
  725. '*************************************************************************
  726. '**
  727. '** Purpose:
  728. '**     Recalculates disk space for the given option files and sets
  729. '**     the status info symbol "StatusItemsText".
  730. '** Arguments:
  731. '**     none
  732. '**         
  733. '** Returns:
  734. '**     none.
  735. '*************************************************************************
  736. SUB IsItBig STATIC
  737.     CursorSave% = ShowWaitCursor()
  738.     ClearCopyList
  739.     SrcDir$ = GetSymbolValue("STF_SRCDIR")
  740.     AddSectionFilesToCopyList "Waterfiles", SrcDir$, DEST$    
  741.         ''Add extra cost to Windows drive for ini/progman, etc.
  742.         ndrive% = ASC(ucase$(WINDRIVE$)) - ASC("A") + 1
  743.         ReplaceListItem EXTRACOSTS$, ndrive%, "10240"
  744.  
  745.     StillNeed& = GetCopyListCost(EXTRACOSTS$, INSTNEEDS$, "")
  746.  
  747.     cost& = 0
  748.     FOR i% = 1 TO 26 STEP 1
  749.     cost&  = cost& + VAL(GetListItem(INSTNEEDS$, i%))
  750.     NEXT i%
  751.  
  752. '         ReplaceListItem DRIVETEXT$, 2, STR$(cost& / 1024) + "K"  
  753.  
  754.     IF StillNeed& > 0 THEN
  755.     ReplaceListItem BIGLIST$, 1, "YES"
  756.     ELSE
  757.     ReplaceListItem BIGLIST$, 1, ""
  758.     END IF
  759.  
  760.     ReplaceListItem EXTRACOSTS$, ndrive%, "0"
  761.  
  762.     RestoreCursor CursorSave%
  763. END SUB
  764.  
  765. '*************************************************************************
  766. '**
  767. '** Purpose:
  768. '**     Sets drive status info according to latest disk space calcs.
  769. '** Arguments:
  770. '**     none.
  771. '** Returns:
  772. '**     none.
  773. '*************************************************************************
  774. SUB SetDriveStatus STATIC
  775.  
  776.     drive$ = MID$(DEST$, 1, 1)
  777.     ndrive% = ASC(ucase$(drive$)) - ASC("A") + 1
  778.     cost& = VAL(GetListItem(WATERNEEDS$, ndrive%))+VAL(GetListItem(IMAGENEEDS$, ndrive%))
  779.     free& = GetFreeSpaceForDrive(drive$)
  780.     ReplaceListItem DRIVETEXT$, 1, drive$ + ":"'    
  781.     ReplaceListItem DRIVETEXT$, 2, STR$(cost& / 1024) + " K"
  782.     ReplaceListItem DRIVETEXT$, 3, STR$(free& / 1024) + " K"
  783.  
  784.     IF drive$ = WINDRIVE$ THEN
  785.     ReplaceListItem DRIVETEXT$, 4, ""
  786.     ReplaceListItem DRIVETEXT$, 5, ""
  787.     ReplaceListItem DRIVETEXT$, 6, ""
  788.     ELSE
  789.     ndrive% = ASC(ucase$(WINDRIVE$)) - ASC("A") + 1
  790.     cost& = VAL(GetListItem(WATERNEEDS$, ndrive%))+VAL(GetListItem(IMAGENEEDS$, ndrive%))
  791.     IF cost& = 0 THEN
  792.         ReplaceListItem DRIVETEXT$, 4, ""
  793.         ReplaceListItem DRIVETEXT$, 5, ""
  794.         ReplaceListItem DRIVETEXT$, 6, ""
  795.     ELSE
  796.         free& = GetFreeSpaceForDrive(WINDRIVE$)
  797.         ReplaceListItem DRIVETEXT$, 4, WINDRIVE$ + ":"
  798.         ReplaceListItem DRIVETEXT$, 5, STR$(cost& / 1024) + " K"
  799.         ReplaceListItem DRIVETEXT$, 6, STR$(free& / 1024) + " K"
  800.     END IF
  801.     END IF
  802. END SUB
  803.  
  804. '*************************************************************************
  805. '**
  806. '** Purpose:
  807. '**     Appends a file name to the end of a directory path,
  808. '**     inserting a backslash character as needed.
  809. '** Arguments:
  810. '**     szDir$  - full directory path (with optional ending "\")
  811. '**     szFile$ - filename to append to directory
  812. '** Returns:
  813. '**     Resulting fully qualified path name.
  814. '*************************************************************************
  815. FUNCTION MakePath (szDir$, szFile$) STATIC AS STRING
  816.     IF szDir$ = "" THEN
  817.     MakePath = szFile$
  818.     ELSEIF szFile$ = "" THEN
  819.     MakePath = szDir$
  820.     ELSEIF MID$(szDir$, LEN(szDir$), 1) = "\" THEN
  821.     MakePath = szDir$ + szFile$
  822.     ELSE
  823.     MakePath = szDir$ + "\" + szFile$
  824.     END IF
  825. END FUNCTION
  826.