blob: 56f58ac2aa141f7c31178af5257062bea256458c [file] [log] [blame]
'
' Copyright 1999-2004 The Apache Software Foundation
'
' Licensed under the Apache License, Version 2.0 (the "License");
' you may not use this file except in compliance with the License.
' You may obtain a copy of the License at
'
' http://www.apache.org/licenses/LICENSE-2.0
'
' Unless required by applicable law or agreed to in writing, software
' distributed under the License is distributed on an "AS IS" BASIS,
' WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
' See the License for the specific language governing permissions and
' limitations under the License.
'
' =========================================================================
' Description: Install script for Tomcat ISAPI redirector
' Author: Peter S. Horne <horneps@yahoo.com.au>
' Version: $Revision$
' =========================================================================
'
' This script automatically installs the tomcat isapi_redirector for use in
' both out-of and in-process installations on IIS/Win2K. See the command line
' usage section for usage instructions.
'
' Check the command line
'
set args = wscript.arguments
if args.count <> 6 then
info ""
info "Tomcat ISAPI Redirector Installation Utility"
info "usage: isapi_install <server> <fdir> <worker> <mount> <log> <level>"
info " server: The Web Server Name (for example 'Default Web Site')"
info " fdir: the full path to the directory that contains the isapi filter"
info " worker: Full path and file name of the worker properties file"
info " mount: Full path and file name of the worker mount properties file"
info " log: Full path and file name of the log file"
info " level: The log level emerg | info"
info "(Re-runs are ok and will change/reset settings)"
info ""
fail "Incorrect Arguments"
end if
' Setup the args
serverName = args(0)
filterDir = args(1)
filterName = "jakarta"
filterLib = "\isapi_redirect.dll"
workerFile = args(2)
mountFile = args(3)
logFile = args(4)
logLevel = args(5)
'
' Get a shell
'
dim shell
set shell = WScript.CreateObject("WScript.Shell")
'
' Find the indicated server from all the servers in the service
' Note: they aren't all Web!
'
set service = GetObject("IIS://LocalHost/W3SVC" )
serverId = ""
for each thing in service
if thing.Class = "IIsWebServer" then
if thing.ServerComment = serverName then
set server = thing
serverId = thing.name
exit for
end if
end if
next
if serverId = "" then fail "Server " + serverName + " not found."
info "Found Server <" + serverName + "> at index [" + serverId + "]."
'
' Stop everything to release any dlls - needed for a re-install
'
' info "Stopping server <" + serverName + ">..."
' server.stop
' info "Done"
'
' Get a handle to the filters for the server - we process all errors
'
On Error Resume Next
dim filters
set filters = GetObject("IIS://LocalHost/W3SVC/" + serverId + "/Filters")
if err then
err.clear
info "Filters not found for server - creating"
set filters = server.create( "IIsFilters", "Filters" )
filters.setInfo
if err then fail "Error Creating Filters"
end if
info "Got Filters"
'
' Create the filter - if it fails then delete it and try again
'
name = filterName
info "Creating Filter - " + filterName
dim filter
set filter = filters.Create( "IISFilter", filterName )
if err then
err.clear
info "Filter exists - deleting"
filters.delete "IISFilter", filterName
if err then fail "Error Deleting Filter"
set filter = filters.Create( "IISFilter", filterName )
if err then fail "Error Creating Filter"
end if
info "Created Filter"
'
' Set the filter info and save it
'
filter.FilterPath = filterDir + filterLib
filter.FilterEnabled=true
filter.description = filterName
filter.notifyOrderHigh = true
filter.setInfo
'
' Set the load order - only if it's not in the list already
'
on error goto 0
loadOrders = filters.FilterLoadOrder
list = Split( loadOrders, "," )
found = false
for each item in list
if Trim( item ) = filterName then found = true
next
if found = false then
info "Filter is not in load order - adding now."
if len(loadOrders) <> 0 then loadOrders = loadOrders + ","
filters.FilterLoadOrder = loadOrders + filterName
filters.setInfo
info "Filter added."
else
info "Filter already exists in load order - no update required."
end if
'
' Set the registry up
'
regRoot = "HKEY_LOCAL_MACHINE\SOFTWARE\Apache Software Foundation\Jakarta Isapi Redirector\1.0\"
err.clear
on error resume next
shell.RegDelete( regRoot )
if err then
info "Entering Registry Information for the first time"
else
info "Deleted existing Registry Setting"
end if
on error goto 0
info "Updating Registry"
shell.RegWrite regRoot + "extension_uri", "/jakarta/isapi_redirect.dll"
shell.RegWrite regRoot + "log_file", logFile
shell.RegWrite regRoot + "log_level", logLevel
shell.RegWrite regRoot + "worker_file", workerFile
shell.RegWrite regRoot + "worker_mount_file", mountFile
info "Registry Settings Created"
'
' Finally, create the virtual directory matching th extension uri
'
on error goto 0
set root = GetObject( "IIS://LocalHost/W3SVC/" + serverID + "/ROOT" )
on error resume next
set vdir = root.Create("IISWebVirtualDir", filterName )
if err then
info "Directory exists - deleting"
on error resume next
root.delete "IISWebVirtualDir", filterName
root.setInfo
if err then fail "Error Deleting Directory"
set vdir = root.create("IISWebVirtualDir", filterName )
if err then fail "Error Creating Directory"
end if
info "Directory Created"
' Set the directory information - make it an application directory
info "Setting Directory Information"
vdir.AppCreate2 1
vdir.AccessExecute = TRUE
vdir.AppFriendlyName = filterName
vdir.AccessRead = false
vdir.ContentIndexed = false
vdir.Path = filterDir
vdir.setInfo
if err then fail "Error saving new directory"
info "Directory Saved"
'
' Re Start
'
' info "Starting server <" + serverName + ">..."
' server.start
' info "Done"
info "All done... Bye."
wscript.quit(0)
'
' Helper function for snafus
'
function fail( message )
wscript.echo "E: " + message
wscript.quit(1)
end function
'
' Helper function for info
'
function info( message )
wscript.echo " " + message
end function