|
|
1.1 root 1: '***********************************************************************
2: '* RPC SDK Install
3: '* Copyright (C) - 1992 by Microsoft
4: '*
5: '* Written By - Steven Zeck
6: '**************************************************************************
7:
8: '$DEFINE NODEBUG ''Define for script development/debugging
9:
10: '$INCLUDE 'setupapi.inc'
11: '$INCLUDE 'msdetect.inc'
12:
13: CONST TRUE = -1
14: CONST FALSE = 0
15:
16: ''Dialog ID's
17: CONST ASKQUIT = 200
18: CONST DlgGetPath = 310
19: CONST HlpGetPath = 311
20: CONST DlgRegPath = 1700
21: CONST HlpRegPath = 1701
22: CONST DlgDosPath = 2000
23: CONST HlpDosPath = 2001
24: CONST EXITFAILURE = 400
25: CONST EXITQUIT = 600
26:
27: ' Conditionaly set the dialogs for full SDK versus runtime only.
28:
29: '$ifndef RUNTIMEINSTALL
30:
31: CONST DlgWelcome = 100
32: CONST DlgInstallOptions = 800
33: CONST HlpInstallOptions = 801
34: CONST EXITSUCCESS = 700
35: '$else
36: CONST DlgWelcome = 2600
37: CONST DlgInstallOptions = 2400
38: CONST HlpInstallOptions = 2401
39: CONST EXITSUCCESS = 2800
40:
41: '$endif
42:
43: CONST DlgSdkOption = 1200
44: CONST HlpSdkOption = 1201
45: CONST DlgRuntimeOption = 1400
46: CONST HlpRuntimeOption = 1401
47: CONST DlgTransport = 1600
48: CONST HlpTransport = 1601
49: CONST DlgNetBiosOptions = 2200
50: CONST HlpNetBiosOptions = 2201
51: CONST DlgNetBiosProtocols = 2300
52: CONST HlpNetBiosProtocols = 2301
53: CONST DlgNewProtocol = 2100
54: CONST HlpNewProtocol = 2101
55: CONST DlgAutoPath = 2400
56: CONST HlpAutoPath = 2401
57: CONST BADPATH = 6400
58:
59: ''Bitmap ID
60: CONST LOGO = 1
61:
62: CONST LanType_LANMAN = 6
63:
64: Type LAN_DETECT
65: iType As Integer
66: iMajor As Integer
67: iMinor As Integer
68: iRev As Integer
69: fEnhance As Integer
70: End Type
71:
72:
73: GLOBAL BasePath$ ''Default destination directory.
74: GLOBAL RegPath$ ''Default destination directory.
75: GLOBAL DosPath$ ''Default destination directory.
76: Global CustomInstall ''Custom install option
77: Global SrcDir$
78: Global AllTransports
79: Global MSDOSRuntime
80: Global MSDOSSDK
81: Global WindowsRuntime
82: Global WindowsSDK
83: Global NetBiosTransport
84: Global SamplesSDK
85: Global HelpFiles
86: GLOBAL CUIDLL$
87: GLOBAL HELPPROC$
88:
89: DECLARE FUNCTION GetNetConfiguration LIB "mscuistf.dll" (Detect as LAN_DETECT) AS INTEGER
90:
91: DECLARE Function GetPath(Dialog%, Path$) AS INTEGER
92: DECLARE FUNCTION GetTransport() As INTEGER
93: DECLARE Sub CopyList(ListIn$, ListOut$, Truncate%)
94: DECLARE FUNCTION MakePath (szDir$, szFile$) AS STRING
95: DECLARE FUNCTION GetCheck (index%) AS INTEGER
96: DECLARE FUNCTION BoolToOnOff (Bool%) AS String
97: DECLARE FUNCTION GetWinRunSize () AS String
98: DECLARE FUNCTION GetWinSize () AS String
99: DECLARE FUNCTION GetDosSize () AS String
100: DECLARE FUNCTION GetDosRunSize () AS String
101: DECLARE FUNCTION GetHlpSize () AS String
102: DECLARE FUNCTION GetSampleSize () AS String
103: DECLARE FUNCTION GetTransportSize () AS String
104: DECLARE FUNCTION FormatSize ()AS String
105:
106:
107: INIT:
108: CUIDLL$ = "mscuistf.dll" ''Custom user interface dll
109: HELPPROC$ = "FHelpDlgProc" ''Help dialog procedure
110:
111: SetBitmap CUIDLL$, LOGO
112: SetTitle "Microsft RPC SDK Install"
113:
114: szInf$ = GetSymbolValue("STF_SRCINFPATH")
115: if szInf$ = "" THEN
116: szInf$ = GetSymbolValue("STF_CWDDIR") + "RPCSDK.INF"
117: end if
118: ReadInfFile szInf$
119: SetAbout "RPC SDK Install", "By stevez - Version 0.08"
120:
121: CustomInstall = FALSE
122: AllTransports = TRUE
123: MSDOSRuntime = TRUE
124:
125: '$ifndef WINDOWS_ONLY
126: MSDOSSDK = TRUE
127: '$endif
128:
129: '$ifndef MSDOS_ONLY
130: WindowsRuntime = TRUE
131: '$endif
132:
133: WindowsSDK = TRUE
134: NetBiosTransport = TRUE
135: SamplesSDK = TRUE
136: HelpFiles = TRUE
137:
138: Dim Detect As LAN_DETECT
139:
140: if GetNetConfiguration(Detect) then
141:
142: '$ifdef DEBUG
143: mess$ = "Type "+str$(Detect.iType)+" Version: "+str$(Detect.iMajor)+"."+str$(Detect.iMinor)+"."+str$(Detect.iRev)
144: if Detect.fEnhance then
145: mess$ = mess$ + " Enhanced"
146: end if
147:
148: i% = DoMsgBox(mess$, "NetWork Type Detected", MB_OK+MB_TASKMODAL+MB_ICONHAND)
149: '$endif
150: if Detect.iType = LanType_LANMAN then
151: if Detect.iMajor < 2 or Detect.iMinor < 10 then
152: i% = DoMsgBox("You need at least Lanman 2.10 to use RPC", "Lanman Version", MB_OK+MB_TASKMODAL+MB_ICONHAND)
153: else
154: fLanmanPresent = TRUE
155: end if
156: end if
157: else
158: i% = DoMsgBox("Setup didn't detect a supported network on this machine. RPC may not function correctly.", "Network Installation", MB_OK+MB_TASKMODAL+MB_ICONHAND)
159: end if
160:
161:
162: AddListItem "NetBiosMap", "nb=0"
163: AddListItem "NetBiosMap", "tcpip=0"
164: AddListItem "NetBiosMap", "xns=0"
165:
166: BasePath$ = "C:\c700"
167: RegPath$="C:\"
168: DosPath$="C:\DOS"
169: WinPath$=GetWindowsDir
170: SrcDir$ = GetSymbolValue("STF_SRCDIR")
171:
172: ' If the path contains lanman, make that the default DOS DLL directory.
173:
174: path$ = Ucase$(GetEnvVariableValue ("PATH"))+";"
175:
176: i% = 1
177: while i% < len(path$)
178:
179: iEnd = instr(i%, path$, ";")
180: cPath$ = mid$(path, i%, iEnd - i%)
181:
182: if instr (cPath$, "LANMAN") or instr(cPath$, "\NETPROG") then
183: DosPath$ = cPath$
184: end if
185:
186: if instr (cPath$, "\C700\") then
187: BasePath$ = mid$(cPath$, 1, 1)+":\C700"
188: end if
189:
190: i% = iEnd + 1
191: wend
192:
193:
194: '$ifdef DEBUG
195:
196: SrcDir$ = "U:\install\sdk.new\nsetup"
197: ' DosPath$="C:\c700\DOS"
198: WinPath$="C:\c700\WIN"
199:
200: '$endif ''DEBUG
201:
202: WELCOME:
203: sz$ = UIStartDlg(CUIDLL$, DlgWelcome, "FInfoDlgProc", 0, "")
204: if sz$ = "CONTINUE" THEN
205: UIPop 1
206: else
207: GOSUB ASKQUIT
208: GOTO WELCOME
209: end if
210:
211:
212: OPTION:
213: if not CustomInstall then
214: SetSymbolValue "RadioDefault", "1"
215: else
216: SetSymbolValue "RadioDefault", "2"
217: end if
218:
219: RESTART_OPTION:
220: sz$ = UIStartDlg(CUIDLL$, DlgInstallOptions, "FRadioDlgProc", HlpInstallOptions, HELPPROC$)
221: Index$ = GetSymbolValue("ButtonChecked")
222:
223: if sz$ = "CONTINUE" THEN
224: UIPop(1)
225: elseif sz$ = "REACTIVATE" THEN
226: GOTO RESTART_OPTION
227: else
228: GOSUB ASKQUIT
229: GOTO OPTION
230: end if
231:
232: if Index$ = "2" then
233: CustomInstall = TRUE
234: else
235: CustomInstall = FALSE
236:
237: '$ifndef RUNTIMEINSTALL
238: i% = GetPath(DlgGetPath, BasePath$)
239: '$else
240: i% = GetPath(DlgDosPath, DosPath$)
241: '$endif
242:
243: if i% then
244: goto FullInstall
245: else
246: goto OPTION
247: end if
248: end if
249:
250:
251: '$ifndef RUNTIMEINSTALL
252:
253: SDK_OPTION:
254:
255: RemoveSymbol "CheckItemsState"
256: RemoveSymbol "DriveStatusText"
257:
258: AddListItem "CheckItemsState", BoolToOnOff(SamplesSDK )
259: AddListItem "CheckItemsState", BoolToOnOff(MSDOSSDK)
260: AddListItem "CheckItemsState", BoolToOnOff(WindowsSDK )
261: AddListItem "CheckItemsState", BoolToOnOff(HelpFiles)
262:
263: AddListItem "DriveStatusText", BasePath$
264:
265: RESTART_SDK_OPTION:
266:
267: RemoveSymbol "StatusItemsText"
268: AddListItem "StatusItemsText", GetDosSize()
269: AddListItem "StatusItemsText", GetWinSize()
270: AddListItem "StatusItemsText", GetSampleSize()
271: AddListItem "StatusItemsText", GetHlpSize()
272:
273: sz$ = UIStartDlg(CUIDLL$, DlgSdkOption, "FCustInstDlgProc", HlpSdkOption, HELPPROC$)
274:
275: if sz$ = "CONTINUE" THEN
276: UIPop(1)
277:
278: elseif sz$ = "BACK" THEN
279: UIPop(1)
280: GOTO OPTION
281:
282: elseif sz$ = "REACTIVATE" THEN
283: GOTO RESTART_SDK_OPTION
284:
285: elseif sz$ = "PATH" THEN
286:
287: i% = GetPath(DlgGetPath ,BasePath$)
288: ReplaceListItem "DriveStatusText", 1, BasePath$
289: GOTO RESTART_SDK_OPTION
290:
291: elseif sz$ = "CHK1" THEN
292:
293: SamplesSDK = GetCheck(1)
294: GOTO RESTART_SDK_OPTION
295:
296: elseif sz$ = "CHK2" THEN
297:
298: MSDOSSDK = GetCheck(2)
299: GOTO RESTART_SDK_OPTION
300:
301: elseif sz$ = "CHK3" THEN
302:
303: WindowsSDK = GetCheck(3)
304: GOTO RESTART_SDK_OPTION
305:
306: elseif sz$ = "CHK4" THEN
307:
308: HelpFiles = GetCheck(4)
309: GOTO RESTART_SDK_OPTION
310:
311: else
312: GOSUB ASKQUIT
313: GOTO RESTART_SDK_OPTION
314: end if
315:
316: MSDOSRuntime = MSDOSSDK
317: WindowsRuntime = WindowsSDK
318:
319: if MSDOSSDK = FALSE and WindowsSDK = FALSE then
320: i% = DoMsgBox("You must chose either MS-DOS or Windows.", "Include and Library Support", MB_OK+MB_TASKMODAL+MB_ICONHAND)
321: goto SDK_OPTION
322:
323: end if
324: '$endif
325:
326: RUNTIME_OPTION:
327:
328: RemoveSymbol "CheckItemsState"
329:
330: AddListItem "CheckItemsState", BoolToOnOff(MSDOSRuntime)
331: AddListItem "CheckItemsState", BoolToOnOff(WindowsRuntime)
332: AddListItem "CheckItemsState", BoolToOnOff(AllTransports)
333:
334: RESTART_RUNTIME_OPTION:
335:
336: RemoveSymbol "StatusItemsText"
337:
338: AddListItem "StatusItemsText", RegPath$
339: AddListItem "StatusItemsText", DosPath$
340: AddListItem "StatusItemsText", GetDosRunSize()
341: AddListItem "StatusItemsText", GetWinRunSize()
342: AddListItem "StatusItemsText", GetTransportSize()
343:
344: sz$ = UIStartDlg(CUIDLL$, DlgRuntimeOption, "FCustInstDlgProc", HlpRuntimeOption, HELPPROC$)
345:
346: if sz$ = "CONTINUE" THEN
347: UIPop(1)
348:
349: elseif sz$ = "BACK" THEN
350: UIPop(1)
351:
352: '$ifndef RUNTIMEINSTALL
353:
354: GOTO SDK_OPTION
355: '$else
356: GOTO OPTION
357: '$endif
358:
359: elseif sz$ = "REACTIVATE" THEN
360: GOTO RESTART_RUNTIME_OPTION
361:
362: elseif sz$ = "CHK1" THEN
363: MSDOSRuntime = GetCheck(1)
364: GOTO RESTART_RUNTIME_OPTION
365:
366: elseif sz$ = "CHK2" THEN
367: WindowsRuntime = GetCheck(2)
368: GOTO RESTART_RUNTIME_OPTION
369:
370: elseif sz$ = "CHK3" THEN
371:
372: if GetListItem("CheckItemsState", 3) = "ON" then
373: AllTransports = TRUE
374: else
375: AllTransports = FALSE
376: RemoveSymbol "SelectedTransports"
377: end if
378:
379: GOTO RESTART_RUNTIME_OPTION
380:
381: elseif sz$ = "BTN1" THEN
382:
383: i% = GetPath(DlgRegPath ,RegPath$)
384: ReplaceListItem "StatusItemsText", 1, RegPath$
385:
386: GOTO RESTART_RUNTIME_OPTION
387:
388: elseif sz$ = "BTN2" THEN
389:
390: i% = GetPath(DlgDosPath ,DosPath$)
391: ReplaceListItem "StatusItemsText", 2, DosPath$
392:
393: GOTO RESTART_RUNTIME_OPTION
394:
395: elseif sz$ = "BTN3" THEN
396:
397:
398: if GetTransport() and AllTransports then
399: Alltransports = FALSE
400: ReplaceListItem "CheckItemsState", 3, "OFF"
401: end if
402:
403: GOTO RESTART_RUNTIME_OPTION
404:
405: else
406: GOSUB ASKQUIT
407: GOTO RESTART_RUNTIME_OPTION
408:
409: end if
410:
411: NetBiosTransport = AllTransports
412:
413: ' Scan the selected transport for a NetBios name
414:
415: for i% = 1 to GetListLength("SelectedTransports") step 1
416:
417: if instr(GetListItem("SelectedTransports", i%), "NetBios") then
418: NetBiosTransport = TRUE
419: end if
420: next
421:
422:
423: if not NetBiosTransport then
424: goto FullInstall
425: end if
426:
427: NETBIOS:
428: SetSymbolValue "RadioDefault", "1"
429:
430: RESTART_NETBIOS_OPTION:
431: sz$ = UIStartDlg(CUIDLL$, DlgNetBiosOptions, "FRadioDlgProc", HlpNetBiosOptions, HELPPROC$)
432: Index$ = GetSymbolValue("ButtonChecked")
433:
434: if sz$ = "CONTINUE" THEN
435: UIPop(1)
436: elseif sz$ = "REACTIVATE" THEN
437: GOTO RESTART_NETBIOS_OPTION
438:
439: elseif sz$ = "BACK" THEN
440: GOTO RUNTIME_OPTION
441:
442: else
443: GOSUB ASKQUIT
444: GOTO NETBIOS
445: end if
446:
447: if Index$ = "1" then
448: goto FullInstall
449: end if
450:
451:
452: NETBIOS_PROTOCOL:
453:
454: RemoveSymbol "ListItemsIn"
455:
456: RESTART_NETBIOS_PROTOCOL:
457: sz$ = UIStartDlg(CUIDLL$, DlgNetBiosProtocols, "FListDlgProc", HlpNetBiosProtocols, HELPPROC$)
458:
459: if sz$ = "CONTINUE" THEN
460: UIPop 1
461:
462: elseif sz$ = "REACTIVATE" THEN
463: GOTO RESTART_NETBIOS_OPTION
464:
465: elseif sz$ = "BACK" THEN
466:
467: GET_LANA:
468: sz$ = UIStartDlg(CUIDLL$, DlgNewProtocol, "FNameOrgDlgProc", HlpNewProtocol, HELPPROC$)
469:
470: if sz$ = "CONTINUE" then
471:
472: t$ = GetSymbolValue("OrgOut")
473:
474: if len(t$) <> 1 or mid$(t$, 1) < "0" or mid$(t$, 1) > "9" then
475: i% = DoMsgBox("Bad value for Lana #, use 0 to 9", "NetBios Protocol", MB_OK+MB_TASKMODAL+MB_ICONHAND)
476: goto GET_LANA
477: else
478: NewProto$ = GetSymbolValue("NameOut") + "=" + t$
479: AddListItem "ListItemsIn", NewProto$
480:
481: end if
482: end if
483:
484: UIPop (2)
485: GOTO RESTART_NETBIOS_PROTOCOL
486:
487: elseif sz$ = "CANCEL" THEN
488: UIPop (1)
489: GOTO RESTART_NETBIOS_OPTION
490:
491: elseif sz$ = "EXIT" THEN
492:
493: OldProto$ = GetSymbolValue("ListItemsOut")
494: RemoveSymbol "ListTmp"
495:
496: for i% = 1 to GetListLength("ListItemsIn") step 1
497: if OldProto$ <> GetListItem("ListItemsIn", i%) then
498:
499: AddListItem "ListTmp", GetListItem("ListItemsIn", i%)
500: end if
501: next
502:
503: CopyList "ListItemsIn", "ListTmp", TRUE
504:
505: UIPop (2)
506: GOTO RESTART_NETBIOS_PROTOCOL
507: end if
508:
509: CopyList "NetBiosMap", "ListItemsOut", TRUE
510:
511:
512: FullInstall:
513:
514: group$ = "Microsoft C/C++ 7.0"
515:
516: '$ifndef RUNTIMEINSTALL
517:
518: CreateDir BasePath$, cmoNone
519: CreateDir MakePath(BasePath$, "rpc"), cmoNone
520:
521: AddSectionFilesToCopyList "Base", SrcDir$, MakePath(BasePath$, "rpc")
522:
523:
524: ' Install the SDK files first.
525:
526: CreateDir MakePath(BasePath$, "include"), cmoNone
527:
528: AddSectionFilesToCopyList "include", SrcDir$, MakePath(BasePath$, "include")
529: AddSectionFilesToCopyList "bin", SrcDir$, MakePath(BasePath$, "bin")
530:
531: if WindowsSDK then
532: AddSectionFilesToCopyList "winclude", SrcDir$, MakePath(BasePath$, "include\win")
533: AddSectionFilesToCopyList "wlib", SrcDir$, MakePath(BasePath$, "lib")
534:
535: CreateProgmanGroup group$, "", cmoNone
536: ShowProgmanGroup group$, 1, cmoNone
537: CreateProgmanItem group$, "RPC ReadMe", "notepad "+MakePath(BasePath$, "rpc\readme.txt"), "", cmoOverWrite
538:
539: end if
540:
541: if MSDOSSDK then
542: AddSectionFilesToCopyList "dinclude", SrcDir$, MakePath(BasePath$, "include\dos")
543: AddSectionFilesToCopyList "dlib", SrcDir$, MakePath(BasePath$, "lib")
544: end if
545:
546: if SamplesSDK then
547:
548: if MSDOSSDK and HelpFiles then
549: AddSectionFilesToCopyList "dHelp", SrcDir$, MakePath(BasePath$, "help")
550: end if
551:
552: if WindowsSDK and HelpFiles then
553: AddSectionFilesToCopyList "wHelp", SrcDir$, MakePath(BasePath$, "help")
554:
555: CreateProgmanItem group$, "RPC API Reference", "winhelp "+MakePath(BasePath$, "help\rpc10wh.hlp"), "", cmoOverWrite
556: CreateProgmanItem group$, "RPC MIDL Reference", "winhelp "+MakePath(BasePath$, "help\midl10wh.hlp"), "", cmoOverWrite
557: end if
558:
559: CreateDir MakePath(BasePath$, "rpc\samples"), cmoNone
560:
561: Open MakePath(BasePath$, "rpc\samples\makefile.dos") for Output As 1
562: print #1, "# Nmake include file for MS-DOS sample applications"
563: print #1,
564: print #1, "OSINCLUDE="+MakePath(BasePath$, "include\dos")
565: close #1
566:
567: Open MakePath(BasePath$, "rpc\samples\makefile.win") for Output As 1
568: print #1, "# Nmake include file for Windows sample applications"
569: print #1,
570: print #1, "OSINCLUDE="+MakePath(BasePath$, "include\win")
571: close #1
572:
573:
574: if WindowsSDK then
575: AddSectionFilesToCopyList "wsample2", SrcDir$, MakePath(BasePath$, "rpc\samples\whello")
576: AddSectionFilesToCopyList "wsample11", SrcDir$, MakePath(BasePath$, "rpc\samples\mandel")
577: end if
578:
579: if MSDOSSDK then
580: CreateDir MakePath(BasePath$, "rpc\samples\data"), cmoNone
581: CreateDir MakePath(BasePath$, "rpc\samples\handles"), cmoNone
582:
583: AddSectionFilesToCopyList "sample1", SrcDir$, MakePath(BasePath$, "rpc\samples\hello")
584: AddSectionFilesToCopyList "sample3", SrcDir$, MakePath(BasePath$, "rpc\samples\data\dunion")
585: AddSectionFilesToCopyList "sample4", SrcDir$, MakePath(BasePath$, "rpc\samples\data\inout")
586: AddSectionFilesToCopyList "sample5", SrcDir$, MakePath(BasePath$, "rpc\samples\data\xmit")
587: AddSectionFilesToCopyList "sample6", SrcDir$, MakePath(BasePath$, "rpc\samples\doctor")
588: AddSectionFilesToCopyList "sample7", SrcDir$, MakePath(BasePath$, "rpc\samples\handles\auto")
589: AddSectionFilesToCopyList "sample8", SrcDir$, MakePath(BasePath$, "rpc\samples\handles\cxhndl")
590: AddSectionFilesToCopyList "sample9", SrcDir$, MakePath(BasePath$, "rpc\samples\handles\usrdef")
591: AddSectionFilesToCopyList "sample10",SrcDir$, MakePath(BasePath$, "rpc\samples\dict")
592:
593: end if
594:
595: end if
596:
597: '$endif
598:
599:
600: ' Update the list of transports to install.
601:
602: if AllTransports then
603: RemoveSymbol "SelectedTransports"
604: end if
605:
606: if WindowsRuntime then
607: AddSectionFilesToCopyList "wruntime", SrcDir$, MakePath(WinPath$, "system")
608:
609: if fLanmanPresent and Detect.fEnhance then
610:
611: NetapiPath$ = FindTargetOnEnvVar("netapi.dll", "PATH")
612:
613: if NetapiPath$ <> "" then
614: AddSectionFilesToCopyList "wnetapi", SrcDir$, mid$(NetapiPath$, 1, len(NetapiPath$) - len("\netapi.dll"))
615: end if
616: else
617: AddSectionFilesToCopyList "dummynetapi", SrcDir$, MakePath(WinPath$, "system")
618: end if
619:
620:
621: if AllTransports then
622: MakeListFromSectionKeys "SelectedTransports", "wtrans"
623: end if
624: end if
625:
626: if MSDOSRuntime then
627:
628: CreateDir DosPath$, cmoNone
629: AddSectionFilesToCopyList "druntime", SrcDir$, DosPath$
630:
631: if AllTransports then
632: MakeListFromSectionKeys "ListTmp", "dtrans"
633: CopyList "SelectedTransports", "ListTmp", FALSE
634: end if
635:
636: end if
637:
638:
639: ' For each transport selected, add to the DOS or Windows copylist.
640:
641: for i% = 1 to GetListLength("SelectedTransports") step 1
642:
643: tran$ = GetListItem("SelectedTransports", i%)
644:
645: if instr (tran$, "DOS") then
646: AddSectionKeyFileToCopyList "dtrans", tran$, SrcDir$, DosPath$
647: else
648: AddSectionKeyFileToCopyList "wtrans", tran$, SrcDir$, MakePath(WinPath$, "system")
649:
650: end if
651: next
652:
653:
654: ' Now write the registry file with the NSI values and the
655: ' transport to protocol mappings.
656:
657: KeyPrefix$ = "\Root\Software\Microsoft\Rpc"
658:
659: CreateDir RegPath$, cmoNone
660: Open MakePath(RegPath$, "rpcreg.dat") for Output As 1
661:
662: print #1, KeyPrefix$+"\NameService\Protocol=ncacn_np"
663: print #1, KeyPrefix$+"\NameService\NetworkAddress=\\."
664: print #1, KeyPrefix$+"\NameService\Endpoint=\pipe\locator"
665: print #1, KeyPrefix$+"\NameService\DefaultSyntax=1"
666:
667: ' For each transport add the mapping for the protocols.
668:
669: for i% = 1 to GetListLength("SelectedTransports") step 1
670:
671: tran$ = GetListItem("SelectedTransports", i%)
672:
673: Start = instr(tran$, "(")+1
674: mapping$ = mid$(tran$, Start, len(tran$) - Start)
675:
676: 'Since we have DOS and windows mappings, there can be duplicates
677: 'make sure the mapping is only added once.
678:
679: for n% = 1 to GetListLength("MappedProtocols") step 1
680: if mapping$ = GetListItem("MappedProtocols", n%) then
681: goto NextMapping
682: end if
683: next
684:
685: AddListItem "MappedProtocols", mapping$
686:
687: ' NetBios protocols get special mappings for each protocol
688:
689: if instr(mapping$, "rpcltc5") then
690: for n% = 1 to GetListLength("NetBiosMap") step 1
691:
692: NbMap$ = GetListItem("NetBiosMap", n%)
693: prot$ = mid$(NbMap$, 1, instr(NbMap$, "=")-1)
694: dll$ = mid$(mapping$, instr(mapping$, "="))
695:
696: print #1, KeyPrefix$+"\ClientProtocols\ncacn_nb_"+prot$+dll$
697: next
698: else
699: print #1, KeyPrefix$+"\ClientProtocols\ncacn_"+mapping$
700: end if
701:
702: NextMapping:
703: next
704:
705:
706: 'For NetBios, build the protocol to lan adapter mappings.
707:
708: if NetBiosTransport then
709: for n% = 1 to GetListLength("NetBiosMap") step 1
710:
711: NbMap$ = GetListItem("NetBiosMap", n%)
712: prot$ = mid$(NbMap$, 1, instr(NbMap$, "=")-1) + "0"
713: lana$ = mid$(NbMap$, instr(NbMap$, "="))
714:
715: print #1, KeyPrefix$+"\NetBios\ncacn_nb_"+prot$+lana$
716: next
717: end if
718:
719: Close #1
720:
721:
722: ' Update the users autoexec file if needed.
723:
724: AutoExec$ = "C:\"
725:
726: if UCase$(RegPath$) <> "C:\" and GetEnvVariableValue ("RPC_REG_DATA_FILE") <> UCase$(RegPath$) then
727: UpdateReg = TRUE
728: else
729: UpdateReg = FALSE
730: end if
731:
732: UpdatePath = FALSE
733:
734: if MSDOSRuntime then
735:
736: ' i% = DoMsgBox("Path: "+path$, "DOS path: "+DosPath$, MB_OK+MB_TASKMODAL+MB_ICONHAND)
737:
738: if instr(path$, Ucase$(DosPath$)) = 0 then
739: UpdatePath = TRUE
740: end if
741: end if
742:
743: if UpdateReg or UpdatePath then
744:
745: ' Get the path to the autoexec file if not in "C:\"
746:
747: AutoExec$ = AutoExec$+"Autoexec.bat"
748:
749: while DoesFileExist(AutoExec$, femExists) = 0
750:
751: if not GetPath(DlgAutoPath, AutoExec$) then
752: goto noAutoExec
753: end if
754: wend
755:
756: newPath$ = "SET PATH=%PATH%;"+DosPath$
757:
758: ' Insert the new information by merging the new info while
759: ' copying the autoexec file.
760:
761: AutoExecRpc$ = mid$(AutoExec$, 1, len(AutoExec$)-3)+"rpc"
762:
763: Open AutoExec$ for Input As 1
764: Open AutoExecRpc$ for Output As 2
765:
766: while not eof(1)
767: line input #1, Buffer$
768:
769: if len(Buffer$) = 0 then
770: print #2, Buffer$
771:
772: elseif UpdatePath and instr (Ucase$(Buffer$), Ucase$(Newpath$)) then
773: UpdatePath = FALSE
774:
775: elseif UpdateReg and instr(Ucase$(Buffer$), "RPC_REG_DATA_FILE") then
776: UpdateReg = FALSE
777:
778: else
779: print #2, Buffer$
780:
781: end if
782:
783: wend
784:
785:
786: ' Append any needed values to the autoexe file
787:
788: if UpdateReg then
789: print #2, "set RPC_REG_DATA_FILE="+RegPath$
790: end if
791:
792: if UpdatePath then
793: print #2, NewPath$
794: end if
795:
796: Close #1, #2
797:
798: if UpdateReg = FALSE and UpdatePath = FALSE then
799: RemoveFile AutoExecRpc$, cmoNone
800: goto NoAutoExec
801: end if
802:
803: i% = DoMsgBox("In order for the runtime to function, setup needs to change your autoexec.bat file. Do you want setup to update this file?", "Update Autoexec.bat", 4+MB_TASKMODAL+32)
804:
805: if i% = 6 then
806: BackupFile AutoExec$, "Autoexec.bak"
807: CopyFile AutoExecRpc$, AutoExec$, cmoOverwrite, FALSE
808: RemoveFile AutoExecRpc$, cmoNone
809: else
810: i% = DoMsgBox("An updated auotexec.bat file is in the file "+AutoExecRpc$, "New Autoexec.bat", MB_OK+MB_TASKMODAL)
811: end if
812:
813: endif
814:
815: NoAutoExec:
816:
817: ' DumpCopyList "c:\tmp\t"
818: CopyFilesInCopyList
819:
820:
821: '$ifdef SystemNetApi
822:
823: if ReStartListEmpty() = 0 then
824:
825: SetRestartDir BasePath$
826: i% = DoMsgBox("Setup will now restart Windows to complete installation. Close any MS-DOS applications before continuing.", "Restart Windows", MB_OK+MB_TASKMODAL)
827:
828: i% = ExitExecRestart()
829: i% = DoMsgBox("Restart failed. Run _mssetup.bat from the "+BasePath$+" directory from MS-DOS prompt.", "Restart Windows", MB_OK+MB_TASKMODAL+MB_ICONHAND)
830: end if
831:
832: '$endif
833:
834:
835: QUIT:
836: ON ERROR GOTO ERRQUIT
837:
838: if ERR = 0 THEN
839: dlg% = EXITSUCCESS
840:
841: elseif ERR = STFQUIT THEN
842: dlg% = EXITQUIT
843:
844: else
845: dlg% = EXITFAILURE
846: end if
847:
848: QUITL1:
849: while UIStartDlg(CUIDLL$, dlg%, "FInfo0DlgProc", 0, "") = "REACTIVATE"
850: wend
851:
852: UIPop 1
853:
854: END
855:
856: ERRQUIT:
857: i% = DoMsgBox("Setup sources were corrupted, email stevez!", "Setup Message", MB_OK+MB_TASKMODAL+MB_ICONHAND)
858: END
859:
860:
861: ASKQUIT:
862: sz$ = UIStartDlg(CUIDLL$, ASKQUIT, "FQuitDlgProc", 0, "")
863:
864: if sz$ = "EXIT" THEN
865: UIPopAll
866: ERROR STFQUIT
867: elseif sz$ = "REACTIVATE" THEN
868: GOTO ASKQUIT
869: else
870: UIPop 1
871: end if
872: RETURN
873:
874: Function GetPath(Dialog%, Path$) Static AS INTEGER
875:
876: SetSymbolValue "EditTextIn", Path$
877: SetSymbolValue "EditFocus", "END"
878:
879: sz$ = UIStartDlg(CUIDLL$, Dialog%, "FEditDlgProc", Dialog% + 1, HELPPROC$)
880: NewPath$ = GetSymbolValue("EditTextOut")
881:
882: GetPath = FALSE
883:
884: if sz$ = "CONTINUE" THEN
885: Path$ = NewPath$
886: GetPath = TRUE
887: end if
888:
889: UIPop (1)
890:
891: end function
892:
893:
894: function GetTransport() Static as INTEGER
895:
896: RemoveSymbol "ListItemsIn"
897:
898: if WindowsRuntime then
899: MakeListFromSectionKeys "ListItemsIn", "wtrans"
900: end if
901:
902: if MSDOSRuntime then
903:
904: MakeListFromSectionKeys "ListTmp", "dtrans"
905: CopyList "ListItemsIn", "ListTmp", FALSE
906: end if
907:
908: GetTransport = FALSE
909:
910: RESTART_RUNTIME_OPTION:
911: sz$ = UIStartDlg(CUIDLL$, DlgTransport, "FMultiDlgProc", HlpTransport, HELPPROC$)
912:
913: if sz$ = "CONTINUE" THEN
914: GetTransport = TRUE
915:
916: elseif sz$ = "REACTIVATE" THEN
917: GOTO RESTART_RUNTIME_OPTION
918:
919: end if
920:
921: CopyList "SelectedTransports" , "ListItemsOut", TRUE
922:
923: UIPop(1)
924:
925: end function
926:
927:
928: '**
929: '** Purpose:
930: '** Appends a file name to the end of a directory path,
931: '** inserting a backslash character as needed.
932: '** Arguments:
933: '** szDir$ - full directory path (with optional ending "\")
934: '** szFile$ - filename to append to directory
935: '** Returns:
936: '** Resulting fully qualified path name.
937: '*************************************************************************
938:
939: FUNCTION MakePath (szDir$, szFile$) STATIC AS STRING
940: if szDir$ = "" THEN
941: MakePath = szFile$
942: elseif szFile$ = "" THEN
943: MakePath = szDir$
944: elseif MID$(szDir$, LEN(szDir$), 1) = "\" THEN
945: MakePath = szDir$ + szFile$
946: else
947: MakePath = szDir$ + "\" + szFile$
948: end if
949: END FUNCTION
950:
951: FUNCTION GetCheck (index%) STATIC AS INTEGER
952:
953: if GetListItem("CheckItemsState", index%) = "ON" then
954: GetCheck = TRUE
955: else
956: GetCheck = FALSE
957: end if
958:
959: END FUNCTION
960:
961:
962: Sub CopyList(ListOut$, ListIn$, Truncate%) static
963:
964: if Truncate% <> 0 then
965: RemoveSymbol ListOut$
966: end if
967:
968: for i% = 1 to GetListLength(ListIn$) step 1
969: AddListItem ListOut$, GetListItem(ListIn$, i%)
970: next
971:
972: end sub
973:
974: function BoolToOnOff (Bool%) static AS String
975:
976: if Bool% then
977: BoolToOnOff$ = "ON"
978: else
979: BoolToOnOff$ = "OFF"
980: end if
981:
982: end function
983:
984: function FormatSize () static AS String
985:
986: cbMore& = GetCopyListCost ("", "Cost", "")
987: cbSize = val(GetListItem("Cost", asc(BasePath$) - asc("A") + 1)) / 1024
988:
989: if cbSize then
990: FormatSize = str$(cbSize)+"K"
991: else
992: FormatSize = ""
993: end if
994:
995: ClearCopyList
996:
997: end function
998:
999:
1000: function GetSampleSize () static AS String
1001:
1002:
1003: if SamplesSDK and MSDOSSDK then
1004: AddSectionFilesToCopyList "sample1", SrcDir$, BasePath$
1005: AddSectionFilesToCopyList "sample3", SrcDir$, BasePath$
1006: AddSectionFilesToCopyList "sample4", SrcDir$, BasePath$
1007: AddSectionFilesToCopyList "sample5", SrcDir$, BasePath$
1008: AddSectionFilesToCopyList "sample6", SrcDir$, BasePath$
1009: AddSectionFilesToCopyList "sample7", SrcDir$, BasePath$
1010: AddSectionFilesToCopyList "sample8", SrcDir$, BasePath$
1011: AddSectionFilesToCopyList "sample9", SrcDir$, BasePath$
1012: AddSectionFilesToCopyList "sample10",SrcDir$, BasePath$
1013: end if
1014:
1015: if SamplesSDK and WindowsSDK then
1016: AddSectionFilesToCopyList "wsample2", SrcDir$, BasePath$
1017: AddSectionFilesToCopyList "wsample11",SrcDir$, BasePath$
1018: end if
1019:
1020: GetSampleSize = FormatSize()
1021:
1022: end function
1023:
1024: function GetDosSize () static AS String
1025:
1026: if MSDOSSDK then
1027: AddSectionFilesToCopyList "include", SrcDir$, BasePath$
1028: AddSectionFilesToCopyList "dinclude", SrcDir$, BasePath$
1029: AddSectionFilesToCopyList "dlib", SrcDir$, BasePath$
1030: end if
1031:
1032: GetDosSize = FormatSize()
1033:
1034: end function
1035:
1036: function GetDosRunSize () static AS String
1037:
1038: if MSDOSRuntime then
1039: AddSectionFilesToCopyList "druntime", SrcDir$, BasePath$
1040: end if
1041:
1042: GetDosRunSize = FormatSize()
1043:
1044: end function
1045:
1046: function GetWinSize () static AS String
1047:
1048: if WindowsSDK then
1049: AddSectionFilesToCopyList "include", SrcDir$, BasePath$
1050: AddSectionFilesToCopyList "winclude", SrcDir$, BasePath$
1051: AddSectionFilesToCopyList "wlib", SrcDir$, BasePath$
1052: end if
1053:
1054: GetWinSize = FormatSize()
1055:
1056: end function
1057:
1058: function GetWinRunSize () static AS String
1059:
1060: if WindowsRuntime then
1061: AddSectionFilesToCopyList "wruntime", SrcDir$, BasePath$
1062: end if
1063:
1064: GetWinRunSize = FormatSize()
1065:
1066: end function
1067:
1068:
1069: function GetTransportSize () static AS String
1070:
1071: if AllTransports then
1072: RemoveSymbol "SelectedTransports"
1073: end if
1074:
1075: if WindowsRuntime and AllTransports then
1076: MakeListFromSectionKeys "SelectedTransports", "wtrans"
1077: end if
1078:
1079: if MSDOSRuntime and AllTransports then
1080:
1081: MakeListFromSectionKeys "ListTmp", "dtrans"
1082: CopyList "SelectedTransports", "ListTmp", FALSE
1083: end if
1084:
1085: for i% = 1 to GetListLength("SelectedTransports") step 1
1086:
1087: tran$ = GetListItem("SelectedTransports", i%)
1088:
1089: if instr (tran$, "DOS") then
1090: AddSectionKeyFileToCopyList "dtrans", tran$, SrcDir$, BasePath$
1091: else
1092: AddSectionKeyFileToCopyList "wtrans", tran$, SrcDir$, BasePath$
1093:
1094: end if
1095: next
1096:
1097: GetTransportSize = FormatSize()
1098:
1099: end function
1100:
1101:
1102: function GetHlpSize () static AS String
1103:
1104: if HelpFiles then
1105:
1106: if MSDOSSDK then
1107: AddSectionFilesToCopyList "dHelp", SrcDir$, BasePath$
1108: end if
1109:
1110: if WindowsSDK then
1111: AddSectionFilesToCopyList "wHelp", SrcDir$, BasePath$
1112: end if
1113:
1114: end if
1115:
1116: GetHlpSize = FormatSize()
1117:
1118: end function
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.