diff --git a/application/pom.xml b/application/pom.xml
index d06fbfa718..6efb019f75 100644
--- a/application/pom.xml
+++ b/application/pom.xml
@@ -28,14 +28,17 @@
jar
Thingsboard Server Application
- http://thingsboard.org
+ https://thingsboard.io
+ Open-source IoT Platform - Device management, data collection, processing and visualization
+
UTF-8
${basedir}/..
thingsboard
- /var/log/${pkg.name}
+ /var/log/${pkg.name}
/usr/share/${pkg.name}
+ ${project.build.directory}/windows
@@ -196,6 +199,13 @@
io.springfox
springfox-swagger2
+
+ com.sun.winsw
+ winsw
+ bin
+ exe
+ provided
+
org.thingsboard
tools
@@ -291,6 +301,38 @@
true
+
+ src/main/filters/unix.properties
+
+
+
+
+ copy-win-conf
+ process-resources
+
+ copy-resources
+
+
+ ${pkg.win.dist}/conf
+
+
+ src/main/resources
+
+ logback.xml
+
+ false
+
+
+ src/main/conf
+
+ thingsboard.conf
+
+ true
+
+
+
+ src/main/filters/windows.properties
+
@@ -307,6 +349,28 @@
true
+
+ src/main/filters/unix.properties
+
+
+
+
+ copy-windows-control
+ process-resources
+
+ copy-resources
+
+
+ ${pkg.win.dist}
+
+
+ src/main/scripts/windows
+ true
+
+
+
+ src/main/filters/windows.properties
+
@@ -361,6 +425,25 @@
+
+ copy-winsw-service
+ package
+
+ copy
+
+
+
+
+ com.sun.winsw
+ winsw
+ bin
+ exe
+ service.exe
+
+
+ ${pkg.win.dist}
+
+
@@ -385,7 +468,7 @@
true
${pkg.installFolder}/conf
- ${pkg.logFolder}
+ ${pkg.unixLogFolder}
${pkg.name}.out
@@ -412,7 +495,7 @@
-PmainJar=${project.build.directory}/${project.build.finalName}-boot.${project.packaging}
-PpkgName=${pkg.name}
-PpkgInstallFolder=${pkg.installFolder}
- -PpkgLogFolder=${pkg.logFolder}
+ -PpkgLogFolder=${pkg.unixLogFolder}
@@ -424,6 +507,25 @@
+
+ org.apache.maven.plugins
+ maven-assembly-plugin
+
+ ${pkg.name}
+
+ src/main/assembly/windows.xml
+
+
+
+
+ assembly
+ package
+
+ single
+
+
+
+
org.xolstice.maven.plugins
protobuf-maven-plugin
@@ -434,4 +536,14 @@
+
+
+ jenkins
+ Jenkins Repository
+ http://repo.jenkins-ci.org/releases
+
+ false
+
+
+
diff --git a/application/src/main/assembly/windows.xml b/application/src/main/assembly/windows.xml
new file mode 100644
index 0000000000..023c4350a8
--- /dev/null
+++ b/application/src/main/assembly/windows.xml
@@ -0,0 +1,79 @@
+
+
+ windows
+
+
+ zip
+
+
+
+
+
+ ${pkg.win.dist}
+ logs
+
+ */**
+
+
+
+ ${pkg.win.dist}/conf
+ conf
+ windows
+
+
+ ${project.build.directory}/extensions
+ extensions
+
+
+ ${project.build.directory}/data
+ data
+
+
+
+
+
+ ${project.build.directory}/${project.build.finalName}-boot.${project.packaging}
+ lib
+ ${pkg.name}.jar
+
+
+ ${pkg.win.dist}/service.exe
+
+ ${pkg.name}.exe
+
+
+ ${pkg.win.dist}/service.xml
+
+ ${pkg.name}.xml
+ windows
+
+
+ ${pkg.win.dist}/install.bat
+
+ windows
+
+
+ ${pkg.win.dist}/uninstall.bat
+
+ windows
+
+
+
diff --git a/application/src/main/filters/unix.properties b/application/src/main/filters/unix.properties
new file mode 100644
index 0000000000..8967278673
--- /dev/null
+++ b/application/src/main/filters/unix.properties
@@ -0,0 +1 @@
+pkg.logFolder=${pkg.unixLogFolder}
\ No newline at end of file
diff --git a/application/src/main/filters/windows.properties b/application/src/main/filters/windows.properties
new file mode 100644
index 0000000000..a6e48d91ba
--- /dev/null
+++ b/application/src/main/filters/windows.properties
@@ -0,0 +1,2 @@
+pkg.logFolder=${BASE}\\logs
+pkg.winWrapperLogFolder=%BASE%\\logs
diff --git a/application/src/main/scripts/windows/install.bat b/application/src/main/scripts/windows/install.bat
new file mode 100644
index 0000000000..97c4feb503
--- /dev/null
+++ b/application/src/main/scripts/windows/install.bat
@@ -0,0 +1,90 @@
+@ECHO OFF
+
+setlocal ENABLEEXTENSIONS
+
+IF %PROCESSOR_ARCHITECTURE%==AMD64 GOTO CHECK_JAVA_64
+IF %PROCESSOR_ARCHITECTURE%==x86 GOTO CHECK_JAVA_32
+
+@ECHO Detecting Java version installed.
+:CHECK_JAVA_64
+@ECHO Detecting if it is 64 bit machine
+set KEY_NAME="HKEY_LOCAL_MACHINE\Software\Wow6432Node\JavaSoft\Java Runtime Environment"
+set VALUE_NAME=CurrentVersion
+
+FOR /F "usebackq skip=2 tokens=1-3" %%A IN (`REG QUERY %KEY_NAME% /v %VALUE_NAME% 2^>nul`) DO (
+ set ValueName=%%A
+ set ValueType=%%B
+ set ValueValue=%%C
+)
+@ECHO CurrentVersion %ValueValue%
+
+SET KEY_NAME="%KEY_NAME:~1,-1%\%ValueValue%"
+SET VALUE_NAME=JavaHome
+
+if defined ValueName (
+ FOR /F "usebackq skip=2 tokens=1,2*" %%A IN (`REG QUERY %KEY_NAME% /v %VALUE_NAME% 2^>nul`) DO (
+ set ValueName2=%%A
+ set ValueType2=%%B
+ set JRE_PATH2=%%C
+
+ if defined ValueName2 (
+ set ValueName = %ValueName2%
+ set ValueType = %ValueType2%
+ set ValueValue = %JRE_PATH2%
+ )
+ )
+)
+
+IF NOT "%JRE_PATH2%" == "" GOTO JAVA_INSTALLED
+IF "%JRE_PATH2%" == "" GOTO JAVA_NOT_INSTALLED
+
+:CHECK_JAVA_32
+@ECHO Detecting if it is 32 bit machine
+set KEY_NAME="HKEY_LOCAL_MACHINE\Software\JavaSoft\Java Runtime Environment"
+set VALUE_NAME=CurrentVersion
+
+FOR /F "usebackq skip=2 tokens=1-3" %%A IN (`REG QUERY %KEY_NAME% /v %VALUE_NAME% 2^>nul`) DO (
+ set ValueName=%%A
+ set ValueType=%%B
+ set ValueValue=%%C
+)
+@ECHO CurrentVersion %ValueValue%
+
+SET KEY_NAME="%KEY_NAME:~1,-1%\%ValueValue%"
+SET VALUE_NAME=JavaHome
+
+if defined ValueName (
+ FOR /F "usebackq skip=2 tokens=1,2*" %%A IN (`REG QUERY %KEY_NAME% /v %VALUE_NAME% 2^>nul`) DO (
+ set ValueName2=%%A
+ set ValueType2=%%B
+ set JRE_PATH2=%%C
+
+ if defined ValueName2 (
+ set ValueName = %ValueName2%
+ set ValueType = %ValueType2%
+ set ValueValue = %JRE_PATH2%
+ )
+ )
+)
+
+IF "%JRE_PATH2%" == "" GOTO JAVA_NOT_INSTALLED
+
+:JAVA_INSTALLED
+
+@ECHO Java 1.8 found!
+@ECHO Installing ${pkg.name} ...
+${pkg.name}.exe install
+
+@ECHO DONE.
+
+GOTO END
+
+:JAVA_NOT_INSTALLED
+@ECHO Java 1.8 or above is not installed
+@ECHO Please go to https://java.com/ and install Java. Then retry installation.
+PAUSE
+GOTO END
+
+:END
+
+
diff --git a/application/src/main/scripts/windows/service.xml b/application/src/main/scripts/windows/service.xml
new file mode 100644
index 0000000000..b2acc45a8a
--- /dev/null
+++ b/application/src/main/scripts/windows/service.xml
@@ -0,0 +1,12 @@
+
+ ${pkg.name}
+ ${project.name}
+ ${project.description}
+ %BASE%\conf
+ ${pkg.winWrapperLogFolder}
+ rotate
+
+ java
+ -jar
+ %BASE%\lib\${pkg.name}.jar
+
diff --git a/application/src/main/scripts/windows/uninstall.bat b/application/src/main/scripts/windows/uninstall.bat
new file mode 100644
index 0000000000..d07cf870ca
--- /dev/null
+++ b/application/src/main/scripts/windows/uninstall.bat
@@ -0,0 +1,9 @@
+@ECHO OFF
+
+@ECHO Stopping ${pkg.name} ...
+net stop ${pkg.name}
+
+@ECHO Uninstalling ${pkg.name} ...
+${pkg.name}.exe uninstall
+
+@ECHO DONE.
\ No newline at end of file
diff --git a/pom.xml b/pom.xml
index 909e255502..069c00c40b 100755
--- a/pom.xml
+++ b/pom.xml
@@ -24,12 +24,12 @@
pom
Thingsboard
- http://thingsboard.io
+ https://thingsboard.io
2016
${basedir}
- 1.4.2.RELEASE
+ 1.4.3.RELEASE
4.3.4.RELEASE
4.2.0.RELEASE
0.7.0
@@ -70,6 +70,7 @@
3.0.2
2.6.1
1.56
+ 2.0.1
@@ -127,6 +128,11 @@
maven-jar-plugin
3.0.2
+
+ org.apache.maven.plugins
+ maven-assembly-plugin
+ 3.0.0
+
org.springframework.boot
spring-boot-maven-plugin
@@ -264,6 +270,7 @@
src/font/**
src/sh/**
src/main/scripts/control/**
+ src/main/scripts/windows/**
JAVADOC_STYLE
@@ -700,6 +707,14 @@
bcpkix-jdk15on
${bouncycastle.version}
+
+ com.sun.winsw
+ winsw
+ ${winsw.version}
+ bin
+ exe
+ provided
+