home *** CD-ROM | disk | FTP | other *** search
/ On Hand / On_Hand_From_Softbank_1994_Release_2_Disc_2_1994.iso / 00018 / s / msp2.ms_ / msp2.bin
Text File  |  1993-06-28  |  62KB  |  2,045 lines

  1. ''INTL Remove one ' from line below
  2. ''$DEFINE INTL
  3.  
  4. GLOBAL hSetup AS INTEGER
  5. GLOBAL fFrameInit AS INTEGER
  6. GLOBAL fInstallInit AS INTEGER
  7.  
  8. CONST WF_STANDARD =   16
  9. CONST WF_ENHANCED =   32
  10. CONST WF_WINNT = 16384
  11.  
  12. CONST MB_OK    = 0
  13. CONST MB_ICONHAND = 16
  14. CONST MB_TASKMODAL   = 8192
  15.  
  16. DECLARE FUNCTION GetWindowsDirectory LIB "kernel" (szBuf$, cbBuf%) AS INTEGER
  17. DECLARE FUNCTION GetSystemDirectory LIB "kernel" (szBuf$, cbBuf%) AS INTEGER
  18. DECLARE FUNCTION GetVersion LIB "kernel" AS INTEGER
  19. DECLARE FUNCTION GetWinFlags LIB "kernel" AS LONG
  20.  
  21. CONST cmoCopy  = 2
  22. CONST cmoOverwrite   = 1024
  23. CONST cmoNone  = 0
  24.  
  25. CONST femExists  = 0
  26.  
  27. CONST grcOkay    = 0
  28. CONST grcNotOkay = 1
  29. CONST grcUserQuit   = 48
  30.  
  31. CONST cbSymValMax = 512
  32.  
  33. CONST STFERR   = 1024
  34. CONST STFQUIT  = 1025
  35.  
  36. DECLARE FUNCTION FOpenInf LIB "mscomstf.dll" (szFile$, fCheck%, fCheckSyms%) AS INTEGER
  37. DECLARE FUNCTION HShowWaitCursor LIB "msshlstf.dll" AS INTEGER
  38. DECLARE FUNCTION FRestoreCursor  LIB "msshlstf.dll" (hPrev%) AS INTEGER
  39. DECLARE FUNCTION FMakeListInfSectionField LIB "mscomstf.dll" (szSym$, szSect$, iField%) AS INTEGER
  40.  
  41. DECLARE FUNCTION FSetBitmap LIB "msshlstf.dll" (szDll$, Bitmap%) AS INTEGER
  42. DECLARE FUNCTION FDoDialogExt LIB "msuilstf.dll" (hwnd%, szDll$, Dlg%, szDlgProc$, szHelpDll$, HelpDlg%, szHelpProc$) AS INTEGER
  43. DECLARE FUNCTION FKillNDialogs LIB "msuilstf.dll" (n%) AS INTEGER
  44. DECLARE SUB SetWindowText LIB "User" (hwnd%, lpString$)
  45. DECLARE FUNCTION FSetSymbolValue LIB "msshlstf.dll" (szSymbol$, szValue$) AS INTEGER
  46. DECLARE FUNCTION FRemoveSymbol LIB "mscomstf.dll" (szSym$) AS INTEGER
  47. DECLARE FUNCTION CbGetSymbolValue LIB "mscomstf.dll" (szSymbol$, szValue$, Length%) AS INTEGER
  48. DECLARE FUNCTION UsGetListLength LIB "mscomstf.dll" (szSymbol$) AS INTEGER
  49. DECLARE FUNCTION CbGetListItem LIB "mscomstf.dll" (szListSymbol$, n%, szListItem$, cbMax%) AS INTEGER
  50. DECLARE FUNCTION FAddListItem LIB "mscomstf.dll" (szListSymbol$, szListItem$) AS INTEGER
  51. DECLARE FUNCTION FReplaceListItem LIB "mscomstf.dll" (szListSymbol$, n%, szListItem$) AS INTEGER
  52.  
  53. DECLARE FUNCTION InitializeFrame LIB "msshlstf.dll" (szCmdLine$) AS INTEGER
  54. DECLARE FUNCTION HwndFrame LIB "msshlstf.dll" AS INTEGER
  55. DECLARE FUNCTION HinstFrame LIB "msshlstf.dll" AS INTEGER
  56.  
  57. DECLARE SUB   ProSetPos LIB "msinsstf.dll" (x%, y%)
  58. DECLARE FUNCTION FAddSectionFilesToCopyList LIB "mscomstf.dll" (szSect$, szSrc$, szDest$) AS INTEGER
  59. DECLARE FUNCTION FAddSectionKeyFileToCopyList LIB "mscomstf.dll" (szSect$, szKey$, szSrc$, szDest$) AS INTEGER
  60. DECLARE FUNCTION GrcCopyFilesInCopyList LIB "msinsstf.dll" (hInstance%) AS INTEGER
  61. DECLARE FUNCTION FRemoveIniSection LIB "msinsstf.dll" (szFile$, szSect$, cmo%) AS INTEGER
  62. DECLARE FUNCTION FCreateIniKeyValue LIB "msinsstf.dll" (szFile$, szSect$, szKey$, szValue$, cmo%) AS INTEGER
  63. DECLARE FUNCTION FRemoveIniKey LIB "msinsstf.dll" (szFile$, szSect$, szKey$, cmo%) AS INTEGER
  64. DECLARE FUNCTION FCreateProgManGroup LIB "msinsstf.dll" (szGroup$, szPath$, cmo%) AS INTEGER
  65. DECLARE FUNCTION FCreateProgManItem LIB "msinsstf.dll" (szGroup$, szItem$, szCmd$, cmo%) AS INTEGER
  66. DECLARE FUNCTION FShowProgManGroup LIB "msinsstf.dll" (szGroup$, szCmd$, cmo%) AS INTEGER
  67. DECLARE SUB   ResetCopyList LIB "msinsstf.dll"
  68. DECLARE FUNCTION LcbGetCopyListCost LIB "msinsstf.dll" (szExtraList$, szCostList$, szNeedList$) AS LONG
  69. DECLARE FUNCTION FInitializeInstall LIB "msinsstf.dll" (hinst%, hwndFrame%) AS INTEGER
  70. DECLARE FUNCTION FIsDirWritable LIB "msinsstf.dll" (szDir$) AS INTEGER
  71. DECLARE FUNCTION FAddToBillboardList LIB "msinsstf.dll" (szDll$, idDlg%, szProc$, lTicks&) AS INTEGER
  72. DECLARE FUNCTION SetDecompMode LIB "msinsstf.dll" (fMode%) AS INTEGER
  73.  
  74. DECLARE SUB SetBitmap(szDll$, Bitmap%)
  75. DECLARE FUNCTION UIStartDlg(szDll$, Dlg%, szDlgProc$, HelpDlg%, szHelpProc$) AS STRING
  76. DECLARE SUB UIPop (n%)
  77. DECLARE SUB UIPopAll
  78. DECLARE SUB SetTitle (sz$)
  79. DECLARE SUB ReadInfFile (szFile$)
  80. DECLARE SUB SetSymbolValue (szSymbol$, szValue$)
  81. DECLARE SUB RemoveSymbol (szSym$)
  82. DECLARE FUNCTION GetSymbolValue (szSymbol$) AS STRING
  83. DECLARE FUNCTION GetListLength(szSymbol$) AS INTEGER
  84. DECLARE FUNCTION GetListItem(szSymbol$, n%) AS STRING
  85. DECLARE SUB AddListItem(szSymbol$, szItem$)
  86. DECLARE SUB ReplaceListItem(szSymbol$, n%, szItem$)
  87.  
  88. DECLARE FUNCTION InitFrame (szCmdLine$) AS INTEGER
  89. DECLARE FUNCTION InitSetup (szCmdLine$) AS INTEGER
  90.  
  91. DECLARE FUNCTION ShowWaitCursor AS INTEGER
  92. DECLARE SUB RestoreCursor (hPrev%)
  93. DECLARE SUB MakeListFromSectionFilename (szSym$, szSect$)
  94.  
  95. DECLARE SUB AddSectionFilesToCopyList (szSect$, szSrc$, szDest$)
  96. DECLARE SUB AddSectionKeyFileToCopyList (szSect$, szKey$, szSrc$, szDest$)
  97. DECLARE SUB CopyFilesInCopyList
  98. DECLARE SUB RemoveIniSection (szFile$, szSect$, cmo%)
  99. DECLARE SUB CreateIniKeyValue (szFile$, szSect$, szKey$, szValue$, cmo%)
  100. DECLARE SUB RemoveIniKey (szFile$, szSect$, szKey$, cmo%)
  101. DECLARE SUB CreateProgmanGroup (szGroup$, szPath$, cmo%)
  102. DECLARE SUB CreateProgmanItem (szGroup$, szItem$, szCmd$, szOther$, cmo%)
  103. DECLARE SUB ShowProgmanGroup (szGroup$, Cmd%, cmo%)
  104. DECLARE SUB ClearCopyList
  105. DECLARE FUNCTION GetCopyListCost (szExtraList$, szCostList$, szNeedList$) AS LONG
  106. DECLARE SUB InitInstall
  107. DECLARE SUB AddToBillboardList (szDll$, idDlg%, szProc$, lTicks&)
  108. DECLARE SUB SetCopyGaugePosition (x%, y%)
  109. DECLARE FUNCTION IsDirWritable (szDir$) AS INTEGER
  110.  
  111. DECLARE FUNCTION GetWindowsMajorVersion AS INTEGER
  112. DECLARE FUNCTION GetWindowsMinorVersion AS INTEGER
  113. DECLARE FUNCTION GetWindowsMode AS INTEGER
  114. DECLARE FUNCTION GetWindowsDir  AS STRING
  115. DECLARE FUNCTION GetWindowsSysDir AS STRING
  116.  
  117. FUNCTION InitSetup(szCmdLine$) STATIC AS INTEGER
  118.  fFrameInit = 0
  119.  fInstallInit = 0
  120.  
  121.  IF hSetup > 0 THEN
  122.  END IF
  123.  
  124.  i% = InitFrame(szCmdLine$)
  125.  fFrameInit = 1
  126.  
  127.  InitInstall
  128.  fInstallInit = 1
  129.  
  130.  InitSetup = i%
  131. END FUNCTION
  132.  
  133. FUNCTION InitFrame(szCmdLine$) STATIC AS INTEGER
  134.  IF hSetup > 0 THEN
  135.  ELSE
  136.   i% = InitializeFrame(szCmdLine$)
  137.   IF i% = -1 THEN
  138.    END
  139.   ELSEIF i% = 0 THEN
  140.    END
  141.   ELSE
  142.    InitFrame = i%
  143.   END IF
  144.  END IF
  145. END FUNCTION
  146.  
  147. SUB SetBitmap(szDll$, Bitmap%) STATIC
  148.  IF FSetBitmap(szDll$, Bitmap%) = 0 THEN
  149.   ERROR STFERR
  150.  END IF
  151. END SUB
  152.  
  153. SUB SetTitle(sz$) STATIC
  154.  SetWindowText HwndFrame(), sz$
  155. END SUB
  156.  
  157. SUB ReadInfFile (szFile$) STATIC
  158.  IF FOpenInf(szFile$, 1, 0) = 0 THEN
  159.   ERROR STFERR
  160.  END IF
  161. END SUB
  162.  
  163. FUNCTION UIStartDlg(szDll$, Dlg%, szDlgProc$, HelpDlg%, szHelpProc$) STATIC AS STRING
  164.  IF FDoDialogExt(HwndFrame(), szDll$, Dlg%, szDlgProc$, szDll$, HelpDlg%, szHelpProc$) = 0 THEN
  165.   ERROR STFERR
  166.  ELSE
  167.   UIStartDlg = GetSymbolValue("DLGEVENT")
  168.  END IF
  169. END FUNCTION
  170.  
  171. SUB UIPop (n%) STATIC
  172.  IF FKillNDialogs(n%) = 0 THEN
  173.   ERROR STFERR
  174.  END IF
  175. END SUB
  176.  
  177. SUB UIPopAll STATIC
  178.  IF FKillNDialogs(65535) = 0 THEN
  179.   ERROR STFERR
  180.  END IF
  181. END SUB
  182.  
  183. FUNCTION GetSymbolValue(szSymbol$) STATIC AS STRING
  184.  szValue$ = string$(cbSymValMax,32)
  185.  Length% = CbGetSymbolValue(szSymbol$, szValue$, cbSymValMax)
  186.  GetSymbolValue = szValue$
  187.  IF Length% >= cbSymValMax THEN
  188.   ERROR STFERR
  189.  END IF
  190.  IF szSymbol$ = "" THEN
  191.   ERROR STFERR
  192.  END IF
  193.  szValue$ = ""
  194. END FUNCTION
  195.  
  196. FUNCTION GetListLength(szSymbol$) STATIC AS INTEGER
  197.  GetListLength = UsGetListLength(szSymbol$)
  198.  IF szSymbol$ = "" THEN
  199.   ERROR STFERR
  200.  END IF
  201. END FUNCTION
  202.  
  203. FUNCTION GetListItem(szListSymbol$, nItem%) STATIC AS STRING
  204.  szListItem$ = string$(cbSymValMax,32)
  205.  Length% = CbGetListItem(szListSymbol$, nItem%, szListItem$, cbSymValMax)
  206.  GetListItem = szListItem$
  207.  IF Length% >= cbSymValMax THEN
  208.   ERROR STFERR
  209.  END IF
  210.  IF szListSymbol$ = "" THEN
  211.   ERROR STFERR
  212.  END IF
  213.  if nItem% <= 0 or nItem% > GetListLength(szListSymbol$) then
  214.   ERROR STFERR
  215.  end if
  216.  szListItem$ = ""
  217. END FUNCTION
  218.  
  219. SUB AddListItem(szSymbol$, szItem$) STATIC
  220.  IF FAddListItem(szSymbol$, szItem$) = 0 THEN
  221.   ERROR STFERR
  222.  END IF
  223. END SUB
  224.  
  225. SUB ReplaceListItem(szSymbol$, n%, szItem$) STATIC
  226.  IF FReplaceListItem(szSymbol$, n%, szItem$) = 0 THEN
  227.   ERROR STFERR
  228.  END IF
  229. END SUB
  230.  
  231. SUB SetSymbolValue(szSymbol$, szValue$) STATIC
  232.  IF FSetSymbolValue(szSymbol$, szValue$) = 0 THEN
  233.   ERROR STFERR
  234.  END IF
  235. END SUB
  236.  
  237. SUB RemoveSymbol(szSym$) STATIC
  238.  IF FRemoveSymbol(szSym$) = 0 THEN
  239.   ERROR STFERR
  240.  END IF
  241. END SUB
  242.  
  243. FUNCTION ShowWaitCursor STATIC AS INTEGER
  244.  ShowWaitCursor = HShowWaitCursor
  245. END FUNCTION
  246.  
  247. SUB RestoreCursor (hPrev%) STATIC
  248.  i% = FRestoreCursor(hPrev%)
  249.  IF i% = 0 THEN
  250.   ERROR STFERR
  251.  END IF
  252. END SUB
  253.  
  254. SUB MakeListFromSectionFilename (szSym$, szSect$) STATIC
  255.  IF FMakeListInfSectionField(szSym$, szSect$, 1) = 0 THEN
  256.   ERROR STFERR
  257.  END IF
  258. END SUB
  259.  
  260. SUB InitInstall STATIC
  261.  IF hSetup > 0 THEN
  262.  ELSEIF FInitializeInstall(HinstFrame(), HwndFrame()) = 0 THEN
  263.   END
  264.  END IF
  265. END SUB
  266.  
  267. SUB RemoveIniSection (szFile$, szSect$, cmo%) STATIC
  268.  IF FRemoveIniSection(szFile$, szSect$, cmo%) = 0 THEN
  269.   ERROR STFERR
  270.  END IF
  271. END SUB
  272.  
  273.  
  274. SUB CreateIniKeyValue (szFile$, szSect$, szKey$, szValue$, cmo%) STATIC
  275.  IF FCreateIniKeyValue(szFile$, szSect$, szKey$, szValue$, cmo%) = 0 THEN
  276.   ERROR STFERR
  277.  END IF
  278. END SUB
  279.  
  280. SUB RemoveIniKey (szFile$, szSect$, szKey$, cmo%) STATIC
  281.  IF FRemoveIniKey(szFile$, szSect$, szKey$, cmo%) = 0 THEN
  282.   ERROR STFERR
  283.  END IF
  284. END SUB
  285.  
  286. SUB CreateProgmanGroup (szGroup$, szPath$, cmo%) STATIC
  287.  IF FCreateProgManGroup(szGroup$, szPath$, cmo%) = 0 THEN
  288.   ERROR STFERR
  289.  END IF
  290. END SUB
  291.  
  292. SUB ShowProgmanGroup (szGroup$, Cmd%, cmo%) STATIC
  293.  IF FShowProgManGroup(szGroup$, STR$(Cmd%), cmo%) = 0 THEN
  294.   ERROR STFERR
  295.  END IF
  296. END SUB
  297.  
  298. SUB ClearCopyList STATIC
  299.  ResetCopyList
  300. END SUB
  301.  
  302. FUNCTION GetCopyListCost (szExtraList$, szCostList$, szNeedList$) STATIC AS LONG
  303.  lNeed& = LcbGetCopyListCost (szExtraList$, szCostList$, szNeedList$)
  304.  IF lNeed& < 0 THEN
  305.   ERROR STFERR
  306.  END IF
  307.  GetCopyListCost = lNeed&
  308. END FUNCTION
  309.  
  310. SUB CreateProgmanItem (szGroup$, szItem$, szCmd$, szOther$, cmo%) STATIC
  311.  szItemNew$ = szItem$
  312.  IF szOther$ <> "" THEN
  313.   szItemNew$ = szItem$ + "," + szOther$
  314.  END IF
  315.  
  316.  IF FCreateProgManItem(szGroup$, szItemNew$, szCmd$, cmo%) = 0 THEN
  317.   ERROR STFERR
  318.  END IF
  319.  szItemNew$ = ""
  320. END SUB
  321.  
  322. SUB CopyFilesInCopyList STATIC
  323.  grc% = GrcCopyFilesInCopyList (HinstFrame())
  324.  
  325.  IF grc% = grcUserQuit THEN
  326.   ERROR STFQUIT
  327.  ELSEIF grc% > 0 THEN
  328.   ERROR STFERR
  329.  END IF
  330. END SUB
  331.  
  332. SUB AddSectionFilesToCopyList (szSect$, szSrc$, szDest$) STATIC
  333.  IF FAddSectionFilesToCopyList (szSect$, szSrc$, szDest$) = 0 THEN
  334.   ERROR STFERR
  335.  END IF
  336. END SUB
  337.  
  338. SUB AddSectionKeyFileToCopyList (szSect$, szKey$, szSrc$, szDest$) STATIC
  339.  IF FAddSectionKeyFileToCopyList (szSect$, szKey$, szSrc$, szDest$) = 0 THEN
  340.   ERROR STFERR
  341.  END IF
  342. END SUB
  343.  
  344. SUB AddToBillboardList (szDll$, idDlg%, szProc$, lTicks&) STATIC
  345.  IF FAddToBillboardList(szDll$, idDlg%, szProc$, lTicks&) = 0 THEN
  346.   ERROR STFERR
  347.  END IF
  348. END SUB
  349.  
  350. SUB SetCopyGaugePosition (x%, y%) STATIC
  351.  ProSetPos x%, y%
  352. END SUB
  353.  
  354. FUNCTION IsDirWritable (szDir$) STATIC AS INTEGER
  355.  IsDirWritable = FIsDirWritable(szDir$)
  356. END FUNCTION
  357.  
  358. FUNCTION GetWindowsMajorVersion STATIC AS INTEGER
  359.  GetWindowsMajorVersion = GetVersion() MOD 256
  360. END FUNCTION
  361.  
  362. FUNCTION GetWindowsMinorVersion STATIC AS INTEGER
  363.  GetWindowsMinorVersion = GetVersion() / 256
  364. END FUNCTION
  365.  
  366. FUNCTION GetWindowsMode STATIC AS INTEGER
  367.  GetWindowsMode = 0
  368.  longTmp& = GetWinFlags()
  369.  IF longTmp& AND WF_WINNT THEN
  370.   GetWindowsMode = 3
  371.  ELSEIF longTmp& AND WF_STANDARD THEN
  372.   GetWindowsMode = 1
  373.  ELSEIF longTmp& AND WF_ENHANCED THEN
  374.   GetWindowsMode = 2
  375.  END IF
  376. END FUNCTION
  377.  
  378. FUNCTION GetWindowsDir STATIC AS STRING
  379.  szBuf$ = string$(256, 32)
  380.  cbBuf% = GetWindowsDirectory(szBuf$, 256)
  381.  
  382.  IF cbBuf% = 0 THEN
  383.   GetWindowsDir = ""
  384.   ERROR STFERR
  385.  ELSE
  386.   IF cbBuf% > 255 THEN
  387.    ERROR STFERR
  388.   END IF
  389.   szBuf$ = RTRIM$(szBuf$)
  390.   IF MID$(szBuf$, 1, 1) = "\" THEN
  391.    szBuf$ = MID$(GetWindowsSysDir, 1, 2) + szBuf$
  392.   ELSEIF MID$(szBuf$, 2, 1) <> ":" THEN
  393.    szBuf$ = MID$(GetWindowsSysDir, 1, 3) + szBuf$
  394.   END IF
  395.   GetWindowsDir = szBuf$
  396.  END IF
  397.  
  398.  szBuf$ = ""
  399. END FUNCTION
  400.  
  401. FUNCTION GetWindowsSysDir STATIC AS STRING
  402.  szBuf$ = string$(256, 32)
  403.  cbBuf% = GetSystemDirectory(szBuf$, 256)
  404.  
  405.  IF cbBuf% = 0 THEN
  406.   ERROR STFERR
  407.  ELSE
  408.   IF cbBuf% > 255 THEN
  409.    ERROR STFERR
  410.   END IF
  411.   szBuf$ = RTRIM$(szBuf$)
  412.   IF MID$(szBuf$, 1, 1) = "\" THEN
  413.    szBuf$ = MID$(CURDIR$, 1, 2) + szBuf$
  414.   ELSEIF MID$(szBuf$, 2, 1) <> ":" THEN
  415.    szBuf$ = MID$(CURDIR$, 1, 3) + szBuf$
  416.   END IF
  417.   GetWindowsSysDir = szBuf$
  418.  END IF
  419.  
  420.  szBuf$ = ""
  421. END FUNCTION
  422.  
  423. DECLARE FUNCTION LcbFreeDrive LIB "msdetstf.dll" (nDrive%) AS LONG
  424. DECLARE FUNCTION FDoesFileExist LIB "msdetstf.dll" (szFileName$, mode%) AS INTEGER
  425. DECLARE FUNCTION FDoesIniKeyExist LIB "msdetstf.dll" (szFile$, szSect$, szKey$) AS INTEGER
  426. DECLARE FUNCTION GetTypeFaceNameFromTTF LIB "msdetstf.dll" (szFile$, szBuf$, cbBuf%) AS INTEGER
  427. DECLARE FUNCTION GetExistingFOTFileForTTF LIB "msdetstf.dll" (szFile$, szBuf$, cbBuf%) AS INTEGER
  428.  
  429. DECLARE FUNCTION GetFreeSpaceForDrive (szDrive$) AS LONG
  430. DECLARE FUNCTION DoesFileExist (szFile$, mode%) AS INTEGER
  431. DECLARE FUNCTION DoesIniKeyExist (szFile$, szSect$, szKey$) AS INTEGER
  432.  
  433. FUNCTION GetFreeSpaceForDrive (szDrive$) STATIC  AS LONG
  434.  GetFreeSpaceForDrive = LcbFreeDrive(ASC(UCASE$(szDrive$)) - ASC("A") + 1)
  435. END FUNCTION
  436.  
  437. FUNCTION DoesFileExist (szFileName$, mode%) STATIC  AS INTEGER
  438.  DoesFileExist = FDoesFileExist(szFileName$, mode%)
  439. END FUNCTION
  440.  
  441. FUNCTION DoesIniKeyExist (szFile$, szSect$, szKey$) STATIC  AS INTEGER
  442.  DoesIniKeyExist = FDoesIniKeyExist(szFile$, szSect$, szKey$)
  443. END FUNCTION
  444.  
  445. TRAP CleanupTrap From "MSSHLSTF.DLL"
  446.  
  447. End Trap
  448.  
  449. hSetup = InitSetup(COMMAND$)
  450.  
  451. ON ERROR GOTO QUIT
  452.  
  453. CONST CDALREADYUSED  = 7100
  454. CONST CDBADFILE   = 7200
  455. CONST CDCONFIRMINFO  = 7300
  456. CONST CDGETNAME   = 7400
  457. CONST CDGETNAMEORG   = 7500
  458. CONST CDGETORG    = 7600
  459. CONST CDBADNAME   = 7700
  460. CONST CDBADORG    = 7800
  461.  
  462. DECLARE FUNCTION FInitSystem1 LIB "mscpydis.dll" (did%, sz$, fNet%) AS INTEGER
  463. DECLARE FUNCTION FInitSystem3 LIB "mscpydis.dll" (did%, sz$, fAlways%) AS INTEGER
  464. DECLARE FUNCTION FCloseSystem LIB "mscpydis.dll" (szSect$, szKey$, szDst$, wResType%, wResId%) AS INTEGER
  465.  
  466. DECLARE FUNCTION InitSystemRead  (did%, sz$, fNet%) AS INTEGER
  467. DECLARE FUNCTION InitSystemWrite (did%, sz$, fAlways%) AS INTEGER
  468. DECLARE SUB CloseSystem (szSect$, szKey$, szDst$, wResType%, wResId%)
  469.  
  470. DECLARE FUNCTION InitSystem (did%, sz$, fNet%) AS INTEGER
  471. DECLARE FUNCTION InitSystemDlgs  (fNet%) AS INTEGER
  472. DECLARE SUB BadNameOrg(dlg%)
  473. DECLARE FUNCTION NameOrgOkay (dlg%, szName$, szOrg$) AS INTEGER
  474.  
  475. FUNCTION InitSystemRead (did%, sz$, fNet%) STATIC AS INTEGER
  476.  InitSystemRead = FInitSystem1(did%, sz$, fNet%)
  477. END FUNCTION
  478.  
  479. FUNCTION InitSystemWrite (did%, sz$, fAlways%) STATIC AS INTEGER
  480.  InitSystemWrite = FInitSystem3(did%, sz$, fAlways%)
  481. END FUNCTION
  482.  
  483. SUB CloseSystem (szSect$, szKey$, szDst$, wResType%, wResId%) STATIC
  484.  IF FCloseSystem (szSect$, szKey$, szDst$, wResType%, wResId%) = 0 THEN
  485.   ERROR STFERR
  486.  END IF
  487. END SUB
  488.  
  489. FUNCTION InitSystem (did%, sz$, fNet%) STATIC AS INTEGER
  490.  IF InitSystemRead(did%, sz$, fNet%) = 0 THEN
  491.   InitSystem = 0
  492.  ELSEIF InitSystemDlgs(fNet%) = 0 THEN
  493.   InitSystem = 0
  494.  ELSEIF InitSystemWrite(did%, sz$, 0) = 0 THEN
  495.   InitSystem = 0
  496.  ELSE
  497.   InitSystem = 1
  498.  END IF
  499. END FUNCTION
  500.  
  501. FUNCTION InitSystemDlgs (fNet%) STATIC AS INTEGER
  502.  
  503.  fOkay%  = 0
  504.  CDDLL$  = "mscuistf.dll"
  505.  szName$ = GetSymbolValue("STF_CD_NAME")
  506.  szOrg$  = GetSymbolValue("STF_CD_ORG")
  507.  sz$ = MID$(GetSymbolValue("STF_CD_TYPE"), 1, 1)
  508.  
  509.  IF sz$ = "N" THEN
  510.   IF fNet <> 0 THEN
  511.    GOTO ISDN1
  512.   ELSE
  513.    GOTO ISDN2
  514.   END IF
  515.  ELSEIF (sz$ = "U") OR (sz$ = "O") THEN
  516.   GOTO ISDU
  517.  ELSEIF sz$ = "W" THEN
  518.   GOTO ISDA
  519.  ELSE
  520.   GOTO ISDB
  521.  END IF
  522.  
  523. ISDN1:
  524.  SetSymbolValue "EditTextIn", ""
  525.  SetSymbolValue "EditFocus", ""
  526. ISDN1L1:
  527.  sz$ = UIStartDlg(CDDLL$, CDGETORG, "FEditDlgProc", 0, "")
  528.  
  529.  IF sz$ = "CONTINUE" THEN
  530.   szOrg$ = RTRIM$(LTRIM$(GetSymbolValue("EditTextOut")))
  531.   IF szOrg$ = "" THEN
  532.    BadNameOrg CDBADORG
  533.    GOTO ISDN1L1
  534.   END IF
  535.   IF NameOrgOkay(CDCONFIRMINFO, "", szOrg$) = 0 THEN
  536.    GOTO ISDN1L1
  537.   END IF
  538.   SetSymbolValue "STF_CD_ORG", szOrg$
  539.   fOkay% = 1
  540.  ELSEIF sz$ = "REACTIVATE" THEN
  541.   GOTO ISDN1L1
  542.  ELSE
  543.   SetSymbolValue "STF_CD_TYPE", "ERROR"
  544.  END IF
  545.  UIPop 1
  546.  GOTO ISDEND
  547.  
  548. ISDN2:
  549.  sz$ = UIStartDlg(CDDLL$, CDGETNAMEORG, "FNameOrgDlgProc", 0, "")
  550.  
  551.  IF sz$ = "CONTINUE" THEN
  552.   szName$ = RTRIM$(LTRIM$(GetSymbolValue("NameOut")))
  553.   szOrg$  = RTRIM$(LTRIM$(GetSymbolValue("OrgOut")))
  554.   IF szName$ = "" THEN
  555.    BadNameOrg CDBADNAME
  556.    GOTO ISDN2
  557.   END IF
  558.   IF szOrg$ = "" THEN
  559.    szOrg$ = " "
  560.   END IF
  561.   IF NameOrgOkay(CDCONFIRMINFO, szName$, szOrg$) = 0 THEN
  562.    GOTO ISDN2
  563.   END IF
  564.   SetSymbolValue "STF_CD_NAME", szName$
  565.   SetSymbolValue "STF_CD_ORG", szOrg$
  566.   fOkay% = 1
  567.  ELSE
  568.   SetSymbolValue "STF_CD_TYPE", "ERROR"
  569.  END IF
  570.  UIPop 1
  571.  GOTO ISDEND
  572.  
  573. ISDU:
  574.  fOkay% = NameOrgOkay(CDALREADYUSED, szName$, szOrg$)
  575.  GOTO ISDEND
  576.  
  577. ISDA:
  578.  SetSymbolValue "EditTextIn", ""
  579.  SetSymbolValue "EditFocus", ""
  580. ISDAL1:
  581.  sz$ = UIStartDlg(CDDLL$, CDGETNAME, "FEditDlgProc", 0, "")
  582.  
  583.  IF sz$ = "CONTINUE" THEN
  584.   szName$ = RTRIM$(LTRIM$(GetSymbolValue("EditTextOut")))
  585.   IF szName$ = "" THEN
  586.    BadNameOrg CDBADNAME
  587.    GOTO ISDAL1
  588.   END IF
  589.   IF NameOrgOkay(CDCONFIRMINFO, szName$, "") = 0 THEN
  590.    GOTO ISDAL1
  591.   END IF
  592.   SetSymbolValue "STF_CD_NAME", szName$
  593.   fOkay% = 1
  594.  ELSEIF sz$ = "REACTIVATE" THEN
  595.   GOTO ISDAL1
  596.  ELSE
  597.   SetSymbolValue "STF_CD_TYPE", "ERROR"
  598.  END IF
  599.  UIPop 1
  600.  GOTO ISDEND
  601.  
  602. ISDB:
  603.  sz$ = UIStartDlg(CDDLL$, CDBADFILE, "FInfoDlgProc", 0, "")
  604.  
  605.  IF sz$ = "CONTINUE" THEN
  606.   fOkay% = 1
  607.  END IF
  608.  UIPop 1
  609.  GOTO ISDEND
  610.  
  611. ISDEND:
  612.  InitSystemDlgs = fOkay%
  613.  CDDLL$  = ""
  614.  szName$ = ""
  615.  szOrg$  = ""
  616.  sz$  = ""
  617. END FUNCTION
  618.  
  619. SUB BadNameOrg(dlg%) STATIC
  620. BNOL1:
  621.  sz$ = UIStartDlg("mscuistf.dll", dlg%, "FInfoDlgProc", 0, "")
  622.  UIPop 1
  623.  sz$ = ""
  624. END SUB
  625.  
  626. FUNCTION NameOrgOkay (dlg%, szName$, szOrg$) STATIC AS INTEGER
  627.  RemoveSymbol "ConfirmTextIn"
  628.  AddListItem "ConfirmTextIn", szName$
  629.  AddListItem "ConfirmTextIn", szOrg$
  630. ILOL1:
  631.  sz$ = UIStartDlg("mscuistf.dll", dlg%, "FConfirmDlgProc", 0, "")
  632.  
  633.  IF sz$ = "CONTINUE" THEN
  634.   NameOrgOkay = 1
  635.  ELSE
  636.   NameOrgOkay = 0
  637.  END IF
  638.  UIPop 1
  639.  sz$ = ""
  640. END FUNCTION
  641.  
  642. CONST MaxSectionLen = 32
  643. CONST MaxPathLen = 64
  644. CONST MaxListLen = 12
  645.  
  646. TYPE FILEGRP
  647.  OptionId As INTEGER
  648.  Section AS STRING * MaxSectionLen
  649.  Needs   AS STRING * MaxListLen
  650.  ExtraNeeds AS INTEGER
  651.  
  652.  SourcePath AS STRING * MaxPathLen
  653.  DestPath AS STRING * MaxPathLen
  654.  
  655.  InList  AS POINTER TO STRING * MaxListLen
  656.  OutList AS POINTER TO STRING * MaxListLen
  657.  
  658. END TYPE
  659.  
  660. CONST APPFILES = 0
  661. CONST PUBCONVFILES = 1
  662. CONST PUBFLTFILES = 2
  663. CONST BDRFILES = 3
  664. CONST WINFILES = 4
  665. CONST WINSYSFILES = 5
  666. CONST WORDARTFILES = 6
  667. CONST NOTEITFILES = 7
  668. CONST MSDRAWFILES = 8
  669. CONST ARTGALRYFILES = 9
  670. CONST MSINFOFILES = 10
  671. CONST SETUPFILES = 11
  672. CONST MSPHELPFILES  = 12
  673. CONST NOTEITHLPFILES= 13
  674. CONST WORDARTHLPFILES = 14
  675. CONST MSDRAWHLPFILES = 15
  676. CONST ARTHLPFILES = 16
  677. CONST SPELLFILES = 17
  678. CONST CONFILES = 18
  679. CONST FLTDEPFILES = 19
  680. CONST FLTFILES = 20
  681. CONST PUBFILES = 21
  682. CONST PAPERFILES = 22
  683. CONST WIZFILES = 23
  684. CONST WIZCGMFILES = 24
  685. CONST CGMWIZFILES = 25
  686. CONST CGMFILES = 26
  687. CONST TTFFILES = 27
  688.  
  689. CONST MAXFILEGROUP = 28
  690.  
  691. CONST APPOPTION = 1
  692. CONST HELPOPTION = 2
  693. CONST SPELLOPTION = 3
  694. CONST COVOPTION  = 4
  695. CONST FLTOPTION  = 5
  696. CONST TEMPOPTION = 6
  697. CONST ARTSOPTION = 7
  698. CONST FONTOPTION = 8
  699.  
  700. CONST MAXOPTIONGROUP = 9
  701.  
  702. GLOBAL FileGrp(MAXFILEGROUP) AS FILEGRP
  703.  
  704. DECLARE FUNCTION GetListFromStringTable LIB "mscuistf.dll" as INTEGER
  705.  
  706. DECLARE SUB AddListOptFiles(FileID%)
  707. DECLARE SUB AddFileGrpToCopyList(FileID%)
  708. DECLARE SUB ChangeDestPath (FileID%, DestPath$)
  709. DECLARE SUB InitFileGroup(FileID%, OptionID%, ExtraNeeds%, Section$, SourcePath$, ListID%)
  710. DECLARE SUB AddOptionGrpToCopyList(SectionId%)
  711. DECLARE FUNCTION WasFileCopied(FileID%, nID%) AS INTEGER
  712.  
  713. SUB InitFileGroup(FileID%, OptionID%, ExtraNeeds%, Section$, SourcePath$, ListID%) STATIC
  714.  
  715.  FileGrp(FileID%).OptionId = OptionID%
  716.  FileGrp(FileID%).Section = Section$
  717.  FileGrp(FileID%).Needs = MID$(Section$,1,3) + MID$(STR$(FileID%),2) + "Needs"
  718.  FileGrp(FileID%).ExtraNeeds = ExtraNeeds
  719.  FileGrp(FileID%).SourcePath = SourcePath$
  720.  FileGrp(FileID%).DestPath = ""
  721.  
  722.  IF ListID% <> 0 THEN
  723.   ALLOCATE FileGrp(FileID%).InList , 1
  724.   ALLOCATE FileGrp(FileID%).OutList, 1
  725.  
  726.   FileGrp(FileID%).InList[0] = MID$(Section$,1,3) + MID$(STR$(FileID%),2) + "In"
  727.   FileGrp(FileID%).OutList[0] = MID$(Section$,1,3) + MID$(STR$(FileID%),2) + "Out"
  728.  
  729.   SetSymbolValue "ListSymbol", FileGrp(FileID%).InList[0]
  730.   SetSymbolValue "ListID", STR$(ListID)
  731.   i% = GetListFromStringTable()
  732.   SetSymbolValue "ListSymbol", FileGrp(FileID%).OutList[0]
  733.   i% = GetListFromStringTable()
  734.   RemoveSymbol "ListSymbol"
  735.   RemoveSymbol "ListID"
  736.  END IF
  737.  
  738. END SUB
  739.  
  740. STATIC SUB AddFileGrpToCopyList(FileID%)
  741.  AddSectionFilesToCopyList RTRIM$(FileGrp(FileID%).Section), RTRIM$(FileGrp(FileID%).SourcePath), RTRIM$(FileGrp(FileID%).DestPath)
  742. END SUB
  743.  
  744. SUB AddOptionGrpToCopyList(OptionId%) STATIC
  745.  FOR cCount% = 0 TO (MAXFILEGROUP-1) STEP 1
  746.   IF FileGrp(cCount%).OptionId = OptionId% THEN
  747.    AddSectionFilesToCopyList RTRIM$(FileGrp(cCount%).Section), RTRIM$(FileGrp(cCount%).SourcePath), RTRIM$(FileGrp(cCount%).DestPath)
  748.   END IF
  749.  NEXT cCount%
  750. END SUB
  751.  
  752. STATIC SUB AddListOptFiles(FileID%)
  753.  
  754.  InputList$ = FileGrp(FileID%).InList[0]
  755.  OutputList$ = FileGrp(FileID%).OutList[0]
  756.  Section$ = RTRIM$(FileGrp(FileID%).Section)
  757.  
  758.  NoOfInput% = GetListLength(InputList$)
  759.  NoOfOutput% = GetListLength(OutputList$)
  760.  
  761.  j% = 1
  762.  FOR i% = 1 To NoOfOutput% STEP 1
  763.  
  764.   WHILE (GetListItem(OutputList$, i%) <> GetListItem(InputList$, j%))
  765.    j% = j% + 1
  766.    IF (j% > NoOfInput%) THEN
  767.     EXIT FOR
  768.    END IF
  769.   WEND
  770.  
  771.   szKey$ = RTRIM$(FileGrp(FileID%).Section) + MID$(STR$(j%), 2)
  772.  
  773.   AddSectionKeyFileToCopyList RTRIM$(FileGrp(FileID%).Section), szKey$, RTRIM$(FileGrp(FileID%).SourcePath), RTRIM$(FileGrp(FileID%).DestPath)
  774.  
  775.  NEXT i%
  776.  
  777.  InputList$ = ""
  778.  OutputList$ = ""
  779.  Section$ = ""
  780. END SUB
  781.  
  782. FUNCTION WasFileCopied(FileID%, nID AS INTEGER) STATIC AS INTEGER
  783.  
  784.  WasFileCopied = 0
  785.  
  786.  InputList$ = FileGrp(FileID%).InList[0]
  787.  OutputList$ = FileGrp(FileID%).OutList[0]
  788.  
  789.  NoOfInput% = GetListLength(InputList$)
  790.  NoOfOutput% = GetListLength(OutputList$)
  791.  
  792.  j% = 1
  793.  FOR i% = 1 To NoOfOutput% STEP 1
  794.  
  795.   WHILE (GetListItem(OutputList$, i%) <> GetListItem(InputList$, j%))
  796.    j% = j% + 1
  797.    IF (j% > NoOfInput%) THEN
  798.     EXIT FOR
  799.    END IF
  800.   WEND
  801.  
  802.   IF j% = nID% THEN
  803.    WasFileCopied = 1
  804.   END IF
  805.  
  806.  NEXT i%
  807.  
  808.  InputList$ = ""
  809.  OutputList$ = ""
  810.  
  811. END FUNCTION
  812.  
  813. SUB ChangeDestPath (FileID%, DestPath$) STATIC
  814.  FileGrp(FileID%).DestPath = DestPath$
  815. END SUB
  816.  
  817. TYPE DRIVESTAT
  818.  Drive AS STRING * 1
  819.  DriveNo AS INTEGER
  820.  Cost AS LONG
  821.  Free AS LONG
  822. END TYPE
  823.  
  824. GLOBAL EXTRACOSTS$
  825.  
  826. DECLARE SUB InitSizeCalLib
  827. DECLARE SUB InitDriveStat(DriveStat AS POINTER TO DRIVESTAT, Drive$)
  828. DECLARE SUB RecalcPath
  829. DECLARE SUB SetDriveStatus(DriveStat AS POINTER TO DRIVESTAT, NoOfDrive%)
  830. DECLARE SUB AddOptFilesToCopyList(OptionId%, fForce%)
  831. DECLARE SUB RecalcOptFiles(OptionID%)
  832.  
  833. SUB InitSizeCalLib STATIC
  834.  EXTRACOSTS$  = "ExtraCosts"
  835.  FOR i% = 1 TO 26 STEP 1
  836.   AddListItem EXTRACOSTS$, "0"
  837.  NEXT i%
  838. END SUB
  839.  
  840. SUB InitDriveStat(DriveStat AS POINTER TO DRIVESTAT, Drive$) STATIC
  841.  DriveStat[0].Drive = MID$(Drive$, 1, 1)
  842.  DriveStat[0].DriveNo = ASC(UCASE$(DriveStat[0].Drive)) - ASC("A") + 1
  843.  DriveStat[0].Cost = 0
  844.  DriveStat[0].Free = 0
  845. END SUB
  846.  
  847. SUB SetDriveStatus(DriveStat AS POINTER TO DRIVESTAT, NoOfDrive%) STATIC
  848.  FOR cCount% = 0 TO (NoOfDrive-1) STEP 1
  849.   cost& = 0
  850.   OptionID% = 1
  851.   FOR cCount2% = 0 TO (MAXFILEGROUP-1) STEP 1
  852.    IF FileGrp(cCount2%).OptionId = OptionID% THEN
  853.     IF GetListItem("CheckItemsState", OptionID%) = "ON" THEN
  854.      cost& = cost& + VAL(GetListItem(FileGrp(cCount2%).Needs, DriveStat[cCount%].DriveNo))
  855.     END IF
  856.     OptionID = OptionID + 1
  857.    END IF
  858.   NEXT cCount2%
  859.   DriveStat[cCount%].Cost = cost&
  860.  
  861.   DriveStat[cCount%].Free = GetFreeSpaceForDrive(DriveStat[cCount%].Drive)
  862.  NEXT cCount%
  863. END SUB
  864.  
  865. SUB RecalcPath STATIC
  866.  FOR cCount% = 1 TO (MAXOPTIONGROUP - 1)
  867.   RecalcOptFiles cCount%
  868.  NEXT cCount%
  869. END SUB
  870.  
  871. SUB RecalcOptFiles(OptionID%) STATIC
  872.  
  873.  ClearCopyList
  874.  AddOptFilesToCopyList OptionId%, 1
  875.  
  876.  FOR cCount% = 0 TO (MAXFILEGROUP-1) STEP 1
  877.  
  878.   IF FileGrp(cCount%).OptionId = OptionId% THEN
  879.    ListSym$ = FileGrp(cCount%).Needs
  880.  
  881.    fExtra% = 0
  882.    ndrive% = ASC(ucase$(MID$(FileGrp(cCount%).DestPath,1,1))) - ASC("A") + 1
  883.    ExtraNeeds% =0
  884.    FOR cCount2% = 0 TO (MAXFILEGROUP-1) STEP 1
  885.     IF (FileGrp(cCount2%).OptionId = OptionId%) AND (FileGrp(cCount2%).ExtraNeeds <> 0) THEN
  886.      ExtraNeeds% = ExtraNeeds% + FileGrp(cCount2%).ExtraNeeds
  887.      fExtra% = 1
  888.     END IF
  889.    NEXT cCount2%
  890.  
  891.    IF ExtraNeeds% <> 0 THEN
  892.     ReplaceListItem EXTRACOSTS$, ndrive%, STR$(ExtraNeeds% * 1024)
  893.    ELSE
  894.     ReplaceListItem EXTRACOSTS$, ndrive%, STR$(0)
  895.    END IF
  896.  
  897.    cost& = GetCopyListCost(EXTRACOSTS$, ListSym$, "")
  898.  
  899.    EXIT FOR
  900.   END IF
  901.  NEXT cCount%
  902.  
  903.  IF fExtra% THEN
  904.   ReplaceListItem EXTRACOSTS$, ndrive%, "0"
  905.  END IF
  906.  
  907.  ListSym$ = ""
  908. END SUB
  909.  
  910. DECLARE FUNCTION MakePath (szDir$, szFile$) AS STRING
  911. DECLARE FUNCTION FilePath (FileID%, szFile$) AS STRING
  912. DECLARE FUNCTION InstallTTFont (szTTFontFile$) AS INTEGER
  913. DECLARE FUNCTION WinVersion(MajorVer%, MinorVer%) AS INTEGER
  914. DECLARE FUNCTION InstallTTF LIB "mscuistf.dll" as INTEGER
  915. DECLARE SUB SetIniKeyValue(szFile$, szSect$, szKey$, szValue$)
  916.  
  917. FUNCTION MakePath (szDir$, szFile$) STATIC AS STRING
  918.  IF MID$(szDir$, LEN(szDir$), 1) = "\" THEN
  919.   MakePath = szDir$ + szFile$
  920.  ELSE
  921.   MakePath = szDir$ + "\" + szFile$
  922.  END IF
  923. END FUNCTION
  924.  
  925. FUNCTION FilePath (FileID%, szFile$) STATIC AS STRING
  926.  szDir$ = RTRIM$(FileGrp(FileID%).DestPath)
  927.  IF MID$(szDir$, LEN(szDir$), 1) = "\" THEN
  928.   FilePath = szDir$ + szFile$
  929.  ELSE
  930.   FilePath = szDir$ + "\" + szFile$
  931.  END IF
  932.  szDir$ = ""
  933. END FUNCTION
  934.  
  935. FUNCTION InstallTTFont (szTTFontFile$) STATIC AS INTEGER
  936.  MaxNameLen% = 64
  937.  szTTFontName$ = string$(64,32)
  938.  
  939.  FileNameLen% = LEN(szTTFontFile$)
  940.  szTTFontFile$ = MID$(szTTFontFile$, 1, FileNameLen%-4)
  941.  
  942.  SetSymbolValue "FontPath", FilePath(TTFFILES,szTTFontFile$)
  943.  
  944.  InstallTTFont = 0
  945.  i% = InstallTTF()
  946.  IF (i% = 1) THEN
  947.   i% = GetTypeFaceNameFromTTF (FilePath(TTFFILES,szTTFontFile$)+".TTF", szTTFontName$, MaxNameLen)
  948.   IF (i% > 0 AND i% <= MaxNameLen) THEN
  949.    SetIniKeyValue "WIN.INI", "fonts", szTTFontName$ + " (TrueType)", szTTFontFile$ + ".FOT"
  950.    InstallTTFont = 1
  951.   ENDIF
  952.  ENDIF
  953.  
  954.  RemoveSymbol "FontPath"
  955.  
  956.  szTTFontFile$ = ""
  957. END FUNCTION
  958.  
  959. FUNCTION WinVersion(MajorVer%, MinorVer%) STATIC AS INTEGER
  960.  i% = GetWindowsMajorVersion()
  961.  j% = GetWindowsMinorVersion()
  962.  
  963.  IF (i% > MajorVer%) OR ((i% = MajorVer%) AND (j% >= MinorVer%)) THEN
  964.   WinVersion = 1
  965.  ELSE
  966.   WinVersion = 0
  967.  END IF
  968. END FUNCTION
  969.  
  970. SUB SetIniKeyValue(szFile$, szSect$, szKey$, szValue$) STATIC
  971.  IF DoesIniKeyExist(szFile$, szSect$, szKey$) THEN
  972.    RemoveIniKey szFile$, szSect$, szKey$, cmoNone
  973.  END IF
  974.  
  975.  CreateIniKeyValue szFile$, szSect$, szKey$, szValue$, cmoNone
  976. END SUB
  977.  
  978. CONST WELCOME = 100
  979. CONST ASKQUIT = 200
  980. CONST DESTPATHN = 300
  981. CONST EXITFAILURE = 400
  982. CONST BILLBOARD = 4545
  983. CONST EXITSUCCESS = 700
  984. CONST OPTIONS = 800
  985. CONST APPHELP = 900
  986. CONST SETUPOPTIONS = 1000
  987. CONST PREVPUB = 1100
  988. CONST HELPPATH = 1200
  989. CONST HELPCUST = 1300
  990. CONST CALCFILE = 1400
  991. CONST WRITEINI = 1500
  992. CONST EXITREBOOT = 1600
  993. CONST MULTILIST = 5200
  994. CONST CUSTINST = 6200
  995. CONST TOOBIG = 6300
  996. CONST BADPATH = 6400
  997.  
  998. CONST STFVERERR = 124
  999. CONST STFPUBRUN = 125
  1000. CONST STFSHARE  = 126
  1001. CONST STFNODE   = 127
  1002. CONST STFNONODE = 128
  1003.  
  1004. CONST SCOK      = 0
  1005. CONST SCREBOOT  = 1
  1006. CONST SCERROR   = 2
  1007.  
  1008. CONST NORMAL_MODE = 0
  1009. CONST ADMIN_MODE = 1
  1010. CONST NETWORK_MODE = 2
  1011.  
  1012. CONST COVLIST = 265
  1013. CONST FLTLIST = 285
  1014.  
  1015. CONST MSPNODISK = 17
  1016.  
  1017. CONST NoOfSTATUS = 7
  1018. CONST ALL = 0
  1019.  
  1020. CONST LOGO = 1
  1021.  
  1022. CONST WS_VISIBLE=&H10000000
  1023. CONST WS_BORDER =&H00800000
  1024. CONST WS_CLIPCHILDREN =&H02000000
  1025. CONST GWL_STYLE =-16
  1026. CONST SW_SHOWMAXIMIZED=3
  1027.  
  1028. GLOBAL CUIDLL$
  1029. GLOBAL WINDRIVE$
  1030. GLOBAL SOURCE$
  1031. GLOBAL DEST$
  1032. GLOBAL DLG$
  1033.  
  1034. CONST  MaxDrive  = 2
  1035. GLOBAL DriveStat(MaxDrive) AS DRIVESTAT
  1036. CONST WindowsDrive  = 0
  1037. CONST DestDrive  = 1
  1038.  
  1039. GLOBAL CHECKSTATES$
  1040. GLOBAL STATUSTEXT$
  1041. GLOBAL DRIVETEXT$
  1042. GLOBAL HELPPROC$
  1043.  
  1044. GLOBAL SETUP_MODE%
  1045. GLOBAL FINCUST%
  1046. GLOBAL RB%
  1047.  
  1048. DECLARE SUB CallDlg(DlgIDNo%, DlgProc$, HelpIDNo%)
  1049. DECLARE SUB QuitProc
  1050. DECLARE SUB DoConvOptions(ConvFiles%, ConvOpt%)
  1051. DECLARE SUB WriteConvIni(Conv%, szKey$, szName$, szFileExt$)
  1052. DECLARE SUB WriteFltIni(Conv%, szKey$, szFileExt$)
  1053. DECLARE SUB InstallFiles
  1054. DECLARE SUB SetDriveText(DriveStat AS POINTER TO DRIVESTAT)
  1055. DECLARE SUB ChangeFileDestPath
  1056. DECLARE SUB SetStatusText(OptionID%)
  1057. DECLARE SUB SetAllStatusText
  1058. DECLARE SUB UpdateSizeCal(OptionNo%, fRecalc%)
  1059. DECLARE SUB UpdateScreenStatus(OptionNo%)
  1060. DECLARE SUB CalcFileSizes
  1061. DECLARE SUB UpdatePubIni
  1062. DECLARE SUB UpdatePapersIni
  1063. DECLARE SUB UpdateWinIni
  1064. DECLARE SUB UpdateRegDat
  1065. DECLARE SUB MakeReg(Load$, FileID%, szApp$, szName$, szVb0N$, szVb1N$, szExe$, szCls$, fOle2%)
  1066.  
  1067. DECLARE FUNCTION GETPATH(DefaultPath$, DlgTextID%) AS STRING
  1068. DECLARE FUNCTION BitmapCntrlInit LIB "mscuistf.dll" as INTEGER
  1069. DECLARE FUNCTION DARBitmapInit LIB "mscuistf.dll" as INTEGER
  1070. DECLARE FUNCTION DoMessageBox LIB "mscuistf.dll" as INTEGER
  1071. DECLARE FUNCTION IsPubRunning LIB "mscuistf.dll" as INTEGER
  1072. DECLARE FUNCTION RunPub LIB "mscuistf.dll" as INTEGER
  1073. DECLARE FUNCTION ScAddShare LIB "mscuistf.dll" as INTEGER
  1074. DECLARE FUNCTION ShowWindow LIB "user.exe" (hWnd%,iShow%) AS INTEGER
  1075. DECLARE FUNCTION SetWindowLong LIB "user.exe" (hWnd%, offset%, style&) AS LONG
  1076. DECLARE FUNCTION WritePrivateProfileString LIB "Kernel" (lpstr$, lpstr$, lpstr$, lpstr$) as INTEGER
  1077.  
  1078. INIT:
  1079.  CUIDLL$ = "mscuistf.dll"
  1080.  HELPPROC$ = "FHelpDlgProc"
  1081.  
  1082.  hWnd% = HwndFrame()
  1083.  j& = SetWindowLong(hWnd%,GWL_STYLE,WS_VISIBLE + WS_BORDER + WS_CLIPCHILDREN)
  1084.  i% = ShowWindow(hWnd%,SW_SHOWMAXIMIZED)
  1085.  
  1086.  SetBitmap CUIDLL$, LOGO
  1087.  
  1088.  ''INTL
  1089.  SetTitle "Microsoft Publisher Setup"
  1090.  
  1091.  i% = DARBitmapInit()
  1092.  i% = SetDecompMode(1)
  1093.  
  1094.  IF WinVersion(3,10) THEN
  1095.  ELSE
  1096.   ERR = VERERR
  1097.   GOTO QUIT
  1098.  END IF
  1099.  
  1100.  IF GetSymbolValue("STF_MODE") = "ADMIN" THEN
  1101.   SETUP_MODE = ADMIN_MODE
  1102.  ELSEIF GetSymbolValue("STF_MODE") = "NETWORK" THEN
  1103.   SETUP_MODE = NETWORK_MODE
  1104.  ELSE
  1105.   SETUP_MODE = NORMAL_MODE
  1106.  END IF
  1107.  
  1108.  szInf$ = GetSymbolValue("STF_SRCINFPATH")
  1109.  IF szInf$ = "" THEN
  1110.   szInf$ = GetSymbolValue("STF_CWDDIR") + "MSPUB.INF"
  1111.  END IF
  1112.  ReadInfFile szInf$
  1113.  szInf$ = ""
  1114.  
  1115.  SOURCE$  = GetSymbolValue("STF_SRCDIR")
  1116.  
  1117.  IF SETUP_MODE = NETWORK_MODE THEN
  1118.   SourceDll$ = MakePath(SOURCE$,"DLL")
  1119.   DEST$ = SOURCE$
  1120.  ELSE
  1121.   SourceDll$ = SOURCE$
  1122.   DEST$ = mid$(GetWindowsDir,1,1) + ":\MSPUB"
  1123.  END IF
  1124.  
  1125.  InitDriveStat VARPTR(DriveStat(WindowsDrive)), DEST$
  1126.  InitDriveStat VARPTR(DriveStat(DestDrive)), DEST$
  1127.  
  1128.  InitFileGroup APPFILES, APPOPTION, 0, "APP-MSPUB", SOURCE$, 0
  1129.  InitFileGroup BDRFILES, APPOPTION, 0, "ARTS-BDR", SOURCE$, 0
  1130.  InitFileGroup PUBCONVFILES, APPOPTION, 0, "COV-PUB", SOURCE$, 0
  1131.  InitFileGroup PUBFLTFILES, APPOPTION, 0, "FLT-PUB", SOURCE$, 0
  1132.  InitFileGroup WINFILES, APPOPTION, 10, "APP-WIN", SourceDll$, 0
  1133.  InitFileGroup WINSYSFILES, APPOPTION, 0, "APP-WINSYS", SourceDll$, 0
  1134.  InitFileGroup WORDARTFILES, APPOPTION, 0, "WORDART", SOURCE$, 0
  1135.  InitFileGroup NOTEITFILES, APPOPTION, 0, "NOTE-IT", SOURCE$, 0
  1136.  InitFileGroup MSDRAWFILES, APPOPTION, 0, "MSDRAW", SOURCE$, 0
  1137.  InitFileGroup ARTGALRYFILES, APPOPTION, 0, "ARTGALRY", SOURCE$, 0
  1138.  InitFileGroup MSINFOFILES, APPOPTION, 0, "MSINFO", SOURCE$, 0
  1139.  InitFileGroup SETUPFILES, APPOPTION, 0, "SETUP", SOURCE$, 0
  1140.  InitFileGroup WIZFILES, APPOPTION, 0, "TEMP-WIZ", SOURCE$, 0
  1141.  InitFileGroup WIZCGMFILES, APPOPTION, 0, "CGM-WIZ", SOURCE$, 0
  1142.  InitFileGroup MSPHELPFILES, HELPOPTION, 0, "MSPHELP", SOURCE$, 0
  1143.  InitFileGroup NOTEITHLPFILES, HELPOPTION, 0, "NOTE-ITHLP", SOURCE$, 0
  1144.  InitFileGroup WORDARTHLPFILES, HELPOPTION, 0, "WORDARTHLP", SOURCE$, 0
  1145.  InitFileGroup MSDRAWHLPFILES, HELPOPTION, 0, "MSDRAWHLP", SOURCE$, 0
  1146.  InitFileGroup ARTHLPFILES, HELPOPTION, 0, "ART-HELP", SOURCE$, 0
  1147.  InitFileGroup SPELLFILES, SPELLOPTION, 0, "SPELL", SOURCE$, 0
  1148.  InitFileGroup CONFILES, COVOPTION, 0, "COV", SOURCE$, COVLIST
  1149.  InitFileGroup FLTDEPFILES, FLTOPTION, 0, "FLT-DEP", SOURCE$, 0
  1150.  InitFileGroup FLTFILES, FLTOPTION, 0, "FLT", SOURCE$, FLTLIST
  1151.  InitFileGroup PUBFILES, TEMPOPTION, 0, "TEMP-PUB", SOURCE$, 0
  1152.  '$IFDEF INTL
  1153.  '$ELSE
  1154.  InitFileGroup PAPERFILES, TEMPOPTION, 0, "APP-PAPERS", SOURCE$, 0
  1155.  '$ENDIF
  1156.  InitFileGroup CGMWIZFILES, ARTSOPTION, 0, "CGM-WIZ", SOURCE$, 0
  1157.  InitFileGroup CGMFILES, ARTSOPTION, 0, "ARTS-CGM", SOURCE$, 0
  1158.  InitFileGroup TTFFILES, FONTOPTION, 0, "ARTS-TTF", SourceDll$, 0
  1159.  
  1160.  SourceDll$ = ""
  1161.  
  1162.  CHECKSTATES$ = "CheckItemsState"
  1163.  STATUSTEXT$  = "StatusItemsText"
  1164.  DRIVETEXT$   = "DriveStatusText"
  1165.  
  1166.  FOR i% = 1 TO (MAXOPTIONGROUP-1) STEP 1
  1167.   AddListItem CHECKSTATES$, "ON"
  1168.   AddListItem STATUSTEXT$, ""
  1169.  NEXT i%
  1170.  
  1171.  FOR i% = 1 TO NoOfSTATUS STEP 1
  1172.   AddListItem DRIVETEXT$, ""
  1173.  NEXT i%
  1174.  
  1175.  InitSizeCalLib
  1176.  
  1177.  FINCUST% = 0
  1178.  
  1179. WHILE 1
  1180.  SetSymbolValue "SetupMode", STR$(SETUP_MODE%)
  1181.  CallDlg WELCOME, "FInfoDlgProc", APPHELP
  1182.  RemoveSymbol "SetupMode"
  1183.  
  1184.  IF DLG$ = "CONTINUE" THEN
  1185.   UIPop 1
  1186.  
  1187.   IF IsPubRunning THEN
  1188.    ERROR STFPUBRUN
  1189.   END IF
  1190.  
  1191.   IF SETUP_MODE = NETWORK_MODE THEN
  1192.    IF DoesFileExist(MakePath(SOURCE$,"DLL\PUBOLE.DLL"), femExists) = 0 THEN
  1193.     ERROR STFNODE
  1194.    ENDIF
  1195.   ELSE
  1196.    IF DoesFileExist(MakePath(SOURCE$,"DLL\PUBOLE.DLL"), femExists) THEN
  1197.     ERROR STFNONODE
  1198.    ENDIF
  1199.   ENDIF
  1200.   
  1201.   WHILE InitSystem(1, "SETUP.INI", (SETUP_MODE% = ADMIN_MODE)) = 0
  1202.    QuitProc
  1203.   WEND
  1204.   EXIT WHILE
  1205.  ELSE
  1206.   ERROR STFQUIT
  1207.  END IF
  1208. WEND
  1209.  
  1210.  IF SETUP_MODE% = NETWORK_MODE THEN
  1211.   IF DoesFileExist(MakePath(SOURCE$,"DLL\ALGER.TTF"), femExists) = 0 THEN
  1212.    ReplaceListItem CHECKSTATES$, FONTOPTION,  ""
  1213.   END IF
  1214.   GOTO TRYINST
  1215.  END IF
  1216.  
  1217.  DEST$ = GETPATH(DEST$, DESTPATHN)
  1218.  
  1219. WHILE 1
  1220.  CallDlg SETUPOPTIONS, "SetoptionDProc", APPHELP
  1221.  
  1222.  SELECT CASE DLG$
  1223.   CASE "BTN3"
  1224.    FOR i% = 2 TO (MAXOPTIONGROUP-1) STEP 1
  1225.     ReplaceListItem CHECKSTATES$, i%,  ""
  1226.    NEXT i%
  1227.  
  1228.    GOTO TRYINST
  1229.    
  1230.   CASE "BTN1"
  1231. TRYINST:
  1232.    CalcFileSizes
  1233.  
  1234.    IF (DriveStat(DestDrive).Cost > DriveStat(DestDrive).Free) OR (DriveStat(WindowsDrive).Cost > DriveStat(WindowsDrive).Free) THEN
  1235.     SetSymbolValue "MsgBoxID", STR$(MSPNODISK)
  1236.     SetSymbolValue "MsgBoxStyle", STR$(MB_OK+MB_ICONHAND)
  1237.     i% = DoMessageBox()
  1238.     RemoveSymbol "MsgBoxID"
  1239.     RemoveSymbol "MsgBoxStyle"
  1240.     IF SETUP_MODE% = NETWORK_MODE THEN
  1241.         UIPop 1
  1242.     ELSE
  1243.         UIPop 2
  1244.     END IF
  1245.     GOTO CUSTINST
  1246.    END IF
  1247.    UIPop 1
  1248.    InstallFiles
  1249.    GOTO QUIT
  1250.  
  1251.   CASE "BTN2"
  1252.    UIPop 1
  1253.    EXIT WHILE
  1254.  
  1255.   CASE ELSE
  1256.    QuitProc
  1257.  END SELECT
  1258.  
  1259. WEND
  1260.  
  1261. CalcFileSizes
  1262.  
  1263. CUSTINST:
  1264. FINCUST% = 1
  1265. WHILE 1
  1266.  CallDlg CUSTINST, "FCustInstDlgProc", HELPCUST
  1267.  
  1268.  SELECT CASE DLG$
  1269.   CASE "CONTINUE"
  1270.    IF (DriveStat(DestDrive).Cost > DriveStat(DestDrive).Free) OR (DriveStat(WindowsDrive).Cost > DriveStat(WindowsDrive).Free) THEN
  1271.     WHILE 1
  1272.      CallDlg TOOBIG, "FInfo0DlgProc", APPHELP
  1273.      IF DLG$ <> "REACTIVATE" THEN
  1274.       EXIT WHILE
  1275.      END IF
  1276.     WEND
  1277.     UIPop 1
  1278.     GOTO CUSTINST
  1279.    END IF
  1280.    
  1281.    UIPop 1
  1282.    InstallFiles
  1283.    EXIT WHILE
  1284.   CASE "PATH"
  1285.    DEST$ = GETPATH(DEST$, DESTPATHN)
  1286.    CalcFileSizes
  1287.   CASE "CHK1", "CHK2", "CHK3", "CHK4", "CHK5", "CHK6", "CHK7", "CHK8"
  1288.    IF (DLG$ = "CHK4") AND (GetListItem(CHECKSTATES$, COVOPTION) = "ON") THEN
  1289.     SetSymbolValue "ListID", STR$(COVLIST)
  1290.     SetSymbolValue "ListSymbol", FileGrp(CONFILES).OutList[0]
  1291.     i% = GetListFromStringTable()
  1292.     RemoveSymbol "ListSymbol"
  1293.     RemoveSymbol "ListID"
  1294.    ELSEIF (DLG$ = "CHK5") AND (GetListItem(CHECKSTATES$, FLTOPTION) = "ON") THEN
  1295.     SetSymbolValue "ListID", STR$(FLTLIST)
  1296.     SetSymbolValue "ListSymbol", FileGrp(FLTFILES).OutList[0]
  1297.     i% = GetListFromStringTable()
  1298.     RemoveSymbol "ListSymbol"
  1299.     RemoveSymbol "ListID"
  1300.    END IF
  1301.    UpdateSizeCal ASC(MID$(DLG$,4)) - ASC("0"), 0
  1302.    UpdateScreenStatus (ASC(MID$(DLG$,4)) - ASC("0"))
  1303.   CASE "BTN2"
  1304.    DoConvOptions CONFILES, COVOPTION
  1305.   CASE "BTN3"
  1306.    DoConvOptions FLTFILES, FLTOPTION
  1307.   CASE "REACTIVATE"
  1308.   CASE ELSE
  1309.    QuitProc
  1310.  END SELECT
  1311.  
  1312. WEND
  1313.  
  1314. QUIT:
  1315.  ON ERROR GOTO ERRQUIT
  1316.  
  1317.  IF ERR = 0 THEN
  1318.   IF RB% = 0 THEN
  1319.    dlgerr% = EXITSUCCESS
  1320.   ELSE
  1321.    dlgerr% = EXITREBOOT
  1322.   END IF
  1323.  ELSE
  1324.   dlgerr% = EXITFAILURE
  1325.  END IF
  1326.  
  1327.  DLG$ = ""
  1328.  
  1329.  IF ERR <> STFQUIT THEN
  1330.   WHILE 1
  1331.    SetSymbolValue "ErrMsg", STR$(ERR)
  1332.    CallDlg dlgerr%, "FInfo0DlgProc", APPHELP
  1333.    IF DLG$ <> "REACTIVATE" THEN
  1334.     EXIT WHILE
  1335.    END IF
  1336.   WEND
  1337.  
  1338.   UIPop 1
  1339.  END IF
  1340.  
  1341.  IF DLG$ = "CONTINUE" THEN
  1342.    SetSymbolValue "PubPath", FilePath(APPFILES,"MSPUB.EXE")
  1343.    i% = RunPub()
  1344.  END IF
  1345.  
  1346. ERRQUIT:
  1347.  END
  1348.  
  1349. SUB DoConvOptions(ConvFiles%, ConvOpt%) STATIC
  1350.  SetSymbolValue "InListSymbol", FileGrp(ConvFiles%).InList[0]
  1351.  SetSymbolValue "OutListSymbol", FileGrp(ConvFiles%).OutList[0]
  1352.  WHILE 1
  1353.   CallDlg MULTILIST, "FMultiDlgProc", APPHELP
  1354.   IF DLG$ = "CONTINUE" OR DLG$ = "CANCEL" THEN
  1355.      EXIT WHILE
  1356.   END IF
  1357.  WEND
  1358.  UIPop 1
  1359.  IF DLG$ = "CONTINUE" THEN
  1360.   UpdateSizeCal ConvOpt%, 1
  1361.   UpdateScreenStatus ConvOpt%
  1362.  END IF
  1363.  RemoveSymbol "InListSymbol"
  1364.  RemoveSymbol "OutListSymbol"
  1365. END SUB
  1366.  
  1367. SUB CallDlg(DlgIDNo%, DlgProc$, HelpIDNo%) STATIC
  1368.  SetSymbolValue "DlgID", STR$(DlgIDNo%)
  1369.  DLG$ = UIStartDlg(CUIDLL$, DlgIDNo%, DlgProc$, HelpIDNo%, HELPPROC$)
  1370.  RemoveSymbol "DlgID"
  1371. END SUB
  1372.  
  1373. SUB AddOptFilesToCopyList (OptionId%, fForce%) STATIC
  1374.  IF fForce% OR (GetListItem(CHECKSTATES$, OptionId%) = "ON") THEN
  1375.   SELECT CASE OptionId%
  1376.    CASE APPOPTION
  1377.     IF SETUP_MODE% <> NETWORK_MODE THEN
  1378.      AddFileGrpToCopyList APPFILES
  1379.      AddFileGrpToCopyList BDRFILES
  1380.      AddFileGrpToCopyList PUBCONVFILES
  1381.      AddFileGrpToCopyList PUBFLTFILES
  1382.      AddFileGrpToCopyList WORDARTFILES
  1383.      AddFileGrpToCopyList MSDRAWFILES
  1384.      AddFileGrpToCopyList NOTEITFILES
  1385.      AddFileGrpToCopyList ARTGALRYFILES
  1386.      AddFileGrpToCopyList MSINFOFILES
  1387.      AddFileGrpToCopyList WIZFILES
  1388.      AddFileGrpToCopyList WIZCGMFILES
  1389.     END IF
  1390.     
  1391.     AddFileGrpToCopyList WINFILES
  1392.     AddFileGrpToCopyList WINSYSFILES
  1393.     
  1394.     IF SETUP_MODE% = ADMIN_MODE THEN
  1395.      AddFileGrpToCopyList SETUPFILES
  1396.     END IF
  1397.    CASE HELPOPTION
  1398.     IF SETUP_MODE% <> NETWORK_MODE THEN
  1399.      AddOptionGrpToCopyList OptionId%
  1400.     END IF
  1401.    CASE SPELLOPTION
  1402.     IF SETUP_MODE% <> NETWORK_MODE THEN
  1403.      AddOptionGrpToCopyList OptionId%
  1404.     END IF
  1405.    CASE COVOPTION
  1406.     IF SETUP_MODE% <> NETWORK_MODE THEN
  1407.      AddListOptFiles CONFILES
  1408.     END IF
  1409.    CASE FLTOPTION
  1410.     IF SETUP_MODE% <> NETWORK_MODE THEN
  1411.      AddListOptFiles FLTFILES
  1412.      AddFileGrpToCopyList FLTDEPFILES
  1413.     END IF
  1414.    CASE TEMPOPTION
  1415.     IF SETUP_MODE% <> NETWORK_MODE THEN
  1416.      AddFileGrpToCopyList PUBFILES
  1417. '$IFDEF INTL
  1418. '$ELSE
  1419.      AddFileGrpToCopyList PAPERFILES
  1420. '$ENDIF
  1421.     END IF
  1422.    CASE ARTSOPTION
  1423.     IF SETUP_MODE% <> NETWORK_MODE THEN
  1424.      AddOptionGrpToCopyList OptionId%
  1425.     END IF
  1426.    CASE FONTOPTION
  1427.     AddOptionGrpToCopyList OptionId%
  1428.    CASE ELSE
  1429.   END SELECT
  1430.  END IF
  1431.  
  1432. END SUB
  1433.  
  1434. STATIC SUB InstallFiles
  1435.  ClearCopyList
  1436.  
  1437.  FOR Opt% = 1 TO MAXOPTIONGROUP-1 STEP 1
  1438.   AddOptFilesToCopyList Opt%, 0
  1439.  NEXT Opt%
  1440.  
  1441.  i% = BitmapCntrlInit()
  1442.  AddToBillboardList CUIDLL$, BILLBOARD, "FModelessDlgProc", 1
  1443.  SetCopyGaugePosition 140, 160
  1444.  CopyFilesInCopyList
  1445.  ClearCopyList
  1446.  
  1447.  IF GetListItem(CHECKSTATES$, APPOPTION) = "ON" THEN
  1448.   IF SETUP_MODE% <> NETWORK_MODE THEN
  1449.    CloseSystem RTRIM$(FileGrp(APPFILES).Section), "APP-MSPUB1", RTRIM$(FileGrp(APPFILES).DestPath), 291, 290
  1450.   END IF
  1451.  
  1452.   IF SETUP_MODE% = ADMIN_MODE THEN
  1453.    NAME FilePath(SETUPFILES, "network.in_") AS FilePath(SETUPFILES, "mspub.in_")
  1454.   END IF
  1455.  END IF
  1456.  
  1457.  IF GetListItem(CHECKSTATES$, TEMPOPTION) = "ON" THEN
  1458.   IF SETUP_MODE% <> NETWORK_MODE THEN
  1459. '$IFDEF INTL
  1460. '$ELSE
  1461.    UpdatePapersIni
  1462. '$ENDIF
  1463.   END IF
  1464.  END IF
  1465.  
  1466.  IF SETUP_MODE% = ADMIN_MODE THEN
  1467.   EXIT SUB
  1468.  END IF
  1469.  
  1470.  IF DoesFileExist(FilePath(WINFILES, "ctl3d.dll"), femExists) THEN
  1471.   KILL FilePath(WINFILES, "ctl3d.dll")
  1472.  END IF
  1473.  
  1474.  CallDlg WRITEINI, "FModelessDlgProc2", APPHELP
  1475.  
  1476.  IF GetListItem(CHECKSTATES$, FONTOPTION) = "ON" THEN
  1477.   MakeListFromSectionFilename "TTFileList", RTRIM$(FileGrp(TTFFiles).Section)
  1478.   NoOfTTFFiles% = GetListLength("TTFileList")
  1479.   FOR cCount% = 1 TO NoOfTTFFiles% STEP 1
  1480.    Result% = InstallTTFont(GetListItem("TTFileList", cCount%))
  1481.   NEXT cCount%
  1482.  END IF
  1483.  
  1484.  UpdateWinIni
  1485.  
  1486.  IF GetListItem(CHECKSTATES$, APPOPTION) = "ON" THEN
  1487.   UpdatePubIni
  1488.   UpdateRegDat
  1489.  END IF
  1490.  
  1491.  IF GetListItem(CHECKSTATES$, ARTSOPTION) = "ON" THEN
  1492.   szValue$ = RTRIM$(FileGrp(CGMFILES).DestPath)+", PUB20ART.IDX, PUB20ART.THM, Microsoft Publisher 2.0"
  1493.   SetIniKeyValue FilePath(WINFILES,"ARTGALRY.INI"), "Import", "File1", szValue$
  1494.   i% = WritePrivateProfileString(FilePath(WINFILES, "ARTGALRY.INI"), "", "", "")
  1495.  END IF
  1496.  
  1497.  UIPop 1
  1498.  
  1499.  IF GetListItem(CHECKSTATES$, APPOPTION) = "ON" THEN
  1500.   ''INTL Localize everything in quotes down to END IF
  1501.   MSSol$ = "Microsoft Publisher 2.0"
  1502.   szOpt$ = ""
  1503.   IF SETUP_MODE = NETWORK_MODE THEN
  1504.    szOpt$ = ",0,,," + GetWindowsDir + ","
  1505.   END IF
  1506.   CreateProgmanGroup MSSol$, "", cmoNone
  1507.   ShowProgmanGroup MSSol$, 1, cmoNone
  1508.   CreateProgmanItem MSSol$, "Microsoft Publisher", FilePath(APPFILES, "mspub.exe"), szOpt$, cmoOverwrite
  1509.   CreateProgmanItem MSSol$, "Read Me", FilePath(APPFILES, "readme.hlp"), "", cmoOverwrite
  1510.   IF SETUP_MODE = NETWORK_MODE THEN
  1511.    CreateProgmanItem MSSol$, "Network Information", FilePath(APPFILES, "network.txt"), "", cmoOverwrite
  1512.   END IF
  1513.   MSSol$ = ""
  1514.   szOpt$ = ""
  1515.  END IF
  1516.   
  1517.  i% = ScAddShare
  1518.  SELECT CASE i%
  1519.   CASE SCERROR
  1520.    ERROR STFSHARE
  1521.   CASE SCOK
  1522.    RB% = 0
  1523.   CASE SCREBOOT
  1524.    RB% = 1
  1525.  END SELECT
  1526. END SUB
  1527.  
  1528. SUB UpdateRegDat STATIC
  1529.  Load$ = FilePath(WINFILES, "REGEDIT.EXE /s ")
  1530.  ''INTL strings 3&4 where applicable (Read & Edit)
  1531.  MakeReg Load$, WORDARTFILES, "MSWordArt.2", "WordArt 2.0", "&Edit", "", "WordArt2", "", 1
  1532.  MakeReg Load$, MSDRAWFILES, "MSDraw", "Drawing", "", "", "msdraw", "", 0
  1533.  MakeReg Load$, ARTGALRYFILES, "MS_ClipArt_Gallery", "ClipArt Gallery", "&Edit", "", "artgalry", "26", 0
  1534.  MakeReg Load$, NOTEITFILES, "Note-It", "Note-It", "&Read", "&Edit", "Note-It", "08", 0
  1535.  
  1536.  HKey$ = "HKEY_CLASSES_ROOT\"
  1537.  
  1538.  IF SETUP_MODE% = NETWORK_MODE THEN
  1539.   Reg$ = FilePath(WINFILES, "MSPUB.REG")
  1540.  ELSE
  1541.   Reg$ = FilePath(FileID, "MSPUB.REG")
  1542.  END IF
  1543.  
  1544.  OPEN Reg$ FOR OUTPUT AS 1
  1545.  PRINT #1, "REGEDIT"
  1546.  ''INTL Microsoft Publisher Document and the /p on the next line
  1547.  PRINT #1, HKey$; "MSPublisher = Microsoft Publisher Document"
  1548.  PRINT #1, HKey$; "MSPublisher\shell\print\command = "; FilePath(FileID, "mspub.exe"); " /p %1"
  1549.  PRINT #1, HKey$; "MSPublisher\shell\open\command = "; FilePath(FileID, "mspub.exe"); " %1"
  1550.  PRINT #1, HKey$; ".pub = MSPublisher"
  1551.  CLOSE #1
  1552.  i% = RUN(Load$ + Reg$)
  1553.  HKey$ = ""
  1554.  Reg$ = ""
  1555.  
  1556.  i% = RUN(Load$ + FilePath(WINFILES, "OLE2.REG"))
  1557.  i% = RUN(Load$ + FilePath(APPFILES, "OLE1.REG"))
  1558.  Load$ = ""
  1559. END SUB
  1560.  
  1561. SUB MakeReg(Load$, FileID%, szApp$, szName$, szVb0N$, szVb1N$, szExe$, szCls$, fOle2%) STATIC
  1562.  HKey$ = "HKEY_CLASSES_ROOT\"
  1563.  Std$ = "\protocol\StdFileEditing\"
  1564.  
  1565.  IF SETUP_MODE% = NETWORK_MODE THEN
  1566.   Reg$ = FilePath(WINFILES, szExe$) + ".REG"
  1567.  ELSE
  1568.   Reg$ = FilePath(FileID, szExe$) + ".REG"
  1569.  END IF
  1570.  
  1571.  OPEN Reg$ FOR OUTPUT AS 1
  1572.  PRINT #1, "REGEDIT"
  1573.  PRINT #1, HKey$; szApp$; " = Microsoft "; szName$
  1574.  IF szVb0N$ <> "" THEN
  1575.   PRINT #1, HKey$; szApp$; Std$; "verb\0 = "; szVb0N$
  1576.  END IF
  1577.  IF szVb1N$ <> "" THEN
  1578.   PRINT #1, HKey$; szApp$; Std$; "verb\1 = "; szVb1N$
  1579.  END IF
  1580.  PRINT #1, HKey$; szApp$; Std$; "server = "; FilePath(FileID, szExe$); ".exe"
  1581.  IF szCls$ <> "" THEN
  1582.   HKeyCls$ = HKey$+"CLSID\{000300"+szCls$+"-0000-0000-C000-000000000046}"
  1583.   PRINT #1, HKeyCls$; " = Microsoft "; szName$
  1584.   PRINT #1, HKeyCls$; "\MiscStatus = 512"
  1585.   HKeyCls$ = ""
  1586.  END IF
  1587.  IF fOle2% THEN
  1588.   Cls$ = "{000212F0-0000-0000-C000-000000000046}"
  1589.   HKeyCls$ = HKey$+"CLSID\"+Cls$
  1590.   PRINT #1, HKey$; szApp$; "\Insertable"
  1591.   PRINT #1, HKey$; szApp$; "\CLSID = "; Cls$
  1592.   PRINT #1, HKeyCls$; " = Microsoft "; szName$
  1593.   PRINT #1, HKeyCls$; "\LocalServer = "; FilePath(FileID, szExe$); ".exe"
  1594.   PRINT #1, HKeyCls$; "\InprocHandler = ole2.dll"
  1595.   PRINT #1, HKeyCls$; "\AuxUserType\2 = WordArt 2.0"
  1596.   PRINT #1, HKeyCls$; "\AuxUserType\3 = Microsoft WordArt"
  1597.   PRINT #1, HKeyCls$; "\MiscStatus = 0"
  1598.   PRINT #1, HKeyCls$; "\MiscStatus\1 = 1"
  1599.   PRINT #1, HKeyCls$; "\Conversion\Readable\Main = WordArt"
  1600.   PRINT #1, HKeyCls$; "\DataFormats\GetSet\2 = MSWordArt.2, -1, 1, 3"
  1601.   PRINT #1, HKeyCls$; "\DataFormats\GetSet\1 = 1, -1, 1, 3"
  1602.   PRINT #1, HKeyCls$; "\DataFormats\GetSet\0 = 3, -1, 32, 1"
  1603.   PRINT #1, HKeyCls$; "\Verb\1 = &Open,0,2"
  1604.   PRINT #1, HKeyCls$; "\Verb\0 = &Edit,0,2"
  1605.   PRINT #1, HKeyCls$; "\Verb\-1 = Show,0,1"
  1606.   PRINT #1, HKeyCls$; "\Verb\-2 = Open,0,1"
  1607.   PRINT #1, HKeyCls$; "\Verb\-3 = Hide,0,1"
  1608.   PRINT #1, HKeyCls$; "\Insertable"
  1609.   PRINT #1, HKeyCls$; "\ProgId = "; szApp$
  1610.   PRINT #1, HKey$; "MSWordArt = Microsoft WordArt"
  1611.   PRINT #1, HKey$; "MSWordArt\CurVer = MSWordArt.2"
  1612.   PRINT #1, HKey$; "MSWordArt\CLSID = "; Cls$
  1613.   HKeyCls$ = HKey$+"CLSID\{00030009-0000-0000-C000-000000000046}"
  1614.   PRINT #1, HKeyCls$; " = Microsoft WordArt 1.0"
  1615.   PRINT #1, HKeyCls$; "\MiscStatus = 512"
  1616.   PRINT #1, HKeyCls$; "\MiscStatus\1 = 513"
  1617.   PRINT #1, HKeyCls$; "\Ole1Class = WordArt"
  1618.   PRINT #1, HKeyCls$; "\ProgID = WordArt"
  1619.   Cls$ = ""
  1620.   HKeyCls$ = ""
  1621.  END IF
  1622.  CLOSE #1
  1623.  
  1624.  i% = RUN(Load$ + Reg$)
  1625.  
  1626.  HKey$ = ""
  1627.  Std$ = ""
  1628.  Reg$ = ""
  1629. END SUB
  1630.  
  1631. SUB UpdateWinIni STATIC
  1632.  Ini$ = "WIN.INI"
  1633.  IF SETUP_MODE = NORMAL_MODE THEN
  1634.   MsApps$ = MakePath(GetWindowsDir,"MSAPPS")
  1635.  ELSE
  1636.   MsApps$ = DEST$
  1637.  END IF
  1638.  
  1639.  IF GetListItem(CHECKSTATES$, APPOPTION) = "ON" THEN
  1640.   szValue$ = FilePath(APPFILES, "MSPUB.EXE ^.pub")
  1641.   SetIniKeyValue Ini$, "Extensions", "pub", szValue$
  1642.  
  1643.   szValue$ = "Microsoft Publisher 2.0," + FilePath(PUBCONVFILES,"MSWPUB2.CNV,pub")
  1644.   SetIniKeyValue Ini$, "MS Text Converters", "MSPub2", szValue$
  1645.  
  1646.   szValue$ = FilePath(PUBFLTFILES, "cgmimp.flt,CGM")
  1647.   SetIniKeyValue "WIN.INI", "MS Graphic Import Filters", "Computer Graphics MetaFile(.CGM)", szValue$
  1648.   szValue$ = FilePath(PUBFLTFILES, "wmfimp.flt,WMF")
  1649.   SetIniKeyValue "WIN.INI", "MS Graphic Import Filters", "Windows Metafile(.WMF)", szValue$
  1650.  
  1651.   szValue$ = FilePath(MSINFOFILES,"MSINFO.EXE")
  1652.   SetIniKeyValue Ini$, "Microsoft System Info", "MSINFO", szValue$
  1653.  
  1654.   SetIniKeyValue Ini$, "MSAPPS", "MSAPPS", MsApps$
  1655.   SetIniKeyValue Ini$, "MSAPPS", "MSINFO", MakePath(MsApps$, "MSINFO")
  1656.   SetIniKeyValue Ini$, "MSAPPS", "WORDART", MakePath(MsApps$, "WORDART")
  1657.   SetIniKeyValue Ini$, "MSAPPS", "NOTE-IT", MakePath(MsApps$, "NOTE-IT")
  1658.   SetIniKeyValue Ini$, "MSAPPS", "MSDRAW", MakePath(MsApps$, "MSDRAW")
  1659.   SetIniKeyValue Ini$, "MSAPPS", "TEXTCONV", MakePath(MsApps$, "TEXTCONV")
  1660.   SetIniKeyValue Ini$, "MSAPPS", "ARTGALRY", MakePath(MsApps$, "ARTGALRY")
  1661.  END IF
  1662.  
  1663.  IF GetListItem(CHECKSTATES$, SPELLOPTION) = "ON" THEN
  1664.  '' INTL  Need to change "mssp_am.lex" to localized dictionary name.
  1665.  ''       Need to change "1033,0" to localized numeric setting as per INTLSPEC.DOC
  1666.   szValue$ = FilePath(SPELLFILES,"msspell.dll,") + FilePath(SPELLFILES,"mssp_am.lex")
  1667.   SetIniKeyValue Ini$, "MS Proofing Tools", "Spelling 1033,0", szValue$
  1668.   
  1669.   '' INTL  Localize "custom.dic" to the custom dictionary for localized
  1670.   ''       language versions.
  1671.   IF SETUP_MODE% = NETWORK_MODE THEN
  1672.    szValue$ = FilePath(WINFILES,"custom.dic")
  1673.   ELSE
  1674.    szValue$ = FilePath(SPELLFILES,"custom.dic")
  1675.   END IF
  1676.   SetIniKeyValue Ini$, "MS Proofing Tools", "Custom Dict 1", szValue$
  1677.   SetIniKeyValue Ini$, "MSAPPS", "PROOF", MakePath(MsApps$, "PROOF")
  1678.  END IF
  1679.  
  1680.  ''INTL Localize only the second string - ex: "Word for Windows 2.x"
  1681.  IF GetListItem(CHECKSTATES$, COVOPTION) = "ON" THEN
  1682.   WriteConvIni 3, "WordWin2", "Word for Windows 2.x", "wordwin2.cnv,doc"
  1683.   WriteConvIni 2, "MSWordWin", "Word for Windows 1.x", "wordwin1.cnv,doc"
  1684.   WriteConvIni 1, "MSWordDos", "Word for DOS", "worddos.cnv,doc"
  1685.   WriteConvIni 4, "WrdPrfctDOS", "WordPerfect 5.x", "wpft5.cnv,doc"
  1686.   WriteConvIni 7, "MSWorksWin", "MS Works for Windows 2.0", "wrkswin.cnv,wps"
  1687.   WriteConvIni 6, "MSWorksDos", "MS Works for DOS", "wrksdos.cnv,wps"
  1688.   WriteConvIni 7, "Windows Write", "Windows Write", "writwin.cnv,wri"
  1689.   SetIniKeyValue Ini$, "MSAPPS", "TEXTCONV", MakePath(MsApps$, "TEXTCONV")
  1690.  
  1691.   ''INTL Not this though
  1692.   IF WasFileCopied(CONFILES,4) THEN
  1693.    IF DoesIniKeyExist ("WIN.INI", "MS Text Converters", "WrdPrfctDOS50") THEN
  1694.     RemoveIniKey "WIN.INI", "MS Text Converters", "WrdPrfctDOS50", cmoNone
  1695.    END IF
  1696.   END IF
  1697.  END IF
  1698.  
  1699.  IF GetListItem(CHECKSTATES$, FLTOPTION) = "ON" THEN
  1700.   WriteFltIni 4, "Tagged Image Format(.TIF)", "tiffimp.flt,TIF"
  1701.   WriteFltIni 1, "Micrografx Designer/Draw(.DRW)", "drwimp.flt,DRW"
  1702.   WriteFltIni 2, "Encapsulated PostScript(.EPS)", "epsimp.flt,EPS"
  1703.   WriteFltIni 3, "PC Paintbrush(.PCX)", "pcximp.flt,PCX"
  1704.   WriteFltIni 5, "DrawPerfect(.WPG)", "wpgimp.flt,WPG"
  1705.   WriteFltIni 6, "Kodak Photo CD(.PCD)", "pcdimp.flt,PCD"
  1706.   SetIniKeyValue Ini$, "MSAPPS", "GRPHFLT", MakePath(MsApps$, "GRPHFLT")
  1707.  END IF
  1708.  
  1709.  i% = WritePrivateProfileString(Ini$, "", "", "")
  1710.  szValue$ = ""
  1711.  Ini$ = ""
  1712.  MsApps$ = ""
  1713. END SUB
  1714.  
  1715. SUB WriteConvIni(Conv%, szKey$, szName$, szFileExt$) STATIC
  1716.  IF WasFileCopied(CONFILES,Conv%) THEN
  1717.   SetIniKeyValue "WIN.INI", "MS Text Converters", szKey$, szName$ + "," + FilePath(CONFILES,szFileExt$)
  1718.  END IF
  1719. END SUB
  1720.  
  1721. SUB WriteFltIni(Conv%, szKey$, szFileExt$) STATIC
  1722.  IF WasFileCopied(FLTFILES,Conv%) THEN
  1723.   SetIniKeyValue "WIN.INI", "MS Graphic Import Filters", szKey$, FilePath(FLTFILES,szFileExt$)
  1724.  END IF
  1725. END SUB
  1726.  
  1727. SUB UpdatePubIni STATIC
  1728.  Ini$ = FilePath(WINFILES,"MSPUB.INI")
  1729.  
  1730.  RemoveIniSection Ini$, "Help", cmoNone
  1731.  RemoveIniSection Ini$, "Clipart", cmoNone
  1732.  IF DoesIniKeyExist(Ini$, "Preferences", "ShowIntroductionToPublisher") THEN
  1733.   RemoveIniKey Ini$, "Preferences", "ShowIntroductionToPublisher", cmoNone
  1734.  END IF
  1735.  
  1736.  SetIniKeyValue Ini$, "Justification", "Default", "75,100,250,5,85,100,150,5"
  1737.  szValue$ = "75,100,250,0,85,100,150,0"
  1738.  SetIniKeyValue Ini$, "Justification", "Brush Script MT", szValue$ 
  1739.  SetIniKeyValue Ini$, "Justification", "Lucida Handwriting", szValue$
  1740.  SetIniKeyValue Ini$, "Justification", "Mistral", szValue$
  1741.  SetIniKeyValue Ini$, "Justification", "Vivaldi", szValue$ 
  1742.  
  1743.  SetIniKeyValue Ini$, "Spelling Info", "Speller", "Spelling 1033,0"
  1744.  SetIniKeyValue Ini$, "Spelling Info", "Custom", "Custom Dict 1"
  1745.  
  1746.  IF GetListItem(CHECKSTATES$, APPOPTION) = "ON" THEN
  1747.   szValue$ = FilePath(APPFILES,"hyph.dat")
  1748.   SetIniKeyValue Ini$, "Hyphenation", "Dictionary", szValue$
  1749.  END IF
  1750.  
  1751.  ''INTL Localize down to the end of the Wizard section
  1752.  ''     Localize only the Wizard names - ex: "Ad"
  1753.  szValue$ = "PageWizard 2.0"
  1754.  SetIniKeyValue Ini$, szValue$, "Ad", "mspgad.wiz,AREA"
  1755.  SetIniKeyValue Ini$, szValue$, "Banner", "mspgban.wiz,NEW"
  1756.  SetIniKeyValue Ini$, szValue$, "Three-Panel Brochure", "mspgbchr.wiz,NEW"
  1757.  SetIniKeyValue Ini$, szValue$, "Business Card & Paper", "mspgbusi.wiz,NEW"
  1758.  SetIniKeyValue Ini$, szValue$, "Calendar", "mspgcal.wiz,NEW,AREA"
  1759.  SetIniKeyValue Ini$, szValue$, "Coupon", "mspgcoup.wiz,AREA"
  1760.  SetIniKeyValue Ini$, szValue$, "Envelope", "mspgenv.wiz,NEW"
  1761.  SetIniKeyValue Ini$, szValue$, "Fancy First Letter", "mspgcap.wiz,AREA"
  1762.  SetIniKeyValue Ini$, szValue$, "Flyer", "mspgflyr.wiz,NEW"
  1763.  SetIniKeyValue Ini$, szValue$, "Greeting Card & Invitation", "mspgcard.wiz,NEW"
  1764.  SetIniKeyValue Ini$, szValue$, "Newsletter Banner", "mspgmast.wiz,AREA"
  1765.  SetIniKeyValue Ini$, szValue$, "Paper Aeroplane", "mspgaero.wiz,NEW"
  1766.  SetIniKeyValue Ini$, szValue$, "Seven Business Forms", "mspgform.wiz,NEW"
  1767.  SetIniKeyValue Ini$, szValue$, "Newsletter", "mspgnews.wiz,NEW"
  1768.  SetIniKeyValue Ini$, szValue$, "Logo Creator Plus", "mspglogo.wiz,AREA"
  1769.  SetIniKeyValue Ini$, szValue$, "Origami", "mspgorgm.wiz,NEW"
  1770.  SetIniKeyValue Ini$, szValue$, "Tape Cassette Cover", "mspgtape.wiz,NEW"
  1771.  
  1772.  Demo$ =  "DEMO.CCD "
  1773.  SetIniKeyValue Ini$, "Demo", "Gotobackground", Demo$ + "-p background1"
  1774.  SetIniKeyValue Ini$, "Demo", "Grouping", Demo$ + "-p grouping1"
  1775.  SetIniKeyValue Ini$, "Demo", "Layering", Demo$ + "-p layer1"
  1776.  SetIniKeyValue Ini$, "Demo", "FlowButton", Demo$ + "-p linking1"
  1777.  SetIniKeyValue Ini$, "Demo", "Style", Demo$ + "-p style1"
  1778.  SetIniKeyValue Ini$, "Demo", "Table", Demo$ + "-p tables1"
  1779.  SetIniKeyValue Ini$, "Demo", "startup", "intropub.ccd"
  1780.  
  1781.  SetIniKeyValue Ini$, "Cue Cards", "Blank Page", "blankcc.ccd -h %h"
  1782.  SetIniKeyValue Ini$, "Cue Cards", "Blank Page_Menu", "blankcc.ccd -p bmmenu -h %h"
  1783.  SetIniKeyValue Ini$, "Cue Cards", "Template", "tempcc.ccd -h %h"
  1784.  SetIniKeyValue Ini$, "Cue Cards", "Template_Menu", "tempcc.ccd -p tmainmenu -h %h"
  1785.  SetIniKeyValue Ini$, "Cue Cards", "Template_Wizard", "tempcc.ccd -p tmpwizmain1 -h %h"
  1786.  SetIniKeyValue Ini$, "Cue Cards", "Newsletter", "newscc.ccd -h %h"
  1787.  SetIniKeyValue Ini$, "Cue Cards", "Newsletter_Menu", "newscc.ccd -p nmainmenu -h %h"
  1788.  
  1789.  i% = WritePrivateProfileString(Ini$, "", "", "")
  1790.  Ini$ = ""
  1791.  Demo$ = ""
  1792.  szValue$ = ""
  1793. END SUB
  1794.  
  1795. SUB UpdatePapersIni STATIC
  1796.  Ini$ = FilePath(PAPERFILES,"PAPERS.INI")
  1797.  SetIniKeyValue Ini$, "LETTER", "PaperFrame - Blue Carrara", "pdir19p.wmf, pdir19l.wmf, Blue Carrara PaperFrame - PaperDirect #DT1441"
  1798.  SetIniKeyValue Ini$, "LETTER", "Letterhead - Blue Carrara", "pdir20p.wmf, pdir20l.wmf, Blue Carrara Letterhead - PaperDirect #DT1351"
  1799.  SetIniKeyValue Ini$, "LETTER", "Brochure - Blue Carrara", "pdir13p.wmf, pdir13l.wmf, Blue Carrara Brochure - PaperDirect #BMT232"
  1800.  SetIniKeyValue Ini$, "LETTER", "PaperFrame - Florentine", "pdir11p.wmf, pdir11l.wmf, Florentine PaperFrame - PaperDirect #DT1131"
  1801.  SetIniKeyValue Ini$, "LETTER", "Letterhead - Florentine", "pdir17p.wmf, pdir17l.wmf, Florentine Letterhead - PaperDirect #DT1431"
  1802.  SetIniKeyValue Ini$, "LETTER", "Brochure - Florentine", "pdir12p.wmf, pdir12l.wmf, Florentine Brochure - PaperDirect #BT1021"
  1803.  SetIniKeyValue Ini$, "LETTER", "PaperFrame - Marble", "pdir18p.wmf, pdir18l.wmf, Marble PaperFrame - PaperDirect #DT1141"
  1804.  SetIniKeyValue Ini$, "LETTER", "Letterhead - Marble", "pdir15p.wmf, pdir15l.wmf, Marble Letterhead - PaperDirect #DT1341"
  1805.  SetIniKeyValue Ini$, "LETTER", "Brochure - Marble", "pdir14p.wmf, pdir14l.wmf, Marble Brochure - PaperDirect #BM4011"
  1806.  SetIniKeyValue Ini$, "LETTER", "Brochure - Two Tone Purple/Green", "pdir7p.wmf, pdir7l.wmf, Two tone gradient brochure with purple and green - PaperDirect #BT1001"
  1807.  SetIniKeyValue Ini$, "LETTER", "Design Paper - News", "pdir4p.wmf, pdir4l.wmf, News text design paper - PaperDirect #DT1101"
  1808.  SetIniKeyValue Ini$, "LETTER", "Letterhead - Acropolis", "pdir3p.wmf, pdir3l.wmf, Acropolis letterhead - PaperDirect #DT1271"
  1809.  SetIniKeyValue Ini$, "LETTER", "PaperFrame - Water Colors", "pdir5p.wmf, pdir5l.wmf, Water colors PaperFrame - PaperDirect #DT1291"
  1810.  SetIniKeyValue Ini$, "LETTER", "Design Paper - Vision", "pdir6p.wmf, pdir6l.wmf, Vision design paper - PaperDirect #DT1121"
  1811.  SetIniKeyValue Ini$, "LETTER", "Brochure - Modern Art With Rotary Card", "pdir10p.wmf, pdir10l.wmf, Modern art brochure with rotary card - PaperDirect #BMT1031"
  1812.  SetIniKeyValue Ini$, "LETTER", "Brochure - Odyssey", "pdir8p.wmf, pdir8l.wmf, Odyssey brochure - PaperDirect #BM4151"
  1813.  SetIniKeyValue Ini$, "LETTER", "Brochure - Bright Ideas", "pdir1p.wmf, pdir1l.wmf, Bright ideas brochure - PaperDirect #BM9011"
  1814.  SetIniKeyValue Ini$, "LETTER", "Design Paper - PineNotes", "pdir2p.wmf, pdir2l.wmf, PineNotes design paper - PaperDirect #DT1211"
  1815.  SetIniKeyValue Ini$, "LETTER", "Design Paper - PaperTree", "pdir16p.wmf, pdir16l.wmf, PaperTree design paper - PaperDirect #DT1241"
  1816.  
  1817.  i% = WritePrivateProfileString(Ini$, "", "", "")
  1818.  Ini$ = ""
  1819. END SUB
  1820.  
  1821. SUB CalcFileSizes STATIC
  1822.  CallDlg CALCFILE, "FModelessDlgProc2", APPHELP
  1823.  ChangeFileDestPath
  1824.  UpdateSizeCal ALL, 1
  1825.  UpdateScreenStatus ALL
  1826.  UIPop 1
  1827. END SUB
  1828.  
  1829. SUB SetDriveText(DriveStat AS POINTER TO DRIVESTAT) STATIC
  1830.  
  1831.  WinDriveNo% = ASC(ucase$(MID$(GetWindowsDir,1,1))) - ASC("A") + 1
  1832.  
  1833.  ReplaceListItem DRIVETEXT$, 1, DriveStat[DestDrive].Drive + ":"
  1834.  ReplaceListItem DRIVETEXT$, 2, STR$(DriveStat[DestDrive].Cost / 1024) + " K"
  1835.  ReplaceListItem DRIVETEXT$, 3, STR$(DriveStat[DestDrive].Free / 1024) + " K"
  1836.  
  1837.  IF DriveStat[DestDrive].DriveNo = WinDriveNo% THEN
  1838.   ReplaceListItem DRIVETEXT$, 4, ""
  1839.   ReplaceListItem DRIVETEXT$, 5, ""
  1840.   ReplaceListItem DRIVETEXT$, 6, ""
  1841.  ELSE
  1842.   IF DriveStat[WindowsDrive].Cost = 0 THEN
  1843.    ReplaceListItem DRIVETEXT$, 4, ""
  1844.    ReplaceListItem DRIVETEXT$, 5, ""
  1845.    ReplaceListItem DRIVETEXT$, 6, ""
  1846.   ELSE
  1847.    ReplaceListItem DRIVETEXT$, 4, DriveStat[WindowsDrive].Drive + ":"
  1848.    ReplaceListItem DRIVETEXT$, 5, STR$(DriveStat[WindowsDrive].Cost / 1024) + " K"
  1849.    ReplaceListItem DRIVETEXT$, 6, STR$(DriveStat[WindowsDrive].Free / 1024) + " K"
  1850.   END IF
  1851.  END IF
  1852.  
  1853. END SUB
  1854.  
  1855. SUB SetStatusText(OptionID%) STATIC
  1856.  FOR cCount% = 0 TO (MAXFILEGROUP-1) STEP 1
  1857.   IF (FileGrp(cCount%).OptionId = OptionID%) THEN
  1858.    cost& = 0
  1859.  
  1860.    IF GetListItem(CHECKSTATES$, OptionID%) = "ON" THEN
  1861.     FOR i% = 1 TO 26 STEP 1
  1862.      cost& = cost& + VAL(GetListItem(FileGrp(cCount%).Needs, i%))
  1863.     NEXT i%
  1864.    END IF
  1865.  
  1866.    ReplaceListItem STATUSTEXT$, OptionId%, STR$(cost& / 1024) + " K"
  1867.    EXIT FOR
  1868.   END IF
  1869.  NEXT cCount%
  1870. END SUB
  1871.  
  1872. SUB SetAllStatusText STATIC
  1873.  IF LEN(NewPath$) > 23 THEN
  1874.   ReplaceListItem DRIVETEXT$, 7, MID$(DEST$, 1, 23)+"..."
  1875.  ELSE
  1876.   ReplaceListItem DRIVETEXT$, 7, DEST$
  1877.  END IF
  1878.  
  1879.  FOR cCount% = 1 to MAXOPTIONGROUP-1 STEP 1
  1880.   SetStatusText cCount%
  1881.  NEXT cCount%
  1882.  
  1883. END SUB
  1884.  
  1885. SUB ChangeFileDestPath STATIC
  1886.  
  1887.  IF SETUP_MODE = ADMIN_MODE THEN
  1888.   Win$ = MakePath(DEST$,"DLL")
  1889.   Sys$ = Win$
  1890.  ELSE
  1891.   Win$ = GetWindowsDir
  1892.   Sys$ = GetWindowsSysDir
  1893.  END IF
  1894.  
  1895.  IF SETUP_MODE = NORMAL_MODE THEN
  1896.   MsApps$ = MakePath(GetWindowsDir,"MSAPPS")
  1897.  ELSE
  1898.   MsApps$ = DEST$
  1899.  END IF
  1900.  
  1901.  InitDriveStat VARPTR(DriveStat(DestDrive)), DEST$
  1902.  ReplaceListItem DRIVETEXT$, 7, DEST$
  1903.  
  1904.  ChangeDestPath APPFILES, DEST$
  1905.  ChangeDestPath MSPHELPFILES, DEST$
  1906.  ChangeDestPath SETUPFILES, DEST$
  1907.  
  1908.  '' INTL Localize the directory names in the following lines.
  1909.  ''      Stop at the first blank line.
  1910.  ChangeDestPath PUBFILES, MakePath(DEST$,"TEMPLATE")
  1911.  ChangeDestPath WIZFILES, MakePath(DEST$,"PAGEWIZ")
  1912.  ChangeDestPath WIZCGMFILES, MakePath(DEST$,"PAGEWIZ")
  1913.  ChangeDestPath BDRFILES, MakePath(DEST$,"BORDERS")
  1914.  ChangeDestPath CGMFILES, MakePath(DEST$,"CLIPART")
  1915.  ChangeDestPath CGMWIZFILES, MakePath(DEST$,"CLIPART")
  1916.  '$IFDEF INTL
  1917.  '$ELSE
  1918.  ChangeDestPath PAPERFILES, MakePath(DEST$,"PAPERS")
  1919.  '$ENDIF
  1920.  
  1921.  ChangeDestPath TTFFILES, Sys$
  1922.  ChangeDestPath WINFILES, Win$
  1923.  ChangeDestPath WINSYSFILES, Sys$
  1924.  ChangeDestPath WORDARTFILES, MakePath(MsApps$,"WORDART")
  1925.  ChangeDestPath NOTEITFILES, MakePath(MsApps$,"NOTE-IT")
  1926.  ChangeDestPath MSDRAWFILES, MakePath(MsApps$,"MSDRAW")
  1927.  ChangeDestPath ARTGALRYFILES, MakePath(MsApps$,"ARTGALRY")
  1928.  ChangeDestPath MSINFOFILES, MakePath(MsApps$,"MSINFO")
  1929.  ChangeDestPath SPELLFILES, MakePath(MsApps$,"PROOF")
  1930.  ChangeDestPath CONFILES, MakePath(MsApps$,"TEXTCONV")
  1931.  ChangeDestPath PUBCONVFILES, MakePath(MsApps$,"TEXTCONV")
  1932.  ChangeDestPath PUBFLTFILES, MakePath(MsApps$,"GRPHFLT")
  1933.  ChangeDestPath FLTFILES, MakePath(MsApps$,"GRPHFLT")
  1934.  ChangeDestPath FLTDEPFILES, MakePath(MsApps$,"GRPHFLT")
  1935.  ChangeDestPath NOTEITHLPFILES, MakePath(MsApps$,"NOTE-IT")
  1936.  ChangeDestPath WORDARTHLPFILES, MakePath(MsApps$,"WORDART")
  1937.  ChangeDestPath MSDRAWHLPFILES, MakePath(MsApps$,"MSDRAW")
  1938.  ChangeDestPath ARTHLPFILES, MakePath(MsApps$,"ARTGALRY")
  1939.  
  1940.  Win$ = ""
  1941.  Sys$ = ""
  1942.  MsApps$ = ""
  1943.  
  1944. END SUB
  1945.  
  1946. SUB UpdateSizeCal(OptionNo%, fRecalc%) STATIC
  1947.  CursorSave% = ShowWaitCursor()
  1948.  IF fRecalc% <> 0 THEN
  1949.   IF OptionNo% = 0 THEN
  1950.    RecalcPath
  1951.   ELSE
  1952.    RecalcOptFiles OptionNo%
  1953.   END IF
  1954.  END IF
  1955.  SetDriveStatus VARPTR(DriveStat(0)), MaxDrive
  1956.  RestoreCursor CursorSave%
  1957. END SUB
  1958.  
  1959. SUB UpdateScreenStatus(OptionNo%) STATIC
  1960.  CursorSave% = ShowWaitCursor()
  1961.  IF OptionNo% = 0 THEN
  1962.   SetAllStatusText
  1963.  ELSE
  1964.   SetStatusText OptionNo%
  1965.  END IF
  1966.  SetDriveText VARPTR(DriveStat(0))
  1967.  RestoreCursor CursorSave%
  1968. END SUB
  1969.  
  1970. STATIC FUNCTION GETPATH(DefaultPath$, DlgTextID%) AS STRING
  1971.  SetSymbolValue "EditTextIn", DefaultPath$
  1972.  SetSymbolValue "EditFocus", "END"
  1973.  NewPath$ = DefaultPath$
  1974.  
  1975.  WHILE 1
  1976.   SetSymbolValue "FInCust", STR$(FINCUST%)
  1977.   CallDlg DESTPATHN, "FEditDlgProc", HELPPATH
  1978.   RemoveSymbol "FInCust"
  1979.  
  1980.   SELECT CASE DLG$
  1981.    CASE "CONTINUE"
  1982.     NewPath$ = GetSymbolValue("EditTextOut")
  1983.  
  1984.     IF IsDirWritable(NewPath$) = 0 THEN
  1985.      WHILE 1
  1986.       CallDlg BADPATH, "FInfo0DlgProc", APPHELP
  1987.       IF DLG$ <> "REACTIVATE" THEN
  1988.        EXIT WHILE
  1989.       END IF
  1990.      WEND
  1991.      UIPop 1
  1992.     ELSEIF DoesFileExist(MakePath(NewPath$,"MSPUB.EXE"), femExists) THEN
  1993.      WHILE 1
  1994.       CallDlg PREVPUB, "FInfo0DlgProc", APPHELP
  1995.       SELECT CASE DLG$
  1996.        CASE "CONTINUE"
  1997.         UIPOP 1
  1998.         GOTO GOTPATH
  1999.        CASE "REACTIVATE"
  2000.        CASE ELSE
  2001.         UIPOP 1
  2002.         EXIT WHILE
  2003.       END SELECT
  2004.      WEND
  2005.     ELSE
  2006. GOTPATH:
  2007.      UIPop 1
  2008.  
  2009.      GETPATH = NewPath$
  2010.      EXIT WHILE
  2011.     END IF
  2012.  
  2013.    CASE "REACTIVATE"
  2014.    CASE ELSE
  2015.     IF FINCUST% = 1 THEN
  2016.      UIPop 1
  2017.      GETPATH = DefaultPath$
  2018.      EXIT WHILE
  2019.     END IF
  2020.  
  2021.     QuitProc
  2022.   END SELECT
  2023.  WEND
  2024.  
  2025.  RemoveSymbol "EditTextIn"
  2026.  RemoveSymbol "EditFocus"
  2027.  DefaultPath$ = ""
  2028.  NewPath$ = ""
  2029.  
  2030. END FUNCTION
  2031.  
  2032. SUB QuitProc STATIC
  2033.  WHILE 1
  2034.   CallDlg ASKQUIT, "FQuitDlgProc", APPHELP
  2035.  
  2036.   IF DLG$ = "EXIT" THEN
  2037.    UIPopAll
  2038.    ERROR STFQUIT
  2039.   ELSE
  2040.    UIPop 1
  2041.    EXIT WHILE
  2042.   END IF
  2043.  WEND
  2044. END SUB
  2045.