public static Path unpackFileFromSkin(Path skinfile) throws IOException {
        assert FileUtil.control(skinfile);
        Path ret = null;

        FileUtil.unzipFileFromZip(skinfile, Constants.SKIN_PREVIEWFILE, Constants.PROGRAM_TMPSKIN_PATH);

        Path previewPath = Constants.PROGRAM_TMPSKIN_PATH.resolve(Constants.SKIN_PREVIEWFILE);
        if (FileUtil.control(previewPath)) {
            String name = skinfile.getFileName().toString().split("\\.")[0];
            Path dirPath = Constants.PROGRAM_TMPSKIN_PATH.resolve(name);
            FileUtil.createDirectory(dirPath);
            FileUtil.moveFile(previewPath, dirPath.resolve(Constants.SKIN_PREVIEWFILE));
            previewPath = dirPath.resolve(Constants.SKIN_PREVIEWFILE);

            FileUtil.unzipFileFromZip(skinfile, Constants.SKIN_PREVIEWIMAGE, Constants.PROGRAM_TMPSKIN_PATH);
            Path imgPath = Constants.PROGRAM_TMPSKIN_PATH.resolve(Constants.SKIN_PREVIEWIMAGE);
            if (FileUtil.control(imgPath)) {
                FileUtil.moveFile(imgPath, dirPath.resolve(Constants.SKIN_PREVIEWIMAGE));
            }

            ret = previewPath;
        }

        return ret;
    }