diff --git a/PCK-Studio-Updater/API/GithubParams.cs b/PCK-Studio-Updater/API/GithubParams.cs
new file mode 100644
index 00000000..77aed764
--- /dev/null
+++ b/PCK-Studio-Updater/API/GithubParams.cs
@@ -0,0 +1,22 @@
+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
new file mode 100644
index 00000000..b89c3897
--- /dev/null
+++ b/PCK-Studio-Updater/API/GithubUpdateDownloader.cs
@@ -0,0 +1,148 @@
+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)
+ {
+ string appname = Assembly.GetExecutingAssembly().GetName().Name;
+ foreach (FileInfo file in directory.GetFiles())
+ {
+ if (Path.GetFileNameWithoutExtension(file.Name) != appname && 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, "update.zip");
+ using(var zipFileStream = File.OpenWrite(zipFilePath))
+ {
+ DownloadAsset(asset, zipFileStream);
+ }
+ Debug.WriteLine("Download Complete", category: nameof(GithubUpdateDownloader));
+ EmptyDirectory(directory);
+ UnpackZip(zipFilePath);
+ File.Delete(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
new file mode 100644
index 00000000..ef422762
--- /dev/null
+++ b/PCK-Studio-Updater/API/IUpdateDownloader.cs
@@ -0,0 +1,19 @@
+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
new file mode 100644
index 00000000..a47ab997
--- /dev/null
+++ b/PCK-Studio-Updater/PCK-Studio-Updater.csproj
@@ -0,0 +1,105 @@
+
+
+
+
+ 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
new file mode 100644
index 00000000..d150ad4c
--- /dev/null
+++ b/PCK-Studio-Updater/Program.cs
@@ -0,0 +1,58 @@
+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
new file mode 100644
index 00000000..85357f6f
Binary files /dev/null and b/PCK-Studio-Updater/ProjectLogo.ico differ
diff --git a/PCK-Studio-Updater/Properties/AssemblyInfo.cs b/PCK-Studio-Updater/Properties/AssemblyInfo.cs
new file mode 100644
index 00000000..8e714011
--- /dev/null
+++ b/PCK-Studio-Updater/Properties/AssemblyInfo.cs
@@ -0,0 +1,36 @@
+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
new file mode 100644
index 00000000..c02c2d89
--- /dev/null
+++ b/PCK-Studio-Updater/Properties/app.manifest
@@ -0,0 +1,70 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/PCK-Studio/App.config b/PCK-Studio/App.config
index fff538b6..f3cb4efa 100644
--- a/PCK-Studio/App.config
+++ b/PCK-Studio/App.config
@@ -71,6 +71,12 @@
True
+
+ True
+
+
+ False
+
False
diff --git a/PCK-Studio/Classes/Misc/RichPresenceClient.cs b/PCK-Studio/Classes/Misc/RichPresenceClient.cs
index e7bef380..fdbad35f 100644
--- a/PCK-Studio/Classes/Misc/RichPresenceClient.cs
+++ b/PCK-Studio/Classes/Misc/RichPresenceClient.cs
@@ -27,7 +27,7 @@ namespace PckStudio.Classes.Misc
new Button()
{
Label = "Check it out!",
- Url = Program.ProjectUrl,
+ Url = Program.ProjectUrl.AbsoluteUri,
}
};
diff --git a/PCK-Studio/Classes/Networking/Network.cs b/PCK-Studio/Classes/Networking/Network.cs
deleted file mode 100644
index f35575ac..00000000
--- a/PCK-Studio/Classes/Networking/Network.cs
+++ /dev/null
@@ -1,59 +0,0 @@
-using System;
-using System.Diagnostics;
-using System.Net;
-using System.Windows.Forms;
-
-namespace PckStudio.Classes.Networking
-{
- [Obsolete]
- class Network
- {
- public static string Version = Application.ProductVersion;
- public static bool IsBeta = true;
- public static bool Portable = false;
- public static bool NeedsUpdate = false;
- public static Uri MainURL = new Uri(Program.BaseAPIUrl);
- public static Uri BackUpURL = new Uri(Program.BackUpAPIUrl);
- static readonly string UpdatePath = "/update/Version";
- static readonly string BetaUpdatePath = "/update/VersionBeta";
-
- public static void CheckUpdate()
- {
- using WebClient wc = new WebClient();
- try
- {
- Update.CheckForUpdate(null); // TODO
-
- Uri versionUri = new Uri(MainURL, IsBeta ? BetaUpdatePath : UpdatePath);
- Console.WriteLine(versionUri);
- string serverVersion = wc.DownloadString(versionUri);
- if (Version != serverVersion)
- {
- if (MessageBox.Show("An update is available! Do you want to update?" +
- $"\nYour Version: {Version}" +
- $"\nAvailable version: {serverVersion}", "Update Available", MessageBoxButtons.YesNo) == DialogResult.Yes)
- {
- Update.UpdateProgram(new UpdateOptions(
- isBeta: IsBeta,
- isPortable: Portable,
- baseUri: new Uri(MainURL, "/Update/Download/setup/PCKStudio-Setup.msi"),
- betaUri: new Uri(MainURL, "/Update/Download/setup/beta/PCKStudioBeta-Setup.msi")
- )
- );
- }
- else
- {
- NeedsUpdate = true;
- }
- }
- }
- catch (Exception ex)
- {
- Debug.WriteLine(ex.Message);
- MessageBox.Show("Can't connect to the server!", "Server unavailabe");
- }
- }
-
-
- }
-}
diff --git a/PCK-Studio/Classes/Networking/Update.cs b/PCK-Studio/Classes/Networking/Update.cs
deleted file mode 100644
index 4813ae45..00000000
--- a/PCK-Studio/Classes/Networking/Update.cs
+++ /dev/null
@@ -1,88 +0,0 @@
-using System;
-using System.Diagnostics;
-using System.Threading;
-using System.IO;
-using System.Net;
-using System.Windows.Forms;
-
-namespace PckStudio.Classes.Networking
-{
- [Obsolete]
- public enum UpdateResult
- {
- // Base Failure value
- Failure = -1,
- // Base Success value
- Success,
-
- UpdateAvailable,
-
- UpdateFailure,
- }
-
- [Obsolete]
- class UpdateOptions
- {
- public bool IsBeta { get; set; }
- public bool IsPortable { get; set; }
- public string Domain
- {
- get => _baseDomain?.OriginalString ?? (_betaDomain?.OriginalString ?? throw new NullReferenceException(nameof(_betaDomain)));
- set
- {
- _ = value ?? throw new NullReferenceException(nameof(value));
- _baseDomain = new Uri(value);
- }
- }
-
- private Uri _baseDomain;
- private Uri _betaDomain;
-
- public UpdateOptions(bool isBeta, bool isPortable, Uri baseUri, Uri betaUri)
- {
- IsBeta = isBeta;
- IsPortable = isPortable;
- _baseDomain = baseUri;
- _betaDomain = betaUri;
- }
- }
-
- [Obsolete]
- static class Update
- {
- public static UpdateResult CheckForUpdate(UpdateOptions options)
- {
- // TODO: implement this
- return UpdateResult.Failure;
- }
-
- public static void UpdateProgram(UpdateOptions options)
- {
- string updateURL = options.Domain;
- if (options.IsPortable)
- {
- updateURL = updateURL.Replace(".msi","Portable.msi");
- }
-
- string downloadPath = Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData) + "\\Temp\\";
- string destinationURL = options.Domain;
- if (TryDownloadFile(downloadPath + Path.GetFileName(destinationURL), destinationURL))
- {
- Process.Start(downloadPath + Path.GetFileName(destinationURL));
- Application.Exit();
- }
- }
-
- static bool TryDownloadFile(string filePath, string url)
- {
- try
- {
- using (WebClient client = new WebClient())
- client.DownloadFile(url, filePath);
- return true;
- }
- catch (Exception ex) { Console.WriteLine(ex.Message); }
- return false;
- }
- }
-}
diff --git a/PCK-Studio/Forms/AppSettingsForm.Designer.cs b/PCK-Studio/Forms/AppSettingsForm.Designer.cs
index d651aef3..977513d6 100644
--- a/PCK-Studio/Forms/AppSettingsForm.Designer.cs
+++ b/PCK-Studio/Forms/AppSettingsForm.Designer.cs
@@ -36,6 +36,7 @@
this.autoLoadPckCheckBox = new MetroFramework.Controls.MetroCheckBox();
this.showPresenceCheckBox = new MetroFramework.Controls.MetroCheckBox();
this.grf_paramKeyComboBoxCheckBox = new MetroFramework.Controls.MetroCheckBox();
+ this.usePrereleaseCheckBox = new MetroFramework.Controls.MetroCheckBox();
this.SuspendLayout();
//
// autoSaveCheckBox
@@ -76,7 +77,6 @@
// autoUpdateCheckBox
//
this.autoUpdateCheckBox.AutoSize = true;
- this.autoUpdateCheckBox.Enabled = false;
this.autoUpdateCheckBox.Location = new System.Drawing.Point(23, 105);
this.autoUpdateCheckBox.Name = "autoUpdateCheckBox";
this.autoUpdateCheckBox.Size = new System.Drawing.Size(90, 15);
@@ -86,6 +86,7 @@
this.autoUpdateCheckBox.Theme = MetroFramework.MetroThemeStyle.Dark;
this.SettingToolTip.SetToolTip(this.autoUpdateCheckBox, "Whether to automatically check for updates");
this.autoUpdateCheckBox.UseSelectable = true;
+ this.autoUpdateCheckBox.CheckedChanged += new System.EventHandler(this.autoUpdateCheckBox_CheckedChanged);
//
// autoLoadPckCheckBox
//
@@ -129,11 +130,26 @@
this.grf_paramKeyComboBoxCheckBox.UseSelectable = true;
this.grf_paramKeyComboBoxCheckBox.CheckedChanged += new System.EventHandler(this.grf_paramKeyComboBoxCheckBox_CheckedChanged);
//
+ // usePrereleaseCheckBox
+ //
+ this.usePrereleaseCheckBox.AutoSize = true;
+ this.usePrereleaseCheckBox.Location = new System.Drawing.Point(119, 105);
+ this.usePrereleaseCheckBox.Name = "usePrereleaseCheckBox";
+ this.usePrereleaseCheckBox.Size = new System.Drawing.Size(98, 15);
+ this.usePrereleaseCheckBox.Style = MetroFramework.MetroColorStyle.White;
+ this.usePrereleaseCheckBox.TabIndex = 6;
+ this.usePrereleaseCheckBox.Text = "Use Beta Build";
+ this.usePrereleaseCheckBox.Theme = MetroFramework.MetroThemeStyle.Dark;
+ this.SettingToolTip.SetToolTip(this.usePrereleaseCheckBox, "Whether to automatically check for updates");
+ this.usePrereleaseCheckBox.UseSelectable = true;
+ this.usePrereleaseCheckBox.Visible = false;
+ //
// AppSettingsForm
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(527, 270);
+ this.Controls.Add(this.usePrereleaseCheckBox);
this.Controls.Add(this.grf_paramKeyComboBoxCheckBox);
this.Controls.Add(this.showPresenceCheckBox);
this.Controls.Add(this.autoLoadPckCheckBox);
@@ -164,5 +180,6 @@
private MetroFramework.Controls.MetroCheckBox autoLoadPckCheckBox;
private MetroFramework.Controls.MetroCheckBox showPresenceCheckBox;
private MetroFramework.Controls.MetroCheckBox grf_paramKeyComboBoxCheckBox;
+ private MetroFramework.Controls.MetroCheckBox usePrereleaseCheckBox;
}
}
\ No newline at end of file
diff --git a/PCK-Studio/Forms/AppSettingsForm.cs b/PCK-Studio/Forms/AppSettingsForm.cs
index 71725fb0..b62445a0 100644
--- a/PCK-Studio/Forms/AppSettingsForm.cs
+++ b/PCK-Studio/Forms/AppSettingsForm.cs
@@ -40,11 +40,21 @@ namespace PckStudio.Forms
Settings.Default.ShowRichPresence = showPresenceCheckBox.Checked;
}
+ private void autoUpdateCheckBox_CheckedChanged(object sender, EventArgs e)
+ {
+ usePrereleaseCheckBox.Visible = Settings.Default.AutoUpdate = autoUpdateCheckBox.Checked;
+ }
+
private void grf_paramKeyComboBoxCheckBox_CheckedChanged(object sender, EventArgs e)
{
Settings.Default.UseComboBoxForGRFParameter = grf_paramKeyComboBoxCheckBox.Checked;
}
+ private void usePrereleaseCheckBox_CheckedChanged(object sender, EventArgs e)
+ {
+ Settings.Default.UsePrerelease = usePrereleaseCheckBox.Checked;
+ }
+
private void LoadCheckboxState(CheckBox checkBox, EventHandler eventHandler, bool state)
{
checkBox.CheckedChanged -= eventHandler;
@@ -58,6 +68,8 @@ namespace PckStudio.Forms
LoadCheckboxState(endianCheckBox, endianCheckBox_CheckedChanged, Settings.Default.UseLittleEndianAsDefault);
LoadCheckboxState(autoLoadPckCheckBox, autoLoadPckCheckBox_CheckedChanged, Settings.Default.LoadSubPcks);
LoadCheckboxState(showPresenceCheckBox, showPresenceCheckBox_CheckedChanged, Settings.Default.ShowRichPresence);
+ LoadCheckboxState(autoUpdateCheckBox, autoUpdateCheckBox_CheckedChanged, Settings.Default.AutoUpdate);
+ LoadCheckboxState(usePrereleaseCheckBox, usePrereleaseCheckBox_CheckedChanged, Settings.Default.UsePrerelease);
LoadCheckboxState(grf_paramKeyComboBoxCheckBox, grf_paramKeyComboBoxCheckBox_CheckedChanged, Settings.Default.UseComboBoxForGRFParameter);
}
diff --git a/PCK-Studio/MainForm.Designer.cs b/PCK-Studio/MainForm.Designer.cs
index 366dc5d5..94e00784 100644
--- a/PCK-Studio/MainForm.Designer.cs
+++ b/PCK-Studio/MainForm.Designer.cs
@@ -33,6 +33,7 @@
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(MainForm));
System.Windows.Forms.ToolStripSeparator toolStripSeparator1;
System.Windows.Forms.ToolStripSeparator toolStripSeparator3;
+ toolStripSeparator3 = new System.Windows.Forms.ToolStripSeparator();
this.contextMenuPCKEntries = new System.Windows.Forms.ContextMenuStrip(this.components);
this.createToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.folderToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
@@ -99,6 +100,7 @@
this.joinDevelopmentDiscordToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.trelloBoardToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.helpToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
+ this.checkForUpdatesToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.aboutToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.videosToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.howToMakeABasicSkinPackToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
@@ -146,7 +148,6 @@
this.LittleEndianCheckBox = new MetroFramework.Controls.MetroCheckBox();
logoPictureBox = new System.Windows.Forms.PictureBox();
toolStripSeparator1 = new System.Windows.Forms.ToolStripSeparator();
- toolStripSeparator3 = new System.Windows.Forms.ToolStripSeparator();
((System.ComponentModel.ISupportInitialize)(logoPictureBox)).BeginInit();
this.contextMenuPCKEntries.SuspendLayout();
this.menuStrip.SuspendLayout();
@@ -166,6 +167,16 @@
logoPictureBox.Name = "logoPictureBox";
logoPictureBox.TabStop = false;
//
+ // toolStripSeparator1
+ //
+ toolStripSeparator1.Name = "toolStripSeparator1";
+ resources.ApplyResources(toolStripSeparator1, "toolStripSeparator1");
+ //
+ // toolStripSeparator3
+ //
+ toolStripSeparator3.Name = "toolStripSeparator3";
+ resources.ApplyResources(toolStripSeparator3, "toolStripSeparator3");
+ //
// contextMenuPCKEntries
//
this.contextMenuPCKEntries.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
@@ -628,6 +639,7 @@
// helpToolStripMenuItem
//
this.helpToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
+ this.checkForUpdatesToolStripMenuItem,
this.aboutToolStripMenuItem,
toolStripSeparator1,
this.videosToolStripMenuItem,
@@ -638,17 +650,18 @@
this.helpToolStripMenuItem.Name = "helpToolStripMenuItem";
resources.ApplyResources(this.helpToolStripMenuItem, "helpToolStripMenuItem");
//
+ // checkForUpdatesToolStripMenuItem
+ //
+ this.checkForUpdatesToolStripMenuItem.Name = "checkForUpdatesToolStripMenuItem";
+ resources.ApplyResources(this.checkForUpdatesToolStripMenuItem, "checkForUpdatesToolStripMenuItem");
+ this.checkForUpdatesToolStripMenuItem.Click += new System.EventHandler(this.checkForUpdatesToolStripMenuItem_Click);
+ //
// aboutToolStripMenuItem
//
resources.ApplyResources(this.aboutToolStripMenuItem, "aboutToolStripMenuItem");
this.aboutToolStripMenuItem.Name = "aboutToolStripMenuItem";
this.aboutToolStripMenuItem.Click += new System.EventHandler(this.aboutToolStripMenuItem_Click);
//
- // toolStripSeparator1
- //
- toolStripSeparator1.Name = "toolStripSeparator1";
- resources.ApplyResources(toolStripSeparator1, "toolStripSeparator1");
- //
// videosToolStripMenuItem
//
this.videosToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
@@ -739,11 +752,6 @@
resources.ApplyResources(this.forMattNLContributorToolStripMenuItem, "forMattNLContributorToolStripMenuItem");
this.forMattNLContributorToolStripMenuItem.Click += new System.EventHandler(this.forMattNLContributorToolStripMenuItem_Click);
//
- // toolStripSeparator3
- //
- toolStripSeparator3.Name = "toolStripSeparator3";
- resources.ApplyResources(toolStripSeparator3, "toolStripSeparator3");
- //
// settingsToolStripMenuItem
//
this.settingsToolStripMenuItem.Image = global::PckStudio.Properties.Resources.ranch;
@@ -1233,6 +1241,7 @@
private System.Windows.Forms.ToolStripMenuItem toPhoenixARCDeveloperToolStripMenuItem;
private System.Windows.Forms.ToolStripMenuItem forMattNLContributorToolStripMenuItem;
private System.Windows.Forms.ToolStripMenuItem settingsToolStripMenuItem;
+ private System.Windows.Forms.ToolStripMenuItem checkForUpdatesToolStripMenuItem;
}
}
diff --git a/PCK-Studio/MainForm.cs b/PCK-Studio/MainForm.cs
index c50d57c1..b669d7b4 100644
--- a/PCK-Studio/MainForm.cs
+++ b/PCK-Studio/MainForm.cs
@@ -32,6 +32,7 @@ using PckStudio.Extensions;
using PckStudio.Popups;
using PckStudio.Classes.Utils;
using PckStudio.Helper;
+using PCKStudio_Updater;
namespace PckStudio
{
@@ -2267,5 +2268,15 @@ namespace PckStudio
return;
}
}
- }
+
+ private void checkForUpdatesToolStripMenuItem_Click(object sender, EventArgs e)
+ {
+ if (Program.Updater.IsUpdateAvailable(Application.ProductVersion))
+ {
+ Program.UpdateToLatest("Would you like to download it?", MessageBoxButtons.YesNo, MessageBoxIcon.Question, DialogResult.Yes);
+ return;
+ }
+ MessageBox.Show("Already up to date.", "No update available");
+ }
+ }
}
\ No newline at end of file
diff --git a/PCK-Studio/MainForm.resx b/PCK-Studio/MainForm.resx
index 6d014a15..9e5d15af 100644
--- a/PCK-Studio/MainForm.resx
+++ b/PCK-Studio/MainForm.resx
@@ -809,32 +809,18 @@
8
+
+ False
+
+
+ 177, 6
+
+
+ 177, 6
+
116, 17
-
- 158, 224
-
-
- contextMenuPCKEntries
-
-
- System.Windows.Forms.ContextMenuStrip, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
-
-
- iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO
- vAAADrwBlbxySQAAABl0RVh0U29mdHdhcmUAcGFpbnQubmV0IDQuMC4xOdTWsmQAAAA3SURBVDhPY/j/
- /z9FGKsgGIsCKWSMTQ0QYxUE45FmALpiYvFwMgAbxqIYG8YqCMajBhCJ/zMAAPGwpV/Xje8RAAAAAElF
- TkSuQmCC
-
-
-
- 157, 22
-
-
- Create
-
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO
@@ -923,20 +909,19 @@
EntityMaterials.bin
-
+
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO
- vAAADrwBlbxySQAAABl0RVh0U29mdHdhcmUAcGFpbnQubmV0IDQuMC4xOdTWsmQAAABzSURBVDhPpYzB
- DQAhCARp4hr3Txu254WTjYRb9cEmk/BgRjBVHTv85Twmgt77PcJEYIFrhIkAgWOEiSAGthEmgtbaD9fW
- mBgpB4xywCgFxiMf5YDdrq3l5wjEjKtzTARMNlydY2IGot2ureVnRjkQmZbICyCi7XU5cfqKAAAAAElF
+ vAAADrwBlbxySQAAABl0RVh0U29mdHdhcmUAcGFpbnQubmV0IDQuMC4xOdTWsmQAAAA3SURBVDhPY/j/
+ /z9FGKsgGIsCKWSMTQ0QYxUE45FmALpiYvFwMgAbxqIYG8YqCMajBhCJ/zMAAPGwpV/Xje8RAAAAAElF
TkSuQmCC
-
+
157, 22
-
- Import
+
+ Create
@@ -990,11 +975,20 @@
Add File
-
+
+
+ iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO
+ vAAADrwBlbxySQAAABl0RVh0U29mdHdhcmUAcGFpbnQubmV0IDQuMC4xOdTWsmQAAABzSURBVDhPpYzB
+ DQAhCARp4hr3Txu254WTjYRb9cEmk/BgRjBVHTv85Twmgt77PcJEYIFrhIkAgWOEiSAGthEmgtbaD9fW
+ mBgpB4xywCgFxiMf5YDdrq3l5wjEjKtzTARMNlydY2IGot2ureVnRjkQmZbICyCi7XU5cfqKAAAAAElF
+ TkSuQmCC
+
+
+
157, 22
-
- Export
+
+ Import
186, 22
@@ -1002,11 +996,11 @@
Export as 3DS Texture
-
+
157, 22
-
- Set File Type
+
+ Export
222, 22
@@ -1080,11 +1074,11 @@
Entity Materials File (.BIN)
-
+
157, 22
-
- Misc. Functions
+
+ Set File Type
210, 22
@@ -1104,6 +1098,12 @@
Correct Skin Decimals
+
+ 157, 22
+
+
+ Misc. Functions
+
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO
@@ -1169,6 +1169,15 @@
Delete
+
+ 158, 224
+
+
+ contextMenuPCKEntries
+
+
+ System.Windows.Forms.ContextMenuStrip, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
17, 17
@@ -1181,30 +1190,383 @@
None
+
+ 151, 22
+
+
+ Skin Pack
+
+
+ 151, 22
+
+
+ Texture Pack
+
+
+ 151, 22
+
+
+ Mash-Up Pack
+
+
+
+ iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO
+ vAAADrwBlbxySQAAABl0RVh0U29mdHdhcmUAcGFpbnQubmV0IDQuMC4yMfEgaZUAAADuSURBVFhH7ZbB
+ CsMgEERDbv5A/v83e2jNTmCKGdegJk0heHgUn7vrKBQyxRj/iivJPM9WMTWjc45wJeAwhAghVJEG1nkl
+ XNkziLCvtteXphFCfQ08nOi+4kvTeFL1NfBQ/BLuefjS9NkAADOwPnpNX14UADBEaV4mNnkygN34Y/1v
+ AgeWZXll9So2eTLAEVm9ik2a7g1Qgn9t9bvFV/4gAOZdHgB1RPeUEeAZAeBr0d4R4JIACuqI7ikjwDMD
+ tDACNAfo/Sou0fQ9wGKvoQfO8i61W6SkTXi+XtLLgOwcFSna3It3c+LKO3HlfcRpBa3JBjU5E8DiAAAA
+ AElFTkSuQmCC
+
+
+
+ 186, 22
+
+
+ New
+
+
+
+ iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO
+ vAAADrwBlbxySQAAABl0RVh0U29mdHdhcmUAcGFpbnQubmV0IDQuMC4yMfEgaZUAAABGSURBVDhPYxgc
+ 4P8Chv8YeKWUIFSaMPi/W+r//1MapOGTOixQ7UADsCkgAkO1jxoAAtgkicFQ7cPCAGLB////wXgwAQYG
+ AOrUrx4HdAXuAAAAAElFTkSuQmCC
+
+
+
+ Ctrl+O
+
+
+ 186, 22
+
+
+ Open
+
+
+
+ iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO
+ vAAADrwBlbxySQAAABl0RVh0U29mdHdhcmUAcGFpbnQubmV0IDQuMC4xMkMEa+wAAABVSURBVDhPvYwB
+ CgAgCAP9/6cLg0BlS4XqQGjmTn4xyLQ4CtCnnQ3b+0CIZddxARBL9r1wIbCP401JgMrwFi1RWSkJWFlJ
+ BaeyUhYwUkHGO0FnbiEyAQxPT7Gcb/TQAAAAAElFTkSuQmCC
+
+
+
+ 186, 22
+
+
+ Extract
+
+
+ 160, 22
+
+
+ Full box support
+
+
+ 186, 22
+
+
+ Pack Settings
+
+
+ False
+
+
+ False
+
+
+
+ iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO
+ vAAADrwBlbxySQAAABl0RVh0U29mdHdhcmUAcGFpbnQubmV0IDQuMC4yMfEgaZUAAADfSURBVDhPYxg8
+ QLt++3yTGbf/Fm599P/Nh49wfPXxq/+rTt37f+Dak/8gOSBgAGEMANIMxGBFyAasPf/0v8GE8//z1t8C
+ y4HU4DIALIluwLpLL+HiMANAGKoNAWASCavv/n/57gPcgOvP3oENOXj7NViOoAFGU6791+k4ghWD5Aga
+ QCyGakMAkODcU89R/I8Ng9TgNADk14dPn/8/c+kqVgySgwUqVBsCwAx49urN/zsPHmPFIDmaGvAXJInN
+ 38gYasBfqDYE0K7dOn/Wvut/sfkdGYPUgJI9VNuAAwYGAGn6yvdevWgPAAAAAElFTkSuQmCC
+
+
+
+ Ctrl+S
+
+
+ 186, 22
+
+
+ Save
+
+
+ False
+
+
+
+ iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO
+ vAAADrwBlbxySQAAABl0RVh0U29mdHdhcmUAcGFpbnQubmV0IDQuMC4yMfEgaZUAAADfSURBVDhPYxg8
+ IEt7+/x6k9t/lxQ++v/2zUc4vnv11f+Dq+79v3DgyX+QHBAwgDAGAGkGYrAiZAOOrX36v9zg/P95ebfA
+ ciA1uAwAS6IbcGLdS7g4zAAQhmpDAJjEjIS7/1+//AA34MH1d2BDLh98DZYjaECN0bX/BTpHsGKQHEED
+ iMVQbQgAEtw39zmK/7FhkBqcBoD8+vjh8//nz1zFikFysECFakMAmAEvnr35f//OY6wYJEdTA/6CJLH5
+ GxlDDfgL1YYAWdpb52+bdf0vNr8jY5AaULKHahtwwMAAAPeIxBbbnvcfAAAAAElFTkSuQmCC
+
+
+
+ Ctrl+Shift+S
+
+
+ 186, 22
+
+
+ Save As
+
+
+ 186, 22
+
+
+ Close
+
+
+ False
+
37, 20
File
+
+ False
+
+
+
+ iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO
+ vAAADrwBlbxySQAAABl0RVh0U29mdHdhcmUAcGFpbnQubmV0IDQuMC4yMfEgaZUAAACRSURBVFhH7Y45
+ DoAwDATz/09DZWRF62utUIBHmgayk6xhaHBtvs5/HmBdor97/1roUEcaFGOkQTHGFpVg5WyaarB6PoSJ
+ MZsHPd7NgrZiCBqJWdBWDEEjMQvaiiFoJGZBW7EMM2Y2JjqWCVbPh+xBL1o5mwIFGWlQjJEGxRhbWCH9
+ 3ft3DH3J0Yss5gHDF1jrBvn6/wGuM1ZgAAAAAElFTkSuQmCC
+
+
+
+ Ctrl+Q
+
+
+ 192, 22
+
+
+ Quick Change
+
+
+ False
+
+
+
+ iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAIAAACQkWg2AAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO
+ vAAADrwBlbxySQAAABl0RVh0U29mdHdhcmUAcGFpbnQubmV0IDQuMC4xMkMEa+wAAAJeSURBVDhPhVFp
+ TxNRFH1/RbGdlsQElaWzdaQgbadFtnkznWlLCm2Q2UCxTqdFFAzTRONSYheIoCjRpmoErBiKW/hi4q+q
+ bxpoSPzgyfnw7r3nvHvveyD92W/UQ5l9Vt6h5B1S2/Wntnr1977lHxDltVr/7FtaqTLJbc/YU+f8x0GQ
+ rgfmPgw9aoj390dX6uMSgWlVMvkGT7zqLR5PF34lzL3w9HZXunZNfuedr/nAw+9RnnZt/dHl1+SN2lWO
+ cS3sDsVxbOEgsPwTFo9Tz38nRdIRK15MvvRIlBtIFKboSoTGRMp5e4+VaEeEdoi0Y2r7kkBjyqcBjsEW
+ x3s4xomUWUiAkhoweLqiBRurEFLujVl/lvfkICESFyK0M0qc1xU5KxAlOSzQbtuQm+iWiHMVjd2Q++9A
+ b0X3C2SHSHYIpNPgGZMnRbIzLeBZrs8QmH1rEuw+iEVo1xLfl+O6nqzcvQd7MpDay6cQm2fwTBnO8sQL
+ xQcaFq+GLm/eGtm8OfY4N2NN+VBhbWawmhmzhQDYbDatSSafGECDgC/WFFLUrdTBanRNGUbLoDADiTVt
+ 5KwBJQvaaFG9Dspq0Ji4YghEWQtlJvCCHLJ1bZwa2rANJZ2VvO5FAUdEh1a6pfuXJ4a5EdTxWz6GaPL4
+ fw0hkydysK+khdFUh5ZkG9o41bUBDA6HjGsd7Qo9ZR0tzR5ZcdRwietu1U8M6NKv+XjDioIM5ylqYfRB
+ izwRoZwmpCoqW9KDJjwzW7N5aMXLGoveEBRV1uQ9EarzKB/LQlyiXOj/JS+GmtiGU6BwXQ2sa8G/5oRp
+ fQPDL0EAAAAASUVORK5CYII=
+
+
+
+ 192, 22
+
+
+ Convert to Bedrock
+
39, 20
Edit
+
+ 195, 22
+
+
+ Add Custom Pack Icon
+
+
+ 195, 22
+
+
+ Pck Manager
+
+
+ 145, 22
+
+
+ Wav -> Binka
+
+
+ 145, 22
+
+
+ Binka -> Wav
+
+
+ 195, 22
+
+
+ Audio Converter
+
46, 20
Tools
+
+ 223, 22
+
+
+ PCK Center
+
+
+
+ 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
+
+
+
+ 223, 22
+
+
+ Development Discord Server
+
+
+ 223, 22
+
+
+ Trello Board
+
63, 20
More
+
+ 180, 22
+
+
+ Check for updates
+
iVBORw0KGgoAAAANSUhEUgAAAtAAAALQCAYAAAC5V0ecAAAABGdBTUEAALGPC/xhBQAAazFJREFUeF7t
@@ -1674,424 +2036,6 @@
About
-
- False
-
-
- 177, 6
-
-
-
- iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAAKdJREFUOE+1
- jzEKwzAQBNUEXKQIBOwifcgTUvkDbt2p9qP0Ev1E31FYkVXOx2FLRRYWi7NnTnZ/z/MxZPY7aguhbZlq
- myQafL+ubRINshCwnO0kFqi3HkpwWOf7DkC1RBfvx9slV4ElscqbxBiz9/4nwOBIQjCEUL7FswhwDYAp
- JVMiN0oYs/ILiCXRIGHOwVQBoiXsKSgjJdzaBMpQ0g3KEOoG++PcBx9PFJGNjU4vAAAAAElFTkSuQmCC
-
-
-
- 180, 22
-
-
- Tutorials
-
-
- 180, 22
-
-
- Buy a coffee
-
-
- False
-
-
- 177, 6
-
-
- Alt+S
-
-
- 180, 22
-
-
- Settings
-
-
- 44, 20
-
-
- Help
-
-
- 24, 44
-
-
- 1016, 24
-
-
- 2
-
-
- MainMenuStrip
-
-
- menuStrip
-
-
- System.Windows.Forms.MenuStrip, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
-
- $this
-
-
- 3
-
-
-
- iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO
- vAAADrwBlbxySQAAABl0RVh0U29mdHdhcmUAcGFpbnQubmV0IDQuMC4yMfEgaZUAAADuSURBVFhH7ZbB
- CsMgEERDbv5A/v83e2jNTmCKGdegJk0heHgUn7vrKBQyxRj/iivJPM9WMTWjc45wJeAwhAghVJEG1nkl
- XNkziLCvtteXphFCfQ08nOi+4kvTeFL1NfBQ/BLuefjS9NkAADOwPnpNX14UADBEaV4mNnkygN34Y/1v
- AgeWZXll9So2eTLAEVm9ik2a7g1Qgn9t9bvFV/4gAOZdHgB1RPeUEeAZAeBr0d4R4JIACuqI7ikjwDMD
- tDACNAfo/Sou0fQ9wGKvoQfO8i61W6SkTXi+XtLLgOwcFSna3It3c+LKO3HlfcRpBa3JBjU5E8DiAAAA
- AElFTkSuQmCC
-
-
-
- 186, 22
-
-
- New
-
-
- 151, 22
-
-
- Skin Pack
-
-
- 151, 22
-
-
- Texture Pack
-
-
- 151, 22
-
-
- Mash-Up Pack
-
-
-
- iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO
- vAAADrwBlbxySQAAABl0RVh0U29mdHdhcmUAcGFpbnQubmV0IDQuMC4yMfEgaZUAAABGSURBVDhPYxgc
- 4P8Chv8YeKWUIFSaMPi/W+r//1MapOGTOixQ7UADsCkgAkO1jxoAAtgkicFQ7cPCAGLB////wXgwAQYG
- AOrUrx4HdAXuAAAAAElFTkSuQmCC
-
-
-
- Ctrl+O
-
-
- 186, 22
-
-
- Open
-
-
-
- iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO
- vAAADrwBlbxySQAAABl0RVh0U29mdHdhcmUAcGFpbnQubmV0IDQuMC4xMkMEa+wAAABVSURBVDhPvYwB
- CgAgCAP9/6cLg0BlS4XqQGjmTn4xyLQ4CtCnnQ3b+0CIZddxARBL9r1wIbCP401JgMrwFi1RWSkJWFlJ
- BaeyUhYwUkHGO0FnbiEyAQxPT7Gcb/TQAAAAAElFTkSuQmCC
-
-
-
- 186, 22
-
-
- Extract
-
-
- 186, 22
-
-
- Pack Settings
-
-
- False
-
-
- 160, 22
-
-
- Full box support
-
-
- False
-
-
-
- iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO
- vAAADrwBlbxySQAAABl0RVh0U29mdHdhcmUAcGFpbnQubmV0IDQuMC4yMfEgaZUAAADfSURBVDhPYxg8
- QLt++3yTGbf/Fm599P/Nh49wfPXxq/+rTt37f+Dak/8gOSBgAGEMANIMxGBFyAasPf/0v8GE8//z1t8C
- y4HU4DIALIluwLpLL+HiMANAGKoNAWASCavv/n/57gPcgOvP3oENOXj7NViOoAFGU6791+k4ghWD5Aga
- QCyGakMAkODcU89R/I8Ng9TgNADk14dPn/8/c+kqVgySgwUqVBsCwAx49urN/zsPHmPFIDmaGvAXJInN
- 38gYasBfqDYE0K7dOn/Wvut/sfkdGYPUgJI9VNuAAwYGAGn6yvdevWgPAAAAAElFTkSuQmCC
-
-
-
- Ctrl+S
-
-
- 186, 22
-
-
- Save
-
-
- False
-
-
-
- iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO
- vAAADrwBlbxySQAAABl0RVh0U29mdHdhcmUAcGFpbnQubmV0IDQuMC4yMfEgaZUAAADfSURBVDhPYxg8
- IEt7+/x6k9t/lxQ++v/2zUc4vnv11f+Dq+79v3DgyX+QHBAwgDAGAGkGYrAiZAOOrX36v9zg/P95ebfA
- ciA1uAwAS6IbcGLdS7g4zAAQhmpDAJjEjIS7/1+//AA34MH1d2BDLh98DZYjaECN0bX/BTpHsGKQHEED
- iMVQbQgAEtw39zmK/7FhkBqcBoD8+vjh8//nz1zFikFysECFakMAmAEvnr35f//OY6wYJEdTA/6CJLH5
- GxlDDfgL1YYAWdpb52+bdf0vNr8jY5AaULKHahtwwMAAAPeIxBbbnvcfAAAAAElFTkSuQmCC
-
-
-
- Ctrl+Shift+S
-
-
- 186, 22
-
-
- Save As
-
-
- 186, 22
-
-
- Close
-
-
- False
-
-
- False
-
-
-
- iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO
- vAAADrwBlbxySQAAABl0RVh0U29mdHdhcmUAcGFpbnQubmV0IDQuMC4yMfEgaZUAAACRSURBVFhH7Y45
- DoAwDATz/09DZWRF62utUIBHmgayk6xhaHBtvs5/HmBdor97/1roUEcaFGOkQTHGFpVg5WyaarB6PoSJ
- MZsHPd7NgrZiCBqJWdBWDEEjMQvaiiFoJGZBW7EMM2Y2JjqWCVbPh+xBL1o5mwIFGWlQjJEGxRhbWCH9
- 3ft3DH3J0Yss5gHDF1jrBvn6/wGuM1ZgAAAAAElFTkSuQmCC
-
-
-
- Ctrl+Q
-
-
- 192, 22
-
-
- Quick Change
-
-
- False
-
-
-
- iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAIAAACQkWg2AAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO
- vAAADrwBlbxySQAAABl0RVh0U29mdHdhcmUAcGFpbnQubmV0IDQuMC4xMkMEa+wAAAJeSURBVDhPhVFp
- TxNRFH1/RbGdlsQElaWzdaQgbadFtnkznWlLCm2Q2UCxTqdFFAzTRONSYheIoCjRpmoErBiKW/hi4q+q
- bxpoSPzgyfnw7r3nvHvveyD92W/UQ5l9Vt6h5B1S2/Wntnr1977lHxDltVr/7FtaqTLJbc/YU+f8x0GQ
- rgfmPgw9aoj390dX6uMSgWlVMvkGT7zqLR5PF34lzL3w9HZXunZNfuedr/nAw+9RnnZt/dHl1+SN2lWO
- cS3sDsVxbOEgsPwTFo9Tz38nRdIRK15MvvRIlBtIFKboSoTGRMp5e4+VaEeEdoi0Y2r7kkBjyqcBjsEW
- x3s4xomUWUiAkhoweLqiBRurEFLujVl/lvfkICESFyK0M0qc1xU5KxAlOSzQbtuQm+iWiHMVjd2Q++9A
- b0X3C2SHSHYIpNPgGZMnRbIzLeBZrs8QmH1rEuw+iEVo1xLfl+O6nqzcvQd7MpDay6cQm2fwTBnO8sQL
- xQcaFq+GLm/eGtm8OfY4N2NN+VBhbWawmhmzhQDYbDatSSafGECDgC/WFFLUrdTBanRNGUbLoDADiTVt
- 5KwBJQvaaFG9Dspq0Ji4YghEWQtlJvCCHLJ1bZwa2rANJZ2VvO5FAUdEh1a6pfuXJ4a5EdTxWz6GaPL4
- fw0hkydysK+khdFUh5ZkG9o41bUBDA6HjGsd7Qo9ZR0tzR5ZcdRwietu1U8M6NKv+XjDioIM5ylqYfRB
- izwRoZwmpCoqW9KDJjwzW7N5aMXLGoveEBRV1uQ9EarzKB/LQlyiXOj/JS+GmtiGU6BwXQ2sa8G/5oRp
- fQPDL0EAAAAASUVORK5CYII=
-
-
-
- 192, 22
-
-
- Convert to Bedrock
-
-
- 195, 22
-
-
- Add Custom Pack Icon
-
-
- 195, 22
-
-
- Pck Manager
-
-
- 195, 22
-
-
- Audio Converter
-
-
- 145, 22
-
-
- Wav -> Binka
-
-
- 145, 22
-
-
- Binka -> Wav
-
-
- 223, 22
-
-
- PCK Center
-
-
-
- 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
-
-
-
- 223, 22
-
-
- Development Discord Server
-
-
- 223, 22
-
-
- Trello Board
-
312, 22
@@ -2134,6 +2078,20 @@
How PCKs work
+
+
+ iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAAKdJREFUOE+1
+ jzEKwzAQBNUEXKQIBOwifcgTUvkDbt2p9qP0Ev1E31FYkVXOx2FLRRYWi7NnTnZ/z/MxZPY7aguhbZlq
+ myQafL+ubRINshCwnO0kFqi3HkpwWOf7DkC1RBfvx9slV4ElscqbxBiz9/4nwOBIQjCEUL7FswhwDYAp
+ JVMiN0oYs/ILiCXRIGHOwVQBoiXsKSgjJdzaBMpQ0g3KEOoG++PcBx9PFJGNjU4vAAAAAElFTkSuQmCC
+
+
+
+ 180, 22
+
+
+ Tutorials
+
253, 22
@@ -2152,32 +2110,54 @@
For MattNL (Other Developer)
+
+ 180, 22
+
+
+ Buy a coffee
+
+
+ Alt+S
+
+
+ 180, 22
+
+
+ Settings
+
+
+ 44, 20
+
+
+ Help
+
+
+ 24, 44
+
+
+ 1016, 24
+
+
+ 2
+
+
+ MainMenuStrip
+
+
+ menuStrip
+
+
+ System.Windows.Forms.MenuStrip, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ $this
+
+
+ 3
+
298, 17
-
- 182, 92
-
-
- contextMenuMetaTree
-
-
- System.Windows.Forms.ContextMenuStrip, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
-
-
- iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO
- vAAADrwBlbxySQAAABl0RVh0U29mdHdhcmUAcGFpbnQubmV0IDQuMC4xMkMEa+wAAABSSURBVDhP5c0x
- DsAgDENRxt7/wmkNSpRGf0CCCZAegxNMM7MlGMp3dIU6dxhKf/QMNxRogeQC8ivw5Vn7C0heJlFA+kL5
- jWAohxRkde4wnGftBS90axNmphIGAAAAAElFTkSuQmCC
-
-
-
- 181, 22
-
-
- Add Entry
-
160, 22
@@ -2196,6 +2176,20 @@
Add ANIM Entry
+
+
+ iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO
+ vAAADrwBlbxySQAAABl0RVh0U29mdHdhcmUAcGFpbnQubmV0IDQuMC4xMkMEa+wAAABSSURBVDhP5c0x
+ DsAgDENRxt7/wmkNSpRGf0CCCZAegxNMM7MlGMp3dIU6dxhKf/QMNxRogeQC8ivw5Vn7C0heJlFA+kL5
+ jWAohxRkde4wnGftBS90axNmphIGAAAAAElFTkSuQmCC
+
+
+
+ 181, 22
+
+
+ Add Entry
+
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO
@@ -2231,128 +2225,14 @@
Edit All Entries
-
- openTab
+
+ 182, 92
-
- MetroFramework.Controls.MetroTabPage, MetroFramework, Version=1.4.0.0, Culture=neutral, PublicKeyToken=5f91a84759bf584a
+
+ contextMenuMetaTree
-
- tabControl
-
-
- 0
-
-
- editorTab
-
-
- MetroFramework.Controls.MetroTabPage, MetroFramework, Version=1.4.0.0, Culture=neutral, PublicKeyToken=5f91a84759bf584a
-
-
- tabControl
-
-
- 1
-
-
- Fill
-
-
- 20, 30
-
-
- 0, 0, 0, 0
-
-
- 1024, 600
-
-
- 0
-
-
- tabControl
-
-
- MetroFramework.Controls.MetroTabControl, MetroFramework, Version=1.4.0.0, Culture=neutral, PublicKeyToken=5f91a84759bf584a
-
-
- $this
-
-
- 4
-
-
- pckOpen
-
-
- System.Windows.Forms.PictureBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
-
- openTab
-
-
- 2
-
-
- label5
-
-
- MetroFramework.Controls.MetroLabel, MetroFramework, Version=1.4.0.0, Culture=neutral, PublicKeyToken=5f91a84759bf584a
-
-
- openTab
-
-
- 3
-
-
- labelVersion
-
-
- MetroFramework.Controls.MetroLabel, MetroFramework, Version=1.4.0.0, Culture=neutral, PublicKeyToken=5f91a84759bf584a
-
-
- openTab
-
-
- 4
-
-
- ChangelogRichTextBox
-
-
- System.Windows.Forms.RichTextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
-
- openTab
-
-
- 5
-
-
- 4, 38
-
-
- 18, 30, 20, 5
-
-
- 1016, 558
-
-
- 1
-
-
- openTab
-
-
- MetroFramework.Controls.MetroTabPage, MetroFramework, Version=1.4.0.0, Culture=neutral, PublicKeyToken=5f91a84759bf584a
-
-
- tabControl
-
-
- 0
+
+ System.Windows.Forms.ContextMenuStrip, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
None
@@ -3464,119 +3344,32 @@
5
-
- True
-
-
- None
-
-
- pckFileLabel
-
-
- MetroFramework.Controls.MetroLabel, MetroFramework, Version=1.4.0.0, Culture=neutral, PublicKeyToken=5f91a84759bf584a
-
-
- editorTab
-
-
- 2
-
-
- labelImageSize
-
-
- MetroFramework.Controls.MetroLabel, MetroFramework, Version=1.4.0.0, Culture=neutral, PublicKeyToken=5f91a84759bf584a
-
-
- editorTab
-
-
- 3
-
-
- fileEntryCountLabel
-
-
- MetroFramework.Controls.MetroLabel, MetroFramework, Version=1.4.0.0, Culture=neutral, PublicKeyToken=5f91a84759bf584a
-
-
- editorTab
-
-
- 4
-
-
- PropertiesTabControl
-
-
- MetroFramework.Controls.MetroTabControl, MetroFramework, Version=1.4.0.0, Culture=neutral, PublicKeyToken=5f91a84759bf584a
-
-
- editorTab
-
-
- 5
-
-
- label11
-
-
- MetroFramework.Controls.MetroLabel, MetroFramework, Version=1.4.0.0, Culture=neutral, PublicKeyToken=5f91a84759bf584a
-
-
- editorTab
-
-
- 6
-
-
- treeViewMain
-
-
- System.Windows.Forms.TreeView, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
-
- editorTab
-
-
- 7
-
-
- previewPictureBox
-
-
- PckStudio.ToolboxItems.InterpolationPictureBox, PCK-Studio, Version=7.0.0.0, Culture=neutral, PublicKeyToken=null
-
-
- editorTab
-
-
- 9
-
-
+
4, 38
-
- 5, 50, 5, 7
+
+ 18, 30, 20, 5
-
+
1016, 558
-
- 0
+
+ 1
-
- editorTab
+
+ openTab
-
+
MetroFramework.Controls.MetroTabPage, MetroFramework, Version=1.4.0.0, Culture=neutral, PublicKeyToken=5f91a84759bf584a
-
+
tabControl
-
- 1
+
+ 0
+
+
+ None
3, 17
@@ -3656,138 +3449,6 @@
Top, Bottom, Right
-
- MetaTab
-
-
- MetroFramework.Controls.MetroTabPage, MetroFramework, Version=1.4.0.0, Culture=neutral, PublicKeyToken=5f91a84759bf584a
-
-
- PropertiesTabControl
-
-
- 0
-
-
- 338, 277
-
-
- 671, 282
-
-
- 11
-
-
- PropertiesTabControl
-
-
- MetroFramework.Controls.MetroTabControl, MetroFramework, Version=1.4.0.0, Culture=neutral, PublicKeyToken=5f91a84759bf584a
-
-
- editorTab
-
-
- 5
-
-
- metroLabel2
-
-
- MetroFramework.Controls.MetroLabel, MetroFramework, Version=1.4.0.0, Culture=neutral, PublicKeyToken=5f91a84759bf584a
-
-
- MetaTab
-
-
- 2
-
-
- treeMeta
-
-
- System.Windows.Forms.TreeView, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
-
- MetaTab
-
-
- 3
-
-
- entryTypeTextBox
-
-
- MetroFramework.Controls.MetroTextBox, MetroFramework, Version=1.4.0.0, Culture=neutral, PublicKeyToken=5f91a84759bf584a
-
-
- MetaTab
-
-
- 4
-
-
- entryDataTextBox
-
-
- MetroFramework.Controls.MetroTextBox, MetroFramework, Version=1.4.0.0, Culture=neutral, PublicKeyToken=5f91a84759bf584a
-
-
- MetaTab
-
-
- 5
-
-
- buttonEdit
-
-
- MetroFramework.Controls.MetroButton, MetroFramework, Version=1.4.0.0, Culture=neutral, PublicKeyToken=5f91a84759bf584a
-
-
- MetaTab
-
-
- 6
-
-
- metroLabel1
-
-
- MetroFramework.Controls.MetroLabel, MetroFramework, Version=1.4.0.0, Culture=neutral, PublicKeyToken=5f91a84759bf584a
-
-
- MetaTab
-
-
- 7
-
-
- 4, 38
-
-
- 3, 3, 3, 3
-
-
- 663, 240
-
-
- 0
-
-
- Properties
-
-
- MetaTab
-
-
- MetroFramework.Controls.MetroTabPage, MetroFramework, Version=1.4.0.0, Culture=neutral, PublicKeyToken=5f91a84759bf584a
-
-
- PropertiesTabControl
-
-
- 0
-
Top, Right
@@ -3989,6 +3650,54 @@
7
+
+ 4, 38
+
+
+ 3, 3, 3, 3
+
+
+ 663, 240
+
+
+ 0
+
+
+ Properties
+
+
+ MetaTab
+
+
+ MetroFramework.Controls.MetroTabPage, MetroFramework, Version=1.4.0.0, Culture=neutral, PublicKeyToken=5f91a84759bf584a
+
+
+ PropertiesTabControl
+
+
+ 0
+
+
+ 338, 277
+
+
+ 671, 282
+
+
+ 11
+
+
+ PropertiesTabControl
+
+
+ MetroFramework.Controls.MetroTabControl, MetroFramework, Version=1.4.0.0, Culture=neutral, PublicKeyToken=5f91a84759bf584a
+
+
+ editorTab
+
+
+ 5
+
True
@@ -4091,6 +3800,57 @@
9
+
+ 4, 38
+
+
+ 5, 50, 5, 7
+
+
+ 1016, 558
+
+
+ 0
+
+
+ editorTab
+
+
+ MetroFramework.Controls.MetroTabPage, MetroFramework, Version=1.4.0.0, Culture=neutral, PublicKeyToken=5f91a84759bf584a
+
+
+ tabControl
+
+
+ 1
+
+
+ Fill
+
+
+ 20, 30
+
+
+ 0, 0, 0, 0
+
+
+ 1024, 600
+
+
+ 0
+
+
+ tabControl
+
+
+ MetroFramework.Controls.MetroTabControl, MetroFramework, Version=1.4.0.0, Culture=neutral, PublicKeyToken=5f91a84759bf584a
+
+
+ $this
+
+
+ 4
+
Top, Right
@@ -6651,6 +6411,18 @@
CenterParent
+
+ toolStripSeparator1
+
+
+ System.Windows.Forms.ToolStripSeparator, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ toolStripSeparator3
+
+
+ System.Windows.Forms.ToolStripSeparator, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
createToolStripMenuItem
@@ -7035,18 +6807,18 @@
System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+ checkForUpdatesToolStripMenuItem
+
+
+ System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
aboutToolStripMenuItem
System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
- toolStripSeparator1
-
-
- System.Windows.Forms.ToolStripSeparator, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
videosToolStripMenuItem
@@ -7119,12 +6891,6 @@
System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
- toolStripSeparator3
-
-
- System.Windows.Forms.ToolStripSeparator, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
settingsToolStripMenuItem
diff --git a/PCK-Studio/PckStudio.csproj b/PCK-Studio/PckStudio.csproj
index 3e040c1d..c7685cff 100644
--- a/PCK-Studio/PckStudio.csproj
+++ b/PCK-Studio/PckStudio.csproj
@@ -4,6 +4,7 @@
preview
true
+ NDEBUG
publish\
true
Disk
@@ -40,7 +41,7 @@
full
false
bin\Debug\
- DEBUG;TRACE
+ $(DefineConstants);DEBUG;TRACE
prompt
4
true
@@ -50,7 +51,7 @@
none
true
bin\Release\
- TRACE
+ $(DefineConstants);TRACE
prompt
4
true
@@ -60,7 +61,7 @@
pdbonly
false
bin\Beta\
- BETA;TRACE
+ $(DefineConstants);BETA;TRACE
prompt
4
true
@@ -225,9 +226,7 @@
-
-
UserControl
@@ -728,6 +727,10 @@
+
+ {5B223556-15B9-41DA-AA0B-5E7F45E743BF}
+ PCK-Studio-Updater
+
{693AEBC1-293D-4DF0-BCAE-26A1099FE7BB}
OMI Filetype Library
diff --git a/PCK-Studio/Program.cs b/PCK-Studio/Program.cs
index 644b6c70..38fe6f56 100644
--- a/PCK-Studio/Program.cs
+++ b/PCK-Studio/Program.cs
@@ -1,21 +1,36 @@
using System;
using System.Diagnostics;
using System.IO;
+using System.Text.RegularExpressions;
using System.Windows.Forms;
using PckStudio.Classes.Misc;
using PckStudio.Internal;
+using PckStudio.Properties;
+using PCKStudio_Updater;
+
namespace PckStudio
{
static class Program
{
- public static readonly string ProjectUrl = "https://github.com/PhoenixARC/-PCK-Studio";
- public static readonly string BaseAPIUrl = "http://api.pckstudio.xyz/api/pck";
- public static readonly string BackUpAPIUrl = "https://raw.githubusercontent.com/PhoenixARC/pckstudio.tk/main/studio/PCK/api/";
- public static readonly string AppData = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments), Application.ProductName);
- public static readonly string AppDataCache = Path.Combine(AppData, "cache");
+ internal static readonly Uri ProjectUrl = new Uri("https://github.com/PhoenixARC/-PCK-Studio");
+ internal static readonly string BaseAPIUrl = "http://api.pckstudio.xyz/api/pck";
+ internal static readonly string BackUpAPIUrl = "https://raw.githubusercontent.com/PhoenixARC/pckstudio.tk/main/studio/PCK/api/";
- public static MainForm MainInstance { get; private set; }
+ internal static readonly string AppData = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments), Application.ProductName);
+ internal static readonly string AppDataCache = Path.Combine(AppData, "cache");
+
+ private static readonly GithubParams UpdateParams = new GithubParams(
+ Path.GetDirectoryName(ProjectUrl.AbsolutePath).Replace("\\", ""),
+ Path.GetFileName(ProjectUrl.AbsolutePath),
+ Application.ProductName,
+ Settings.Default.UsePrerelease,
+ new Regex("(\\*|\\d+(\\.\\d+){0,3}(\\.\\*)?)")
+ );
+ internal static readonly IUpdateDownloader Updater = new GithubUpdateDownloader(UpdateParams);
+
+
+ internal static MainForm MainInstance { get; private set; }
///
/// The main entry point for the application.
@@ -23,6 +38,11 @@ namespace PckStudio
[STAThread]
static void Main(string[] args)
{
+ if (Settings.Default.AutoUpdate)
+ {
+ UpdateToLatest("Click Ok to continue.", MessageBoxButtons.OK, MessageBoxIcon.Exclamation, DialogResult.OK);
+ }
+
ApplicationScope.Initialize();
Trace.TraceInformation("Startup");
RPC.Initialize();
@@ -32,5 +52,21 @@ namespace PckStudio
Application.ApplicationExit += (sender, e) => { RPC.Deinitialize(); };
Application.Run(MainInstance);
}
+
+ [Conditional("NDEBUG")]
+ internal static void UpdateToLatest(string message, MessageBoxButtons buttons, MessageBoxIcon icon, DialogResult dialogResult)
+ {
+ bool updateAvailable = Updater.IsUpdateAvailable(Application.ProductVersion);
+ if (updateAvailable && MessageBox.Show(
+ "New update available.\n" +
+ message,
+ "Update Available",
+ buttons, icon, MessageBoxDefaultButton.Button1) == dialogResult)
+ {
+ Updater.DownloadTo(new DirectoryInfo(Application.StartupPath));
+ Updater.Launch();
+ Application.Exit();
+ }
+ }
}
-}
+}
\ No newline at end of file
diff --git a/PCK-Studio/Properties/AssemblyInfo.cs b/PCK-Studio/Properties/AssemblyInfo.cs
index 27386512..9e7ee662 100644
--- a/PCK-Studio/Properties/AssemblyInfo.cs
+++ b/PCK-Studio/Properties/AssemblyInfo.cs
@@ -32,6 +32,6 @@ using System.Security.Permissions;
// 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("7.0")]
-[assembly: AssemblyFileVersion("7.0")]
+[assembly: AssemblyVersion("7.0.0.0")]
+[assembly: AssemblyFileVersion("7.0.0.0")]
[assembly: NeutralResourcesLanguage("")]
diff --git a/PCK-Studio/Properties/Settings.Designer.cs b/PCK-Studio/Properties/Settings.Designer.cs
index e6d87129..95fa109d 100644
--- a/PCK-Studio/Properties/Settings.Designer.cs
+++ b/PCK-Studio/Properties/Settings.Designer.cs
@@ -80,6 +80,30 @@ namespace PckStudio.Properties {
}
}
+ [global::System.Configuration.UserScopedSettingAttribute()]
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.Configuration.DefaultSettingValueAttribute("True")]
+ public bool UsePrerelease {
+ get {
+ return ((bool)(this["UsePrerelease"]));
+ }
+ set {
+ this["UsePrerelease"] = value;
+ }
+ }
+
+ [global::System.Configuration.UserScopedSettingAttribute()]
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.Configuration.DefaultSettingValueAttribute("False")]
+ public bool AutoUpdate {
+ get {
+ return ((bool)(this["AutoUpdate"]));
+ }
+ set {
+ this["AutoUpdate"] = value;
+ }
+ }
+
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("False")]
diff --git a/PCK-Studio/Properties/Settings.settings b/PCK-Studio/Properties/Settings.settings
index 8724beec..2e32328f 100644
--- a/PCK-Studio/Properties/Settings.settings
+++ b/PCK-Studio/Properties/Settings.settings
@@ -17,6 +17,12 @@
True
+
+ True
+
+
+ False
+
False
diff --git a/PCK_Studio.sln b/PCK_Studio.sln
index 8062268c..772bd2c5 100644
--- a/PCK_Studio.sln
+++ b/PCK_Studio.sln
@@ -11,6 +11,8 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "OMI Filetype Library", "Ven
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SharpMss32", "Vendor\SharpMss32\SharpMss32\SharpMss32.csproj", "{E8D0B671-3AB1-48B6-A767-58DF67BD5D11}"
EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "PCK-Studio-Updater", "PCK-Studio-Updater\PCK-Studio-Updater.csproj", "{5B223556-15B9-41DA-AA0B-5E7F45E743BF}"
+EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Beta|Any CPU = Beta|Any CPU
@@ -78,6 +80,24 @@ Global
{E8D0B671-3AB1-48B6-A767-58DF67BD5D11}.Release|x64.Build.0 = Release|Any CPU
{E8D0B671-3AB1-48B6-A767-58DF67BD5D11}.Release|x86.ActiveCfg = Release|Any CPU
{E8D0B671-3AB1-48B6-A767-58DF67BD5D11}.Release|x86.Build.0 = Release|Any CPU
+ {5B223556-15B9-41DA-AA0B-5E7F45E743BF}.Beta|Any CPU.ActiveCfg = Debug|Any CPU
+ {5B223556-15B9-41DA-AA0B-5E7F45E743BF}.Beta|Any CPU.Build.0 = Debug|Any CPU
+ {5B223556-15B9-41DA-AA0B-5E7F45E743BF}.Beta|x64.ActiveCfg = Debug|Any CPU
+ {5B223556-15B9-41DA-AA0B-5E7F45E743BF}.Beta|x64.Build.0 = Debug|Any CPU
+ {5B223556-15B9-41DA-AA0B-5E7F45E743BF}.Beta|x86.ActiveCfg = Debug|Any CPU
+ {5B223556-15B9-41DA-AA0B-5E7F45E743BF}.Beta|x86.Build.0 = Debug|Any CPU
+ {5B223556-15B9-41DA-AA0B-5E7F45E743BF}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {5B223556-15B9-41DA-AA0B-5E7F45E743BF}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {5B223556-15B9-41DA-AA0B-5E7F45E743BF}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {5B223556-15B9-41DA-AA0B-5E7F45E743BF}.Debug|x64.Build.0 = Debug|Any CPU
+ {5B223556-15B9-41DA-AA0B-5E7F45E743BF}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {5B223556-15B9-41DA-AA0B-5E7F45E743BF}.Debug|x86.Build.0 = Debug|Any CPU
+ {5B223556-15B9-41DA-AA0B-5E7F45E743BF}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {5B223556-15B9-41DA-AA0B-5E7F45E743BF}.Release|Any CPU.Build.0 = Release|Any CPU
+ {5B223556-15B9-41DA-AA0B-5E7F45E743BF}.Release|x64.ActiveCfg = Release|Any CPU
+ {5B223556-15B9-41DA-AA0B-5E7F45E743BF}.Release|x64.Build.0 = Release|Any CPU
+ {5B223556-15B9-41DA-AA0B-5E7F45E743BF}.Release|x86.ActiveCfg = Release|Any CPU
+ {5B223556-15B9-41DA-AA0B-5E7F45E743BF}.Release|x86.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE