diff --git a/Version.txt b/Version.txt
new file mode 100644
index 0000000000000000000000000000000000000000..33dc0136755947f46a9aa3645253889f4c7f6b67
--- /dev/null
+++ b/Version.txt
@@ -0,0 +1 @@
+20190102542748
\ No newline at end of file
diff --git a/downloadbar.cpp b/downloadbar.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..10f73bc8f5c82632f3bf9a1c4ee8477f43c32c52
--- /dev/null
+++ b/downloadbar.cpp
@@ -0,0 +1,52 @@
+/***************************************************************************
+ * Copyright (C) 2019 by Savoir-faire Linux                                *
+ * Author: Mingrui Zhang <mingrui.zhang@savoirfairelinux.com>              *
+ *                                                                         *
+ * This program is free software; you can redistribute it and/or modify    *
+ * it under the terms of the GNU General Public License as published by    *
+ * the Free Software Foundation; either version 3 of the License, or       *
+ * (at your option) any later version.                                     *
+ *                                                                         *
+ * This program is distributed in the hope that it will be useful,         *
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of          *
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           *
+ * GNU General Public License for more details.                            *
+ *                                                                         *
+ * You should have received a copy of the GNU General Public License       *
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.   *
+ **************************************************************************/
+
+#include "downloadbar.h"
+#include "ui_downloadbar.h"
+
+updateDownloadDialog::updateDownloadDialog(QWidget* parent)
+    : QDialog(parent)
+    , ui(new Ui::updateDownloadDialog)
+{
+    ui->setupUi(this);
+    ui->progressBar->setValue(0);
+    ui->progressBar->setVisible(true);
+    setWindowFlags(windowFlags() & ~Qt::WindowContextHelpButtonHint);
+}
+
+void updateDownloadDialog::setValue(double var)
+{
+    value_ = var;
+}
+
+void updateDownloadDialog::setMaximum(double var)
+{
+    maximum_ = var;
+}
+
+updateDownloadDialog::~updateDownloadDialog()
+{
+    delete ui;
+}
+
+void updateDownloadDialog::update(QString displayText)
+{
+    int percent = static_cast<int>((1 - ((maximum_ - value_) / maximum_)) * 100);
+    ui->Statusedit->setText("Speed: " + displayText);
+    ui->progressBar->setValue(percent);
+}
diff --git a/downloadbar.h b/downloadbar.h
new file mode 100644
index 0000000000000000000000000000000000000000..d97226c2b6b67525a9c0d4163cf663f0a126a0ef
--- /dev/null
+++ b/downloadbar.h
@@ -0,0 +1,41 @@
+/***************************************************************************
+ * Copyright (C) 2019 by Savoir-faire Linux                                *
+ * Author: Mingrui Zhang <mingrui.zhang@savoirfairelinux.com>              *
+ *                                                                         *
+ * This program is free software; you can redistribute it and/or modify    *
+ * it under the terms of the GNU General Public License as published by    *
+ * the Free Software Foundation; either version 3 of the License, or       *
+ * (at your option) any later version.                                     *
+ *                                                                         *
+ * This program is distributed in the hope that it will be useful,         *
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of          *
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           *
+ * GNU General Public License for more details.                            *
+ *                                                                         *
+ * You should have received a copy of the GNU General Public License       *
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.   *
+ **************************************************************************/
+
+#pragma once
+
+#include <QDialog>
+
+namespace Ui {
+class updateDownloadDialog;
+}
+
+class updateDownloadDialog : public QDialog {
+    Q_OBJECT
+
+public:
+    updateDownloadDialog(QWidget* parent = nullptr);
+    ~updateDownloadDialog();
+    void setValue(double var);
+    void setMaximum(double var);
+    void update(QString displayText);
+
+private:
+    Ui::updateDownloadDialog* ui;
+    double value_ = 0;
+    double maximum_ = -1;
+};
diff --git a/downloadbar.ui b/downloadbar.ui
new file mode 100644
index 0000000000000000000000000000000000000000..4a6ebba6f412e24a2b308c428fa2d6c2421d61d0
--- /dev/null
+++ b/downloadbar.ui
@@ -0,0 +1,94 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ui version="4.0">
+ <class>updateDownloadDialog</class>
+ <widget class="QDialog" name="updateDownloadDialog">
+  <property name="geometry">
+   <rect>
+    <x>0</x>
+    <y>0</y>
+    <width>309</width>
+    <height>121</height>
+   </rect>
+  </property>
+  <property name="windowTitle">
+   <string>Update Download</string>
+  </property>
+  <layout class="QHBoxLayout" name="horizontalLayout">
+   <item>
+    <layout class="QVBoxLayout" name="verticalLayout_2">
+     <item>
+      <widget class="QLabel" name="label">
+       <property name="sizePolicy">
+        <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
+         <horstretch>0</horstretch>
+         <verstretch>0</verstretch>
+        </sizepolicy>
+       </property>
+       <property name="font">
+        <font>
+         <pointsize>9</pointsize>
+        </font>
+       </property>
+       <property name="text">
+        <string>Update Download Status</string>
+       </property>
+      </widget>
+     </item>
+     <item>
+      <spacer name="verticalSpacer">
+       <property name="orientation">
+        <enum>Qt::Vertical</enum>
+       </property>
+       <property name="sizeType">
+        <enum>QSizePolicy::Preferred</enum>
+       </property>
+       <property name="sizeHint" stdset="0">
+        <size>
+         <width>20</width>
+         <height>20</height>
+        </size>
+       </property>
+      </spacer>
+     </item>
+     <item>
+      <layout class="QVBoxLayout" name="verticalLayout">
+       <item>
+        <widget class="QLabel" name="Statusedit">
+         <property name="sizePolicy">
+          <sizepolicy hsizetype="Expanding" vsizetype="Fixed">
+           <horstretch>0</horstretch>
+           <verstretch>0</verstretch>
+          </sizepolicy>
+         </property>
+         <property name="font">
+          <font>
+           <pointsize>9</pointsize>
+          </font>
+         </property>
+         <property name="text">
+          <string>Speed: </string>
+         </property>
+        </widget>
+       </item>
+       <item>
+        <widget class="QProgressBar" name="progressBar">
+         <property name="sizePolicy">
+          <sizepolicy hsizetype="Expanding" vsizetype="Fixed">
+           <horstretch>0</horstretch>
+           <verstretch>0</verstretch>
+          </sizepolicy>
+         </property>
+         <property name="value">
+          <number>24</number>
+         </property>
+        </widget>
+       </item>
+      </layout>
+     </item>
+    </layout>
+   </item>
+  </layout>
+ </widget>
+ <resources/>
+ <connections/>
+</ui>
diff --git a/downloadmanger.cpp b/downloadmanger.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..dee77df3709d855bd17dcbbd021aeb4808a2351a
--- /dev/null
+++ b/downloadmanger.cpp
@@ -0,0 +1,164 @@
+/***************************************************************************
+ * Copyright (C) 2019 by Savoir-faire Linux                                *
+ * Author: Mingrui Zhang <mingrui.zhang@savoirfairelinux.com>              *
+ *                                                                         *
+ * This program is free software; you can redistribute it and/or modify    *
+ * it under the terms of the GNU General Public License as published by    *
+ * the Free Software Foundation; either version 3 of the License, or       *
+ * (at your option) any later version.                                     *
+ *                                                                         *
+ * This program is distributed in the hope that it will be useful,         *
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of          *
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           *
+ * GNU General Public License for more details.                            *
+ *                                                                         *
+ * You should have received a copy of the GNU General Public License       *
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.   */
+
+#include <windows.h>
+
+#include <QMessageBox>
+
+#include "downloadbar.h"
+#include "downloadmanger.h"
+
+DownloadManager::DownloadManager(QObject* parent)
+    : QObject(parent)
+{
+    //Download it into %TEMP%
+    downloadpath_ = WinGetEnv("TEMP");
+}
+
+void DownloadManager::doDownload(const QUrl& url)
+{
+    QFileInfo fileInfo(url.path());
+    QString fileName = fileInfo.fileName();
+
+    if (fileName.isEmpty())
+        fileName = "download";
+
+    file_.reset(new QFile(downloadpath_ + "/" + fileName));
+    if (!file_->open(QIODevice::WriteOnly)) {
+        QMessageBox::information(0, "Error!", "Unable to Open File Path");
+        file_.reset(nullptr);
+        return;
+    }
+
+    QNetworkRequest request(url);
+    // get() method posts a request
+    // to obtain the contents of the target request
+    // and returns a new QNetworkReply object
+    // opened for reading which emits
+    // the readyRead() signal whenever new data arrives.
+    currentDownload_ = manager_.get(request);
+
+    downloadTime_.start();
+
+#if QT_CONFIG(ssl)
+    connect(currentDownload_, SIGNAL(sslErrors(QList<QSslError>)), this, SLOT(sslErrors(QList<QSslError>)));
+#endif
+    //downloadProgress() signal is emitted when data is received
+    connect(currentDownload_, SIGNAL(downloadProgress(qint64, qint64)), this, SLOT(downloadProgress(qint64, qint64)));
+    // This signal is emitted when the reply has finished processing.
+    // After this signal is emitted,
+    // there will be no more updates to the reply's data or metadata.
+    connect(currentDownload_, SIGNAL(finished()), this, SLOT(downloadFinished()));
+    // Whenever more data is received from the network,
+    // this readyRead() signal is emitted
+    connect(currentDownload_, SIGNAL(readyRead()), this, SLOT(httpReadyRead()));
+
+    probar_.exec();
+}
+
+void DownloadManager::downloadFinished()
+{
+    // donload finished normally
+    int statusCode = currentDownload_->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt();
+    if (statusCode == 404) {
+        QMessageBox::information(0, "Error!", "DownLoaded Installer Invalid!");
+    }
+    probar_.setMaximum(0);
+    probar_.setValue(0);
+    file_->flush();
+    file_->close();
+
+    currentDownload_->deleteLater();
+    currentDownload_ = nullptr;
+    file_.reset(nullptr);
+    probar_.setValue(0);
+    probar_.update("0");
+    probar_.close();
+}
+
+void DownloadManager::downloadProgress(qint64 bytesReceived, qint64 bytesTotal)
+{
+    probar_.setMaximum(bytesTotal);
+    probar_.setValue(bytesReceived);
+
+    int presentTime = downloadTime_.elapsed();
+    // calculate the download speed
+    double speed = (bytesReceived - previousDownloadBytes_) * 1000.0 / (presentTime - previousTime_);
+    previousTime_ = presentTime;
+    previousDownloadBytes_ = bytesReceived;
+
+    QString unit;
+    if (speed < 1024) {
+        unit = "bytes/sec";
+    } else if (speed < 1024 * 1024) {
+        speed /= 1024;
+        unit = "kB/s";
+    } else {
+        speed /= 1024 * 1024;
+        unit = "MB/s";
+    }
+
+    probar_.update(QString::number(speed) + " " + unit);
+}
+
+void DownloadManager::httpReadyRead()
+{
+    // this slot gets called every time the QNetworkReply has new data.
+    // We read all of its new data and write it into the file.
+    // That way we use less RAM than when reading it at the finished()
+    // signal of the QNetworkReply
+    if (file_)
+        file_->write(currentDownload_->readAll());
+}
+
+QString DownloadManager::versionOnline()
+{
+    QString urlstr = "https://dl.jami.net/windows/testver";
+    QUrl url = QUrl::fromEncoded(urlstr.toLocal8Bit());
+    doDownload(url);
+
+    QFile file(downloadpath_ + "/" + "testver");
+    if (!file.open(QIODevice::ReadOnly)) {
+        QMessageBox::information(0, "Downloaded Version File Error", file.errorString());
+    }
+    QTextStream in(&file);
+    QString onlineVersion = in.readLine();
+    file.close();
+
+    return onlineVersion;
+}
+
+void DownloadManager::sslErrors(const QList<QSslError>& sslErrors)
+{
+#if QT_CONFIG(ssl)
+    for (const QSslError& error : sslErrors)
+        QMessageBox::information(0, "SSL Error ", error.errorString());
+#else
+    Q_UNUSED(sslErrors);
+#endif
+}
+
+const char* DownloadManager::WinGetEnv(const char* name)
+{
+    const DWORD buffSize = 65535;
+    static char buffer[buffSize];
+    if (GetEnvironmentVariableA(name, buffer, buffSize)) {
+        return buffer;
+    } else {
+        return 0;
+    }
+}
diff --git a/downloadmanger.h b/downloadmanger.h
new file mode 100644
index 0000000000000000000000000000000000000000..19a413398387d54142e90bb515e8c32a8dfc38ec
--- /dev/null
+++ b/downloadmanger.h
@@ -0,0 +1,53 @@
+/***************************************************************************
+ * Copyright (C) 2019 by Savoir-faire Linux                                *
+ * Author: Mingrui Zhang <mingrui.zhang@savoirfairelinux.com>              *
+ *                                                                         *
+ * This program is free software; you can redistribute it and/or modify    *
+ * it under the terms of the GNU General Public License as published by    *
+ * the Free Software Foundation; either version 3 of the License, or       *
+ * (at your option) any later version.                                     *
+ *                                                                         *
+ * This program is distributed in the hope that it will be useful,         *
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of          *
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           *
+ * GNU General Public License for more details.                            *
+ *                                                                         *
+ * You should have received a copy of the GNU General Public License       *
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.   *
+ **************************************************************************/
+
+#pragma once
+
+#include <memory>
+
+#include <QtCore>
+#include <QtNetwork>
+
+#include "downloadbar.h"
+
+class QSslError;
+
+class DownloadManager : public QObject {
+    Q_OBJECT
+    QNetworkAccessManager manager_;
+    QNetworkReply* currentDownload_;
+    updateDownloadDialog probar_;
+    std::unique_ptr<QFile> file_;
+    QTime downloadTime_;
+    int previousTime_ = 0;
+    qint64 previousDownloadBytes_ = 0;
+    QString downloadpath_;
+
+    const char* WinGetEnv(const char* name);
+
+public:
+    explicit DownloadManager(QObject* parent = nullptr);
+    void doDownload(const QUrl& url);
+    QString versionOnline();
+
+public slots:
+    void sslErrors(const QList<QSslError>& sslErrors);
+    void downloadFinished();
+    void downloadProgress(qint64 bytesRead, qint64 totalBytes);
+    void httpReadyRead();
+};
diff --git a/jami-qt.pro b/jami-qt.pro
index bc3bd6e356aac9558c9ddcbb9f84da79a5a4738c..4d7ea6aaf4c8b1ed0568c28c5bccb7ef7a66e2f5 100644
--- a/jami-qt.pro
+++ b/jami-qt.pro
@@ -62,7 +62,10 @@ HEADERS += ./pixbufmanipulator.h \
     ./toggleswitch.h \
     ./videooverlay.h \
     ./videoview.h \
-    ./videowidget.h
+    ./videowidget.h \
+    ./downloadbar.h \
+    ./updateconfirmdialog.h \
+    ./downloadmanger.h
 SOURCES += ./advancedsettingswidget.cpp \
     ./advancedsipsettingwidget.cpp \
     ./avatargraphicsview.cpp \
@@ -108,7 +111,10 @@ SOURCES += ./advancedsettingswidget.cpp \
     ./videoview.cpp \
     ./videowidget.cpp \
     ./webchathelpers.cpp \
-    ./windowscontactbackend.cpp
+    ./windowscontactbackend.cpp \
+    ./downloadbar.cpp \
+    ./updateconfirmdialog.cpp \
+    ./downloadmanger.cpp
 FORMS += ./aboutdialog.ui \
     ./advancedsettingswidget.ui \
     ./advancedsipsettingwidget.ui \
@@ -128,5 +134,7 @@ FORMS += ./aboutdialog.ui \
     ./ringbutton.ui \
     ./settingswidget.ui \
     ./videooverlay.ui \
-    ./videoview.ui
+    ./videoview.ui \
+    ./downloadbar.ui \
+    ./updateconfirmdialog.ui
 RESOURCES += ressources.qrc
diff --git a/ring-client-windows.sln b/ring-client-windows.sln
index 7a9fd351f1d9452abfbbbe9beefeb3e187214400..36bec31f53b3fea692c7e299ef8f7fa3bcd0b7ef 100644
--- a/ring-client-windows.sln
+++ b/ring-client-windows.sln
@@ -135,62 +135,87 @@ Global
 		{79F8DE42-595D-49D9-A66F-55244FD9DCC3}.RelWithDebInfo|x64.Build.0 = ReleaseLib|x64
 		{79F8DE42-595D-49D9-A66F-55244FD9DCC3}.RelWithDebInfo|x86.ActiveCfg = ReleaseLib|Win32
 		{79F8DE42-595D-49D9-A66F-55244FD9DCC3}.RelWithDebInfo|x86.Build.0 = ReleaseLib|Win32
+		{A604BA33-C1DB-34F6-8584-C429857717A8}.Debug|Any CPU.ActiveCfg = Debug|x64
 		{A604BA33-C1DB-34F6-8584-C429857717A8}.Debug|x64.ActiveCfg = Debug|x64
 		{A604BA33-C1DB-34F6-8584-C429857717A8}.Debug|x64.Build.0 = Debug|x64
 		{A604BA33-C1DB-34F6-8584-C429857717A8}.Debug|x86.ActiveCfg = Debug|x64
+		{A604BA33-C1DB-34F6-8584-C429857717A8}.DebugLib_win32|Any CPU.ActiveCfg = RelWithDebInfo|x64
+		{A604BA33-C1DB-34F6-8584-C429857717A8}.DebugLib_win32|Any CPU.Build.0 = RelWithDebInfo|x64
 		{A604BA33-C1DB-34F6-8584-C429857717A8}.DebugLib_win32|x64.ActiveCfg = Debug|x64
 		{A604BA33-C1DB-34F6-8584-C429857717A8}.DebugLib_win32|x64.Build.0 = Debug|x64
 		{A604BA33-C1DB-34F6-8584-C429857717A8}.DebugLib_win32|x86.ActiveCfg = MinSizeRel|x64
 		{A604BA33-C1DB-34F6-8584-C429857717A8}.DebugLib_win32|x86.Build.0 = MinSizeRel|x64
+		{A604BA33-C1DB-34F6-8584-C429857717A8}.DebugLib|Any CPU.ActiveCfg = RelWithDebInfo|x64
+		{A604BA33-C1DB-34F6-8584-C429857717A8}.DebugLib|Any CPU.Build.0 = RelWithDebInfo|x64
 		{A604BA33-C1DB-34F6-8584-C429857717A8}.DebugLib|x64.ActiveCfg = Debug|x64
 		{A604BA33-C1DB-34F6-8584-C429857717A8}.DebugLib|x64.Build.0 = Debug|x64
 		{A604BA33-C1DB-34F6-8584-C429857717A8}.DebugLib|x86.ActiveCfg = MinSizeRel|x64
 		{A604BA33-C1DB-34F6-8584-C429857717A8}.DebugLib|x86.Build.0 = MinSizeRel|x64
+		{A604BA33-C1DB-34F6-8584-C429857717A8}.MinSizeRel|Any CPU.ActiveCfg = MinSizeRel|x64
 		{A604BA33-C1DB-34F6-8584-C429857717A8}.MinSizeRel|x64.ActiveCfg = MinSizeRel|x64
 		{A604BA33-C1DB-34F6-8584-C429857717A8}.MinSizeRel|x64.Build.0 = MinSizeRel|x64
 		{A604BA33-C1DB-34F6-8584-C429857717A8}.MinSizeRel|x86.ActiveCfg = MinSizeRel|x64
+		{A604BA33-C1DB-34F6-8584-C429857717A8}.Release|Any CPU.ActiveCfg = Release|x64
 		{A604BA33-C1DB-34F6-8584-C429857717A8}.Release|x64.ActiveCfg = Release|x64
 		{A604BA33-C1DB-34F6-8584-C429857717A8}.Release|x64.Build.0 = Release|x64
 		{A604BA33-C1DB-34F6-8584-C429857717A8}.Release|x86.ActiveCfg = Release|x64
+		{A604BA33-C1DB-34F6-8584-C429857717A8}.ReleaseLib_win32|Any CPU.ActiveCfg = RelWithDebInfo|x64
+		{A604BA33-C1DB-34F6-8584-C429857717A8}.ReleaseLib_win32|Any CPU.Build.0 = RelWithDebInfo|x64
 		{A604BA33-C1DB-34F6-8584-C429857717A8}.ReleaseLib_win32|x64.ActiveCfg = Release|x64
 		{A604BA33-C1DB-34F6-8584-C429857717A8}.ReleaseLib_win32|x64.Build.0 = Release|x64
 		{A604BA33-C1DB-34F6-8584-C429857717A8}.ReleaseLib_win32|x86.ActiveCfg = MinSizeRel|x64
 		{A604BA33-C1DB-34F6-8584-C429857717A8}.ReleaseLib_win32|x86.Build.0 = MinSizeRel|x64
+		{A604BA33-C1DB-34F6-8584-C429857717A8}.ReleaseLib|Any CPU.ActiveCfg = RelWithDebInfo|x64
+		{A604BA33-C1DB-34F6-8584-C429857717A8}.ReleaseLib|Any CPU.Build.0 = RelWithDebInfo|x64
 		{A604BA33-C1DB-34F6-8584-C429857717A8}.ReleaseLib|x64.ActiveCfg = Release|x64
 		{A604BA33-C1DB-34F6-8584-C429857717A8}.ReleaseLib|x64.Build.0 = Release|x64
 		{A604BA33-C1DB-34F6-8584-C429857717A8}.ReleaseLib|x86.ActiveCfg = MinSizeRel|x64
 		{A604BA33-C1DB-34F6-8584-C429857717A8}.ReleaseLib|x86.Build.0 = MinSizeRel|x64
+		{A604BA33-C1DB-34F6-8584-C429857717A8}.RelWithDebInfo|Any CPU.ActiveCfg = RelWithDebInfo|x64
 		{A604BA33-C1DB-34F6-8584-C429857717A8}.RelWithDebInfo|x64.ActiveCfg = RelWithDebInfo|x64
 		{A604BA33-C1DB-34F6-8584-C429857717A8}.RelWithDebInfo|x64.Build.0 = RelWithDebInfo|x64
 		{A604BA33-C1DB-34F6-8584-C429857717A8}.RelWithDebInfo|x86.ActiveCfg = RelWithDebInfo|x64
+		{8C3AD0D4-A52C-3EFB-A2C6-04EA3AB5F00E}.Debug|Any CPU.ActiveCfg = Debug|x64
 		{8C3AD0D4-A52C-3EFB-A2C6-04EA3AB5F00E}.Debug|x64.ActiveCfg = Debug|x64
 		{8C3AD0D4-A52C-3EFB-A2C6-04EA3AB5F00E}.Debug|x64.Build.0 = Debug|x64
 		{8C3AD0D4-A52C-3EFB-A2C6-04EA3AB5F00E}.Debug|x86.ActiveCfg = Debug|x64
+		{8C3AD0D4-A52C-3EFB-A2C6-04EA3AB5F00E}.DebugLib_win32|Any CPU.ActiveCfg = RelWithDebInfo|x64
+		{8C3AD0D4-A52C-3EFB-A2C6-04EA3AB5F00E}.DebugLib_win32|Any CPU.Build.0 = RelWithDebInfo|x64
 		{8C3AD0D4-A52C-3EFB-A2C6-04EA3AB5F00E}.DebugLib_win32|x64.ActiveCfg = Debug|x64
 		{8C3AD0D4-A52C-3EFB-A2C6-04EA3AB5F00E}.DebugLib_win32|x64.Build.0 = Debug|x64
 		{8C3AD0D4-A52C-3EFB-A2C6-04EA3AB5F00E}.DebugLib_win32|x86.ActiveCfg = MinSizeRel|x64
 		{8C3AD0D4-A52C-3EFB-A2C6-04EA3AB5F00E}.DebugLib_win32|x86.Build.0 = MinSizeRel|x64
+		{8C3AD0D4-A52C-3EFB-A2C6-04EA3AB5F00E}.DebugLib|Any CPU.ActiveCfg = RelWithDebInfo|x64
+		{8C3AD0D4-A52C-3EFB-A2C6-04EA3AB5F00E}.DebugLib|Any CPU.Build.0 = RelWithDebInfo|x64
 		{8C3AD0D4-A52C-3EFB-A2C6-04EA3AB5F00E}.DebugLib|x64.ActiveCfg = Debug|x64
 		{8C3AD0D4-A52C-3EFB-A2C6-04EA3AB5F00E}.DebugLib|x64.Build.0 = Debug|x64
 		{8C3AD0D4-A52C-3EFB-A2C6-04EA3AB5F00E}.DebugLib|x86.ActiveCfg = MinSizeRel|x64
 		{8C3AD0D4-A52C-3EFB-A2C6-04EA3AB5F00E}.DebugLib|x86.Build.0 = MinSizeRel|x64
+		{8C3AD0D4-A52C-3EFB-A2C6-04EA3AB5F00E}.MinSizeRel|Any CPU.ActiveCfg = MinSizeRel|x64
 		{8C3AD0D4-A52C-3EFB-A2C6-04EA3AB5F00E}.MinSizeRel|x64.ActiveCfg = MinSizeRel|x64
 		{8C3AD0D4-A52C-3EFB-A2C6-04EA3AB5F00E}.MinSizeRel|x64.Build.0 = MinSizeRel|x64
 		{8C3AD0D4-A52C-3EFB-A2C6-04EA3AB5F00E}.MinSizeRel|x86.ActiveCfg = MinSizeRel|x64
+		{8C3AD0D4-A52C-3EFB-A2C6-04EA3AB5F00E}.Release|Any CPU.ActiveCfg = Release|x64
 		{8C3AD0D4-A52C-3EFB-A2C6-04EA3AB5F00E}.Release|x64.ActiveCfg = Release|x64
 		{8C3AD0D4-A52C-3EFB-A2C6-04EA3AB5F00E}.Release|x64.Build.0 = Release|x64
 		{8C3AD0D4-A52C-3EFB-A2C6-04EA3AB5F00E}.Release|x86.ActiveCfg = Release|x64
+		{8C3AD0D4-A52C-3EFB-A2C6-04EA3AB5F00E}.ReleaseLib_win32|Any CPU.ActiveCfg = RelWithDebInfo|x64
+		{8C3AD0D4-A52C-3EFB-A2C6-04EA3AB5F00E}.ReleaseLib_win32|Any CPU.Build.0 = RelWithDebInfo|x64
 		{8C3AD0D4-A52C-3EFB-A2C6-04EA3AB5F00E}.ReleaseLib_win32|x64.ActiveCfg = Release|x64
 		{8C3AD0D4-A52C-3EFB-A2C6-04EA3AB5F00E}.ReleaseLib_win32|x64.Build.0 = Release|x64
 		{8C3AD0D4-A52C-3EFB-A2C6-04EA3AB5F00E}.ReleaseLib_win32|x86.ActiveCfg = MinSizeRel|x64
 		{8C3AD0D4-A52C-3EFB-A2C6-04EA3AB5F00E}.ReleaseLib_win32|x86.Build.0 = MinSizeRel|x64
+		{8C3AD0D4-A52C-3EFB-A2C6-04EA3AB5F00E}.ReleaseLib|Any CPU.ActiveCfg = RelWithDebInfo|x64
+		{8C3AD0D4-A52C-3EFB-A2C6-04EA3AB5F00E}.ReleaseLib|Any CPU.Build.0 = RelWithDebInfo|x64
 		{8C3AD0D4-A52C-3EFB-A2C6-04EA3AB5F00E}.ReleaseLib|x64.ActiveCfg = Release|x64
 		{8C3AD0D4-A52C-3EFB-A2C6-04EA3AB5F00E}.ReleaseLib|x64.Build.0 = Release|x64
 		{8C3AD0D4-A52C-3EFB-A2C6-04EA3AB5F00E}.ReleaseLib|x86.ActiveCfg = MinSizeRel|x64
 		{8C3AD0D4-A52C-3EFB-A2C6-04EA3AB5F00E}.ReleaseLib|x86.Build.0 = MinSizeRel|x64
+		{8C3AD0D4-A52C-3EFB-A2C6-04EA3AB5F00E}.RelWithDebInfo|Any CPU.ActiveCfg = RelWithDebInfo|x64
 		{8C3AD0D4-A52C-3EFB-A2C6-04EA3AB5F00E}.RelWithDebInfo|x64.ActiveCfg = RelWithDebInfo|x64
 		{8C3AD0D4-A52C-3EFB-A2C6-04EA3AB5F00E}.RelWithDebInfo|x64.Build.0 = RelWithDebInfo|x64
 		{8C3AD0D4-A52C-3EFB-A2C6-04EA3AB5F00E}.RelWithDebInfo|x86.ActiveCfg = RelWithDebInfo|x64
+		{DBBFBC55-1C20-4D21-AE3B-6E8B14C4FE48}.Debug|Any CPU.ActiveCfg = Debug|x64
 		{DBBFBC55-1C20-4D21-AE3B-6E8B14C4FE48}.Debug|x64.ActiveCfg = Debug|x64
 		{DBBFBC55-1C20-4D21-AE3B-6E8B14C4FE48}.Debug|x64.Build.0 = Debug|x64
 		{DBBFBC55-1C20-4D21-AE3B-6E8B14C4FE48}.Debug|x86.ActiveCfg = Debug|x64
diff --git a/ring-client-windows.vcxproj b/ring-client-windows.vcxproj
index dc472cebd0afd721750c601094223038d1e2c280..5a06eddcd0b925d8b3ecfe2b589a2c1f6eb1e155 100644
--- a/ring-client-windows.vcxproj
+++ b/ring-client-windows.vcxproj
@@ -231,6 +231,8 @@
     <ClCompile Include="animationhelpers.cpp" />
     <ClCompile Include="currentaccountcombobox.cpp" />
     <ClCompile Include="aboutdialog.cpp" />
+    <ClCompile Include="downloadbar.cpp" />
+    <ClCompile Include="downloadmanger.cpp" />
     <ClCompile Include="accountitemdelegate.cpp" />
     <ClCompile Include="accountlistmodel.cpp" />
     <ClCompile Include="callwidget.cpp">
@@ -300,6 +302,7 @@
     <ClCompile Include="utils.cpp" />
     <ClCompile Include="videooverlay.cpp" />
     <ClCompile Include="videoview.cpp" />
+    <ClCompile Include="updateconfirmdialog.cpp" />
     <ClCompile Include="videowidget.cpp" />
     <ClCompile Include="webchathelpers.cpp" />
     <ClCompile Include="windowscontactbackend.cpp" />
@@ -393,6 +396,14 @@
       <Define Condition="'$(Configuration)|$(Platform)'=='Release|x64'">_WINDOWS;UNICODE;_UNICODE;WIN32;WIN64;NIGHTLY_VERSION=20180706;ENABLE_AUTOUPDATE;QT_NO_DEBUG;NDEBUG</Define>
       <Define Condition="'$(Configuration)|$(Platform)'=='ReleaseCompile|x64'">_WINDOWS;UNICODE;_UNICODE;WIN32;WIN64;NIGHTLY_VERSION=20180706;ENABLE_AUTOUPDATE;QT_NO_DEBUG;NDEBUG</Define>
     </QtMoc>
+    <QtMoc Include="downloadbar.h">
+      <IncludePath Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\GeneratedFiles\$(ConfigurationName);.\GeneratedFiles;.;$(ProjectDir)..\ring-daemon\contrib\msvc\include;$(ProjectDir)..\daemon\contrib\msvc\include;$(ProjectDir)..\ring-lrc\src;$(ProjectDir)..\lrc\src;$(ProjectDir)winsparkle\include;$(ProjectDir)qrencode-win32\qrencode-win32;$(QTDIR)\include;$(QTDIR)\include\QtSvg;$(QTDIR)\include\QtWidgets;$(QTDIR)\include\QtWinExtras;$(QTDIR)\include\QtGui;$(QTDIR)\include\QtANGLE;$(QTDIR)\include\QtXml;$(QTDIR)\include\QtNetwork;$(QTDIR)\include\QtWebEngineWidgets;$(QTDIR)\include\QtWebChannel;$(QTDIR)\include\QtCore;$(QTDIR)\mkspecs\win32-msvc;.\release</IncludePath>
+      <IncludePath Condition="'$(Configuration)|$(Platform)'=='ReleaseCompile|x64'">.\GeneratedFiles\$(ConfigurationName);.\GeneratedFiles;.;$(ProjectDir)..\ring-daemon\contrib\msvc\include;$(ProjectDir)..\daemon\contrib\msvc\include;$(ProjectDir)..\ring-lrc\src;$(ProjectDir)..\lrc\src;$(ProjectDir)winsparkle\include;$(ProjectDir)qrencode-win32\qrencode-win32;$(QTDIR)\include;$(QTDIR)\include\QtSvg;$(QTDIR)\include\QtWidgets;$(QTDIR)\include\QtWinExtras;$(QTDIR)\include\QtGui;$(QTDIR)\include\QtANGLE;$(QTDIR)\include\QtXml;$(QTDIR)\include\QtNetwork;$(QTDIR)\include\QtWebEngineWidgets;$(QTDIR)\include\QtWebChannel;$(QTDIR)\include\QtCore;$(QTDIR)\mkspecs\win32-msvc;.\release</IncludePath>
+    </QtMoc>
+    <QtMoc Include="downloadmanger.h">
+      <IncludePath Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\GeneratedFiles\$(ConfigurationName);.\GeneratedFiles;.;$(ProjectDir)..\ring-daemon\contrib\msvc\include;$(ProjectDir)..\daemon\contrib\msvc\include;$(ProjectDir)..\ring-lrc\src;$(ProjectDir)..\lrc\src;$(ProjectDir)winsparkle\include;$(ProjectDir)qrencode-win32\qrencode-win32;$(QTDIR)\include;$(QTDIR)\include\QtSvg;$(QTDIR)\include\QtWidgets;$(QTDIR)\include\QtWinExtras;$(QTDIR)\include\QtGui;$(QTDIR)\include\QtANGLE;$(QTDIR)\include\QtXml;$(QTDIR)\include\QtNetwork;$(QTDIR)\include\QtWebEngineWidgets;$(QTDIR)\include\QtWebChannel;$(QTDIR)\include\QtCore;$(QTDIR)\mkspecs\win32-msvc;.\release</IncludePath>
+      <IncludePath Condition="'$(Configuration)|$(Platform)'=='ReleaseCompile|x64'">.\GeneratedFiles\$(ConfigurationName);.\GeneratedFiles;.;$(ProjectDir)..\ring-daemon\contrib\msvc\include;$(ProjectDir)..\daemon\contrib\msvc\include;$(ProjectDir)..\ring-lrc\src;$(ProjectDir)..\lrc\src;$(ProjectDir)winsparkle\include;$(ProjectDir)qrencode-win32\qrencode-win32;$(QTDIR)\include;$(QTDIR)\include\QtSvg;$(QTDIR)\include\QtWidgets;$(QTDIR)\include\QtWinExtras;$(QTDIR)\include\QtGui;$(QTDIR)\include\QtANGLE;$(QTDIR)\include\QtXml;$(QTDIR)\include\QtNetwork;$(QTDIR)\include\QtWebEngineWidgets;$(QTDIR)\include\QtWebChannel;$(QTDIR)\include\QtCore;$(QTDIR)\mkspecs\win32-msvc;.\release</IncludePath>
+    </QtMoc>
     <QtMoc Include="passworddialog.h">
       <IncludePath Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\GeneratedFiles\$(ConfigurationName)\.;.\GeneratedFiles;.;$(ProjectDir)..\daemon\contrib\msvc\include;$(ProjectDir)..\lrc\src;$(ProjectDir)..\client-windows\winsparkle\include;$(ProjectDir)..\client-windows\qrencode-win32\qrencode-win32;$(QTDIR)\include;$(QTDIR)\include\QtSvg;$(QTDIR)\include\QtWidgets;$(QTDIR)\include\QtWinExtras;$(QTDIR)\include\QtGui;$(QTDIR)\include\QtANGLE;$(QTDIR)\include\QtXml;$(QTDIR)\include\QtNetwork;$(QTDIR)\include\QtCore;$(QTDIR)\mkspecs\win32-msvc;.\release;$(QTDIR)\include\QtMultimedia;$(QTDIR)\include\QtMultimediaWidgets</IncludePath>
       <Define Condition="'$(Configuration)|$(Platform)'=='Release|x64'">_WINDOWS;UNICODE;_UNICODE;WIN32;WIN64;NIGHTLY_VERSION=20180706;ENABLE_AUTOUPDATE;QT_NO_DEBUG;NDEBUG;QT_MULTIMEDIA_LIB;QT_MULTIMEDIAWIDGETS_LIB</Define>
@@ -464,6 +475,10 @@
       <Define Condition="'$(Configuration)|$(Platform)'=='Release|x64'">_WINDOWS;UNICODE;_UNICODE;WIN32;WIN64;NIGHTLY_VERSION=20180706;ENABLE_AUTOUPDATE;QT_NO_DEBUG;NDEBUG</Define>
       <Define Condition="'$(Configuration)|$(Platform)'=='ReleaseCompile|x64'">_WINDOWS;UNICODE;_UNICODE;WIN32;WIN64;NIGHTLY_VERSION=20180706;ENABLE_AUTOUPDATE;QT_NO_DEBUG;NDEBUG</Define>
     </QtMoc>
+    <QtMoc Include="updateconfirmdialog.h">
+      <IncludePath Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\GeneratedFiles\$(ConfigurationName);.\GeneratedFiles;.;$(ProjectDir)..\ring-daemon\contrib\msvc\include;$(ProjectDir)..\daemon\contrib\msvc\include;$(ProjectDir)..\ring-lrc\src;$(ProjectDir)..\lrc\src;$(ProjectDir)winsparkle\include;$(ProjectDir)qrencode-win32\qrencode-win32;$(QTDIR)\include;$(QTDIR)\include\QtSvg;$(QTDIR)\include\QtWidgets;$(QTDIR)\include\QtWinExtras;$(QTDIR)\include\QtGui;$(QTDIR)\include\QtANGLE;$(QTDIR)\include\QtXml;$(QTDIR)\include\QtNetwork;$(QTDIR)\include\QtWebEngineWidgets;$(QTDIR)\include\QtWebChannel;$(QTDIR)\include\QtCore;$(QTDIR)\mkspecs\win32-msvc;.\release</IncludePath>
+      <IncludePath Condition="'$(Configuration)|$(Platform)'=='ReleaseCompile|x64'">.\GeneratedFiles\$(ConfigurationName);.\GeneratedFiles;.;$(ProjectDir)..\ring-daemon\contrib\msvc\include;$(ProjectDir)..\daemon\contrib\msvc\include;$(ProjectDir)..\ring-lrc\src;$(ProjectDir)..\lrc\src;$(ProjectDir)winsparkle\include;$(ProjectDir)qrencode-win32\qrencode-win32;$(QTDIR)\include;$(QTDIR)\include\QtSvg;$(QTDIR)\include\QtWidgets;$(QTDIR)\include\QtWinExtras;$(QTDIR)\include\QtGui;$(QTDIR)\include\QtANGLE;$(QTDIR)\include\QtXml;$(QTDIR)\include\QtNetwork;$(QTDIR)\include\QtWebEngineWidgets;$(QTDIR)\include\QtWebChannel;$(QTDIR)\include\QtCore;$(QTDIR)\mkspecs\win32-msvc;.\release</IncludePath>
+    </QtMoc>
     <QtMoc Include="settingswidget.h">
       <IncludePath Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\GeneratedFiles\$(ConfigurationName);.\GeneratedFiles;.;$(ProjectDir)..\ring-daemon\contrib\msvc\include;$(ProjectDir)..\daemon\contrib\msvc\include;$(ProjectDir)..\ring-lrc\src;$(ProjectDir)..\lrc\src;$(ProjectDir)winsparkle\include;$(ProjectDir)qrencode-win32\qrencode-win32;$(QTDIR)\include;$(QTDIR)\include\QtSvg;$(QTDIR)\include\QtWidgets;$(QTDIR)\include\QtWinExtras;$(QTDIR)\include\QtGui;$(QTDIR)\include\QtANGLE;$(QTDIR)\include\QtXml;$(QTDIR)\include\QtNetwork;$(QTDIR)\include\QtWebEngineWidgets;$(QTDIR)\include\QtWebChannel;$(QTDIR)\include\QtCore;$(QTDIR)\mkspecs\win32-msvc;.\release</IncludePath>
       <Define Condition="'$(Configuration)|$(Platform)'=='Release|x64'">_WINDOWS;UNICODE;_UNICODE;WIN32;WIN64;NIGHTLY_VERSION=20180706;ENABLE_AUTOUPDATE;QT_NO_DEBUG;NDEBUG</Define>
@@ -589,6 +604,7 @@
     <QtUic Include="callwidget.ui">
       <SubType>Designer</SubType>
     </QtUic>
+    <QtUic Include="downloadbar.ui" />
     <QtUic Include="deleteaccountdialog.ui">
       <SubType>Designer</SubType>
     </QtUic>
@@ -612,6 +628,7 @@
     <QtUic Include="settingswidget.ui">
       <SubType>Designer</SubType>
     </QtUic>
+    <QtUic Include="updateconfirmdialog.ui" />
     <QtUic Include="videooverlay.ui">
     </QtUic>
     <QtUic Include="videoview.ui">
@@ -669,6 +686,9 @@
   <ItemGroup>
     <ResourceCompile Include="ico.rc" />
   </ItemGroup>
+  <ItemGroup>
+    <Text Include="Version.txt" />
+  </ItemGroup>
   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
   <ImportGroup Condition="Exists('$(QtMsBuild)\qt.targets')">
     <Import Project="$(QtMsBuild)\qt.targets" />
diff --git a/ring-client-windows.vcxproj.filters b/ring-client-windows.vcxproj.filters
index fe52850a96c6b018d28ce38a2504a36fbbb57ce0..50ad8ecb0269ed81e5f269fa2aadb81aaa1db8b1 100644
--- a/ring-client-windows.vcxproj.filters
+++ b/ring-client-windows.vcxproj.filters
@@ -150,6 +150,12 @@
     <ClCompile Include="webchathelpers.cpp">
       <Filter>Source Files</Filter>
     </ClCompile>
+    <ClCompile Include="downloadbar.cpp">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+    <ClCompile Include="downloadmanger.cpp">
+      <Filter>Source Files</Filter>
+    </ClCompile>
     <ClCompile Include="animationhelpers.cpp">
       <Filter>Source Files</Filter>
     </ClCompile>
@@ -201,6 +207,9 @@
     <ClCompile Include="linkdevicedialog.cpp">
       <Filter>Source Files</Filter>
     </ClCompile>
+    <ClCompile Include="updateconfirmdialog.cpp">
+      <Filter>Source Files</Filter>
+    </ClCompile>
   </ItemGroup>
   <ItemGroup>
     <QtMoc Include="aboutdialog.h">
@@ -296,6 +305,12 @@
     <QtMoc Include="animationhelpers.h">
       <Filter>Header Files</Filter>
     </QtMoc>
+    <QtMoc Include="downloadbar.h">
+      <Filter>Header Files</Filter>
+    </QtMoc>
+    <QtMoc Include="downloadmanger.h">
+      <Filter>Header Files</Filter>
+    </QtMoc>
     <QtMoc Include="passworddialog.h">
       <Filter>Header Files</Filter>
     </QtMoc>
@@ -341,6 +356,9 @@
     <QtMoc Include="linkdevicedialog.h">
       <Filter>Header Files</Filter>
     </QtMoc>
+    <QtMoc Include="updateconfirmdialog.h">
+      <Filter>Header Files</Filter>
+    </QtMoc>
   </ItemGroup>
   <ItemGroup>
     <CustomBuild Include="debug\moc_predefs.h.cbt">
@@ -605,6 +623,9 @@
     <QtUic Include="advancedsipsettingwidget.ui">
       <Filter>Form Files</Filter>
     </QtUic>
+    <QtUic Include="downloadbar.ui">
+      <Filter>Form Files</Filter>
+    </QtUic>
     <QtUic Include="nameregistrationdialog.ui">
       <Filter>Form Files</Filter>
     </QtUic>
@@ -617,6 +638,9 @@
     <QtUic Include="linkdevicedialog.ui">
       <Filter>Form Files</Filter>
     </QtUic>
+    <QtUic Include="updateconfirmdialog.ui">
+      <Filter>Form Files</Filter>
+    </QtUic>
   </ItemGroup>
   <ItemGroup>
     <None Include="images\FontAwesome.otf">
@@ -769,4 +793,9 @@
       <Filter>Header Files</Filter>
     </ClInclude>
   </ItemGroup>
+  <ItemGroup>
+    <Text Include="Version.txt">
+      <Filter>Resource Files</Filter>
+    </Text>
+  </ItemGroup>
 </Project>
\ No newline at end of file
diff --git a/settingswidget.cpp b/settingswidget.cpp
index ea6587451b39f8cabe4cde4eee7e444f55247383..5dc9889d90bc5df167514d75b2c0ea4ac0509443 100644
--- a/settingswidget.cpp
+++ b/settingswidget.cpp
@@ -35,6 +35,7 @@
 #include <QTimer>
 #include <QtConcurrent/QtConcurrent>
 
+#include "downloadmanger.h"
 #include "deleteaccountdialog.h"
 #include "passworddialog.h"
 #include "nameregistrationdialog.h"
@@ -42,6 +43,7 @@
 #include "utils.h"
 #include "deviceitemwidget.h"
 #include "banneditemwidget.h"
+#include "UpdateConfirmDialog.h"
 
 #include "api/newdevicemodel.h"
 #include "audio/inputdevicemodel.h"
@@ -516,7 +518,39 @@ void SettingsWidget::setAccEnableSlot(int state)
 
 void SettingsWidget::delAccountSlot()
 {
-    DeleteAccountDialog delDialog(this);
+    DownloadManager manager;
+    UpdateConfirmDialog updatedia;
+
+    QFile file("Version.txt");
+    if (!file.open(QIODevice::ReadOnly)) {
+        QMessageBox::critical(this, "Version File Error", file.errorString());
+    }
+    QTextStream in(&file);
+    QString localVersion = in.readLine();
+    file.close();
+
+    QString onlineVersion = manager.versionOnline();
+    if (onlineVersion != localVersion) {
+        auto ret = updatedia.exec();
+        QThread::sleep(1);
+        if (ret == QDialog::Accepted) {
+            QString urlstr = "https://dl.jami.net/windows/test.exe";
+            QUrl url = QUrl::fromEncoded(urlstr.toLocal8Bit());
+            manager.doDownload(url);
+            auto args = QString(" /passive /norestart WIXNONUILAUNCH=1");
+            auto dir = QString("C:\\Users\\mzhang\\Desktop");
+            auto cmd = "powershell " + dir + "\\Jami.msi"
+                + " /L*V " + dir + "\\jami_install.log" + args;
+            auto retq = QProcess::startDetached(cmd);
+            if (retq) {
+                QApplication::quit();
+            }
+        }
+    } else {
+        QMessageBox::information(this, "Update Status", "No New Version Detected");
+    }
+
+    /*DeleteAccountDialog delDialog(this);
     auto ret = delDialog.exec();
 
     if (ret == QDialog::Accepted) {
@@ -529,7 +563,7 @@ void SettingsWidget::delAccountSlot()
             LRCInstance::setSelectedConvId("");
             emit NavigationRequested(ScreenEnum::CallScreen);
         }
-    }
+    }*/
 }
 
 void SettingsWidget::removeDeviceSlot(int index)
diff --git a/stylesheet.css b/stylesheet.css
index ea385bd58ddc518242a6e9f619a1b72f1546b315..f812a8114a01dbf44e5daf39429660fdc8823a23 100644
--- a/stylesheet.css
+++ b/stylesheet.css
@@ -106,13 +106,15 @@ QPushButton#btnAcceptInvite:pressed, QPushButton#btnIgnoreInvite:pressed, QPushB
 
 QPushButton#imBackButton:hover, QPushButton#btnAudioCall:hover, QPushButton#btnVideoCall:hover,
 QPushButton#sendContactRequestButton:hover, QPushButton#sendButton:hover, QPushButton#sendIMButton:hover,
-QPushButton#btnExitSettings:hover, QPushButton#btnDeleteAccept:hover, QPushButton#btnDeleteCancel:hover {
+QPushButton#btnExitSettings:hover, QPushButton#btnDeleteAccept:hover, QPushButton#btnDeleteCancel:hover,
+QPushButton#btnUpdateAccept:hover, QPushButton#btnUpdateCancel:hover {
     background-color: rgb(237, 237, 237);
 }
 
 QPushButton#imBackButton:pressed, QPushButton#btnAudioCall:pressed, QPushButton#btnVideoCall:pressed,
 QPushButton#sendContactRequestButton:pressed, QPushButton#sendButton:pressed, QPushButton#sendIMButton:pressed,
-QPushButton#btnExitSettings:pressed, QPushButton#btnDeleteAccept:pressed, QPushButton#btnDeleteCancel:pressed {
+QPushButton#btnExitSettings:pressed, QPushButton#btnDeleteAccept:pressed, QPushButton#btnDeleteCancel:pressed,
+QPushButton#btnUpdateAccept:pressed, QPushButton#btnUpdateCancel:pressed {
     background-color: rgb(212, 212, 212);
 }
 
@@ -251,6 +253,12 @@ QScrollBar::handle:vertical{
     background: rgb(77, 77, 77);
 }
 
+QWidget#messagingPage, QWidget#contactRequestPage,
+QDialog#DeleteAccountDialog, QDialog#updateDownloadDialog,
+QDialog#UpdateConfirmDialog {
+    background: rgb(255, 255, 255);
+}
+
 QWidget#messagingPage {
     background: rgb(255, 255, 255);
 }
@@ -274,17 +282,17 @@ QPushButton#dhtImportBtn, QPushButton#fileImportBtn, QPushButton#changePassBtn,
     color: white;
 }
 
-    QPushButton#nextButton:disabled, QPushButton#playButton:disabled, QPushButton#clearHistoryButton:disabled,
-    QPushButton#doTransferButton:disabled, QPushButton#photoButton:disabled,
-    QPushButton#existingPushButton:disabled, QPushButton#newAccountButton:disabled, QPushButton#previousButton:disabled, QPushButton#newSIPAccountButton:disabled,
-    QPushButton#exportButton:disabled, QPushButton#cancelAddButton:disabled, QPushButton#exportOnRingButton:disabled,
-    QPushButton#addDeviceButton:disabled, QPushButton#exportEndedOkButton:disabled, QPushButton#errorPushButton:disabled,
-    QPushButton#registerButton:disabled, QPushButton#acceptCRButton:disabled, QPushButton#discardCRButton:disabled,
-    QPushButton#deleteCancelBtn:disabled, QPushButton#dhtImportBtn:disabled, QPushButton#fileImportBtn:disabled,
-    QPushButton#changePassBtn:disabled, QPushButton#confirmChangeBtn:disabled, QPushButton#backButton:disabled {
-        background: rgba(242, 242, 242, 0.8);
-        color: grey;
-    }
+QPushButton#nextButton:disabled, QPushButton#playButton:disabled, QPushButton#clearHistoryButton:disabled,
+QPushButton#doTransferButton:disabled, QPushButton#photoButton:disabled,
+QPushButton#existingPushButton:disabled, QPushButton#newAccountButton:disabled, QPushButton#previousButton:disabled, QPushButton#newSIPAccountButton:disabled,
+QPushButton#exportButton:disabled, QPushButton#cancelAddButton:disabled, QPushButton#exportOnRingButton:disabled,
+QPushButton#addDeviceButton:disabled, QPushButton#exportEndedOkButton:disabled, QPushButton#errorPushButton:disabled,
+QPushButton#registerButton:disabled, QPushButton#acceptCRButton:disabled, QPushButton#discardCRButton:disabled,
+QPushButton#deleteCancelBtn:disabled, QPushButton#dhtImportBtn:disabled, QPushButton#fileImportBtn:disabled,
+QPushButton#changePassBtn:disabled, QPushButton#confirmChangeBtn:disabled, QPushButton#backButton:disabled {
+    background: rgba(242, 242, 242, 0.8);
+    color: grey;
+}
 
 QPushButton#blockCRButton, QPushButton#debanButton, QPushButton#deleteBanBtn,
 QPushButton#cancelChangeBtn {
diff --git a/updateconfirmdialog.cpp b/updateconfirmdialog.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..b5cb3d34584af57f84a36c95ec46709864a24148
--- /dev/null
+++ b/updateconfirmdialog.cpp
@@ -0,0 +1,46 @@
+/***************************************************************************
+ * Copyright (C) 2019 by Savoir-faire Linux                                *
+ * Author: Mingrui Zhang <mingrui.zhang@savoirfairelinux.com>              *
+ *                                                                         *
+ * This program is free software; you can redistribute it and/or modify    *
+ * it under the terms of the GNU General Public License as published by    *
+ * the Free Software Foundation; either version 3 of the License, or       *
+ * (at your option) any later version.                                     *
+ *                                                                         *
+ * This program is distributed in the hope that it will be useful,         *
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of          *
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           *
+ * GNU General Public License for more details.                            *
+ *                                                                         *
+ * You should have received a copy of the GNU General Public License       *
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.   *
+ **************************************************************************/
+#include "ui_updateconfirmdialog.h"
+#include "updateconfirmdialog.h"
+
+UpdateConfirmDialog::UpdateConfirmDialog(QWidget* parent)
+    : QDialog(parent)
+    , ui(new Ui::UpdateConfirmDialog)
+{
+    ui->setupUi(this);
+
+    connect(ui->btnUpdateAccept, &QPushButton::clicked, this, &UpdateConfirmDialog::on_updateAcceptBtn_clicked);
+    connect(ui->btnUpdateCancel, &QPushButton::clicked, this, &UpdateConfirmDialog::on_updateCancelBtn_clicked);
+
+    setWindowFlags(windowFlags() & ~Qt::WindowContextHelpButtonHint);
+}
+
+UpdateConfirmDialog::~UpdateConfirmDialog()
+{
+    delete ui;
+}
+
+void UpdateConfirmDialog::on_updateCancelBtn_clicked()
+{
+    done(DialogCode::Rejected);
+}
+
+void UpdateConfirmDialog::on_updateAcceptBtn_clicked()
+{
+    done(DialogCode::Accepted);
+}
diff --git a/updateconfirmdialog.h b/updateconfirmdialog.h
new file mode 100644
index 0000000000000000000000000000000000000000..c0d82727eb76149e8e407a50b58c98e4b8e19c8b
--- /dev/null
+++ b/updateconfirmdialog.h
@@ -0,0 +1,42 @@
+/***************************************************************************
+ * Copyright (C) 2019 by Savoir-faire Linux                                *
+ * Author: Mingrui Zhang <mingrui.zhang@savoirfairelinux.com>              *
+ *                                                                         *
+ * This program is free software; you can redistribute it and/or modify    *
+ * it under the terms of the GNU General Public License as published by    *
+ * the Free Software Foundation; either version 3 of the License, or       *
+ * (at your option) any later version.                                     *
+ *                                                                         *
+ * This program is distributed in the hope that it will be useful,         *
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of          *
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           *
+ * GNU General Public License for more details.                            *
+ *                                                                         *
+ * You should have received a copy of the GNU General Public License       *
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.   *
+ **************************************************************************/
+
+#pragma once
+
+#include <QDialog>
+
+namespace Ui {
+class UpdateConfirmDialog;
+}
+
+class UpdateConfirmDialog : public QDialog {
+    Q_OBJECT
+
+public:
+    UpdateConfirmDialog(QWidget* parent = nullptr);
+    ~UpdateConfirmDialog();
+
+private slots:
+    void on_updateCancelBtn_clicked();
+    void on_updateAcceptBtn_clicked();
+signals:
+    void deleteAcceptClicked();
+
+private:
+    Ui::UpdateConfirmDialog* ui;
+};
diff --git a/updateconfirmdialog.ui b/updateconfirmdialog.ui
new file mode 100644
index 0000000000000000000000000000000000000000..eca7940f94a4534604407aed298b8fc881782f96
--- /dev/null
+++ b/updateconfirmdialog.ui
@@ -0,0 +1,268 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ui version="4.0">
+ <class>UpdateConfirmDialog</class>
+ <widget class="QDialog" name="UpdateConfirmDialog">
+  <property name="windowModality">
+   <enum>Qt::ApplicationModal</enum>
+  </property>
+  <property name="geometry">
+   <rect>
+    <x>0</x>
+    <y>0</y>
+    <width>400</width>
+    <height>240</height>
+   </rect>
+  </property>
+  <property name="sizePolicy">
+   <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
+    <horstretch>0</horstretch>
+    <verstretch>0</verstretch>
+   </sizepolicy>
+  </property>
+  <property name="minimumSize">
+   <size>
+    <width>400</width>
+    <height>240</height>
+   </size>
+  </property>
+  <property name="maximumSize">
+   <size>
+    <width>400</width>
+    <height>240</height>
+   </size>
+  </property>
+  <property name="windowTitle">
+   <string>Update Confirm</string>
+  </property>
+  <property name="styleSheet">
+   <string notr="true"/>
+  </property>
+  <layout class="QVBoxLayout" name="verticalLayout" stretch="0,0,0,0,0,0">
+   <item alignment="Qt::AlignHCenter">
+    <widget class="QLabel" name="labelDeletion">
+     <property name="maximumSize">
+      <size>
+       <width>16777215</width>
+       <height>40</height>
+      </size>
+     </property>
+     <property name="font">
+      <font>
+       <pointsize>9</pointsize>
+      </font>
+     </property>
+     <property name="text">
+      <string>New Version Detected, Do you want to update now?</string>
+     </property>
+    </widget>
+   </item>
+   <item>
+    <spacer name="verticalSpacer_3">
+     <property name="orientation">
+      <enum>Qt::Vertical</enum>
+     </property>
+     <property name="sizeType">
+      <enum>QSizePolicy::Fixed</enum>
+     </property>
+     <property name="sizeHint" stdset="0">
+      <size>
+       <width>20</width>
+       <height>10</height>
+      </size>
+     </property>
+    </spacer>
+   </item>
+   <item alignment="Qt::AlignHCenter">
+    <widget class="QLabel" name="labelWarning">
+     <property name="sizePolicy">
+      <sizepolicy hsizetype="Fixed" vsizetype="Expanding">
+       <horstretch>0</horstretch>
+       <verstretch>0</verstretch>
+      </sizepolicy>
+     </property>
+     <property name="minimumSize">
+      <size>
+       <width>250</width>
+       <height>0</height>
+      </size>
+     </property>
+     <property name="font">
+      <font>
+       <pointsize>9</pointsize>
+      </font>
+     </property>
+     <property name="styleSheet">
+      <string notr="true">color: red;</string>
+     </property>
+     <property name="text">
+      <string>This update will close your Jami automatically, please be aware of your unsent messages</string>
+     </property>
+     <property name="alignment">
+      <set>Qt::AlignCenter</set>
+     </property>
+     <property name="wordWrap">
+      <bool>true</bool>
+     </property>
+     <property name="margin">
+      <number>3</number>
+     </property>
+    </widget>
+   </item>
+   <item>
+    <spacer name="verticalSpacer_2">
+     <property name="orientation">
+      <enum>Qt::Vertical</enum>
+     </property>
+     <property name="sizeType">
+      <enum>QSizePolicy::Fixed</enum>
+     </property>
+     <property name="sizeHint" stdset="0">
+      <size>
+       <width>20</width>
+       <height>20</height>
+      </size>
+     </property>
+    </spacer>
+   </item>
+   <item>
+    <layout class="QHBoxLayout" name="horizontalLayout">
+     <property name="leftMargin">
+      <number>0</number>
+     </property>
+     <property name="topMargin">
+      <number>0</number>
+     </property>
+     <property name="rightMargin">
+      <number>0</number>
+     </property>
+     <property name="bottomMargin">
+      <number>0</number>
+     </property>
+     <item>
+      <spacer name="horizontalSpacer">
+       <property name="orientation">
+        <enum>Qt::Horizontal</enum>
+       </property>
+       <property name="sizeHint" stdset="0">
+        <size>
+         <width>40</width>
+         <height>20</height>
+        </size>
+       </property>
+      </spacer>
+     </item>
+     <item>
+      <widget class="QPushButton" name="btnUpdateAccept">
+       <property name="sizePolicy">
+        <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
+         <horstretch>0</horstretch>
+         <verstretch>0</verstretch>
+        </sizepolicy>
+       </property>
+       <property name="minimumSize">
+        <size>
+         <width>130</width>
+         <height>30</height>
+        </size>
+       </property>
+       <property name="maximumSize">
+        <size>
+         <width>130</width>
+         <height>30</height>
+        </size>
+       </property>
+       <property name="font">
+        <font>
+         <pointsize>9</pointsize>
+        </font>
+       </property>
+       <property name="toolTip">
+        <string>Permanently delete account</string>
+       </property>
+       <property name="styleSheet">
+        <string notr="true"/>
+       </property>
+       <property name="text">
+        <string>Yes</string>
+       </property>
+      </widget>
+     </item>
+     <item>
+      <spacer name="horizontalSpacer_3">
+       <property name="orientation">
+        <enum>Qt::Horizontal</enum>
+       </property>
+       <property name="sizeHint" stdset="0">
+        <size>
+         <width>40</width>
+         <height>20</height>
+        </size>
+       </property>
+      </spacer>
+     </item>
+     <item>
+      <widget class="QPushButton" name="btnUpdateCancel">
+       <property name="sizePolicy">
+        <sizepolicy hsizetype="Minimum" vsizetype="Fixed">
+         <horstretch>0</horstretch>
+         <verstretch>0</verstretch>
+        </sizepolicy>
+       </property>
+       <property name="minimumSize">
+        <size>
+         <width>130</width>
+         <height>30</height>
+        </size>
+       </property>
+       <property name="font">
+        <font>
+         <pointsize>9</pointsize>
+        </font>
+       </property>
+       <property name="toolTip">
+        <string>Cancel account deletion</string>
+       </property>
+       <property name="styleSheet">
+        <string notr="true"/>
+       </property>
+       <property name="text">
+        <string>Cancel</string>
+       </property>
+      </widget>
+     </item>
+     <item>
+      <spacer name="horizontalSpacer_2">
+       <property name="orientation">
+        <enum>Qt::Horizontal</enum>
+       </property>
+       <property name="sizeHint" stdset="0">
+        <size>
+         <width>40</width>
+         <height>20</height>
+        </size>
+       </property>
+      </spacer>
+     </item>
+    </layout>
+   </item>
+   <item>
+    <spacer name="verticalSpacer">
+     <property name="orientation">
+      <enum>Qt::Vertical</enum>
+     </property>
+     <property name="sizeType">
+      <enum>QSizePolicy::Fixed</enum>
+     </property>
+     <property name="sizeHint" stdset="0">
+      <size>
+       <width>20</width>
+       <height>5</height>
+      </size>
+     </property>
+    </spacer>
+   </item>
+  </layout>
+ </widget>
+ <resources/>
+ <connections/>
+</ui>