diff --git a/Form1.Designer.cs b/Form1.Designer.cs index 188bf19..99b4e9a 100644 --- a/Form1.Designer.cs +++ b/Form1.Designer.cs @@ -46,6 +46,8 @@ this.label2 = new System.Windows.Forms.Label(); this.comboBox2Play = new System.Windows.Forms.ComboBox(); this.btnUninstallVersion = new System.Windows.Forms.Button(); + this.btnLauncherUpdate = new System.Windows.Forms.Button(); + this.labelLauncherVersion = new System.Windows.Forms.Label(); this.SuspendLayout(); // // textBoxUsername @@ -118,9 +120,9 @@ // // btnPlay // - this.btnPlay.Location = new System.Drawing.Point(550, 26); + this.btnPlay.Location = new System.Drawing.Point(550, 150); this.btnPlay.Name = "btnPlay"; - this.btnPlay.Size = new System.Drawing.Size(104, 104); + this.btnPlay.Size = new System.Drawing.Size(104, 50); this.btnPlay.TabIndex = 9; this.btnPlay.Text = "Play!"; this.btnPlay.UseVisualStyleBackColor = true; @@ -199,11 +201,33 @@ this.btnUninstallVersion.UseVisualStyleBackColor = true; this.btnUninstallVersion.Click += new System.EventHandler(this.btnUninstallVersion_Click); // + // btnLauncherUpdate + // + this.btnLauncherUpdate.Location = new System.Drawing.Point(550, 26); + this.btnLauncherUpdate.Name = "btnLauncherUpdate"; + this.btnLauncherUpdate.Size = new System.Drawing.Size(104, 104); + this.btnLauncherUpdate.TabIndex = 18; + this.btnLauncherUpdate.Text = "LAUNCHER UPDATE AVAILIBLE"; + this.btnLauncherUpdate.UseVisualStyleBackColor = true; + this.btnLauncherUpdate.Click += new System.EventHandler(this.btnLauncherUpdate_Click); + // + // labelLauncherVersion + // + this.labelLauncherVersion.AutoSize = true; + this.labelLauncherVersion.Location = new System.Drawing.Point(9, 189); + this.labelLauncherVersion.Name = "labelLauncherVersion"; + this.labelLauncherVersion.Size = new System.Drawing.Size(94, 13); + this.labelLauncherVersion.TabIndex = 19; + this.labelLauncherVersion.Text = "Unknown Version."; + this.labelLauncherVersion.Click += new System.EventHandler(this.labelLauncherVersion_Click); + // // Form1 // this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; - this.ClientSize = new System.Drawing.Size(684, 161); + this.ClientSize = new System.Drawing.Size(684, 211); + this.Controls.Add(this.labelLauncherVersion); + this.Controls.Add(this.btnLauncherUpdate); this.Controls.Add(this.btnUninstallVersion); this.Controls.Add(this.label2); this.Controls.Add(this.comboBox2Play); @@ -224,6 +248,7 @@ this.MaximizeBox = false; this.Name = "Form1"; this.Text = "IveBeenAlone\'s Hytale Launcher"; + this.Load += new System.EventHandler(this.Form1_Load); this.ResumeLayout(false); this.PerformLayout(); @@ -246,6 +271,8 @@ private System.Windows.Forms.Label label2; private System.Windows.Forms.ComboBox comboBox2Play; private System.Windows.Forms.Button btnUninstallVersion; + private System.Windows.Forms.Button btnLauncherUpdate; + private System.Windows.Forms.Label labelLauncherVersion; } } diff --git a/Form1.cs b/Form1.cs index af9ed25..2085778 100644 --- a/Form1.cs +++ b/Form1.cs @@ -22,9 +22,13 @@ namespace HelloWorld { public partial class Form1 : Form { + + private const string UpdateURL = "https://ibatv.xyz/data/lnch/hy.txt"; + public Form1() { InitializeComponent(); + btnLauncherUpdate.Visible = false; LoadComboBoxItems(); LoadDownloadedFiles(); @@ -32,8 +36,19 @@ namespace HelloWorld string path = ".ibalaunch"; string uuidsave = ".ibalaunch\\uuid"; string usersave = ".ibalaunch\\username"; + string verssave = ".ibalaunch\\lastplayedversion"; string HytaleUserData = "UserData"; + + + Version localVersion = GetLocalVersion(); + + + string localversionstring = localVersion.ToString(); + //Console.WriteLine("Version" + localversionstring); + labelLauncherVersion.Text = localversionstring; + + try { DirectoryInfo di = Directory.CreateDirectory(path); @@ -94,8 +109,62 @@ namespace HelloWorld else { } + + // UUID File Checking + if (File.Exists(verssave)) + { + FileInfo fileInfo = new FileInfo(verssave); + if (fileInfo.Length == 0) + { + Console.WriteLine("Last Played file is empty. Not setting anything."); + } + else + { + Console.WriteLine("Last Played file is not empty. Size: " + fileInfo.Length + " bytes."); + + comboBox2Play.Text = File.ReadAllText(verssave); + } + } + else + { + } } + + private async Task CheckForUpdateAsync() + { + try + { + Version localVersion = GetLocalVersion(); + Version onlineVersion = await GetOnlineVersionAsync(); + + if (onlineVersion > localVersion) + { + btnLauncherUpdate.Visible = true; + } + } + catch (Exception ex) + { + // Optional: log or ignore + Debug.WriteLine(ex.Message); + } + } + + private Version GetLocalVersion() + { + return Assembly.GetExecutingAssembly().GetName().Version; + } + + private async Task GetOnlineVersionAsync() + { + using (HttpClient client = new HttpClient()) + { + string versionText = await client.GetStringAsync(UpdateURL); + return new Version(versionText.Trim()); + } + } + + private void button1_Click(object sender, EventArgs e){} private void lblHelloWorld_Click(object sender, EventArgs e){} private void label2_Click(object sender, EventArgs e){} @@ -455,5 +524,67 @@ namespace HelloWorld } } + + private async void btnLauncherUpdate_Click(object sender, EventArgs e) + { + string tempExe = Path.Combine(Path.GetTempPath(), "latest.exe"); + + await DownloadUpdateAsync(tempExe); + + StartUpdaterAndExit(tempExe); + } + + + + private async Task DownloadUpdateAsync(string destinationPath) + { + using (HttpClient client = new HttpClient()) + using (var response = await client.GetAsync("https://ibatv.xyz/data/lnch/hy/latest.exe", HttpCompletionOption.ResponseHeadersRead)) + { + response.EnsureSuccessStatusCode(); + + using (var fs = new FileStream( + destinationPath, + FileMode.Create, + FileAccess.Write, + FileShare.None)) + { + await response.Content.CopyToAsync(fs); + } + } + } + + + private void StartUpdaterAndExit(string newExePath) + { + string currentExe = Application.ExecutablePath; + + string cmd = + $"/C timeout 2 >nul && " + + $"copy /Y \"{newExePath}\" \"{currentExe}\" && " + + $"start \"\" \"{currentExe}\""; + + Process.Start(new ProcessStartInfo + { + FileName = "cmd.exe", + Arguments = cmd, + WindowStyle = ProcessWindowStyle.Normal, + CreateNoWindow = true + }); + + Application.Exit(); + } + + + + private async void Form1_Load(object sender, EventArgs e) + { + await CheckForUpdateAsync(); + } + + private void labelLauncherVersion_Click(object sender, EventArgs e) + { + + } } } \ No newline at end of file diff --git a/Properties/AssemblyInfo.cs b/Properties/AssemblyInfo.cs index fbc8053..760e8f6 100644 --- a/Properties/AssemblyInfo.cs +++ b/Properties/AssemblyInfo.cs @@ -29,5 +29,5 @@ using System.Runtime.InteropServices; // Build Number // Revision // -[assembly: AssemblyVersion("3.7.26.0")] -[assembly: AssemblyFileVersion("3.7.26.0")] +[assembly: AssemblyVersion("3.8.0.0")] +[assembly: AssemblyFileVersion("3.8.0.0")]