Source code of Windows XP (NT5)
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

1318 lines
37 KiB

;***********************************************************************
; IIS Content Index install script
;***********************************************************************
;***********************************************************************
; SOURCE MEDIA DESCRIPTION
; ------------------------
; This is only here because we must have _something_ in this slot...
;
;***********************************************************************
[Source Media Descriptions]
1 = "Disk containing HitHighlighting Sample Files for News Server ."
[RegistryConstants]
MaskAllAccess = 33554432
NoTitle = 0
RegLastError = $(!REG_ERROR_SUCCESS)
REG_VT_BINARY = 3 ;define this ourselves as it is not defd for us
;************************************************************************
; CONFIGURATION CHOICES
; ---------------------
; the sections below contain the different choices supported for
; the configuration items shown. an id section establishes the
; language independent IDs supported by nt setup. for each language
; supported a text section displays the text used for the different
; choices
;************************************************************************
;********************************
; PLATFORM INDEPENDENT CHOICES
;********************************
;----------------------------------------------------
; LANGUAGE CHOICES-- this is all you get,,,
;----------------------------------------------------
[LanguageID]
LANGID_ENG = ENG
;----------------------------------------------------
; PROCESSOR CHOICES
;----------------------------------------------------
[ProcessorID]
ProcessorID_I386 = I386
ProcessorID_I486 = I486
ProcessorID_I586 = I586
ProcessorID_R4000 = R4000
ProcessorID_Alpha = Alpha_AXP
ProcessorID_PPC601 = PPC601
ProcessorID_PPC603 = PPC603
ProcessorID_PPC604 = PPC604
ProcessorID_PPC620 = PPC620
;----------------------------------------------------
; PLATFORM CHOICES
;----------------------------------------------------
[PlatformID]
PlatformID_I386 = I386
PlatformID_Mips = Mips
PlatformID_Alpha = Alpha
PlatformID_ppc = ppc
;**************************************************************
; UI VARIABLES
;**************************************************************
[ProcessorVar]
STF_PROCESSOR = "" ? $(LIBHANDLE) GetProcessor
STF_PLATFORM = ""
[LocaleVar]
[LanguageVar]
;
; Language to Use For interaction with user
;
STF_LANGUAGE = "" ? $(LIBHANDLE) GetLanguage
[UiVars]
;
; Computer name
;
STF_COMPUTERNAME = "" ? $(!LIBHANDLE) GetMyComputerName
;
; Destination Particulars
;
WinSysDir = "" ? $(!LIBHANDLE) GetWindowsNtSysDir
;
; Source location
;
SrcDir = $(!STF_SRCDIR)
UsrRootPerms = "UNKNOWN"
;
; Windows NT Directory
;
STF_WINDOWSPATH = "" ? $(!LIBHANDLE) GetWindowsNtDir
STF_WINDOWSSYSPATH = "" ? $(!LIBHANDLE) GetWindowsNtSysDir
STF_WINDOWSVERSION = "" ? $(!LIBHANDLE) GetWindowsNtVersion
REG_VT_BINARY = 3 ;define this ourselves as it is not defd for us
;
; Installation mode
;
STF_INSTALL_MODE = "1"
[EnvironmentVars]
;
; user environment variables in the current user's profile
; that we are concerned about
PathEnvVar = {} ? $(LIBHANDLE) GetEnvVar $(PRIVILEGES) Path
InitEnvVar = {} ? $(LIBHANDLE) GetEnvVar $(PRIVILEGES) init
[VarsPlatformCommon]
;
; Installation options
;
;
; Options to disable
;
DisableList = {}
[VarsI386]
;
[VarsMips]
;
[VarsAlpha]
;
[Varsppc]
;
[StringsENG]
String1 = "Setup cannot install on the current processor."$(!LF)$(!LF)+
"Cannot proceed with install."
String3 = "Microsoft Index Server files not found."$(!LF)+
"Please enter the directory path to the Microsoft Index Server files."
String5 = "Path does not exist. Please enter a path to an existing directory."
String6 = "Error processing path entered. Please reenter the path."
String19 = "Microsoft Index Server Samples require prior installation of Microsoft Index Server"
String20 = "Please enter the full physical path of the IIS scripts directory into which "+
"Microsoft Index Server sample scripts should be copied. Then choose Continue."$(!LF)+
"A virtual root may also be added to map this directory."
String21 = "Please enter the full physical path of the IIS virtual root into which "+
"Microsoft Index Server sample HTML pages should be copied. Then choose Continue."$(!LF)+
"A virtual root may also be added to map this directory."
;--------------------
; BILLBOARD MESSAGES
;--------------------
[BillboardsENG]
;***************************************************************************
; DIALOGS
; -------
; the following sections contain the dialogs used to interact with the user.
; for each language supported there is a different dialog section.
;***************************************************************************
;-----------------------------------------------
; WELCOME DIALOG
;-----------------------------------------------
[WelcomeDlgENG]
DlgType = Info
DlgTemplate = WELCOME
Caption = "Microsoft Index Server 1.1 Samples Installation"
DlgText = "Welcome to Setup."$(LF)$(LF)+
"This Setup program installs sample pages demonstrating the use "+
"of Microsoft Index Server 1.1 together with Microsoft News Server."$(LF)$(LF)+
"To install samples on your computer now, click Continue "+
"or press Enter."$(LF)$(LF)+
"To exit Setup without installing, click Exit "+
"or press F3."
Continue = &Continue
Exit = E&xit
Help = &Help
HelpContext = 1
;--------------------------------------------------------------
; SETUP DONE - RESTART DIALOG
;--------------------------------------------------------------
[SetupDoneDlgENG]
DlgType = "Info"
DlgTemplate = "RESTART"
Caption = "Microsoft Index Server Samples Setup"
DlgText = "Microsoft Index Server Samples are now installed. "+
"A sample search page is located at:"$(LF)$(LF)+
" http://"$(STF_COMPUTERNAME)$(HomeVDir)"/Samples/Search/news1.htm"$(LF)$(LF)
Windows = "Exit to &Windows"
;--------------------------------------------------------------
; SETUP NOT DONE - RESTART DIALOG
;--------------------------------------------------------------
[SetupNotDoneDlgENG]
DlgType = "Info"
DlgTemplate = "NONFATAL"
Caption = "Microsoft Index Server Samples Setup"
DlgText = "Microsoft Index Server Samples have not been installed."$(LF)$(LF)+
"Please exit back to Windows NT."
Windows = "Exit to &Windows"
;**************************************************************************
; DLL LOAD and FREE
; the following section contain commands to load specific dll libraries and
; to free them
;**************************************************************************
;----------------------------------------------
; a) DETECT LIBRARY
;----------------------------------------------
[LoadSetupLibrary]
LoadLibrary "x" $(STF_CWDDIR)setupdll.dll LIBHANDLE
exit
[FreeSetupLibrary]
FreeLibrary $(LIBHANDLE)
exit
[LoadCiSetupLibrary]
LoadLibrary "x" $(SrcPlatDir)cistp.dll CILIBHANDLE
exit
[FreeCiSetupLibrary]
FreeLibrary $(CILIBHANDLE)
exit
;**************************************************************************
; PROGRESS GUAGE VARIABLES
;**************************************************************************
[ProgressCopyENG]
ProCaption = "Microsoft Index Server Samples Setup"
ProCancel = "Cance&l"
ProCancelMsg = "Microsoft Index Server Samples Setup are not correctly installed. Are you sure "+
"you want to cancel copying files?"
ProCancelCap = "Setup Message"
ProText1 = "Copying:"
ProText2 = "To:"
;**************************************************************************
; SHELL COMMANDS SCRIPT
;**************************************************************************
[Shell Commands]
;
; Initialize the app, by setting the caption and loading the support library
;
set TestCopy = 0
set TestReg = 0 ;-sc
set TestRegVerbose = 0
set-title "Microsoft Index Server Samples Setup"
set Exit_Code = $(!SETUP_ERROR_GENERAL)
install LoadSetupLibrary
StartWait
;
; read general constants
;
set-subst LF = "\n"
set-subst MQ = \047 ;047=' in octal meta-quote
set-subst DQ = \042 ;042=" in octal double-quote
;
; read the platform independent choices
;
read-syms LanguageID
read-syms ProcessorID
read-syms PlatformID
;
; read the default language and try to detect the language
;
read-syms LanguageVar
detect LanguageVar
;
; read and detect the processor we are working on
;
read-syms ProcessorVar
detect ProcessorVar
read-syms Strings$(!STF_LANGUAGE)
detect Strings$(!STF_LANGUAGE)
;
; Check processor type, see if it is supported, if so what platform does it
; belong to.
;
ifstr(i) $(STF_PROCESSOR) == $(ProcessorID_I386)
set STF_PLATFORM = $(PlatformID_I386)
else-ifstr(i) $(STF_PROCESSOR) == $(ProcessorID_I486)
set STF_PLATFORM = $(PlatformID_I386)
else-ifstr(i) $(STF_PROCESSOR) == $(ProcessorID_I586)
set STF_PLATFORM = $(PlatformID_I386)
else-ifstr(i) $(STF_PROCESSOR) == $(ProcessorID_R4000)
set STF_PLATFORM = $(PlatformID_Mips)
else-ifstr(i) $(STF_PROCESSOR) == $(ProcessorID_Alpha)
set STF_PLATFORM = $(PlatformID_Alpha)
else-ifstr(i) $(STF_PROCESSOR) == $(ProcessorID_PPC601)
set STF_PLATFORM = $(PlatformID_ppc)
else-ifstr(i) $(STF_PROCESSOR) == $(ProcessorID_PPC603)
set STF_PLATFORM = $(PlatformID_ppc)
else-ifstr(i) $(STF_PROCESSOR) == $(ProcessorID_PPC604)
set STF_PLATFORM = $(PlatformID_ppc)
else-ifstr(i) $(STF_PROCESSOR) == $(ProcessorID_PPC620)
set STF_PLATFORM = $(PlatformID_ppc)
else
shell "" SetupMessage $(!STF_LANGUAGE) "FATAL" $(String1)
ui pop 1
goto setupnotdone
endif
read-syms RegistryConstants
;
; read the UI Variables and detect their setting on the current machine
;
read-syms UiVars
detect UiVars
read-syms Vars$(STF_PLATFORM)
read-syms VarsPlatformCommon
;Makesure all our paths have '\' at the end
LibraryProcedure STATUS, $(!LIBHANDLE), AppendBackSlash $(SrcDir)
ifstr(i) $(STATUS) != "ERROR"
set SrcDir = $(STATUS)
endif
LibraryProcedure STATUS, $(!LIBHANDLE), AppendBackSlash $(WinSysDir)
ifstr(i) $(STATUS) != "ERROR"
set WinSysDir = $(STATUS)
endif
;
; Append processor architecture to source dir
;
set SrcPlatDir = $(SrcDir)$(STF_PLATFORM)
LibraryProcedure STATUS, $(!LIBHANDLE), AppendBackSlash $(SrcPlatDir)
ifstr(i) $(STATUS) != "ERROR"
set SrcPlatDir = $(STATUS)
endif
EndWait
set StartFolder = $(STF_WINDOWSPATH)"\Profiles\All Users\Start Menu\Programs\Microsoft Index Server (Common)"
welcome =+
read-syms WelcomeDlg$(STF_LANGUAGE)
ui start "WelcomeMe"
ifstr(i) $(DLGEVENT) == "CONTINUE"
ui pop 1
goto setsource
else-ifstr(i) $(DLGEVENT) == "EXIT"
shell "" QueryUserQuit
ifstr(i) $($R1) == "OK"
ui pop 1
goto setupnotdone
else
goto welcome
endif
else
goto end
endif
querysource =+
shell "" DoAskPathEx $(SrcDir) $(String3) $(String6)
ifint $($ShellCode) != $(!SHELL_CODE_OK)
goto setupnotdone
endif
ifstr(i) $($R0) == STATUS_SUCCESSFUL
set SrcDir = $($R1)
LibraryProcedure STATUS, $(!LIBHANDLE), AppendBackSlash $(SrcDir)
ifstr(i) $(STATUS) != "ERROR"
set SrcDir = $(STATUS)
endif
set SrcPlatDir = $(SrcDir)$(STF_PLATFORM)
LibraryProcedure STATUS, $(!LIBHANDLE), AppendBackSlash $(SrcPlatDir)
ifstr(i) $(STATUS) != "ERROR"
set SrcPlatDir = $(STATUS)
endif
else
goto setupnotdone
endif
setsource =+
;
; Check for proper location
;
set FileToCheck = $(SrcPlatDir)news1.htm
LibraryProcedure STATUS,$(!LIBHANDLE), CheckFileExistance $(FileToCheck)
ifstr(i) $(STATUS) == YES
goto loadcilib
else
;
; Try platform independent location
;
set FileToCheck = $(SrcDir)news1.htm
LibraryProcedure STATUS,$(!LIBHANDLE), CheckFileExistance $(FileToCheck)
ifstr(i) $(STATUS) == YES
set SrcPlatDir = $(SrcDir)
goto loadcilib
else
goto querysource
endif
endif
loadcilib =+
install LoadCiSetupLibrary
setdestination =+
;
; Code should go here to set destination for sample .htm, .idq, and .htx files.
;
shell "" GetIISDirs
ifstr(i) $($R0) != STATUS_SUCCESSFUL
shell "" SetupMessage $(!STF_LANGUAGE) "FATAL" $(String19)
ui pop 1
goto setupnotdone
endif
set ScriptDir = $($R1)
set HomeDir = $($R2)
set IsDefScriptDir = $($R3)
set IsDefHomeDir = $($R4)
LibraryProcedure STATUS, $(!LIBHANDLE), AppendBackSlash $(ScriptDir)
ifstr(i) $(STATUS) != "ERROR"
set ScriptDir = $(STATUS)
endif
LibraryProcedure STATUS, $(!LIBHANDLE), AppendBackSlash $(HomeDir)
ifstr(i) $(STATUS) != "ERROR"
set HomeDir = $(STATUS)
endif
setscript =+
set DefScriptDir = $(ScriptDir)
LibraryProcedure STATUS, $(!LIBHANDLE), AppendBackSlash $(DefScriptDir)
ifstr(i) $(STATUS) != "ERROR"
set DefScriptDir = $(STATUS)
endif
shell "" DoAskPathEx $(ScriptDir) $(String20) $(String6)
ifstr(i) $($R0) == STATUS_SUCCESSFUL
set ScriptDir = $($R1)
else
goto setupnotdone
endif
LibraryProcedure IsFullPath $(!LIBHANDLE) CheckPathFullPathSpec $(ScriptDir)
ifstr(i) $(IsFullPath) == "No"
shell "" SetupMessage $(!STF_LANGUAGE) NONFATAL $(String5)
ui pop 1
goto setscript
endif
shell "" DoMakeDir $(ScriptDir)Samples
;
; Clean up from previous install (if any)
;
ifstr(i) $(IsDefScriptDir) == STATUS_SUCCESSFUL
shell "" RemoveVRoot /Scripts/samples/search
shell "" RemoveVRoot /Scripts/srchadm
else
ifstr(i) $(ScriptDir) != $(DefScriptDir)
shell "" RemoveVRoot /Scripts/samples/search
shell "" RemoveVRoot /Scripts/srchadm
endif
endif
;
; Did the user use a non-default script dir?
;
ifstr(i) $(ScriptDir) != $(DefScriptDir)
set ScriptVDir = "/Scripts"
shell "" AddVRoot $(ScriptVDir)/samples/search $(ScriptDir)Samples\Search "4"
shell "" AddVRoot $(ScriptVDir)/srchadm $(ScriptDir)srchadm "4"
;shell "" DoAskVPathEx $(ScriptVDir) $(String25) $(String6)
;ifstr(i) $($R0) == STATUS_SUCCESS
; set ScriptVDir = $($R1)
;else
; goto setupnotdone
;endif
endif
;
; Set admin permissions on admin scripts
;
shell "" DoMakeDir $(ScriptDir)srchadm
LibraryProcedure RetVal $(!CILIBHANDLE) ApplySystemAcl $(ScriptDir)srchadm
sethome =+
set DefHomeDir = $(HomeDir)
LibraryProcedure STATUS, $(!LIBHANDLE), AppendBackSlash $(DefHomeDir)
ifstr(i) $(STATUS) != "ERROR"
set DefHomeDir = $(STATUS)
endif
shell "" DoAskPathEx $(HomeDir) $(String21) $(String6)
ifstr(i) $($R0) == STATUS_SUCCESSFUL
set HomeDir = $($R1)
else
goto setupnotdone
endif
LibraryProcedure IsFullPath $(!LIBHANDLE) CheckPathFullPathSpec $(HomeDir)
ifstr(i) $(IsFullPath) == "No"
shell "" SetupMessage $(!STF_LANGUAGE) NONFATAL $(String5)
ui pop 1
goto sethome
endif
;Make sure all our paths have '\' at the end
LibraryProcedure STATUS, $(!LIBHANDLE), AppendBackSlash $(ScriptDir)
ifstr(i) $(STATUS) != "ERROR"
set ScriptDir = $(STATUS)
endif
LibraryProcedure STATUS, $(!LIBHANDLE), AppendBackSlash $(HomeDir)
ifstr(i) $(STATUS) != "ERROR"
set HomeDir = $(STATUS)
endif
shell "" DoMakeDir $(HomeDir)Samples
;
; Clean up from previous install (if any)
;
shell "" RemoveVRoot /SearchHelp
shell "" RemoveVRoot /srchadm
ifstr(i) $(IsDefHomeDir) == STATUS_SUCCESSFUL
shell "" RemoveVRoot /samples/search
else
ifstr(i) $(HomeDir) != $(DefHomeDir)
shell "" RemoveVRoot /samples/search
endif
endif
;
; Did the user use a non-default home dir?
;
ifstr(i) $(HomeDir) != $(DefHomeDir)
set HomeVDir = "/"
shell "" AddVRoot $(HomeVDir)samples/search $(HomeDir)Samples\Search "1"
;shell "" DoAskVPathEx $(HomeVDir) $(String26) $(String6)
;ifstr(i) $($R0) == STATUS_SUCCESS
; set HomeVDir = $($R1)
;else
; goto setupnotdone
;endif
endif
;
; Setup root for admin.
;
shell "" DoMakeDir $(HomeDir)srchadm
LibraryProcedure RetVal $(!CILIBHANDLE) ApplySystemAcl $(HomeDir)srchadm
shell "" AddVRoot /srchadm $(HomeDir)srchadm "1"
finish = +
install ICopyFiles
install Install-All-Files-Now
ifstr(i) $(STF_INSTALL_OUTCOME) == "STF_SUCCESS"
goto dosamples
else
shell "" SetupMessage $(!STF_LANGUAGE) "FATAL" $(String4)
ui pop 1
goto setupnotdone
endif
dosamples=+
shell "" DoURLSection "Files-URL" $(StartFolder)
shell "" AddCiNewsRoot
setupdone=+
set Exit_Code = $(!SETUP_ERROR_SUCCESS)
read-syms SetupDoneDlg$(!STF_LANGUAGE)
ui start "DoneWithThis"
ifstr(i) $(DLGEVENT) == "CONTINUE"
ui pop 1
goto end
else
goto end
endif
setupnotdone=+
read-syms SetupNotDoneDlg$(!STF_LANGUAGE)
EndWait
ui start "NotDoneMakingAMess"
ifstr(i) $(DLGEVENT) == "CONTINUE"
ui pop 1
goto end
else
goto end
endif
end = +
install FreeSetupLibrary
install FreeCiSetupLibrary
exit
;*****************************************************************
; *
; INSTALLATION SUPPORT ROUTINES *
; *
;*****************************************************************
;**************************************************************************
;
; GetIISDirs
;
; Attempts to locate Script and Home directories for IIS
;
; Returns: $R0: Status: STATUS_SUCCESSFUL
; STATUS_FAILED
;
; $R1: Script directory
;
; $R2: Home directory
;
;**************************************************************************
[GetIISDirs]
set Script = ""
set Home = ""
;
; First, check for service
;
set hKey = $(!REG_H_LOCAL)
shell "" GetValue $(hKey) "system\currentcontrolset\services\w3svc" "Start"
ifstr(i) $($R0) != STATUS_SUCCESSFUL
goto FailIIS
endif
shell "" GetValue $(hKey) "system\currentcontrolset\services\w3svc\parameters\virtual roots" "/Scripts"
ifstr(i) $($R0) == STATUS_SUCCESSFUL
split-string *($($R1),4) "," Tmp
set Script = *($(Tmp),1)
endif
shell "" GetValue $(hKey) "system\currentcontrolset\services\w3svc\parameters\virtual roots" "/Scripts,"
ifstr(i) $($R0) == STATUS_SUCCESSFUL
split-string *($($R1),4) "," Tmp
set Script = *($(Tmp),1)
endif
shell "" GetValue $(hKey) "system\currentcontrolset\services\w3svc\parameters\virtual roots" "/"
ifstr(i) $($R0) == STATUS_SUCCESSFUL
split-string *($($R1),4) "," Tmp
set Home = *($(Tmp),1)
endif
shell "" GetValue $(hKey) "system\currentcontrolset\services\w3svc\parameters\virtual roots" "/,"
ifstr(i) $($R0) == STATUS_SUCCESSFUL
split-string *($($R1),4) "," Tmp
set Home = *($(Tmp),1)
endif
set Status = STATUS_SUCCESSFUL
goto DoneIIS
FailIIS =+
set Status = STATUS_FAILED
DoneIIS =+
return $(Status) $(Script) $(Home)
;**************************************************************************
;
; AddCiNewsRoot
;
;**************************************************************************
[AddCiNewsRoot]
set Script = ""
set Home = ""
set hKey = $(!REG_H_LOCAL)
;
; First, lookup NNTP roots
;
OpenRegKey $(hKey) "" "system\currentcontrolset\services\nntpsvc\parameters\virtual roots" $(!REG_KEY_READ) TempKey
ifint $(RegLastError) != $(!REG_ERROR_SUCCESS)
; Debug-Output "REGISTRY.INF: OpenRegKey Failed: "$($)" "$($0)" "$($1)" "$($2)
goto AddEnd
endif
EnumRegValue $(TempKey), NNTPRoots
;
; Adjust them to /$CiNews roots
;
set SlamValueList = {}
ForListDo $(NNTPRoots)
set Virtual = *($($),1)
split-string *($($),4) "," Tmp
Set Physical = *($(Tmp),1)
;shell "" SetupMessage $(!STF_LANGUAGE) "FATAL" "Virtual: "$(Virtual)" Physical: "$(Physical)
set SlamValueList = >($(SlamValueList), { "/$CiNews"$(Virtual), $(!NoTitle), $(!REG_VT_SZ), $(Physical)",,"})
EndForListDo
;
; Find NNTP home
;
;shell "" GetValue $(hKey) "system\currentcontrolset\services\nntpsvc\parameters\virtual roots" "/"
;ifstr(i) $($R0) == STATUS_SUCCESSFUL
; split-string *($($R1),4) "," Tmp
; set Home = *($(Tmp),1)
;endif
;shell "" GetValue $(hKey) "system\currentcontrolset\services\nntpsvc\parameters\virtual roots" "/,"
;ifstr(i) $($R0) == STATUS_SUCCESSFUL
; split-string *($($R1),4) "," Tmp
; set Home = *($(Tmp),1)
;endif
;
; Set equivalent Web home
;
;build up our KeyList
set OurKeyList = {}
set OurKeyList = >($(OurKeyList), {"system", $(!NoTitle), $(!MaskAllAccess)})
set OurKeyList = >($(OurKeyList), {"currentcontrolset", $(!NoTitle), $(!MaskAllAccess)})
set OurKeyList = >($(OurKeyList), {"services", $(!NoTitle), $(!MaskAllAccess)})
set OurKeyList = >($(OurKeyList), {"w3svc", $(!NoTitle), $(!MaskAllAccess)})
set OurKeyList = >($(OurKeyList), {"parameters", $(!NoTitle), $(!MaskAllAccess)})
set OurKeyList = >($(OurKeyList), {"virtual roots", $(!NoTitle), $(!MaskAllAccess)})
;build up Value List
;set SlamValueList = {}
;set SlamValueList = >($(SlamValueList), { "/$CiNews", $(!NoTitle), $(!REG_VT_SZ), $(Home)",,4"})
shell "" CreateKey $(hKey) $(OurKeyList) $(SlamValueList)
CloseRegKey $($R1)
;
; Stop and restart W3SVC to get the roots picked up.
;
LibraryProcedure RetVal $(!CILIBHANDLE) RunProgram $(!STF_WINDOWSSYSPATH)\net.exe stop w3svc
LibraryProcedure RetVal $(!CILIBHANDLE) RunProgram $(!STF_WINDOWSSYSPATH)\net.exe start w3svc
AddEnd=+
return
;**************************************************************************
;
; GetValue
;
; Checks if key is present, and if so, returns the value
;
; $0 Key Handle
; $1 Key name
; $2 Value Name
;
;**************************************************************************
[GetValue]
set Status = STATUS_FAILED
read-syms RegistryConstants
OpenRegKey $($0) "" $($1) $(!REG_KEY_READ) TempKey
ifint $(RegLastError) != $(!REG_ERROR_SUCCESS)
; Debug-Output "REGISTRY.INF: OpenRegKey Failed: "$($)" "$($0)" "$($1)" "$($2)
goto end_get_value
endif
GetRegValue $(TempKey), $($2), KeyValue
ifint $(RegLastError) != $(!REG_ERROR_SUCCESS)
; Debug-Output "REGISTRY.INF: GetRegValue Failed:"$($)
CloseRegKey $(TempKey)
goto end_get_value
endif
set Status = STATUS_SUCCESSFUL
end_get_value = +
return $(Status) $(KeyValue)
;-----------------------------------------------------------------------
; ROUTINE: CreateKey
;
; DESCRIPTION: Creates a key and fixes the values indicated.
; Key is Handle\Key1\Key2\...\Keyn. Value list
; is for Valuen.
;
; INPUTS: $0: Handle into registry
; $1: KeyTreeComponents {Key1Info, Key2Info..}
; $2: ValueList {Value1Info, Value2Info, Value3Info}
;
; OUTPUTS: $R0: Status: STATUS_SUCCESSFUL
; STATUS_FAILED
; STATUS_ERROR_CREATEKEY
; STATUS_ERROR_CREATEVALUE
;
; $R1: Handle to created key
;
;------------------------------------------------------------------------
[CreateKey]
; ifint $(!TestRegVerbose) == 1
; Debug-Output ".INF: CreateKey $0 = "$($0)
; Debug-Output ".INF: CreateKey $1 = "$($1)
; Debug-Output ".INF: CreateKey $2 = "$($2)
; endif
;
; Initialize
;
set Status = STATUS_FAILED
read-syms RegistryConstants
;
; traverse down the keytreecomponents and open/create components as
; you go along
;
set BaseHandle = $($0)
set KeyHandle = $(BaseHandle)
ForListDo $($1)
set KeyInfo = $($)
set KeyName = *($(KeyInfo), 1)
;
; Try opening the key first
OpenRegKey $(BaseHandle) "" $(KeyName) $(MaskAllAccess) KeyHandle
ifint $(RegLastError) != $(!REG_ERROR_SUCCESS)
;
; Key doesn't exist
;
; Debug-Output "REGISTRY.INF: Key"$(KeyName)"doesn't exist. Will create key"
set RegLastError = 0
CreateRegKey $(BaseHandle) $(KeyInfo) "" $(MaskAllAccess) "" KeyHandle
ifint $(RegLastError) != $(!REG_ERROR_SUCCESS)
set Status = STATUS_ERROR_CREATEKEY
; Debug-Output "REGISTRY.INF: Error in creating key"
goto endcreate
endif
endif
ifstr(i) $(BaseHandle) != $($0)
CloseRegKey $(BaseHandle)
ifint $(RegLastError) != $(!REG_ERROR_SUCCESS)
set Status = STATUS_ERROR_CREATEKEY
; Debug-Output "REGISTRY.INF: Error in closing base handle"
goto endcreate
endif
endif
set BaseHandle = $(KeyHandle)
EndForListDo
ifstr(i) $($2) != {}
shell "" AddValueList $(KeyHandle) $($2)
ifstr(i) $($R0) != STATUS_SUCCESSFUL
set Status = STATUS_ERROR_CREATEVALUE
goto endcreate
endif
endif
set Status = STATUS_SUCCESSFUL
endcreate = +
ifstr(i) $(Status) != STATUS_SUCCESSFUL
; Debug-Output "REGISTRY.INF: CreateKey Error:"$(Status)
endif
Return $(Status) $(KeyHandle)
;*************************************************************************
;
; SECTION: AddValueList
;
; PURPOSE: Given a nested list of value items, add each to the given
; key. Key is left open.
;
; ARGUMENTS: $0 Registry key handle
; $1 List of value items; for example:
; { {ValueName1,0,$(!REG_VT_SZ),$(ValueData1)}, +
; {ValueName2,0,$(!REG_VT_SZ),$(ValueData2)} }
;
; RETURNS: $R0 Status
;
;
;*************************************************************************
[AddValueList]
set Status = STATUS_FAILED
read-syms RegistryConstants
ForListDo $($1)
SetRegValue $($0) $($)
ifint $(RegLastError) != $(!REG_ERROR_SUCCESS)
; Debug-Output "REGISTRY.INF: CreateValue failed:"$($)
goto end_addvaluelist
endif
EndForListDo
set Status = STATUS_SUCCESSFUL
end_addvaluelist = +
return $(Status)
;-----------------------------------------------------------------------
; ROUTINE: QueryUserQuit
;
; DESCRIPTION: This routine queries whether the user wants to quit setup
;
; INPUTS: None
;
; OUTPUTS: $R0: Status: STATUS_SUCCESSFUL |
; STATUS_FAILED
;
; $R1: UserAction: OK | CANCEL
;
;------------------------------------------------------------------------
[QueryUserQuit]
set Status = STATUS_FAILED
set UserAction = CANCEL
;
; read in quit message
;
read-syms ExitWarningDlg$(!STF_LANGUAGE)
ui start "ExitWarning"
ifstr(i) $(DLGEVENT) == "YES"
set Status = STATUS_SUCCESSFUL
set UserAction = "OK"
else-ifstr(i) $(DLGEVENT) == "NO"
set Status = STATUS_SUCCESSFUL
set UserAction = "CANCEL"
else
endif
fin_QueryUserQuit = +
Return $(Status) $(UserAction)
[ExitWarningDlgENG]
DlgType = "MessageBox"
STF_MB_TITLE = "Exit Microsoft Index Server Setup"
STF_MB_TEXT = "Microsoft Index Server Samples are not completely installed."$(LF)$(LF)+
" Are you sure you want to exit Setup?"
STF_MB_TYPE = 3
STF_MB_ICON = 5
STF_MB_DEF = 1
;-----------------------------------------------------------------------
; ROUTINE: SetupMessage
;
; DESCRIPTION: Puts up a MessageBox
;
; INPUTS: $0 LanguageID
; $1 Message type
; $2 Message string
;
; OUTPUTS: $R0: Status: STATUS_SUCCESSFUL |
; STATUS_FAILED
;
; $R1: UserAction: OK | CANCEL
;
;------------------------------------------------------------------------
[SetupMessage]
set Status = STATUS_FAILED
set UserAction = "CANCEL"
set DlgText = $($2)
ifstr(i) $($1) == "WARNING"
read-syms WarningDlg$($0)
else-ifstr(i) $($1) == "FATAL"
read-syms FatalDlg$($0)
else-ifstr(i) $($1) == "NONFATAL"
read-syms NonfatalDlg$($0)
else-ifstr(i) $($1) == "STATUS"
read-syms StatusDlg$($0)
else-ifstr(i) $($1) == "WARNINGOK"
read-syms WarningOKDlg$($0)
else
goto finish_SetupMessage
endif
ui start "SetupMessage"
ifstr(i) $(DLGEVENT) == "OK"
set Status = STATUS_SUCCESSFUL
set UserAction = $(DLGEVENT)
else-ifstr(i) $(DLGEVENT) == "CANCEL"
set Status = STATUS_SUCCESSFUL
set UserAction = $(DLGEVENT)
else-ifstr(i) $(DLGEVENT) == "YES"
set Status = STATUS_SUCCESSFUL
set UserAction = $(DLGEVENT)
else-ifstr(i) $(DLGEVENT) == "NO"
set Status = STATUS_SUCCESSFUL
set UserAction = $(DLGEVENT)
else
endif
finish_SetupMessage = +
Return $(Status) $(UserAction)
end
[WarningDlgENG]
STF_MB_TITLE = "Setup Message"
DlgType = "MessageBox"
STF_MB_TEXT = $(DlgText)
STF_MB_TYPE = 2
STF_MB_ICON = 5
STF_MB_DEF = 2
[FatalDlgENG]
STF_MB_TITLE = "Setup Message"
DlgType = "MessageBox"
STF_MB_TEXT = $(DlgText)
STF_MB_TYPE = 1
STF_MB_ICON = 3
STF_MB_DEF = 1
[NonfatalDlgENG]
STF_MB_TITLE = "Setup Message"
DlgType = "MessageBox"
STF_MB_TEXT = $(DlgText)
STF_MB_TYPE = 1
STF_MB_ICON = 5
STF_MB_DEF = 1
[StatusDlgENG]
STF_MB_TITLE = "Setup Message"
DlgType = "MessageBox"
STF_MB_TEXT = $(DlgText)
STF_MB_TYPE = 1
STF_MB_ICON = 2
STF_MB_DEF = 1
[WarningOKDlgENG]
DlgType = "MessageBox"
STF_MB_TITLE = "Setup Message"
STF_MB_TEXT = $(DlgText)
STF_MB_TYPE = 3
STF_MB_ICON = 5
STF_MB_DEF = 1
;**************************************************************************
;
; DoURLSection
;
; Modifies URLs to point to machine
;
; $0 Section name to act upon
; $1 Target directory into which files in $0 were copied
;
;**************************************************************************
[DoURLSection]
set Files = ^($($0), 4)
ForListDo $(Files)
split-string *($(Files), $(#)) "=" Tmp
LibraryProcedure ReturnVal $(!CILIBHANDLE) Replace $($1)\*($(Tmp), 3) machname $(!STF_COMPUTERNAME)
EndForListDo
return
;-----------------------------------------------------------------------
; ROUTINE: DoAskPathEx
;
; DESCRIPTION: Puts up an EDIT box to prompt for a path
;
; INPUTS: $0 LanguageID
; $1 Message type
; $2 Message error
;
; OUTPUTS: $R0: Status: STATUS_SUCCESSFUL |
; STATUS_FAILED
;
; $R1: UserAction: OK | CANCEL
;
;------------------------------------------------------------------------
[DoAskPathEx]
set Status = STATUS_FAILED
set Src = $($0)
askpath = +
read-syms DisketteDlg$(!STF_LANGUAGE)
ui start "Diskette"
ifstr(i) $(DLGEVENT) == "CONTINUE"
LibraryProcedure IsFullPath, $(!LIBHANDLE), CheckPathFullPathSpec $(EditTextOut)
ifstr(i) $(IsFullPath) == "NO"
StartWait
LibraryProcedure STATUS, $(!LIBHANDLE), ProcessForUNC $(EditTextOut)
EndWait
ifstr(i) $(STATUS) == "ERROR"
shell "" SetupMessage $(!STF_LANGUAGE) "NONFATAL" $($2)
goto askpath
else-ifstr(i) $(STATUS) == "NOT-UNC"
shell "" SetupMessage $(!STF_LANGUAGE) "NONFATAL" $($2)
goto askpath
else-ifstr(i) $(STATUS) == "UNC-FAILCONNECT"
shell "" SetupMessage $(!STF_LANGUAGE) "NONFATAL" $($2)
goto askpath
else
set Src = $(STATUS)
endif
else
set Src = $(EditTextOut)
endif
ui pop 1
LibraryProcedure STATUS, $(!LIBHANDLE), AppendBackSlash $(Src)
ifstr(i) $(STATUS) == "ERROR"
goto finish_DoAskPath
else
set Src = $(STATUS)
set Status = STATUS_SUCCESSFUL
goto finish_DoAskPath
endif
else-ifstr(i) $(DLGEVENT) == "BACK"
ui pop 1
set Status = STATUS_USERCANCEL
goto finish_DoAskPath
else
ui pop 1
goto finish_DoAskPath
endif
finish_DoAskPath = +
Return $(Status) $(Src) $(EditTextOut)
;-----------------------------------------------------------------------
; ROUTINE: DoAskVPathEx
;
; DESCRIPTION: Puts up an EDIT box to prompt for a virtual path
;
; INPUTS: $0 LanguageID
; $1 Message type
; $2 Message error
;
; OUTPUTS: $R0: Status: STATUS_SUCCESSFUL |
; STATUS_FAILED
;
; $R1: UserAction: OK | CANCEL
;
;------------------------------------------------------------------------
[DoAskVPathEx]
set Status = STATUS_FAILED
set Src = $($0)
askvpath = +
read-syms DisketteDlg$(!STF_LANGUAGE)
ui start "Diskette"
ifstr(i) $(DLGEVENT) == "CONTINUE"
;
; Make sure it has slashes
;
split-string $(EditTextOut) "/" Tmp
set HasSlash = STATUS_FAILED
set EndsInSlash = STATUS_FAILED
set MinusEndSlash = ""
ForListDo $(Tmp)
ifstr(i) $($) == "/"
set HasSlash = STATUS_SUCCESS
set EndsInSlash = STATUS_SUCCESS
else
set EndsInSlash = STATUS_FAILED
set MinusEndSlash = $(MinusEndSlash)/$($)
endif
EndForListDo
ifstr(i) $(EndsInSlash) == STATUS_SUCCESS
set EditTextOut = $(MinusEndSlash)
endif
ifstr(i) $(HasSlash) != STATUS_SUCCESS
shell "" SetupMessage $(!STF_LANGUAGE) "NONFATAL" $($2)
goto askvpath
else
set Src = $(EditTextOut)
endif
set Status = STATUS_SUCCESS
ui pop 1
else-ifstr(i) $(DLGEVENT) == "BACK"
ui pop 1
set Status = STATUS_USERCANCEL
goto finish_DoAskVPath
else
ui pop 1
goto finish_DoAskVPath
endif
finish_DoAskVPath = +
Return $(Status) $(Src) $(EditTextOut)
[DisketteDlgENG]
Caption = "Microsoft Index Server Setup"
Continue = "Continue"
Cancel = "Cancel"
DlgType = "Edit"
DlgTemplate = "DISKETTE"
DlgText = $($1)
Edit1Label = ""
EditTextIn = $(Src)
EditFocus = "ALL"
[ICopyFiles]
AddSectionFilesToCopyList Files-URL $(SrcPlatDir) $(StartFolder)
LibraryProcedure STATUS,$(!LIBHANDLE), CheckFileExistance $(SrcDir)news1.htm
ifstr(i) $(STATUS) == YES
AddSectionFilesToCopyList Files-SampleHTM $(SrcDir) $(HomeDir)Samples\Search\
AddSectionFilesToCopyList Files-SampleIDQ $(SrcDir) $(ScriptDir)Samples\Search\
AddSectionFilesToCopyList Files-AdminIDQ $(SrcDir) $(ScriptDir)SrchAdm\
else
AddSectionFilesToCopyList Files-SampleHTM $(SrcDir)NewsVr $(HomeDir)Samples\Search\
AddSectionFilesToCopyList Files-SampleIDQ $(SrcDir)NewsVr $(ScriptDir)Samples\Search\
AddSectionFilesToCopyList Files-AdminIDQ $(SrcDir)NewsVr $(ScriptDir)SrchAdm\
endif
exit
[Install-All-Files-Now]
CopyFilesInCopyList
exit
;
; File lists
;
[Files-SampleHTM]
1, news1.htm, NOLOG
1, news2.htm, NOLOG
1, isnread.txt, NOLOG
[Files-SampleIDQ]
1, news1.htw, NOLOG
1, news1.htx, NOLOG
1, news1.idq, NOLOG
1, news2.htw, NOLOG
1, news2.htx, NOLOG
1, news2.idq, NOLOG
[Files-AdminIDQ]
1, admin.htx, NOLOG, BACKUP=admin.htx.bak
1, admin.idq, NOLOG, BACKUP=admin.idq.bak
[Files-URL]
1, ISNQUERY.URL, NOLOG, RENAME="Index Server Sample News Query Form.url"
1, ISNREAD.URL, NOLOG, RENAME="Release Notes (Sample News Query Forms).url"