|
|
1.1 ! root 1: '************************************************************************** ! 2: '* MSSetup Toolkit Sample 1 ! 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 BADPATH = 6400 ! 19: ! 20: CONST HELPWELCOME = 1000 ! 21: CONST VERPATH = 1100 ! 22: CONST EXITFAILNOTWIN31 = 1200 ! 23: CONST EXITFAILNOTENH = 1300 ! 24: CONST FREECELLINST = 1400 ! 25: CONST FREECELLPATH = 1500 ! 26: CONST HELPFREECELL = 1600 ! 27: ! 28: ! 29: ''Bitmap ID ! 30: CONST LOGO = 1 ! 31: ! 32: GLOBAL DESTSYS$ ''Windows\System directory. ! 33: GLOBAL DEST32S$ ''Windows\System\Win32s directory ! 34: GLOBAL DESTFREE$ ''Freecell directory ! 35: ! 36: DECLARE SUB Install ! 37: DECLARE SUB UpdateSystemIni ! 38: DECLARE SUB RebootSystem ! 39: DECLARE FUNCTION MakePath (szDir$, szFile$) AS STRING ! 40: DECLARE FUNCTION MakeSystemIni LIB "INIUPD.DLL" (arg1$, arg2$) AS INTEGER ! 41: DECLARE FUNCTION RestartWindows LIB "INIUPD.DLL" (arg1$) AS INTEGER ! 42: ! 43: INIT: ! 44: CUIDLL$ = "mscuistf.dll" ''Custom user interface dll ! 45: HELPPROC$ = "FHelpDlgProc" ''Help dialog procedure ! 46: ! 47: SetBitmap CUIDLL$, LOGO ! 48: SetTitle "Microsoft Win32s Setup Program" ! 49: ! 50: szInf$ = GetSymbolValue("STF_SRCINFPATH") ! 51: IF szInf$ = "" THEN ! 52: szInf$ = GetSymbolValue("STF_CWDDIR") + "32sinst.inf" ! 53: END IF ! 54: ReadInfFile szInf$ ! 55: ! 56: DESTSYS$ = GetWindowsSysDir() ! 57: DEST32S$ = DESTSYS + "WIN32S\" ! 58: ! 59: '$IFDEF DEBUG ! 60: i% = SetSizeCheckMode(scmOnIgnore) '' could use scmOff; def = scmOnFatal ! 61: WinDrive$ = MID$(GetWindowsDir, 1, 1) ! 62: IF IsDriveValid(WinDrive$) = 0 THEN ! 63: i% = DoMsgBox("Windows drive ('"+WinDrive$+"') is not a valid drive.", "DEBUG", MB_TASKMODAL+MB_ICONHAND+MB_OK) ! 64: GOTO QUIT ! 65: END IF ! 66: '$ENDIF ''DEBUG ! 67: ! 68: CHECK: ! 69: IF GetWindowsMajorVersion < 3 THEN ! 70: ExitCode% = EXITFAILNOTWIN31 ! 71: GOTO QUIT ! 72: END IF ! 73: IF GetWindowsMajorVersion = 3 AND GetWindowsMinorVersion < 1 THEN ! 74: ExitCode% = EXITFAILNOTWIN31 ! 75: GOTO QUIT ! 76: END IF ! 77: IF GetWindowsMode < 2 THEN '' Not Enhanced or Windows NT ! 78: ExitCode% = EXITFAILNOTENH ! 79: GOTO QUIT ! 80: END IF ! 81: ExitCode% = EXITSUCCESS ! 82: ! 83: ! 84: WELCOME: ! 85: sz$ = UIStartDlg(CUIDLL$, WELCOME, "FInfoDlgProc", HELPWELCOME, HELPPROC$) ! 86: IF sz$ = "CONTINUE" THEN ! 87: UIPop 1 ! 88: ELSE ! 89: GOSUB ASKQUIT ! 90: GOTO WELCOME ! 91: END IF ! 92: ! 93: ! 94: GETWIN32SPATH: ! 95: SetSymbolValue "EditTextIn", DESTSYS$ ! 96: SetSymbolValue "EditFocus", "END" ! 97: ! 98: GETPATHL1: ! 99: sz$ = UIStartDlg(CUIDLL$, VERPATH, "FDispDlgProc", HELPWELCOME, HELPPROC$) ! 100: ! 101: IF sz$ = "CONTINUE" THEN ! 102: IF IsDirWritable(DESTSYS$) = 0 THEN ! 103: GOSUB BADPATH ! 104: GOTO GETPATHL1 ! 105: END IF ! 106: UIPop 1 ! 107: ELSEIF sz$ = "REACTIVATE" THEN ! 108: GOTO GETPATHL1 ! 109: ELSEIF sz$ = "BACK" THEN ! 110: UIPop 1 ! 111: GOTO WELCOME ! 112: ELSE ! 113: GOSUB ASKQUIT ! 114: GOTO GETPATHL1 ! 115: END IF ! 116: ! 117: COPYFILES: ! 118: ! 119: CreateDir DEST32S$, cmoNone ! 120: OpenLogFile MakePath(DEST32S$, "W32SSET.LOG"), 0 ! 121: ! 122: Install ! 123: UpdateSystemIni ! 124: ! 125: CloseLogFile ! 126: ! 127: FREECELL: ! 128: sz$ = UIStartDlg(CUIDLL$, FREECELLINST, "FInfoDlgProc",0, "") ! 129: IF sz$ = "CONTINUE" THEN ! 130: UIPop 1 ! 131: ELSE ! 132: GOTO QUIT ! 133: END IF ! 134: ! 135: GETFREEPATH: ! 136: DESTFREE$ = MID$(DESTSYS$,1,3) + "WIN32APP\FREECELL\" ! 137: SetSymbolValue "EditTextIn", DESTFREE$ ! 138: SetSymbolValue "EditFocus", "END" ! 139: ! 140: GETFREEPATHL1: ! 141: sz$ = UIStartDlg(CUIDLL$, FREECELLPATH, "FEditDlgProc", HELPFREECELL, HELPPROC$) ! 142: ! 143: IF sz$ = "CONTINUE" THEN ! 144: DESTFREE$ = GetSymbolValue("EditTextOut") ! 145: ! 146: ''Validate new path. ! 147: IF IsDirWritable(DESTFREE$) = 0 THEN ! 148: GOSUB BADPATH ! 149: GOTO GETFREEPATHL1 ! 150: END IF ! 151: UIPop 1 ! 152: ! 153: GOTO COPYFREECELL ! 154: ELSEIF sz$ = "REACTIVATE" THEN ! 155: GOTO GETFREEPATHL1 ! 156: ELSEIF sz$ = "EXIT" THEN ! 157: UIPop 1 ! 158: GOTO QUIT ! 159: END IF ! 160: ! 161: COPYFREECELL: ! 162: ClearCopyList ! 163: CreateDir DESTFREE$, cmoNone ! 164: ! 165: OpenLogFile MakePath(DEST32S$, "SETUP.LOG"), 0 ! 166: ! 167: SrcDir$ = GetSymbolValue("STF_SRCDIR") ! 168: WriteToLogFile "" ! 169: WriteToLogFile " User chose as destination directory: '" + DESTFREE$ + "'" ! 170: WriteToLogFile "" ! 171: WriteToLogFile "May have had to create the directory: " + DESTFREE$ ! 172: WriteToLogFile "" ! 173: ! 174: AddSectionFilesToCopyList "Win32appFreecell", SrcDir$, DESTFREE$ ! 175: CopyFilesInCopyList ! 176: ! 177: CreateProgmanGroup "Win32 Applications", "", cmoNone ! 178: ShowProgmanGroup "Win32 Applications", 1, cmoNone ! 179: CreateProgmanItem "Win32 Applications", "Freecell", DESTFREE$ + "FREECELL.EXE", "", cmoOverwrite ! 180: ! 181: CloseLogFile ! 182: ! 183: ! 184: ! 185: QUIT: ! 186: ON ERROR GOTO ERRQUIT ! 187: IF ERR = 0 THEN ! 188: dlg% = ExitCode% ! 189: ELSEIF ERR = STFQUIT THEN ! 190: dlg% = EXITQUIT ! 191: ELSE ! 192: dlg% = EXITFAILURE ! 193: END IF ! 194: ! 195: QUITL1: ! 196: sz$ = UIStartDlg(CUIDLL$, dlg%, "FInfo0DlgProc", 0, "") ! 197: IF sz$ = "REACTIVATE" THEN ! 198: GOTO QUITL1 ! 199: END IF ! 200: UIPop 1 ! 201: ! 202: RebootSystem ! 203: ! 204: END ! 205: ! 206: ERRQUIT: ! 207: i% = DoMsgBox("Setup sources were corrupted!", "Setup Message", MB_OK+MB_TASKMODAL+MB_ICONHAND) ! 208: END ! 209: ! 210: ! 211: ! 212: BADPATH: ! 213: sz$ = UIStartDlg(CUIDLL$, BADPATH, "FInfo0DlgProc", 0, "") ! 214: IF sz$ = "REACTIVATE" THEN ! 215: GOTO BADPATH ! 216: END IF ! 217: UIPop 1 ! 218: RETURN ! 219: ! 220: ! 221: ! 222: ASKQUIT: ! 223: sz$ = UIStartDlg(CUIDLL$, ASKQUIT, "FQuitDlgProc", 0, "") ! 224: ! 225: IF sz$ = "EXIT" THEN ! 226: UIPopAll ! 227: ERROR STFQUIT ! 228: ELSEIF sz$ = "REACTIVATE" THEN ! 229: GOTO ASKQUIT ! 230: ELSE ! 231: UIPop 1 ! 232: END IF ! 233: RETURN ! 234: ! 235: ! 236: ! 237: '** ! 238: '** Purpose: ! 239: '** Builds the copy list and performs all installation operations. ! 240: '** Arguments: ! 241: '** none. ! 242: '** Returns: ! 243: '** none. ! 244: '************************************************************************* ! 245: SUB Install STATIC ! 246: ! 247: SrcDir$ = GetSymbolValue("STF_SRCDIR") ! 248: ! 249: WriteToLogFile "" ! 250: WriteToLogFile " User chose as destination directory: '" + DESTSYS$ + "'" ! 251: WriteToLogFile "" ! 252: WriteToLogFile "May have had to create the directory: " + DESTSYS$ ! 253: WriteToLogFile "" ! 254: ! 255: AddSectionFilesToCopyList "WindowsSystem", SrcDir$, DESTSYS$ ! 256: AddSectionFilesToCopyList "WindowsSystemWin32s", SrcDir$, DESTSYS$ + "WIN32S\" ! 257: ! 258: t% = RestartWindows( GetWindowsSysDir() + "OLECLI.DLL" ) ! 259: SetRestartDir GetWindowsDir() ! 260: CopyFilesInCopyList ! 261: ! 262: END SUB ! 263: ! 264: SUB UpdateSystemIni STATIC ! 265: ! 266: VxDPath$ = DEST32S$ + "W32S.386" ! 267: SystemIniPath$ = GetWindowsDir() ! 268: ! 269: t% = MakeSystemIni(SystemIniPath$, VxdPath$) ! 270: ! 271: END SUB ! 272: ! 273: SUB RebootSystem STATIC ! 274: ! 275: i% = RestartListEmpty() ! 276: i% = ExitExecRestart() ! 277: ! 278: END SUB ! 279: ! 280: ! 281: '** ! 282: '** Purpose: ! 283: '** Appends a file name to the end of a directory path, ! 284: '** inserting a backslash character as needed. ! 285: '** Arguments: ! 286: '** szDir$ - full directory path (with optional ending "\") ! 287: '** szFile$ - filename to append to directory ! 288: '** Returns: ! 289: '** Resulting fully qualified path name. ! 290: '************************************************************************* ! 291: FUNCTION MakePath (szDir$, szFile$) STATIC AS STRING ! 292: IF szDir$ = "" THEN ! 293: MakePath = szFile$ ! 294: ELSEIF szFile$ = "" THEN ! 295: MakePath = szDir$ ! 296: ELSEIF MID$(szDir$, LEN(szDir$), 1) = "\" THEN ! 297: MakePath = szDir$ + szFile$ ! 298: ELSE ! 299: MakePath = szDir$ + "\" + szFile$ ! 300: END IF ! 301: END FUNCTION
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.