From 8b39ab627bd18963a95cfdc6a53201e5f7379b20 Mon Sep 17 00:00:00 2001 From: Felix Miller Date: Tue, 30 Aug 2022 13:36:09 -0400 Subject: [PATCH 1/4] Implement Pack Image Replacement in the WiiU Pack Installer --- .../Forms/Utilities/installWiiU.Designer.cs | 96 +- PCK-Studio/Forms/Utilities/installWiiU.cs | 53 + PCK-Studio/Forms/Utilities/installWiiU.resx | 1078 +++++++++-------- 3 files changed, 678 insertions(+), 549 deletions(-) diff --git a/PCK-Studio/Forms/Utilities/installWiiU.Designer.cs b/PCK-Studio/Forms/Utilities/installWiiU.Designer.cs index 973a8035..02b0ddb4 100644 --- a/PCK-Studio/Forms/Utilities/installWiiU.Designer.cs +++ b/PCK-Studio/Forms/Utilities/installWiiU.Designer.cs @@ -46,6 +46,8 @@ this.contextMenuStripCaffiine = new System.Windows.Forms.ContextMenuStrip(this.components); this.replaceToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.replacePCKToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.TextBoxPackImage = new MetroFramework.Controls.MetroTextBox(); + this.PackImageSelection = new System.Windows.Forms.Button(); this.metroTabPageMain.SuspendLayout(); this.myTablePanel1.SuspendLayout(); this.panel1.SuspendLayout(); @@ -55,11 +57,11 @@ // // metroTabPageMain // - resources.ApplyResources(this.metroTabPageMain, "metroTabPageMain"); this.metroTabPageMain.Controls.Add(this.myTablePanel1); this.metroTabPageMain.HorizontalScrollbarBarColor = true; this.metroTabPageMain.HorizontalScrollbarHighlightOnWheel = false; this.metroTabPageMain.HorizontalScrollbarSize = 10; + resources.ApplyResources(this.metroTabPageMain, "metroTabPageMain"); this.metroTabPageMain.Name = "metroTabPageMain"; this.metroTabPageMain.Style = MetroFramework.MetroColorStyle.Blue; this.metroTabPageMain.Theme = MetroFramework.MetroThemeStyle.Dark; @@ -69,15 +71,17 @@ // // myTablePanel1 // - resources.ApplyResources(this.myTablePanel1, "myTablePanel1"); this.myTablePanel1.BackColor = System.Drawing.Color.Transparent; + resources.ApplyResources(this.myTablePanel1, "myTablePanel1"); this.myTablePanel1.Controls.Add(this.buttonServerToggle, 2, 0); - this.myTablePanel1.Controls.Add(this.panel1, 0, 1); + this.myTablePanel1.Controls.Add(this.panel1, 0, 2); this.myTablePanel1.Controls.Add(this.textBoxHost, 0, 0); - this.myTablePanel1.Controls.Add(this.radioButtonEur, 0, 2); - this.myTablePanel1.Controls.Add(this.radioButtonUs, 1, 2); - this.myTablePanel1.Controls.Add(this.radioButtonJap, 2, 2); - this.myTablePanel1.Controls.Add(this.listViewPCKS, 0, 3); + this.myTablePanel1.Controls.Add(this.radioButtonEur, 0, 3); + this.myTablePanel1.Controls.Add(this.radioButtonUs, 1, 3); + this.myTablePanel1.Controls.Add(this.radioButtonJap, 2, 3); + this.myTablePanel1.Controls.Add(this.listViewPCKS, 0, 4); + this.myTablePanel1.Controls.Add(this.TextBoxPackImage, 0, 1); + this.myTablePanel1.Controls.Add(this.PackImageSelection, 2, 1); this.myTablePanel1.Name = "myTablePanel1"; // // buttonServerToggle @@ -92,11 +96,11 @@ // // panel1 // - resources.ApplyResources(this.panel1, "panel1"); this.myTablePanel1.SetColumnSpan(this.panel1, 3); this.panel1.Controls.Add(this.radioButtonSystem); this.panel1.Controls.Add(this.buttonSelect); this.panel1.Controls.Add(this.radioButtonUSB); + resources.ApplyResources(this.panel1, "panel1"); this.panel1.Name = "panel1"; // // radioButtonSystem @@ -114,8 +118,8 @@ // // buttonSelect // - resources.ApplyResources(this.buttonSelect, "buttonSelect"); this.buttonSelect.BackgroundImage = global::PckStudio.Properties.Resources.sdDownload; + resources.ApplyResources(this.buttonSelect, "buttonSelect"); this.buttonSelect.ForeColor = System.Drawing.Color.White; this.buttonSelect.Name = "buttonSelect"; this.buttonSelect.UseVisualStyleBackColor = true; @@ -142,30 +146,13 @@ // // // - this.textBoxHost.CustomButton.AccessibleDescription = resources.GetString("resource.AccessibleDescription"); - this.textBoxHost.CustomButton.AccessibleName = resources.GetString("resource.AccessibleName"); - this.textBoxHost.CustomButton.Anchor = ((System.Windows.Forms.AnchorStyles)(resources.GetObject("resource.Anchor"))); - this.textBoxHost.CustomButton.AutoSize = ((bool)(resources.GetObject("resource.AutoSize"))); - this.textBoxHost.CustomButton.AutoSizeMode = ((System.Windows.Forms.AutoSizeMode)(resources.GetObject("resource.AutoSizeMode"))); - this.textBoxHost.CustomButton.BackgroundImage = ((System.Drawing.Image)(resources.GetObject("resource.BackgroundImage"))); - this.textBoxHost.CustomButton.BackgroundImageLayout = ((System.Windows.Forms.ImageLayout)(resources.GetObject("resource.BackgroundImageLayout"))); - this.textBoxHost.CustomButton.Dock = ((System.Windows.Forms.DockStyle)(resources.GetObject("resource.Dock"))); - this.textBoxHost.CustomButton.FlatStyle = ((System.Windows.Forms.FlatStyle)(resources.GetObject("resource.FlatStyle"))); - this.textBoxHost.CustomButton.Font = ((System.Drawing.Font)(resources.GetObject("resource.Font"))); this.textBoxHost.CustomButton.Image = ((System.Drawing.Image)(resources.GetObject("resource.Image"))); - this.textBoxHost.CustomButton.ImageAlign = ((System.Drawing.ContentAlignment)(resources.GetObject("resource.ImageAlign"))); - this.textBoxHost.CustomButton.ImageIndex = ((int)(resources.GetObject("resource.ImageIndex"))); - this.textBoxHost.CustomButton.ImageKey = resources.GetString("resource.ImageKey"); this.textBoxHost.CustomButton.ImeMode = ((System.Windows.Forms.ImeMode)(resources.GetObject("resource.ImeMode"))); this.textBoxHost.CustomButton.Location = ((System.Drawing.Point)(resources.GetObject("resource.Location"))); - this.textBoxHost.CustomButton.MaximumSize = ((System.Drawing.Size)(resources.GetObject("resource.MaximumSize"))); this.textBoxHost.CustomButton.Name = ""; - this.textBoxHost.CustomButton.RightToLeft = ((System.Windows.Forms.RightToLeft)(resources.GetObject("resource.RightToLeft"))); this.textBoxHost.CustomButton.Size = ((System.Drawing.Size)(resources.GetObject("resource.Size"))); this.textBoxHost.CustomButton.Style = MetroFramework.MetroColorStyle.Blue; this.textBoxHost.CustomButton.TabIndex = ((int)(resources.GetObject("resource.TabIndex"))); - this.textBoxHost.CustomButton.TextAlign = ((System.Drawing.ContentAlignment)(resources.GetObject("resource.TextAlign"))); - this.textBoxHost.CustomButton.TextImageRelation = ((System.Windows.Forms.TextImageRelation)(resources.GetObject("resource.TextImageRelation"))); this.textBoxHost.CustomButton.Theme = MetroFramework.MetroThemeStyle.Light; this.textBoxHost.CustomButton.UseSelectable = true; this.textBoxHost.CustomButton.Visible = ((bool)(resources.GetObject("resource.Visible"))); @@ -228,9 +215,9 @@ // // listViewPCKS // - resources.ApplyResources(this.listViewPCKS, "listViewPCKS"); this.listViewPCKS.Activation = System.Windows.Forms.ItemActivation.TwoClick; this.myTablePanel1.SetColumnSpan(this.listViewPCKS, 3); + resources.ApplyResources(this.listViewPCKS, "listViewPCKS"); this.listViewPCKS.HideSelection = false; this.listViewPCKS.Name = "listViewPCKS"; this.listViewPCKS.UseCompatibleStateImageBehavior = false; @@ -241,8 +228,8 @@ // // metroTabControlMain // - resources.ApplyResources(this.metroTabControlMain, "metroTabControlMain"); this.metroTabControlMain.Controls.Add(this.metroTabPageMain); + resources.ApplyResources(this.metroTabControlMain, "metroTabControlMain"); this.metroTabControlMain.Name = "metroTabControlMain"; this.metroTabControlMain.SelectedIndex = 0; this.metroTabControlMain.Style = MetroFramework.MetroColorStyle.White; @@ -251,27 +238,72 @@ // // contextMenuStripCaffiine // - resources.ApplyResources(this.contextMenuStripCaffiine, "contextMenuStripCaffiine"); this.contextMenuStripCaffiine.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { this.replaceToolStripMenuItem, this.replacePCKToolStripMenuItem}); this.contextMenuStripCaffiine.Name = "contextMenuStripCaffiine"; + resources.ApplyResources(this.contextMenuStripCaffiine, "contextMenuStripCaffiine"); this.contextMenuStripCaffiine.Opening += new System.ComponentModel.CancelEventHandler(this.contextMenuStripCaffiine_Opening); // // replaceToolStripMenuItem // - resources.ApplyResources(this.replaceToolStripMenuItem, "replaceToolStripMenuItem"); this.replaceToolStripMenuItem.Image = global::PckStudio.Properties.Resources.Replace; this.replaceToolStripMenuItem.Name = "replaceToolStripMenuItem"; + resources.ApplyResources(this.replaceToolStripMenuItem, "replaceToolStripMenuItem"); this.replaceToolStripMenuItem.Click += new System.EventHandler(this.replaceToolStripMenuItem_Click); // // replacePCKToolStripMenuItem // - resources.ApplyResources(this.replacePCKToolStripMenuItem, "replacePCKToolStripMenuItem"); this.replacePCKToolStripMenuItem.Image = global::PckStudio.Properties.Resources.Replace; this.replacePCKToolStripMenuItem.Name = "replacePCKToolStripMenuItem"; + resources.ApplyResources(this.replacePCKToolStripMenuItem, "replacePCKToolStripMenuItem"); this.replacePCKToolStripMenuItem.Click += new System.EventHandler(this.replacePCKToolStripMenuItem_Click); // + // TextBoxPackImage + // + resources.ApplyResources(this.TextBoxPackImage, "TextBoxPackImage"); + this.TextBoxPackImage.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(64)))), ((int)(((byte)(64)))), ((int)(((byte)(64))))); + this.myTablePanel1.SetColumnSpan(this.TextBoxPackImage, 2); + // + // + // + this.TextBoxPackImage.CustomButton.Image = ((System.Drawing.Image)(resources.GetObject("resource.Image1"))); + this.TextBoxPackImage.CustomButton.ImeMode = ((System.Windows.Forms.ImeMode)(resources.GetObject("resource.ImeMode1"))); + this.TextBoxPackImage.CustomButton.Location = ((System.Drawing.Point)(resources.GetObject("resource.Location1"))); + this.TextBoxPackImage.CustomButton.Name = ""; + this.TextBoxPackImage.CustomButton.Size = ((System.Drawing.Size)(resources.GetObject("resource.Size1"))); + this.TextBoxPackImage.CustomButton.Style = MetroFramework.MetroColorStyle.Blue; + this.TextBoxPackImage.CustomButton.TabIndex = ((int)(resources.GetObject("resource.TabIndex1"))); + this.TextBoxPackImage.CustomButton.Theme = MetroFramework.MetroThemeStyle.Light; + this.TextBoxPackImage.CustomButton.UseSelectable = true; + this.TextBoxPackImage.CustomButton.Visible = ((bool)(resources.GetObject("resource.Visible1"))); + this.TextBoxPackImage.IconRight = true; + this.TextBoxPackImage.Lines = new string[0]; + this.TextBoxPackImage.MaxLength = 32767; + this.TextBoxPackImage.Name = "TextBoxPackImage"; + this.TextBoxPackImage.PasswordChar = '\0'; + this.TextBoxPackImage.PromptText = "Pack Image"; + this.TextBoxPackImage.ScrollBars = System.Windows.Forms.ScrollBars.None; + this.TextBoxPackImage.SelectedText = ""; + this.TextBoxPackImage.SelectionLength = 0; + this.TextBoxPackImage.SelectionStart = 0; + this.TextBoxPackImage.ShortcutsEnabled = true; + this.TextBoxPackImage.Style = MetroFramework.MetroColorStyle.Blue; + this.TextBoxPackImage.Theme = MetroFramework.MetroThemeStyle.Dark; + this.TextBoxPackImage.UseSelectable = true; + this.TextBoxPackImage.WaterMark = "Pack Image"; + this.TextBoxPackImage.WaterMarkColor = System.Drawing.Color.FromArgb(((int)(((byte)(109)))), ((int)(((byte)(109)))), ((int)(((byte)(109))))); + this.TextBoxPackImage.WaterMarkFont = new System.Drawing.Font("Segoe UI", 12F, System.Drawing.FontStyle.Italic, System.Drawing.GraphicsUnit.Pixel); + // + // PackImageSelection + // + resources.ApplyResources(this.PackImageSelection, "PackImageSelection"); + this.PackImageSelection.BackColor = System.Drawing.Color.Sienna; + this.PackImageSelection.FlatAppearance.BorderSize = 0; + this.PackImageSelection.ForeColor = System.Drawing.Color.White; + this.PackImageSelection.Name = "PackImageSelection"; + this.PackImageSelection.UseVisualStyleBackColor = false; + // // installWiiU // resources.ApplyResources(this, "$this"); @@ -312,5 +344,7 @@ private System.Windows.Forms.Button buttonServerToggle; private MetroFramework.Controls.MetroTextBox textBoxHost; private System.Windows.Forms.ToolStripMenuItem replaceToolStripMenuItem; + private MetroFramework.Controls.MetroTextBox TextBoxPackImage; + private System.Windows.Forms.Button PackImageSelection; } } \ No newline at end of file diff --git a/PCK-Studio/Forms/Utilities/installWiiU.cs b/PCK-Studio/Forms/Utilities/installWiiU.cs index 61a94572..e2b912ab 100644 --- a/PCK-Studio/Forms/Utilities/installWiiU.cs +++ b/PCK-Studio/Forms/Utilities/installWiiU.cs @@ -11,6 +11,10 @@ using System.Net; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; +using PckStudio.Classes.FileTypes; +using PckStudio.Classes.IO; +using PckStudio.Classes.IO.ARC; +using PckStudio.Classes.IO.PCK; namespace PckStudio.Forms { @@ -20,6 +24,7 @@ namespace PckStudio.Forms string dlcPath = ""; string mod = ""; bool serverOn = false; + ConsoleArchive archive = new ConsoleArchive(); public installWiiU(string mod) { @@ -103,6 +108,7 @@ namespace PckStudio.Forms } } List pcks = new List(); + PCKFile currentPCK = null; private void updateDatabase() { @@ -341,11 +347,20 @@ namespace PckStudio.Forms { buttonMode("loading"); OpenFileDialog openPCK = new OpenFileDialog(); + + openPCK.Filter = "PCK File|*.pck"; if (openPCK.ShowDialog() == DialogResult.OK) { FTP client = new FTP("ftp://" + textBoxHost.Text, "", "a3262443"); client.UploadFile(openPCK.FileName, dlcPath + "/" + listViewPCKS.SelectedItems[0].Text + "/" + listViewPCKS.SelectedItems[0].Tag.ToString()); + if(TextBoxPackImage.Text != "") + { + string PackID = GetPackID(openPCK.FileName); + GetARCFromConsole(); + ReplacePackImage(PackID); + SendARCToConsole(); + } MessageBox.Show("PCK Replaced!"); } } @@ -404,10 +419,48 @@ namespace PckStudio.Forms buttonMode("loading"); FTP client = new FTP("ftp://" + textBoxHost.Text, "", "a3262443"); client.UploadFile(mod, dlcPath + "/" + listViewPCKS.SelectedItems[0].Text + "/" + listViewPCKS.SelectedItems[0].Tag.ToString()); + if (TextBoxPackImage.Text != "") + { + string PackID = GetPackID(mod); + GetARCFromConsole(); + ReplacePackImage(PackID); + SendARCToConsole(); + } MessageBox.Show("PCK Replaced!"); } buttonMode("stop"); loadPcks(); } + + private string GetPackID(string filename) + { + var fs = File.OpenRead(filename); + currentPCK = PCKFileReader.Read(fs, false); + fs.Close(); + return currentPCK.GetFile("0", PCKFile.FileData.FileType.InfoFile).properties.GetProperty("PACKID").Item2; + } + + private void GetARCFromConsole() + { + FTP client = new FTP("ftp://" + textBoxHost.Text, "", "a3262443"); + client.DownloadFile(dlcPath + "../../Common/Media/MediaWiiU.arc", Program.Appdata + "MediaWiiU.arc"); + archive = ARCFileReader.Read(new MemoryStream(File.ReadAllBytes(Program.Appdata + "MediaWiiU.arc"))); + } + + private void ReplacePackImage(string PackID) + { + if (archive.ContainsKey("Graphics\\PackGraphics\\" + PackID + ".png")) + archive["Graphics\\PackGraphics\\" + PackID + ".png"] = File.ReadAllBytes(TextBoxPackImage.Text); + else + archive.Add("Graphics\\PackGraphics\\" + PackID + ".png", File.ReadAllBytes(TextBoxPackImage.Text)); + } + private void SendARCToConsole() + { + FTP client = new FTP("ftp://" + textBoxHost.Text, "", "a3262443"); + MemoryStream ms = new MemoryStream(); + ARCFileWriter.Write(ms, archive); + File.WriteAllBytes(Program.Appdata + "MediaWiiU.arc", ms.ToArray()); + client.UploadFile(Program.Appdata + "MediaWiiU.arc", dlcPath + "../../Common/Media/MediaWiiU.arc"); + } } } diff --git a/PCK-Studio/Forms/Utilities/installWiiU.resx b/PCK-Studio/Forms/Utilities/installWiiU.resx index 3127fb5d..ef5c50fa 100644 --- a/PCK-Studio/Forms/Utilities/installWiiU.resx +++ b/PCK-Studio/Forms/Utilities/installWiiU.resx @@ -117,138 +117,597 @@ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - panel1 - - - myTablePanel1 - - - False + + 3 - - 0 - - - True - - - System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - - 287, 3 - - - Segoe UI, 12pt + + + GrowAndShrink False - + + Flat + + + + Segoe UI, 9.75pt + + + NoControl + + + 287, 3 + + + 137, 27 + + + 9 + + + Start + + + buttonServerToggle + + + System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + myTablePanel1 + + + 0 + Button + + BottomRight + + + Flat + + + Segoe UI, 12pt + + + 3, 0 + + + 136, 36 + + + 5 + + + System + + + MiddleCenter + + + radioButtonSystem + + + System.Windows.Forms.RadioButton, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + panel1 + + + 0 + + + Zoom + + + Flat + + + Segoe UI, 12pt + + + 287, 0 + + + 137, 36 + + + 1 + + + buttonSelect + + + System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + panel1 + + + 1 + + + Button + + + BottomRight + Flat + + Segoe UI, 12pt + + + 145, 0 + + + 136, 36 + + + 6 + + + USB + + + MiddleCenter + + + radioButtonUSB + + + System.Windows.Forms.RadioButton, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + panel1 + + + 2 + + + Fill + + + 0, 66 + + + 0, 0, 0, 0 + + + 427, 36 + + + 1 + + + panel1 + + + System.Windows.Forms.Panel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + myTablePanel1 + + + 1 + + + Left + + + + + + NoControl + + + 260, 2 + + + 15, 15 + + + 1 + + + False + + + 3, 6 + + + 278, 20 + + + 10 + + + textBoxHost + + + MetroFramework.Controls.MetroTextBox, MetroFramework, Version=1.4.0.0, Culture=neutral, PublicKeyToken=5f91a84759bf584a + + + myTablePanel1 + + + 2 + + + Button + + + True + + + BottomRight + + + Fill + + + Flat + Segoe UI, 12pt - - Flat + + NoControl - - Flat - - - BottomRight - - - BottomRight - - - System - - - -1 - - - panel1 - - - 2 - - - 4, 38 - - - BottomRight - - - MiddleCenter - - - 1 - - - 0, 0, 0, 0 - - - JAP + + 3, 105 136, 30 - - Start + + 1 - - None + + EUR + + + MiddleCenter + + + radioButtonEur + + + System.Windows.Forms.RadioButton, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + myTablePanel1 + + + 3 + + + Button True - - 145, 72 + + BottomRight - - Install to Wii U + + Fill + + + Flat + + + Segoe UI, 12pt + + + NoControl + + + 145, 105 + + + 136, 30 + + + 0 + + + US + + + MiddleCenter + + + radioButtonUs + + + System.Windows.Forms.RadioButton, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + myTablePanel1 + + + 4 + + + Button + + + True + + + BottomRight + + + Fill + + + Flat + + + Segoe UI, 12pt + + + NoControl + + + 287, 105 + + + 137, 30 + + + 2 + + + JAP + + + MiddleCenter + + + radioButtonJap + + + System.Windows.Forms.RadioButton, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + myTablePanel1 + + + 5 + + + Fill + + + False + + + 3, 141 + + + 421, 494 + + + 3 + + + listViewPCKS + + + System.Windows.Forms.ListView, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + myTablePanel1 + + + 6 + + + Left + + + + + + NoControl + + + 260, 2 + + + 15, 15 + + + 1 + + + False + + + 3, 39 + + + 278, 20 + + + 11 + + + TextBoxPackImage + + + MetroFramework.Controls.MetroTextBox, MetroFramework, Version=1.4.0.0, Culture=neutral, PublicKeyToken=5f91a84759bf584a + + + myTablePanel1 + + + 7 + + + GrowAndShrink + + + False + + + Flat + + + Segoe UI, 9.75pt + + + NoControl + + + 287, 36 + + + 137, 27 + + + 12 + + + Browse + + + PackImageSelection + + + System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + myTablePanel1 + + + 8 + + + Fill 0, 0 - - Top, Left + + 0, 0, 0, 0 - - buttonServerToggle + + 8 - - <?xml version="1.0" encoding="utf-16"?><TableLayoutSettings><Controls><Control Name="buttonServerToggle" Row="0" RowSpan="1" Column="2" ColumnSpan="1" /><Control Name="panel1" Row="1" RowSpan="1" Column="0" ColumnSpan="3" /><Control Name="textBoxHost" Row="0" RowSpan="1" Column="0" ColumnSpan="2" /><Control Name="radioButtonEur" Row="2" RowSpan="1" Column="0" ColumnSpan="1" /><Control Name="radioButtonUs" Row="2" RowSpan="1" Column="1" ColumnSpan="1" /><Control Name="radioButtonJap" Row="2" RowSpan="1" Column="2" ColumnSpan="1" /><Control Name="listViewPCKS" Row="3" RowSpan="1" Column="0" ColumnSpan="3" /></Controls><Columns Styles="Percent,33.33333,Percent,33.33334,Percent,33.33334" /><Rows Styles="AutoSize,0,Absolute,36,Absolute,36,Percent,100,AutoSize,0,AutoSize,0,AutoSize,0" /></TableLayoutSettings> + + 427, 638 - - BottomRight + + 2 - - 3, 108 - - - Segoe UI, 12pt - - - System.Windows.Forms.Panel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - 137, 27 - - + myTablePanel1 + + PckStudio.Forms.MyTablePanel, PCK Studio, Version=7.0.0.0, Culture=neutral, PublicKeyToken=null + + + metroTabPageMain + + + 2 + + + <?xml version="1.0" encoding="utf-16"?><TableLayoutSettings><Controls><Control Name="buttonServerToggle" Row="0" RowSpan="1" Column="2" ColumnSpan="1" /><Control Name="panel1" Row="2" RowSpan="1" Column="0" ColumnSpan="3" /><Control Name="textBoxHost" Row="0" RowSpan="1" Column="0" ColumnSpan="2" /><Control Name="radioButtonEur" Row="3" RowSpan="1" Column="0" ColumnSpan="1" /><Control Name="radioButtonUs" Row="3" RowSpan="1" Column="1" ColumnSpan="1" /><Control Name="radioButtonJap" Row="3" RowSpan="1" Column="2" ColumnSpan="1" /><Control Name="listViewPCKS" Row="4" RowSpan="1" Column="0" ColumnSpan="3" /><Control Name="TextBoxPackImage" Row="1" RowSpan="1" Column="0" ColumnSpan="2" /><Control Name="PackImageSelection" Row="1" RowSpan="1" Column="2" ColumnSpan="1" /></Controls><Columns Styles="Percent,33.33333,Percent,33.33334,Percent,33.33334" /><Rows Styles="AutoSize,0,AutoSize,0,Absolute,36,Absolute,36,Percent,100,AutoSize,0,AutoSize,0,AutoSize,0" /></TableLayoutSettings> + + + 4, 38 + + + 427, 638 + + + 0 + + + Perma Installer + + + metroTabPageMain + + + MetroFramework.Controls.MetroTabPage, MetroFramework, Version=1.4.0.0, Culture=neutral, PublicKeyToken=5f91a84759bf584a + + + metroTabControlMain + + + 0 + + + Fill + + + 20, 60 + + + 435, 680 + + + 0 + + + metroTabControlMain + + + MetroFramework.Controls.MetroTabControl, MetroFramework, Version=1.4.0.0, Culture=neutral, PublicKeyToken=5f91a84759bf584a + + + $this + + + 1 + + + 17, 17 + + + 211, 22 + + + Replace + + + TextAboveImage + + + 211, 22 + + + Replace with external PCK + + + 212, 48 + + + contextMenuStripCaffiine + + + System.Windows.Forms.ContextMenuStrip, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + True + 6, 13 + + 475, 760 + AAABAAYAEBAAAAEAIABoBAAAZgAAACAgAAABACAAqBAAAM4EAAAwMAAAAQAgAKglAAB2FQAAQEAAAAEA @@ -1974,442 +2433,25 @@ AABJRU5ErkJggg== - - 211, 22 - - - metroTabPageMain - - - 137, 30 - - - replacePCKToolStripMenuItem - - - 278, 20 - - - Zoom - - - 0, 33 - - - 3, 6 - - - System.Windows.Forms.ListView, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + Install to Wii U replaceToolStripMenuItem - - 0 + + System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - listViewPCKS + + replacePCKToolStripMenuItem - - 3, 0 - - - 20, 60 - - - 1 - - - Fill - - - 9 - - - panel1 - - - 287, 72 - - - - - - metroTabControlMain - - - myTablePanel1 - - - - - - 3 - - - 1 - - - 3 - - - 0 - - - Left - - - System.Windows.Forms.RadioButton, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - 435, 579 - - - myTablePanel1 - - - contextMenuStripCaffiine - - - 145, 0 - - - 421, 426 - - - 260, 2 + + System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 installWiiU - - Replace with external PCK - - - 136, 30 - - - Button - - - $this - - - MiddleCenter - - - 1 - - - - - - USB - - - 10 - - - System.Windows.Forms.RadioButton, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - MiddleCenter - - - System.Windows.Forms.RadioButton, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - myTablePanel1 - - - Inherit - - - MetroFramework.Controls.MetroTabPage, MetroFramework, Version=1.4.0.0, Culture=neutral, PublicKeyToken=5f91a84759bf584a - - - radioButtonEur - - - Segoe UI, 12pt - - - - - - 0 - - - 5 - - - BottomRight - - - 427, 537 - - - True - - - 1 - - - Fill - - - 0, 0 - - - 2 - - - Button - - - Inherit - - - metroTabPageMain - - - radioButtonUSB - - - PckStudio.Forms.MyTablePanel, PCK Studio, Version=5.3.0.0, Culture=neutral, PublicKeyToken=null - - - panel1 - - - MiddleCenter - - - - - - 5 - - - GrowAndShrink - - - 1 - - - Segoe UI, 12pt - - - MetroFramework.Controls.MetroTabControl, MetroFramework, Version=1.4.0.0, Culture=neutral, PublicKeyToken=5f91a84759bf584a - - - myTablePanel1 - - - 6 - - - 2 - - - 136, 36 - - - 7 - - - Flat - - - 137, 36 - - - System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - radioButtonJap - - - radioButtonUs - - - Flat - - - 1 - - - Fill - - - textBoxHost - MetroFramework.Forms.MetroForm, MetroFramework, Version=1.4.0.0, Culture=neutral, PublicKeyToken=5f91a84759bf584a - - 6 - - - Button - - - 427, 537 - - - System.Windows.Forms.ContextMenuStrip, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - Segoe UI, 9.75pt - - - 287, 0 - - - 2 - - - Segoe UI, 12pt - - - Replace - - - 212, 48 - - - 2 - - - MiddleCenter - - - Fill - - - TextAboveImage - - - System.Windows.Forms.RadioButton, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - 15, 15 - - - Standard - - - 0 - - - buttonSelect - - - Overlay - - - 3, 72 - - - MiddleCenter - - - US - - - 0, 0, 0, 0 - - - EUR - - - System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - 3 - - - Flat - - - myTablePanel1 - - - Fill - - - myTablePanel1 - - - 4 - - - 475, 659 - - - 0 - - - metroTabControlMain - - - Fill - - - MetroFramework.Controls.MetroTextBox, MetroFramework, Version=1.4.0.0, Culture=neutral, PublicKeyToken=5f91a84759bf584a - - - Button - - - System.Windows.Forms.RadioButton, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - False - - - 136, 36 - - - radioButtonSystem - - - System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - MiddleCenter - - - GrowOnly - - - Perma Installer - - - 211, 22 - - - False - - - - - - Tile - - - Flat - - - 427, 36 - - - Fill - - - 17, 17 - - - True - \ No newline at end of file From 93247016576e238ba71bed39abdd24aa642a1312 Mon Sep 17 00:00:00 2001 From: Felix Miller Date: Tue, 30 Aug 2022 13:38:06 -0400 Subject: [PATCH 2/4] Add automatic ARC Garbage collection --- PCK-Studio/Forms/Utilities/installWiiU.cs | 2 ++ 1 file changed, 2 insertions(+) diff --git a/PCK-Studio/Forms/Utilities/installWiiU.cs b/PCK-Studio/Forms/Utilities/installWiiU.cs index e2b912ab..757041aa 100644 --- a/PCK-Studio/Forms/Utilities/installWiiU.cs +++ b/PCK-Studio/Forms/Utilities/installWiiU.cs @@ -461,6 +461,8 @@ namespace PckStudio.Forms ARCFileWriter.Write(ms, archive); File.WriteAllBytes(Program.Appdata + "MediaWiiU.arc", ms.ToArray()); client.UploadFile(Program.Appdata + "MediaWiiU.arc", dlcPath + "../../Common/Media/MediaWiiU.arc"); + archive.Clear(); + System.GC.Collect(); } } } From 0432542c9d38b4c07a072e782b04acf1e3fbb0e3 Mon Sep 17 00:00:00 2001 From: Felix Miller Date: Tue, 30 Aug 2022 13:39:52 -0400 Subject: [PATCH 3/4] Add pack image selection functionality --- .../Forms/Utilities/installWiiU.Designer.cs | 71 ++++++++++--------- PCK-Studio/Forms/Utilities/installWiiU.cs | 8 +++ 2 files changed, 44 insertions(+), 35 deletions(-) diff --git a/PCK-Studio/Forms/Utilities/installWiiU.Designer.cs b/PCK-Studio/Forms/Utilities/installWiiU.Designer.cs index 02b0ddb4..6f14cfbc 100644 --- a/PCK-Studio/Forms/Utilities/installWiiU.Designer.cs +++ b/PCK-Studio/Forms/Utilities/installWiiU.Designer.cs @@ -42,12 +42,12 @@ this.radioButtonUs = new System.Windows.Forms.RadioButton(); this.radioButtonJap = new System.Windows.Forms.RadioButton(); this.listViewPCKS = new System.Windows.Forms.ListView(); + this.TextBoxPackImage = new MetroFramework.Controls.MetroTextBox(); + this.PackImageSelection = new System.Windows.Forms.Button(); this.metroTabControlMain = new MetroFramework.Controls.MetroTabControl(); this.contextMenuStripCaffiine = new System.Windows.Forms.ContextMenuStrip(this.components); this.replaceToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.replacePCKToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); - this.TextBoxPackImage = new MetroFramework.Controls.MetroTextBox(); - this.PackImageSelection = new System.Windows.Forms.Button(); this.metroTabPageMain.SuspendLayout(); this.myTablePanel1.SuspendLayout(); this.panel1.SuspendLayout(); @@ -226,39 +226,6 @@ this.listViewPCKS.Click += new System.EventHandler(this.listViewPCKS_Click); this.listViewPCKS.MouseDown += new System.Windows.Forms.MouseEventHandler(this.listViewPCKS_MouseDown); // - // metroTabControlMain - // - this.metroTabControlMain.Controls.Add(this.metroTabPageMain); - resources.ApplyResources(this.metroTabControlMain, "metroTabControlMain"); - this.metroTabControlMain.Name = "metroTabControlMain"; - this.metroTabControlMain.SelectedIndex = 0; - this.metroTabControlMain.Style = MetroFramework.MetroColorStyle.White; - this.metroTabControlMain.Theme = MetroFramework.MetroThemeStyle.Dark; - this.metroTabControlMain.UseSelectable = true; - // - // contextMenuStripCaffiine - // - this.contextMenuStripCaffiine.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { - this.replaceToolStripMenuItem, - this.replacePCKToolStripMenuItem}); - this.contextMenuStripCaffiine.Name = "contextMenuStripCaffiine"; - resources.ApplyResources(this.contextMenuStripCaffiine, "contextMenuStripCaffiine"); - this.contextMenuStripCaffiine.Opening += new System.ComponentModel.CancelEventHandler(this.contextMenuStripCaffiine_Opening); - // - // replaceToolStripMenuItem - // - this.replaceToolStripMenuItem.Image = global::PckStudio.Properties.Resources.Replace; - this.replaceToolStripMenuItem.Name = "replaceToolStripMenuItem"; - resources.ApplyResources(this.replaceToolStripMenuItem, "replaceToolStripMenuItem"); - this.replaceToolStripMenuItem.Click += new System.EventHandler(this.replaceToolStripMenuItem_Click); - // - // replacePCKToolStripMenuItem - // - this.replacePCKToolStripMenuItem.Image = global::PckStudio.Properties.Resources.Replace; - this.replacePCKToolStripMenuItem.Name = "replacePCKToolStripMenuItem"; - resources.ApplyResources(this.replacePCKToolStripMenuItem, "replacePCKToolStripMenuItem"); - this.replacePCKToolStripMenuItem.Click += new System.EventHandler(this.replacePCKToolStripMenuItem_Click); - // // TextBoxPackImage // resources.ApplyResources(this.TextBoxPackImage, "TextBoxPackImage"); @@ -303,6 +270,40 @@ this.PackImageSelection.ForeColor = System.Drawing.Color.White; this.PackImageSelection.Name = "PackImageSelection"; this.PackImageSelection.UseVisualStyleBackColor = false; + this.PackImageSelection.Click += new System.EventHandler(this.PackImageSelection_Click); + // + // metroTabControlMain + // + this.metroTabControlMain.Controls.Add(this.metroTabPageMain); + resources.ApplyResources(this.metroTabControlMain, "metroTabControlMain"); + this.metroTabControlMain.Name = "metroTabControlMain"; + this.metroTabControlMain.SelectedIndex = 0; + this.metroTabControlMain.Style = MetroFramework.MetroColorStyle.White; + this.metroTabControlMain.Theme = MetroFramework.MetroThemeStyle.Dark; + this.metroTabControlMain.UseSelectable = true; + // + // contextMenuStripCaffiine + // + this.contextMenuStripCaffiine.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { + this.replaceToolStripMenuItem, + this.replacePCKToolStripMenuItem}); + this.contextMenuStripCaffiine.Name = "contextMenuStripCaffiine"; + resources.ApplyResources(this.contextMenuStripCaffiine, "contextMenuStripCaffiine"); + this.contextMenuStripCaffiine.Opening += new System.ComponentModel.CancelEventHandler(this.contextMenuStripCaffiine_Opening); + // + // replaceToolStripMenuItem + // + this.replaceToolStripMenuItem.Image = global::PckStudio.Properties.Resources.Replace; + this.replaceToolStripMenuItem.Name = "replaceToolStripMenuItem"; + resources.ApplyResources(this.replaceToolStripMenuItem, "replaceToolStripMenuItem"); + this.replaceToolStripMenuItem.Click += new System.EventHandler(this.replaceToolStripMenuItem_Click); + // + // replacePCKToolStripMenuItem + // + this.replacePCKToolStripMenuItem.Image = global::PckStudio.Properties.Resources.Replace; + this.replacePCKToolStripMenuItem.Name = "replacePCKToolStripMenuItem"; + resources.ApplyResources(this.replacePCKToolStripMenuItem, "replacePCKToolStripMenuItem"); + this.replacePCKToolStripMenuItem.Click += new System.EventHandler(this.replacePCKToolStripMenuItem_Click); // // installWiiU // diff --git a/PCK-Studio/Forms/Utilities/installWiiU.cs b/PCK-Studio/Forms/Utilities/installWiiU.cs index 757041aa..d0985480 100644 --- a/PCK-Studio/Forms/Utilities/installWiiU.cs +++ b/PCK-Studio/Forms/Utilities/installWiiU.cs @@ -464,5 +464,13 @@ namespace PckStudio.Forms archive.Clear(); System.GC.Collect(); } + + private void PackImageSelection_Click(object sender, EventArgs e) + { + OpenFileDialog ofd = new OpenFileDialog(); + ofd.Filter = "PNG Image|*.png"; + if(ofd.ShowDialog() == DialogResult.OK) + TextBoxPackImage.Text = ofd.FileName; + } } } From 1790445f805f98157f1bfb9ba71776ec756aea42 Mon Sep 17 00:00:00 2001 From: Felix Miller Date: Tue, 30 Aug 2022 13:41:16 -0400 Subject: [PATCH 4/4] Excess garbage collection --- PCK-Studio/Forms/Utilities/installWiiU.cs | 2 ++ 1 file changed, 2 insertions(+) diff --git a/PCK-Studio/Forms/Utilities/installWiiU.cs b/PCK-Studio/Forms/Utilities/installWiiU.cs index d0985480..49384e30 100644 --- a/PCK-Studio/Forms/Utilities/installWiiU.cs +++ b/PCK-Studio/Forms/Utilities/installWiiU.cs @@ -462,6 +462,8 @@ namespace PckStudio.Forms File.WriteAllBytes(Program.Appdata + "MediaWiiU.arc", ms.ToArray()); client.UploadFile(Program.Appdata + "MediaWiiU.arc", dlcPath + "../../Common/Media/MediaWiiU.arc"); archive.Clear(); + currentPCK.Files.Clear(); + currentPCK = null; System.GC.Collect(); }