home *** CD-ROM | disk | FTP | other *** search
/ PCMania 34 / PCMania CD34.iso / pictpub / install / ppsetupc.ms_ / ppsetupc.ms
Encoding:
Text File  |  1995-04-07  |  29.9 KB  |  1,004 lines

  1. '*************************************************************************
  2. '*       Setup for Micrografx Picture Publisher 5.0  CD V1.1
  3. '**************************************************************************
  4.  
  5.  
  6.  
  7. '$INCLUDE 'setupapi.inc'
  8. '$INCLUDE 'msdetect.inc'
  9. '$INCLUDE 'msregdb.inc'
  10. '$INCLUDE 'ppnamini.inc'
  11. '$INCLUDE 'ppini.inc'
  12.  
  13.  
  14. CONST WELCOME      = 149
  15. CONST CUSTHELP     = 115   'Custom setup help
  16. CONST CDOPTIONS    = 116
  17. CONST PREVER4      = 119
  18. CONST EXPRESSOPT   = 121
  19. CONST INSTMENU     = 122
  20. CONST SCANHELPDB   = 126
  21. CONST LICENSE      = 130
  22. CONST CMS          = 131
  23. CONST FULLINSTM    = 134
  24. CONST CUSTINSTCD   = 138
  25. CONST OLEOPTN1     = 140   'OLE option for updating to 5.0
  26. CONST OLEOPTN2     = 141
  27. CONST WINSHARE     = 143
  28. CONST CLOSEHELP    = 145
  29. CONST ASKQUIT      = 200
  30. CONST DESTPATH     = 300
  31. CONST EXITQUIT     = 600
  32. CONST EXITSUCCESS  = 700
  33. CONST APPHELP      = 900
  34. CONST WAIT         = 5000
  35. CONST INSTMENUEXP  = 6200
  36. CONST TOOBIG       = 6300
  37. CONST BADPATH      = 6400
  38. CONST LAWS         = 7100
  39. CONST CDCONFIRMINFO= 7300
  40. CONST CDGETNAMEORG = 7500
  41.  
  42. ''Bitmap ID
  43. CONST LOGO         = 1
  44.  
  45. ''File Types
  46. CONST APPFILES     = 1
  47. CONST EFCTFILES    = 2
  48. CONST TUTFILES     = 3
  49. CONST IMPORTFILES  = 4
  50. CONST HELPFILES    = 5
  51. CONST TEXTFILES    = 6
  52. CONST SCANFILES    = 7
  53.  
  54. GLOBAL WINDRIVE$    'Windows drive letter.
  55. GLOBAL WINDIRECT$
  56. GLOBAL SYSTEMDIRECT$
  57.  
  58.  
  59. ''CustInst list symbol names
  60. GLOBAL FULLNEEDS$
  61. GLOBAL APPNEEDS$    ''Option list costs per drive
  62. GLOBAL TEXTNEEDS$
  63. GLOBAL IMPORTNEEDS$
  64. GLOBAL TUTNEEDS$
  65. GLOBAL HELPNEEDS$
  66. GLOBAL SCANNEEDS$
  67. GLOBAL EFCTNEEDS$
  68.  
  69. GLOBAL EXTRACOSTS$  ''List of extra costs to add per drive
  70.  
  71. GLOBAL PICTPUB$     ''Picture Publisher 5.0 Destination directories.
  72. GLOBAL ALBUM$
  73. GLOBAL BRUSH$
  74. GLOBAL CLIPBIT$
  75. GLOBAL DBF$
  76. GLOBAL DEVICE$
  77. GLOBAL EFFECT$
  78. GLOBAL MACRO$
  79. GLOBAL PALETTE$
  80. GLOBAL PRINTSTY$
  81. GLOBAL SAMPLE$
  82. GLOBAL TEXTURE$
  83. GLOBAL THUMB$
  84. GLOBAL TUTORIAL$
  85. GLOBAL FILTER$
  86. GLOBAL PICTPUBOLE$
  87. GLOBAL TooManyFiles%
  88. GLOBAL PICTPUBCK50$
  89. GLOBAL SetAppfilesOn%
  90.  
  91. ''Dialog list symbol names
  92. GLOBAL CHECKSTATES$
  93. GLOBAL STATUSTEXT$
  94. GLOBAL DRIVETEXT$
  95. GLOBAL VERTEXT$
  96. GLOBAL CUSTID$
  97. GLOBAL ORGID$
  98.  
  99.  
  100. ''Subroutines and fuctions
  101. DECLARE SUB AddOptFilesToCopyList (ftype%)
  102. DECLARE SUB RecalcOptFiles (ftype%)
  103. DECLARE SUB RecalcPath
  104. DECLARE SUB SetDriveStatus
  105. DECLARE SUB CreateSubDir
  106. DECLARE SUB OLE_Process
  107. DECLARE SUB CreatePPINIKeys
  108.  
  109. DECLARE FUNCTION MakePath (szDir$, szFile$) AS STRING
  110. DECLARE FUNCTION HandleDBF LIB "INIUPD.DLL" (szDBFFile$, szFileDir$, szThumbDir$) AS INTEGER
  111. DECLARE FUNCTION MyLeftFoot LIB "INIUPD.DLL" (szStr$, szDest$, n%) AS INTEGER
  112.  
  113. INIT:
  114.     CUIDLL$ = "mscuistf.dll"            ''custom user interface dll
  115.     HELPPROC$ = "FHelpDlgProc"          ''Help dialog procedure
  116.     previnst% =0
  117.     MaximizeFrame
  118.     SetBitmap CUIDLL$, LOGO
  119.     SetTitle "Setup"
  120.  
  121.     szInf$ = GetSymbolValue("STF_SRCINFPATH")
  122.     IF szInf$ = "" THEN
  123.         szInf$ = GetSymbolValue("STF_CWDDIR") + "PPSETUP.INF"
  124.     END IF
  125.     ReadInfFile szInf$
  126.  
  127.     WINDRIVE$ = MID$(GetWindowsDir, 1, 1)
  128.  
  129.     WINDIRECT$ = GetWindowsDir
  130.  
  131.     SYSTEMDIRECT$ = GetWindowsSysDir
  132.  
  133.     'Create OLE system file list for OLE_Process procedure
  134.     VERTEXT$ = "Version_txt"
  135.     MakeListFromSectionKeys VERTEXT$, "Ole"
  136.  
  137.  
  138.     'Check previously installed versions
  139.     MGXini$ = MakePath(WINDIRECT$, "MGX.INI")
  140.     
  141.     IF DoesIniKeyExist (MGXini$, "Micrografx", "Picture Publisher 5.0")  THEN
  142.         'PICTPUB$=GetIniKeyString (MGXini$, "Micrografx", "Picture Publisher 5.0")
  143.          n_result%  = DoMsgBox("You can not reinstall the 30 Day Trial Version. Contact your software distributor for the full version of Picture Publisher.", "REINSTALL DETECTION", MB_OK+MB_TASKMODAL+MB_ICONHAND)
  144.         UIPop 1
  145.         previnst% = 1
  146.     ENDIF
  147.  
  148.     PICTPUB$ = WINDRIVE$ + ":\PICTPUB5"
  149.  
  150.  
  151.     sztemp$ = GetSymbolValue("STF_SRCDIR")
  152.     szTemp2$ = "012345678901234567890123456789012234567890123456789"
  153.     value%=MyLeftFoot(sztemp$, sztemp2$, 2)
  154.     PICTPUBN$= sztemp2$
  155.  
  156.  
  157.  
  158.  
  159.     ''CustInst list symbols
  160.     CHECKSTATES$ = "CheckItemsState"
  161.     STATUSTEXT$  = "StatusItemsText"
  162.     DRIVETEXT$   = "DriveStatusText"
  163.  
  164.     FOR i% = 1 TO 7 STEP 1
  165.         AddListItem CHECKSTATES$, "ON"
  166.     NEXT i%
  167.  
  168.  
  169.     FOR i% = 1 TO 7 STEP 1
  170.         AddListItem STATUSTEXT$, ""
  171.     NEXT i%
  172.     FOR i% = 1 TO 8 STEP 1
  173.         AddListItem DRIVETEXT$, ""
  174.     NEXT i%
  175.  
  176.  
  177.     ''Disk cost list symbols
  178.     APPNEEDS$   = "AN"
  179.     IMPORTNEEDS$= "IN"
  180.     TEXTNEEDS$  = "TN"
  181.     TUTNEEDS$   = "TTN"
  182.     HELPNEEDS$  = "HN"
  183.     SCANNEEDS$  = "SN"
  184.     EFCTNEEDS$  = "EN"
  185.  
  186.     EXTRACOSTS$ = "ExtraCosts"
  187.  
  188.     FOR i% = 1 TO 26 STEP 1
  189.         AddListItem EXTRACOSTS$, "0"
  190.     NEXT i%
  191.  
  192.     ReplaceListItem DRIVETEXT$, 7, PICTPUB$
  193.  
  194. '*************************************************************************
  195. WELCOME:
  196.     sz$ = UIStartDlg(CUIDLL$, WELCOME, "FInfoDlgProc", CLOSEHELP, HELPPROC$)
  197.  
  198.     IF sz$ = "CONTINUE" THEN
  199.         UIPop 1
  200.     ELSE
  201.         GOSUB ASKQUIT
  202.         GOTO WELCOME
  203.     END IF
  204.  
  205.  
  206. '*************************************************************************
  207. LICENSE:
  208.     sz$ = UIStartDlg(CUIDLL$, LAWS, "FInfoDlgProc", LICENSE, HELPPROC$)
  209.     IF sz$ = "CONTINUE" THEN
  210.         UIPop 1
  211.     ELSE
  212.         GOSUB ASKQUIT
  213.         GOTO LICENSE
  214.     END IF
  215.  
  216. '*************************************************************************
  217. IF IsWindowsShared THEN
  218.     dlg% = WINSHARE        'DB for shared windows
  219.     GOTO QUITL1
  220. END IF
  221.  
  222. '*************************************************************************
  223.  
  224.  
  225. 'Recalculate drive needs
  226. RECALCIT:
  227. sz$ = UIStartDlg(CUIDLL$, WAIT, "FModelessDlgProc", APPHELP, HELPPROC$)
  228. RecalcPath
  229. SetDriveStatus
  230. UIPop 1
  231. '*************************************************************************
  232. INSTMENU:
  233.     IF FULLEXIST THEN
  234.     sz$ = UIStartDlg(CUIDLL$, FULLINSTM, "FCustInstDlgProc", CUSTHELP, HELPPROC$)
  235.     ELSE
  236.     sz$ = UIStartDlg(CUIDLL$, CUSTINSTCD, "FCustInstDlgProc", CUSTHELP , HELPPROC$)
  237.     ENDIF
  238.     IF sz$ = "CONTINUE" THEN
  239.         ''Install only if it will fit.
  240.         IF TooManyFiles% THEN
  241.             UIPop 1
  242.             GOSUB TOOBIG
  243.             GOTO INSTMENU
  244.  
  245.         END IF
  246.         UIPop 1
  247.         GOTO INSTALL
  248.  
  249.  
  250.     ELSEIF sz$ = "PATH" THEN
  251.         UIPop 1
  252.         GOTO GETPATH
  253.  
  254.     ELSEIF sz$ = "CHK1" THEN
  255.         RecalcOptFiles APPFILES
  256.         SetDriveStatus
  257.         GOTO INSTMENU
  258.  
  259.     ELSEIF sz$ = "BTN1" THEN
  260.     UIPop 1
  261.     sz$ = UIStartDlg(CUIDLL$, SCANHELPDB, "FInfoDlgProc", APPHELP, HELPPROC$)
  262.  
  263.         IF sz$ = "CONTINUE" THEN
  264.             UIPop 1
  265.             GOTO INSTMENU
  266.         ENDIF
  267.  
  268.     ELSEIF sz$ = "CHK2" THEN
  269.         RecalcOptFiles EFCTFILES
  270.         SetDriveStatus
  271.         GOTO INSTMENU
  272.  
  273.     ELSEIF sz$ = "CHK3" THEN
  274.         RecalcOptFiles TUTFILES
  275.         SetDriveStatus
  276.         GOTO INSTMENU
  277.  
  278.     ELSEIF sz$ = "BTN3" THEN
  279.     UIPop 1
  280.  
  281.  
  282.     ELSEIF sz$ = "CHK4" THEN
  283.         RecalcOptFiles IMPORTFILES
  284.         SetDriveStatus
  285.         GOTO INSTMENU
  286.  
  287.     ELSEIF sz$ = "CHK5" THEN
  288.         RecalcOptFiles HELPFILES
  289.         SetDriveStatus
  290.         GOTO INSTMENU
  291.  
  292.     ELSEIF sz$ = "CHK6" THEN
  293.         RecalcOptFiles TEXTFILES
  294.         SetDriveStatus
  295.         GOTO INSTMENU
  296.  
  297.     ELSEIF sz$ = "CHK7" THEN
  298.         RecalcOptFiles SCANFILES
  299.         SetDriveStatus
  300.         GOTO INSTMENU
  301.  
  302.  
  303.     ELSEIF sz$ = "REACTIVATE" THEN
  304.         UIPop 1
  305.         GOTO RECALCIT
  306.     ELSE
  307.         UIPop 1
  308.         GOSUB ASKQUIT
  309.         GOTO INSTMENU
  310.     END IF
  311.  
  312.  
  313. '*************************************************************************
  314. '*************************************************************************
  315. '*************************************************************************
  316. INSTALL:
  317.     sz$ = UIStartDlg(CUIDLL$, WAIT, "FModelessDlgProc", APPHELP, HELPPROC$)
  318.     ClearCopyList
  319.  
  320. FULLNEEDS$   = ""        'Memory optimization
  321. APPNEEDS$    = ""
  322. TEXTNEEDS$   = ""
  323. IMPORTNEEDS$ = ""
  324. TUTNEEDS$    = ""
  325. HELPNEEDS$   = ""
  326. SCANNEEDS$   = ""
  327. EFCTNEEDS$   = ""
  328. EXTRACOSTS$  = ""
  329. STATUSTEXT$  = ""
  330. DRIVETEXT$   = ""
  331.  
  332.     PICTPUBOLE$ = PICTPUB$ +"\PP50.EXE"   'Creates full path for PP5.0 OLE working directories
  333.  
  334.     CreateDir PICTPUB$, cmoNone
  335.     CreateSubDir
  336.     SrcDir$ = GetSymbolValue("STF_SRCDIR")
  337.     SrcFileDir$ = MakePath (SrcDir$, "INSTALL")
  338.     ini$ = MakePath(PICTPUB$, "NAMES.INI")
  339.  
  340.             IF PICTPUBCK$ = PICTPUB$ THEN          'Removes old files from PP4.0
  341.                 RemoveFile PICTPUBCK$+"\mgxrx101.dll", cmoNone
  342.                 RemoveFile PICTPUBCK$+"\PP40.exe", cmoNone
  343.                 RemoveFile PICTPUBCK$+"\PPLE.exe", cmoNone
  344.                 RemoveFile PICTPUBCK$+"\PPhlp.hlp", cmoNone
  345.                 RemoveFile PICTPUBCK$+"\pp-scan.hlp", cmoNone
  346.                 RemoveIniSection ini$, "Macro", cmoNone      'remove conflicting macros
  347.                 RemoveFile PICTPUBCK$+"\effects\reduce.dfx", cmoNone
  348.                 RemoveIniSection ini$, "Special", cmoNone    'remove conflicting effects
  349.                 SetFlgRemovePrevVer%=1
  350.                 RemoveIniKey WINDIRECT$+"WIN.INI", "Micrografx", "Picture Publisher 4.0", cmoNone
  351.             ENDIF
  352.  
  353.  
  354.     UIPop 1
  355.     szName$= "CLSID\{000440EE-0000-0000-C000-000000000046}"
  356.  
  357.     sz$ = UIStartDlg(CUIDLL$, OLEOPTN1, "FInfoDlgProc", APPHELP, HELPPROC$)
  358.  
  359.     IF sz$ = "CONTINUE" THEN
  360.         UIPop 1
  361.         CreateRegKeyValue szName$, "Picture Publisher Image"
  362.         DeleteRegKey szName$+"\TreatAs"
  363.         CreateRegKeyValue szName$+"\AutoConvertTo","{BC7A9620-3913-101B-9649-020080A38E74}"
  364.         CreateRegKeyValue szName$+"\ProgID", "BitmapImage"
  365.         CreateRegKeyValue szName$+"\Ole1Class", "BitmapImage"
  366.         IF SetFlgRemovePrevVer% THEN
  367.             DeleteRegKey szName$+"\ProgID"
  368.         ENDIF
  369.     ELSE
  370.     UIPop 1
  371.     sz$ = UIStartDlg(CUIDLL$, OLEOPTN2, "FInfoDlgProc", APPHELP, HELPPROC$)
  372.  
  373.         IF sz$ = "CONTINUE"  THEN
  374.             CreateRegKeyValue szName$, "Picture Publisher Image"
  375.             DeleteRegKey szName$+"\AutoConvertTo"
  376.             CreateRegKeyValue szName$+"\TreatAs","{BC7A9620-3913-101B-9649-020080A38E74}"
  377.             CreateRegKeyValue szName$+"\ProgID", "BitmapImage"
  378.             CreateRegKeyValue szName$+"\Ole1Class", "BitmapImage"
  379.             UIPop 1
  380.  
  381.         ELSE
  382.         UIPop 1
  383.             DeleteRegKey szName$+"\AutoConvertTo"
  384.             DeleteRegKey szName$+"\TreatAs"
  385.         END IF
  386.  
  387. ENDIF
  388. szName$=""
  389.  
  390.     IF GetListItem(CHECKSTATES$, APPFILES) = "ON" THEN
  391.             OLE_Process
  392.  
  393.             AddSectionFilestoCopyList "Maindbf", SrcFileDir$, THUMB$
  394.             AddSectionFilestoCopyList "Thumbcd", SrcFileDir$, THUMB$
  395.             if (previnst% = 0 ) then
  396.                 AddSectionFilesToCopyList "Appfiles", SrcFileDir$, PICTPUB$
  397.             endif
  398.             AddSectionFilesToCopyList "Mainini", SrcFileDir$, PICTPUB$
  399.  
  400.             AddSectionFilestoCopyList "Macros", SrcFileDir$, MACRO$
  401.  
  402.             AddSectionFilestoCopyList "Printstyles", SrcFileDir$, PRINTSTY$
  403.             AddSectionFilestoCopyList "Palettes", SrcFileDir$, PALETTE$
  404.  
  405.             AddSectionFilestoCopyList "Defaulttextures", SrcFileDir$, TEXTURE$
  406.             AddSectionFilestoCopyList "Defaulttexturebrush", SrcFileDir$, BRUSH$
  407.             AddSectionFilestoCopyList "Brushes", SrcFileDir$, BRUSH$
  408.             AddSectionFilesToCopyList "Musttutorial", SrcFileDir$, TUTORIAL$
  409.             AddSectionFilestoCopyList "Thumbs", SrcFileDir$, THUMB$
  410.             SetAppfilesOn%=1
  411.             AddSectionFilestoCopyList "Clipbits", SrcFileDir$, CLIPBIT$
  412.             UIPop 1
  413.             sz$ = UIStartDlg(CUIDLL$, WAIT, "FModelessDlgProc", APPHELP, HELPPROC$)
  414.  
  415.             CreateIniKeyValue ini$, "Clipboard", "Logo", "Logo.pp5", cmoNone
  416.             CreateOptStyleNamesEntries(ini$)
  417.             CreateOptPaletteNamesEntries(ini$)
  418.             CreatePrintStyNamesEntries(ini$)
  419.             CreateDTextrNamesIni(ini$)
  420.             CreatePPINIKeyEntries (PICTPUB$+"\pp.ini")
  421.  
  422.     ENDIF
  423.  
  424.     IF GetListItem(CHECKSTATES$, IMPORTFILES) = "ON"  THEN
  425.             AddSectionFilestoCopyList "Filterappfiles", SrcFileDir$, PICTPUB$
  426.             AddSectionFilestoCopyList "Filtersini", SrcFileDir$, FILTER$
  427.             AddSectionFilesToCopyList "Filters", SrcFileDir$, FILTER$
  428.     ENDIF
  429.  
  430.     IF GetListItem(CHECKSTATES$, TUTFILES) = "ON"  THEN
  431.             AddSectionFilestoCopyList "Tutorial", SrcFileDir$, TUTORIAL$
  432.             AddSectionFilestoCopyList "Tutordbf", SrcFileDir$, THUMB$
  433.             TutThumbon%=1
  434.     ENDIF
  435.  
  436.     IF GetListItem(CHECKSTATES$, HELPFILES) = "ON"  THEN
  437.             AddSectionFilestoCopyList "Helpfile1", SrcFileDir$, PICTPUB$
  438.             AddSectionFilestoCopyList "Helpfile2", SrcFileDir$, PICTPUB$
  439.             SCANHELP%=1
  440.     ENDIF
  441.  
  442.     IF GetListItem(CHECKSTATES$, EFCTFILES) = "ON" THEN
  443.            AddSectionFilestoCopyList "Effects", SrcFileDir$, EFFECT$
  444.            RemoveIniSection ini$, "Special", cmoNone
  445.            CreateOptFXNamesEntries(ini$)
  446.     END IF
  447.  
  448.     IF GetListItem(CHECKSTATES$, TEXTFILES) = "ON" THEN
  449.  
  450.         AddSectionFilestoCopyList "Textrcd", SrcFileDir$, PICTPUB$+"\textures"
  451.         AddSectionFilestoCopyList "Brushcd", SrcFileDir$, PICTPUB$+"\brushes"
  452.         CreateOptTextureNamesEntries (ini$)
  453.  
  454.     END IF
  455.  
  456.     IF GetListItem(CHECKSTATES$, SCANFILES) = "ON" THEN
  457.         AddSectionFilestoCopyList "Devices", SrcFileDir$, PICTPUB$+"\devices"
  458.         CreateOptScanNamesEntries(ini$)
  459.     END IF
  460.  
  461.  
  462.           RemoveIniKey       WINDIRECT$+"MGX.INI", "Micrografx", "PP.INI" , cmoNone
  463.  
  464.           szInf$ = ""
  465.  
  466.           UIPop 1
  467.  
  468.           getbeep%=SetBeepingMode(1)
  469.  
  470.           SetRestartDir GetWindowsDir()
  471.  
  472.           CopyFilesInCopyList
  473.  
  474.           CreateIniKeyValue  WINDIRECT$+"MGX.INI", "Micrografx", "Picture Publisher 5.0", PICTPUB$, cmoOverwrite
  475.           CreateIniKeyValue  WINDIRECT$+"MGX.INI", "Picture Publisher 5.0", "Warning", "0", cmoOverwrite
  476.  
  477. ini$ = MakePath(PICTPUB$, "PP.INI")
  478. szName$="Picture Publisher"
  479.     CreateIniKeyValue ini$, szName$, "Device", DEVICE$, cmoNone
  480.     CreateIniKeyValue ini$, szName$, "Texture", TEXTURE$, cmoNone
  481.     CreateIniKeyValue ini$, szName$, "Palette", PALETTE$, cmoNone
  482.     CreateIniKeyValue ini$, szName$, "Effects", EFFECT$, cmoNone
  483.     CreateIniKeyValue ini$, szName$, "PrnStyle", PRINTSTY$, cmoNone
  484.     CreateIniKeyValue ini$, szName$, "Brush", BRUSH$, cmoNone
  485.     CreateIniKeyValue ini$, szName$, "ClipBit", CLIPBIT$, cmoNone
  486.     CreateIniKeyValue ini$, szName$, "Shapepath", CLIPBIT$, cmoNone
  487.     CreateIniKeyValue ini$, szName$, "Macros", MACRO$, cmoNone
  488.     CreateIniKeyValue ini$, szName$, "ThumbnailDir", THUMB$, cmoNone
  489.     CreateIniKeyValue ini$, szName$, "DBFInfoDir", THUMB$, cmoNone
  490.     CreateIniKeyValue ini$, szName$, "AlbumFileDir", ALBUM$, cmoNone
  491.     CreateIniKeyValue ini$, szName$, "Filters", FILTER$, cmoNone
  492.     CreateIniKeyValue ini$, szName$, "Pouchpath", PICTPUB$, cmoNone
  493.     CreateIniKeyValue ini$, szName$, "RamDisk", PICTPUB$, cmoNone
  494.  
  495.   IF TutThumbon% THEN
  496.  
  497.     szDBF$ = MakePath (THUMB$, "__HTUTR.DBF")
  498.     IF HandleDBF (szDBF$, TUTORIAL$, THUMB$) THEN
  499.     END IF
  500.   ENDIF
  501.  
  502.   IF SetAppfilesOn% THEN
  503.  
  504.     szDBF$ = MakePath (THUMB$, "__HOME.DBF")
  505.     IF HandleDBF (szDBF$, PICTPUB$, THUMB$) THEN
  506.     END IF
  507.     szDBF$ = MakePath (THUMB$, "__CLIPBT.DBF")
  508.     IF HandleDBF (szDBF$, CLIPBIT$, THUMB$) THEN
  509.     END IF
  510.  
  511.   ENDIF
  512.  
  513.  
  514. QUIT:
  515.     ON ERROR GOTO ERRQUIT
  516.  
  517.     IF ERR = 0 THEN
  518.         dlg% = EXITSUCCESS
  519.     ELSE
  520.     UIPop 1
  521.         dlg% = EXITQUIT
  522.     END IF
  523.  
  524.     IF dlg% = EXITSUCCESS THEN
  525.  
  526.           RUN "Regedit /S OLE2.REG"
  527.  
  528.  
  529. around:
  530.  
  531.           sz$ = UIStartDlg(CUIDLL$, dlg%, "FInfo0DlgProc", 0, "")
  532.             IF sz$ = "CONTINUE" THEN
  533.                 UIPop 1
  534.             ELSE
  535.                 GOTO around
  536.             ENDIF
  537.  
  538.  
  539.           ini$ = MakePath(PICTPUB$, "PP.INI")
  540.           CreateProgmanGroup "Micrografx", "", cmoNone
  541.           ShowProgmanGroup  "Micrografx", 1, cmoNone
  542.           IF SetAppfilesOn% THEN
  543.             CreateProgmanItem "Micrografx ", "Picture Publisher 5.0 30 Day Trial", ""+MakePath(PICTPUB$,"PP50.EXE"), "", cmoOverwrite
  544.           ENDIF
  545.           IF SCANHELP% THEN
  546.             CreateProgmanItem "Micrografx", "Scanner Installation Help", "winhelp.exe "+MakePath(PICTPUB$,"PP_SCAN.HLP"), "", cmoOverwrite
  547.           ENDIF
  548.  
  549.      sz$ = UIStartDlg(CUIDLL$, CMS, "FInfoDlgProc", CMS, HELPPROC$)
  550.     IF sz$ = "CONTINUE" THEN
  551.         UIPop 1
  552.     END IF
  553.  
  554. ENDIF
  555.  
  556.  
  557. GOTO ENDIT
  558.  
  559. QUITL1:
  560.     sz$ = UIStartDlg(CUIDLL$, dlg%, "FInfo0DlgProc", 0, "")
  561.  
  562.     IF sz$ = "REACTIVATE" THEN
  563.         GOTO QUITL1
  564.     END IF
  565.     UIPop 1
  566.  
  567. ENDIT:
  568.           IF RestartListEmpty()=0 THEN
  569.              Restartf% = ExitExecRestart()
  570.           ENDIF
  571.  
  572.    END
  573.  
  574. ERRQUIT:
  575.     OUT$ = STR$(ERR)
  576.     IF ERR = 14 THEN
  577.         ErrSTR$= "ERROR #" + OUT$ + ". File copying failure. Consult HELP on the opening screen."
  578.         i% = DoMsgBox(ErrSTR$, "REINSTALL", MB_OK+MB_TASKMODAL+MB_ICONHAND)
  579.         UIPop 1
  580.         END
  581.     ENDIF
  582.  
  583.     ErrSTR$= "ERROR #" + OUT$ + ". Report to Tech Support 214-497-6495"
  584.     i% = DoMsgBox(ErrSTR$, "Setup Message", MB_OK+MB_TASKMODAL+MB_ICONHAND)
  585.  
  586.     END
  587.  
  588. '*************************************************************************
  589. SUB CreatePPINIKeys STATIC
  590.  
  591.  
  592. END SUB
  593.  
  594. '*************************************************************************
  595. SUB CreateSubDir STATIC
  596. szName$="Picture Publisher"
  597.     SrcDir$ = GetSymbolValue("STF_SRCDIR")
  598.  
  599.     SrcFileDir$ = MakePath (SrcDir$, "INSTALL")
  600.  
  601.     ini$ = MakePath(PICTPUB$, "PP.INI")
  602.  
  603.     DEVICE$ = GetIniKeyString (ini$, szName$, "Device")
  604.     IF DEVICE$ = "" THEN
  605.         DEVICE$ = MakePath (PICTPUB$, "DEVICES")
  606.         CreateDir DEVICE$, cmoNone
  607.     END IF
  608.  
  609.     ALBUM$ = GetIniKeyString (ini$, szName$, "AlbumFileDir")
  610.     IF ALBUM$ = "" THEN
  611.         ALBUM$ = MakePath (PICTPUB$, "ALBUMS")
  612.         CreateDir ALBUM$, cmoNone
  613.     END IF
  614.  
  615.     BRUSH$ = GetIniKeyString (ini$, szName$, "Brush")
  616.     IF BRUSH$ = "" THEN
  617.         BRUSH$ = MakePath (PICTPUB$, "BRUSHES")
  618.         CreateDir BRUSH$, cmoNone
  619.     END IF
  620.  
  621.     CLIPBIT$ = GetIniKeyString (ini$, szName$, "ClipBits")
  622.     IF CLIPBIT$ = "" THEN
  623.         CLIPBIT$ = MakePath (PICTPUB$, "CLIPBITS")
  624.         CreateDir CLIPBIT$, cmoNone
  625.     END IF
  626.  
  627.     THUMB$ = GetIniKeyString (ini$, szName$, "DBFInfoDir")
  628.     IF THUMB$ = "" THEN
  629.         THUMB$ = MakePath (PICTPUB$, "THUMBS")
  630.         CreateDir THUMB$, cmoNone
  631.     END IF
  632.  
  633.     EFFECT$ = GetIniKeyString (ini$, szName$, "Effects")
  634.     IF EFFECT$ = "" THEN
  635.         EFFECT$ = MakePath (PICTPUB$, "EFFECTS")
  636.         CreateDir EFFECT$, cmoNone
  637.     END IF
  638.  
  639.     MACRO$ = GetIniKeyString (ini$, szName$, "Macros")
  640.     IF MACRO$ = "" THEN
  641.         MACRO$ = MakePath (PICTPUB$, "MACROS")
  642.         CreateDir MACRO$, cmoNone
  643.     END IF
  644.  
  645.     PALETTE$ = GetIniKeyString (ini$, szName$, "Palette")
  646.     IF PALETTE$ = "" THEN
  647.         PALETTE$ = MakePath (PICTPUB$, "PALETTES")
  648.         CreateDir PALETTE$, cmoNone
  649.     END IF
  650.  
  651.     PRINTSTY$ = GetIniKeyString (ini$, szName$, "PrnStyle")
  652.     IF PRINTSTY$ = "" THEN
  653.         PRINTSTY$ = MakePath (PICTPUB$, "PRINTSTY")
  654.         CreateDir PRINTSTY$, cmoNone
  655.     END IF
  656.  
  657.     TEXTURE$ = GetIniKeyString (ini$, szName$, "Texture")
  658.     IF TEXTURE$ = "" THEN
  659.         TEXTURE$ = MakePath (PICTPUB$, "TEXTURES")
  660.         CreateDir TEXTURE$, cmoNone
  661.     END IF
  662.  
  663.     DBF$ = GetIniKeyString (ini$, szName$, "DBFInfoDir")
  664.     IF DBF$ = "" THEN
  665.         DBF$ = MakePath (PICTPUB$, "THUMBS")
  666.     END IF
  667.  
  668.     THUMB$ = GetIniKeyString (ini$, szName$, "ThumbnailDir")
  669.     IF THUMB$ = "" THEN
  670.         THUMB$ = MakePath (PICTPUB$, "THUMBS")
  671.         CreateDir THUMB$, cmoNone
  672.     END IF
  673.  
  674.     FILTER$ = GetIniKeyString (ini$, szName$, "Filters")
  675.     IF FILTER$ = "" THEN
  676.         FILTER$ = MakePath (PICTPUB$, "FILTERS")
  677.         CreateDir FILTER$, cmoNone
  678.     END IF
  679.  
  680.     TUTORIAL$ = GetIniKeyString (ini$, szName$, "Tutorial")
  681.     IF TUTORIAL = "" THEN
  682.         TUTORIAL = MakePath (PICTPUB$, "TUTORIAL")
  683.         CreateDir TUTORIAL$, cmoNone
  684.     END IF
  685.  
  686. END SUB
  687.  
  688.  
  689. '*************************************************************************
  690. GETPATH:
  691.     SetSymbolValue "EditTextIn", PICTPUB$
  692.     SetSymbolValue "EditFocus", "END"
  693. GETPATHL1:
  694.     sz$ = UIStartDlg(CUIDLL$, DESTPATH, "FEditDlgProc", APPHELP, HELPPROC$)
  695.  
  696.     IF sz$ = "CONTINUE" THEN
  697.         oldPICTPUB$ = PICTPUB$
  698.         PICTPUB$ = GetSymbolValue("EditTextOut")
  699.  
  700.         ''Validate new path.
  701.         IF IsDirWritable(PICTPUB$) = 0 THEN
  702.             GOSUB BADPATH
  703.             GOTO GETPATHL1
  704.         END IF
  705.         UIPop 1
  706.  
  707.  
  708.         ''Truncate display if too long.
  709.         IF LEN(PICTPUB$) > 40 THEN
  710.             ReplaceListItem DRIVETEXT$, 7, MID$(PICTPUB$, 1, 40)+"..."
  711.         ELSE
  712.             ReplaceListItem DRIVETEXT$, 7, PICTPUB$
  713.         END IF
  714.  
  715.         ''Recalc if path changed.
  716.         IF (oldPICTPUB$ <> PICTPUB$) AND (oldPICTPUB$ <> PICTPUB$+"\") AND (oldPICTPUB$+"\" <> PICTPUB$) THEN
  717.             sz$ = UIStartDlg(CUIDLL$, WAIT, "FModelessDlgProc", APPHELP, HELPPROC$)
  718.             RecalcPath
  719.             SetDriveStatus
  720.             UIPop 1
  721.         END IF
  722.  
  723.         oldPICTPUB$ = ""
  724.  
  725.         GOTO INSTMENU
  726.     ELSEIF sz$ = "REACTIVATE" THEN
  727.         RecalcPath
  728.         SetDriveStatus
  729.         GOTO GETPATHL1
  730.     ELSEIF sz$ = "EXIT" THEN
  731.         GOSUB ASKQUIT
  732.         GOTO GETPATHL1
  733.     ELSE
  734.         UIPop 1
  735.         GOTO INSTMENU
  736.     END IF
  737.  
  738.  
  739. '*************************************************************************
  740. TOOBIG:
  741.     sz$ = UIStartDlg(CUIDLL$, TOOBIG, "FInfo0DlgProc", 0, "")
  742.     IF sz$ = "REACTIVATE" THEN
  743.         RecalcPath
  744.         SetDriveStatus
  745.         GOTO TOOBIG
  746.     END IF
  747.     UIPop 1
  748.     RETURN
  749.  
  750.  
  751. '*************************************************************************
  752. BADPATH:
  753.     sz$ = UIStartDlg(CUIDLL$, BADPATH, "FInfo0DlgProc", 0, "")
  754.     IF sz$ = "REACTIVATE" THEN
  755.         RecalcPath
  756.         SetDriveStatus
  757.         GOTO BADPATH
  758.     END IF
  759.     UIPop 1
  760.     RETURN
  761.  
  762.  
  763. '*************************************************************************
  764. ASKQUIT:
  765.     UIPop 1
  766.     sz$ = UIStartDlg(CUIDLL$, ASKQUIT, "FQuitDlgProc", 0, "")
  767.  
  768.     IF sz$ = "EXIT" THEN
  769.         UIPopAll
  770.         ERROR STFQUIT
  771.     ELSEIF sz$ = "REACTIVATE" THEN
  772.         GOTO ASKQUIT
  773.     ELSE
  774.         UIPop 1
  775.     END IF
  776.     RETURN
  777.  
  778. '*************************************************************************
  779. SUB RecalcOptFiles (ftype%) STATIC
  780.     CursorSave% = ShowWaitCursor()
  781.     ClearCopyList
  782.     AddOptFilesToCopyList ftype%
  783.  
  784.     fExtra% = 0
  785.     IF ftype% = APPFILES THEN
  786.         ListSym$ = APPNEEDS$
  787.         IF GetListItem(CHECKSTATES$, APPFILES) = "ON" THEN
  788.             ''Add extra cost to Windows drive for ini/progman, etc.
  789.             ndrive% = ASC(ucase$(WINDRIVE$)) - ASC("A") + 1
  790.             ReplaceListItem EXTRACOSTS$, ndrive%, "10240"
  791.             fExtra% = 1
  792.         END IF
  793.  
  794.     ELSEIF ftype% = TUTFILES THEN
  795.         ListSym$ = TUTNEEDS$
  796.  
  797.     ELSEIF ftype% = IMPORTFILES THEN
  798.         ListSym$ = IMPORTNEEDS$
  799.  
  800.     ELSEIF ftype% = HELPFILES THEN
  801.         ListSym$ = HELPNEEDS$
  802.  
  803.     ELSEIF ftype% = EFCTFILES THEN
  804.         ListSym$ = EFCTNEEDS$
  805.  
  806.     ELSEIF ftype% = SCANFILES THEN
  807.         ListSym$ = SCANNEEDS$
  808.  
  809.     ELSEIF ftype% = TEXTFILES THEN
  810.         ListSym$ = TEXTNEEDS$
  811.     END IF
  812.  
  813.  
  814.     StillNeed& = GetCopyListCost(EXTRACOSTS$, ListSym$, "needmore")
  815.     cost& = 0
  816.     FOR i% = 1 TO 26 STEP 1
  817.         cost&  = cost& + VAL(GetListItem(ListSym$, i%))
  818.         IF VAL(GetListItem("needmore", i%)) > 0 THEN
  819.  
  820.         ELSE
  821.  
  822.         END IF
  823.     NEXT i%
  824.     ReplaceListItem STATUSTEXT$, ftype%, STR$(cost& / 1024) + " K"
  825.  
  826.     IF fExtra% THEN
  827.         ReplaceListItem EXTRACOSTS$, ndrive%, "0"
  828.     END IF
  829.     RestoreCursor CursorSave%
  830.     ListSym$ = ""
  831.  
  832. END SUB
  833.  
  834. '*************************************************************************
  835. SUB RecalcPath STATIC
  836.  
  837.     CursorSave% = ShowWaitCursor()
  838.  
  839.     RecalcOptFiles (APPFILES)
  840.     RecalcOptFiles (IMPORTFILES)
  841.     RecalcOptFiles (HELPFILES)
  842.     RecalcOptFiles (EFCTFILES)
  843.     RecalcOptFiles (TUTFILES)
  844.     RecalcOptFiles (TEXTFILES)
  845.     RecalcOptFiles (SCANFILES)
  846.  
  847.     RestoreCursor CursorSave%
  848.  
  849. END SUB
  850.  
  851.  
  852. '*************************************************************************
  853. SUB SetDriveStatus STATIC
  854.  
  855.     TooManyFiles% = 0
  856.     drive$ = MID$(PICTPUB$, 1, 1)
  857.     ndrive% = ASC(ucase$(drive$)) - ASC("A") + 1
  858.     cost1& = VAL(GetListItem(APPNEEDS$, ndrive%)) + VAL(GetListItem(IMPORTNEEDS$, ndrive%))  + VAL(GetListItem(TEXTNEEDS$, ndrive%))
  859.     cost2& = VAL(GetListItem(TUTNEEDS$, ndrive%)) + VAL(GetListItem(EFCTNEEDS$, ndrive%)) + VAL(GetListItem(HELPNEEDS$, ndrive%)) + VAL(GetListItem(SCANNEEDS$, ndrive%))
  860.     cost& = cost1& + cost2&
  861.     free& = GetFreeSpaceForDrive(drive$)
  862.     ReplaceListItem DRIVETEXT$, 1, ucase$(drive$) + ":"
  863.     ReplaceListItem DRIVETEXT$, 2, STR$(cost& / 1024) + " K"
  864.     ReplaceListItem DRIVETEXT$, 3, STR$(free& / 1024) + " K"
  865.     IF cost& > free& THEN
  866.         TooManyFiles% = 1
  867.     END IF
  868.  
  869.     IF drive$ = WINDRIVE$ THEN
  870.         ReplaceListItem DRIVETEXT$, 4, ""
  871.         ReplaceListItem DRIVETEXT$, 5, ""
  872.         ReplaceListItem DRIVETEXT$, 6, ""
  873.     ELSE
  874.         ndrive% = ASC(ucase$(WINDRIVE$)) - ASC("A") + 1
  875.     cost1& = VAL(GetListItem(APPNEEDS$, ndrive%)) + VAL(GetListItem(IMPORTNEEDS$, ndrive%)) + VAL(GetListItem(TEXTNEEDS$, ndrive%)) + VAL(GetListItem(SCANNEEDS$, ndrive%))
  876.     cost2& = VAL(GetListItem(TUTNEEDS$, ndrive%)) + VAL(GetListItem(EFCTNEEDS$, ndrive%)) + VAL(GetListItem(HELPNEEDS$, ndrive%))
  877.         cost& = cost1& + cost2&
  878.         IF cost& = 0 THEN
  879.             ReplaceListItem DRIVETEXT$, 4, ""
  880.             ReplaceListItem DRIVETEXT$, 5, ""
  881.             ReplaceListItem DRIVETEXT$, 6, ""
  882.         ELSE
  883.             free& = GetFreeSpaceForDrive(WINDRIVE$)
  884.             ReplaceListItem DRIVETEXT$, 4, WINDRIVE$ + ":"
  885.             ReplaceListItem DRIVETEXT$, 5, STR$(cost& / 1024) + " K"
  886.             ReplaceListItem DRIVETEXT$, 6, STR$(free& / 1024) + " K"
  887.         END IF
  888.         IF cost& > free& THEN
  889.             TooManyFiles% = 1
  890.         END IF
  891.     END IF
  892. END SUB
  893.  
  894.  
  895. '*************************************************************************
  896. FUNCTION MakePath (szDir$, szFile$) STATIC AS STRING
  897.     IF szDir$ = "" THEN
  898.         MakePath = szFile$
  899.     ELSEIF szFile$ = "" THEN
  900.         MakePath = szDir$
  901.     ELSEIF MID$(szDir$, LEN(szDir$), 1) = "\" THEN
  902.         MakePath = szDir$ + szFile$
  903.     ELSE
  904.         MakePath = szDir$ + "\" + szFile$
  905.     END IF
  906. END FUNCTION
  907.  
  908. '*************************************************************************
  909. SUB AddOptFilesToCopyList (ftype%) STATIC
  910.  
  911.  IF GetListItem(CHECKSTATES$, ftype%) = "ON" THEN
  912.         SrcDir$ = GetSymbolValue("STF_SRCDIR")
  913.         SrcFileDir$ = MakePath (SrcDir$, "INSTALL")
  914.  
  915.         IF ftype% = APPFILES THEN
  916.             OLE_Process
  917.             AddSectionFilestoCopyList "Maindbf", SrcFileDir$, PICTPUB$
  918.             AddSectionFilestoCopyList "Thumbcd", SrcFileDir$, PICTPUB$
  919.  
  920.             AddSectionFilesToCopyList "Appfiles", SrcFileDir$, PICTPUB$
  921.             AddSectionFilesToCopyList "Mainini", SrcFileDir$, PICTPUB$
  922.  
  923.             AddSectionFilestoCopyList "Macros", SrcFileDir$, PICTPUB$
  924.  
  925.             AddSectionFilestoCopyList "Printstyles", SrcFileDir$, PICTPUB$
  926.             AddSectionFilestoCopyList "Palettes", SrcFileDir$, PICTPUB$
  927.  
  928.             AddSectionFilestoCopyList "Defaulttextures", SrcFileDir$, PICTPUB$
  929.             AddSectionFilestoCopyList "Defaulttexturebrush", SrcFileDir$, PICTPUB$
  930.             AddSectionFilestoCopyList "Brushes", SrcFileDir$, PICTPUB$
  931.  
  932.             AddSectionFilesToCopyList "Musttutorial", SrcFileDir$, PICTPUB$
  933.  
  934.             AddSectionFilestoCopyList "Thumbs", SrcFileDir$, PICTPUB$
  935.             AddSectionFilestoCopyList "Clipbits", SrcFileDir$, PICTPUB$
  936.  
  937.  
  938.          ENDIF
  939.  
  940.         IF ftype% = IMPORTFILES THEN
  941.             AddSectionFilestoCopyList "Filterappfiles", SrcFileDir$, PICTPUB$
  942.             AddSectionFilestoCopyList "Filtersini", SrcFileDir$, PICTPUB$
  943.             AddSectionFilesToCopyList "Filters", SrcFileDir$, PICTPUB$
  944.         ENDIF
  945.  
  946.         IF ftype% = TUTFILES THEN
  947.             AddSectionFilesToCopyList "Tutorial", SrcFileDir$, PICTPUB$
  948.             AddSectionFilestoCopyList "Tutordbf", SrcFileDir$, PICTPUB$
  949.         ENDIF
  950.  
  951.         IF ftype% = HELPFILES THEN
  952.             AddSectionFilestoCopyList "Helpfile1", SrcFileDir$, PICTPUB$
  953.             AddSectionFilestoCopyList "Helpfile2", SrcFileDir$, PICTPUB$
  954.         ENDIF
  955.  
  956.         IF ftype% = EFCTFILES THEN
  957.             AddSectionFilestoCopyList "Effects", SrcFileDir$, PICTPUB$
  958.         ENDIF
  959.  
  960.         IF ftype% = TEXTFILES THEN
  961.             AddSectionFilestoCopyList "Textrcd", SrcFileDir$, PICTPUB$
  962.             AddSectionFilestoCopyList "Brushcd", SrcFileDir$, PICTPUB$
  963.         END IF
  964.  
  965.         IF ftype% = SCANFILES THEN
  966.             AddSectionFilestoCopyList "Devices", SrcFileDir$, PICTPUB$
  967.         END IF
  968.  
  969.         SrcDir$ = ""
  970.  
  971.  
  972. ENDIF
  973. END SUB
  974.  
  975. SUB OLE_Process STATIC
  976. SrcDir$ = GetSymbolValue("STF_SRCDIR")
  977. SrcFileDir$ = MakePath (SrcDir$, "INSTALL")
  978. SysDir$ = WINDIRECT$+"SYSTEM"
  979.  
  980.  
  981.         FOR i% = 1 TO GetListLength(VERTEXT$) STEP 1
  982.  
  983.             IF DoesFileExist(SYSTEMDIRECT$+GetListItem(VERTEXT$, i%), femExist) THEN
  984.                 VStr$=GetVersionOfFile(SYSTEMDIRECT$+GetListItem(VERTEXT$, i%))
  985.                 PPStr$=GetSectionKeyVersion("Ole",GetListItem(VERTEXT$, i%))
  986.                 CHKIT$= GetListItem(VERTEXT$, i%)
  987.                 IF Vstr$=PPStr$ Then
  988.                 GOTO JUMPA
  989.                 ENDIF
  990.                 FOR j% = 1 to 4 STEP 1
  991.                     IF GetVersionNthField(PPStr$, j%) > GetVersionNthField(VStr$, j%) THEN
  992.                         AddSectionKeyFileToCopyList "Ole", GetListItem(VERTEXT$, i%), SrcFileDir$, SysDir$
  993.                         EXIT FOR
  994.                     ENDIF
  995.                 NEXT j%
  996.             ELSE
  997.                 CHKIT$= GetListItem(VERTEXT$, i%)
  998.                 AddSectionKeyFileToCopyList "Ole", GetListItem(VERTEXT$, i%), SrcFileDir$, SysDir$
  999.             ENDIF
  1000.         JUMPA:
  1001.         NEXT i%
  1002. END SUB
  1003.  
  1004.