Author: kkolinko
Date: Thu Aug  4 10:19:50 2011
New Revision: 1153828

URL: http://svn.apache.org/viewvc?rev=1153828&view=rev
Log:
Various improvements to the Windows installer to be able to install several 
copies of Tomcat 6 side by side. Allow to configure service name, connector and 
shutdown ports. Allow to choose whether to install Start menu shortcuts and 
Apache Tomcat monitor application for all users or for the current one only. 
Improve server.xml file handling. Fix uninstallation icon.

Modified:
    tomcat/tc6.0.x/trunk/res/tomcat.nsi
    tomcat/tc6.0.x/trunk/webapps/docs/changelog.xml

Modified: tomcat/tc6.0.x/trunk/res/tomcat.nsi
URL: 
http://svn.apache.org/viewvc/tomcat/tc6.0.x/trunk/res/tomcat.nsi?rev=1153828&r1=1153827&r2=1153828&view=diff
==============================================================================
--- tomcat/tc6.0.x/trunk/res/tomcat.nsi (original)
+++ tomcat/tc6.0.x/trunk/res/tomcat.nsi Thu Aug  4 10:19:50 2011
@@ -45,7 +45,15 @@ Var JavaExe
 Var JvmDll
 Var Arch
 Var ResetInstDir
-Var TomcatPort
+Var TomcatPortShutdown
+Var TomcatPortHttp
+Var TomcatPortAjp
+Var TomcatMenuEntriesEnable
+Var TomcatShortcutAllUsers
+Var TomcatServiceName
+Var TomcatServiceDefaultName
+Var TomcatServiceFileName
+Var TomcatServiceManagerFileName
 Var TomcatAdminEnable
 Var TomcatAdminUsername
 Var TomcatAdminPassword
@@ -53,7 +61,11 @@ Var TomcatAdminRoles
 
 ; Variables that store handles of dialog controls
 Var CtlJavaHome
-Var CtlTomcatPort
+Var CtlTomcatPortShutdown
+Var CtlTomcatPortHttp
+Var CtlTomcatPortAjp
+Var CtlTomcatServiceName
+Var CtlTomcatShortcutAllUsers
 Var CtlTomcatAdminUsername
 Var CtlTomcatAdminPassword
 Var CtlTomcatAdminRoles
@@ -70,8 +82,8 @@ Var ServiceInstallLog
   !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\tomcat@version_ma...@w.exe
-  !define MUI_FINISHPAGE_RUN_PARAMETERS //MR//Tomcat@VERSION_MAJOR@
+  !define MUI_FINISHPAGE_RUN
+  !define MUI_FINISHPAGE_RUN_FUNCTION "startService"
   !define MUI_FINISHPAGE_NOREBOOTSUPPORT
 
   !define MUI_ABORTWARNING
@@ -87,12 +99,17 @@ Var ServiceInstallLog
   LangString TEXT_JVM_SUBTITLE ${LANG_ENGLISH} "Java Virtual Machine path 
selection."
   LangString TEXT_JVM_PAGETITLE ${LANG_ENGLISH} ": Java Virtual Machine path 
selection"
 
+  LangString TEXT_INSTDIR_NOT_EMPTY ${LANG_ENGLISH} "The specified 
installation directory is not empty. Do you wish to continue?"
   LangString TEXT_CONF_TITLE ${LANG_ENGLISH} "Configuration"
   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_PORT_SHUTDOWN ${LANG_ENGLISH} "Server Shutdown 
Port"
+  LangString TEXT_CONF_LABEL_PORT_HTTP ${LANG_ENGLISH} "HTTP/1.1 Connector 
Port"
+  LangString TEXT_CONF_LABEL_PORT_AJP ${LANG_ENGLISH} "AJP/1.3 Connector Port"
+  LangString TEXT_CONF_LABEL_SERVICE_NAME ${LANG_ENGLISH} "Windows Service 
Name"
+  LangString TEXT_CONF_LABEL_SHORTCUT_ALL_USERS ${LANG_ENGLISH} "Create 
shortcuts for all users"
   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"
@@ -106,6 +123,7 @@ Var ServiceInstallLog
   !insertmacro MUI_PAGE_COMPONENTS
   Page custom pageConfiguration pageConfigurationLeave "$(TEXT_CONF_PAGETITLE)"
   Page custom pageChooseJVM pageChooseJVMLeave "$(TEXT_JVM_PAGETITLE)"
+  !define MUI_PAGE_CUSTOMFUNCTION_LEAVE pageDirectoryLeave
   !insertmacro MUI_PAGE_DIRECTORY
   !insertmacro MUI_PAGE_INSTFILES
   Page custom CheckUserType
@@ -138,13 +156,8 @@ Var ServiceInstallLog
   InstType Minimum
   InstType Full
 
-  ; Main registry key
-  InstallDirRegKey HKLM "SOFTWARE\Apache Software 
Foundation\Tomcat\@VERSION_MAJOR_MINOR@" ""
-
   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
 
@@ -183,33 +196,37 @@ Section "Core" SecTomcatCore
 
   DetailPrint "Using Jvm: $JavaHome"
 
+  StrCpy $R0 $TomcatServiceName
+  StrCpy $TomcatServiceFileName $R0.exe
+  StrCpy $TomcatServiceManagerFileName $R0w.exe
+
   SetOutPath $INSTDIR\bin
-  File bin\tomcat@version_ma...@w.exe
+  File /oname=$TomcatServiceManagerFileName bin\tomcat@version_ma...@w.exe
 
   ; Get the current platform x86 / AMD64 / IA64
   ${If} $Arch == "x86"
-    File /oname=tomcat@VERSION_MAJOR@.exe bin\tomcat@VERSION_MAJOR@.exe
+    File /oname=$TomcatServiceFileName bin\tomcat@VERSION_MAJOR@.exe
   ${ElseIf} $Arch == "x64"
-    File /oname=tomcat@VERSION_MAJOR@.exe bin\x64\tomcat@VERSION_MAJOR@.exe
+    File /oname=$TomcatServiceFileName bin\x64\tomcat@VERSION_MAJOR@.exe
   ${ElseIf} $Arch == "i64"
-    File /oname=tomcat@VERSION_MAJOR@.exe bin\i64\tomcat@VERSION_MAJOR@.exe
+    File /oname=$TomcatServiceFileName bin\i64\tomcat@VERSION_MAJOR@.exe
   ${EndIf}
 
   FileOpen $ServiceInstallLog "$INSTDIR\logs\service-install.log" a
   FileSeek $ServiceInstallLog 0 END
 
   InstallRetry:
-  FileWrite $ServiceInstallLog '"$INSTDIR\bin\tomcat@VERSION_MAJOR@.exe" 
//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@VERSION_MAJOR@.exe" 
--Jvm "$JvmDll" --StartPath "$INSTDIR" --StopPath "$INSTDIR"'
+  FileWrite $ServiceInstallLog '"$INSTDIR\bin\$TomcatServiceFileName" 
//IS//$TomcatServiceName --DisplayName "Apache Tomcat @VERSION_MAJOR_MINOR@ 
$TomcatServiceName" --Description "Apache Tomcat @VERSION@ Server - 
http://tomcat.apache.org/"; --LogPath "$INSTDIR\logs" --Install 
"$INSTDIR\bin\$TomcatServiceFileName" --Jvm "$JvmDll" --StartPath "$INSTDIR" 
--StopPath "$INSTDIR"'
   FileWrite $ServiceInstallLog "$\r$\n"
   ClearErrors
-  DetailPrint "Installing Tomcat@VERSION_MAJOR@ service"
-  nsExec::ExecToStack '"$INSTDIR\bin\tomcat@VERSION_MAJOR@.exe" 
//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@VERSION_MAJOR@.exe" 
--Jvm "$JvmDll" --StartPath "$INSTDIR" --StopPath "$INSTDIR"'
+  DetailPrint "Installing $TomcatServiceName service"
+  nsExec::ExecToStack '"$INSTDIR\bin\$TomcatServiceFileName" 
//IS//$TomcatServiceName --DisplayName "Apache Tomcat @VERSION_MAJOR_MINOR@ 
$TomcatServiceName" --Description "Apache Tomcat @VERSION@ Server - 
http://tomcat.apache.org/"; --LogPath "$INSTDIR\logs" --Install 
"$INSTDIR\bin\$TomcatServiceFileName" --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 Tomcat@VERSION_MAJOR@ service.$\r$\nCheck your 
settings and permissions.$\r$\nIgnore and continue anyway (not recommended)?" \
+      "Failed to install $TomcatServiceName service.$\r$\nCheck your settings 
and permissions.$\r$\nIgnore and continue anyway (not recommended)?" \
        /SD IDIGNORE IDIGNORE InstallOk IDRETRY InstallRetry
   Quit
   InstallOk:
@@ -224,13 +241,11 @@ Section "Service Startup" SecTomcatServi
   SectionIn 3
 
   ${If} $ServiceInstallLog != ""
-    FileWrite $ServiceInstallLog '"$INSTDIR\bin\tomcat@VERSION_MAJOR@.exe" 
//US//Tomcat@VERSION_MAJOR@ --Startup auto'
+    FileWrite $ServiceInstallLog '"$INSTDIR\bin\$TomcatServiceFileName" 
//US//$TomcatServiceName --Startup auto'
     FileWrite $ServiceInstallLog "$\r$\n"
   ${EndIf}
-  DetailPrint "Configuring Tomcat@VERSION_MAJOR@ service"
-  nsExec::ExecToLog '"$INSTDIR\bin\tomcat@VERSION_MAJOR@.exe" 
//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\tomcat@version_ma...@w.exe" 
//MS//Tomcat@VERSION_MAJOR@'
+  DetailPrint "Configuring $TomcatServiceName service"
+  nsExec::ExecToLog '"$INSTDIR\bin\$TomcatServiceFileName" 
//US//$TomcatServiceName --Startup auto'
 
   ClearErrors
 
@@ -260,7 +275,6 @@ Section "Start Menu Items" SecMenu
 
   SectionIn 1 2 3
 
-  Call createShortcuts
 SectionEnd
 
 Section "Documentation" SecDocs
@@ -303,28 +317,40 @@ SectionEnd
 
 Section -post
   ${If} $ServiceInstallLog != ""
-    FileWrite $ServiceInstallLog '"$INSTDIR\bin\tomcat@VERSION_MAJOR@.exe" 
//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 '"$INSTDIR\bin\$TomcatServiceFileName" 
//US//$TomcatServiceName --Classpath 
"$INSTDIR\bin\bootstrap.jar;$INSTDIR\bin\tomcat-juli.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@VERSION_MAJOR@.exe" 
//US//Tomcat@VERSION_MAJOR@ --JvmOptions 
"-Dcatalina.home=$INSTDIR#-Dcatalina.base=$INSTDIR#-Djava.endorsed.dirs=$INSTDIR\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 '"$INSTDIR\bin\$TomcatServiceFileName" 
//US//$TomcatServiceName --JvmOptions 
"-Dcatalina.home=$INSTDIR#-Dcatalina.base=$INSTDIR#-Djava.endorsed.dirs=$INSTDIR\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@VERSION_MAJOR@.exe" 
//US//Tomcat@VERSION_MAJOR@ --StdOutput auto --StdError auto'
+    FileWrite $ServiceInstallLog '"$INSTDIR\bin\$TomcatServiceFileName" 
//US//$TomcatServiceName --StdOutput auto --StdError auto'
     FileWrite $ServiceInstallLog "$\r$\n"
     FileClose $ServiceInstallLog
   ${EndIf}
 
-  DetailPrint "Configuring Tomcat@VERSION_MAJOR@ service"
-  nsExec::ExecToLog '"$INSTDIR\bin\tomcat@VERSION_MAJOR@.exe" 
//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@VERSION_MAJOR@.exe" 
//US//Tomcat@VERSION_MAJOR@ --JvmOptions 
"-Dcatalina.home=$INSTDIR#-Dcatalina.base=$INSTDIR#-Djava.endorsed.dirs=$INSTDIR\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@VERSION_MAJOR@.exe" 
//US//Tomcat@VERSION_MAJOR@ --StdOutput auto --StdError auto'
+  DetailPrint "Configuring $TomcatServiceName service"
+  nsExec::ExecToLog '"$INSTDIR\bin\$TomcatServiceFileName" 
//US//$TomcatServiceName --Classpath 
"$INSTDIR\bin\bootstrap.jar;$INSTDIR\bin\tomcat-juli.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\$TomcatServiceFileName" 
//US//$TomcatServiceName --JvmOptions 
"-Dcatalina.home=$INSTDIR#-Dcatalina.base=$INSTDIR#-Djava.endorsed.dirs=$INSTDIR\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\$TomcatServiceFileName" 
//US//$TomcatServiceName --StdOutput auto --StdError auto'
+
+  ${If} $TomcatShortcutAllUsers == "1"
+    WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Run" 
"ApacheTomcatMonitor@VERSION_MAJOR_MINOR@_$TomcatServiceName" 
'"$INSTDIR\bin\$TomcatServiceManagerFileName" //MS//$TomcatServiceName'
+  ${Else}
+    WriteRegStr HKCU "Software\Microsoft\Windows\CurrentVersion\Run" 
"ApacheTomcatMonitor@VERSION_MAJOR_MINOR@_$TomcatServiceName" 
'"$INSTDIR\bin\$TomcatServiceManagerFileName" //MS//$TomcatServiceName'
+  ${EndIf}
+  
+  ${If} $TomcatMenuEntriesEnable == "1"
+    Call createShortcuts
+  ${EndIf}
 
   WriteUninstaller "$INSTDIR\Uninstall.exe"
 
-  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"'
+  WriteRegStr HKLM "SOFTWARE\Apache Software 
Foundation\Tomcat\@VERSION_MAJOR_MINOR@\$TomcatServiceName" "InstallPath" 
$INSTDIR
+  WriteRegStr HKLM "SOFTWARE\Apache Software 
Foundation\Tomcat\@VERSION_MAJOR_MINOR@\$TomcatServiceName" "Version" @VERSION@
+  WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Apache 
Tomcat @VERSION_MAJOR_MINOR@ $TomcatServiceName" \
+                   "DisplayName" "Apache Tomcat @VERSION_MAJOR_MINOR@ 
$TomcatServiceName (remove only)"
+  WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Apache 
Tomcat @VERSION_MAJOR_MINOR@ $TomcatServiceName" \
+                   "DisplayIcon" "$\"$INSTDIR\tomcat.ico$\""
+  WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Apache 
Tomcat @VERSION_MAJOR_MINOR@ $TomcatServiceName" \
+                   "UninstallString" "$\"$INSTDIR\Uninstall.exe$\" 
-ServiceName=$\"$TomcatServiceName$\""
 
 SectionEnd
 
@@ -345,7 +371,15 @@ Function .onInit
 
   ;Initialize default values
   StrCpy $JavaHome ""
-  StrCpy $TomcatPort "8080"
+  StrCpy $TomcatPortShutdown "8005"
+  StrCpy $TomcatPortHttp "8080"
+  StrCpy $TomcatPortAjp "8009"
+  StrCpy $TomcatMenuEntriesEnable "0"
+  StrCpy $TomcatShortcutAllUsers "0"
+  StrCpy $TomcatServiceDefaultName "Tomcat@VERSION_MAJOR@"
+  StrCpy $TomcatServiceName $TomcatServiceDefaultName
+  StrCpy $TomcatServiceFileName "Tomcat@VERSION_MAJOR@.exe"
+  StrCpy $TomcatServiceManagerFileName "Tomcat@version_ma...@w.exe"
   StrCpy $TomcatAdminEnable "0"
   StrCpy $TomcatAdminUsername ""
   StrCpy $TomcatAdminPassword ""
@@ -403,6 +437,7 @@ FunctionEnd
 Function pageComponentsLeave
   StrCpy $TomcatAdminEnable "0"
   StrCpy $TomcatAdminRoles ""
+  StrCpy $TomcatMenuEntriesEnable "0"
 
   SectionGetFlags ${SecManager} $0
   IntOp $0 $0 & ${SF_SELECTED}
@@ -421,6 +456,24 @@ Function pageComponentsLeave
       StrCpy $TomcatAdminRoles "admin-gui"
     ${EndIf}
   ${EndIf}
+  
+  SectionGetFlags ${SecMenu} $0
+  IntOp $0 $0 & ${SF_SELECTED}
+  ${If} $0 <> 0
+    StrCpy $TomcatMenuEntriesEnable "1"
+  ${EndIf}
+FunctionEnd
+
+Function pageDirectoryLeave
+  ${DirState} "$INSTDIR" $0
+  ${If} $0 == 1 ;folder is full. (other values: 0: empty, -1: not found)
+    ;query selection
+    MessageBox MB_OKCANCEL|MB_ICONQUESTION "$(TEXT_INSTDIR_NOT_EMPTY)" /SD 
IDOK IDCANCEL notok
+    Goto ok
+    notok:
+    Abort
+    ok:
+  ${EndIf}
 FunctionEnd
 
 Function pageConfiguration
@@ -429,50 +482,147 @@ Function pageConfiguration
   nsDialogs::Create 1018
   Pop $R0
 
-  ${NSD_CreateLabel} 0 5u 100u 15u "$(TEXT_CONF_LABEL_PORT)"
+  ${NSD_CreateLabel} 0 2u 100u 14u "$(TEXT_CONF_LABEL_PORT_SHUTDOWN)"
+  Pop $R0
+
+  ${NSD_CreateText} 150u 0 50u 12u "$TomcatPortShutdown"
+  Pop $CtlTomcatPortShutdown
+  ${NSD_SetTextLimit} $CtlTomcatPortShutdown 5
+
+  ${NSD_CreateLabel} 0 19u 100u 14u "$(TEXT_CONF_LABEL_PORT_HTTP)"
   Pop $R0
 
-  ${NSD_CreateText} 150u 5u 50u 13u "$TomcatPort"
-  Pop $CtlTomcatPort
-  ${NSD_SetTextLimit} $CtlTomcatPort 5
+  ${NSD_CreateText} 150u 17u 50u 12u "$TomcatPortHttp"
+  Pop $CtlTomcatPortHttp
+  ${NSD_SetTextLimit} $CtlTomcatPortHttp 5
+
+  ${NSD_CreateLabel} 0 36u 100u 14u "$(TEXT_CONF_LABEL_PORT_AJP)"
+  Pop $R0
+
+  ${NSD_CreateText} 150u 34u 50u 12u "$TomcatPortAjp"
+  Pop $CtlTomcatPortAjp
+  ${NSD_SetTextLimit} $CtlTomcatPortAjp 5
+
+  ${NSD_CreateLabel} 0 57u 140u 14u "$(TEXT_CONF_LABEL_SERVICE_NAME)"
+  Pop $R0
+
+  ${NSD_CreateText} 150u 55u 140u 12u "$TomcatServiceName"
+  Pop $CtlTomcatServiceName
+
+  ${If} $TomcatMenuEntriesEnable == "1"
+    ${NSD_CreateLabel} 0 75u 100u 14u "$(TEXT_CONF_LABEL_SHORTCUT_ALL_USERS)"
+    Pop $R0
+    ${NSD_CreateCheckBox} 150u 74u 10u 10u "$TomcatShortcutAllUsers"
+    Pop $CtlTomcatShortcutAllUsers
+  ${EndIf}
 
   ${If} $TomcatAdminEnable == "1"
-    ${NSD_CreateLabel} 0 30u 100% 15u "$(TEXT_CONF_LABEL_ADMIN)"
+    ${NSD_CreateLabel} 0 93u 90u 28u "$(TEXT_CONF_LABEL_ADMIN)"
     Pop $R0
-    ${NSD_CreateLabel} 10u 50u 140u 15u "$(TEXT_CONF_LABEL_ADMINUSERNAME)"
+    ${NSD_CreateLabel} 100u 93u 40u 14u "$(TEXT_CONF_LABEL_ADMINUSERNAME)"
     Pop $R0
-    ${NSD_CreateText} 150u 50u 110u 13u "$TomcatAdminUsername"
+    ${NSD_CreateText} 150u 91u 110u 12u "$TomcatAdminUsername"
     Pop $CtlTomcatAdminUsername
-    ${NSD_CreateLabel} 10u 70u 140u 15u "$(TEXT_CONF_LABEL_ADMINPASSWORD)"
+    ${NSD_CreateLabel} 100u 110u 40u 12u "$(TEXT_CONF_LABEL_ADMINPASSWORD)"
     Pop $R0
-    ${NSD_CreatePassword} 150u 70u 110u 13u "$TomcatAdminPassword"
+    ${NSD_CreatePassword} 150u 108u 110u 12u "$TomcatAdminPassword"
     Pop $CtlTomcatAdminPassword
-    ${NSD_CreateLabel} 10u 90u 140u 15u "$(TEXT_CONF_LABEL_ADMINROLES)"
+    ${NSD_CreateLabel} 100u 127u 40u 14u "$(TEXT_CONF_LABEL_ADMINROLES)"
     Pop $R0
-    ${NSD_CreateText} 150u 90u 110u 13u "$TomcatAdminRoles"
+    ${NSD_CreateText} 150u 125u 110u 12u "$TomcatAdminRoles"
     Pop $CtlTomcatAdminRoles
   ${EndIf}
 
-  ${NSD_SetFocus} $CtlTomcatPort
+  ${NSD_SetFocus} $CtlTomcatPortShutdown
   nsDialogs::Show
 FunctionEnd
 
 Function pageConfigurationLeave
-  ${NSD_GetText} $CtlTomcatPort $TomcatPort
+  ${NSD_GetText} $CtlTomcatPortShutdown $TomcatPortShutdown
+  ${NSD_GetText} $CtlTomcatPortHttp $TomcatPortHttp
+  ${NSD_GetText} $CtlTomcatPortAjp $TomcatPortAjp
+  ${NSD_GetText} $CtlTomcatServiceName $TomcatServiceName
+  ${If} $TomcatMenuEntriesEnable == "1"
+    ${NSD_GetState} $CtlTomcatShortcutAllUsers $TomcatShortcutAllUsers
+  ${EndIf}
   ${If} $TomcatAdminEnable == "1"
     ${NSD_GetText} $CtlTomcatAdminUsername $TomcatAdminUsername
     ${NSD_GetText} $CtlTomcatAdminPassword $TomcatAdminPassword
     ${NSD_GetText} $CtlTomcatAdminRoles $TomcatAdminRoles
   ${EndIf}
+
+  ${If} $TomcatPortShutdown == ""
+    MessageBox MB_ICONEXCLAMATION|MB_OK 'The shutdown port may not be empty'
+    Abort "Config not right"
+    Goto exit
+  ${EndIf}
+
+  ${If} $TomcatPortHttp == ""
+    MessageBox MB_ICONEXCLAMATION|MB_OK 'The HTTP port may not be empty'
+    Abort "Config not right"
+    Goto exit
+  ${EndIf}
+
+  ${If} $TomcatPortAjp == ""
+    MessageBox MB_ICONEXCLAMATION|MB_OK 'The AJP port may not be empty'
+    Abort "Config not right"
+    Goto exit
+  ${EndIf}
+
+  ${If} $TomcatServiceName == ""
+    MessageBox MB_ICONEXCLAMATION|MB_OK 'The Service Name may not be empty'
+    Abort "Config not right"
+    Goto exit
+  ${EndIf}
+
+  Push $TomcatServiceName
+  Call validateServiceName
+  Pop $0
+  
+  IntCmp $0 1 exit
+  MessageBox MB_ICONEXCLAMATION|MB_OK 'The Service Name may not contain a 
space or any of the following characters: <>:"/\:|?*'
+  Abort "Config not right"
+  exit:
 FunctionEnd
 
-; Not used
-;Function Void
-;FunctionEnd
+; Validates that a service name does not use any of the invalid
+; characters: <>:"/\:|?*
+; Note that space is also not permitted although it will be once
+; Tomcat is using Daemon 1.0.6 or later
+;
+; Put the proposed service name on the stack
+; If the name is valid, a 1 will be left on the stack
+; If the name is invalid, a 0 will be left on the stack
+Function validateServiceName
+  Pop $0
+  StrLen $1 $0
+  StrCpy $3 '<>:"/\:|?* '
+  StrLen $4 $3
+  
+  loopInput:
+    IntOp $1 $1 - 1
+    IntCmp $1 -1 valid
+    loopTestChars:
+      IntOp $4 $4 - 1
+      IntCmp $4 -1 loopTestCharsDone
+      StrCpy $2 $0 1 $1
+      StrCpy $5 $3 1 $4
+      StrCmp $2 $5 invalid loopTestChars
+    loopTestCharsDone:
+    StrLen $4 $3
+    Goto loopInput
+
+  invalid:
+  Push 0
+  Goto exit
+  
+  valid:
+  Push 1
+  exit:
+FunctionEnd
 
 ;--------------------------------
 ;Descriptions
-
 !insertmacro MUI_FUNCTION_DESCRIPTION_BEGIN
   !insertmacro MUI_DESCRIPTION_TEXT ${SecTomcat} $(DESC_SecTomcat)
   !insertmacro MUI_DESCRIPTION_TEXT ${SecTomcatCore} $(DESC_SecTomcatCore)
@@ -614,9 +764,17 @@ DonePEHeader:
   ; 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@"
+      ${If} $TomcatServiceName == $TomcatServiceDefaultName
+        StrCpy $INSTDIR "$PROGRAMFILES32\Apache Software Foundation\Tomcat 
@VERSION_MAJOR_MINOR@"
+      ${Else}
+        StrCpy $INSTDIR "$PROGRAMFILES32\Apache Software Foundation\Tomcat 
@VERSION_MAJOR_MINOR@_$TomcatServiceName"
+      ${EndIf}
     ${Else}
-      StrCpy $INSTDIR "$PROGRAMFILES64\Apache Software Foundation\Tomcat 
@VERSION_MAJOR_MINOR@"
+      ${If} $TomcatServiceName == $TomcatServiceDefaultName
+        StrCpy $INSTDIR "$PROGRAMFILES64\Apache Software Foundation\Tomcat 
@VERSION_MAJOR_MINOR@"
+      ${Else}
+        StrCpy $INSTDIR "$PROGRAMFILES64\Apache Software Foundation\Tomcat 
@VERSION_MAJOR_MINOR@_$TomcatServiceName"
+      ${EndIf}
     ${EndIf}
   ${EndIf}
 
@@ -634,24 +792,38 @@ FunctionEnd
 Function findJavaHome
 
   ClearErrors
+  StrCpy $1 ""
 
-  ; Use the 64-bit registry on 64-bit machines
+  ; Use the 64-bit registry first on 64-bit machines
   ExpandEnvStrings $0 "%PROGRAMW6432%"
   ${If} $0 != "%PROGRAMW6432%"
     SetRegView 64
+    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"
+
+    IfErrors 0 +2
+    StrCpy $1 ""
+    ClearErrors
+  ${EndIf}
+
+  ; If no 64-bit Java was found, look for 32-bit Java
+  ${If} $1 == ""
+    SetRegView 32
+    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"
+
+    IfErrors 0 +2
+    StrCpy $1 ""
+    ClearErrors
+    
+    ; If using 64-bit, go back to using 64-bit registry
+    ${If} $0 != "%PROGRAMW6432%"
+      SetRegView 64
+    ${EndIf}
   ${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"
-
-  IfErrors 0 NoErrors
-  StrCpy $1 ""
-
-NoErrors:
-
-  ClearErrors
-
   ; Put the result in the stack
   Push $1
 
@@ -719,7 +891,38 @@ FunctionEnd
 ; Writes server.xml and tomcat-users.xml
 ;
 Function configure
-  StrCpy $R4 'port="$TomcatPort"'
+  ; Build final server.xml
+  DetailPrint "Creating server.xml.new"
+
+  FileOpen $R1 "$INSTDIR\conf\server.xml" r
+  FileOpen $R2 "$INSTDIR\conf\server.xml.new" w
+
+  SERVER_XML_LOOP:
+    FileRead $R1 $R3
+    IfErrors SERVER_XML_LEAVELOOP
+    ${StrRep} $R4 $R3 "8005" "$TomcatPortShutdown"
+    ${StrRep} $R3 $R4 "8080" "$TomcatPortHttp"
+    ${StrRep} $R4 $R3 "8009" "$TomcatPortAjp"
+    FileWrite $R2 $R4
+  Goto SERVER_XML_LOOP
+  SERVER_XML_LEAVELOOP:
+
+  FileClose $R1
+  FileClose $R2
+
+  ; Replace server.xml with server.xml.new
+  Delete "$INSTDIR\conf\server.xml"
+  FileOpen $R9 "$INSTDIR\conf\server.xml" w
+  Push "$INSTDIR\conf\server.xml.new"
+  Call copyFile
+  FileClose $R9
+  Delete "$INSTDIR\conf\server.xml.new"
+  
+  DetailPrint 'Server shutdown listener configured on port 
"$TomcatPortShutdown"'
+  DetailPrint 'HTTP/1.1 Connector configured on port "$TomcatPortHttp"'
+  DetailPrint 'AJP/1.3 Connector configured on port "$TomcatPortAjp"'
+  DetailPrint "server.xml written"
+
   StrCpy $R5 ''
 
   ${If} $TomcatAdminEnable == "1"
@@ -740,31 +943,14 @@ Function configure
     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 "$PLUGINSDIR\server_1.xml"
-  Call copyFile
-  FileWrite $R9 $R4
-  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"
@@ -786,8 +972,6 @@ Function configure
   FileClose $R9
   DetailPrint "tomcat-users.xml written"
 
-  Delete "$PLUGINSDIR\server_1.xml"
-  Delete "$PLUGINSDIR\server_2.xml"
   Delete "$PLUGINSDIR\tomcat-users_1.xml"
   Delete "$PLUGINSDIR\tomcat-users_2.xml"
 FunctionEnd
@@ -837,74 +1021,108 @@ 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@"
+  ${If} $TomcatShortcutAllUsers == ${BST_CHECKED}
+    SetShellVarContext all
+  ${EndIf}
+  
+  SetOutPath "$SMPROGRAMS\Apache Tomcat @VERSION_MAJOR_MINOR@ 
$TomcatServiceName"
 
-  CreateShortCut "$SMPROGRAMS\Apache Tomcat @VERSION_MAJOR_MINOR@\Tomcat Home 
Page.lnk" \
+  CreateShortCut "$SMPROGRAMS\Apache Tomcat @VERSION_MAJOR_MINOR@ 
$TomcatServiceName\Tomcat Home Page.lnk" \
                  "http://tomcat.apache.org/";
 
-  CreateShortCut "$SMPROGRAMS\Apache Tomcat @VERSION_MAJOR_MINOR@\Welcome.lnk" 
\
-                 "http://127.0.0.1:$TomcatPort/";
+  CreateShortCut "$SMPROGRAMS\Apache Tomcat @VERSION_MAJOR_MINOR@ 
$TomcatServiceName\Welcome.lnk" \
+                 "http://127.0.0.1:$TomcatPortHttp/";
 
   ${If} ${SectionIsSelected} ${SecManager}
-    CreateShortCut "$SMPROGRAMS\Apache Tomcat @VERSION_MAJOR_MINOR@\Tomcat 
Manager.lnk" \
-                   "http://127.0.0.1:$TomcatPort/manager/html";
+    CreateShortCut "$SMPROGRAMS\Apache Tomcat @VERSION_MAJOR_MINOR@ 
$TomcatServiceName\Tomcat Manager.lnk" \
+                   "http://127.0.0.1:$TomcatPortHttp/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";
+    CreateShortCut "$SMPROGRAMS\Apache Tomcat @VERSION_MAJOR_MINOR@ 
$TomcatServiceName\Tomcat Host Manager.lnk" \
+                   "http://127.0.0.1:$TomcatPortHttp/host-manager/html";
   ${EndIf}
 
   ${If} ${SectionIsSelected} ${SecDocs}
-    CreateShortCut "$SMPROGRAMS\Apache Tomcat @VERSION_MAJOR_MINOR@\Tomcat 
Documentation.lnk" \
+    CreateShortCut "$SMPROGRAMS\Apache Tomcat @VERSION_MAJOR_MINOR@ 
$TomcatServiceName\Tomcat Documentation.lnk" \
                    "$INSTDIR\webapps\docs\index.html"
   ${EndIf}
 
-  CreateShortCut "$SMPROGRAMS\Apache Tomcat @VERSION_MAJOR_MINOR@\Uninstall 
Tomcat @VERSION_MAJOR_MINOR@.lnk" \
-                 "$INSTDIR\Uninstall.exe"
+  CreateShortCut "$SMPROGRAMS\Apache Tomcat @VERSION_MAJOR_MINOR@ 
$TomcatServiceName\Uninstall Tomcat @VERSION_MAJOR_MINOR@.lnk" \
+                 "$INSTDIR\Uninstall.exe" '-ServiceName="$TomcatServiceName"'
 
-  CreateShortCut "$SMPROGRAMS\Apache Tomcat @VERSION_MAJOR_MINOR@\Tomcat 
@VERSION_MAJOR_MINOR@ Program Directory.lnk" \
+  CreateShortCut "$SMPROGRAMS\Apache Tomcat @VERSION_MAJOR_MINOR@ 
$TomcatServiceName\Tomcat @VERSION_MAJOR_MINOR@ Program Directory.lnk" \
                  "$INSTDIR"
 
-  CreateShortCut "$SMPROGRAMS\Apache Tomcat @VERSION_MAJOR_MINOR@\Monitor 
Tomcat.lnk" \
-                 "$INSTDIR\bin\tomcat@version_ma...@w.exe" \
-                 '//MS//Tomcat@VERSION_MAJOR@' \
+  CreateShortCut "$SMPROGRAMS\Apache Tomcat @VERSION_MAJOR_MINOR@ 
$TomcatServiceName\Monitor Tomcat.lnk" \
+                 "$INSTDIR\bin\$TomcatServiceManagerFileName" \
+                 '//MS//$TomcatServiceName' \
                  "$INSTDIR\tomcat.ico" 0 SW_SHOWNORMAL
 
-  CreateShortCut "$SMPROGRAMS\Apache Tomcat @VERSION_MAJOR_MINOR@\Configure 
Tomcat.lnk" \
-                 "$INSTDIR\bin\tomcat@version_ma...@w.exe" \
-                 '//ES//Tomcat@VERSION_MAJOR@' \
+  CreateShortCut "$SMPROGRAMS\Apache Tomcat @VERSION_MAJOR_MINOR@ 
$TomcatServiceName\Configure Tomcat.lnk" \
+                 "$INSTDIR\bin\$TomcatServiceManagerFileName" \
+                 '//ES//$TomcatServiceName' \
                  "$INSTDIR\tomcat.ico" 0 SW_SHOWNORMAL
 
+  ${If} $TomcatShortcutAllUsers == ${BST_CHECKED}
+    SetShellVarContext current
+  ${EndIf}
+
+FunctionEnd
+
+; =================
+; startService Function
+;
+; Using a function allows the service name to be varied
+; =================
+Function startService
+  ExecShell "" "$INSTDIR\bin\$TomcatServiceManagerFileName" 
"//MR//$TomcatServiceName"
 FunctionEnd
 
+
 ;--------------------------------
 ;Uninstaller Section
 
 Section Uninstall
 
+  ${If} $TomcatServiceName == ""
+    MessageBox MB_ICONSTOP|MB_OK \
+        "No service name specified to uninstall. This will be provided 
automatically if you uninstall via \
+         Add/Remove Programs or the shortcut on the Start menu. Alternatively, 
call the installer from \
+         the command line with -serviceName=$\"<name of service>$\"."
+    Quit
+  ${EndIf}
+  
   Delete "$INSTDIR\Uninstall.exe"
 
   ; Stop Tomcat service monitor if running
-  DetailPrint "Stopping Tomcat@VERSION_MAJOR@ service monitor"
-  nsExec::ExecToLog '"$INSTDIR\bin\tomcat@version_ma...@w.exe" 
//MQ//Tomcat@VERSION_MAJOR@'
+  DetailPrint "Stopping $TomcatServiceName service monitor"
+  nsExec::ExecToLog '"$INSTDIR\bin\$TomcatServiceManagerFileName" 
//MQ//$TomcatServiceName'
   ; Delete Tomcat service
-  DetailPrint "Uninstalling Tomcat@VERSION_MAJOR@ service"
-  nsExec::ExecToLog '"$INSTDIR\bin\tomcat@VERSION_MAJOR@.exe" 
//DS//Tomcat@VERSION_MAJOR@'
+  DetailPrint "Uninstalling $TomcatServiceName service"
+  nsExec::ExecToLog '"$INSTDIR\bin\$TomcatServiceFileName" 
//DS//$TomcatServiceName'
   ClearErrors
 
-  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 @VERSION_MAJOR_MINOR@"
+  ; Don't know if 32-bit or 64-bit registry was used so, for now, remove both
+  SetRegView 32
+  DeleteRegKey HKLM 
"SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\Apache Tomcat 
@VERSION_MAJOR_MINOR@ $TomcatServiceName"
+  DeleteRegKey HKLM "SOFTWARE\Apache Software 
Foundation\Tomcat\@VERSION_MAJOR_MINOR@ $TomcatServiceName"
+  DeleteRegValue HKLM "SOFTWARE\Microsoft\Windows\CurrentVersion\Run" 
"ApacheTomcatMonitor@VERSION_MAJOR_MINOR@_$TomcatServiceName"
+  DeleteRegValue HKCU "Software\Microsoft\Windows\CurrentVersion\Run" 
"ApacheTomcatMonitor@VERSION_MAJOR_MINOR@_$TomcatServiceName"
+  SetRegView 64
+  DeleteRegKey HKLM 
"SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\Apache Tomcat 
@VERSION_MAJOR_MINOR@ $TomcatServiceName"
+  DeleteRegKey HKLM "SOFTWARE\Apache Software 
Foundation\Tomcat\@VERSION_MAJOR_MINOR@\$TomcatServiceName"
+  DeleteRegValue HKLM "SOFTWARE\Microsoft\Windows\CurrentVersion\Run" 
"ApacheTomcatMonitor@VERSION_MAJOR_MINOR@_$TomcatServiceName"
+  DeleteRegValue HKCU "Software\Microsoft\Windows\CurrentVersion\Run" 
"ApacheTomcatMonitor@VERSION_MAJOR_MINOR@_$TomcatServiceName"
+
+  ; Don't know if short-cuts were created for all users, one user or not at 
all so, for now, remove both
+  SetShellVarContext all
+  RMDir /r "$SMPROGRAMS\Apache Tomcat @VERSION_MAJOR_MINOR@ $TomcatServiceName"
+  SetShellVarContext current
+  RMDir /r "$SMPROGRAMS\Apache Tomcat @VERSION_MAJOR_MINOR@ $TomcatServiceName"
+
   Delete "$INSTDIR\tomcat.ico"
   Delete "$INSTDIR\LICENSE"
   Delete "$INSTDIR\NOTICE"
@@ -923,7 +1141,7 @@ Section Uninstall
   ; if $INSTDIR was removed, skip these next ones
   IfFileExists "$INSTDIR" 0 Removed
     MessageBox MB_YESNO|MB_ICONQUESTION \
-      "Remove all files in your Tomcat @VERSION_MAJOR_MINOR@ directory? (If 
you have anything  \
+      "Remove all files in your Apache Tomcat @VERSION_MAJOR_MINOR@ 
$TomcatServiceName directory? (If you have anything  \
  you created that you want to keep, click No)" IDNO Removed
     ; these would be skipped if the user hits no
     RMDir /r "$INSTDIR\webapps"
@@ -939,4 +1157,18 @@ Section Uninstall
 
 SectionEnd
 
+
+; =================
+; uninstall init function
+;
+; Read the command line paramater and set up the service name variables so the
+; uninstaller knows which service it is working with
+; =================
+Function un.onInit
+  ${GetParameters} $R0
+  ${GetOPtions} $R0 "-ServiceName=" $R1
+  StrCpy $TomcatServiceName $R1
+  StrCpy $TomcatServiceFileName $R1.exe
+  StrCpy $TomcatServiceManagerFileName $R1w.exe
+FunctionEnd
 ;eof

Modified: tomcat/tc6.0.x/trunk/webapps/docs/changelog.xml
URL: 
http://svn.apache.org/viewvc/tomcat/tc6.0.x/trunk/webapps/docs/changelog.xml?rev=1153828&r1=1153827&r2=1153828&view=diff
==============================================================================
--- tomcat/tc6.0.x/trunk/webapps/docs/changelog.xml (original)
+++ tomcat/tc6.0.x/trunk/webapps/docs/changelog.xml Thu Aug  4 10:19:50 2011
@@ -378,6 +378,14 @@
         At build time use two alternative download locations for components
         downloaded from apache.org. (kkolinko)
       </update>
+      <add>
+        Various improvements to the Windows installer to be able to install
+        several copies of Tomcat 6 side by side. Allow to configure service
+        name, connector and shutdown ports. Allow to choose whether to install
+        Start menu shortcuts and Apache Tomcat monitor application for all
+        users or for the current one only. Improve server.xml file handling.
+        Fix uninstallation icon. (markt/kkolinko)
+      </add>
     </changelog>
   </subsection>
 </section>



---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org
For additional commands, e-mail: dev-h...@tomcat.apache.org

Reply via email to