diff --git a/pom.xml b/pom.xml
index 8bac1914dd2eff253141924007269fee30581a49..d4be524fd358b7f9b709dbb3cf6d75fba38d83a2 100644
--- a/pom.xml
+++ b/pom.xml
@@ -94,6 +94,13 @@
 				<directory>src/main/resources</directory>
 			</resource>
 		</resources>
+
+		<!-- This file contains all the common properties used to build the different
+			packages (tar.gz, deb, rpm) using Maven resources plugin -->
+		<filters>
+			<filter>src/packaging/common/packaging.properties</filter>
+		</filters>
+
 		<pluginManagement>
 			<plugins>
 				<plugin>
@@ -284,6 +291,32 @@
 				<artifactId>maven-resources-plugin</artifactId>
 				<version>2.6</version>
 				<executions>
+					<execution>
+						<id>copy-resources</id>
+						<phase>prepare-package</phase>
+						<goals>
+							<goal>copy-resources</goal>
+						</goals>
+						<configuration>
+							<outputDirectory>${project.build.directory}/bin</outputDirectory>
+							<resources>
+								<resource>
+									<directory>${basedir}/bin</directory>
+									<filtering>true</filtering>
+									<excludes>
+										<exclude>*.exe</exclude>
+									</excludes>
+								</resource>
+								<resource>
+									<directory>${basedir}/bin</directory>
+									<filtering>false</filtering>
+									<includes>
+										<include>*.exe</include>
+									</includes>
+								</resource>
+							</resources>
+						</configuration>
+					</execution>
 					<execution>
 						<id>copy-resources-rpm</id>
 						<phase>prepare-package</phase>
@@ -331,7 +364,7 @@
 				</executions>
 			</plugin>
 
-			<!-- zip -->
+			<!-- zip, tarball -->
 			<plugin>
 				<groupId>org.apache.maven.plugins</groupId>
 				<artifactId>maven-assembly-plugin</artifactId>
@@ -341,7 +374,8 @@
 					<appendAssemblyId>false</appendAssemblyId>
 					<outputDirectory>${project.build.directory}/releases/</outputDirectory>
 					<descriptors>
-						<descriptor>${basedir}/src/main/assemblies/package.xml</descriptor>
+						<descriptor>${basedir}/src/main/assemblies/targz-bin.xml</descriptor>
+						<descriptor>${basedir}/src/main/assemblies/zip-bin.xml</descriptor>
 					</descriptors>
 				</configuration>
 				<executions>
diff --git a/src/main/assemblies/package.xml b/src/main/assemblies/common-bin.xml
similarity index 53%
rename from src/main/assemblies/package.xml
rename to src/main/assemblies/common-bin.xml
index fc602d521365db260c36a71b48f295b92d29f5e6..2d33ae8b3e4b0292b407d8f63ad51d0d80c1dc83 100644
--- a/src/main/assemblies/package.xml
+++ b/src/main/assemblies/common-bin.xml
@@ -1,16 +1,7 @@
-<?xml version="1.0"?>
-<assembly
-	xmlns="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.3"
-	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-	xsi:schemaLocation="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.3 http://maven.apache.org/xsd/assembly-1.1.3.xsd">
-	<id>package</id>
-	<formats>
-		<format>zip</format>
-	</formats>
-	<includeBaseDirectory>false</includeBaseDirectory>
+<component>
 	<dependencySets>
 		<dependencySet>
-			<outputDirectory>fess-${project.version}/app</outputDirectory>
+			<outputDirectory>/app</outputDirectory>
 			<useProjectArtifact>true</useProjectArtifact>
 			<unpack>true</unpack>
 			<includes>
@@ -19,25 +10,49 @@
 		</dependencySet>
 	</dependencySets>
 	<fileSets>
-		<!-- LICENSE -->
 		<fileSet>
-			<directory>${project.basedir}</directory>
+			<filtered>true</filtered>
+			<directory>src/main/assemblies/files</directory>
+			<outputDirectory>bin</outputDirectory>
+			<lineEnding>dos</lineEnding>
+			<includes>
+				<include>fess.in.bat</include>
+				<include>fess.bat</include>
+				<include>service.bat</include>
+			</includes>
+		</fileSet>
+		<fileSet>
+			<filtered>false</filtered>
+			<directory>src/main/assemblies/files</directory>
+			<outputDirectory>bin</outputDirectory>
 			<includes>
-				<include>LICENSE</include>
+				<include>*.exe</include>
+			</includes>
+		</fileSet>
+		<fileSet>
+			<filtered>true</filtered>
+			<directory>src/main/assemblies/files</directory>
+			<outputDirectory>bin</outputDirectory>
+			<fileMode>0755</fileMode>
+			<directoryMode>0755</directoryMode>
+			<lineEnding>unix</lineEnding>
+			<includes>
+				<include>fess.in.sh</include>
+				<include>fess</include>
 			</includes>
-			<outputDirectory>fess-${project.version}</outputDirectory>
 		</fileSet>
+
 		<!-- lib -->
 		<fileSet>
 			<directory>${project.build.directory}/tomcat-lib</directory>
-			<outputDirectory>fess-${project.version}/lib/classes</outputDirectory>
+			<outputDirectory>/lib/classes</outputDirectory>
 		</fileSet>
 		<fileSet>
 			<directory>${project.build.directory}/fess/WEB-INF/classes/org/codelibs/fess/</directory>
 			<includes>
 				<include>FessBoot**</include>
 			</includes>
-			<outputDirectory>fess-${project.version}/lib/classes/org/codelibs/fess</outputDirectory>
+			<outputDirectory>/lib/classes/org/codelibs/fess</outputDirectory>
 		</fileSet>
 		<fileSet>
 			<directory>${project.basedir}/src/main/assemblies/files</directory>
@@ -45,9 +60,10 @@
 				<include>logging.properties</include>
 				<include>tomcat_config.properties</include>
 			</includes>
-			<outputDirectory>fess-${project.version}/lib/classes</outputDirectory>
+			<outputDirectory>/lib/classes</outputDirectory>
 		</fileSet>
 		<!-- app -->
+		<!--
 		<fileSet>
 			<directory>${project.basedir}/src/main/assemblies/files</directory>
 			<fileMode>0755</fileMode>
@@ -56,12 +72,13 @@
 				<include>fess</include>
 				<include>fess.in.sh</include>
 			</includes>
-			<outputDirectory>fess-${project.version}/bin</outputDirectory>
+			<outputDirectory>/bin</outputDirectory>
 		</fileSet>
+		-->
 		<!-- logs -->
 		<fileSet>
 			<directory>src/main/assemblies/files</directory>
-			<outputDirectory>fess-${project.version}/logs</outputDirectory>
+			<outputDirectory>/logs</outputDirectory>
 			<excludes>
 				<exclude>*</exclude>
 			</excludes>
@@ -70,7 +87,7 @@
 		<!-- temp -->
 		<fileSet>
 			<directory>src/main/assemblies/files</directory>
-			<outputDirectory>fess-${project.version}/temp</outputDirectory>
+			<outputDirectory>/temp</outputDirectory>
 			<excludes>
 				<exclude>*</exclude>
 			</excludes>
@@ -79,16 +96,26 @@
 		<!-- es/plugins -->
 		<fileSet>
 			<directory>${project.basedir}/plugins</directory>
-			<outputDirectory>fess-${project.version}/es/plugins</outputDirectory>
+			<outputDirectory>/es/plugins</outputDirectory>
 		</fileSet>
 		<!-- es/data -->
 		<fileSet>
 			<directory>src/main/assemblies/files</directory>
-			<outputDirectory>fess-${project.version}/es/data</outputDirectory>
+			<outputDirectory>/es/data</outputDirectory>
 			<excludes>
 				<exclude>*</exclude>
 			</excludes>
 			<filtered>false</filtered>
 		</fileSet>
 	</fileSets>
-</assembly>
+	<files>
+		<file>
+			<source>README.md</source>
+			<outputDirectory>/</outputDirectory>
+		</file>
+		<file>
+			<source>LICENSE</source>
+			<outputDirectory>/</outputDirectory>
+		</file>
+	</files>
+</component>
diff --git a/src/main/assemblies/files/fess-service-x64.exe b/src/main/assemblies/files/fess-service-x64.exe
new file mode 100644
index 0000000000000000000000000000000000000000..dab7def75583fa8c3a14fc14cd2d733070594633
Binary files /dev/null and b/src/main/assemblies/files/fess-service-x64.exe differ
diff --git a/src/main/assemblies/files/fess-service-x86.exe b/src/main/assemblies/files/fess-service-x86.exe
new file mode 100644
index 0000000000000000000000000000000000000000..4240720018bf2e34322a3755bd73a2a31a220ce7
Binary files /dev/null and b/src/main/assemblies/files/fess-service-x86.exe differ
diff --git a/src/main/assemblies/files/fess.bat b/src/main/assemblies/files/fess.bat
new file mode 100644
index 0000000000000000000000000000000000000000..15d8d1f754c0e4900e88e7161b3efe465ee6ea63
--- /dev/null
+++ b/src/main/assemblies/files/fess.bat
@@ -0,0 +1,59 @@
+@echo off
+
+SETLOCAL enabledelayedexpansion
+TITLE Fess 10.0.0-SNAPSHOT
+
+SET params='%*'
+
+:loop
+FOR /F "usebackq tokens=1* delims= " %%A IN (!params!) DO (
+    SET current=%%A
+    SET params='%%B'
+	SET silent=N
+	
+	IF "!current!" == "-s" (
+		SET silent=Y
+	)
+	IF "!current!" == "--silent" (
+		SET silent=Y
+	)	
+	
+	IF "!silent!" == "Y" (
+		SET nopauseonerror=Y
+	) ELSE (
+	    IF "x!newparams!" NEQ "x" (
+	        SET newparams=!newparams! !current!
+        ) ELSE (
+            SET newparams=!current!
+        )
+	)
+	
+    IF "x!params!" NEQ "x" (
+		GOTO loop
+	)
+)
+
+SET HOSTNAME=%COMPUTERNAME%
+
+CALL "%~dp0fess.in.bat"
+IF ERRORLEVEL 1 (
+	IF NOT DEFINED nopauseonerror (
+		PAUSE
+	)
+	EXIT /B %ERRORLEVEL%
+)
+
+set FESS_JAVA_OPTS=%FESS_JAVA_OPTS% -Dfess.home=%FESS_HOME%
+set FESS_JAVA_OPTS=%FESS_JAVA_OPTS% -Dfess.context.path=%APP_NAME%
+set FESS_JAVA_OPTS=%FESS_JAVA_OPTS% -Dfess.port=8080
+set FESS_JAVA_OPTS=%FESS_JAVA_OPTS% -Dfess.webapp.path=%FESS_HOME%\app
+set FESS_JAVA_OPTS=%FESS_JAVA_OPTS% -Dfess.temp.path=%FESS_HOME%\temp
+set FESS_JAVA_OPTS=%FESS_JAVA_OPTS% -Dfess.log.name=%APP_NAME%
+set FESS_JAVA_OPTS=%FESS_JAVA_OPTS% -Dfess.log.path=%FESS_HOME%\logs
+set FESS_JAVA_OPTS=%FESS_JAVA_OPTS% -Dfess.log.level=warn
+set FESS_JAVA_OPTS=%FESS_JAVA_OPTS% -Dlasta.env=production
+set FESS_JAVA_OPTS=%FESS_JAVA_OPTS% -Dtomcat.config.path=tomcat_config.properties
+
+"%JAVA_HOME%\bin\java" %JAVA_OPTS% %FESS_JAVA_OPTS% %FESS_PARAMS% !newparams! -cp "%FESS_CLASSPATH%" "org.codelibs.fess.FessBoot"
+
+ENDLOCAL
diff --git a/src/main/assemblies/files/fess.in.bat b/src/main/assemblies/files/fess.in.bat
new file mode 100644
index 0000000000000000000000000000000000000000..69eb707c37748c0fc7975f6e53d5010adeeb3db2
--- /dev/null
+++ b/src/main/assemblies/files/fess.in.bat
@@ -0,0 +1,87 @@
+@echo off
+
+if DEFINED JAVA_HOME goto cont
+
+:err
+ECHO JAVA_HOME environment variable must be set! 1>&2
+EXIT /B 1 
+
+:cont
+set SCRIPT_DIR=%~dp0
+for %%I in ("%SCRIPT_DIR%..") do set FESS_HOME=%%~dpfI
+
+
+REM ***** JAVA options *****
+
+if "%FESS_MIN_MEM%" == "" (
+set FESS_MIN_MEM=256m
+)
+
+if "%FESS_MAX_MEM%" == "" (
+set FESS_MAX_MEM=1g
+)
+
+if NOT "%FESS_HEAP_SIZE%" == "" (
+set FESS_MIN_MEM=%FESS_HEAP_SIZE%
+set FESS_MAX_MEM=%FESS_HEAP_SIZE%
+)
+
+REM min and max heap sizes should be set to the same value to avoid
+REM stop-the-world GC pauses during resize, and so that we can lock the
+REM heap in memory on startup to prevent any of it from being swapped
+REM out.
+set JAVA_OPTS=%JAVA_OPTS% -Xms%FESS_MIN_MEM% -Xmx%FESS_MAX_MEM%
+
+REM new generation
+if NOT "%FESS_HEAP_NEWSIZE%" == "" (
+set JAVA_OPTS=%JAVA_OPTS% -Xmn%FESS_HEAP_NEWSIZE%
+)
+
+REM max direct memory
+if NOT "%FESS_DIRECT_SIZE%" == "" (
+set JAVA_OPTS=%JAVA_OPTS% -XX:MaxDirectMemorySize=%FESS_DIRECT_SIZE%
+)
+
+REM set to headless, just in case
+set JAVA_OPTS=%JAVA_OPTS% -Djava.awt.headless=true
+
+REM Force the JVM to use IPv4 stack
+if NOT "%FESS_USE_IPV4%" == "" (
+set JAVA_OPTS=%JAVA_OPTS% -Djava.net.preferIPv4Stack=true
+)
+
+set JAVA_OPTS=%JAVA_OPTS% -XX:+UseParNewGC
+set JAVA_OPTS=%JAVA_OPTS% -XX:+UseConcMarkSweepGC
+
+set JAVA_OPTS=%JAVA_OPTS% -XX:CMSInitiatingOccupancyFraction=75
+set JAVA_OPTS=%JAVA_OPTS% -XX:+UseCMSInitiatingOccupancyOnly
+
+REM When running under Java 7
+REM JAVA_OPTS=%JAVA_OPTS% -XX:+UseCondCardMark
+
+if NOT "%FESS_USE_GC_LOGGING%" == "" set JAVA_OPTS=%JAVA_OPTS% -XX:+PrintGCDetails
+if NOT "%FESS_USE_GC_LOGGING%" == "" set JAVA_OPTS=%JAVA_OPTS% -XX:+PrintGCTimeStamps
+if NOT "%FESS_USE_GC_LOGGING%" == "" set JAVA_OPTS=%JAVA_OPTS% -XX:+PrintGCDateStamps
+if NOT "%FESS_USE_GC_LOGGING%" == "" set JAVA_OPTS=%JAVA_OPTS% -XX:+PrintClassHistogram
+if NOT "%FESS_USE_GC_LOGGING%" == "" set JAVA_OPTS=%JAVA_OPTS% -XX:+PrintTenuringDistribution
+if NOT "%FESS_USE_GC_LOGGING%" == "" set JAVA_OPTS=%JAVA_OPTS% -XX:+PrintGCApplicationStoppedTime
+if NOT "%FESS_USE_GC_LOGGING%" == "" set JAVA_OPTS=%JAVA_OPTS% -Xloggc:%FESS_HOME%/logs/gc.log
+
+REM Causes the JVM to dump its heap on OutOfMemory.
+set JAVA_OPTS=%JAVA_OPTS% -XX:+HeapDumpOnOutOfMemoryError
+REM The path to the heap dump location, note directory must exists and have enough
+REM space for a full heap dump.
+REM JAVA_OPTS=%JAVA_OPTS% -XX:HeapDumpPath=%FESS_HOME%/logs/heapdump.hprof
+
+REM Disables explicit GC
+set JAVA_OPTS=%JAVA_OPTS% -XX:+DisableExplicitGC
+
+REM Ensure UTF-8 encoding by default (e.g. filenames)
+set JAVA_OPTS=%JAVA_OPTS% -Dfile.encoding=UTF-8
+
+REM Application Configuration
+set APP_NAME=fess
+set ES_HOME=%FESS_HOME%/es
+
+set FESS_CLASSPATH=%FESS_HOME%\lib\classes
+set FESS_PARAMS=-Dfess -Des-foreground=yes -Dfess.home="%FESS_HOME%" -Dfess.es.dir="%ES_HOME%"
diff --git a/src/main/assemblies/files/logging.properties b/src/main/assemblies/files/logging.properties
index 87510d06891f0ff8a84b15ede99dddc28716a5d0..753d82aeb486805fcc0651d4dbe002d6e5c26baf 100644
--- a/src/main/assemblies/files/logging.properties
+++ b/src/main/assemblies/files/logging.properties
@@ -5,6 +5,6 @@ java.util.logging.ConsoleHandler.level=INFO
 java.util.logging.ConsoleHandler.formatter=java.util.logging.SimpleFormatter
 
 java.util.logging.FileHandler.level=INFO
-java.util.logging.FileHandler.pattern=${fess.home}/logs/server_%g.log
+java.util.logging.FileHandler.pattern=../../logs/server_%g.log
 java.util.logging.FileHandler.formatter=java.util.logging.SimpleFormatter
 java.util.logging.FileHandler.count=10
diff --git a/src/main/assemblies/files/service.bat b/src/main/assemblies/files/service.bat
new file mode 100644
index 0000000000000000000000000000000000000000..d02c3ccefb138fe28b7250d7c1d01afa563ded55
--- /dev/null
+++ b/src/main/assemblies/files/service.bat
@@ -0,0 +1,185 @@
+@echo off
+SETLOCAL
+
+TITLE Fess Service 10.0.0-SNAPSHOT
+
+if NOT DEFINED JAVA_HOME goto err
+
+set SCRIPT_DIR=%~dp0
+for %%I in ("%SCRIPT_DIR%..") do set FESS_HOME=%%~dpfI
+
+rem Detect JVM version to figure out appropriate executable to use
+if not exist "%JAVA_HOME%\bin\java.exe" (
+echo JAVA_HOME points to an invalid Java installation (no java.exe found in "%JAVA_HOME%"^). Exiting...
+goto:eof
+)
+"%JAVA_HOME%\bin\java" -version 2>&1 | "%windir%\System32\find" "64-Bit" >nul:
+
+if errorlevel 1 goto x86
+set EXECUTABLE=%FESS_HOME%\bin\fess-service-x64.exe
+set SERVICE_ID=fess-service-x64
+set ARCH=64-bit
+goto checkExe
+
+:x86
+set EXECUTABLE=%FESS_HOME%\bin\fess-service-x86.exe
+set SERVICE_ID=fess-service-x86
+set ARCH=32-bit
+
+:checkExe
+if EXIST "%EXECUTABLE%" goto okExe
+echo fess-service-(x86|x64).exe was not found...
+
+:okExe
+set FESS_VERSION=10.0.0-SNAPSHOT
+
+if "%LOG_DIR%" == "" set LOG_DIR=%FESS_HOME%\logs
+
+if "x%1x" == "xx" goto displayUsage
+set SERVICE_CMD=%1
+shift
+if "x%1x" == "xx" goto checkServiceCmd
+set SERVICE_ID=%1
+
+:checkServiceCmd
+
+if "%LOG_OPTS%" == "" set LOG_OPTS=--LogPath "%LOG_DIR%" --LogPrefix "%SERVICE_ID%" --StdError auto --StdOutput auto
+
+if /i %SERVICE_CMD% == install goto doInstall
+if /i %SERVICE_CMD% == remove goto doRemove
+if /i %SERVICE_CMD% == start goto doStart
+if /i %SERVICE_CMD% == stop goto doStop
+if /i %SERVICE_CMD% == manager goto doManagment
+echo Unknown option "%SERVICE_CMD%"
+
+:displayUsage
+echo.
+echo Usage: service.bat install^|remove^|start^|stop^|manager [SERVICE_ID]
+goto:eof
+
+:doStart
+"%EXECUTABLE%" //ES//%SERVICE_ID% %LOG_OPTS%
+if not errorlevel 1 goto started
+echo Failed starting '%SERVICE_ID%' service
+goto:eof
+:started
+echo The service '%SERVICE_ID%' has been started
+goto:eof
+
+:doStop
+"%EXECUTABLE%" //SS//%SERVICE_ID% %LOG_OPTS%
+if not errorlevel 1 goto stopped
+echo Failed stopping '%SERVICE_ID%' service
+goto:eof
+:stopped
+echo The service '%SERVICE_ID%' has been stopped
+goto:eof
+
+:doRemove
+rem Remove the service
+"%EXECUTABLE%" //DS//%SERVICE_ID% %LOG_OPTS%
+if not errorlevel 1 goto removed
+echo Failed removing '%SERVICE_ID%' service
+goto:eof
+:removed
+echo The service '%SERVICE_ID%' has been removed
+goto:eof
+
+:doInstall
+echo Installing service      :  "%SERVICE_ID%"
+echo Using JAVA_HOME (%ARCH%):  "%JAVA_HOME%"
+
+rem Check JVM server dll first
+set JVM_DLL=%JAVA_HOME%\jre\bin\server\jvm.dll
+if exist "%JVM_DLL%" goto foundJVM
+
+rem Check 'server' JRE (JRE installed on Windows Server)
+set JVM_DLL=%JAVA_HOME%\bin\server\jvm.dll
+if exist "%JVM_DLL%" goto foundJVM
+
+rem Fallback to 'client' JRE
+set JVM_DLL=%JAVA_HOME%\bin\client\jvm.dll
+
+if exist "%JVM_DLL%" (
+echo Warning: JAVA_HOME points to a JRE and not JDK installation; a client (not a server^) JVM will be used...
+) else (
+echo JAVA_HOME points to an invalid Java installation (no jvm.dll found in "%JAVA_HOME%"^). Existing...
+goto:eof
+)
+
+:foundJVM
+if "%FESS_MIN_MEM%" == "" set FESS_MIN_MEM=256m
+if "%FESS_MAX_MEM%" == "" set FESS_MAX_MEM=1g
+
+if NOT "%FESS_HEAP_SIZE%" == "" set FESS_MIN_MEM=%FESS_HEAP_SIZE%
+if NOT "%FESS_HEAP_SIZE%" == "" set FESS_MAX_MEM=%FESS_HEAP_SIZE%
+
+call:convertxm %FESS_MIN_MEM% JVM_XMS
+call:convertxm %FESS_MAX_MEM% JVM_XMX
+
+REM java_opts might be empty - init to avoid tripping commons daemon (if the command starts with ;)
+if "%JAVA_OPTS%" == "" set JAVA_OPTS=-XX:+UseParNewGC
+
+CALL "%FESS_HOME%\bin\fess.in.bat"
+
+rem thread stack size
+set JVM_SS=256
+
+set FESS_PARAMS=-Dfess;-Dfess.home="%FESS_HOME%";-Dfess.es.dir="%ES_HOME%";-Dfess.home="%FESS_HOME%";-Dfess.context.path="%APP_NAME%";-Dfess.port=8080;-Dfess.webapp.path="%FESS_HOME%\app";-Dfess.temp.path="%FESS_HOME%\temp";-Dfess.log.name="%APP_NAME%";-Dfess.log.path="%FESS_HOME%\logs";-Dfess.log.level=warn;-Dlasta.env=production;-Dtomcat.config.path=tomcat_config.properties
+
+set JVM_OPTS=%JAVA_OPTS: =;%
+
+if not "%FESS_JAVA_OPTS%" == "" set JVM_FESS_JAVA_OPTS=%FESS_JAVA_OPTS: =#%
+if not "%FESS_JAVA_OPTS%" == "" set JVM_OPTS=%JVM_OPTS%;%JVM_FESS_JAVA_OPTS%
+
+if "%FESS_START_TYPE%" == "" set FESS_START_TYPE=manual
+if "%FESS_STOP_TIMEOUT%" == "" set FESS_STOP_TIMEOUT=0
+
+"%EXECUTABLE%" //IS//%SERVICE_ID% --Startup %FESS_START_TYPE% --StopTimeout %FESS_STOP_TIMEOUT% --StartClass org.codelibs.fess.FessBoot --StopClass org.codelibs.fess.FessBoot --StartMethod main --StopMethod shutdown --Classpath "%FESS_CLASSPATH%" --JvmSs %JVM_SS% --JvmMs %JVM_XMS% --JvmMx %JVM_XMX% --JvmOptions %JVM_OPTS% ++JvmOptions %FESS_PARAMS% %LOG_OPTS% --PidFile "%SERVICE_ID%.pid" --DisplayName "Fess %FESS_VERSION% (%SERVICE_ID%)" --Description "Fess %FESS_VERSION% Windows Service - https://github.com/codelibs/fess" --Jvm "%JVM_DLL%" --StartMode jvm --StopMode jvm --StartPath "%FESS_HOME%"
+
+if not errorlevel 1 goto installed
+echo Failed installing '%SERVICE_ID%' service
+goto:eof
+
+:installed
+echo The service '%SERVICE_ID%' has been installed.
+goto:eof
+
+:err
+echo JAVA_HOME environment variable must be set!
+pause
+goto:eof
+
+rem ---
+rem Function for converting Xm[s|x] values into MB which Commons Daemon accepts
+rem ---
+:convertxm
+set value=%~1
+rem extract last char (unit)
+set unit=%value:~-1%
+rem assume the unit is specified
+set conv=%value:~0,-1%
+
+if "%unit%" == "k" goto kilo
+if "%unit%" == "K" goto kilo
+if "%unit%" == "m" goto mega
+if "%unit%" == "M" goto mega
+if "%unit%" == "g" goto giga
+if "%unit%" == "G" goto giga
+
+rem no unit found, must be bytes; consider the whole value
+set conv=%value%
+rem convert to KB
+set /a conv=%conv% / 1024
+:kilo
+rem convert to MB
+set /a conv=%conv% / 1024
+goto mega
+:giga
+rem convert to MB
+set /a conv=%conv% * 1024
+:mega
+set "%~2=%conv%"
+goto:eof
+
+ENDLOCAL
diff --git a/src/main/assemblies/targz-bin.xml b/src/main/assemblies/targz-bin.xml
new file mode 100644
index 0000000000000000000000000000000000000000..0deac2b604325890d8fd264210f8b97cfcdfc0ec
--- /dev/null
+++ b/src/main/assemblies/targz-bin.xml
@@ -0,0 +1,14 @@
+<?xml version="1.0"?>
+<assembly>
+	<id>targz</id>
+	<formats>
+		<format>tar.gz</format>
+	</formats>
+
+	<includeBaseDirectory>true</includeBaseDirectory>
+
+	<componentDescriptors>
+		<componentDescriptor>src/main/assemblies/common-bin.xml
+		</componentDescriptor>
+	</componentDescriptors>
+</assembly>
diff --git a/src/main/assemblies/zip-bin.xml b/src/main/assemblies/zip-bin.xml
new file mode 100644
index 0000000000000000000000000000000000000000..7a90ee401c61b788be2ae785fc4dcd33f8cd18a6
--- /dev/null
+++ b/src/main/assemblies/zip-bin.xml
@@ -0,0 +1,14 @@
+<?xml version="1.0"?>
+<assembly>
+	<id>zip</id>
+	<formats>
+		<format>zip</format>
+	</formats>
+
+	<includeBaseDirectory>true</includeBaseDirectory>
+
+	<componentDescriptors>
+		<componentDescriptor>src/main/assemblies/common-bin.xml
+		</componentDescriptor>
+	</componentDescriptors>
+</assembly>
diff --git a/src/main/java/org/codelibs/fess/FessBoot.java b/src/main/java/org/codelibs/fess/FessBoot.java
index 1dd0f4ee257de5ab07949edcb569a9718cfb6d81..1eeac15d33be05620d6fdcf63272a5a06fd16620 100644
--- a/src/main/java/org/codelibs/fess/FessBoot.java
+++ b/src/main/java/org/codelibs/fess/FessBoot.java
@@ -80,6 +80,10 @@ public class FessBoot extends TomcatBoot {
                 .asDevelopment(isNoneEnv()).bootAwait();
     }
 
+    public static void shutdown(String[] args) {
+        System.exit(0);
+    }
+
     private static boolean isNoneEnv() {
         return System.getProperty("lasta.env") == null;
     }