home *** CD-ROM | disk | FTP | other *** search
/ Computer Life 1995 June / Computer_Life_Magazine_June_1995_Companion_CD.iso / clnsweep / setup.ms_ / setup.ms
Text File  |  1995-01-16  |  8KB  |  296 lines

  1. '**************************************************************************
  2. '*                  MSSetup Toolkit Quarterdeck CleanSweep
  3. '**************************************************************************
  4.  
  5. GLOBAL TITLE$
  6. GLOBAL DEFAULTDESTDIR$
  7. GLOBAL UNIN_INI$
  8. GLOBAL UNIN_EXE$
  9. GLOBAL UNINUNIN_EXE$
  10. GLOBAL README_TXT$
  11. GLOBAL GROUP_NAME$
  12. GLOBAL UNIN_ITEM$
  13. GLOBAL UNINUNIN_ITEM$
  14. GLOBAL README_ITEM$
  15.  
  16. ''==========================================================================
  17. '' Translate these strings
  18. ''
  19. '' The 3 strings at the end are the names of the items within the 
  20. '' Quarterdeck CleanSweep group within Program Manager.
  21. ''==========================================================================
  22. TITLE$           = "Quarterdeck CleanSweep Demo Setup"
  23. DEFAULTDESTDIR$  = "C:\CSDEMO"
  24. UNIN_INI$        = "clnsweep.ini"
  25. UNIN_EXE$        = "clnsweep.exe"
  26. UNINUNIN_EXE$    = "unclnswp.exe"
  27. README_TXT$      = "readme.wri"
  28. GROUP_NAME$      = "Quarterdeck CleanSweep Demo"        '' Group Name
  29. UNIN_ITEM$       = "Quarterdeck CleanSweep Demo"        '' Item Name
  30. UNINUNIN_ITEM$   = "Uninstall Quarterdeck CleanSweep Demo"   '' Item Name
  31. README_ITEM$     = "Read Me"                            '' Item Name
  32. ''==========================================================================
  33. '' End of strings to translate
  34. ''==========================================================================
  35.  
  36. '$INCLUDE 'setupapi.inc'
  37. '$INCLUDE 'msdetect.inc'
  38.  
  39. ''Dialog ID's
  40. CONST WELCOME       = 110
  41. CONST ASKQUIT       = 111
  42. CONST DESTPATH      = 112
  43. CONST EXITFAILURE   = 113
  44. CONST EXITSUCCESS   = 114
  45. CONST APPHELP_REG   = 900
  46. CONST APPHELP_PATH  = 115
  47. CONST APPHELP_WELCOME = 1010
  48. CONST BADPATH       = 6400
  49. CONST FULLDRIVE     = 6410
  50. CONST CDGETNAMEORG  = 7500
  51.  
  52. ''Bitmap ID
  53. CONST LOGO = 2
  54.  
  55. GLOBAL DEST$        ''Default destination directory.
  56. GLOBAL custname$
  57. GLOBAL orgname$
  58. GLOBAL SrcDir$
  59.  
  60. DECLARE SUB Install
  61. DECLARE FUNCTION MakePath (szDir$, szFile$) AS STRING
  62.  
  63. DECLARE FUNCTION Ctl3dRegister LIB "ctl3d.dll" (hInst%) AS INTEGER
  64. DECLARE FUNCTION Ctl3dUnregister LIB "ctl3d.dll" (hInst%) AS INTEGER
  65. DECLARE FUNCTION Ctl3dAutoSubclass LIB "ctl3d.dll" (hInst%) AS INTEGER
  66.  
  67. DECLARE FUNCTION Register_File LIB "qreg.dll" (szFile$) AS INTEGER
  68.  
  69. DECLARE FUNCTION GetModuleHandle LIB "kernel" (szModule$) AS INTEGER
  70. DECLARE FUNCTION LoadString LIB "user" (hInst%, id%, szBuffer$, cbBuffer%) AS INTEGER
  71. DECLARE FUNCTION ShowWindow LIB "user" (hWnd%, nShow%) AS INTEGER
  72.  
  73. INIT:
  74.     hInstance% = HinstFrame()
  75.     hWnd% = HwndFrame()
  76.     junk%=ShowWindow(hWnd%, 3)
  77.     ret = Ctl3dRegister(hInstance%)
  78.     ret = Ctl3dAutoSubclass(hInstance%)
  79.  
  80.     CUIDLL$ = "mscuistf.dll"            ''Custom user interface dll
  81.     HELPPROC$ = "FHelpDlgProc"          ''Help dialog procedure
  82.  
  83.     SetBitmap CUIDLL$, LOGO
  84.     SetTitle TITLE$
  85.  
  86.     szInf$ = GetSymbolValue("STF_SRCINFPATH")
  87.     IF szInf$ = "" THEN
  88.         szInf$ = GetSymbolValue("STF_CWDDIR") + "SETUP.INF"
  89.     END IF
  90.     ReadInfFile szInf$
  91.  
  92.     DEST$ = DEFAULTDESTDIR$
  93.  
  94.     SrcDir$ = GetSymbolValue("STF_SRCDIR")
  95.  
  96. WELCOME:
  97.     sz$ = UIStartDlg(CUIDLL$, WELCOME, "FInfoDlgProc", 0, "")
  98.     IF sz$="CONTINUE" THEN
  99.         UIPop 1
  100.     ELSE
  101.         GOSUB ASKQUIT    
  102.         GOTO WELCOME
  103.     END IF
  104.  
  105.     '' Skip over registration for Demo
  106.     GOTO GETPATH
  107.  
  108. GETNAMEORG:
  109.     '' Get user/company from user.exe
  110.     hInst% = GetModuleHandle("user")
  111.     custname$ = ""
  112.     orgname$ = ""
  113.     IF hInst% <> 0 THEN
  114.         custname$ = String$(255, 0)
  115.         ret = LoadString(hInst%, 514, custname$, Len(custname$))
  116.  
  117.         orgname$ = String$(255, 0)
  118.         ret = LoadString(hInst%, 515, orgname$, Len(orgname$))
  119.  
  120.         custname$ = RTRIM$(custname$)
  121.         orgname$ = RTRIM$(orgname$)
  122.         IF UCASE$(orgname$) = "UNKNOWN ORGANIZATION" THEN
  123.             orgname$ = ""
  124.         END IF
  125.     END IF
  126.     
  127.     '' Try to get registration info from MS User Info section in WIN.INI
  128.     IF custname$ = "" THEN
  129.         custname$ = GetIniKeyString("WIN.INI", "MS User Info", "DefName")
  130.         orgname$  = GetIniKeyString("WIN.INI", "MS User Info", "DefCompany")
  131.     END IF
  132.  
  133.     custname$ = RTRIM$(custname$)
  134.     orgname$ = RTRIM$(orgname$)
  135.  
  136.     SetSymbolValue "CUSTNAME", custname$
  137.     SetSymbolValue "ORGNAME", orgname$
  138.     sz$ = UIStartDlg(CUIDLL$, CDGETNAMEORG, "FNameOrgDlgProc", APPHELP_REG, HELPPROC$)
  139.     IF sz$="CONTINUE" THEN
  140.         UIPop 1
  141.     ELSE
  142.         GOSUB ASKQUIT    
  143.         GOTO GETNAMEORG
  144.     END IF
  145.  
  146. GETPATH:
  147.     SetSymbolValue "EditTextIn", DEST$
  148.  
  149. GETPATHL1:
  150.     SetSymbolValue "EditFocus", "ALL"
  151.     sz$ = UIStartDlg(CUIDLL$, DESTPATH, "FEditDlgProc", APPHELP_PATH, HELPPROC$)
  152.     DEST$ = GetSymbolValue("EditTextOut")
  153.  
  154.     IF sz$ = "CONTINUE" THEN
  155.         IF IsDirWritable(DEST$) = 0 THEN
  156.             GOSUB BADPATH
  157.             GOTO GETPATHL1
  158.         END IF
  159.         
  160.         '' Make sure enough space on destination
  161.         ClearCopyList
  162.         AddSectionFilesToCopyList "Files", SrcDir$, DEST$
  163.         cost& = GetCopyListCost("","","")
  164.         '' Add 1 cluster 16K, to account for INI file.
  165.         cost& = cost& + 16384
  166.         IF cost& > GetFreeSpaceForDrive(ucase$(MID$(DEST$, 1, 1))) THEN
  167.             GOSUB FULLDRIVE
  168.             SetSymbolValue "EditTextIn", DEST$
  169.             GOTO GETPATHL1
  170.         ENDIF
  171.         UIPop 1
  172.     ELSEIF sz$ = "REACTIVATE" THEN
  173.         GOTO GETPATHL1
  174.     ELSE
  175.         GOSUB ASKQUIT
  176.         GOTO GETPATH
  177.     END IF
  178.  
  179.  
  180.     Install
  181.  
  182.  
  183. QUIT:
  184.     ON ERROR GOTO ERRQUIT
  185.  
  186.     IF ERR = 0 THEN
  187.         dlg% = EXITSUCCESS
  188.     ELSEIF ERR = STFQUIT THEN
  189.         dlg% = 0
  190.     ELSE
  191.         dlg% = EXITFAILURE
  192.     END IF
  193. QUITL1:
  194.     IF dlg% <> 0 THEN
  195.         sz$ = UIStartDlg(CUIDLL$, dlg%, "FInfo0DlgProc", 0, "")
  196.         IF sz$ = "REACTIVATE" THEN
  197.             GOTO QUITL1
  198.         END IF
  199.         UIPop 1
  200.     END IF
  201.  
  202. ExitInstance:
  203.     ret = Ctl3dUnregister(hInstance%)
  204.  
  205.     END
  206.  
  207. ERRQUIT:
  208.     GOTO ExitInstance
  209.  
  210.  
  211. BADPATH:
  212.     sz$ = UIStartDlg(CUIDLL$, BADPATH, "FInfo0DlgProc", 0, "")
  213.     IF sz$ = "REACTIVATE" THEN
  214.         GOTO BADPATH
  215.     END IF
  216.     UIPop 1
  217.     RETURN
  218.  
  219. FULLDRIVE:
  220.     sz$ = UIStartDlg(CUIDLL$, FULLDRIVE, "FInfo0DlgProc", 0, "")
  221.     IF sz$ = "REACTIVATE" THEN
  222.         GOTO FULLDRIVE
  223.     END IF
  224.     UIPop 1
  225.     RETURN
  226.  
  227.  
  228.  
  229.  
  230. ASKQUIT:
  231.     sz$ = UIStartDlg(CUIDLL$, ASKQUIT, "FQuitDlgProc", 0, "")
  232.  
  233.     IF sz$ = "EXIT" THEN
  234.         UIPopAll
  235.         ERROR STFQUIT
  236.     ELSEIF sz$ = "REACTIVATE" THEN
  237.         GOTO ASKQUIT
  238.     ELSE
  239.         UIPop 1
  240.     END IF
  241.     RETURN
  242.  
  243.  
  244.  
  245. '**
  246. '** Purpose:
  247. '**     Builds the copy list and performs all installation operations.
  248. '** Arguments:
  249. '**     none.
  250. '** Returns:
  251. '**     none.
  252. '*************************************************************************
  253. SUB Install STATIC
  254.  
  255.     WindowsDir$ = GetWindowsDir()
  256.     CreateDir DEST$, cmoNone
  257.  
  258.     '' Most of files already in Copy List
  259.     AddSectionFilesToCopyList "IniFiles", SrcDir$, WindowsDir$
  260.     CopyFilesInCopyList
  261.  
  262.     nErr% = Register_File(MakePath(DEST$,UNIN_EXE$))
  263.  
  264.     CreateProgmanGroup GROUP_NAME$, "", cmoNone
  265.     ShowProgmanGroup   GROUP_NAME$, 1, cmoNone
  266.     CreateProgmanItem  GROUP_NAME$, UNIN_ITEM$, MakePath(DEST$,UNIN_EXE$), "", cmoOverwrite
  267.     CreateProgmanItem  GROUP_NAME$, UNINUNIN_ITEM$, MakePath(DEST$,UNINUNIN_EXE$), "", cmoOverwrite
  268.     CreateProgmanItem  GROUP_NAME$, README_ITEM$, MakePath(DEST$,README_TXT$), "", cmoOverwrite
  269.  
  270. END SUB
  271.  
  272.  
  273.  
  274. '**
  275. '** Purpose:
  276. '**     Appends a file name to the end of a directory path,
  277. '**     inserting a backslash character as needed.
  278. '** Arguments:
  279. '**     szDir$  - full directory path (with optional ending "\")
  280. '**     szFile$ - filename to append to directory
  281. '** Returns:
  282. '**     Resulting fully qualified path name.
  283. '*************************************************************************
  284. FUNCTION MakePath (szDir$, szFile$) STATIC AS STRING
  285.     IF szDir$ = "" THEN
  286.         MakePath = szFile$
  287.     ELSEIF szFile$ = "" THEN
  288.         MakePath = szDir$
  289.     ELSEIF MID$(szDir$, LEN(szDir$),