Skip to content

Commit

Permalink
Release 1.3.0
Browse files Browse the repository at this point in the history
Release 1.3.0
  • Loading branch information
Yelo420 authored Aug 12, 2023
2 parents 2064ae0 + dca0e9a commit bb0acef
Show file tree
Hide file tree
Showing 32 changed files with 1,014 additions and 201 deletions.
10 changes: 10 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,15 @@
# GameVault App Changelog

## 1.3.0
### Changes
- Installation pipeline implemented. The UI for the download tab has been completely overhauled. GameVault is now able to extract downloaded game archives and perform the installation process depending on the game type.
- Added new game types filter in the library
- Bug fix: The box images were cut off in the Library tab. The format has now been changed to 2:3, so that you can always see the whole image.
- Bug fix: The box image titles in the library tab now have a wrap, so that even longer titles are readable
- The "App is still running in the system tray" message will now only be displayed once per installation
- Other UI changes especially in terms of spacing and round corners
- Bug fix: When re-loading a user in the community tab, the filter was not sorting the progresses correctly afterwards

## 1.2.1
### Changes
- Autostart fix (For self build and Microsoft Store)
Expand Down
34 changes: 34 additions & 0 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
# Contributing

By submitting your contributions through pull requests or any other means, you are deemed to automatically accept and agree to the terms and conditions stated in the Contributor License Agreement (CLA). No further action or explicit agreement is required for your contributions to be governed by the CLA.

## Contributor License Agreement

Phalcode Individual Contributor License Agreement

In order to clarify the intellectual property license granted with Contributions from any person or entity, Alkan Alper, Schäfer Philip GbR / Phalcode ("Phalcode") must have a Contributor License Agreement ("CLA") on file that has been signed by each Contributor, indicating agreement to the license terms below. This license is for your protection as a Contributor as well as the protection of Phalcode; it does not change your rights to use your own Contributions for any other purpose.

You accept and agree to the following terms and conditions for Your present and future Contributions submitted to Phalcode. Except for the license granted herein to Phalcode and recipients of software distributed by Phalcode, You reserve all right, title, and interest in and to Your Contributions.

- 1. Definitions.
- "You" (or "Your") shall mean the copyright owner or legal entity authorized by the copyright owner that is making this Agreement with Phalcode. For legal entities, the entity making a Contribution and all other entities that control, are controlled by, or are under common control with that entity are considered to be a single Contributor. For the purposes of this definition, "control" means (i) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the outstanding shares, or (iii) beneficial ownership of such entity.
- "Contribution" shall mean any original work of authorship, including any modifications or additions to an existing work, that is intentionally submitted by You to Phalcode for inclusion in, or documentation of, any of the products owned or managed by Phalcode (the "Work"). For the purposes of this definition, "submitted" means any form of electronic, verbal, or written communication sent to Phalcode or its representatives, including but not limited to communication on electronic mailing lists, source code control systems, and issue tracking systems that are managed by, or on behalf of, Phalcode for the purpose of discussing and improving the Work, but excluding communication that is conspicuously marked or otherwise designated in writing by You as "Not a Contribution."

- 2. Grant of Copyright License.
- Subject to the terms and conditions of this Agreement, You hereby grant to Phalcode and to recipients of software distributed by Phalcode a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable copyright license to reproduce, prepare derivative works of, publicly display, publicly perform, sublicense, and distribute Your Contributions and such derivative works.

- 3. Grant of Patent License.
- Subject to the terms and conditions of this Agreement, You hereby grant to Phalcode and to recipients of software distributed by Phalcode a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable (except as stated in this section) patent license to make, have made, use, offer to sell, sell, import, and otherwise transfer the Work, where such license applies only to those patent claims licensable by You that are necessarily infringed by Your Contribution(s) alone or by combination of Your Contribution(s) with the Work to which such Contribution(s) was submitted. If any entity institutes patent litigation against You or any other entity (including a cross-claim or counterclaim in a lawsuit) alleging that your Contribution, or the Work to which you have contributed, constitutes direct or contributory patent infringement, then any patent licenses granted to that entity under this Agreement for that Contribution or Work shall terminate as of the date such litigation is filed.

- 4. You represent that you are legally entitled to grant the above license.
- If your employer(s) have rights to intellectual property that you create that includes your Contributions, you represent that you have received permission to make Contributions on behalf of that employer, that your employer has waived such rights for your Contributions to Phalcode, or that your employer has executed a separate Corporate CLA with Phalcode.

- 5. You represent that each of Your Contributions is Your original creation (see section 7 for submissions on behalf of others).
- You represent that Your Contribution submissions include complete details of any third-party license or other restriction (including, but not limited to, related patents and trademarks) of which you are personally aware and which are associated with any part of Your Contributions.

- 6. You are not expected to provide support for Your Contributions, except to the extent You desire to provide support.
- You may provide support for free, for a fee, or not at all. Unless required by applicable law or agreed to in writing, You provide Your Contributions on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, including, without limitation, any warranties or conditions of TITLE, NON- INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE.

- 7. Should You wish to submit work that is not Your original creation, You may submit it to Phalcode separately from any Contribution, identifying the complete details of its source and of any license or other restriction (including, but not limited to, related patents, trademarks, and license agreements) of which you are personally aware, and conspicuously marking the work as "Submitted on behalf of a third-party: [named here]".

- 8. You agree to notify Phalcode of any facts or circumstances of which you become aware that would make these representations inaccurate in any respect.
4 changes: 2 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# crackpipe-app
# gamevault-app
![logo](https://gamevau.lt/img/logo-text-and-image-sbs.png)
[You can find the official Website/Documentation here](https://crackpipe.de)
[You can find the official Website/Documentation here](https://gamevau.lt)

## Library Technical Decision Matrix

Expand Down
36 changes: 34 additions & 2 deletions gamevault.sln
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,10 @@ VisualStudioVersion = 17.4.32804.182
MinimumVisualStudioVersion = 10.0.40219.1
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "gamevault", "gamevault\gamevault.csproj", "{4B99B996-4FBE-400C-B905-73ECA8BC2E7C}"
EndProject
# Project("{C7167F0D-BC9F-4E6E-AFE1-012C56B48DB5}") = "DeveloperEditionPackage", "DeveloperEditionPackage\DeveloperEditionPackage.wapproj", "{B17D6950-2AB2-424E-BCE9-86D987E2B71A}"
# EndProject
#Project("{C7167F0D-BC9F-4E6E-AFE1-012C56B48DB5}") = "ReleasePackage", "ReleasePackage\ReleasePackage.wapproj", "{99E693F8-6B95-4CA0-8A1C-6A72B820A434}"
#EndProject
#Project("{C7167F0D-BC9F-4E6E-AFE1-012C56B48DB5}") = "DeveloperEditionPackage", "DeveloperEditionPackage\DeveloperEditionPackage.wapproj", "{B17D6950-2AB2-424E-BCE9-86D987E2B71A}"
#EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
Expand Down Expand Up @@ -41,6 +43,36 @@ Global
{4B99B996-4FBE-400C-B905-73ECA8BC2E7C}.Release|x64.Build.0 = Release|x64
{4B99B996-4FBE-400C-B905-73ECA8BC2E7C}.Release|x86.ActiveCfg = Release|Any CPU
{4B99B996-4FBE-400C-B905-73ECA8BC2E7C}.Release|x86.Build.0 = Release|Any CPU
{99E693F8-6B95-4CA0-8A1C-6A72B820A434}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{99E693F8-6B95-4CA0-8A1C-6A72B820A434}.Debug|Any CPU.Build.0 = Debug|Any CPU
{99E693F8-6B95-4CA0-8A1C-6A72B820A434}.Debug|Any CPU.Deploy.0 = Debug|Any CPU
{99E693F8-6B95-4CA0-8A1C-6A72B820A434}.Debug|ARM.ActiveCfg = Debug|ARM
{99E693F8-6B95-4CA0-8A1C-6A72B820A434}.Debug|ARM.Build.0 = Debug|ARM
{99E693F8-6B95-4CA0-8A1C-6A72B820A434}.Debug|ARM.Deploy.0 = Debug|ARM
{99E693F8-6B95-4CA0-8A1C-6A72B820A434}.Debug|ARM64.ActiveCfg = Debug|ARM64
{99E693F8-6B95-4CA0-8A1C-6A72B820A434}.Debug|ARM64.Build.0 = Debug|ARM64
{99E693F8-6B95-4CA0-8A1C-6A72B820A434}.Debug|ARM64.Deploy.0 = Debug|ARM64
{99E693F8-6B95-4CA0-8A1C-6A72B820A434}.Debug|x64.ActiveCfg = Debug|x64
{99E693F8-6B95-4CA0-8A1C-6A72B820A434}.Debug|x64.Build.0 = Debug|x64
{99E693F8-6B95-4CA0-8A1C-6A72B820A434}.Debug|x64.Deploy.0 = Debug|x64
{99E693F8-6B95-4CA0-8A1C-6A72B820A434}.Debug|x86.ActiveCfg = Debug|x86
{99E693F8-6B95-4CA0-8A1C-6A72B820A434}.Debug|x86.Build.0 = Debug|x86
{99E693F8-6B95-4CA0-8A1C-6A72B820A434}.Debug|x86.Deploy.0 = Debug|x86
{99E693F8-6B95-4CA0-8A1C-6A72B820A434}.Release|Any CPU.ActiveCfg = Release|Any CPU
{99E693F8-6B95-4CA0-8A1C-6A72B820A434}.Release|Any CPU.Build.0 = Release|Any CPU
{99E693F8-6B95-4CA0-8A1C-6A72B820A434}.Release|Any CPU.Deploy.0 = Release|Any CPU
{99E693F8-6B95-4CA0-8A1C-6A72B820A434}.Release|ARM.ActiveCfg = Release|ARM
{99E693F8-6B95-4CA0-8A1C-6A72B820A434}.Release|ARM.Build.0 = Release|ARM
{99E693F8-6B95-4CA0-8A1C-6A72B820A434}.Release|ARM.Deploy.0 = Release|ARM
{99E693F8-6B95-4CA0-8A1C-6A72B820A434}.Release|ARM64.ActiveCfg = Release|ARM64
{99E693F8-6B95-4CA0-8A1C-6A72B820A434}.Release|ARM64.Build.0 = Release|ARM64
{99E693F8-6B95-4CA0-8A1C-6A72B820A434}.Release|ARM64.Deploy.0 = Release|ARM64
{99E693F8-6B95-4CA0-8A1C-6A72B820A434}.Release|x64.ActiveCfg = Release|x64
{99E693F8-6B95-4CA0-8A1C-6A72B820A434}.Release|x64.Build.0 = Release|x64
{99E693F8-6B95-4CA0-8A1C-6A72B820A434}.Release|x64.Deploy.0 = Release|x64
{99E693F8-6B95-4CA0-8A1C-6A72B820A434}.Release|x86.ActiveCfg = Release|x86
{99E693F8-6B95-4CA0-8A1C-6A72B820A434}.Release|x86.Build.0 = Release|x86
{99E693F8-6B95-4CA0-8A1C-6A72B820A434}.Release|x86.Deploy.0 = Release|x86
{B17D6950-2AB2-424E-BCE9-86D987E2B71A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{B17D6950-2AB2-424E-BCE9-86D987E2B71A}.Debug|Any CPU.Build.0 = Debug|Any CPU
{B17D6950-2AB2-424E-BCE9-86D987E2B71A}.Debug|Any CPU.Deploy.0 = Debug|Any CPU
Expand Down
3 changes: 3 additions & 0 deletions gamevault/App.xaml.cs
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@
using System.IO.Pipes;
using System.Windows.Threading;
using System.Diagnostics;
using System.Collections.Generic;

namespace gamevault
{
Expand Down Expand Up @@ -98,6 +99,7 @@ private async void Application_Startup(object sender, StartupEventArgs e)

private void AppDispatcherUnhandledException(object sender, DispatcherUnhandledExceptionEventArgs e)
{
ProcessShepherd.KillAllChildProcesses();
#if DEBUG
e.Handled = false;
#else
Expand Down Expand Up @@ -210,6 +212,7 @@ private async void NotifyIcon_Exit_Click(Object sender, EventArgs e)
private void ShutdownApp()
{
ShowToastMessage = false;
ProcessShepherd.KillAllChildProcesses();
Shutdown();
}
}
Expand Down
30 changes: 30 additions & 0 deletions gamevault/Converter/EnumDescriptionConverter.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
using gamevault.Models;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Globalization;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Data;

namespace gamevault.Converter
{
internal class EnumDescriptionConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
if ((GameType)value != GameType.UNDETECTABLE)
{
string result = ((DescriptionAttribute[])typeof(GameType).GetField(((GameType)value).ToString()).GetCustomAttributes(typeof(DescriptionAttribute), false))[0].Description.ToString();
return result;
}
return string.Empty;
}

public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
return string.Empty;
}
}
}
26 changes: 26 additions & 0 deletions gamevault/Helper/ProcessHelper.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace gamevault.Helper
{
internal class ProcessHelper
{
internal static Process StartApp(string fileName, bool asAdmin = false)
{
ProcessStartInfo app = new ProcessStartInfo();
app.FileName = fileName;
app.WorkingDirectory = Path.GetDirectoryName(fileName);
app.UseShellExecute = true;
if (asAdmin)
{
app.Verb = "runas";
}
return Process.Start(app);
}
}
}
112 changes: 112 additions & 0 deletions gamevault/Helper/SevenZipHelper.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,112 @@
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.IO;
using System.Threading.Tasks;


namespace gamevault.Helper
{
public class SevenZipProgressEventArgs : EventArgs
{
public int PercentageDone { get; set; }
public SevenZipProgressEventArgs(int percentageDone)
{
PercentageDone = percentageDone;
}
}
internal static class ProcessShepherd
{
private static List<Process> childProcesses = new List<Process>();
internal static void AddProcess(Process process)
{
childProcesses.Add(process);
}
internal static void RemoveProcess(Process process)
{
childProcesses.Remove(process);
}
internal static void KillAllChildProcesses()
{
for (int count = 0; count < childProcesses.Count; count++)
{
try
{
if (!childProcesses[count].HasExited)
{
childProcesses[count].Kill();
}
}
catch { }
}
}

}
internal class SevenZipHelper
{
private Process process { get; set; }
public delegate void ProcessHandler(object sender, SevenZipProgressEventArgs e);
public event ProcessHandler Process;
private ProcessStartInfo CreateProcessHeader()
{
ProcessStartInfo info = new ProcessStartInfo();
info.CreateNoWindow = true;
info.RedirectStandardOutput = true;
info.UseShellExecute = false;
info.FileName = $"{AppDomain.CurrentDomain.BaseDirectory}Lib\\7z\\7z.exe";
return info;
}

internal async Task<int> ExtractArchive(string archivePath, string outputDir)
{
await Task.Run(() =>
{
process = new Process();
ProcessShepherd.AddProcess(process);
process.StartInfo = CreateProcessHeader();
process.StartInfo.Arguments = $"x -y -bsp1 -o\"{outputDir}\" \"{archivePath}\"";
process.EnableRaisingEvents = true;
process.OutputDataReceived += (sender, e) =>
{
if (Process != null)
{
if (e.Data != null && e.Data.Contains("%"))
{
int index = e.Data.IndexOf("%");
string percentageStr = e.Data.Substring(0, index).Replace(" ", "");
if (int.TryParse(percentageStr, out int percentage))
{
Process(this, new SevenZipProgressEventArgs(percentage));
}
}
}
};

if (!Directory.Exists(outputDir))
{
Directory.CreateDirectory(outputDir);
}

process.Start();
process.BeginOutputReadLine();
process.WaitForExit();
ProcessShepherd.RemoveProcess(process);
});
try
{
return process.ExitCode;
}
catch
{
return -1;
}
}
internal void Cancel()
{
if (process != null)
{
process.Kill();
}
}
}
}
Binary file added gamevault/Lib/7z/7z.dll
Binary file not shown.
Binary file added gamevault/Lib/7z/7z.exe
Binary file not shown.
Loading

0 comments on commit bb0acef

Please # to comment.