diff --git a/app/app.pri b/app/app.pri
index 19a4a61a69d085a58068d6adb6323affd3b6f5e4..53ee440b9fd207041cdf79a18653e5b87957931a 100644
--- a/app/app.pri
+++ b/app/app.pri
@@ -12,7 +12,7 @@ HEADERS += \
     $${PWD}/src/handlers/systemhandler.h \
     $${PWD}/src/handlers/ocsapihandler.h \
     $${PWD}/src/handlers/itemhandler.h \
-    $${PWD}/src/handlers/appimagehandler.h \
+    $${PWD}/src/handlers/updatehandler.h \
     $${PWD}/src/handlers/desktopthemehandler.h
 
 SOURCES += \
@@ -22,7 +22,7 @@ SOURCES += \
     $${PWD}/src/handlers/systemhandler.cpp \
     $${PWD}/src/handlers/ocsapihandler.cpp \
     $${PWD}/src/handlers/itemhandler.cpp \
-    $${PWD}/src/handlers/appimagehandler.cpp \
+    $${PWD}/src/handlers/updatehandler.cpp \
     $${PWD}/src/handlers/desktopthemehandler.cpp
 
 RESOURCES += $${PWD}/configs/configs.qrc
diff --git a/app/src/handlers/appimagehandler.cpp b/app/src/handlers/updatehandler.cpp
similarity index 72%
rename from app/src/handlers/appimagehandler.cpp
rename to app/src/handlers/updatehandler.cpp
index 7ca9fc28bb5f2ae23a6cd6bb05da6166bf7d626a..d81a0550b809220753c1277fde296e4b1e4f7a0d 100644
--- a/app/src/handlers/appimagehandler.cpp
+++ b/app/src/handlers/updatehandler.cpp
@@ -1,4 +1,4 @@
-#include "appimagehandler.h"
+#include "updatehandler.h"
 
 #ifdef QTLIB_UNIX
 #include <thread>
@@ -9,40 +9,41 @@
 
 #include "handlers/confighandler.h"
 
-AppImageHandler::AppImageHandler(ConfigHandler *configHandler, QObject *parent)
+UpdateHandler::UpdateHandler(ConfigHandler *configHandler, QObject *parent)
     : QObject(parent), configHandler_(configHandler)
 {}
 
-QString AppImageHandler::describeAppImage(const QString &path) const
+QString UpdateHandler::checkAll() const
 {
-    QString updateInformation;
+}
+
+QString UpdateHandler::update(const QString &path) const
+{
+}
 
 #ifdef QTLIB_UNIX
+QString UpdateHandler::describeAppImage(const QString &path) const
+{
     appimage::update::Updater appImageUpdater(path.toStdString());
+    QString updateInformation;
     std::string description;
     if (appImageUpdater.describeAppImage(description)) {
         updateInformation = QString::fromStdString(description);
     }
-#endif
-
     return updateInformation;
 }
 
-bool AppImageHandler::isUpdateAvailable(const QString &path) const
+bool UpdateHandler::checkAppImage(const QString &path) const
 {
-#ifdef QTLIB_UNIX
     appimage::update::Updater appImageUpdater(path.toStdString());
     bool updateAvailable;
     if (appImageUpdater.checkForChanges(updateAvailable)) {
         return updateAvailable;
     }
-#endif
-
     return false;
 }
 
-#ifdef QTLIB_UNIX
-bool AppImageHandler::updateAppImage(const QString &path)
+bool UpdateHandler::updateAppImage(const QString &path)
 {
     appimage::update::Updater appImageUpdater(path.toStdString(), false);
     if (appImageUpdater.start()) {
@@ -54,12 +55,12 @@ bool AppImageHandler::updateAppImage(const QString &path)
                 emit updateProgress(path, progress * 100);
             }
         }
-        emit updateFinished(path);
+        auto newPath = path; // dummy
+        emit updateFinished(path, newPath);
         if (!appImageUpdater.hasError()) {
             return true;
         }
     }
-
     return false;
 }
 #endif
diff --git a/app/src/handlers/appimagehandler.h b/app/src/handlers/updatehandler.h
similarity index 51%
rename from app/src/handlers/appimagehandler.h
rename to app/src/handlers/updatehandler.h
index 2cdc8605108ea2c11dd9601eb01e8e6d0bdd73fd..8d047eba8434fcf96ae4797654f744b313ba56dd 100644
--- a/app/src/handlers/appimagehandler.h
+++ b/app/src/handlers/updatehandler.h
@@ -4,26 +4,30 @@
 
 class ConfigHandler;
 
-class AppImageHandler : public QObject
+class UpdateHandler : public QObject
 {
     Q_OBJECT
 
 public:
-    explicit AppImageHandler(ConfigHandler *configHandler, QObject *parent = nullptr);
+    explicit UpdateHandler(ConfigHandler *configHandler, QObject *parent = nullptr);
 
 signals:
+    void checkAllStarted();
+    void checkAllFinished();
     void updateStarted(QString path);
-    void updateFinished(QString path);
+    void updateFinished(QString path, QString newPath);
     void updateProgress(QString path, int progress);
 
 public slots:
-    QString describeAppImage(const QString &path) const;
-    bool isUpdateAvailable(const QString &path) const;
+    bool checkAll() const;
+    bool update(const QString &path) const;
 
+private:
 #ifdef QTLIB_UNIX
+    QString describeAppImage(const QString &path) const;
+    bool checkAppImage(const QString &path) const;
     bool updateAppImage(const QString &path);
 #endif
 
-private:
     ConfigHandler *configHandler_;
 };
diff --git a/app/src/websockets/websocketserver.cpp b/app/src/websockets/websocketserver.cpp
index 649b8a874d4f45d6f87bd19178cbdbd8cbea8d5f..22f7c95a3370f268386b3836bf858ba146e292cc 100644
--- a/app/src/websockets/websocketserver.cpp
+++ b/app/src/websockets/websocketserver.cpp
@@ -10,7 +10,7 @@
 #include "handlers/systemhandler.h"
 #include "handlers/ocsapihandler.h"
 #include "handlers/itemhandler.h"
-#include "handlers/appimagehandler.h"
+#include "handlers/updatehandler.h"
 #include "handlers/desktopthemehandler.h"
 
 WebSocketServer::WebSocketServer(ConfigHandler *configHandler, const QString &serverName, quint16 serverPort, QObject *parent)
@@ -25,7 +25,7 @@ WebSocketServer::WebSocketServer(ConfigHandler *configHandler, const QString &se
     systemHandler_ = new SystemHandler(this);
     ocsApiHandler_ = new OcsApiHandler(configHandler_, this);
     itemHandler_ = new ItemHandler(configHandler_, this);
-    appImageHandler_ = new AppImageHandler(configHandler_, this);
+    updateHandler_ = new UpdateHandler(configHandler_, this);
     desktopThemeHandler_ = new DesktopThemeHandler(this);
 
     connect(itemHandler_, &ItemHandler::metadataSetChanged, this, &WebSocketServer::itemMetadataSetChanged);
@@ -39,9 +39,11 @@ WebSocketServer::WebSocketServer(ConfigHandler *configHandler, const QString &se
     connect(itemHandler_, &ItemHandler::uninstallStarted, this, &WebSocketServer::itemUninstallStarted);
     connect(itemHandler_, &ItemHandler::uninstallFinished, this, &WebSocketServer::itemUninstallFinished);
 
-    connect(appImageHandler_, &AppImageHandler::updateStarted, this, &WebSocketServer::appImageUpdateStarted);
-    connect(appImageHandler_, &AppImageHandler::updateFinished, this, &WebSocketServer::appImageUpdateFinished);
-    connect(appImageHandler_, &AppImageHandler::updateProgress, this, &WebSocketServer::appImageUpdateProgress);
+    connect(updateHandler_, &UpdateHandler::checkAllStarted, this, &WebSocketServer::updateCheckAllStarted);
+    connect(updateHandler_, &UpdateHandler::checkAllFinished, this, &WebSocketServer::updateCheckAllFinished);
+    connect(updateHandler_, &UpdateHandler::updateStarted, this, &WebSocketServer::updateUpdateStarted);
+    connect(updateHandler_, &UpdateHandler::updateFinished, this, &WebSocketServer::updateUpdateFinished);
+    connect(updateHandler_, &UpdateHandler::updateProgress, this, &WebSocketServer::updateUpdateProgress);
 }
 
 WebSocketServer::~WebSocketServer()
@@ -197,26 +199,39 @@ void WebSocketServer::itemUninstallFinished(QJsonObject result)
     sendMessage("", "ItemHandler::uninstallFinished", data);
 }
 
-void WebSocketServer::appImageUpdateStarted(QString path)
+void WebSocketServer::updateCheckAllStarted()
+{
+    QJsonArray data;
+    sendMessage("", "ItemHandler::checkAllStarted", data);
+}
+
+void WebSocketServer::updateCheckAllFinished()
+{
+    QJsonArray data;
+    sendMessage("", "ItemHandler::checkAllFinished", data);
+}
+
+void WebSocketServer::updateUpdateStarted(QString path)
 {
     QJsonArray data;
     data.append(path);
-    sendMessage("", "AppImageHandler::updateStarted", data);
+    sendMessage("", "UpdateHandler::updateStarted", data);
 }
 
-void WebSocketServer::appImageUpdateFinished(QString path)
+void WebSocketServer::updateUpdateFinished(QString path, QString newPath)
 {
     QJsonArray data;
     data.append(path);
-    sendMessage("", "AppImageHandler::updateFinished", data);
+    data.append(newPath);
+    sendMessage("", "UpdateHandler::updateFinished", data);
 }
 
-void WebSocketServer::appImageUpdateProgress(QString path, int progress)
+void WebSocketServer::updateUpdateProgress(QString path, int progress)
 {
     QJsonArray data;
     data.append(path);
     data.append(progress);
-    sendMessage("", "AppImageHandler::updateProgress", data);
+    sendMessage("", "UpdateHandler::updateProgress", data);
 }
 
 void WebSocketServer::receiveMessage(const QString &id, const QString &func, const QJsonArray &data)
@@ -341,19 +356,12 @@ void WebSocketServer::receiveMessage(const QString &id, const QString &func, con
     else if (func == "ItemHandler::uninstall") {
         itemHandler_->uninstall(data.at(0).toString());
     }
-    // AppImageHandler
-    else if (func == "AppImageHandler::describeAppImage") {
-        resultData.append(appImageHandler_->describeAppImage(data.at(0).toString()));
-    }
-    else if (func == "AppImageHandler::isUpdateAvailable") {
-        resultData.append(appImageHandler_->isUpdateAvailable(data.at(0).toString()));
+    // UpdateHandler
+    else if (func == "UpdateHandler::checkAll") {
+        resultData.append(updateHandler_->checkAll());
     }
-    else if (func == "AppImageHandler::updateAppImage") {
-#ifdef QTLIB_UNIX
-        resultData.append(appImageHandler_->updateAppImage(data.at(0).toString()));
-#else
-        resultData.append(false);
-#endif
+    else if (func == "UpdateHandler::update") {
+        resultData.append(updateHandler_->update(data.at(0).toString()));
     }
     // DesktopThemeHandler
     else if (func == "DesktopThemeHandler::desktopEnvironment") {
diff --git a/app/src/websockets/websocketserver.h b/app/src/websockets/websocketserver.h
index 0e4659b5975772c06f512ce4f139c69dc1e8f0da..51ccffe17e2a8c3d818f754ed2fa0fb9d9649c4e 100644
--- a/app/src/websockets/websocketserver.h
+++ b/app/src/websockets/websocketserver.h
@@ -12,7 +12,7 @@ class ConfigHandler;
 class SystemHandler;
 class OcsApiHandler;
 class ItemHandler;
-class AppImageHandler;
+class UpdateHandler;
 class DesktopThemeHandler;
 
 class WebSocketServer : public QObject
@@ -51,9 +51,11 @@ private slots:
     void itemUninstallStarted(QJsonObject result);
     void itemUninstallFinished(QJsonObject result);
 
-    void appImageUpdateStarted(QString path);
-    void appImageUpdateFinished(QString path);
-    void appImageUpdateProgress(QString path, int progress);
+    void updateCheckAllStarted();
+    void updateCheckAllFinished();
+    void updateUpdateStarted(QString path);
+    void updateUpdateFinished(QString path, QString newPath);
+    void updateUpdateProgress(QString path, int progress);
 
 private:
     void receiveMessage(const QString &id, const QString &func, const QJsonArray &data);
@@ -63,7 +65,7 @@ private:
     SystemHandler *systemHandler_;
     OcsApiHandler *ocsApiHandler_;
     ItemHandler *itemHandler_;
-    AppImageHandler *appImageHandler_;
+    UpdateHandler *updateHandler_;
     DesktopThemeHandler *desktopThemeHandler_;
 
     QString serverName_;