|
|
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.