diff --git a/src/freedombone-app-babel b/src/freedombone-app-babel
index f4e3cb2b509a93a2013ce9fce2ffa07e8084dc75..33aa60404cf87519c22e461c8c357f83e323c22d 100755
--- a/src/freedombone-app-babel
+++ b/src/freedombone-app-babel
@@ -37,6 +37,7 @@ babel_variables=()
 
 function install_interactive_babel {
     echo -n ''
+    APP_INSTALLED=1
 }
 
 function change_password_babel {
@@ -114,6 +115,7 @@ function install_babel {
 
     function_check configure_firewall_for_babel
     configure_firewall_for_babel
+    APP_INSTALLED=1
 }
 
 # NOTE: deliberately there is no "exit 0"
diff --git a/src/freedombone-app-batman b/src/freedombone-app-batman
index 6290da10988639b658b97016ad500450cea42fce..5fda61d35f0d7fbd8f51aae496882badaa2f69e9 100755
--- a/src/freedombone-app-batman
+++ b/src/freedombone-app-batman
@@ -38,6 +38,7 @@ batman_variables=(MY_USERNAME
 
 function install_interactive_batman {
     echo -n ''
+    APP_INSTALLED=1
 }
 
 function change_password_batman {
@@ -162,6 +163,7 @@ function install_batman {
 
     function_check configure_firewall_for_batman
     configure_firewall_for_batman
+    APP_INSTALLED=1
 }
 
 # NOTE: deliberately no exit 0
diff --git a/src/freedombone-app-blog b/src/freedombone-app-blog
index ff7734c193cefb84e740aa4357f7a5670608aee8..9691a9d2ac6517bbad681a5fb8d597a117383c1f 100755
--- a/src/freedombone-app-blog
+++ b/src/freedombone-app-blog
@@ -165,10 +165,11 @@ function install_interactive_blog {
             fi
         done
 
-        write_config_param "MY_BLOG_TITLE" "$MY_BLOG_TITLE"
-        write_config_param "FULLBLOG_DOMAIN_NAME" "$FULLBLOG_DOMAIN_NAME"
         write_config_param "FULLBLOG_CODE" "$FULLBLOG_CODE"
     fi
+    write_config_param "MY_BLOG_TITLE" "$MY_BLOG_TITLE"
+    write_config_param "FULLBLOG_DOMAIN_NAME" "$FULLBLOG_DOMAIN_NAME"
+    APP_INSTALLED=1
 }
 
 function change_password_blog {
@@ -675,6 +676,7 @@ function install_blog {
     if ! grep -q "blog domain:" $COMPLETION_FILE; then
         echo "blog domain:$FULLBLOG_DOMAIN_NAME" >> $COMPLETION_FILE
     fi
+    APP_INSTALLED=1
 }
 
 # NOTE: deliberately no exit 0
diff --git a/src/freedombone-app-blogstatic b/src/freedombone-app-blogstatic
index d9ca1f5175cc2337be0ba3889880eb59c602965d..448fcde324c415229a25802fbcdf46be3bab81e1 100755
--- a/src/freedombone-app-blogstatic
+++ b/src/freedombone-app-blogstatic
@@ -44,6 +44,7 @@ function configure_interactive_blogstatic {
 
 function install_interactive_blogstatic {
     echo -n ''
+    APP_INSTALLED=1
 }
 
 function change_password_blogstatic {
@@ -341,6 +342,7 @@ function install_blogstatic {
 
     chown -R $MY_USERNAME:$MY_USERNAME $STATIC_BLOG_INSTALL_DIR
     chown -R www-data:www-data $STATIC_BLOG_PATH
+    APP_INSTALLED=1
 }
 
 # NOTE: deliberately no exit 0
diff --git a/src/freedombone-app-cjdns b/src/freedombone-app-cjdns
index 4b22bd13721e489802f613f3fcf0745964e16536..855cb15a50e42ad243a47cb1f83c88d780dbd125 100755
--- a/src/freedombone-app-cjdns
+++ b/src/freedombone-app-cjdns
@@ -53,6 +53,7 @@ cjdns_variables=(MY_USERNAME
 
 function install_interactive_cjdns {
     echo -n ''
+    APP_INSTALLED=1
 }
 
 function change_password_cjdns {
@@ -546,6 +547,7 @@ function install_cjdns {
     install_cjdns_main
     install_cjdns_tools
     install_completed cjdns
+    APP_INSTALLED=1
 }
 
 # NOTE: deliberately no exit 0
diff --git a/src/freedombone-app-dlna b/src/freedombone-app-dlna
index 49f2481ee136bf636ea6d24a03ba235db19fc487..5a715295c19c2e77fc4feffd7822659707995ada 100755
--- a/src/freedombone-app-dlna
+++ b/src/freedombone-app-dlna
@@ -62,6 +62,7 @@ function configure_interactive_dlna {
 
 function install_interactive_dlna {
     echo -n ''
+    APP_INSTALLED=1
 }
 
 function change_password_dlna {
@@ -264,6 +265,7 @@ function script_for_attaching_usb_drive {
 function install_dlna {
     install_dlna_main
     script_for_attaching_usb_drive
+    APP_INSTALLED=1
 }
 
 # NOTE: deliberately no exit 0
diff --git a/src/freedombone-app-emacs b/src/freedombone-app-emacs
index 23ac43f8751b71b2494b64039e0b75f861f10441..a464a94c9fc690d65c63d2421eb125cd9e553915 100755
--- a/src/freedombone-app-emacs
+++ b/src/freedombone-app-emacs
@@ -35,6 +35,7 @@ emacs_variables=(USB_MOUNT
 
 function install_interactive_emacs {
     echo -n ''
+    APP_INSTALLED=1
 }
 
 function change_password_emacs {
@@ -185,6 +186,7 @@ function install_emacs {
     echo '(epa-file-enable)' >> /home/$MY_USERNAME/.emacs
     cp /home/$MY_USERNAME/.emacs /root/.emacs
     chown $MY_USERNAME:$MY_USERNAME /home/$MY_USERNAME/.emacs
+    APP_INSTALLED=1
 }
 
 # NOTE: deliberately no exit 0
diff --git a/src/freedombone-app-gnusocial b/src/freedombone-app-gnusocial
index c38e7e2137477754a9b446ce399319afcfc8ad92..24ba10d0ccbe6da597349c9163b5a6a6500d6d19 100755
--- a/src/freedombone-app-gnusocial
+++ b/src/freedombone-app-gnusocial
@@ -165,11 +165,12 @@ function install_interactive_gnusocial {
             fi
         done
         # save the results in the config file
-        write_config_param "MICROBLOG_DOMAIN_NAME" "$MICROBLOG_DOMAIN_NAME"
         write_config_param "MICROBLOG_CODE" "$MICROBLOG_CODE"
         write_config_param "MICROBLOG_WELCOME_MESSAGE" "$MICROBLOG_WELCOME_MESSAGE"
         write_config_param "MICROBLOG_BACKGROUND_IMAGE_URL" "$MICROBLOG_BACKGROUND_IMAGE_URL"
     fi
+    write_config_param "MICROBLOG_DOMAIN_NAME" "$MICROBLOG_DOMAIN_NAME"
+    APP_INSTALLED=1
 }
 
 function change_password_gnusocial {
@@ -1032,6 +1033,7 @@ function install_gnusocial {
     install_gnusocial_plugin_sharings
     install_gnusocial_plugin_sharings_theme
     install_gnusocial_plugin_nsfw
+    APP_INSTALLED=1
 }
 
 # NOTE: deliberately there is no "exit 0"
diff --git a/src/freedombone-app-gogs b/src/freedombone-app-gogs
index 134a1dcfd1a9af49af8fe64a7cd40d1c15638ba2..e7135c800225dca018ffaf48ac46fe18ae365123 100755
--- a/src/freedombone-app-gogs
+++ b/src/freedombone-app-gogs
@@ -104,9 +104,10 @@ function install_interactive_gogs {
         done
 
         # save the results in the config file
-        write_config_param "GIT_DOMAIN_NAME" "$GIT_DOMAIN_NAME"
         write_config_param "GIT_CODE" "$GIT_CODE"
     fi
+    write_config_param "GIT_DOMAIN_NAME" "$GIT_DOMAIN_NAME"
+    APP_INSTALLED=1
 }
 
 function change_password_gogs {
@@ -728,6 +729,7 @@ function install_gogs {
     else
         sed -i "s|gogs version.*|gogs version:${GOGS_VERSION}|g" ${COMPLETION_FILE}
     fi
+    APP_INSTALLED=1
 }
 
 # NOTE: deliberately no exit 0
diff --git a/src/freedombone-app-hubzilla b/src/freedombone-app-hubzilla
index 545f9ac3c8c16fc2c1a10b0fab8918be5d17ccfb..d352e5a594c5bf055af7e1fd90a424fe8fdd6619 100755
--- a/src/freedombone-app-hubzilla
+++ b/src/freedombone-app-hubzilla
@@ -188,6 +188,7 @@ function install_interactive_hubzilla {
     # save the results in the config file
     write_config_param "HUBZILLA_DOMAIN_NAME" "$HUBZILLA_DOMAIN_NAME"
     write_config_param "HUBZILLA_CODE" "$HUBZILLA_CODE"
+    APP_INSTALLED=1
 }
 
 function change_password_hubzilla {
@@ -647,6 +648,7 @@ function install_hubzilla {
     ${PROJECT_NAME}-addemail -u $MY_USERNAME -e "noreply@$HUBZILLA_DOMAIN_NAME" -g hubzilla --public no
 
     echo "hubzilla domain:${HUBZILLA_DOMAIN_NAME}" >> $COMPLETION_FILE
+    APP_INSTALLED=1
 }
 
 # NOTE: deliberately there is no "exit 0"
diff --git a/src/freedombone-app-ipfs b/src/freedombone-app-ipfs
index e28d10ebd735d0afdebf08d0d6139d3fcfe6f71c..74e239152e8823fb7ad15f148eecf2b1a6657677 100755
--- a/src/freedombone-app-ipfs
+++ b/src/freedombone-app-ipfs
@@ -48,6 +48,7 @@ ipfs_variables=(IPFS_COMMIT
 
 function install_interactive_ipfs {
     echo -n ''
+    APP_INSTALLED=1
 }
 
 function change_password_ipfs {
@@ -601,4 +602,5 @@ function install_ipfs_go {
 function install_ipfs {
     #install_ipfs_js
     install_ipfs_go
+    APP_INSTALLED=1
 }
diff --git a/src/freedombone-app-irc b/src/freedombone-app-irc
index 8db3e2da4ed09f91fb2164ad3b3373197bd6c387..e15ca45f245fe3fcd09f2e7133548c921a86dbff 100755
--- a/src/freedombone-app-irc
+++ b/src/freedombone-app-irc
@@ -202,6 +202,7 @@ function configure_interactive_irc {
 
 function install_interactive_irc {
     echo -n ''
+    APP_INSTALLED=1
 }
 
 function change_password_irc {
@@ -458,6 +459,7 @@ function install_irc_client {
 function install_irc {
     install_irc_server
     install_irc_client
+    APP_INSTALLED=1
 }
 
 # NOTE: deliberately no exit 0
diff --git a/src/freedombone-app-librevault b/src/freedombone-app-librevault
index d2855f3100701605f1897229d5d0070fcc6abf29..b25b092352159f98f57c7b5808223ccc04fa1fea 100755
--- a/src/freedombone-app-librevault
+++ b/src/freedombone-app-librevault
@@ -45,6 +45,7 @@ librevault_variables=(PROTOBUF_REPO
 
 function install_interactive_librevault {
     echo -n ''
+    APP_INSTALLED=1
 }
 
 function change_password_librevault {
@@ -324,6 +325,7 @@ function install_librevault {
 
     systemctl enable librevault-daemon
     systemctl start librevault-daemon
+    APP_INSTALLED=1
 }
 
 # NOTE: deliberately no exit 0
diff --git a/src/freedombone-app-mediagoblin b/src/freedombone-app-mediagoblin
index 7b7eca23cbf99baf101bf4649bbefb327cb97747..d280c434159afd52e05e405238ac66122dcefe20 100755
--- a/src/freedombone-app-mediagoblin
+++ b/src/freedombone-app-mediagoblin
@@ -99,9 +99,10 @@ function install_interactive_mediagoblin {
         done
 
         # save the results in the config file
-        write_config_param "MEDIAGOBLIN_DOMAIN_NAME" "$MEDIAGOBLIN_DOMAIN_NAME"
         write_config_param "MEDIAGOBLIN_CODE" "$MEDIAGOBLIN_CODE"
     fi
+    write_config_param "MEDIAGOBLIN_DOMAIN_NAME" "$MEDIAGOBLIN_DOMAIN_NAME"
+    APP_INSTALLED=1
 }
 
 function change_password_mediagoblin {
@@ -501,6 +502,7 @@ function install_mediagoblin {
     else
         sed -i "s/Mediagoblin domain.*/Mediagoblin domain:$MEDIAGOBLIN_DOMAIN_NAME/g" $COMPLETION_FILE
     fi
+    APP_INSTALLED=1
 }
 
 # NOTE: deliberately no exit 0
diff --git a/src/freedombone-app-mumble b/src/freedombone-app-mumble
index 9cadf916d6501a231ac1ca17ec555666b799b541..fe7cdea373b3b7117935d54bee26ba0a0bdd463a 100755
--- a/src/freedombone-app-mumble
+++ b/src/freedombone-app-mumble
@@ -47,6 +47,7 @@ mumble_variables=(MY_USERNAME
 
 function install_interactive_mumble {
     echo -n ''
+    APP_INSTALLED=1
 }
 
 function change_password_mumble {
@@ -281,6 +282,7 @@ function install_mumble {
 
     function_check configure_firewall_for_mumble
     configure_firewall_for_mumble
+    APP_INSTALLED=1
 }
 
 # NOTE: deliberately no exit 0
diff --git a/src/freedombone-app-rss b/src/freedombone-app-rss
index 2f013aeceacab6dd0eee718c3ab668ab5a645416..587bdf2381541193b38485672f1662b9ff280766 100755
--- a/src/freedombone-app-rss
+++ b/src/freedombone-app-rss
@@ -53,6 +53,7 @@ rss_variables=(RSS_READER_REPO
 
 function install_interactive_rss {
     echo -n ''
+    APP_INSTALLED=1
 }
 
 function change_password_rss {
@@ -605,6 +606,7 @@ function install_rss {
     install_rss_main
     install_rss_gnusocial
     install_rss_mobile_reader
+    APP_INSTALLED=1
 }
 
 # NOTE: deliberately no exit 0
diff --git a/src/freedombone-app-searx b/src/freedombone-app-searx
index 944b78087ad6d37f5ad894eb78c54c31e74d16ae..cdb6c8d7d5124460f469527967b908d9f31107ec 100755
--- a/src/freedombone-app-searx
+++ b/src/freedombone-app-searx
@@ -47,6 +47,7 @@ searx_variables=(SEARX_REPO
 
 function install_interactive_searx {
     echo -n ''
+    APP_INSTALLED=1
 }
 
 function change_password_searx {
@@ -288,6 +289,7 @@ function install_searx {
         chown $MY_USERNAME:$MY_USERNAME /home/$MY_USERNAME/README
         chmod 600 /home/$MY_USERNAME/README
     fi
+    APP_INSTALLED=1
 }
 
 # NOTE: deliberately no exit 0
diff --git a/src/freedombone-app-sip b/src/freedombone-app-sip
index b7602d9d5c25367f7096b9fbbc365df257e6535f..c26286b84692b7883c329eafc565e9ddc3d3dc3a 100755
--- a/src/freedombone-app-sip
+++ b/src/freedombone-app-sip
@@ -86,6 +86,7 @@ function add_user_sip {
 
 function install_interactive_sip {
     echo -n ''
+    APP_INSTALLED=1
 }
 
 function change_password_sip {
@@ -498,6 +499,7 @@ function install_sip_turn {
 function install_sip {
     install_sip_main
     update_sipwitch_daemon
+    APP_INSTALLED=1
 }
 
 # NOTE: deliberately no exit 0
diff --git a/src/freedombone-app-syncthing b/src/freedombone-app-syncthing
index b30f28a11140d6ba2b201fb09abd382745dd601f..05f6c0e065fca8a93c5a25b275e70e728519aebe 100755
--- a/src/freedombone-app-syncthing
+++ b/src/freedombone-app-syncthing
@@ -222,6 +222,7 @@ function run_client_syncthing {
 
 function install_interactive_syncthing {
     echo -n ''
+    APP_INSTALLED=1
 }
 
 function change_password_syncthing {
@@ -560,6 +561,7 @@ function install_syncthing {
 
     function_check configure_firewall_for_syncthing
     configure_firewall_for_syncthing
+    APP_INSTALLED=1
 }
 
 # NOTE: deliberately no exit 0
diff --git a/src/freedombone-app-tahoelafs b/src/freedombone-app-tahoelafs
index 4d141afdec297df8c4935862512f3d3ec63b7c37..24c1b8960f81b8ade4dfa17e121b6829d826e207 100755
--- a/src/freedombone-app-tahoelafs
+++ b/src/freedombone-app-tahoelafs
@@ -45,6 +45,7 @@ tahoelafs_variables=(TAHOELAFS_REPO
 
 function install_interactive_tahoelafs {
     echo -n ''
+    APP_INSTALLED=1
 }
 
 function change_password_tahoelafs {
@@ -357,6 +358,7 @@ function install_tahoelafs {
     systemctl enable tahoelafs
     systemctl daemon-reload
     systemctl start tahoelafs
+    APP_INSTALLED=1
 }
 
 # NOTE: deliberately no exit 0
diff --git a/src/freedombone-app-tox b/src/freedombone-app-tox
index b418b6c511a958fbb548883dcdcd86450c87c7de..96b92ecdfb770f24ea5e89772e7c1cf543bbaafb 100755
--- a/src/freedombone-app-tox
+++ b/src/freedombone-app-tox
@@ -100,6 +100,7 @@ function run_client_tox {
 
 function install_interactive_tox {
     echo -n ''
+    APP_INSTALLED=1
 }
 
 function change_password_tox {
@@ -706,6 +707,7 @@ function install_tox {
         tox_avahi
         install_tox_client
     fi
+    APP_INSTALLED=1
 }
 
 # NOTE: deliberately no exit 0
diff --git a/src/freedombone-app-vpn b/src/freedombone-app-vpn
index 217614ee69176eb79e0bf324c54ff959e06a55eb..079c36140729c6882f9225a26db6651153597ef0 100755
--- a/src/freedombone-app-vpn
+++ b/src/freedombone-app-vpn
@@ -34,6 +34,7 @@ vpn_variables=()
 
 function install_interactive_vpn {
     echo -n ''
+    APP_INSTALLED=1
 }
 
 function change_password_vpn {
@@ -83,6 +84,7 @@ function install_vpn {
             exit 52026
         fi
     fi
+    APP_INSTALLED=1
 }
 
 # NOTE: deliberately there is no "exit 0"
diff --git a/src/freedombone-app-webmail b/src/freedombone-app-webmail
index 46a457d812efe92e1cedd2e82b28c662339cdb8b..34de6bc6cb86069bb7af08100e4c6790eb4c1a8b 100755
--- a/src/freedombone-app-webmail
+++ b/src/freedombone-app-webmail
@@ -46,6 +46,7 @@ webmail_variables=(WEBMAIL_REPO
 
 function install_interactive_webmail {
     echo -n ''
+    APP_INSTALLED=1
 }
 
 function change_password_webmail {
@@ -259,6 +260,7 @@ function install_webmail {
         chown $MY_USERNAME:$MY_USERNAME /home/$MY_USERNAME/README
         chmod 600 /home/$MY_USERNAME/README
     fi
+    APP_INSTALLED=1
 }
 
 # NOTE: deliberately no exit 0
diff --git a/src/freedombone-app-wiki b/src/freedombone-app-wiki
index a258dc3eda8445be75025b04b7b5c5fea954c7e4..33d595099e8653fdfdf462701c9d5210f97b2291 100755
--- a/src/freedombone-app-wiki
+++ b/src/freedombone-app-wiki
@@ -99,10 +99,11 @@ function install_interactive_wiki {
         done
 
         # save the results in the config file
-        write_config_param "WIKI_TITLE" "$WIKI_TITLE"
-        write_config_param "WIKI_DOMAIN_NAME" "$WIKI_DOMAIN_NAME"
         write_config_param "WIKI_CODE" "$WIKI_CODE"
     fi
+    write_config_param "WIKI_TITLE" "$WIKI_TITLE"
+    write_config_param "WIKI_DOMAIN_NAME" "$WIKI_DOMAIN_NAME"
+    APP_INSTALLED=1
 }
 
 function change_password_wiki {
@@ -614,6 +615,7 @@ function install_wiki {
     else
         sed -i "s|wiki domain.*|wiki domain:$WIKI_DOMAIN_NAME|g" $COMPLETION_FILE
     fi
+    APP_INSTALLED=1
 }
 
 # NOTE: deliberately no exit 0
diff --git a/src/freedombone-app-xmpp b/src/freedombone-app-xmpp
index cd1cbcea61b92fd3ed8d23d702bc52fc6f8c1deb..47924e6f663e8a5aa20094974281f5c22aa93e11 100755
--- a/src/freedombone-app-xmpp
+++ b/src/freedombone-app-xmpp
@@ -96,6 +96,7 @@ function run_client_xmpp {
 
 function install_interactive_xmpp {
     echo -n ''
+    APP_INSTALLED=1
 }
 
 function change_password_xmpp {
@@ -554,6 +555,7 @@ function install_xmpp_client {
 function install_xmpp {
     install_xmpp_main
     install_xmpp_client
+    APP_INSTALLED=1
 }
 
 # NOTE: deliberately no exit 0
diff --git a/src/freedombone-app-zeronet b/src/freedombone-app-zeronet
index dce6b6a9c5a131f657f38b223e125df243065707..47c277d5f99705681dc64d1f07036fbde78f7e42 100755
--- a/src/freedombone-app-zeronet
+++ b/src/freedombone-app-zeronet
@@ -61,6 +61,7 @@ zeronet_variables=(ZERONET_BLOG_COMMIT
 
 function install_interactive_zeronet {
     echo -n ''
+    APP_INSTALLED=1
 }
 
 function change_password_zeronet {
@@ -686,6 +687,7 @@ function install_zeronet {
     install_zeronet_blog
     install_zeronet_mail
     install_zeronet_forum
+    APP_INSTALLED=1
 }
 
 # NOTE: deliberately no exit 0
diff --git a/src/freedombone-utils-selector b/src/freedombone-utils-selector
index e9c10d01fd549b3eaf8cafb55eb05491f832096f..81408b2fceba8f3b93bff274ad4c57a094fb13f8 100755
--- a/src/freedombone-utils-selector
+++ b/src/freedombone-utils-selector
@@ -402,10 +402,15 @@ function install_apps {
                         echo $"${a} was upgraded from interactive"
                     else
                         echo $"Installing application from interactive: ${a}"
+                        APP_INSTALLED=
                         install_${a}
-                        app_save_variables ${a}
-                        install_completed ${a}
-                        echo $"${a} was installed from interactive"
+                        if [ $APP_INSTALLED ]; then
+                            app_save_variables ${a}
+                            install_completed ${a}
+                            echo $"${a} was installed from interactive"
+                        else
+                            echo $"${a} was not installed from interactive"
+                        fi
                     fi
                 else
                     # check if the app was removed
@@ -417,10 +422,15 @@ function install_apps {
                             echo $"${a} was upgraded"
                         else
                             echo $"Installing application: ${a}"
+                            APP_INSTALLED=
                             install_${a}
-                            app_save_variables ${a}
-                            install_completed ${a}
-                            echo $"${a} was installed"
+                            if [ $APP_INSTALLED ]; then
+                                app_save_variables ${a}
+                                install_completed ${a}
+                                echo $"${a} was installed"
+                            else
+                                echo $"${a} was not installed"
+                            fi
                         fi
                     else
                         echo $"${a} has been removed and so will not be reinstalled"