diff --git a/scripts/linuxparty.py b/scripts/linuxparty.py
index 423b9446069212b607ca49db2064468b44a26cf1..d50b10c58b6305d0cbca47c4e19f78c942a9700e 100755
--- a/scripts/linuxparty.py
+++ b/scripts/linuxparty.py
@@ -3,9 +3,34 @@
 
 import sys, os, io, subprocess
 import json
-from PyQt5 import QtWidgets, QtGui, QtCore
+import apt
+from PyQt5 import QtWidgets, QtGui, QtCore, QtDBus
 from collections import OrderedDict
 
+cache = apt.cache.Cache()
+
+def subprocess_wrap(what):
+    proc = subprocess.Popen(what, stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
+    while True:
+        status = proc.poll()
+        if status is not None:
+            break 
+        output = proc.stdout.readline()
+        if output == '' and status:
+            break
+        if output:
+            print(output.strip().decode('utf-8'))
+    rc = proc.poll()
+    print("Subprocess exited with status", rc)
+    return rc
+
+def get_mountpoint(dev):
+    iface = QtDBus.QDBusInterface("org.freedesktop.UDisks2", "/org/freedesktop/UDisks2/block_devices/%s"%(dev,), "org.freedesktop.DBus.Properties", QtDBus.QDBusConnection.systemBus())
+    msg = iface.call("Get", "org.freedesktop.UDisks2.Filesystem", "MountPoints")
+    mpoint = msg.arguments()[0][0].data().decode('utf-8')[:-1]
+    print(mpoint)
+    return mpoint
+
 class Ui_MainWindow(object):
     def setupUi(self, MainWindow):
         MainWindow.setObjectName("MainWindow")
@@ -83,6 +108,8 @@ class Main(QtWidgets.QMainWindow):
             pass
 
 def installProcess():
+    global pkglist
+
     window.ui.btnl.hide()
     window.ui.btnr.setText("&Finish")
     window.ui.progressBar.show()
@@ -128,29 +155,38 @@ def checkIfRoot():
         pass
 
 def installPackages(strlist):
-    command=["echo", "apt-get", "install","--quiet", "-y", "--force-yes"," ".join(strlist)]
-    #command=["apt-get", "install","--quiet", "-y", "--force-yes"]
-    #subprocess.call(command, shell=False)
-    stdout_installPackages = subprocess.check_output(command, shell=False)
-    print(stdout_installPackages)
+    global pkglist
+
+    cache.update(sources_list='')
+    cache.open(None)
+
+    for pkg in pkglist:
+        candidate = cache[pkg]
+        if not candidate.is_installed:
+            candidate.mark_install()
+    try:
+        cache.commit(apt.progress.text.AcquireProgress(), apt.progress.base.InstallProgress())
+    except Exception as ex:
+        print("Error during install",ex)
 
 def mountStick():
-    command=[basepath+"infuse_offline_repo.sh"]
-    stdout_mountStick = subprocess.check_output(command, shell=False)
-    print(stdout_mountStick)
+    command=[basedir+"/infuse_offline_repo.sh"]
+    subprocess_wrap(command)
 
 def makeDoku(stringlist):
-    command=["echo", "./makeDoku.sh", os.path.dirname(basepath), " ".join(stringlist)]
-    #command=["./makeDoku.sh", os.path.dirname(basepath), " ".join(pkglist)]
-    stdout_makeDoku = subprocess.check_output(command, shell=False)
-    print(stdout_makeDoku)
+    global pkglist
 
+    #command=["echo", "./makeDoku.sh", basedir, " ".join(stringlist)]
+    command=["./makeDoku.sh", basedir+"/", " ".join(pkglist)]
+    subprocess_wrap(command)
+    
 def getPackagelist():
     installList = []
     model = window.ui.tableView.model()
     i = 0
     while i < model.rowCount():
         item = model.item(i)
+        item.readOnly(true)
         if item.isEnabled:
             if item.checkState():
                 installList.append(item.text())
@@ -210,12 +246,12 @@ def fillTreeView(inputDataJson, treeView):
 if __name__ == '__main__':
     app = QtWidgets.QApplication(sys.argv)
     basepath=os.path.realpath(__file__)
+    basedir=os.path.dirname(basepath)
     checkIfRoot()
     #mountStick()
     window = Main()
     window.setWindowTitle("Linux Install Party Software Installer")
-    with open('../offline_repo.json', 'r') as inputfile:
-    #with open('./test.json', 'r') as inputfile:
+    with open(basedir+'/../offline_repo.json', 'r') as inputfile:
         data=json.loads(inputfile.read(), object_pairs_hook=OrderedDict)
     fillTreeView(data, window.ui.treeView)
     window.ui.btnl.clicked.connect(installProcess)