diff --git a/PCK-Studio-Updater/API/GithubParams.cs b/PCK-Studio-Updater/API/GithubParams.cs deleted file mode 100644 index 77aed764..00000000 --- a/PCK-Studio-Updater/API/GithubParams.cs +++ /dev/null @@ -1,22 +0,0 @@ -using System.Text.RegularExpressions; - -namespace PCKStudio_Updater -{ - public sealed class GithubParams - { - public readonly string RepositoryOwnerName; - public readonly string RepositoryName; - public readonly string TargetExecutableName; - public readonly bool UsePreRelease; - public readonly Regex VersionMatcher; - - public GithubParams(string repositoryOwnerName, string repositoryName, string targetExecutableName, bool usePreRelease, Regex versionMatcher) - { - RepositoryOwnerName = repositoryOwnerName; - RepositoryName = repositoryName; - TargetExecutableName = targetExecutableName; - UsePreRelease = usePreRelease; - VersionMatcher = versionMatcher; - } - } -} diff --git a/PCK-Studio-Updater/API/GithubUpdateDownloader.cs b/PCK-Studio-Updater/API/GithubUpdateDownloader.cs deleted file mode 100644 index 663da45e..00000000 --- a/PCK-Studio-Updater/API/GithubUpdateDownloader.cs +++ /dev/null @@ -1,146 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Diagnostics; -using System.IO.Compression; -using System.IO; -using System.Linq; -using System.Net; -using System.Reflection; -using System.Text; -using System.Threading.Tasks; -using Octokit; - -namespace PCKStudio_Updater -{ - public sealed class GithubUpdateDownloader : IUpdateDownloader - { - private static readonly Assembly updaterAssembly = Assembly.GetAssembly(typeof(GithubUpdateDownloader)); - - private readonly GithubParams _updateParams; - private readonly GitHubClient githubClient; - private Release latestFetchedRelease; - private Version latestReleaseVersion; - private DirectoryInfo downloadDirectory; - - - public GithubUpdateDownloader(GithubParams updateParams) - { - _updateParams = updateParams; - var githubClientProductHeader = new ProductHeaderValue(updaterAssembly.GetName().Name); - githubClient = new GitHubClient(githubClientProductHeader); - } - - public bool IsUpdateAvailable(FileVersionInfo fileVersionInfo) - { - return IsUpdateAvailable(fileVersionInfo.ProductVersion); - } - - public bool IsUpdateAvailable(Assembly currentAssembly) - { - if (!File.Exists(currentAssembly.Location)) - return false; - FileVersionInfo fileVersionInfo = FileVersionInfo.GetVersionInfo(currentAssembly.Location); - return IsUpdateAvailable(fileVersionInfo.ProductVersion); - } - - public bool IsUpdateAvailable(Version productVersion) - { - Debug.WriteLine("Release Product ver.: " + latestReleaseVersion); - Debug.WriteLine("Current Product ver.: " + productVersion); - return latestReleaseVersion.CompareTo(productVersion) >= 0; - } - - public bool IsUpdateAvailable(string productVersion) - { - GetLatestRelease(_updateParams.UsePreRelease); - if (Version.TryParse(productVersion, out var currentVersion)) - { - return IsUpdateAvailable(currentVersion); - } - return false; - } - - private void UnpackZip(string zipFilePath) - { - ZipFile.ExtractToDirectory(zipFilePath, Path.GetDirectoryName(zipFilePath)); - } - - private static void DownloadAsset(ReleaseAsset asset, Stream destination) - { - string downloadUrl = asset.BrowserDownloadUrl; - var client = new WebClient(); - using (var serverStream = client.OpenRead(downloadUrl)) - { - serverStream.CopyTo(destination); - } - } - - private void GetLatestRelease(bool prerelease) - { - Release release; - if (prerelease) - { - var prereleaseTask = githubClient.Repository.Release.GetAll(_updateParams.RepositoryOwnerName, _updateParams.RepositoryName); - prereleaseTask.Wait(); - var prereleases = prereleaseTask.Result.OrderByDescending(release => release.PublishedAt ?? release.CreatedAt).Where(release => release.Prerelease).ToArray(); - release = latestFetchedRelease = prereleases[0]; - } - else - { - var latestReleaseTask = githubClient.Repository.Release.GetLatest(_updateParams.RepositoryOwnerName, _updateParams.RepositoryName); - latestReleaseTask.Wait(); - release = latestFetchedRelease = latestReleaseTask.Result; - } - var match = _updateParams.VersionMatcher.Match(release.Name); - if (match.Success) - { - string versionString = match.Value; - Version.TryParse(versionString, out latestReleaseVersion); - } - } - - private void EmptyDirectory(DirectoryInfo directory) - { - foreach (FileInfo file in directory.GetFiles()) - { - if (Path.GetFileNameWithoutExtension(file.Name) != _updateParams.TargetExecutableName && file.Name != "update.zip") - file.Delete(); - } - foreach (DirectoryInfo subDirectory in directory.GetDirectories()) - subDirectory.Delete(true); - } - - public void DownloadTo(DirectoryInfo directory) - { - if (latestFetchedRelease is null) - GetLatestRelease(_updateParams.UsePreRelease); - if (latestFetchedRelease.Assets?.Count > 0) - { - var asset = latestFetchedRelease.Assets[0]; - string zipFilePath = Path.Combine(directory.FullName, asset.Name); - using(var zipFileStream = File.OpenWrite(zipFilePath)) - { - DownloadAsset(asset, zipFileStream); - } - Debug.WriteLine("Download Complete", category: nameof(GithubUpdateDownloader)); - EmptyDirectory(directory); - UnpackZip(zipFilePath); - downloadDirectory = directory; - } - } - - public void Launch() - { - if (downloadDirectory is null) - { - throw new ArgumentNullException("Download directory not set."); - } - - var files = downloadDirectory.GetFiles(_updateParams.TargetExecutableName + ".exe", SearchOption.TopDirectoryOnly); - if (files is not null && files.Length > 0) - { - Process.Start(files[0].FullName); - } - } - } -} diff --git a/PCK-Studio-Updater/API/IUpdateDownloader.cs b/PCK-Studio-Updater/API/IUpdateDownloader.cs deleted file mode 100644 index ef422762..00000000 --- a/PCK-Studio-Updater/API/IUpdateDownloader.cs +++ /dev/null @@ -1,19 +0,0 @@ -using System; -using System.Collections.Generic; -using System.IO; -using System.Linq; -using System.Text; -using System.Threading.Tasks; - -namespace PCKStudio_Updater -{ - public interface IUpdateDownloader - { - public bool IsUpdateAvailable(Version currentVersion); - public bool IsUpdateAvailable(string currentVersionString); - - public void DownloadTo(DirectoryInfo directory); - - public void Launch(); - } -} diff --git a/PCK-Studio-Updater/PCK-Studio-Updater.csproj b/PCK-Studio-Updater/PCK-Studio-Updater.csproj deleted file mode 100644 index a47ab997..00000000 --- a/PCK-Studio-Updater/PCK-Studio-Updater.csproj +++ /dev/null @@ -1,105 +0,0 @@ - - - - - Debug - AnyCPU - {5B223556-15B9-41DA-AA0B-5E7F45E743BF} - WinExe - PCKStudio_Updater - PCK-Studio-Updater - latest - enable - v4.8 - 512 - true - true - publish\ - true - Disk - false - Foreground - 7 - Days - false - false - true - 0 - 1.0.0.%2a - false - false - true - - - AnyCPU - true - full - false - bin\Debug\ - DEBUG;TRACE - prompt - 4 - - - AnyCPU - pdbonly - true - bin\Release\ - TRACE - prompt - 4 - - - PCKStudio_Updater.Program - - - ProjectLogo.ico - - - - - - - - - - - - - - - - - - - - - - 5.7.0 - runtime; build; native; contentfiles; analyzers; buildtransitive - all - - - 7.1.0 - - - - - False - Microsoft .NET Framework 4.8 %28x86 and x64%29 - true - - - False - .NET Framework 3.5 SP1 - false - - - - - - - - - - \ No newline at end of file diff --git a/PCK-Studio-Updater/Program.cs b/PCK-Studio-Updater/Program.cs deleted file mode 100644 index d150ad4c..00000000 --- a/PCK-Studio-Updater/Program.cs +++ /dev/null @@ -1,58 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Diagnostics; -using System.IO; -using System.Linq; -using System.Runtime; -using System.Text; -using System.Text.RegularExpressions; - -namespace PCKStudio_Updater -{ - internal class Program - { - static void Main(string[] args) - { - Uri projectUrl = new Uri("https://github.com/PhoenixARC/-PCK-Studio"); - if (args.Length > 0) - { - projectUrl = new Uri(args[0]); - } - - string executableName = "PCK-Studio"; - if (args.Length > 1) - { - executableName = args[1]; - } - - bool prerelease = false; - if (args.Length > 2) - { - prerelease = args[2].ToLower() == "true" || args[2].ToLower() == "1"; - } - - var versionMatcher = new Regex("(\\*|\\d+(\\.\\d+){0,3}(\\.\\*)?)"); - if (args.Length > 3) - { - versionMatcher = new Regex(args[3]); - } - - GithubParams updateParams = new GithubParams( - Path.GetDirectoryName(projectUrl.AbsolutePath).Replace("\\", ""), - Path.GetFileName(projectUrl.AbsolutePath), - executableName, - prerelease, - versionMatcher - ); - - IUpdateDownloader updater = new GithubUpdateDownloader(updateParams); - - if (!File.Exists(updateParams.TargetExecutableName + ".exe") || updater.IsUpdateAvailable(FileVersionInfo.GetVersionInfo(updateParams.TargetExecutableName + ".exe").ProductVersion)) - { - updater.DownloadTo(new DirectoryInfo(".")); - updater.Launch(); - return; - } - } - } -} diff --git a/PCK-Studio-Updater/ProjectLogo.ico b/PCK-Studio-Updater/ProjectLogo.ico deleted file mode 100644 index 85357f6f..00000000 Binary files a/PCK-Studio-Updater/ProjectLogo.ico and /dev/null differ diff --git a/PCK-Studio-Updater/Properties/AssemblyInfo.cs b/PCK-Studio-Updater/Properties/AssemblyInfo.cs deleted file mode 100644 index 8e714011..00000000 --- a/PCK-Studio-Updater/Properties/AssemblyInfo.cs +++ /dev/null @@ -1,36 +0,0 @@ -using System.Reflection; -using System.Runtime.CompilerServices; -using System.Runtime.InteropServices; - -// General Information about an assembly is controlled through the following -// set of attributes. Change these attribute values to modify the information -// associated with an assembly. -[assembly: AssemblyTitle("PckStudio-Updater")] -[assembly: AssemblyDescription("Updater for PCK-Studio")] -[assembly: AssemblyConfiguration("")] -[assembly: AssemblyCompany("")] -[assembly: AssemblyProduct("PckStudio-Updater")] -[assembly: AssemblyCopyright("Copyright © 2023 Miku-666")] -[assembly: AssemblyTrademark("")] -[assembly: AssemblyCulture("")] - -// Setting ComVisible to false makes the types in this assembly not visible -// to COM components. If you need to access a type in this assembly from -// COM, set the ComVisible attribute to true on that type. -[assembly: ComVisible(false)] - -// The following GUID is for the ID of the typelib if this project is exposed to COM -[assembly: Guid("5b223556-15b9-41da-aa0b-5e7f45e743bf")] - -// Version information for an assembly consists of the following four values: -// -// Major Version -// Minor Version -// Build Number -// Revision -// -// You can specify all the values or you can default the Build and Revision Numbers -// by using the '*' as shown below: -// [assembly: AssemblyVersion("1.0.*")] -[assembly: AssemblyVersion("1.0.0.0")] -[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/PCK-Studio-Updater/Properties/app.manifest b/PCK-Studio-Updater/Properties/app.manifest deleted file mode 100644 index c02c2d89..00000000 --- a/PCK-Studio-Updater/Properties/app.manifest +++ /dev/null @@ -1,70 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file