using System; using System.Diagnostics; using System.IO; using System.Net; using System.Windows.Forms; namespace RPGMakerXPLauncher { public partial class MainForm : Form { private string updateUrl = "https://example.com/updates/latest.zip"; // URL to download the latest update private string localVersionFile = "version.txt"; // Local version file private string remoteVersionFileUrl = "https://example.com/updates/version.txt"; // URL to check the latest version public MainForm() { InitializeComponent(); } private void MainForm_Load(object sender, EventArgs e) { CheckForUpdates(); } private void btnLaunchGame_Click(object sender, EventArgs e) { string gamePath = txtGamePath.Text; if (File.Exists(gamePath)) { try { Process.Start(gamePath); } catch (Exception ex) { MessageBox.Show("An error occurred while trying to launch the game: " + ex.Message); } } else { MessageBox.Show("Game executable not found. Please check the path."); } } private void btnBrowse_Click(object sender, EventArgs e) { using (OpenFileDialog openFileDialog = new OpenFileDialog()) { openFileDialog.Filter = "Executable Files (*.exe)|*.exe"; openFileDialog.Title = "Select RPG Maker XP Game Executable"; if (openFileDialog.ShowDialog() == DialogResult.OK) { txtGamePath.Text = openFileDialog.FileName; } } } private void CheckForUpdates() { try { using (WebClient client = new WebClient()) { string remoteVersion = client.DownloadString(remoteVersionFileUrl).Trim(); string localVersion = File.Exists(localVersionFile) ? File.ReadAllText(localVersionFile).Trim() : "0"; if (remoteVersion != localVersion) { DialogResult dialogResult = MessageBox.Show("An update is available. Do you want to download it now?", "Update Available", MessageBoxButtons.YesNo); if (dialogResult == DialogResult.Yes) { DownloadUpdate(); } } } } catch (Exception ex) { MessageBox.Show("An error occurred while checking for updates: " + ex.Message); } } private void DownloadUpdate() { try { using (WebClient client = new WebClient()) { string tempFile = Path.GetTempFileName(); client.DownloadFile(updateUrl, tempFile); string extractPath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "update"); System.IO.Compression.ZipFile.ExtractToDirectory(tempFile, extractPath); // Replace old files with new ones foreach (string file in Directory.GetFiles(extractPath)) { string destFile = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, Path.GetFileName(file)); File.Copy(file, destFile, true); } // Update local version file string remoteVersion = client.DownloadString(remoteVersionFileUrl).Trim(); File.WriteAllText(localVersionFile, remoteVersion); MessageBox.Show("Update completed successfully!"); } } catch (Exception ex) { MessageBox.Show("An error occurred while downloading or applying the update: " + ex.Message); } } private void InitializeComponent() { this.txtGamePath = new System.Windows.Forms.TextBox(); this.btnLaunchGame = new System.Windows.Forms.Button(); this.btnBrowse = new System.Windows.Forms.Button(); this.lblGamePath = new System.Windows.Forms.Label(); this.SuspendLayout(); // // txtGamePath // this.txtGamePath.Location = new System.Drawing.Point(12, 25); this.txtGamePath.Name = "txtGamePath"; this.txtGamePath.Size = new System.Drawing.Size(360, 20); this.txtGamePath.TabIndex = 0; // // btnLaunchGame // this.btnLaunchGame.Location = new System.Drawing.Point(297, 51); this.btnLaunchGame.Name = "btnLaunchGame"; this.btnLaunchGame.Size = new System.Drawing.Size(75, 23); this.btnLaunchGame.TabIndex = 1; this.btnLaunchGame.Text = "Launch Game"; this.btnLaunchGame.UseVisualStyleBackColor = true; this.btnLaunchGame.Click += new System.EventHandler(this.btnLaunchGame_Click); // // btnBrowse // this.btnBrowse.Location = new System.Drawing.Point(216, 51); this.btnBrowse.Name = "btnBrowse"; this.btnBrowse.Size = new System.Drawing.Size(75, 23); this.btnBrowse.TabIndex = 2; this.btnBrowse.Text = "Browse..."; this.btnBrowse.UseVisualStyleBackColor = true; this.btnBrowse.Click += new System.EventHandler(this.btnBrowse_Click); // // lblGamePath // this.lblGamePath.AutoSize = true; this.lblGamePath.Location = new System.Drawing.Point(12, 9); this.lblGamePath.Name = "lblGamePath"; this.lblGamePath.Size = new System.Drawing.Size(58, 13); this.lblGamePath.TabIndex = 3; this.lblGamePath.Text = "Game Path"; // // MainForm // this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; this.ClientSize = new System.Drawing.Size(384, 86); this.Controls.Add(this.lblGamePath); this.Controls.Add(this.btnBrowse); this.Controls.Add(this.btnLaunchGame); this.Controls.Add(this.txtGamePath); this.Name = "MainForm"; this.Text = "RPG Maker XP Launcher"; this.Load += new System.EventHandler(this.MainForm_Load); this.ResumeLayout(false); this.PerformLayout(); } private System.Windows.Forms.TextBox txtGamePath; private System.Windows.Forms.Button btnLaunchGame; private System.Windows.Forms.Button btnBrowse; private System.Windows.Forms.Label lblGamePath; } static class Program { [STAThread] static void Main() { Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(false); Application.Run(new MainForm()); } } }