@Override
    public void runTask(InstallTasksQueue queue) throws IOException, InterruptedException {
        String currentPath = relauncher.getRunningPath();
        Utils.getLogger().log(Level.INFO, "Moving running package from " + currentPath + " to " + launcher.getAbsolutePath());

        File source = new File(currentPath);
        File dest = new File(launcher.getAbsolutePath());

        if (!source.equals(dest)) {
            if (dest.exists()) {
                if (!dest.delete())
                    Utils.getLogger().log(Level.SEVERE, "Deletion of existing package failed!");
            }
            FileInputStream sourceStream = null;
            FileOutputStream destStream = null;

            try {
                if (!dest.getParentFile().exists())
                    dest.getParentFile().mkdirs();
                dest.createNewFile();
                sourceStream = new FileInputStream(source);
                destStream = new FileOutputStream(dest);
                IOUtils.copy(sourceStream, destStream);
            } catch (IOException ex) {
                Utils.getLogger().log(Level.SEVERE, "Error attempting to copy download package:", ex);
            } finally {
                IOUtils.closeQuietly(sourceStream);
                IOUtils.closeQuietly(destStream);
            }
        }

        dest.setExecutable(true, true);
    }