home *** CD-ROM | disk | FTP | other *** search
/ Computerworld 1996 March / Computerworld_1996-03_cd.bin / idg_cd3 / utility / toolpal / toolpal.ms_ / toolpal.bin
Encoding:
Text File  |  1995-08-04  |  9.7 KB  |  322 lines

  1. '**************************************************************************
  2. '*                       MSSetup Toolkit 
  3. '*          Modified by Woody Pewitt for ArcIt setup
  4. '**************************************************************************
  5.  
  6. ''  $DEFINE DEBUG  ''Define for script development/debugging
  7.  
  8. DECLARE FUNCTION LoadString LIB "User" (hInstance%, wID%, lpBuffer$, nBufferMax%) AS INTEGER
  9. DECLARE FUNCTION GetModuleHandle LIB "Kernel" ( lpModuleName$) AS INTEGER
  10. DECLARE FUNCTION WritePrivateProfileString LIB "Kernel" (lpAppName$, lpKeyName$, lpString$, lplFileName$) AS INTEGER
  11.  
  12. '$INCLUDE 'setupapi.inc'
  13.  
  14. ''Dialog ID's
  15. CONST WELCOME       = 100
  16. CONST ASKQUIT       = 200
  17. CONST DESTPATH      = 300
  18. CONST EXITFAILURE   = 400
  19. CONST EXITQUIT      = 600
  20. CONST EXITSUCCESS   = 700
  21. CONST APPHELP       = 900
  22. CONST BADPATH       = 6400
  23. CONST CDCONFIRMINFO = 7300
  24. CONST CDGETNAMEORG  = 7500
  25. CONST CDBADNAME     = 7700
  26.  
  27. ''Bitmap ID
  28. CONST LOGO = 1
  29.  
  30. GLOBAL DEST$        ''Default destination directory.
  31. GLOBAL OPTCUR$      ''Option selection from option dialog.
  32.  
  33. DECLARE SUB Install
  34. DECLARE FUNCTION MakePath (szDir$, szFile$) AS STRING
  35. DECLARE SUB GetWinUserName(UserN$, OrgN$)
  36.  
  37. INIT:
  38.     CUIDLL$ = "mscuistf.dll"            ''Custom user interface dll
  39.     HELPPROC$ = "FHelpDlgProc"          ''Help dialog procedure
  40.  
  41.     SetBitmap CUIDLL$, LOGO
  42.     SetTitle "Digital Artistry Setup"
  43.  
  44.     szInf$ = GetSymbolValue("STF_SRCINFPATH")
  45.     IF szInf$ = "" THEN
  46.         szInf$ = GetSymbolValue("STF_CWDDIR") + "TOOLPAL.INF"
  47.     END IF
  48.     ReadInfFile szInf$
  49.  
  50.     OPTCUR$ = "1"
  51.     DEST$ = "C:\TOOLPAL"
  52.  
  53.     SetAbout "ToolPAL", "Ver 1.0" + RL$ + "1994"
  54.  
  55. WELCOME:     '' Show the Welcome dlg
  56.     sz$ = UIStartDlg(CUIDLL$, WELCOME, "FInfoDlgProc", APPHELP, HELPPROC$)
  57.     IF sz$ = "CONTINUE" THEN
  58.         UIPop 1
  59.     ELSE
  60.         GOSUB ASKQUIT
  61.         GOTO WELCOME
  62.     END IF
  63.  
  64.  
  65. TESTWINVER:   '' See if windows is ver 3.1 or more
  66.     major% = GetWindowsMajorVersion()
  67.     minor% = GetWindowsMinorVersion()
  68.     IF major% >= 3 THEN
  69.         IF minor% >= 10 THEN
  70.         ELSE
  71.             i% = DoMsgBox("ToolPAL needs Windows 3.1 or better", "Digital Artistry Setup", MB_OK+MB_TASKMODAL+MB_ICONHAND)
  72.             ERROR STFQUIT
  73.         END IF
  74.     ELSE
  75.         i% = DoMsgBox("ToolPAL needs Windows 3.1 or better", "Digital Artistry Setup", MB_OK+MB_TASKMODAL+MB_ICONHAND)
  76.         ERROR STFQUIT
  77.     END IF
  78.  
  79. TESTWINSYSDIR:  '' Test ability to write to sys dir
  80.     sysdir$ = GetWindowsSysDir()
  81.     IF IsDirWritable(sysdir$) = 0 THEN
  82.         i% = DoMsgBox( "Windows System directory can not be written to.  Setup can not proceed.", "Digital Artistry Setup", MB_TASKMODAL+MB_ICONEXCLAMATION)
  83.         ERR = 2
  84.         GOTO QUIT
  85.     END IF
  86.  
  87.  
  88.     GetWinUserName UserN$, OrgN$     '' Get user's name from windows
  89.  
  90. GEUSERNAME:    '' Display users's name and organization and let change if needed
  91.     SetSymbolValue "NameOut", UserN$
  92.     SetSymbolValue "OrgOut", OrgN$
  93.     sz$ = UIStartDlg(CUIDLL$, CDGETNAMEORG, "FNameOrgDlgProc", APPHELP, HELPPROC$)
  94.     IF sz$ = "BACK" THEN
  95.         GOTO WELCOME
  96.     ELSEIF sz$ = "EXIT" THEN
  97.         UIPop 1
  98.         GOSUB ASKQUIT
  99.         GOTO GEUSERNAME
  100.     ELSEIF sz$ = "CANCEL" THEN
  101.         UIPop 1
  102.         GOSUB ASKQUIT
  103.         GOTO GEUSERNAME
  104.     ELSE          '' CONTINUE
  105.         UserN$ = GetSymbolValue("NameOut")
  106.         OrgN$ = GetSymbolValue("OrgOut")
  107.  
  108.         IF UserN$ = "" THEN
  109.             UIPop 1
  110.             sz$ = UIStartDlg(CUIDLL$, CDBADNAME, "FInfo0DlgProc", APPHELP, HELPPROC$)
  111.             UIPop 1
  112.             GOTO GEUSERNAME
  113.         END IF
  114.     END IF
  115.  
  116.     RemoveSymbol "NameOut"
  117.     RemoveSymbol "OrgOut"
  118.  
  119. CONFIRM:  '' Confirm user's name and organization
  120.     AddListItem "ConfirmTextIn", UserN$
  121.     AddListItem "ConfirmTextIn", OrgN$
  122.     sz$ = UIStartDlg(CUIDLL$, CDCONFIRMINFO, "FConfirmDlgProc", APPHELP, HELPPROC$)
  123.     IF sz$ = "BACK" THEN
  124.         UIPop 2
  125.         RemoveSymbol "ConfirmTextIn"
  126.         GOTO GEUSERNAME
  127.     ELSEIF sz$ = "EXIT" THEN
  128.         UIPop 2
  129.         GOSUB ASKQUIT
  130.         GOTO CONFIRM
  131.     ELSEIF sz$ = "CANCEL" THEN
  132.         UIPop 2
  133.         GOSUB ASKQUIT
  134.         GOTO GEUSERNAME
  135.     ELSE
  136.         UIPop 2
  137.     END IF
  138.  
  139.     RemoveSymbol "ConfirmTextIn"
  140.  
  141.  
  142. GETPATH: '' Set default dir
  143.     SetSymbolValue "EditTextIn", DEST$
  144.     SetSymbolValue "EditFocus", "END"
  145. GETPATHL1:  '' Ask uers for location of Toolpal
  146.     sz$ = UIStartDlg(CUIDLL$, DESTPATH, "FEditDlgProc", APPHELP, HELPPROC$)
  147.     DEST$ = GetSymbolValue("EditTextOut")
  148.  
  149.     IF sz$ = "CONTINUE" THEN
  150.         IF IsDirWritable(DEST$) = 0 THEN
  151.             GOSUB BADPATH
  152.             GOTO GETPATHL1
  153.         END IF
  154.         UIPop 1
  155.     ELSEIF sz$ = "REACTIVATE" THEN
  156.         GOTO GETPATHL1
  157.     ELSEIF sz$ = "BACK" THEN
  158.         UIPop 1
  159.         GOTO WELCOME
  160.     ELSE
  161.         GOSUB ASKQUIT
  162.         GOTO GETPATH
  163.     END IF
  164.  
  165.  
  166.     Install   '' Go do the install
  167.  
  168.  
  169. STAMP:
  170. ''  Add INI code to put user name and company in ToolPAL.INI in windows dir
  171.  
  172.     ININAME$ = MakePath (GetWindowsDir(), "TOOLPAL.INI")
  173.  
  174.     ret% = WritePrivateProfileString ("User", "Name", UserN$, ININAME$)
  175.     ret% = WritePrivateProfileString ("User", "organization", OrgN$, ININAME$)
  176.  
  177.  
  178.  
  179. QUIT:
  180.     ON ERROR GOTO ERRQUIT
  181.  
  182.     IF ERR = 0 THEN
  183.         dlg% = EXITSUCCESS
  184.     ELSEIF ERR = STFQUIT THEN
  185.         dlg% = EXITQUIT
  186.     ELSE
  187.         dlg% = EXITFAILURE
  188.     END IF
  189. QUITL1:
  190.     sz$ = UIStartDlg(CUIDLL$, dlg%, "FInfo0DlgProc", 0, "")
  191.     IF sz$ = "REACTIVATE" THEN
  192.         GOTO QUITL1
  193.     END IF
  194.     UIPop 1
  195.  
  196.     END
  197.  
  198. ERRQUIT:
  199.     i% = DoMsgBox("Setup sources were corrupted, call Digital Artistry (214) ###-####!", "Digital Artistry Setup", MB_OK+MB_TASKMODAL+MB_ICONHAND)
  200.     END
  201.  
  202.  
  203.  
  204. BADPATH:
  205.     sz$ = UIStartDlg(CUIDLL$, BADPATH, "FInfo0DlgProc", 0, "")
  206.     IF sz$ = "REACTIVATE" THEN
  207.         GOTO BADPATH
  208.     END IF
  209.     UIPop 1
  210.     RETURN
  211.  
  212.  
  213.  
  214. ASKQUIT:
  215.     sz$ = UIStartDlg(CUIDLL$, ASKQUIT, "FQuitDlgProc", 0, "")
  216.  
  217.     IF sz$ = "EXIT" THEN
  218.         UIPopAll
  219.         ERROR STFQUIT
  220.     ELSEIF sz$ = "REACTIVATE" THEN
  221.         GOTO ASKQUIT
  222.     ELSE
  223.         UIPop 1
  224.     END IF
  225.     RETURN
  226.  
  227.  
  228.  
  229. '**
  230. '** Purpose:
  231. '**     Builds the copy list and performs all installation operations.
  232. '** Arguments:
  233. '**     none.
  234. '** Returns:
  235. '**     none.
  236. '*************************************************************************
  237. SUB Install STATIC
  238.  
  239.     SrcDir$ = GetSymbolValue("STF_SRCDIR")
  240.     CreateDir DEST$, cmoNone 
  241.     DEST1$ = DEST$ + "\MACROS"
  242.     CreateDir DEST1$, cmoNone
  243.  
  244.     sysdir$ = GetWindowsSysDir()
  245.  
  246.     OpenLogFile MakePath(DEST$, "LOGFILE.OUT"), 0
  247.     WriteToLogFile ""
  248.     WriteToLogFile "  User chose as destination directory: '" + DEST$ + "'"
  249.     WriteToLogFile "  User chose option: '" + OPTCUR$ + "'"
  250.     WriteToLogFile ""
  251.     WriteToLogFile "May have had to create the directory: " + DEST$
  252.     WriteToLogFile ""
  253.  
  254.     AddSectionFilesToCopyList "Program", SrcDir$, DEST$
  255.     AddSectionFilesToCopyList "Macros", SrcDir$, DEST1$
  256.     AddSectionFilesToCopyList "System", SrcDir$, sysdir$
  257.     CopyFilesInCopyList
  258.  
  259.     CreateProgmanGroup "ToolPAL 2.1", "", cmoNone
  260.     ShowProgmanGroup  "ToolPAL 2.1", 1, cmoNone
  261.     CreateProgmanItem "ToolPAL 2.1", "Welcome to ToolPAL 2.1 Demo", MakePath(DEST$,"toolpal.exe /w"), "", cmoOverwrite
  262.     CreateProgmanItem "ToolPAL 2.1", "Create New ToolPAL File", MakePath(DEST$,"toolpal.exe /n"), "", cmoOverwrite
  263.     CreateProgmanItem "ToolPAL 2.1", "Open Last ToolPAL File", MakePath(DEST$,"toolpal.exe"), "", cmoOverwrite
  264.     CreateProgmanItem "ToolPAL 2.1", "ToolPAL 2.1 Demo for Windows 3.1", MakePath(DEST$,"toolpal.exe ") + MakePath(DEST$,"demo31.tp"), "", cmoOverwrite
  265.     CreateProgmanItem "ToolPAL 2.1", "ToolPAL 2.1 Demo for Windows 95", MakePath(DEST$,"toolpal.exe ") + MakePath(DEST$,"demo95.tp"), "", cmoOverwrite
  266. '**    CreateProgmanItem "ToolPAL 2.1", "Visual C++ Palette", MakePath(DEST$,"toolpal.exe ") + MakePath(DEST$,"vcpp.tp"), "", cmoOverwrite
  267.     CreateProgmanItem "ToolPAL 2.1", "ToolPAL 2.1 Release Notes", "write.exe " + MakePath(DEST$,"relnote.wri"), "", cmoOverwrite
  268.     CreateProgmanItem "ToolPAL 2.1", "ToolPAL 2.1 Order Form", "write.exe " + MakePath(DEST$,"order.wri"), "", cmoOverwrite
  269.     CreateProgmanItem "ToolPAL 2.1", "Uninstall ToolPAL", MakePath(DEST$,"tpuninst.exe "), "", cmoOverwrite
  270.  
  271.     ''AddDos5Help "ToolPAL", "ToolPAL is ......."+chr$(10)+"Refer to the ToolPAL help file.", cmoNone
  272.  
  273.     CloseLogFile
  274.  
  275. END SUB
  276.  
  277.  
  278.  
  279. '**
  280. '** Purpose:
  281. '**     Appends a file name to the end of a directory path,
  282. '**     inserting a backslash character as needed.
  283. '** Arguments:
  284. '**     szDir$  - full directory path (with optional ending "\")
  285. '**     szFile$ - filename to append to directory
  286. '** Returns:
  287. '**     Resulting fully qualified path name.
  288. '*************************************************************************
  289. FUNCTION MakePath (szDir$, szFile$) STATIC AS STRING
  290.     IF szDir$ = "" THEN
  291.         MakePath = szFile$
  292.     ELSEIF szFile$ = "" THEN
  293.         MakePath = szDir$
  294.     ELSEIF MID$(szDir$, LEN(szDir$), 1) = "\" THEN
  295.         MakePath = szDir$ + szFile$
  296.     ELSE
  297.         MakePath = szDir$ + "\" + szFile$
  298.     END IF
  299. END FUNCTION
  300.  
  301. '**
  302. '** Get the name and org of the uer of this coppy of Windows
  303. '**
  304. SUB GetWinUserName(UserN$, OrgN$) STATIC
  305.  
  306.     pTempName$ = STRING$( 256, 0)
  307.     pTempOrg$ = STRING$( 256, 0)
  308.     pRet% = LoadString(GetModuleHandle ("USER"), 514 , pTempName$, LEN(pTempName$))
  309.     IF pRet% = 0 THEN
  310.         pTempName$ = ""
  311.     END IF
  312.     pRet% = LoadString(GetModuleHandle ("USER"), 515 , pTempOrg$, LEN(pTempOrg$))
  313.     IF pRet% = 0 THEN
  314.         pTempOrg$ = ""
  315.     END IF
  316.  
  317.     UserN$ = RTRIM$(LTRIM$(pTempName$))
  318.     OrgN$ = RTRIM$(LTRIM$(pTempOrg$))
  319.  
  320. END SUB
  321.  
  322.