Author: kkolinko
Date: Wed Feb 2 17:54:36 2011
New Revision: 1066549
URL: http://svn.apache.org/viewvc?rev=1066549&view=rev
Log:
* Backport Windows installer improvements from Tomcat 7.0.5.
- Use *modern* types of nsis install/uninstall icons (r999976, mturk)
- Create service-install.log file during installation with params that were
used to invoke commons daemon. (r1003840, mturk; r1035083,r1035088 kkolinko)
- Allow 32-bit or 64-bit JVMs to be selected when installing on a 64-bit
platform. (r1027504, markt; r1033856,r1033882 kkolinko)
- Reimplemented the Windows installer GUI using nsDialogs and MUI2 libraries,
instead of deprecated InstallOptions. The *.ini files are no more used. All is
specified in the nsi script. (r1034911, kkolinko)
- Use new admin-gui and manager-gui roles for the user (r982151, mturk)
- Add a field to display/edit the roles for the user that we add to
tomcat-user.xml
- The roles are calculated depending on what webapps are installed (only
manager, vs. host-manager, vs. both of them).
- Do not display "username", "password", "roles" fields when neither manager
nor host-manager are selected. In the previous version we showed them as
disabled. Now we do not show them on screen.
- Add support for the '/?' command line option. It displays a message box.
See .onInit function in tomcat.nsi for details. (r1034911, kkolinko)
- When installing on Windows, do not leave undeleted stale files in
$TEMP/src/res/confinstall/. Pack only needed fines, not duplicates. Place those
files into $PLUGINSDIR instead of $TEMP.
- Add DetailPrint statements for operations that take noticeable time.
(r1034924, kkolinko)
- Improve descriptions of the components. (r964211, r1035051)
The following fixes were backported as well:
- Fix https://issues.apache.org/bugzilla/show_bug.cgi?id=50140
Don't ignore a user specified install directory on 64-bit platforms.
- Fix https://issues.apache.org/bugzilla/show_bug.cgi?id=45332
Specify the correct encoding (the current Windows code page) rather than
assuming UTF-8 when creating tomcat-users.xml with the Windows installer.
- Fix https://issues.apache.org/bugzilla/show_bug.cgi?id=45852
Add special handling for cp932 (aka ms932) when creating tomcat-users.xml with
Windows installer.
Added:
tomcat/tc5.5.x/trunk/build/resources/main.ico
- copied unchanged from r1066470, tomcat/trunk/res/main.ico
tomcat/tc5.5.x/trunk/build/resources/uninst.ico
- copied unchanged from r1066470, tomcat/trunk/res/uninst.ico
Removed:
tomcat/tc5.5.x/trunk/build/resources/config.ini
tomcat/tc5.5.x/trunk/build/resources/jvm.ini
Modified:
tomcat/tc5.5.x/trunk/STATUS.txt
tomcat/tc5.5.x/trunk/build/build.xml
tomcat/tc5.5.x/trunk/build/resources/confinstall/tomcat-users_1.xml
tomcat/tc5.5.x/trunk/build/tomcat.nsi
tomcat/tc5.5.x/trunk/container/webapps/docs/changelog.xml
Modified: tomcat/tc5.5.x/trunk/STATUS.txt
URL:
http://svn.apache.org/viewvc/tomcat/tc5.5.x/trunk/STATUS.txt?rev=1066549&r1=1066548&r2=1066549&view=diff
==============================================================================
--- tomcat/tc5.5.x/trunk/STATUS.txt (original)
+++ tomcat/tc5.5.x/trunk/STATUS.txt Wed Feb 2 17:54:36 2011
@@ -41,35 +41,6 @@ PATCHES PROPOSED TO BACKPORT:
-O: jim
-1:
-* Backport Windows installer improvements from Tomcat 7.0.5.
- (as applied to TC6 in http://svn.apache.org/viewvc?rev=1056426&view=rev )
-
- TC5.5 differences from TC6:
- 1) The patch includes changes to build.xml, to implement filtering for
@YEAR@
- 2) The patch includes changes to tomcat-users_1.xml, to implement TC6/TC7
- installer feature that the character encoding that was used to write
- tomcat-users.xml is included in the XML signature at the top of the file.
- That is to support non-latin usernames.
- 3) The patch uses the old roles "manager" and "admin", not the "-gui" ones.
-
- To apply:
- 1. Run the following SVN commands:
- svn del build/resources/jvm.ini
- svn del build/resources/config.ini
- svn del build/resources/main.ico
- svn del build/resources/uninst.ico
- # copy icons from TC7, see r999976
- svn copy ../../trunk/res/main.ico build/resources/
- svn copy ../../trunk/res/uninst.ico build/resources/
- 2. Apply patch:
- http://people.apache.org/~kkolinko/patches/2011-01-17_tc55_tomcat-nsi.patch
- +1: kkolinko, markt, mturk
- -1:
-
- For reference: here is the diff of tomcat.nsi of trunk @1059900 if I copy
- patched tomcat.nsi of tc5.5 on top of it:
- (
http://people.apache.org/~kkolinko/patches/2011-01-17_tc55_tomcat-nsi-of-tc7_vs_tc55.diff
)
-
* Fix https://issues.apache.org/bugzilla/show_bug.cgi?id=50620
Exceptions calling session.endAccess should not prevent recycle() from
completing normally
1) copy o.a.tomcat.util.ExceptionUtils from trunk
Modified: tomcat/tc5.5.x/trunk/build/build.xml
URL:
http://svn.apache.org/viewvc/tomcat/tc5.5.x/trunk/build/build.xml?rev=1066549&r1=1066548&r2=1066549&view=diff
==============================================================================
--- tomcat/tc5.5.x/trunk/build/build.xml (original)
+++ tomcat/tc5.5.x/trunk/build/build.xml Wed Feb 2 17:54:36 2011
@@ -1561,10 +1561,15 @@
<copy file="${nsis.nsexec.dll}" todir="${tomcat.dist}" />
<copy file="${nsis.nsisdl.dll}" todir="${tomcat.dist}" />
+ <tstamp>
+ <format property="YEAR" pattern="yyyy" />
+ </tstamp>
+
<filter token="VERSION" value="${version}"/>
<filter token="VERSION_NUMBER" value="${version.number}"/>
<filter token="VERSION_MAJOR" value="${version.major}"/>
<filter token="VERSION_MAJOR_MINOR" value="${version.major.minor}"/>
+ <filter token="YEAR" value="${YEAR}"/>
<copy file="tomcat.nsi" tofile="${tomcat.dist}/tomcat.nsi"
filtering="true" encoding="ISO-8859-1" />
Modified: tomcat/tc5.5.x/trunk/build/resources/confinstall/tomcat-users_1.xml
URL:
http://svn.apache.org/viewvc/tomcat/tc5.5.x/trunk/build/resources/confinstall/tomcat-users_1.xml?rev=1066549&r1=1066548&r2=1066549&view=diff
==============================================================================
--- tomcat/tc5.5.x/trunk/build/resources/confinstall/tomcat-users_1.xml
(original)
+++ tomcat/tc5.5.x/trunk/build/resources/confinstall/tomcat-users_1.xml Wed Feb
2 17:54:36 2011
@@ -1,4 +1,3 @@
-<?xml version="1.0"?>
<!--
Licensed to the Apache Software Foundation (ASF) under one or more
contributor license agreements. See the NOTICE file distributed with
Modified: tomcat/tc5.5.x/trunk/build/tomcat.nsi
URL:
http://svn.apache.org/viewvc/tomcat/tc5.5.x/trunk/build/tomcat.nsi?rev=1066549&r1=1066548&r2=1066549&view=diff
==============================================================================
--- tomcat/tc5.5.x/trunk/build/tomcat.nsi (original)
+++ tomcat/tc5.5.x/trunk/build/tomcat.nsi Wed Feb 2 17:54:36 2011
@@ -18,16 +18,14 @@
;Compression options
CRCCheck on
- SetCompress force
- SetCompressor lzma
- SetDatablockOptimize on
+ SetCompressor /SOLID lzma
Name "Apache Tomcat"
;Product information
VIAddVersionKey ProductName "Apache Tomcat"
VIAddVersionKey CompanyName "Apache Software Foundation"
- VIAddVersionKey LegalCopyright "Copyright (c) 1999-2011 The Apache Software
Foundation"
+ VIAddVersionKey LegalCopyright "Copyright (c) 1999-@YEAR@ The Apache
Software Foundation"
VIAddVersionKey FileDescription "Apache Tomcat Installer"
VIAddVersionKey FileVersion "2.0"
VIAddVersionKey ProductVersion "@VERSION@"
@@ -35,12 +33,34 @@
VIAddVersionKey InternalName "apache-tomcat-@[email protected]"
VIProductVersion @VERSION_NUMBER@
-!include "MUI.nsh"
+!include "MUI2.nsh"
+!include "nsDialogs.nsh"
!include "StrFunc.nsh"
+!include "LogicLib.nsh"
+!include "FileFunc.nsh"
${StrRep}
- Var "JavaHome"
-
+Var JavaHome
+Var JavaExe
+Var JvmDll
+Var Arch
+Var ResetInstDir
+Var TomcatPort
+Var TomcatAdminEnable
+Var TomcatAdminUsername
+Var TomcatAdminPassword
+Var TomcatAdminRoles
+
+; Variables that store handles of dialog controls
+Var CtlJavaHome
+Var CtlTomcatPort
+Var CtlTomcatAdminUsername
+Var CtlTomcatAdminPassword
+Var CtlTomcatAdminRoles
+
+; Handle of the service-install.log file
+; It is opened in "Core" section and closed in "-post"
+Var ServiceInstallLog
;--------------------------------
;Configuration
@@ -50,15 +70,12 @@ ${StrRep}
!define MUI_HEADERIMAGE_BITMAP header.bmp
!define MUI_WELCOMEFINISHPAGE_BITMAP side_left.bmp
!define MUI_FINISHPAGE_SHOWREADME "$INSTDIR\webapps\ROOT\RELEASE-NOTES.txt"
- !define MUI_FINISHPAGE_RUN $INSTDIR\bin\tomcat5w.exe
- !define MUI_FINISHPAGE_RUN_PARAMETERS //MR//Tomcat5
+ !define MUI_FINISHPAGE_RUN $INSTDIR\bin\tomcat@[email protected]
+ !define MUI_FINISHPAGE_RUN_PARAMETERS //MR//Tomcat@VERSION_MAJOR@
!define MUI_FINISHPAGE_NOREBOOTSUPPORT
!define MUI_ABORTWARNING
- !define TEMP1 $R0
- !define TEMP2 $R1
-
!define MUI_ICON tomcat.ico
!define MUI_UNICON tomcat.ico
@@ -74,13 +91,22 @@ ${StrRep}
LangString TEXT_CONF_SUBTITLE ${LANG_ENGLISH} "Tomcat basic configuration."
LangString TEXT_CONF_PAGETITLE ${LANG_ENGLISH} ": Configuration Options"
+ LangString TEXT_JVM_LABEL1 ${LANG_ENGLISH} "Please select the path of a Java
SE 5.0 or later JRE installed on your system."
+ LangString TEXT_CONF_LABEL_PORT ${LANG_ENGLISH} "HTTP/1.1 Connector Port"
+ LangString TEXT_CONF_LABEL_ADMIN ${LANG_ENGLISH} "Tomcat Administrator Login
(optional)"
+ LangString TEXT_CONF_LABEL_ADMINUSERNAME ${LANG_ENGLISH} "User Name"
+ LangString TEXT_CONF_LABEL_ADMINPASSWORD ${LANG_ENGLISH} "Password"
+ LangString TEXT_CONF_LABEL_ADMINROLES ${LANG_ENGLISH} "Roles"
+
;Install Page order
!insertmacro MUI_PAGE_WELCOME
!insertmacro MUI_PAGE_LICENSE INSTALLLICENSE
+ ; Use custom onLeave function with COMPONENTS page
+ !define MUI_PAGE_CUSTOMFUNCTION_LEAVE pageComponentsLeave
!insertmacro MUI_PAGE_COMPONENTS
+ Page custom pageConfiguration pageConfigurationLeave "$(TEXT_CONF_PAGETITLE)"
+ Page custom pageChooseJVM pageChooseJVMLeave "$(TEXT_JVM_PAGETITLE)"
!insertmacro MUI_PAGE_DIRECTORY
- Page custom SetConfiguration Void "$(TEXT_CONF_PAGETITLE)"
- Page custom SetChooseJVM Void "$(TEXT_JVM_PAGETITLE)"
!insertmacro MUI_PAGE_INSTFILES
Page custom CheckUserType
!insertmacro MUI_PAGE_FINISH
@@ -95,7 +121,7 @@ ${StrRep}
;Component-selection page
;Descriptions
LangString DESC_SecTomcat ${LANG_ENGLISH} "Install the Tomcat Servlet
container as a Windows service."
- LangString DESC_SecTomcatCore ${LANG_ENGLISH} "Install the Tomcat Servlet
container core."
+ LangString DESC_SecTomcatCore ${LANG_ENGLISH} "Install the Tomcat Servlet
container core and create the Windows service."
LangString DESC_SecTomcatService ${LANG_ENGLISH} "Automatically start the
Tomcat service when the computer is started."
LangString DESC_SecTomcatNative ${LANG_ENGLISH} "Install APR based Tomcat
native .dll for better performance and scalability in production environments."
LangString DESC_SecMenu ${LANG_ENGLISH} "Create a Start Menu program group
for Tomcat."
@@ -104,25 +130,24 @@ ${StrRep}
LangString DESC_SecHostManager ${LANG_ENGLISH} "Install the Tomcat Host
Manager administrative web application."
LangString DESC_SecExamples ${LANG_ENGLISH} "Install the Servlet and JSP
example web applications."
LangString DESC_SecWebapps ${LANG_ENGLISH} "Installs other utility web
applications (WebDAV, balancer, etc)."
-; LangString DESC_SecCompat ${LANG_ENGLISH} "Installs Java2 compatibility
package. This release of Apache Tomcat was packaged to run on J2SE 5.0 or
later. It can be run on earlier JVMs by installng this package."
;Language
!insertmacro MUI_LANGUAGE English
- ;Folder-select dialog
- InstallDir "$PROGRAMFILES\Apache Software Foundation\Tomcat 5.5"
-
;Install types
InstType Normal
InstType Minimum
InstType Full
; Main registry key
- InstallDirRegKey HKLM "SOFTWARE\Apache Software Foundation\Tomcat\5.5" ""
+ InstallDirRegKey HKLM "SOFTWARE\Apache Software
Foundation\Tomcat\@VERSION_MAJOR_MINOR@" ""
- !insertmacro MUI_RESERVEFILE_INSTALLOPTIONS
- ReserveFile "jvm.ini"
- ReserveFile "config.ini"
+ ReserveFile "${NSISDIR}\Plugins\System.dll"
+ ReserveFile "${NSISDIR}\Plugins\nsDialogs.dll"
+ ReserveFile confinstall\server_1.xml
+ ReserveFile confinstall\server_2.xml
+ ReserveFile confinstall\tomcat-users_1.xml
+ ReserveFile confinstall\tomcat-users_2.xml
;--------------------------------
;Installer Sections
@@ -133,8 +158,9 @@ Section "Core" SecTomcatCore
SectionIn 1 2 3 RO
- IfSilent +2 0
- Call checkJvm
+ ${If} ${Silent}
+ Call checkJava
+ ${EndIf}
SetOutPath $INSTDIR
File tomcat.ico
@@ -144,12 +170,10 @@ Section "Core" SecTomcatCore
File /r common\*.*
SetOutPath $INSTDIR\shared
File /nonfatal /r shared\*.*
+ ; Note: just calling 'SetOutPath' will create the empty folders for us
SetOutPath $INSTDIR\logs
- File /nonfatal /r logs\*.*
SetOutPath $INSTDIR\work
- File /nonfatal /r work\*.*
SetOutPath $INSTDIR\temp
- File /nonfatal /r temp\*.*
SetOutPath $INSTDIR\bin
File bin\bootstrap.jar
File bin\commons-logging-api-1.1.1.jar
@@ -164,63 +188,57 @@ Section "Core" SecTomcatCore
File /r webapps\ROOT\*.*
Call configure
- Call findJavaPath
- Pop $2
- IfSilent +2 0
- !insertmacro MUI_INSTALLOPTIONS_READ $2 "jvm.ini" "Field 2" "State"
-
- StrCpy "$JavaHome" $2
- Call findJVMPath
- Pop $2
-
- DetailPrint "Using Jvm: $2"
+ DetailPrint "Using Jvm: $JavaHome"
SetOutPath $INSTDIR\bin
File bin\tomcat@[email protected]
; Get the current platform x86 / AMD64 / IA64
- Call FindCpuType
- Pop $0
- StrCmp $0 "x86" 0 +2
- File /oname=tomcat@[email protected] bin\tomcat@[email protected]
- StrCmp $0 "x64" 0 +2
- File /oname=tomcat@[email protected] bin\x64\tomcat@[email protected]
- StrCmp $0 "i64" 0 +2
- File /oname=tomcat@[email protected] bin\i64\tomcat@[email protected]
+ ${If} $Arch == "x86"
+ File /oname=tomcat@[email protected] bin\tomcat@[email protected]
+ ${ElseIf} $Arch == "x64"
+ File /oname=tomcat@[email protected] bin\x64\tomcat@[email protected]
+ ${ElseIf} $Arch == "i64"
+ File /oname=tomcat@[email protected] bin\i64\tomcat@[email protected]
+ ${EndIf}
+
+ FileOpen $ServiceInstallLog "$INSTDIR\logs\service-install.log" a
+ FileSeek $ServiceInstallLog 0 END
InstallRetry:
+ FileWrite $ServiceInstallLog '"$INSTDIR\bin\tomcat@[email protected]"
//IS//Tomcat@VERSION_MAJOR@ --DisplayName "Apache Tomcat @VERSION_MAJOR@"
--Description "Apache Tomcat @VERSION@ Server - http://tomcat.apache.org/"
--LogPath "$INSTDIR\logs" --Install "$INSTDIR\bin\tomcat@[email protected]"
--Jvm "$JvmDll" --StartPath "$INSTDIR" --StopPath "$INSTDIR"'
+ FileWrite $ServiceInstallLog "$\r$\n"
ClearErrors
- nsExec::ExecToLog '"$INSTDIR\bin\tomcat5.exe" //IS//Tomcat5 --DisplayName
"Apache Tomcat" --Description "Apache Tomcat @VERSION@ Server -
http://tomcat.apache.org/" --LogPath "$INSTDIR\logs" --Install
"$INSTDIR\bin\tomcat5.exe" --Jvm "$2" --StartPath "$INSTDIR" --StopPath
"$INSTDIR"'
+ DetailPrint "Installing Tomcat@VERSION_MAJOR@ service"
+ nsExec::ExecToStack '"$INSTDIR\bin\tomcat@[email protected]"
//IS//Tomcat@VERSION_MAJOR@ --DisplayName "Apache Tomcat @VERSION_MAJOR@"
--Description "Apache Tomcat @VERSION@ Server - http://tomcat.apache.org/"
--LogPath "$INSTDIR\logs" --Install "$INSTDIR\bin\tomcat@[email protected]"
--Jvm "$JvmDll" --StartPath "$INSTDIR" --StopPath "$INSTDIR"'
Pop $0
+ Pop $1
StrCmp $0 "0" InstallOk
+ FileWrite $ServiceInstallLog "Install failed: $0 $1$\r$\n"
MessageBox MB_ABORTRETRYIGNORE|MB_ICONSTOP \
- "Failed to install Tomcat5 service.$\r$\nCheck your settings and
permissions.$\r$\nIgnore and continue anyway (not recommended)?" \
+ "Failed to install Tomcat@VERSION_MAJOR@ service.$\r$\nCheck your
settings and permissions.$\r$\nIgnore and continue anyway (not recommended)?" \
/SD IDIGNORE IDIGNORE InstallOk IDRETRY InstallRetry
Quit
InstallOk:
ClearErrors
+ ; Will be closed in "-post" section
+ ; FileClose $ServiceInstallLog
SectionEnd
Section "Service Startup" SecTomcatService
SectionIn 3
- IfSilent 0 +3
- Call findJavaPath
- Pop $2
-
- IfSilent +2 0
- !insertmacro MUI_INSTALLOPTIONS_READ $2 "jvm.ini" "Field 2" "State"
-
- StrCpy "$JavaHome" $2
- Call findJVMPath
- Pop $2
-
- nsExec::ExecToLog '"$INSTDIR\bin\tomcat5.exe" //US//Tomcat5 --Startup auto'
+ ${If} $ServiceInstallLog != ""
+ FileWrite $ServiceInstallLog '"$INSTDIR\bin\tomcat@[email protected]"
//US//Tomcat@VERSION_MAJOR@ --Startup auto'
+ FileWrite $ServiceInstallLog "$\r$\n"
+ ${EndIf}
+ DetailPrint "Configuring Tomcat@VERSION_MAJOR@ service"
+ nsExec::ExecToLog '"$INSTDIR\bin\tomcat@[email protected]"
//US//Tomcat@VERSION_MAJOR@ --Startup auto'
; Behave like Apache Httpd (put the icon in tray on login)
- WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Run"
"ApacheTomcatMonitor" '"$INSTDIR\bin\tomcat5w.exe" //MS//Tomcat5'
+ WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Run"
"ApacheTomcatMonitor" '"$INSTDIR\bin\tomcat@[email protected]"
//MS//Tomcat@VERSION_MAJOR@'
ClearErrors
@@ -231,15 +249,14 @@ Section "Native" SecTomcatNative
SectionIn 3
SetOutPath $INSTDIR\bin
- Call FindCpuType
- Pop $0
- StrCmp $0 "x86" 0 +2
- File bin\tcnative-1.dll
- StrCmp $0 "x64" 0 +2
- File /oname=tcnative-1.dll bin\x64\tcnative-1.dll
- StrCmp $0 "i64" 0 +2
- File /oname=tcnative-1.dll bin\i64\tcnative-1.dll
+ ${If} $Arch == "x86"
+ File bin\tcnative-1.dll
+ ${ElseIf} $Arch == "x64"
+ File /oname=tcnative-1.dll bin\x64\tcnative-1.dll
+ ${ElseIf} $Arch == "i64"
+ File /oname=tcnative-1.dll bin\i64\tcnative-1.dll
+ ${EndIf}
ClearErrors
@@ -251,46 +268,7 @@ Section "Start Menu Items" SecMenu
SectionIn 1 2 3
- !insertmacro MUI_INSTALLOPTIONS_READ $2 "jvm.ini" "Field 2" "State"
-
- SetOutPath "$SMPROGRAMS\Apache Tomcat 5.5"
-
- CreateShortCut "$SMPROGRAMS\Apache Tomcat 5.5\Tomcat Home Page.lnk" \
- "http://tomcat.apache.org/"
-
- CreateShortCut "$SMPROGRAMS\Apache Tomcat 5.5\Welcome.lnk" \
- "http://127.0.0.1:$R0/"
-
- IfFileExists "$INSTDIR\server\webapps\manager" 0 NoManagerApp
-
- CreateShortCut "$SMPROGRAMS\Apache Tomcat 5.5\Tomcat Manager.lnk" \
- "http://127.0.0.1:$R0/manager/html"
-
-NoManagerApp:
-
- IfFileExists "$INSTDIR\webapps\webapps\tomcat-docs" 0 NoDocumentaion
-
- CreateShortCut "$SMPROGRAMS\Apache Tomcat 5.5\Tomcat Documentation.lnk" \
- "$INSTDIR\webapps\tomcat-docs\index.html"
-
-NoDocumentaion:
-
- CreateShortCut "$SMPROGRAMS\Apache Tomcat 5.5\Uninstall Tomcat 5.5.lnk" \
- "$INSTDIR\Uninstall.exe"
-
- CreateShortCut "$SMPROGRAMS\Apache Tomcat 5.5\Tomcat 5.5 Program
Directory.lnk" \
- "$INSTDIR"
-
- CreateShortCut "$SMPROGRAMS\Apache Tomcat 5.5\Monitor Tomcat.lnk" \
- "$INSTDIR\bin\tomcat5w.exe" \
- '//MS//Tomcat5' \
- "$INSTDIR\tomcat.ico" 0 SW_SHOWNORMAL
-
- CreateShortCut "$SMPROGRAMS\Apache Tomcat 5.5\Configure Tomcat.lnk" \
- "$INSTDIR\bin\tomcat5w.exe" \
- '//ES//Tomcat5' \
- "$INSTDIR\tomcat.ico" 0 SW_SHOWNORMAL
-
+ Call createShortcuts
SectionEnd
Section "Documentation" SecDocs
@@ -348,91 +326,174 @@ Section "Webapps" SecWebapps
SectionEnd
-;Section "Compatibility" SecCompat
-;
-; SetOutPath $INSTDIR
-; File /oname=bin\jmx.jar ..\compat\bin\jmx.jar
-; File /oname=common\endorsed\xercesImpl.jar
..\compat\common\endorsed\xercesImpl.jar
-; File /oname=common\endorsed\xml-apis.jar
..\compat\common\endorsed\xml-apis.jar
-;
-;SectionEnd
-
Section -post
- nsExec::ExecToLog '"$INSTDIR\bin\tomcat5.exe" //US//Tomcat5 --Classpath
"$INSTDIR\bin\bootstrap.jar" --StartClass org.apache.catalina.startup.Bootstrap
--StopClass org.apache.catalina.startup.Bootstrap --StartParams start
--StopParams stop --StartMode jvm --StopMode jvm'
- nsExec::ExecToLog '"$INSTDIR\bin\tomcat5.exe" //US//Tomcat5 --JvmOptions
"-Dcatalina.home=$INSTDIR#-Dcatalina.base=$INSTDIR#-Djava.endorsed.dirs=$INSTDIR\common\endorsed#-Djava.io.tmpdir=$INSTDIR\temp#-Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager#-Djava.util.logging.config.file=$INSTDIR\conf\logging.properties"
--StdOutput auto --StdError auto'
+ ${If} $ServiceInstallLog != ""
+ FileWrite $ServiceInstallLog '"$INSTDIR\bin\tomcat@[email protected]"
//US//Tomcat@VERSION_MAJOR@ --Classpath "$INSTDIR\bin\bootstrap.jar"
--StartClass org.apache.catalina.startup.Bootstrap --StopClass
org.apache.catalina.startup.Bootstrap --StartParams start --StopParams stop
--StartMode jvm --StopMode jvm'
+ FileWrite $ServiceInstallLog "$\r$\n"
+ FileWrite $ServiceInstallLog '"$INSTDIR\bin\tomcat@[email protected]"
//US//Tomcat@VERSION_MAJOR@ --JvmOptions
"-Dcatalina.home=$INSTDIR#-Dcatalina.base=$INSTDIR#-Djava.endorsed.dirs=$INSTDIR\common\endorsed#-Djava.io.tmpdir=$INSTDIR\temp#-Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager#-Djava.util.logging.config.file=$INSTDIR\conf\logging.properties"'
+ FileWrite $ServiceInstallLog "$\r$\n"
+ FileWrite $ServiceInstallLog '"$INSTDIR\bin\tomcat@[email protected]"
//US//Tomcat@VERSION_MAJOR@ --StdOutput auto --StdError auto'
+ FileWrite $ServiceInstallLog "$\r$\n"
+ FileClose $ServiceInstallLog
+ ${EndIf}
+
+ DetailPrint "Configuring Tomcat@VERSION_MAJOR@ service"
+ nsExec::ExecToLog '"$INSTDIR\bin\tomcat@[email protected]"
//US//Tomcat@VERSION_MAJOR@ --Classpath "$INSTDIR\bin\bootstrap.jar"
--StartClass org.apache.catalina.startup.Bootstrap --StopClass
org.apache.catalina.startup.Bootstrap --StartParams start --StopParams stop
--StartMode jvm --StopMode jvm'
+ nsExec::ExecToLog '"$INSTDIR\bin\tomcat@[email protected]"
//US//Tomcat@VERSION_MAJOR@ --JvmOptions
"-Dcatalina.home=$INSTDIR#-Dcatalina.base=$INSTDIR#-Djava.endorsed.dirs=$INSTDIR\common\endorsed#-Djava.io.tmpdir=$INSTDIR\temp#-Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager#-Djava.util.logging.config.file=$INSTDIR\conf\logging.properties"'
+ nsExec::ExecToLog '"$INSTDIR\bin\tomcat@[email protected]"
//US//Tomcat@VERSION_MAJOR@ --StdOutput auto --StdError auto'
WriteUninstaller "$INSTDIR\Uninstall.exe"
- WriteRegStr HKLM "SOFTWARE\Apache Software Foundation\Tomcat\5.5"
"InstallPath" $INSTDIR
- WriteRegStr HKLM "SOFTWARE\Apache Software Foundation\Tomcat\5.5" "Version"
@VERSION@
- WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Apache
Tomcat 5.5" \
- "DisplayName" "Apache Tomcat 5.5 (remove only)"
- WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Apache
Tomcat 5.5" \
+ WriteRegStr HKLM "SOFTWARE\Apache Software
Foundation\Tomcat\@VERSION_MAJOR_MINOR@" "InstallPath" $INSTDIR
+ WriteRegStr HKLM "SOFTWARE\Apache Software
Foundation\Tomcat\@VERSION_MAJOR_MINOR@" "Version" @VERSION@
+ WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Apache
Tomcat @VERSION_MAJOR_MINOR@" \
+ "DisplayName" "Apache Tomcat @VERSION_MAJOR_MINOR@ (remove
only)"
+ WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Apache
Tomcat @VERSION_MAJOR_MINOR@" \
"UninstallString" '"$INSTDIR\Uninstall.exe"'
SectionEnd
Function .onInit
- ;Reset install dir for 64-bit
- ExpandEnvStrings $0 "%PROGRAMW6432%"
- StrCmp $0 "%PROGRAMW6432%" +2 0
- StrCpy $INSTDIR "$0\Apache Software Foundation\Tomcat @VERSION_MAJOR_MINOR@"
+ ${GetParameters} $R0
+ ClearErrors
+
+ ${GetOptions} "$R0" "/?" $R1
+ ${IfNot} ${Errors}
+ MessageBox MB_OK|MB_ICONINFORMATION 'Available options:$\r$\n\
+ /S - Silent install.$\r$\n\
+ /D=INSTDIR - Specify installation directory.'
+ Abort
+ ${EndIf}
+ ClearErrors
- ;Extract Install Options INI Files
- !insertmacro MUI_INSTALLOPTIONS_EXTRACT "config.ini"
- !insertmacro MUI_INSTALLOPTIONS_EXTRACT "jvm.ini"
+ StrCpy $ResetInstDir "$INSTDIR"
+ ;Initialize default values
+ StrCpy $JavaHome ""
+ StrCpy $TomcatPort "8080"
+ StrCpy $TomcatAdminEnable "0"
+ StrCpy $TomcatAdminUsername ""
+ StrCpy $TomcatAdminPassword ""
+ StrCpy $TomcatAdminRoles ""
FunctionEnd
-Function SetChooseJVM
+Function pageChooseJVM
!insertmacro MUI_HEADER_TEXT "$(TEXT_JVM_TITLE)" "$(TEXT_JVM_SUBTITLE)"
- Call findJavaPath
- Pop $3
- !insertmacro MUI_INSTALLOPTIONS_WRITE "jvm.ini" "Field 2" "State" $3
- !insertmacro MUI_INSTALLOPTIONS_DISPLAY "jvm.ini"
+ ${If} $JavaHome == ""
+ Call findJavaHome
+ Pop $JavaHome
+ ${EndIf}
+
+ nsDialogs::Create 1018
+ Pop $R0
+
+ ${NSD_CreateLabel} 0 5u 100% 25u "$(TEXT_JVM_LABEL1)"
+ Pop $R0
+ ${NSD_CreateDirRequest} 0 65u 280u 13u "$JavaHome"
+ Pop $CtlJavaHome
+ ${NSD_CreateBrowseButton} 282u 65u 15u 13u "..."
+ Pop $R0
+ ${NSD_OnClick} $R0 pageChooseJVM_onDirBrowse
+
+ ${NSD_SetFocus} $CtlJavaHome
+ nsDialogs::Show
+FunctionEnd
+
+; onClick function for button next to DirRequest control
+Function pageChooseJVM_onDirBrowse
+ ; R0 is HWND of the button, it is on top of the stack
+ Pop $R0
+
+ ${NSD_GetText} $CtlJavaHome $R1
+ nsDialogs::SelectFolderDialog "" "$R1"
+ Pop $R1
+
+ ${If} $R1 != "error"
+ ${NSD_SetText} $CtlJavaHome $R1
+ ${EndIf}
FunctionEnd
-Function SetConfiguration
- !insertmacro MUI_HEADER_TEXT "$(TEXT_CONF_TITLE)" "$(TEXT_CONF_SUBTITLE)"
+Function pageChooseJVMLeave
+ ${NSD_GetText} $CtlJavaHome $JavaHome
+ ${If} $JavaHome == ""
+ Abort
+ ${EndIf}
+
+ Call checkJava
+FunctionEnd
+
+; onLeave function for the COMPONENTS page
+; It updates options based on what components were selected.
+;
+Function pageComponentsLeave
+ StrCpy $TomcatAdminEnable "0"
+ StrCpy $TomcatAdminRoles ""
SectionGetFlags ${SecManager} $0
IntOp $0 $0 & ${SF_SELECTED}
- IntCmp $0 0 0 Enable Enable
+ ${If} $0 <> 0
+ StrCpy $TomcatAdminEnable "1"
+ StrCpy $TomcatAdminRoles "manager"
+ ${EndIf}
+
SectionGetFlags ${SecHostManager} $0
IntOp $0 $0 & ${SF_SELECTED}
- IntCmp $0 0 Disable 0 0
+ ${If} $0 <> 0
+ StrCpy $TomcatAdminEnable "1"
+ ${If} $TomcatAdminRoles != ""
+ StrCpy $TomcatAdminRoles "admin,$TomcatAdminRoles"
+ ${Else}
+ StrCpy $TomcatAdminRoles "admin"
+ ${EndIf}
+ ${EndIf}
+FunctionEnd
-Enable:
- ; Enable the user and password controls if the manager or host-manager app is
- ; being installed
- !insertmacro MUI_INSTALLOPTIONS_READ $0 "config.ini" "Field 5" "HWND"
- !insertmacro MUI_INSTALLOPTIONS_WRITE "config.ini" "Field 5" "Flags" ""
- EnableWindow $0 1
- !insertmacro MUI_INSTALLOPTIONS_READ $0 "config.ini" "Field 7" "HWND"
- !insertmacro MUI_INSTALLOPTIONS_WRITE "config.ini" "Field 7" "Flags" ""
- EnableWindow $0 1
- Goto Display
-
-Disable:
- ; Disable the user and password controls if neither the manager nor
- ; host-manager app is being installed
- !insertmacro MUI_INSTALLOPTIONS_READ $0 "config.ini" "Field 5" "HWND"
- !insertmacro MUI_INSTALLOPTIONS_WRITE "config.ini" "Field 5" "Flags"
"DISABLED"
- EnableWindow $0 0
- !insertmacro MUI_INSTALLOPTIONS_READ $0 "config.ini" "Field 7" "HWND"
- !insertmacro MUI_INSTALLOPTIONS_WRITE "config.ini" "Field 7" "Flags"
"DISABLED"
- EnableWindow $0 0
- ; Clear the values
- !insertmacro MUI_INSTALLOPTIONS_WRITE "config.ini" "Field 5" "State" ""
- !insertmacro MUI_INSTALLOPTIONS_WRITE "config.ini" "Field 7" "State" ""
+Function pageConfiguration
+ !insertmacro MUI_HEADER_TEXT "$(TEXT_CONF_TITLE)" "$(TEXT_CONF_SUBTITLE)"
-Display:
- !insertmacro MUI_INSTALLOPTIONS_DISPLAY "config.ini"
+ nsDialogs::Create 1018
+ Pop $R0
-FunctionEnd
+ ${NSD_CreateLabel} 0 5u 100u 15u "$(TEXT_CONF_LABEL_PORT)"
+ Pop $R0
-Function Void
-FunctionEnd
+ ${NSD_CreateText} 150u 5u 50u 13u "$TomcatPort"
+ Pop $CtlTomcatPort
+ ${NSD_SetTextLimit} $CtlTomcatPort 5
+
+ ${If} $TomcatAdminEnable == "1"
+ ${NSD_CreateLabel} 0 30u 100% 15u "$(TEXT_CONF_LABEL_ADMIN)"
+ Pop $R0
+ ${NSD_CreateLabel} 10u 50u 140u 15u "$(TEXT_CONF_LABEL_ADMINUSERNAME)"
+ Pop $R0
+ ${NSD_CreateText} 150u 50u 110u 13u "$TomcatAdminUsername"
+ Pop $CtlTomcatAdminUsername
+ ${NSD_CreateLabel} 10u 70u 140u 15u "$(TEXT_CONF_LABEL_ADMINPASSWORD)"
+ Pop $R0
+ ${NSD_CreatePassword} 150u 70u 110u 13u "$TomcatAdminPassword"
+ Pop $CtlTomcatAdminPassword
+ ${NSD_CreateLabel} 10u 90u 140u 15u "$(TEXT_CONF_LABEL_ADMINROLES)"
+ Pop $R0
+ ${NSD_CreateText} 150u 90u 110u 13u "$TomcatAdminRoles"
+ Pop $CtlTomcatAdminRoles
+ ${EndIf}
+
+ ${NSD_SetFocus} $CtlTomcatPort
+ nsDialogs::Show
+FunctionEnd
+
+Function pageConfigurationLeave
+ ${NSD_GetText} $CtlTomcatPort $TomcatPort
+ ${If} $TomcatAdminEnable == "1"
+ ${NSD_GetText} $CtlTomcatAdminUsername $TomcatAdminUsername
+ ${NSD_GetText} $CtlTomcatAdminPassword $TomcatAdminPassword
+ ${NSD_GetText} $CtlTomcatAdminRoles $TomcatAdminRoles
+ ${EndIf}
+FunctionEnd
+
+; Not used
+;Function Void
+;FunctionEnd
;--------------------------------
;Descriptions
@@ -442,7 +503,6 @@ FunctionEnd
!insertmacro MUI_DESCRIPTION_TEXT ${SecTomcatCore} $(DESC_SecTomcatCore)
!insertmacro MUI_DESCRIPTION_TEXT ${SecTomcatService}
$(DESC_SecTomcatService)
!insertmacro MUI_DESCRIPTION_TEXT ${SecTomcatNative} $(DESC_SecTomcatNative)
-; !insertmacro MUI_DESCRIPTION_TEXT ${SecCompat} $(DESC_SecCompat)
!insertmacro MUI_DESCRIPTION_TEXT ${SecMenu} $(DESC_SecMenu)
!insertmacro MUI_DESCRIPTION_TEXT ${SecDocs} $(DESC_SecDocs)
!insertmacro MUI_DESCRIPTION_TEXT ${SecManager} $(DESC_SecManager)
@@ -453,32 +513,6 @@ FunctionEnd
; =====================
-; FindCpuType Function
-; =====================
-;
-; Find the CPU used on the system, and put the result on the top of the
-; stack
-;
-Function FindCpuType
-
- ClearErrors
- ; Default CPU is always x86
- StrCpy $1 "x86"
- ExpandEnvStrings $0 "%PROCESSOR_ARCHITEW6432%"
- StrCmp $0 "%PROCESSOR_ARCHITEW6432%" +5 0
- StrCmp $0 "IA64" 0 +3
- StrCpy $1 "i64"
- Goto FoundCpu
- StrCpy $1 "x64"
-
-FoundCpu:
- ; Put the result in the stack
- Push $1
-
-FunctionEnd
-
-
-; =====================
; CheckUserType Function
; =====================
;
@@ -508,36 +542,135 @@ Function CheckUserType
done:
FunctionEnd
+; ==================
+; checkJava Function
+; ==================
+;
+; Checks that a valid JVM has been specified or a suitable default is available
+; Sets $JavaHome, $JavaExe and $JvmDll accordingly
+; Determines if the JVM is 32-bit or 64-bit and sets $Arch accordingly. For
+; 64-bit JVMs, also determines if it is x64 or ia64
+Function checkJava
+
+ ${If} $JavaHome == ""
+ ; E.g. if a silent install
+ Call findJavaHome
+ Pop $JavaHome
+ ${EndIf}
+
+ ${If} $JavaHome == ""
+ ${OrIfNot} ${FileExists} "$JavaHome\bin\java.exe"
+ IfSilent +2
+ MessageBox MB_OK|MB_ICONSTOP "No Java Virtual Machine found in
folder:$\r$\n$JavaHome"
+ DetailPrint "No Java Virtual Machine found in folder:$\r$\n$JavaHome"
+ Quit
+ ${EndIf}
+
+ StrCpy "$JavaExe" "$JavaHome\bin\java.exe"
+
+ ; Need path to jvm.dll to configure the service - uses $JavaHome
+ Call findJVMPath
+ Pop $5
+ ${If} $5 == ""
+ IfSilent +2
+ MessageBox MB_OK|MB_ICONSTOP "No Java Virtual Machine found in
folder:$\r$\n$5"
+ DetailPrint "No Java Virtual Machine found in folder:$\r$\n$5"
+ Quit
+ ${EndIf}
+
+ StrCpy "$JvmDll" $5
+
+ ; Read PE header of JvmDll to check for architecture
+ ; 1. Jump to 0x3c and read offset of PE header
+ ; 2. Jump to offset. Read PE header signature. It must be 'PE'\0\0 (50 45 00
00).
+ ; 3. The next word gives the machine type.
+ ; 0x014c: x86
+ ; 0x8664: x64
+ ; 0x0200: i64
+ ClearErrors
+ FileOpen $R1 "$JvmDll" r
+ IfErrors WrongPEHeader
+
+ FileSeek $R1 0x3c SET
+ FileReadByte $R1 $R2
+ FileReadByte $R1 $R3
+ IntOp $R3 $R3 << 8
+ IntOp $R2 $R2 + $R3
+
+ FileSeek $R1 $R2 SET
+ FileReadByte $R1 $R2
+ IntCmp $R2 0x50 +1 WrongPEHeader WrongPEHeader
+ FileReadByte $R1 $R2
+ IntCmp $R2 0x45 +1 WrongPEHeader WrongPEHeader
+ FileReadByte $R1 $R2
+ IntCmp $R2 0 +1 WrongPEHeader WrongPEHeader
+ FileReadByte $R1 $R2
+ IntCmp $R2 0 +1 WrongPEHeader WrongPEHeader
+
+ FileReadByte $R1 $R2
+ FileReadByte $R1 $R3
+ IntOp $R3 $R3 << 8
+ IntOp $R2 $R2 + $R3
+
+ IntCmp $R2 0x014c +1 +3 +3
+ StrCpy "$Arch" "x86"
+ Goto DonePEHeader
+
+ IntCmp $R2 0x8664 +1 +3 +3
+ StrCpy "$Arch" "x64"
+ Goto DonePEHeader
+
+ IntCmp $R2 0x0200 +1 +3 +3
+ StrCpy "$Arch" "i64"
+ Goto DonePEHeader
+
+WrongPEHeader:
+ IfSilent +2
+ MessageBox MB_OK|MB_ICONEXCLAMATION 'Cannot read PE header from
"$JvmDll"$\r$\nWill assume that the architecture is x86.'
+ DetailPrint 'Cannot read PE header from "$JvmDll". Assuming the architecture
is x86.'
+ StrCpy "$Arch" "x86"
+
+DonePEHeader:
+ FileClose $R1
+
+ DetailPrint 'Architecture: "$Arch"'
+
+ StrCpy $INSTDIR "$ResetInstDir"
+
+ ; The default varies depending on 32-bit or 64-bit
+ ${If} "$INSTDIR" == ""
+ ${If} $Arch == "x86"
+ StrCpy $INSTDIR "$PROGRAMFILES32\Apache Software Foundation\Tomcat
@VERSION_MAJOR_MINOR@"
+ ${Else}
+ StrCpy $INSTDIR "$PROGRAMFILES64\Apache Software Foundation\Tomcat
@VERSION_MAJOR_MINOR@"
+ ${EndIf}
+ ${EndIf}
+
+FunctionEnd
+
; =====================
-; FindJavaPath Function
+; findJavaHome Function
; =====================
;
; Find the JAVA_HOME used on the system, and put the result on the top of the
; stack
; Will return an empty string if the path cannot be determined
;
-Function findJavaPath
-
- ;ClearErrors
-
- ;ReadEnvStr $1 JAVA_HOME
-
- ;IfErrors 0 FoundJDK
+Function findJavaHome
ClearErrors
; Use the 64-bit registry on 64-bit machines
ExpandEnvStrings $0 "%PROGRAMW6432%"
- StrCmp $0 "%PROGRAMW6432%" +2 0
- SetRegView 64
+ ${If} $0 != "%PROGRAMW6432%"
+ SetRegView 64
+ ${EndIf}
ReadRegStr $2 HKLM "SOFTWARE\JavaSoft\Java Runtime Environment"
"CurrentVersion"
ReadRegStr $1 HKLM "SOFTWARE\JavaSoft\Java Runtime Environment\$2" "JavaHome"
ReadRegStr $3 HKLM "SOFTWARE\JavaSoft\Java Runtime Environment\$2"
"RuntimeLib"
- ;FoundJDK:
-
IfErrors 0 NoErrors
StrCpy $1 ""
@@ -556,43 +689,43 @@ FunctionEnd
; ====================
;
; Find the full JVM path, and put the result on top of the stack
-; Argument: JVM base path (result of findJavaPath)
+; Implicit argument: $JavaHome
; Will return an empty string if the path cannot be determined
;
Function findJVMPath
ClearErrors
-
+
;Step one: Is this a JRE path (Program Files\Java\XXX)
StrCpy $1 "$JavaHome"
-
+
StrCpy $2 "$1\bin\hotspot\jvm.dll"
IfFileExists "$2" FoundJvmDll
StrCpy $2 "$1\bin\server\jvm.dll"
IfFileExists "$2" FoundJvmDll
- StrCpy $2 "$1\bin\client\jvm.dll"
+ StrCpy $2 "$1\bin\client\jvm.dll"
IfFileExists "$2" FoundJvmDll
StrCpy $2 "$1\bin\classic\jvm.dll"
IfFileExists "$2" FoundJvmDll
;Step two: Is this a JDK path (Program Files\XXX\jre)
StrCpy $1 "$JavaHome\jre"
-
+
StrCpy $2 "$1\bin\hotspot\jvm.dll"
IfFileExists "$2" FoundJvmDll
StrCpy $2 "$1\bin\server\jvm.dll"
IfFileExists "$2" FoundJvmDll
- StrCpy $2 "$1\bin\client\jvm.dll"
+ StrCpy $2 "$1\bin\client\jvm.dll"
IfFileExists "$2" FoundJvmDll
StrCpy $2 "$1\bin\classic\jvm.dll"
IfFileExists "$2" FoundJvmDll
ClearErrors
;Step tree: Read defaults from registry
-
+
ReadRegStr $1 HKLM "SOFTWARE\JavaSoft\Java Runtime Environment"
"CurrentVersion"
ReadRegStr $2 HKLM "SOFTWARE\JavaSoft\Java Runtime Environment\$1"
"RuntimeLib"
-
+
IfErrors 0 FoundJvmDll
StrCpy $2 ""
@@ -605,98 +738,84 @@ Function findJVMPath
FunctionEnd
-; ====================
-; CheckJvm Function
-; ====================
-;
-Function checkJvm
-
- !insertmacro MUI_INSTALLOPTIONS_READ $3 "jvm.ini" "Field 2" "State"
- IfFileExists "$3\bin\java.exe" NoErrors1
- MessageBox MB_OK|MB_ICONSTOP "No Java Virtual Machine found in
folder:$\r$\n$3"
- Quit
-NoErrors1:
- StrCpy "$JavaHome" $3
- Call findJVMPath
- Pop $4
- StrCmp $4 "" 0 NoErrors2
- MessageBox MB_OK|MB_ICONSTOP "No Java Virtual Machine found in
folder:$\r$\n$3"
- Quit
-NoErrors2:
-
-FunctionEnd
-
; ==================
; Configure Function
; ==================
;
-; Display the configuration dialog boxes, read the values entered by the user,
-; and build the configuration files
+; Writes server.xml and tomcat-users.xml
;
Function configure
-
- !insertmacro MUI_INSTALLOPTIONS_READ $R0 "config.ini" "Field 2" "State"
- !insertmacro MUI_INSTALLOPTIONS_READ $R1 "config.ini" "Field 5" "State"
- !insertmacro MUI_INSTALLOPTIONS_READ $R2 "config.ini" "Field 7" "State"
-
- IfSilent 0 +2
- StrCpy $R0 '8080'
-
- StrCpy $R4 'port="$R0"'
+ StrCpy $R4 'port="$TomcatPort"'
StrCpy $R5 ''
- IfSilent Silent 0
-
- ; Escape XML
- Push $R1
- Call xmlEscape
- Pop $R1
- Push $R2
- Call xmlEscape
- Pop $R2
-
- StrCmp $R1 "" +4 0 ; Blank user - do not add anything to tomcat-users.xml
- StrCmp $R2 "" +3 0 ; Blank password - do not add anything to
tomcat-users.xml
- StrCpy $R5 '<user name="$R1" password="$R2" roles="admin,manager" />'
- DetailPrint 'Admin user added: "$R1"'
-
-Silent:
- DetailPrint 'HTTP/1.1 Connector configured on port "$R0"'
-
- SetOutPath $TEMP
- File /r confinstall
+ ${If} $TomcatAdminEnable == "1"
+ ${AndIf} "$TomcatAdminUsername" != ""
+ ${AndIf} "$TomcatAdminPassword" != ""
+ ${AndIf} "$TomcatAdminRoles" != ""
+ ; Escape XML
+ Push $TomcatAdminUsername
+ Call xmlEscape
+ Pop $R1
+ Push $TomcatAdminPassword
+ Call xmlEscape
+ Pop $R2
+ Push $TomcatAdminRoles
+ Call xmlEscape
+ Pop $R3
+ StrCpy $R5 '<user name="$R1" password="$R2" roles="$R3" />$\r$\n'
+ DetailPrint 'Admin user added: "$TomcatAdminUsername"'
+ ${EndIf}
+
+ DetailPrint 'HTTP/1.1 Connector configured on port "$TomcatPort"'
+
+ ; Extract these fragments to $PLUGINSDIR. That is a temporary directory,
+ ; that is automatically deleted when the installer exits.
+ InitPluginsDir
+ SetOutPath $PLUGINSDIR
+ File confinstall\server_1.xml
+ File confinstall\server_2.xml
+ File confinstall\tomcat-users_1.xml
+ File confinstall\tomcat-users_2.xml
; Build final server.xml
Delete "$INSTDIR\conf\server.xml"
+ DetailPrint "Writing server.xml"
FileOpen $R9 "$INSTDIR\conf\server.xml" w
- Push "$TEMP\confinstall\server_1.xml"
+ Push "$PLUGINSDIR\server_1.xml"
Call copyFile
FileWrite $R9 $R4
- Push "$TEMP\confinstall\server_2.xml"
+ Push "$PLUGINSDIR\server_2.xml"
Call copyFile
FileClose $R9
-
DetailPrint "server.xml written"
; Build final tomcat-users.xml
-
Delete "$INSTDIR\conf\tomcat-users.xml"
+ DetailPrint "Writing tomcat-users.xml"
FileOpen $R9 "$INSTDIR\conf\tomcat-users.xml" w
-
- Push "$TEMP\confinstall\tomcat-users_1.xml"
+ ; File will be written using current windows codepage
+ System::Call 'Kernel32::GetACP() i .r18'
+ ${If} $R8 == "932"
+ ; Special case where Java uses non-standard name for character set
+ FileWrite $R9 "<?xml version='1.0' encoding='ms$R8'?>$\r$\n"
+ ${Else}
+ FileWrite $R9 "<?xml version='1.0' encoding='cp$R8'?>$\r$\n"
+ ${EndIf}
+ Push "$PLUGINSDIR\tomcat-users_1.xml"
Call copyFile
FileWrite $R9 $R5
- Push "$TEMP\confinstall\tomcat-users_2.xml"
+ Push "$PLUGINSDIR\tomcat-users_2.xml"
Call copyFile
FileClose $R9
-
DetailPrint "tomcat-users.xml written"
- RMDir /r "$TEMP\confinstall"
-
+ Delete "$PLUGINSDIR\server_1.xml"
+ Delete "$PLUGINSDIR\server_2.xml"
+ Delete "$PLUGINSDIR\tomcat-users_1.xml"
+ Delete "$PLUGINSDIR\tomcat-users_2.xml"
FunctionEnd
@@ -741,25 +860,77 @@ Function copyFile
FunctionEnd
+; =================
+; createShortcuts Function
+; =================
+;
+; This is called by the SecMenu section.
+;
+; The code is moved here, because ${SecManager} etc. are not visible
+; in SecMenu, because they are defined lower than it.
+;
+Function createShortcuts
+
+ SetOutPath "$SMPROGRAMS\Apache Tomcat @VERSION_MAJOR_MINOR@"
+
+ CreateShortCut "$SMPROGRAMS\Apache Tomcat @VERSION_MAJOR_MINOR@\Tomcat Home
Page.lnk" \
+ "http://tomcat.apache.org/"
+
+ CreateShortCut "$SMPROGRAMS\Apache Tomcat @VERSION_MAJOR_MINOR@\Welcome.lnk"
\
+ "http://127.0.0.1:$TomcatPort/"
+
+ ${If} ${SectionIsSelected} ${SecManager}
+ CreateShortCut "$SMPROGRAMS\Apache Tomcat @VERSION_MAJOR_MINOR@\Tomcat
Manager.lnk" \
+ "http://127.0.0.1:$TomcatPort/manager/html"
+ ${EndIf}
+
+ ${If} ${SectionIsSelected} ${SecHostManager}
+ CreateShortCut "$SMPROGRAMS\Apache Tomcat @VERSION_MAJOR_MINOR@\Tomcat
Host Manager.lnk" \
+ "http://127.0.0.1:$TomcatPort/host-manager/html"
+ ${EndIf}
+
+ ${If} ${SectionIsSelected} ${SecDocs}
+ CreateShortCut "$SMPROGRAMS\Apache Tomcat @VERSION_MAJOR_MINOR@\Tomcat
Documentation.lnk" \
+ "$INSTDIR\webapps\tomcat-docs\index.html"
+ ${EndIf}
+
+ CreateShortCut "$SMPROGRAMS\Apache Tomcat @VERSION_MAJOR_MINOR@\Uninstall
Tomcat @[email protected]" \
+ "$INSTDIR\Uninstall.exe"
+
+ CreateShortCut "$SMPROGRAMS\Apache Tomcat @VERSION_MAJOR_MINOR@\Tomcat
@VERSION_MAJOR_MINOR@ Program Directory.lnk" \
+ "$INSTDIR"
+
+ CreateShortCut "$SMPROGRAMS\Apache Tomcat @VERSION_MAJOR_MINOR@\Monitor
Tomcat.lnk" \
+ "$INSTDIR\bin\tomcat@[email protected]" \
+ '//MS//Tomcat@VERSION_MAJOR@' \
+ "$INSTDIR\tomcat.ico" 0 SW_SHOWNORMAL
+
+ CreateShortCut "$SMPROGRAMS\Apache Tomcat @VERSION_MAJOR_MINOR@\Configure
Tomcat.lnk" \
+ "$INSTDIR\bin\tomcat@[email protected]" \
+ '//ES//Tomcat@VERSION_MAJOR@' \
+ "$INSTDIR\tomcat.ico" 0 SW_SHOWNORMAL
+
+FunctionEnd
+
;--------------------------------
;Uninstaller Section
Section Uninstall
- Delete "$INSTDIR\modern.exe"
Delete "$INSTDIR\Uninstall.exe"
; Stop Tomcat service monitor if running
- nsExec::ExecToLog '"$INSTDIR\bin\tomcat5w.exe" //MQ//Tomcat5'
+ DetailPrint "Stopping Tomcat@VERSION_MAJOR@ service monitor"
+ nsExec::ExecToLog '"$INSTDIR\bin\tomcat@[email protected]"
//MQ//Tomcat@VERSION_MAJOR@'
; Delete Tomcat service
- nsExec::ExecToLog '"$INSTDIR\bin\tomcat5.exe" //DS//Tomcat5'
+ DetailPrint "Uninstalling Tomcat@VERSION_MAJOR@ service"
+ nsExec::ExecToLog '"$INSTDIR\bin\tomcat@[email protected]"
//DS//Tomcat@VERSION_MAJOR@'
ClearErrors
- DeleteRegKey HKCR "JSPFile"
- DeleteRegKey HKLM
"Software\Microsoft\Windows\CurrentVersion\Uninstall\Apache Tomcat 5.5"
- DeleteRegKey HKLM "SOFTWARE\Apache Software Foundation\Tomcat\5.5"
+ DeleteRegKey HKLM
"Software\Microsoft\Windows\CurrentVersion\Uninstall\Apache Tomcat
@VERSION_MAJOR_MINOR@"
+ DeleteRegKey HKLM "SOFTWARE\Apache Software
Foundation\Tomcat\@VERSION_MAJOR_MINOR@"
DeleteRegValue HKLM "Software\Microsoft\Windows\CurrentVersion\Run"
"ApacheTomcatMonitor"
- RMDir /r "$SMPROGRAMS\Apache Tomcat 5.5"
+ RMDir /r "$SMPROGRAMS\Apache Tomcat @VERSION_MAJOR_MINOR@"
Delete "$INSTDIR\tomcat.ico"
Delete "$INSTDIR\LICENSE"
Delete "$INSTDIR\NOTICE"
@@ -782,16 +953,18 @@ Section Uninstall
IfSilent Removed 0
; if $INSTDIR was removed, skip these next ones
- IfFileExists "$INSTDIR" 0 Removed
+ IfFileExists "$INSTDIR" 0 Removed
MessageBox MB_YESNO|MB_ICONQUESTION \
- "Remove all files in your Tomcat 5.5 directory? (If you have anything \
+ "Remove all files in your Tomcat @VERSION_MAJOR_MINOR@ directory? (If
you have anything \
you created that you want to keep, click No)" IDNO Removed
- RMDir /r "$INSTDIR\webapps\ROOT" ; this would be skipped if the user hits
no
- RMDir "$INSTDIR\webapps"
- Delete "$INSTDIR\*.*"
+ ; these would be skipped if the user hits no
+ RMDir /r "$INSTDIR\webapps"
+ RMDir /r "$INSTDIR\logs"
+ RMDir /r "$INSTDIR\conf"
+ Delete "$INSTDIR\*.*"
RMDir /r "$INSTDIR"
Sleep 500
- IfFileExists "$INSTDIR" 0 Removed
+ IfFileExists "$INSTDIR" 0 Removed
MessageBox MB_OK|MB_ICONEXCLAMATION \
"Note: $INSTDIR could not be removed."
Removed:
Modified: tomcat/tc5.5.x/trunk/container/webapps/docs/changelog.xml
URL:
http://svn.apache.org/viewvc/tomcat/tc5.5.x/trunk/container/webapps/docs/changelog.xml?rev=1066549&r1=1066548&r2=1066549&view=diff
==============================================================================
--- tomcat/tc5.5.x/trunk/container/webapps/docs/changelog.xml (original)
+++ tomcat/tc5.5.x/trunk/container/webapps/docs/changelog.xml Wed Feb 2
17:54:36 2011
@@ -45,6 +45,16 @@
<fix>
Fix permissions of version.sh in bin tarball. (rjung)
</fix>
+ <update>
+ Numerous improvements to the Windows installer: update
install/uninstall
+ icons, create an installation log, allow 32-bit JVMs to be selected
when
+ installing on a 64-bit platform, replace the .ini files with the script
+ equivalents, use the new manager and host-manager roles, provide the
+ ability to edit the roles for the added user, add support for the
+ <code>/?</code> command line switch, clean up fully after installation,
+ add DetailPrint statements for operations that may take time and
+ improve the descriptions of the components. (kkolinko, mturk, markt)
+ </update>
</changelog>
</subsection>
<subsection name="Catalina">
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]