-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA256 Mark,
On 8/8/19 08:19, ma...@apache.org wrote: > This is an automated email from the ASF dual-hosted git > repository. > > markt pushed a commit to branch master in repository > https://gitbox.apache.org/repos/asf/tomcat.git > > commit 7ac5fc8a59c10e7de1ee6d4b85c1ee797942a1e7 Author: Mark Thomas > <ma...@apache.org> AuthorDate: Thu Aug 8 13:17:29 2019 +0100 > > Fix https://bz.apache.org/bugzilla/show_bug.cgi?id=63285 > > Align the behaviour of service.bat with the Windows installer and > rename the executables on installation (and restore on removal). If I understand this patch, I might need to veto it for Tomcat 9. Changing for TC 10 will be okay. Re-naming the Tomcat .exe files on Windows will be a very surprising change for a point-release. Every installation I've ever worked on has multiple services running off the same Tomcat installation. If any of them is upgraded without adding the "--no-rename" option to an invocation of the service.bat script, all automation will begin to fail. That includes services which *are not* reconfigured because the TomcatX.exe file will be renamed and still referenced in various service definitions. Thanks, - -chris > --- bin/service.bat | 110 > ++++++++++++++++++++++----------- webapps/docs/changelog.xml > | 9 +++ webapps/docs/windows-service-howto.xml | 14 ++++- 3 > files changed, 94 insertions(+), 39 deletions(-) > > diff --git a/bin/service.bat b/bin/service.bat index > 5d9e053..6105b15 100755 --- a/bin/service.bat +++ > b/bin/service.bat @@ -17,7 +17,7 @@ rem limitations under the > License. rem > ---------------------------------------------------------------------- - ----- > > rem NT Service Install/Uninstall script > rem -rem Usage: service.bat install/remove [service_name] [/user > username] +rem Usage: service.bat install/remove [service_name > [--no-rename]] [--user username] rem rem Options rem install > Install the service using default settings. @@ -26,7 +26,10 @@ rem > rem service_name (optional) The name to use for the service. If not > specified, rem Tomcat@VERSION_MAJOR@ is > used as the service name. rem -rem username (optional) The name > of the OS user to use to install/remove +rem --no-rename > (optional) Don't rename tomcat@VERSION_MAJOR@.exe and > tomcat@version_ma...@w.exe to match +rem > the non-default service name. +rem +rem username (optional) The > name of the OS user to use to install/remove rem > the service (not the name of the OS user the rem > service will run as). If not specified, the current rem > user is used. @@ -35,21 +38,70 @@ rem > ---------------------------------------------------------------------- - ----- > > setlocal > > set "SELF=%~dp0%service.bat" -rem Guess CATALINA_HOME if not > defined + +set DEFAULT_SERVICE_NAME=Tomcat@VERSION_MAJOR@ +set > SERVICE_NAME=%DEFAULT_SERVICE_NAME% + set "CURRENT_DIR=%cd%" + +rem > Parse the arguments +if "x%1x" == "xx" goto displayUsage +set > SERVICE_CMD=%1 +shift +if "x%1x" == "xx" goto checkEnv +:checkUser > +if "x%1x" == "x/userx" goto runAsUser +if "x%1x" == "x--userx" > goto runAsUser +set SERVICE_NAME=%1 +shift +if "x%1x" == "xx" goto > checkEnv +if "x%1x" == "x--no-renamex" ( + set NO_RENAME=%1 + > shift +) +if "x%1x" == "xx" goto checkEnv +goto checkUser > +:runAsUser +shift +if "x%1x" == "xx" goto displayUsage +set > SERVICE_USER=%1 +shift +runas /env /savecred /user:%SERVICE_USER% > "%COMSPEC% /K \"%SELF%\" %SERVICE_CMD% %SERVICE_NAME%" +goto end + > +rem Check the environment +:checkEnv + +rem Guess CATALINA_HOME if > not defined if not "%CATALINA_HOME%" == "" goto gotHome set > "CATALINA_HOME=%cd%" -if exist > "%CATALINA_HOME%\bin\tomcat@VERSION_MAJOR@.exe" goto okHome +if > exist "%CATALINA_HOME%\bin\%DEFAULT_SERVICE_NAME%.exe" goto okHome > +if exist "%CATALINA_HOME%\bin\%SERVICE_NAME%.exe" goto okHome rem > CD to the upper dir cd .. set "CATALINA_HOME=%cd%" :gotHome -if > exist "%CATALINA_HOME%\bin\tomcat@VERSION_MAJOR@.exe" goto okHome > -echo The tomcat@VERSION_MAJOR@.exe was not found... -echo The > CATALINA_HOME environment variable is not defined correctly. -echo > This environment variable is needed to run this program +if exist > "%CATALINA_HOME%\bin\%DEFAULT_SERVICE_NAME%.exe" ( + set > "EXECUTABLE=%CATALINA_HOME%\bin\%DEFAULT_SERVICE_NAME%.exe" + > goto okHome +) +if exist "%CATALINA_HOME%\bin\%SERVICE_NAME%.exe" > ( + set "EXECUTABLE=%CATALINA_HOME%\bin\%SERVICE_NAME%.exe" + > goto okHome +) +if "%DEFAULT_SERVICE_NAME%"== "%SERVICE_NAME%" ( + > echo The file %DEFAULT_SERVICE_NAME%.exe was not found... +) else > ( + echo Neither the %DEFAULT_SERVICE_NAME%.exe file nor the > %SERVICE_NAME%.exe file was found... +) +echo Either the > CATALINA_HOME environment variable is not defined correctly or > +echo the incorrect service name has been used. +echo Both the > CATALINA_HOME environment variable and the correct service name > +echo are required to run this program. goto end :okHome +cd > "%CURRENT_DIR%" + rem Make sure prerequisite environment variables > are set if not "%JAVA_HOME%" == "" goto gotJdkHome if not > "%JRE_HOME%" == "" goto gotJreHome @@ -81,12 +133,6 @@ if not > "%CATALINA_BASE%" == "" goto gotBase set > "CATALINA_BASE=%CATALINA_HOME%" :gotBase > > -set "EXECUTABLE=%CATALINA_HOME%\bin\tomcat@VERSION_MAJOR@.exe" - > -rem Set default Service name -set > SERVICE_NAME=Tomcat@VERSION_MAJOR@ -set DISPLAYNAME=Apache Tomcat > @VERSION_MAJOR_MINOR@ %SERVICE_NAME% - rem Java 9 no longer > supports the java.endorsed.dirs rem system property. Only try to > use it if rem JAVA_ENDORSED_DIRS was explicitly set @@ -100,33 > +146,14 @@ if not exist "%CATALINA_HOME%\endorsed" goto > doneEndorsed set ENDORSED_PROP=java.endorsed.dirs :doneEndorsed > > -if "x%1x" == "xx" goto displayUsage -set SERVICE_CMD=%1 -shift -if > "x%1x" == "xx" goto checkServiceCmd -:checkUser -if "x%1x" == > "x/userx" goto runAsUser -if "x%1x" == "x--userx" goto runAsUser > -set SERVICE_NAME=%1 -set DISPLAYNAME=Apache Tomcat > @VERSION_MAJOR_MINOR@ %1 -shift -if "x%1x" == "xx" goto > checkServiceCmd -goto checkUser -:runAsUser -shift -if "x%1x" == > "xx" goto displayUsage -set SERVICE_USER=%1 -shift -runas /env > /savecred /user:%SERVICE_USER% "%COMSPEC% /K \"%SELF%\" > %SERVICE_CMD% %SERVICE_NAME%" -goto end -:checkServiceCmd +rem > Process the requested command if /i %SERVICE_CMD% == install goto > doInstall if /i %SERVICE_CMD% == remove goto doRemove if /i > %SERVICE_CMD% == uninstall goto doRemove echo Unknown parameter > "%SERVICE_CMD%" :displayUsage echo. -echo Usage: service.bat > install/remove [service_name] [/user username] +echo Usage: > service.bat install/remove [service_name [--no-rename]] [--user > username] goto end > > :doRemove @@ -141,6 +168,10 @@ echo Failed removing > '%SERVICE_NAME%' service goto end :removed echo The service > '%SERVICE_NAME%' has been removed +if exist > "%CATALINA_HOME%\bin\%SERVICE_NAME%.exe" ( + rename > "%SERVICE_NAME%.exe" "%DEFAULT_SERVICE_NAME%.exe" + rename > "%SERVICE_NAME%w.exe" "%DEFAULT_SERVICE_NAME%w.exe" +) goto end > > :doInstall @@ -169,6 +200,14 @@ if "%SERVICE_STARTUP_MODE%" == "" > set SERVICE_STARTUP_MODE=manual if "%JvmMs%" == "" set JvmMs=128 if > "%JvmMx%" == "" set JvmMx=256 > > +if exist "%CATALINA_HOME%\bin\%DEFAULT_SERVICE_NAME%.exe" ( + > if "x%NO_RENAME%x" == "xx" ( + rename > "%DEFAULT_SERVICE_NAME%.exe" "%SERVICE_NAME%.exe" + rename > "%DEFAULT_SERVICE_NAME%w.exe" "%SERVICE_NAME%w.exe" + set > "EXECUTABLE=%CATALINA_HOME%\bin\%SERVICE_NAME%.exe" + ) +) + > "%EXECUTABLE%" //IS//%SERVICE_NAME% ^ --Description "Apache Tomcat > @VERSION@ Server - https://tomcat.apache.org/" ^ --DisplayName > "%DISPLAYNAME%" ^ @@ -198,4 +237,3 @@ goto end echo The service > '%SERVICE_NAME%' has been installed. > > :end -cd "%CURRENT_DIR%" diff --git a/webapps/docs/changelog.xml > b/webapps/docs/changelog.xml index d81703c..c2419a7 100644 --- > a/webapps/docs/changelog.xml +++ b/webapps/docs/changelog.xml @@ > -203,6 +203,15 @@ with Apache Tomcat. (remm) </add> <fix> + > <bug>63285</bug>: Modify <code>service.bat</code> so that when + > installing a Windows service, by default, it changes the name of > the + executables used by the Windows service to match the > service name. This + makes the installation behaviour > consistent with the Windows installer. + The original > executable names will be restored when the Windows service + > is removed. The renaming can be disabled by using the new + > <code>--no-rename</code> option after the service name. (markt) + > </fix> + <fix> <bug>63567</bug>: Restore the passing of > <code>$LOGGING_MANAGER</code> to the jvm in > <code>catalina.sh</code> when calling <code>stop</code>. (markt) > diff --git a/webapps/docs/windows-service-howto.xml > b/webapps/docs/windows-service-howto.xml index d3c69b9..b9215f7 > 100644 --- a/webapps/docs/windows-service-howto.xml +++ > b/webapps/docs/windows-service-howto.xml @@ -346,9 +346,9 @@ > script. If necessary, you can use the <code>/user</code> switch to > specify a user to use for the installation of the service. </p> > <p> -<strong>NOTE:</strong> On Windows Vista or any later operating > system with User -Account Control (UAC) enabled you will be asked > for additional privileges -when 'Tomcat<version-major/>.exe' is > launched by the script.<br/> +<strong>NOTE:</strong> If User > Account Control (UAC) is enabled you will be +asked for additional > privileges when 'Tomcat<version-major/>.exe' is launched by +the > script.<br/> If you want to pass additional options to service > installer as <code>PR_*</code> environment variables, you have to > either configure them globally in OS, or launch the program that > sets them with elevated privileges @@ -367,6 +367,14 @@ service, as > displayed in Windows services.</p> <source>Install the service > named 'MyService' C:\> service.bat install MyService</source> > > +<p>When installing the service with a non-default name, > +tomcat<version-major/>.exe and tomcat<version-major/>w.exe will be > renamed to +match the chosen service name. To prevent this, use the > <code>--no-rename</code> +option.</p> + +<source>Install the > service named 'MyService' without renaming +C:\> service.bat > install MyService --no-rename</source> + <p> If using > tomcat<version-major/>.exe, you need to use the <b>//IS//</b> > parameter.</p> > > > > --------------------------------------------------------------------- > > To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org > For additional commands, e-mail: dev-h...@tomcat.apache.org > -----BEGIN PGP SIGNATURE----- Comment: Using GnuPG with Thunderbird - https://www.enigmail.net/ iQIzBAEBCAAdFiEEMmKgYcQvxMe7tcJcHPApP6U8pFgFAl1Ndf8ACgkQHPApP6U8 pFjA+BAAooRuMfdmMiuQdScqlLVnT428drU6Z0X9IPqDYh6v4mjsYygLusYmn7wt XH1zoIV3q3JsVFbH6KaEIL3L4nOLfYQwoywcpHVYUxntmG/YjDCyFVzZOdwqzwJy jk52PdQFRFknaDJRU8uVH9mLJTrpljxOxC8Y48fIQ7JZ83B+jMMu+ZbO2qd31IZR KGaDtGLlhy+G8TvH7uWaf0ZZ0YXLnvAjU+mAbJ0qimuTJ94DX3Jn/D87p/ZcoQJL hG24nm2T9kF41LdmX2tULTkZjgeQIHwDhfSfDhMlgnQ27gsdDEk4cV6kzFdaWdIU +2XfR+bkJxgwfOw59XBAbyYosiCRI+lhNU/q3563GV5jMDdse5VUzXV1JW7Bi+mS 0QxEPyLXE85Ld5eXSA6IDQg1reUuT6LkU+SbjpEGgTe7uMYhRXvJPzxZqMJWuVHK U5uPJGiwaxE5MCoNY20Eja9wJOYZlGk7c+K4Ph3ybLjo9BGJSEwKX6MNDeOQKoPD +X9y8re/tigE+vkp80D5V1cilbIciL3Ux+64QTwL4v385JGHsz4MX1zCtYj4EQwq CQrIcqT3GPAFegmu3b6pIe1ua/IXHulAZpOetbcT4f+jwaSLIh/qq4UfaBqrZJrP kHg+JMLmri64Hm0EmLBYFlSqjyxoPNXMvCj+tEYzyc1gCl/bZm4= =PkEs -----END PGP SIGNATURE----- --------------------------------------------------------------------- To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org