+++ /dev/null
-<?xml version="1.0" encoding="UTF-8"?>
-<addon id="xbmc.addon" version="13.9.701" provider-name="Team XBMC">
- <backwards-compatibility abi="12.0"/>
- <requires>
- <import addon="xbmc.core" version="0.1.0"/>
- </requires>
- <extension-point id="metadata" schema="metadata.xsd"/>
- <extension-point id="repository" schema="repository.xsd"/>
-</addon>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<addon id="xbmc.addon" version="@APP_ADDON_API@" provider-name="Team XBMC">
+ <backwards-compatibility abi="12.0"/>
+ <requires>
+ <import addon="xbmc.core" version="0.1.0"/>
+ </requires>
+ <extension-point id="metadata" schema="metadata.xsd"/>
+ <extension-point id="repository" schema="repository.xsd"/>
+</addon>
getGitRev
if [[ $RELEASEV == "auto" ]]
then
- local MAJORVER=$(grep VERSION_MAJOR $REPO_DIR/xbmc/GUIInfoManager.h | awk '{ print $3 }')
- local MINORVER=$(grep VERSION_MINOR $REPO_DIR/xbmc/GUIInfoManager.h | awk '{ print $3 }')
+ local MAJORVER=$(grep VERSION_MAJOR $REPO_DIR/version.txt | awk '{ print $2 }')
+ local MINORVER=$(grep VERSION_MINOR $REPO_DIR/version.txt | awk '{ print $2 }')
RELEASEV=${MAJORVER}.${MINORVER}
else
PACKAGEVERSION="${RELEASEV}~git$(date '+%Y%m%d.%H%M')-${TAG}"
+++ /dev/null
-<?xml version="1.0" encoding="utf-8"?>
-<!-- BEGIN_INCLUDE(manifest) -->
-<manifest xmlns:android="http://schemas.android.com/apk/res/android"
- package="org.xbmc.xbmc"
- android:versionCode="139701"
- android:versionName="14.0-ALPHA1" >
-
- <!-- This is the platform API where NativeActivity was introduced. -->
- <uses-sdk android:minSdkVersion="14" />
-
- <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
- <uses-permission android:name="android.permission.INTERNET" />
- <uses-permission android:name="android.permission.WAKE_LOCK" />
- <uses-permission android:name="android.permission.GET_TASKS" />
-
- <application android:icon="@drawable/ic_launcher" android:debuggable="true" android:label="@string/app_name" android:hasCode="true">
- <activity
- android:name=".Splash"
- android:configChanges="orientation|keyboard|keyboardHidden|navigation|touchscreen"
- android:finishOnTaskLaunch="true"
- android:launchMode="singleInstance"
- android:screenOrientation="sensorLandscape"
- android:theme="@android:style/Theme.NoTitleBar.Fullscreen" >
- <intent-filter>
- <action android:name="android.intent.action.MAIN" />
- <category android:name="android.intent.category.LAUNCHER" />
- </intent-filter>
- <intent-filter>
- <action android:name="android.intent.action.VIEW" />
-
- <category android:name="android.intent.category.DEFAULT" />
- <category android:name="android.intent.category.BROWSABLE" />
-
- <data android:mimeType="video/*" />
- <data android:mimeType="audio/*" />
- <data android:mimeType="image/*" />
-
- <data android:scheme="file" />
- <data android:scheme="content" />
- <data android:scheme="http" />
- <data android:scheme="https" />
- <data android:scheme="ftp" />
- <data android:scheme="ftps" />
- <data android:scheme="rtp" />
- <data android:scheme="rtsp" />
- <data android:scheme="mms" />
- <data android:scheme="dav" />
- <data android:scheme="davs" />
- <data android:scheme="ssh" />
- <data android:scheme="sftp" />
- <data android:scheme="smb" />
- </intent-filter>
- </activity>
-
- <!--
- Our activity is the built-in NativeActivity framework class.
- This will take care of integrating with our NDK code.
- -->
- <activity
- android:name=".Main"
- android:configChanges="orientation|keyboard|keyboardHidden|navigation"
- android:finishOnTaskLaunch="true"
- android:label="XBMC"
- android:launchMode="singleInstance"
- android:screenOrientation="sensorLandscape"
- android:theme="@android:style/Theme.NoTitleBar.Fullscreen" >
-
- <!-- Tell NativeActivity the name of or .so -->
- <meta-data
- android:name="android.app.lib_name"
- android:value="xbmc" />
- </activity>
- </application>
-
-</manifest><!-- END_INCLUDE(manifest) -->
-
--- /dev/null
+<?xml version="1.0" encoding="utf-8"?>
+<!-- BEGIN_INCLUDE(manifest) -->
+<manifest xmlns:android="http://schemas.android.com/apk/res/android"
+ package="org.xbmc.xbmc"
+ android:versionCode="@APP_VERSION_CODE@"
+ android:versionName="@APP_VERSION_MAJOR@.@APP_VERSION_MINOR@-@APP_VERSION_TAG@" >
+
+ <!-- This is the platform API where NativeActivity was introduced. -->
+ <uses-sdk android:minSdkVersion="14" />
+
+ <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
+ <uses-permission android:name="android.permission.INTERNET" />
+ <uses-permission android:name="android.permission.WAKE_LOCK" />
+ <uses-permission android:name="android.permission.GET_TASKS" />
+
+ <application android:icon="@drawable/ic_launcher" android:debuggable="true" android:label="@string/app_name" android:hasCode="true">
+ <activity
+ android:name=".Splash"
+ android:configChanges="orientation|keyboard|keyboardHidden|navigation|touchscreen"
+ android:finishOnTaskLaunch="true"
+ android:launchMode="singleInstance"
+ android:screenOrientation="sensorLandscape"
+ android:theme="@android:style/Theme.NoTitleBar.Fullscreen" >
+ <intent-filter>
+ <action android:name="android.intent.action.MAIN" />
+ <category android:name="android.intent.category.LAUNCHER" />
+ </intent-filter>
+ <intent-filter>
+ <action android:name="android.intent.action.VIEW" />
+
+ <category android:name="android.intent.category.DEFAULT" />
+ <category android:name="android.intent.category.BROWSABLE" />
+
+ <data android:mimeType="video/*" />
+ <data android:mimeType="audio/*" />
+ <data android:mimeType="image/*" />
+
+ <data android:scheme="file" />
+ <data android:scheme="content" />
+ <data android:scheme="http" />
+ <data android:scheme="https" />
+ <data android:scheme="ftp" />
+ <data android:scheme="ftps" />
+ <data android:scheme="rtp" />
+ <data android:scheme="rtsp" />
+ <data android:scheme="mms" />
+ <data android:scheme="dav" />
+ <data android:scheme="davs" />
+ <data android:scheme="ssh" />
+ <data android:scheme="sftp" />
+ <data android:scheme="smb" />
+ </intent-filter>
+ </activity>
+
+ <!--
+ Our activity is the built-in NativeActivity framework class.
+ This will take care of integrating with our NDK code.
+ -->
+ <activity
+ android:name=".Main"
+ android:configChanges="orientation|keyboard|keyboardHidden|navigation"
+ android:finishOnTaskLaunch="true"
+ android:label="XBMC"
+ android:launchMode="singleInstance"
+ android:screenOrientation="sensorLandscape"
+ android:theme="@android:style/Theme.NoTitleBar.Fullscreen" >
+
+ <!-- Tell NativeActivity the name of or .so -->
+ <meta-data
+ android:name="android.app.lib_name"
+ android:value="xbmc" />
+ </activity>
+ </application>
+
+</manifest><!-- END_INCLUDE(manifest) -->
+
XBMC_PLATFORM_DIR=osx32
. $WORKSPACE/tools/buildsteps/defaultenv
-cd $WORKSPACE/tools/darwin/packaging/xbmc-osx/;./mkdmg-xbmc-osx.sh $Configuration
+cd $WORKSPACE/tools/darwin/packaging/xbmc-osx/; sh ./mkdmg-xbmc-osx.sh $Configuration
#rename for upload
#e.x. xbmc-20130314-8c2fb31-Frodo-i386.dmg
XBMC_PLATFORM_DIR=osx64
. $WORKSPACE/tools/buildsteps/defaultenv
-cd $WORKSPACE/tools/darwin/packaging/xbmc-osx/;./mkdmg-xbmc-osx.sh $Configuration
+cd $WORKSPACE/tools/darwin/packaging/xbmc-osx/; sh ./mkdmg-xbmc-osx.sh $Configuration
#rename for upload
#e.x. xbmc-20130314-8c2fb31-Frodo-x86_64.dmg
if [ "$ACTION" = build ] ; then
make -f ${SRCROOT}/codegenerator.mk
+ make -f ${SRCROOT}/xbmc/gen-compileinfo.mk
fi
PACKAGE=org.xbmc.xbmc-atv2
-VERSION=14.0
-REVISION=0~alpha1
+VERSION=@APP_VERSION_MAJOR@.@APP_VERSION_MINOR@
+REVISION=0~@APP_VERSION_TAG_LC@
ARCHIVE=${PACKAGE}_${VERSION}-${REVISION}_iphoneos-arm.deb
echo Creating $PACKAGE package version $VERSION revision $REVISION
PACKAGE=org.xbmc.xbmc-ios
-VERSION=14.0
-REVISION=0~alpha1
+VERSION=@APP_VERSION_MAJOR@.@APP_VERSION_MINOR@
+REVISION=0~@APP_VERSION_TAG_LC@
ARCHIVE=${PACKAGE}_${VERSION}-${REVISION}_iphoneos-arm.deb
echo Creating $PACKAGE package version $VERSION revision $REVISION
+++ /dev/null
-#!/bin/sh
-
-# usage: ./mkdmg-xbmc-osx.sh release/debug (case insensitive)
-# Allows us to run mkdmg-xbmc-osx.sh from anywhere in the three, rather than the tools/darwin/packaging/xbmc-osx folder only
-SWITCH=`echo $1 | tr [A-Z] [a-z]`
-DIRNAME=`dirname $0`
-
-if [ ${SWITCH:-""} = "debug" ]; then
- echo "Packaging Debug target for OSX"
- XBMC="$DIRNAME/../../../../build/Debug/XBMC.app"
-elif [ ${SWITCH:-""} = "release" ]; then
- echo "Packaging Release target for OSX"
- XBMC="$DIRNAME/../../../../build/Release/XBMC.app"
-else
- echo "You need to specify the build target"
- exit 1
-fi
-
-if [ ! -d $XBMC ]; then
- echo "XBMC.app not found! are you sure you built $1 target?"
- exit 1
-fi
-ARCHITECTURE=`file $XBMC/Contents/MacOS/XBMC | awk '{print $NF}'`
-
-PACKAGE=org.xbmc.xbmc-osx
-
-VERSION=14.0
-REVISION=0~alpha1
-ARCHIVE=${PACKAGE}_${VERSION}-${REVISION}_macosx-intel-${ARCHITECTURE}
-
-echo Creating $PACKAGE package version $VERSION revision $REVISION
-${SUDO} rm -rf $DIRNAME/$ARCHIVE
-
-if [ -e "/Volumes/$ARCHIVE" ]
-then
- umount /Volumes/$ARCHIVE
-fi
-
-$DIRNAME/dmgmaker.pl $XBMC $ARCHIVE
-
-echo "done"
--- /dev/null
+#!/bin/sh
+
+# usage: ./mkdmg-xbmc-osx.sh release/debug (case insensitive)
+# Allows us to run mkdmg-xbmc-osx.sh from anywhere in the three, rather than the tools/darwin/packaging/xbmc-osx folder only
+SWITCH=`echo $1 | tr [A-Z] [a-z]`
+DIRNAME=`dirname $0`
+
+if [ ${SWITCH:-""} = "debug" ]; then
+ echo "Packaging Debug target for OSX"
+ XBMC="$DIRNAME/../../../../build/Debug/XBMC.app"
+elif [ ${SWITCH:-""} = "release" ]; then
+ echo "Packaging Release target for OSX"
+ XBMC="$DIRNAME/../../../../build/Release/XBMC.app"
+else
+ echo "You need to specify the build target"
+ exit 1
+fi
+
+if [ ! -d $XBMC ]; then
+ echo "XBMC.app not found! are you sure you built $1 target?"
+ exit 1
+fi
+ARCHITECTURE=`file $XBMC/Contents/MacOS/XBMC | awk '{print $NF}'`
+
+PACKAGE=org.xbmc.xbmc-osx
+
+VERSION=@APP_VERSION_MAJOR@.@APP_VERSION_MINOR@
+REVISION=0~@APP_VERSION_TAG_LC@
+ARCHIVE=${PACKAGE}_${VERSION}-${REVISION}_macosx-intel-${ARCHITECTURE}
+
+echo Creating $PACKAGE package version $VERSION revision $REVISION
+${SUDO} rm -rf $DIRNAME/$ARCHIVE
+
+if [ -e "/Volumes/$ARCHIVE" ]
+then
+ umount /Volumes/$ARCHIVE
+fi
+
+$DIRNAME/dmgmaker.pl $XBMC $ARCHIVE
+
+echo "done"
--- /dev/null
+/*
+ * Copyright (C) 2014 Team XBMC
+ * http://xbmc.org
+ *
+ * This Program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2, or (at your option)
+ * any later version.
+ *
+ * This Program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with XBMC; see the file COPYING. If not, see
+ * <http://www.gnu.org/licenses/>.
+ *
+ */
+
+#include "CompileInfo.h"
+#include <cstddef>
+
+#if defined(TARGET_DARWIN) || (defined(TARGET_WINDOWS) && !defined(_DEBUG))
+#include "../git_revision.h" // generated file
+#endif
+
+
+int CCompileInfo::GetMajor()
+{
+ return @APP_VERSION_MAJOR@;
+}
+
+int CCompileInfo::GetMinor()
+{
+ return @APP_VERSION_MINOR@;
+}
+
+const char* CCompileInfo::GetSuffix()
+{
+ return "@APP_VERSION_TAG@";
+}
+
+const char* CCompileInfo::GetSCMID()
+{
+#ifdef GIT_REV
+ return GIT_REV;
+#else
+ return "Unknown";
+#endif
+}
--- /dev/null
+#pragma once
+
+/*
+ * Copyright (C) 2014 Team XBMC
+ * http://xbmc.org
+ *
+ * This Program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2, or (at your option)
+ * any later version.
+ *
+ * This Program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with XBMC; see the file COPYING. If not, see
+ * <http://www.gnu.org/licenses/>.
+ *
+ */
+
+class CCompileInfo
+{
+public:
+ static int GetMajor();
+ static int GetMinor();
+ static const char *GetSuffix(); // Git "Tag", e.g. alpha1
+ static const char* GetSCMID(); // Git Revision
+};
#include "network/Network.h"
#include "system.h"
-#include "GitRevision.h"
+#include "CompileInfo.h"
#include "GUIInfoManager.h"
#include "windows/GUIMediaWindow.h"
#include "dialogs/GUIDialogProgress.h"
// in the HTTP request user agent.
std::string CGUIInfoManager::GetVersionShort(void)
{
- return StringUtils::Format("%d.%d%s", VERSION_MAJOR, VERSION_MINOR, VERSION_TAG);
+ if (strlen(CCompileInfo::GetSuffix()) == 0)
+ return StringUtils::Format("%d.%d", CCompileInfo::GetMajor(), CCompileInfo::GetMinor());
+ else
+ return StringUtils::Format("%d.%d-%s", CCompileInfo::GetMajor(), CCompileInfo::GetMinor(), CCompileInfo::GetSuffix());
}
CStdString CGUIInfoManager::GetVersion()
{
- if (GetXbmcGitRevision())
- return GetVersionShort() + " Git:" + GetXbmcGitRevision();
-
- return GetVersionShort();
+ return GetVersionShort() + " Git:" + CCompileInfo::GetSCMID();
}
CStdString CGUIInfoManager::GetBuild()
#define CONTROL_GROUP_HAS_FOCUS 29999
#define CONTROL_HAS_FOCUS 30000
-#define VERSION_MAJOR 14
-#define VERSION_MINOR 0
-#define VERSION_TAG "-ALPHA1"
-
#define LISTITEM_START 35000
#define LISTITEM_THUMB (LISTITEM_START)
#define LISTITEM_LABEL (LISTITEM_START + 1)
+++ /dev/null
-/*
- * Copyright (C) 2011-2013 Team XBMC
- * http://xbmc.org
- *
- * This Program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2, or (at your option)
- * any later version.
- *
- * This Program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with XBMC; see the file COPYING. If not, see
- * <http://www.gnu.org/licenses/>.
- *
- */
-
-#include "GitRevision.h"
-
-#include <cstddef>
-
-#if defined(TARGET_DARWIN) || (defined(TARGET_WINDOWS) && !defined(_DEBUG))
-#include "../git_revision.h" // generated file
-#endif
-
-const char *GetXbmcGitRevision()
-{
-#ifdef GIT_REV
- return GIT_REV;
-#else
- return NULL;
-#endif
-}
+++ /dev/null
-#pragma once
-
-/*
- * Copyright (C) 2011-2013 Team XBMC
- * http://xbmc.org
- *
- * This Program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2, or (at your option)
- * any later version.
- *
- * This Program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with XBMC; see the file COPYING. If not, see
- * <http://www.gnu.org/licenses/>.
- *
- */
-
-// Returns the current Git revision, or NULL if unavailable.
-const char *GetXbmcGitRevision();
DynamicDll.cpp \
FileItem.cpp \
FileItemListModification.cpp \
- GitRevision.cpp \
GUIInfoManager.cpp \
GUILargeTextureManager.cpp \
GUIPassword.cpp \
XBDateTime.cpp \
xbmc.cpp \
XbmcContext.cpp \
+ CompileInfo.cpp \
LIB=xbmc.a
-DISTCLEAN_FILES=DllPaths_generated.h
+DISTCLEAN_FILES=DllPaths_generated.h CompileInfo.cpp
+
+all: $(SRCS) $(LIB)
+
+include gen-compileinfo.mk
+CompileInfo.cpp: ../version.txt CompileInfo.cpp.in
+ make -f gen-compileinfo.mk
include @abs_top_srcdir@/Makefile.include
-include $(patsubst %.cpp,%.P,$(patsubst %.c,%.P,$(SRCS)))
--- /dev/null
+# This file is sourced from xbmc/Makefile and tools/darwin/Support/makepythoninterface.command
+
+FILEPATH := $(abspath $(dir $(MAKEFILE_LIST)))
+VERSION.TXT := $(FILEPATH)/../version.txt
+
+$(FILEPATH)/CompileInfo.cpp: $(VERSION.TXT) $(FILEPATH)/CompileInfo.cpp.in
+ @MAJOR=$$(awk '/VERSION_MAJOR/ {print $$2}' $(VERSION.TXT)) ;\
+ MINOR=$$(awk '/VERSION_MINOR/ {print $$2}' $(VERSION.TXT)) ;\
+ TAG=$$(awk '/VERSION_TAG/ {print $$2}' $(VERSION.TXT)) ;\
+ sed -e "s/\@APP_VERSION_MAJOR\@/$$MAJOR/" -e "s/\@APP_VERSION_MINOR\@/$$MINOR/" -e "s/\@APP_VERSION_TAG\@/$$TAG/" $@.in > $@
#include "utils/log.h"
#include "GUIInfoManager.h"
#include "system.h"
-#include "GitRevision.h"
+#include "CompileInfo.h"
#include "utils/StringUtils.h"
+#include <string.h>
using namespace JSONRPC;
else if (property.Equals("version"))
{
result = CVariant(CVariant::VariantTypeObject);
- result["major"] = VERSION_MAJOR;
- result["minor"] = VERSION_MINOR;
- if (GetXbmcGitRevision())
- result["revision"] = GetXbmcGitRevision();
- CStdString tag(VERSION_TAG);
- if (StringUtils::EqualsNoCase(tag, "-pre"))
+ result["major"] = CCompileInfo::GetMajor();
+ result["minor"] = CCompileInfo::GetMinor();
+ result["revision"] = CCompileInfo::GetSCMID();
+ std::string tag = CCompileInfo::GetSuffix();
+ if (StringUtils::EqualsNoCase(tag, "pre"))
result["tag"] = "alpha";
- else if (StringUtils::StartsWithNoCase(tag, "-beta"))
+ else if (StringUtils::StartsWithNoCase(tag, "beta"))
result["tag"] = "beta";
- else if (StringUtils::StartsWithNoCase(tag, "-rc"))
+ else if (StringUtils::StartsWithNoCase(tag, "rc"))
result["tag"] = "releasecandidate";
else if (tag.empty())
result["tag"] = "stable";
+++ /dev/null
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
-<plist version="1.0">
-<dict>
- <key>CFBundleInfoDictionaryVersion</key>
- <string>6.0</string>
- <key>CFBundleDevelopmentRegion</key>
- <string>English</string>
- <key>CFBundleExecutable</key>
- <string>XBMC</string>
- <key>CFBundleGetInfoString</key>
- <string>14.0.alpha1</string>
- <key>CFBundleIconFile</key>
- <string>xbmc.icns</string>
- <key>CFBundleIdentifier</key>
- <string>com.teamxbmc.xbmc</string>
- <key>CFBundleName</key>
- <string>XBMC</string>
- <key>CFBundlePackageType</key>
- <string>APPL</string>
- <key>CFBundleShortVersionString</key>
- <string>14.0.alpha1</string>
- <key>CFBundleVersion</key>
- <string>r####</string>
- <key>CFBundleSignature</key>
- <string>xbmc</string>
-</dict>
-</plist>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<dict>
+ <key>CFBundleInfoDictionaryVersion</key>
+ <string>6.0</string>
+ <key>CFBundleDevelopmentRegion</key>
+ <string>English</string>
+ <key>CFBundleExecutable</key>
+ <string>XBMC</string>
+ <key>CFBundleGetInfoString</key>
+ <string>@APP_VERSION_MAJOR@.@APP_VERSION_MINOR@.@APP_VERSION_TAG_LC@</string>
+ <key>CFBundleIconFile</key>
+ <string>xbmc.icns</string>
+ <key>CFBundleIdentifier</key>
+ <string>com.teamxbmc.xbmc</string>
+ <key>CFBundleName</key>
+ <string>XBMC</string>
+ <key>CFBundlePackageType</key>
+ <string>APPL</string>
+ <key>CFBundleShortVersionString</key>
+ <string>@APP_VERSION_MAJOR@.@APP_VERSION_MINOR@.@APP_VERSION_TAG_LC@</string>
+ <key>CFBundleVersion</key>
+ <string>r####</string>
+ <key>CFBundleSignature</key>
+ <string>xbmc</string>
+</dict>
+</plist>