diff --git a/Vocaluxe/Base/CSettings.cs b/Vocaluxe/Base/CSettings.cs index 0063a2e6..25aa2cd4 100644 --- a/Vocaluxe/Base/CSettings.cs +++ b/Vocaluxe/Base/CSettings.cs @@ -75,6 +75,8 @@ namespace Vocaluxe.Base #if INSTALLER public static readonly string DataFolder = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments), "Vocaluxe"); +#elif LINUX + public static readonly string DataFolder = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData), "Vocaluxe"); #else public static readonly string DataFolder = ProgramFolder; #endif diff --git a/Vocaluxe/Base/Server/CVocaluxeServer.cs b/Vocaluxe/Base/Server/CVocaluxeServer.cs index 62b1d14e..138df11f 100644 --- a/Vocaluxe/Base/Server/CVocaluxeServer.cs +++ b/Vocaluxe/Base/Server/CVocaluxeServer.cs @@ -598,12 +598,7 @@ namespace Vocaluxe.Base.Server public static string GetServerVersion() { - var informationalVersion = Assembly.GetExecutingAssembly().GetCustomAttributes(typeof(AssemblyInformationalVersionAttribute), false).FirstOrDefault(); - if (informationalVersion != null) - { - informationalVersion = ""; - } - return Assembly.GetExecutingAssembly().GetName().Version.ToString() + " (" + informationalVersion + ")"; + return Application.ProductVersion; } public static CBase64Image GetDelayedImage(string hashedFilename) diff --git a/Vocaluxe/CProgrammHelper.cs b/Vocaluxe/CProgrammHelper.cs index 9f342c90..d25b138e 100644 --- a/Vocaluxe/CProgrammHelper.cs +++ b/Vocaluxe/CProgrammHelper.cs @@ -96,6 +96,23 @@ namespace Vocaluxe return _IsProgramInstalled("Microsoft Visual C++ 2010"); } + private static void _EnsureDataFolderExists() + { + if (!Directory.Exists(CSettings.DataFolder)) { + Directory.CreateDirectory(CSettings.DataFolder); + // copy default profiles to DataFolder instead of adding ProgramFolder to CConfig.ProfileFolders + // because we want to be able to edit them, but might not have permission to write to ProgramFolder + string profilePath = Path.Combine(CSettings.DataFolder, CSettings.FolderNameProfiles); + Directory.CreateDirectory(profilePath); + DirectoryInfo defaultProfileDir = new DirectoryInfo(Path.Combine(CSettings.ProgramFolder, CSettings.FolderNameProfiles)); + FileInfo[] files = defaultProfileDir.GetFiles(); + foreach (FileInfo file in files) { + string newPath = Path.Combine(profilePath, file.Name); + file.CopyTo(newPath, false); + } + } + } + public static bool CheckRequirements() { #if WIN @@ -135,6 +152,9 @@ namespace Vocaluxe #endif path = Path.GetDirectoryName(Assembly.GetEntryAssembly().Location) + Path.DirectorySeparatorChar + path; COSFunctions.AddEnvironmentPath(path); +#if LINUX + _EnsureDataFolderExists(); +#endif } } } \ No newline at end of file diff --git a/Vocaluxe/Lib/Input/CGamePad.cs b/Vocaluxe/Lib/Input/CGamePad.cs index 4e0ecca4..482dce1a 100644 --- a/Vocaluxe/Lib/Input/CGamePad.cs +++ b/Vocaluxe/Lib/Input/CGamePad.cs @@ -16,8 +16,6 @@ #endregion using System; -using System.Diagnostics.PerformanceData; -using System.Drawing; using System.Threading; using System.Windows.Forms; using OpenTK.Input; diff --git a/Vocaluxe/Lib/Input/CHIDAPI.cs b/Vocaluxe/Lib/Input/CHIDAPI.cs index 7c761f8d..881beae3 100644 --- a/Vocaluxe/Lib/Input/CHIDAPI.cs +++ b/Vocaluxe/Lib/Input/CHIDAPI.cs @@ -47,7 +47,7 @@ namespace Vocaluxe.Lib.Input #endif #if LINUX - private const string _HIDApiDll = "libhidapi.so"; + private const string _HIDApiDll = "libhidapi-libusb.so"; #endif #endif diff --git a/Vocaluxe/Lib/Video/Acinerella/CAcinerella.cs b/Vocaluxe/Lib/Video/Acinerella/CAcinerella.cs index a93f1b71..6df32553 100644 --- a/Vocaluxe/Lib/Video/Acinerella/CAcinerella.cs +++ b/Vocaluxe/Lib/Video/Acinerella/CAcinerella.cs @@ -176,7 +176,7 @@ namespace Vocaluxe.Lib.Video.Acinerella #endif #if LINUX - private const string _AcDll = "x86/libacinerella.so"; + private const string _AcDll = "libacinerella.so"; #endif #endif diff --git a/Vocaluxe/Linux/Build/PostBuildEvent.sh b/Vocaluxe/Linux/Build/PostBuildEvent.sh new file mode 100755 index 00000000..c9c2d125 --- /dev/null +++ b/Vocaluxe/Linux/Build/PostBuildEvent.sh @@ -0,0 +1,5 @@ +#!/bin/sh +PROJECT=$1 +cd $PROJECT +sed -i -r -e 's/AssemblyInformationalVersion\(".*?"\)/AssemblyInformationalVersion("GITVERSION")/' $PROJECT/Properties/AssemblyInfo.cs +sed -i -e 's/var matchingServerVersion = "";/var matchingServerVersion = "'$(git describe --long)'";/' $PROJECT/../Output/Website/js/main.js diff --git a/Vocaluxe/Linux/Build/PreBuildEvent.sh b/Vocaluxe/Linux/Build/PreBuildEvent.sh new file mode 100755 index 00000000..4d7c6ef7 --- /dev/null +++ b/Vocaluxe/Linux/Build/PreBuildEvent.sh @@ -0,0 +1,4 @@ +#!/bin/sh +PROJECT=$1 +cd $PROJECT +sed -i -e s/GITVERSION/$(git describe --long)/ $PROJECT/Properties/AssemblyInfo.cs diff --git a/Vocaluxe/Linux/Package/Vocaluxe.desktop b/Vocaluxe/Linux/Package/Vocaluxe.desktop new file mode 100644 index 00000000..40d32f05 --- /dev/null +++ b/Vocaluxe/Linux/Package/Vocaluxe.desktop @@ -0,0 +1,12 @@ +[Desktop Entry] +Type=Application +Version=1.0 +Name=Vocaluxe +Keywords=game;party;singing; +GenericName=Karaoke +Icon=INSTALLPATH/Vocaluxe.ico +Path=INSTALLPATH +Exec=mono INSTALLPATH/Vocaluxe.exe %U +Terminal=false +StartupNotify=false +Categories=Game; diff --git a/Vocaluxe/Program.cs b/Vocaluxe/Program.cs index 6bac885c..43964170 100644 --- a/Vocaluxe/Program.cs +++ b/Vocaluxe/Program.cs @@ -85,11 +85,12 @@ namespace Vocaluxe { // Init Log CLog.Init(); - CLog.StartBenchmark("Init Program"); + if (!CProgrammHelper.CheckRequirements()) return; CProgrammHelper.Init(); + CLog.StartBenchmark("Init Program"); CMain.Init(); Application.DoEvents(); diff --git a/Vocaluxe/Vocaluxe.csproj b/Vocaluxe/Vocaluxe.csproj index a0990475..bc340b00 100644 --- a/Vocaluxe/Vocaluxe.csproj +++ b/Vocaluxe/Vocaluxe.csproj @@ -536,13 +536,15 @@ - xcopy /E /D /Y "$(ProjectDir)\Website" "$(SolutionDir)\PhoneGap" -powershell -command "$version = git describe --long; (Get-Content -Encoding UTF8 '$(ProjectDir)..\Output\Website\js\main.js') | Foreach-Object {$_ -replace '(?<=var *matchingServerVersion * = *\\\")\w*(?=\\\" *;)', %2524('@(VersionNumber)'+' ('+$version+')')} | Set-Content -Encoding UTF8 '$(ProjectDir)..\Output\Website\js\main.js'" + xcopy /E /D /Y "$(ProjectDir)\Website" "$(SolutionDir)\PhoneGap" +powershell -command "$version = git describe --long; (Get-Content -Encoding UTF8 '$(ProjectDir)..\Output\Website\js\main.js') | Foreach-Object {$_ -replace '(?<=var *matchingServerVersion * = *\")\w*(?=\" *;)', "$version"} | Set-Content -Encoding UTF8 '$(ProjectDir)..\Output\Website\js\main.js'" powershell -command "(Get-Content -Encoding UTF8 '$(ProjectDir)Properties\AssemblyInfo.cs') | Foreach-Object {$_ -replace '(?<=AssemblyInformationalVersion\()(.*)(?=\))', '\"GITVERSION\"'} | Set-Content -Encoding UTF8 '$(ProjectDir)Properties\AssemblyInfo.cs'" cp -ruT "$(ProjectDir)Website" "$(SolutionDir)/PhoneGap" + $(ProjectDir)Linux/Build/PostBuildEvent.sh $(ProjectDir) powershell -command "$version = git describe --long; (Get-Content -Encoding UTF8 '$(ProjectDir)Properties\AssemblyInfo.cs') | Foreach-Object {$_ -replace 'GITVERSION', $version} | Set-Content -Encoding UTF8 '$(ProjectDir)Properties\AssemblyInfo.cs'" + $(ProjectDir)Linux/Build/PreBuildEvent.sh $(ProjectDir)