home *** CD-ROM | disk | FTP | other *** search
/ Colorific 4.19 / Colorific.iso / pc / Disk3 / HGCSETUP.MS_ / HGCSETUP.bin
Encoding:
Text File  |  1996-04-25  |  25.2 KB  |  782 lines

  1. '**************************************************************************
  2. '*                       HGC and Kodak Precision Setup script
  3. '**************************************************************************
  4.  
  5. '$DEFINE DEBUG  ''Define for script development/debugging
  6.  
  7. '$INCLUDE 'setupapi.inc'
  8. '$INCLUDE 'msdetect.inc'
  9.  
  10.  
  11. ''Additional message box constants
  12. CONST MB_YESNO       = 4
  13. CONST MB_RETRYCANCEL  = 5
  14. CONST MB_ICONQUESTION = 32
  15. CONST MB_ICONEXCLAMATION = 48
  16. CONST IDYES = 6
  17. CONST IDRETRY = 4
  18. CONST IDCANCEL = 2
  19.  
  20. ''Dialog ID's
  21. CONST WELCOME_DLG         = 1000
  22. CONST WELCOME_HLP         = 1001
  23. CONST DESTPATH_DLG        = 1100
  24. CONST DESTPATH_HLP        = 1101
  25. CONST ALREADYINST_DLG     = 1200
  26. CONST ALREADYINST_HLP     = 1201
  27. CONST BADWINVER_DLG       = 1300
  28.  
  29. CONST UPDATING_DLG        = 2000
  30. CONST SUPPATH_DLG         = 2100
  31. CONST SUPPATH_HLP         = 2101
  32.  
  33. CONST UNINST_SUCCESS_DLG  = 3000
  34. CONST UNINST_FAILURE_DLG  = 3100
  35. CONST UNINST_QUIT_DLG     = 3200
  36. CONST UNINST_ASKQUIT_DLG  = 3300
  37.  
  38. CONST UNINST_COMPLETE_DLG  = 300
  39.  
  40. CONST ASKQUIT       = 200
  41. CONST EXITFAILURE   = 400
  42. CONST EXITQUIT      = 600
  43. CONST EXITSUCCESS   = 700
  44. CONST BADPATH       = 6400
  45.  
  46. ''Bitmap ID
  47. CONST LOGO = 1
  48.  
  49. GLOBAL SUPSRC$      ''Default supplementary directory.
  50.  
  51. GLOBAL DEST$        ''Default destination directory.
  52. GLOBAL DATAB$       ''Default database directory.
  53. GLOBAL PTDIR$       ''KEPS PT directory
  54. GLOBAL CPDIR$       ''KEPS CP directory
  55. GLOBAL WINDIR$      ''Windows directory
  56. GLOBAL SYSDIR$      ''Windows System directory
  57. GLOBAL OPTCUR$      ''Option selection from option dialog.
  58. GLOBAL HGCInstalled%
  59. GLOBAL CUIDLL$      ''DLL containing Specific setup UI
  60. GLOBAL KPCMSInstalled%
  61. GLOBAL STARTUP$     '' Contains StartUp group real name
  62. GLOBAL NOTENOUGHSPACE%
  63.  
  64. ''Additional Win API functions
  65.  
  66. Declare Function GetDC Lib "User" (hWnd%) As Integer
  67. Declare Function ReleaseDC Lib "User" (hWnd%, hDC%) As Integer
  68. Declare Function GetDeviceCaps Lib "GDI" (hDC%, nIndex%) As Integer
  69. Const NUMCOLORS = 24 '  Number of colors the device supports
  70.  
  71. Declare Function GetModuleHandle Lib "Kernel" (szMod$) As Integer
  72. Declare Function LoadString Lib "User" (hMod%, i%, sz$, i%) As Integer
  73.  
  74. ''Setup script functions declarations
  75.  
  76. Declare SUB Install
  77. Declare SUB UnInstall
  78. Declare FUNCTION MakePath (szDir$, szFile$) AS STRING
  79. Declare FUNCTION IsHGCInstalled () AS INTEGER
  80. Declare FUNCTION GetDisplayNumColors () AS INTEGER
  81.  
  82. '' XDF support
  83. GLOBAL hXDFLibInst%
  84. DECLARE FUNCTION LoadLibrary LIB "krnl386.exe" (szLibName$) AS INTEGER
  85. DECLARE FUNCTION FreeLibrary LIB "krnl386.exe" (hInst%) AS INTEGER
  86. DECLARE SUB UNLOAD_XDF
  87.  
  88. '' Multi-languages support
  89. GLOBAL RESSRC$
  90.  
  91. '*************************************************************************
  92.  
  93. INIT:
  94. ' JPH 11/02/95 add version testing
  95.     IF NOT (GetWindowsMinorVersion = 3) AND NOT (GetWindowsMinorVersion = 10) THEN
  96.         i% = DoMsgBox("This program requires Windows 3.1x", "Warning", MB_ICONEXCLAMATION+MB_OK)
  97.         END
  98.     END IF
  99.     
  100. ' Load XDF support DLL if present
  101.     hXDFLibInst%=LoadLibrary("XDFLIB.DLL")
  102.     ON END UNLOAD_XDF        ''RDI
  103.  
  104.     fUninstall% = 0
  105.     HELPPROC$ = "FHelpDlgProc"          ''Help dialog procedure
  106.  
  107.     LANGUAGE$ = GetIniKeyString("WIN.INI","intl","sLanguage")
  108.     LANGUAGE$ = LCASE$(LANGUAGE$)
  109.  
  110.     CUIDLL$ = "mscui_e.dll"            ''Custom user interface dll
  111.     RESSRC$ = "ENGLISH"
  112.  
  113.     IF LANGUAGE$ = "deu" THEN           ''German
  114.         CUIDLL$ = "mscui_g.dll"
  115.     RESSRC$ = "GERMAN"
  116. ' BILL BILL BILL
  117. ' To add other language (when available) just remove the leading '
  118. ' before the 3 desired lines
  119. '    ELSEIF LANGUAGE$ = "fra" THEN       ''French
  120. '        CUIDLL$ = "mscui_f.dll"
  121. '    RESSRC$ = "FRENCH"
  122. '    ELSEIF LANGUAGE$ = "frc" THEN       ''French Canadian
  123. '        CUIDLL$ = "mscui_f.dll"
  124. '    RESSRC$ = "FRENCH"
  125. '    ELSEIF LANGUAGE$ = "esp" THEN       ''Spanish
  126. '        CUIDLL$ = "mscui_s.dll"
  127. '    RESSRC$ = "SPANISH"
  128. '    ELSEIF LANGUAGE$ = "esn" THEN       ''Spanish (Modern)
  129. '        CUIDLL$ = "mscui_s.dll"
  130. '    RESSRC$ = "SPANISH"
  131. '    ELSEIF LANGUAGE$ = "ita" THEN       ''Italian
  132. '        CUIDLL$ = "mscui_i.dll"
  133. '    RESSRC$ = "ITALIAN"
  134.     END IF
  135.  
  136.     SetBitmap CUIDLL$, LOGO
  137.     SetTitle "Colorific Setup"
  138.  
  139.     szInf$ = GetSymbolValue("STF_SRCINFPATH")
  140.     IF szInf$ = "" THEN
  141.         szInf$ = GetSymbolValue("STF_CWDDIR") + "HGCSETUP.INF"
  142.     END IF
  143.     ReadInfFile szInf$
  144.  
  145.     OPTCUR$ = "1"
  146.     WINDIR$ = GetWindowsDir()
  147.     SYSDIR$ = GetWindowsSysDir()
  148.  
  149. '   To be compatible with foreign versions of Windows
  150. '   Get the name of the startup group
  151.  
  152.     ini$ = MakePath(GetWindowsDir (), "PROGMAN.INI")
  153.     STARTUP$ = GetIniKeyString (ini$, "Settings", "StartUp")
  154.  
  155. '   If no explicit override, look in PROGMAN.EXE file
  156.     IF STARTUP$ = "" THEN
  157.     hmod% = GetModuleHandle ("PROGMAN")
  158.     IF hmod% THEN
  159.         STARTUP$ = String$(127, 0)
  160. '   The name is stored as string 120 in the resource 
  161.         i% = LoadString (hmod%, 120, STARTUP$, Len (STARTUP$))
  162. '   In the US version the string is encoded Start Up but the group is StartUp
  163.         IF MID$(STARTUP$, 1, 5) = "Start" AND MID$(STARTUP$, Len (STARTUP$) - 1, 2) = "Up" THEN
  164.             STARTUP$ = "StartUp"
  165.         END IF
  166. '   String not found in resource
  167.         IF i% = 0 THEN
  168.             STARTUP$ = "StartUp"
  169.         END IF
  170.     ELSE
  171. '   If another program used as a shell
  172.         STARTUP$ = "StartUp"
  173.     END IF
  174.     END IF
  175.  
  176. '$IFDEF DEBUG
  177.     i% = SetSizeCheckMode(scmOnIgnore)    '' could use scmOff; def = scmOnFatal
  178.     WinDrive$ = MID$(GetWindowsDir, 1, 1)
  179.     IF IsDriveValid(WinDrive$) = 0 THEN
  180.         i% = DoMsgBox("Windows drive ('"+WinDrive$+"') is not a valid drive.", "DEBUG", MB_TASKMODAL+MB_ICONHAND+MB_OK)
  181.         GOTO QUIT
  182.     END IF
  183. '$ENDIF ''DEBUG
  184.  
  185.  
  186. WELCOME:
  187.     fUninstall% = 0
  188.     sz$ = UIStartDlg(CUIDLL$, WELCOME_DLG, "FInfoDlgProc", WELCOME_HLP, HELPPROC$)
  189.     IF sz$ = "CONTINUE" THEN
  190.         UIPop 1
  191.     ELSE
  192.         GOSUB ASKQUIT
  193.         GOTO WELCOME
  194.     END IF
  195.  
  196.     HGCInstalled% = IsHGCInstalled
  197.     IF HGCInstalled% = 1 THEN
  198. ' Save the previous SYSTEM.INI for rescue
  199.         CopyFile MakePath(WINDIR$, "SYSTEM.INI"), MakePath(WINDIR$, "CLRIFIC1.INI"), cmoOverwrite, 0
  200.  
  201. ALREADYINST:
  202.         sz$ = UIStartDlg(CUIDLL$, ALREADYINST_DLG, "FInfoDlgProc", ALREADYINST_HLP, HELPPROC$)
  203.         IF sz$ = "CONTINUE" THEN
  204.             UIPop 1
  205.         ELSEIF sz$ = "REACTIVATE" THEN
  206.             GOTO ALREADYINST
  207.         ELSEIF sz$ = "BACK" THEN
  208.             UIPop 1
  209.             fUninstall% = 1
  210.             UnInstall
  211.  
  212. MITSUBISHI:
  213.             sz$ = UIStartDlg(CUIDLL$, UNINST_COMPLETE_DLG, "FInfoDlgProc", 0, "")
  214.             IF sz$ = "REACTIVATE" THEN
  215.                 GOTO MITSUBISHI
  216.             ELSEIF sz$ = "EXIT" THEN
  217.                 UIPop 1
  218.                 ShowProgmanGroup  STARTUP$, 2, cmoNone
  219.                 ShowProgmanGroup  STARTUP$, 1, cmoNone
  220. MITSUBISHI1:
  221.                 sz$ = UIStartDlg(CUIDLL$, UNINST_SUCCESS_DLG, "FInfo0DlgProc", 0, "")
  222.                 IF sz$ = "REACTIVATE" THEN
  223.                     GOTO MITSUBISHI1
  224.             END IF
  225.                 UIPop 1
  226.                 END
  227.             ELSE
  228.                 UIPop 1
  229.         IF MID$ (WINDIR$, 2, 1) = ":" THEN
  230.             DEST$ = MID$ (WINDIR$, 1, 2)
  231.         ELSE
  232.                     DEST$ = "C:"
  233.         ENDIF
  234.                 DEST$ = DEST$ + "\HGC"
  235.             GOTO WELCOME
  236.             END IF
  237.         ELSE
  238.             GOSUB ASKQUIT
  239.             GOTO ALREADYINST
  240.         END IF
  241.  
  242.     ELSE
  243. ' Save the virgin SYSTEM.INI for rescue
  244.     CopyFile MakePath(WINDIR$, "SYSTEM.INI"), MakePath(WINDIR$, "CLRIFIC0.INI"), cmoOverwrite, 0
  245.  
  246. GETPATH:
  247.         SetSymbolValue "EditTextIn", DEST$
  248.         SetSymbolValue "EditFocus", "END"
  249. GETPATHL1:
  250.         sz$ = UIStartDlg(CUIDLL$, DESTPATH_DLG, "FEditDlgProc", DESTPATH_HLP, HELPPROC$)
  251.         DEST$ = GetSymbolValue("EditTextOut")
  252.  
  253.         IF sz$ = "CONTINUE" THEN
  254.             IF IsDirWritable(DEST$) = 0 THEN
  255.                 GOSUB BADPATH
  256.                 GOTO GETPATHL1
  257.             END IF
  258.             UIPop 1
  259.         ELSEIF sz$ = "REACTIVATE" THEN
  260.             GOTO GETPATHL1
  261.         ELSEIF sz$ = "BACK" THEN
  262.             UIPop 1
  263.             GOTO WELCOME
  264.         ELSE
  265.             GOSUB ASKQUIT
  266.             GOTO GETPATH
  267.         END IF
  268.  
  269.     END IF
  270.  
  271.     ini$ = MakePath(WINDIR$, "kpcms.ini")
  272.     IF DoesFileExist (ini$, femExists) THEN
  273.     DATAB$ = GetIniKeyString (ini$, "KEPS Precision", "DRIVE")
  274.         PTDIR$ = DATAB$ + GetIniKeyString (ini$, "API", "PT_DIR")
  275.         CPDIR$ = DATAB$ + GetIniKeyString (ini$, "KCP", "CP_DIR")
  276.     DATAB$ = DATAB$ + "\KPCMS"
  277.         KPCMSInstalled% = 1
  278.     ELSE
  279.     IF MID$ (DEST$, 2, 1) = ":" THEN
  280.             DATAB$ = MID$ (DEST$, 1, 2)
  281.     ELSE
  282.             DATAB$ = "C:"
  283.         END IF
  284.         DATAB$ = DATAB$ + "\KPCMS"
  285.  
  286.         PTDIR$ = MakePath(DATAB$, "DCPDB")
  287.         CPDIR$ = MakePath(DATAB$, "CMSCP")
  288.         KPCMSInstalled% = 0
  289.     END IF
  290.  
  291.     Install
  292.     IF NOTENOUGHSPACE% = 1 THEN
  293.     goto GETPATH
  294.     ENDIF
  295.  
  296.  
  297.  
  298. QUIT:
  299.     ON ERROR GOTO ERRQUIT
  300.  
  301.     IF ERR = 0 THEN
  302.         IF fUninstall% THEN 
  303.             dlg% = UNINST_SUCCESS_DLG 
  304.         ELSE
  305.             dlg% = EXITSUCCESS
  306.         END IF
  307.     ELSEIF ERR = STFQUIT THEN
  308.         IF fUninstall% THEN 
  309.             dlg% = UNINST_QUIT_DLG 
  310.         ELSE
  311.             dlg% = EXITQUIT
  312.         END IF
  313.     ELSE
  314.         IF fUninstall% THEN 
  315.             dlg% = UNINST_FAILURE_DLG 
  316.         ELSE
  317.             dlg% = EXITFAILURE
  318.         END IF
  319.     END IF
  320. QUITL1:
  321.     sz$ = UIStartDlg(CUIDLL$, dlg%, "FInfo0DlgProc", 0, "")
  322.     IF sz$ = "REACTIVATE" THEN
  323.         GOTO QUITL1
  324.     ELSEIF sz$ = "BACK" THEN
  325.         Run "NOTEPAD " + MakePath (DEST$, "README.TXT")
  326.         GOTO QUITL1
  327.     END IF
  328.     UIPop 1
  329.  
  330.     END
  331.  
  332. ERRQUIT:
  333.     i% = DoMsgBox("Setup sources were corrupted, call Sonnetech!", "Setup Message", MB_OK+MB_TASKMODAL+MB_ICONHAND)
  334.     END
  335.  
  336.  
  337.  
  338. BADPATH:
  339.     sz$ = UIStartDlg(CUIDLL$, BADPATH, "FInfo0DlgProc", 0, "")
  340.     IF sz$ = "REACTIVATE" THEN
  341.         GOTO BADPATH
  342.     END IF
  343.     UIPop 1
  344.     RETURN
  345.  
  346.  
  347.  
  348. ASKQUIT:
  349.     IF fUninstall% THEN 
  350.         dlg% = UNINST_ASKQUIT_DLG 
  351.     ELSE
  352.         dlg% = ASKQUIT
  353.     END IF
  354.     sz$ = UIStartDlg(CUIDLL$, dlg%, "FQuitDlgProc", 0, "")
  355.  
  356.     IF sz$ = "EXIT" THEN
  357.         UIPopAll
  358.         IF fUninstall% = 0 THEN 
  359.             ERROR STFQUIT
  360.         END IF
  361.     ELSEIF sz$ = "REACTIVATE" THEN
  362.         GOTO ASKQUIT
  363.     ELSE
  364.         UIPop 1
  365.     END IF
  366.     RETURN
  367.  
  368.  
  369. '*************************************************************************
  370. '** Purpose:
  371. '**     Builds the copy list and performs all installation operations.
  372. '** Arguments:
  373. '**     none.
  374. '** Returns:
  375. '**     none.
  376. '*************************************************************************
  377. SUB Install STATIC
  378.  
  379.     SrcDir$ = GetSymbolValue("STF_SRCDIR")
  380.     CreateDir DEST$, cmoNone
  381.     
  382.     OpenLogFile MakePath(WINDIR$, "CLRIFIC.LOG"), 0
  383.  
  384.     HGCLutDir$ = MakePath(DEST$, "LUT")
  385.     CreateDir HGCLutDir$, cmoNone
  386.     
  387.     IF KPCMSInstalled% = 0 THEN
  388.     WriteToLogFile "No KPCMS database"
  389.         CreateDir DATAB$, cmoNone
  390.         CreateDir PTDIR$, cmoNone
  391.         CreateDir CPDIR$, cmoNone
  392.     ELSE
  393.     WriteToLogFile "KPCMS database already exists"
  394.     END IF
  395.     WriteToLogFile "KPCMS database path:'"+PTDIR$
  396.  
  397.     WriteToLogFile ""
  398.     WriteToLogFile "  Remove all previous version files"
  399.     WriteToLogFile ""
  400.     i% = SetSilentMode (1)
  401.     AddSectionFilesToCopyList "DelOldHGC", SrcDir$, WINDIR$
  402.     i% = SetSilentMode (i%)
  403.  
  404.     WriteToLogFile ""
  405.     WriteToLogFile "  User chose as destination directory: '" + DEST$ + "'"
  406.     WriteToLogFile ""
  407.     WriteToLogFile "May have had to create the directory: " + DEST$
  408.     WriteToLogFile ""
  409.  
  410.     AddSectionFilesToCopyList "KodakINI", SrcDir$, WINDIR$
  411.     AddSectionFilesToCopyList "KodakCMSCP", SrcDir$, CPDIR$
  412.     AddSectionFilesToCopyList "KodakPT", SrcDir$, PTDIR$
  413.     AddSectionFilesToCopyList "KodakDLL", SrcDir$, WINDIR$
  414.  
  415.     AddSectionFilesToCopyList "HGC", SrcDir$, DEST$
  416.     WriteToLogFile ""
  417.     WriteToLogFile "HGC resources section : '" + RESSRC$ + "'"
  418.     WriteToLogFile ""
  419.     AddSectionFilesToCopyList RESSRC$, SrcDir$, DEST$
  420.     
  421.     i% = SetSizeCheckMode (scmOff)
  422.     AddSectionFilesToCopyList "HGCINI", SrcDir$, WINDIR$
  423.     l& = GetCopyListCost (Extras$, Costs$, Neededs$)
  424.     IF l& = 0 THEN
  425.         CopyFilesInCopyList
  426.     NOTENOUGHSPACE% = 0
  427.     ELSE
  428.     NOTENOUGHSPACE% = 1
  429.         i% = DoMsgBox("Insufficient space on drive "+MID$ (DEST$, 1, 2)+" .Please select an other path for installation.", "Colorific Setup", MB_ICONEXCLAMATION+MB_OK)
  430.     goto ENDINSTALL
  431.     ENDIF
  432.     
  433.    '**** Installing additional precision transform if available
  434. '    Removed, was not useful
  435.  
  436. 'GETSUP:
  437. '    SetSymbolValue "EditTextIn", "A:\"
  438. '    sz$ = UIStartDlg(CUIDLL$, SUPPATH_DLG, "FEditDlgProc", SUPPATH_HLP, HELPPROC$)
  439. '    SUPSRC$ = GetSymbolValue("EditTextOut")
  440. '
  441. '    WriteToLogFile ""
  442. '    WriteToLogFile "  User chose as supplementary disk directory: '" + SUPSRC$ + "'"
  443. '    WriteToLogFile ""
  444. '
  445. '    IF sz$ = "CONTINUE" THEN
  446. '    IF DoesDirExist (SUPSRC$) THEN
  447. '        SupInf$ = MakePath (SUPSRC$, "SUPPLEM.INF")
  448. '        IF DoesFileExist (SupInf$, femExists) THEN
  449. '                UIPop 1
  450. '              ReadInfFile SupInf$
  451. '             AddSectionFilesToCopyList "Files", SUPSRC$, PTDIR$
  452. '            CopyFilesInCopyList
  453. '                ClearCopyList
  454. '        ELSE
  455. '            i% = DoMsgBox ("The disk '"+SUPSRC$+"' is not a Colorific Supplementary Disk", "Colorific Error", MB_ICONEXCLAMATION + MB_RETRYCANCEL)
  456. '            IF i% = IDRETRY THEN
  457. '            goto GETSUP
  458. '        ELSE
  459. '            goto GETSUP
  460. '            END IF    
  461. '        END IF
  462. '    ELSE
  463. '            i% = DoMsgBox ("The drive or directory '"+SUPSRC$+"' is not valid", "Colorific Error", MB_ICONEXCLAMATION + MB_RETRYCANCEL)
  464. '        IF i% = IDRETRY THEN
  465. '            goto GETSUP
  466. '            ELSE
  467. '            goto GETSUP
  468. '        END IF    
  469. '        END IF
  470. '    ELSE
  471. '    UIPop 1
  472. '    END IF
  473.     
  474.     sz$ = UIStartDlg(CUIDLL$, UPDATING_DLG, "FModelessDlgProc", 0, "")
  475.  
  476. ' KCFG.INI file initialization
  477. '    WriteToLogFile "KCFG.INI Initialization"
  478.  
  479. '    ini$ = MakePath(WINDIR$, "KCFG.INI")
  480. '    CreateIniKeyValue ini$, "PATHS", "ImportFiltPath", ImportDir$, cmoNone
  481.  
  482. ' KCMS.INI file initialization
  483.     WriteToLogFile "KPCMS.INI Initialization"
  484.  
  485.     ini$ = MakePath(WINDIR$, "KPCMS.INI")
  486.     CreateIniKeyValue ini$, "KEPS Precision", "DRIVE", CHR$(34) + MID$(DATAB$, 1, 2) + CHR$(34), cmoOverwrite
  487. '************************************************************************************************************
  488. ' BILL - BILL - BILL - BILL - BILL - BILL - BILL - BILL - BILL - BILL - BILL
  489. ' The following line must be there in order to use the KCME1.DLL
  490. '************************************************************************************************************
  491.     CreateIniKeyValue ini$, "KCP", "CTE_NAME", CHR$(34) + "KCME1.DLL" + CHR$(34), cmoOverwrite
  492. '************************************************************************************************************
  493.  
  494. ' HGCCTRL.INI file initialization    
  495.     WriteToLogFile "HGCCTRL.INI Initialization"
  496.  
  497.     ini$ = MakePath(WINDIR$, "HGCCTRL.INI")
  498.     CreateIniKeyValue ini$, "Config", "State", "Off" , cmoOverwrite
  499. ' To allow easy Add-On setup
  500.     CreateIniKeyValue ini$, "Config", "InputState", "Off" , cmoOverwrite
  501. '
  502.     CreateIniKeyValue ini$, "Config", "DisplayState", "On" , cmoOverwrite
  503.     CreateIniKeyValue ini$, "Config", "OutputState", "On" , cmoOverwrite
  504.     CreateIniKeyValue ini$, "Flags", "Input", "01400" , cmoOverwrite
  505.     NbColors% = GetDisplayNumColors()
  506.     IF NbColors% > 256 THEN
  507.        CreateIniKeyValue ini$, "Flags", "Display", "00975" , cmoOverwrite
  508.     ELSEIF NbColors% < 256 THEN
  509.        CreateIniKeyValue ini$, "Flags", "Display", "00000" , cmoOverwrite
  510.        CreateIniKeyValue ini$, "Config", "DisplayState", "Off" , cmoOverwrite
  511.     ELSE
  512.        CreateIniKeyValue ini$, "Flags", "Display", "00048" , cmoOverwrite
  513.     END IF
  514.     CreateIniKeyValue ini$, "Flags", "Output", "02047" , cmoOverwrite
  515.     CreateIniKeyValue ini$, "Dir", "Program", DEST$ + "\", cmoOverwrite
  516.     CreateIniKeyValue ini$, "Dir", "Lut", HGCLutDir$ + "\", cmoOverwrite
  517.  
  518. ' To allow Hiding of Colorific/KODAK Icon
  519. '  Default, compatible with previous version no hide button
  520.     CreateIniKeyValue ini$, "Config", "ControlPanel", "" , cmoOverwrite
  521. ' Hide button enabled, initial state is "On"
  522. '    CreateIniKeyValue ini$, "Config", "ControlPanel", "On" , cmoOverwrite
  523. ' Hide button enabled, initial state is "Off"
  524. '    CreateIniKeyValue ini$, "Config", "ControlPanel", "Off" , cmoOverwrite
  525.  
  526. ' SYSTEM.INI file modification
  527.     WriteToLogFile "SYSTEM.INI Initialization"
  528.  
  529. 'Add ATM checking JPH 12/07/94
  530.     ini$ = MakePath(WINDIR$, "SYSTEM.INI")
  531.     szSys$ = GetIniKeyString (ini$, "boot", "system.drv")
  532. 'Add handling of the empty system.drv= line JPH 02/24/95
  533.     IF szSys$ = "" THEN
  534.     szSys$ = "system.drv"
  535.     END IF
  536.     IF HGCInstalled% = 0 THEN
  537.         IF Instr (UCase$ (szSys$), "ATMSYS.DRV") = 0 THEN
  538.             CreateIniKeyValue ini$, "boot", "system.drv", MakePath (DEST$, "hgcsys.drv"), cmoOverwrite
  539.             CreateIniKeyValue ini$, "boot", "hgc.system.drv", szSys$, cmoOverwrite
  540.     ELSE
  541. 'Add special handling for ATM already installed JPH 02/24/95
  542.             szSys$ = GetIniKeyString (ini$, "boot", "atm.system.drv")
  543.             CreateIniKeyValue ini$, "boot", "hgc.system.drv", szSys$, cmoOverwrite
  544.             CreateIniKeyValue ini$, "boot", "atm.system.drv", MakePath (DEST$, "hgcsys.drv"), cmoOverwrite
  545.     END IF
  546.     ELSE
  547.         IF Instr (UCase$ (szSys$), "HGCSYS.DRV") = 0 THEN
  548.             IF Instr (UCase$ (szSys$), "ATMSYS.DRV") = 0 THEN
  549. ' What to do ?
  550.         ELSE
  551.             CreateIniKeyValue ini$, "boot", "atm.system.drv", MakePath (DEST$, "hgcsys.drv"), cmoOverwrite
  552.         END IF
  553.     ELSE
  554. ' Add special handling to convert from old config SYSTEM=HGC->ATM->SYSTEM
  555. '            CreateIniKeyValue ini$, "boot", "system.drv", MakePath (DEST$, "hgcsys.drv"), cmoOverwrite
  556.  
  557.         szSys$ = GetIniKeyString (ini$, "boot", "hgc.system.drv")
  558.             IF Instr (UCase$ (szSys$), "ATMSYS.DRV") = 0 THEN
  559.                 CreateIniKeyValue ini$, "boot", "system.drv", MakePath (DEST$, "hgcsys.drv"), cmoOverwrite
  560.         ELSE
  561.             szSys$ = GetIniKeyString (ini$, "boot", "atm.system.drv")
  562.             CreateIniKeyValue ini$, "boot", "atm.system.drv", MakePath (DEST$, "hgcsys.drv"), cmoOverwrite
  563.             CreateIniKeyValue ini$, "boot", "hgc.system.drv", szSys$, cmoOverwrite
  564.             CreateIniKeyValue ini$, "boot", "system.drv", "atmsys.drv", cmoOverwrite
  565.         END IF
  566.     END IF
  567.     END IF
  568.  
  569.     UIPop 1
  570.  
  571.     WriteToLogFile "Startup group name: '" + STARTUP$ + "'"
  572.  
  573.     CreateProgmanGroup STARTUP$, "", cmoNone
  574.     CreateProgmanItem  STARTUP$, "Colorific On/Off", MakePath(DEST$, "hgconoff.exe"), "", cmoOverwrite
  575.  
  576.  
  577.     CreateProgmanGroup "Colorific", "", cmoNone
  578.     CreateProgmanItem "Colorific", "Colorific", MakePath(DEST$, "clrific.exe"), "", cmoOverwrite
  579. ' JPH 03/03/95 Add NOTEPAD README.TXT icon in the Colorific group
  580.     CreateProgmanItem "Colorific", "Colorific Read Me", "Notepad " + MakePath(DEST$, "readme.txt"), "", cmoOverwrite
  581.  
  582. ' JPH 06/11/95 Add a copy of Control Panel in Colorfific group
  583. '      CreateProgmanItem  "Colorific", "Colorific Control Panel", MakePath(DEST$, "hgconoff.exe"), "", cmoOverwrite
  584.  
  585. ' JPH 10/29/95 Add Colorific Manual
  586.      CreateProgmanItem  "Colorific", "Colorific Manual", "WinHelp " + MakePath(DEST$, "clficman.hlp"), "", cmoOverwrite
  587.  
  588.  
  589. ENDINSTALL:
  590.     ClearCopyList
  591.  
  592.     CloseLogFile
  593.  
  594. END SUB
  595.  
  596.  
  597. '*************************************************************************
  598. '** Purpose:
  599. '**     UnInstall an existing copy of HGC
  600. '** Arguments:
  601. '**     none.
  602. '** Returns:
  603. '**     none.
  604. '*************************************************************************
  605. SUB UnInstall STATIC
  606.  
  607.     SrcDir$ = GetSymbolValue("STF_SRCDIR")
  608.  
  609.     OpenLogFile MakePath(WINDIR$, "CLRIFIC.LOG"), 1
  610.     WriteToLogFile ""
  611.     WriteToLogFile "  Uninstalling HGC"
  612.     WriteToLogFile ""
  613.  
  614.     WriteToLogFile ""
  615.     WriteToLogFile "  Remove all previous version files"
  616.     WriteToLogFile ""
  617.     i% = SetSilentMode (1)
  618.     AddSectionFilesToCopyList "DelOldHGC", SrcDir$, WINDIR$
  619.     CopyFilesInCopyList
  620.     ClearCopyList
  621.     i% = SetSilentMode (i%)
  622.  
  623.     '**** SYSTEM.INI Restoration
  624.     WriteToLogFile "SYSTEM.INI Restoration"
  625.  
  626.     ini$ = MakePath(WINDIR$, "SYSTEM.INI")
  627. 'Add ATM checking JPH 12/07/94
  628.     szSys$ = GetIniKeyString (ini$, "boot", "system.drv")
  629.     IF HGCInstalled% = 1 THEN
  630.         IF Instr (UCase$ (szSys$), "HGCSYS.DRV") = 0 THEN
  631.             IF Instr (UCase$ (szSys$), "ATMSYS.DRV") = 0 THEN
  632. ' What to do
  633.             ELSE
  634.                 szSys$ = GetIniKeyString (ini$, "boot", "hgc.system.drv")
  635.             CreateIniKeyValue ini$, "boot", "atm.system.drv", szSys$, cmoOverwrite
  636.                END IF
  637.     ELSE
  638.             szSys$ = GetIniKeyString (ini$, "boot", "hgc.system.drv")
  639.             CreateIniKeyValue ini$, "boot", "system.drv", szSys$, cmoOverwrite
  640.     END IF
  641.         RemoveIniKey ini$, "boot", "hgc.system.drv", cmoNone
  642.     END IF
  643.  
  644.     '**** Deleting HGC files
  645.     ini$ = MakePath(WINDIR$, "HGCCTRL.INI")
  646.     IF DoesFileExist (ini$, femExists) THEN
  647.         DEST$ = GetIniKeyString (ini$, "Dir", "Program")
  648.         IF DoesDirExist (DEST$) THEN
  649.             AddSectionFilesToCopyList "DelHGC", SrcDir$, DEST$
  650.             AddSectionFilesToCopyList "DelHGCINI", SrcDir$, WINDIR$
  651.             CopyFilesInCopyList
  652.         ClearCopyList
  653.  
  654.             SETFILE MakePath (DEST$, "*.LOG"), ON
  655.             FOR LogFile$ IN FILELIST
  656.                 RemoveFile LogFile$, cmoForce
  657.             NEXT
  658.             CLEARLIST
  659.  
  660.             HGCLutDir$ = MakePath(DEST$, "LUT")
  661.             IF DoesDirExist (HGCLutDir$) THEN
  662.                 SETFILE MakePath (HGCLutDir$, "*.HGC"), ON
  663.                 FOR LutFile$ IN FILELIST
  664.                    RemoveFile LutFile$, cmoForce
  665.                 NEXT
  666.                 CLEARLIST
  667.  
  668. '        i% = RemoveDirectory (HGCLutDir$)
  669.         END IF
  670.  
  671. '            RemoveDir DEST$, cmoNone
  672.  
  673.         END IF
  674.  
  675.         RemoveFile ini$, cmoForce
  676.     END IF
  677.  
  678.     WriteToLogFile "Startup group name: '" + STARTUP$ + "'"
  679.     CloseLogFile
  680.  
  681. END SUB
  682.  
  683.  
  684. '*************************************************************************
  685. '** Purpose:
  686. '**     Check if HGC is already installed
  687. '** Arguments:
  688. '**     none
  689. '** Returns:
  690. '**     1 if already installed
  691. '*************************************************************************
  692. FUNCTION IsHGCInstalled () STATIC AS INTEGER
  693. ' Check a previous install by the hgc.system.drv entry
  694.     szSys$ = GetIniKeyString (MakePath (WINDIR$, "SYSTEM.INI"), "boot", "hgc.system.drv")
  695.     IF szSys$ = "" THEN
  696. ' If first install propose the default path
  697.     IF MID$ (WINDIR$, 2, 1) = ":" THEN
  698.         DEST$ = MID$ (WINDIR$, 1, 2)
  699.     ELSE
  700.             DEST$ = "C:"
  701.         ENDIF
  702.         DEST$ = DEST$ + "\HGC"
  703.         IsHGCInstalled = 0
  704.     ELSE
  705.     ini$ = MakePath (WINDIR$, "HGCCTRL.INI")
  706.         IF DoesFileExist (ini$, femExists) THEN
  707. ' If already installed propose the previous path as default
  708.             DEST$ = GetIniKeyString (ini$, "Dir", "Program")
  709.             IF MID$(DEST$, LEN(DEST$), 1) = "\" THEN
  710. ' Remove trailing "\" if any
  711.                 DEST$ = MID$(DEST$, 1, LEN(DEST$) - 1)
  712.             END IF 
  713.     ELSE
  714. ' The HGCCTRL.INI has been erased, propose default path
  715.           IF MID$ (WINDIR$, 2, 1) = ":" THEN
  716.             DEST$ = MID$ (WINDIR$, 1, 2)
  717.             ELSE
  718.                 DEST$ = "C:"
  719.             ENDIF
  720.             DEST$ = DEST$ + "\HGC"
  721.         END IF 
  722.         IsHGCInstalled = 1
  723.     END IF
  724. END FUNCTION
  725.  
  726. '*************************************************************************
  727. '** Purpose:
  728. '**     Check number of color of display device
  729. '** Arguments:
  730. '**     none
  731. '** Returns:
  732. '**     Nb of colors
  733. '*************************************************************************
  734. FUNCTION GetDisplayNumColors () STATIC AS Integer
  735.     hDC% = GetDC (0)
  736.     If hDC% <> 0 Then
  737.         iNum% = GetDeviceCaps (hDC%, NUMCOLORS)
  738.         If iNum% < 1 Then
  739.             GetDisplayNumColors = 32767
  740.         else
  741.             GetDisplayNumColors = iNum%
  742.         End If
  743.         i% = ReleaseDC (0, hDC%)
  744.     Else
  745.         GetDisplayNumColors = 256   ' Default value
  746.     End If
  747. END FUNCTION
  748.  
  749. '*************************************************************************
  750. '** Purpose:
  751. '**     Appends a file name to the end of a directory path,
  752. '**     inserting a backslash character as needed.
  753. '** Arguments:
  754. '**     szDir$  - full directory path (with optional ending "\")
  755. '**     szFile$ - filename to append to directory
  756. '** Returns:
  757. '**     Resulting fully qualified path name.
  758. '*************************************************************************
  759. FUNCTION MakePath (szDir$, szFile$) STATIC AS STRING
  760.     IF szDir$ = "" THEN
  761.         MakePath = szFile$
  762.     ELSEIF szFile$ = "" THEN
  763.         MakePath = szDir$
  764.     ELSEIF MID$(szDir$, LEN(szDir$), 1) = "\" THEN
  765.         MakePath = szDir$ + szFile$
  766.     ELSE
  767.         MakePath = szDir$ + "\" + szFile$
  768.     END IF
  769. END FUNCTION
  770.  
  771. '*************************************************************************
  772. '** Purpose:
  773. '**     Remove the XDF library from library
  774. '*************************************************************************
  775. STATIC SUB UNLOAD_XDF
  776.     IF hXDFLibInst%<>0 THEN
  777.         junk%=FreeLibrary(hXDFLibInst%)
  778.         hXDFLibInst%=0
  779.     END IF
  780. END SUB
  781.  
  782.