home *** CD-ROM | disk | FTP | other *** search
/ Computerworld 1996 March / Computerworld_1996-03_cd.bin / idg_cd3 / utility / backdsk / backdesk.mst < prev    next >
Text File  |  1995-05-29  |  11KB  |  362 lines

  1. '**************************************************************************
  2. '*                       Microcosm Setup Program
  3. '**************************************************************************
  4.  
  5. '$DEFINE DEBUG  ''Define for script development/debugging
  6.  
  7. '$INCLUDE 'setupapi.inc'
  8. '$INCLUDE 'msdetect.inc'
  9.  
  10. ''Dialog ID's
  11. CONST WELCOME       = 100
  12. CONST ASKQUIT       = 200
  13. CONST DESTPATH      = 300
  14. CONST EXITFAILURE   = 400
  15. CONST EXITQUIT      = 600
  16. CONST EXITSUCCESS   = 700
  17. CONST OPTIONS       = 800
  18. CONST APPHELP       = 900
  19. CONST BADPATH       = 6400
  20. CONST RESTART       = 1100
  21. CONST MAKESHELL        = 7900
  22. CONST PROBSYS       = 8000
  23. CONST SYSMENU       = 8100
  24. CONST SHELLRESTART  = 8200
  25.  
  26. ''Bitmap ID
  27. CONST LOGO = 1
  28.  
  29. GLOBAL DEST$        ''Default destination directory.
  30. GLOBAL WINDRIVE$    ''Windows drive letter.
  31. GLOBAL szWinDir$    ''Windows directory.
  32. GLOBAL szWinSysDir$ ''Windows system directory
  33. GLOBAL szDirTmp$    ''Temporary directory.
  34. GLOBAL szIniDir$
  35. GLOBAL szIniEntry$
  36. GLOBAL szAutoDir$
  37. GLOBAL CUIDLL$
  38. GLOBAL szOut$
  39. GLOBAL IsShell%
  40.  
  41. DECLARE SUB Install
  42. DECLARE SUB AskQuitInstall
  43.  
  44. DECLARE FUNCTION MakePath (szDir$, szFile$) AS STRING
  45. DECLARE FUNCTION GetPrivateProfileString LIB "kernel" (szSect$, szKey$, szDefault$,szBuf$, cbBuf%, szIni$) AS INTEGER
  46. DECLARE FUNCTION ExitWindows LIB "user" (p1&, p2%) AS INTEGER
  47.  
  48. INIT:
  49.     CUIDLL$ = "mscuistf.dll"            ''Custom user interface dll
  50.     HELPPROC$ = "FHelpDlgProc"          ''Help dialog procedure
  51.  
  52.     SetBitmap CUIDLL$, LOGO
  53.     SetTitle "BackDesk Install Program"
  54.  
  55.     szInf$ = GetSymbolValue("STF_SRCINFPATH")
  56.     IF szInf$ = "" THEN
  57.         szInf$ = GetSymbolValue("STF_CWDDIR") + "Setup.INF"
  58.     END IF
  59.     ReadInfFile szInf$
  60.  
  61.     OPTCUR$ = "1"
  62.  
  63.     i% = SetSizeCheckMode(scmOnIgnore)    '' could use scmOff; def = scmOnFatal
  64.     WinDrive$ = MID$(GetWindowsDir, 1, 1)
  65.     szWinDir$ = GetWindowsDir()
  66.     szWinSysDir$ = GetWindowsSysDir()
  67.     IF IsDriveValid(WinDrive$) = 0 THEN
  68.         i% = DoMsgBox("Windows drive ('"+WinDrive$+"') is not a valid drive.", "DEBUG", MB_TASKMODAL+MB_ICONHAND+MB_OK)
  69.         GOTO QUIT
  70.     END IF
  71.     DEST$ = MakePath(szWinDir$,"BackDesk")
  72.  
  73. '' Check Windows Version
  74.     IF (GetWindowsMajorVersion() < 3) OR ((GetWindowsMajorVersion() = 3) AND (GetWindowsMinorVersion() < 1)) THEN
  75.         i% = DoMsgBox("BackDesk requires Windows V3.1 to run.","BackDesk Install",MB_OK+MB_ICONEXCLAMATION)
  76.     END IF
  77.  
  78. WELCOME:
  79.     sz$ = UIStartDlg(CUIDLL$, WELCOME, "FInfoDlgProc", APPHELP, HELPPROC$)
  80.     IF sz$ = "CONTINUE" THEN
  81.         UIPop 1
  82.     ELSE
  83.         AskQuitInstall
  84.         GOTO WELCOME
  85.     END IF
  86.  
  87.  
  88. GETPATH:
  89.     SetSymbolValue "EditTextIn", DEST$
  90.     SetSymbolValue "EditFocus", "END"
  91. GETPATHL1:
  92.     sz$ = UIStartDlg(CUIDLL$, DESTPATH, "FEditDlgProc", APPHELP, HELPPROC$)
  93.     DEST$ = GetSymbolValue("EditTextOut")
  94.  
  95.     IF sz$ = "CONTINUE" THEN
  96.         IF IsDirWritable(DEST$) = 0 THEN
  97.             GOSUB BADPATH
  98.             GOTO GETPATHL1
  99.         END IF
  100.         UIPop 1
  101.     ELSEIF sz$ = "REACTIVATE" THEN
  102.         GOTO GETPATHL1
  103.     ELSEIF sz$ = "BACK" THEN
  104.         UIPop 1
  105.         GOTO WELCOME
  106.     ELSE
  107.         AskQuitInstall
  108.         GOTO GETPATH
  109.     END IF
  110.  
  111.  
  112.     Install
  113.  
  114.  
  115. QUIT:
  116.     ON ERROR GOTO ERRQUIT
  117.  
  118.     IF ERR = 0 THEN
  119.         IF IsShell% = 1 THEN
  120.             dlg% = SHELLRESTART
  121.         ELSE
  122.             dlg% = EXITSUCCESS
  123.         END IF
  124.     ELSEIF ERR = STFQUIT THEN
  125.         dlg% = EXITQUIT
  126.     ELSE
  127.         dlg% = EXITFAILURE
  128.     END IF
  129.  
  130. QUITL1:
  131.     sz$ = UIStartDlg(CUIDLL$, dlg%, "FInfo0DlgProc", 0, "")
  132.     IF sz$ = "REACTIVATE" THEN
  133.         GOTO QUITL1
  134.     END IF
  135.     UIPop 1
  136.  
  137.     END
  138.  
  139. ERRQUIT:
  140.     i% = DoMsgBox("Setup sources were corrupted!", "Setup Message", MB_OK+MB_TASKMODAL+MB_ICONHAND)
  141.     END
  142.  
  143.  
  144.  
  145. BADPATH:
  146.     sz$ = UIStartDlg(CUIDLL$, BADPATH, "FInfo0DlgProc", 0, "")
  147.     IF sz$ = "REACTIVATE" THEN
  148.         GOTO BADPATH
  149.     END IF
  150.     UIPop 1
  151.     RETURN
  152.  
  153.  
  154. ''AskQuitInstall was here
  155.  
  156.  
  157. '**
  158. '** Purpose:
  159. '**     Builds the copy list and performs all installation operations.
  160. '** Arguments:
  161. '**     none.
  162. '** Returns:
  163. '**     none.
  164. '*************************************************************************
  165. SUB Install STATIC
  166.  
  167.     SrcDir$ = GetSymbolValue("STF_SRCDIR")
  168.     CreateDir DEST$, cmoNone
  169.     SetRestartDir(DEST$)
  170.  
  171.     OpenLogFile MakePath(DEST$, "LOGFILE.OUT"), 0
  172.     WriteToLogFile ""
  173.     WriteToLogFile "  User chose as destination directory: '" + DEST$ + "'"
  174.     WriteToLogFile ""
  175.     WriteToLogFile "May have had to create the directory: " + DEST$
  176.     WriteToLogFile ""
  177.  
  178.     AddSectionFilesToCopyList "BackDesk", SrcDir$, DEST$
  179.     AddSectionFilesToCopyList "BackDesk Tools", SrcDir$, DEST$
  180.     AddSectionFilesToCopyList "BackDrop Tools", SrcDir$, DEST$
  181.     IF IsDIRWritable(szWinSysDir$) = 0 THEN
  182.         MYSYSPROB:
  183.         sz$ = UIStartDlg(CUIDLL$, PROBSYS, "FInfoDlgProc", APPHELP, HELPPROC$)
  184.         IF sz$ = "CONTINUE" THEN
  185.                 UIPop 1
  186.             ELSE
  187.                 AskQuitInstall
  188.                 GOTO MYSYSPROB
  189.             END IF
  190.         AddSectionFilesToCopyList "Windows", SrcDir$, DEST$
  191.     ELSE
  192.         AddSectionFilesToCopyList "Windows", SrcDir$, szWinSysDir$
  193.  
  194.     END IF
  195.     CopyFilesInCopyList
  196.     CreateIniKeyValue "WIN.INI","Extensions","GRP",MakePath(DEST$,"popgroup.exe")+" ^.GRP",cmoOverwrite
  197.  
  198.     BDG$ = "BackDesk 3.10"
  199.     CreateProgmanGroup BDG$, "", cmoOverwrite
  200.     ShowProgmanGroup  BDG$, 1, cmoNone
  201. '
  202. ' Main programs
  203. '
  204.     CreateProgmanItem BDG$, "BackMenu",    MakePath(DEST$,"backmenu.exe"), "", cmoOverwrite
  205.     CreateProgmanItem BDG$, "BigDesk",    MakePath(DEST$,"bigdesk.exe"),    "", cmoOverwrite
  206.     CreateProgmanItem BDG$, "BackDesk Help",    MakePath(DEST$,"backdesk.hlp"), "", cmoOverwrite
  207. '
  208. ' Uninstall
  209. '
  210.     CreateProgmanItem BDG$, "BackDesk Uninstall",    MakePath(DEST$,"bduninst.exe"),    "", cmoOverwrite
  211. '
  212. ' BackDesk Tools
  213. '
  214.     CreateProgmanItem BDG$, "BackMenu Editor", MakePath(DEST$,"bme.exe"), "", cmoOverwrite
  215.     CreateProgmanItem BDG$, "WRUN Windows Server",    MakePath(DEST$,"wrunserv.exe")+" -hide", "", cmoOverwrite
  216. '
  217. ' BackDrop Tools
  218. '
  219.     CreateProgmanItem BDG$, "Copy Files Tool",        MakePath(DEST$,"copytool.exe"),    "", cmoOverwrite
  220.     CreateProgmanItem BDG$, "Drag/Drop Clipboard Tool",    MakePath(DEST$,"dropclip.exe"),    "", cmoOverwrite
  221.     CreateProgmanItem BDG$, "Remove Files/Aliases Tool",    MakePath(DEST$,"dustbin.exe"),    "", cmoOverwrite
  222.     CreateProgmanItem BDG$, "Task to Alias Tool",        MakePath(DEST$,"t2alias.exe"),    "", cmoOverwrite
  223.     CreateProgmanItem BDG$, "Wallpaper Changing Tool",    MakePath(DEST$,"wallpapr.exe"),    "", cmoOverwrite
  224. '
  225. ' Add some interesting aliases in (but only if there aren't any
  226. '
  227.     szOut$=""
  228.     for i%=1 to 256
  229.       szOut$=szout$+"*"
  230.     next
  231.     spserv$=MakePath(szWinDir$,"SP-SERV.INI")
  232.     i%=GetPrivateProfileString("ToolPlaces","Tool0","",szOut$,255,spserv$)
  233.     if i% = 0 THEN
  234.         CreateIniKeyValue spserv$,"ToolPlaces","Tool0","0,197,1,Notepad,"+MakePath(szWinDir$,"NOTEPAD.EXE")+",0,0,notepad.exe #", cmoOverwrite
  235.         CreateIniKeyValue spserv$,"ToolPlaces","Tool1","0,349,1,BackDesk 3.1 Help,winhelp.exe ,0,0,"+MakePath(DEST$,"BACKDESK.HLP"), cmoOverwrite
  236.         CreateIniKeyValue spserv$,"ToolPlaces","Tool2","0,121,1,Control Panel,"+MakePath(szWinDir$,"CONTROL.EXE")+",0,0,CONTROL.EXE", cmoOverwrite
  237.         CreateIniKeyValue spserv$,"ToolPlaces","Tool3","0,45,1,File Mangler,"+MakePath(szWinDir$,"WINFILE.EXE")+",0,0,{XPO=53 YPO=37 WID=580 HEI=434 NOR XDESK=0 YDESK=0 SIN TIT=""File Manager""}"+MakePath(szWinDir$,"WINFILE.EXE"), cmoOverwrite
  238. ' We'll give people program mangler as it is useful
  239.         CreateIniKeyValue spserv$,"ToolPlaces","Tool4","0,273,1,Program  Mangler,"+MakePath(szWinDir$,"progman.exe")+",0,0,"+MakePath(szWinDir,"progman.exe"), cmoOverwrite
  240. ' because we can't guarantee the group name
  241. '        CreateIniKeyValue spserv$,"ToolPlaces","Tool4","0,273,1,BackDesk goodies,"+MakePath(DEST$,"popgroup.exe")+",0,0,"+MakePath(szWinDir,"BACKDESK.GRP"), cmoOverwrite
  242.     END IF
  243. '
  244. ' Use the default menu used if theres nothing defined
  245. '
  246.     szOut$=""
  247.     for i%=1 to 256
  248.       szOut$=szout$+"*"
  249.     next
  250.     i%=GetPrivateProfileString("Back-Menu","IniFile","",szOut$,255,spserv$)
  251.     IF i%=0 THEN
  252.         CreateIniKeyValue spserv$,"Back-Menu","IniFile",MakePath(DEST$,"BACKDESK.MNU"), cmoOverwrite
  253.     END IF
  254. '
  255. ' Install the supplied external keywords
  256. '
  257.     XK$ = "External Keywords"
  258.     CreateIniKeyValue spserv$,XK$,"XKeywordManager",MakePath(DEST$,"xkeyman.dll"), cmoOverwrite
  259.     CreateIniKeyValue spserv$,XK$,"Groups",MakePath(DEST$,"pmgroups.dll"), cmoOverwrite
  260.     CreateIniKeyValue spserv$,XK$,"Tasks",MakePath(DEST$,"bmkeyw.dll"), cmoOverwrite
  261.     CreateIniKeyValue spserv$,XK$,"ExitWindows",MakePath(DEST$,"bmkeyw.dll"), cmoOverwrite
  262.     CreateIniKeyValue spserv$,XK$,"About",MakePath(DEST$,"bmkeyw.dll"), cmoOverwrite
  263.     CreateIniKeyValue spserv$,XK$,"DefaultPrinter",MakePath(DEST$,"defprn.dll"), cmoOverwrite
  264. '
  265. ' And all of Simons
  266. '
  267.     CreateIniKeyValue spserv$,XK$,"NetConn",MakePath(DEST$,"xk_net.dll"), cmoOverwrite
  268.     CreateIniKeyValue spserv$,XK$,"NetDisc",MakePath(DEST$,"xk_net.dll"), cmoOverwrite
  269.     CreateIniKeyValue spserv$,XK$,"NetLinks",MakePath(DEST$,"xk_net.dll"), cmoOverwrite
  270. '
  271. ' Add in BME if it isn't already there
  272. '
  273.     szOut$=""
  274.     for i%=1 to 256
  275.       szOut$=szout$+"*"
  276.     next
  277.     i%=GetPrivateProfileString("Back-Menu","MenuEditor","",szOut$,255,spserv$)
  278.     if i% = 0 THEN
  279.         CreateIniKeyValue spserv$,"Back-Menu","MenuEditor",MakePath(DEST$,"bme.exe"), cmoOverwrite
  280.     END if
  281. '
  282. ' Make BackMenu the shell?
  283. '
  284.     IsShell%=0
  285.     szOut$=""
  286.     for i%=1 to 256
  287.       szOut$=szout$+"*"
  288.     next
  289.     i%=GetPrivateProfileString("boot","shell","",szOut$,255,"system.ini")
  290.     
  291.     IF (instr(UCase$(szOut$),"BACKMENU") = 0) AND (instr(UCase$(szOut$),"BDSHELL") = 0) THEN
  292.         sz$ = UIStartDlg(CUIDLL$, MAKESHELL, "FInfoDlgProc", APPHELP, HELPPROC$)
  293.         IF sz$ = "CONTINUE" THEN
  294.             CreateIniKeyValue MakePath(szWinDir$,"SYSTEM.INI"),"BOOT","BD_OldShell",szOut$,cmoOverwrite
  295.             CreateIniKeyValue MakePath(szWinDir$,"SYSTEM.INI"),"BOOT","SHELL",MakePath(DEST$,"BDSHELL.EXE"),cmoOverwrite
  296.             IsShell%=1
  297.         END IF
  298.         UIPop 1
  299.     ELSE
  300.         CreateIniKeyValue MakePath(szWinDir$,"SYSTEM.INI"),"BOOT","SHELL",MakePath(DEST$,"BDSHELL.EXE"),cmoOverwrite
  301.         IsShell%=1
  302.     END IF
  303. '
  304. ' Any system files to copy?
  305. '
  306.     IF RestartListEmpty() = 0 THEN
  307.     ASKRESTART:
  308.         sz$ = UIStartDlg(CUIDLL$, RESTART, "FInfoDlgProc", APPHELP, HELPPROC$)
  309.         IF sz$ = "CONTINUE" THEN
  310.             UIPop 1
  311.         ELSE
  312.             AskQuitInstall
  313.             GOTO ASKRESTART
  314.         END IF
  315.         i% = ExitExecRestart()
  316. '        i%=ExitWindows(66,66)
  317.     END IF
  318.  
  319.     CloseLogFile
  320.  
  321. END SUB
  322.  
  323. SUB AskQuitInstall STATIC
  324.  
  325. LAskQuitInstall:
  326.     sz$ = UIStartDlg(CUIDLL$, ASKQUIT, "FQuitDlgProc", 0, "")
  327.  
  328.     IF sz$ = "EXIT" THEN
  329.         UIPopAll
  330.         ERROR STFQUIT
  331.     ELSEIF sz$ = "REACTIVATE" THEN
  332.         GOTO LAskQuitInstall
  333.     ELSE
  334.         UIPop 1
  335.     END IF
  336. END SUB
  337.  
  338.  
  339.  
  340. '**
  341. '** Purpose:
  342. '**     Appends a file name to the end of a directory path,
  343. '**     inserting a backslash character as needed.
  344. '** Arguments:
  345. '**     szDir$  - full directory path (with optional ending "\")
  346. '**     szFile$ - filename to append to directory
  347. '** Returns:
  348. '**     Resulting fully qualified path name.
  349. '*************************************************************************
  350. FUNCTION MakePath (szDir$, szFile$) STATIC AS STRING
  351.     IF szDir$ = "" THEN
  352.         MakePath = szFile$
  353.     ELSEIF szFile$ = "" THEN
  354.         MakePath = szDir$
  355.     ELSEIF MID$(szDir$, LEN(szDir$), 1) = "\" THEN
  356.         MakePath = szDir$ + szFile$
  357.     ELSE
  358.         MakePath = szDir$ + "\" + szFile$
  359.     END IF
  360. END FUNCTION
  361.  
  362.