From 79e87fa357eb75e53f8c6a6f1da1dc12b9199787 Mon Sep 17 00:00:00 2001 From: givememystuffplease Date: Wed, 19 Jan 2011 22:33:05 +0000 Subject: [PATCH] Fixes to the Pre-v1.9 build --- NUS Downloader/Form1.Designer.cs | 63 +++-- NUS Downloader/Form1.cs | 27 +- NUS Downloader/Form1.resx | 254 +++++++++++++++++- NUS Downloader/Latest/NUS Downloader.exe | Bin 473088 -> 483328 bytes NUS Downloader/NUS Downloader.csproj | 38 ++- NUS Downloader/NusClient.cs | 67 ++--- .../Properties/Resources.Designer.cs | 7 - NUS Downloader/Properties/Resources.resx | 6 +- 8 files changed, 370 insertions(+), 92 deletions(-) diff --git a/NUS Downloader/Form1.Designer.cs b/NUS Downloader/Form1.Designer.cs index 23da2cf..e241734 100644 --- a/NUS Downloader/Form1.Designer.cs +++ b/NUS Downloader/Form1.Designer.cs @@ -79,6 +79,7 @@ namespace NUS_Downloader this.toolStripSeparator3 = new System.Windows.Forms.ToolStripSeparator(); this.proxySettingsToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.toolStripSeparator6 = new System.Windows.Forms.ToolStripSeparator(); + this.openNUSDDirectoryToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.moreExtrasToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.runFolderFixToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.wiiBrewToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); @@ -87,7 +88,6 @@ namespace NUS_Downloader this.removeNUSDFilesFoldersToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.databaseToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.localTicketInventoryToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); - this.openNUSDDirectoryToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.donateToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.aboutNUSDToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.proxyBox = new System.Windows.Forms.GroupBox(); @@ -127,10 +127,11 @@ namespace NUS_Downloader this.packbox = new System.Windows.Forms.CheckBox(); this.decryptbox = new System.Windows.Forms.CheckBox(); this.localuse = new System.Windows.Forms.CheckBox(); + this.serverLbl = new System.Windows.Forms.Label(); this.titleidbox = new wmgCMS.WaterMarkTextBox(); this.dlprogress = new wyDay.Controls.Windows7ProgressBar(); this.titleversion = new wmgCMS.WaterMarkTextBox(); - this.serverLbl = new System.Windows.Forms.Label(); + this.toolStripSeparator7 = new System.Windows.Forms.ToolStripSeparator(); this.databaseStrip.SuspendLayout(); this.extrasStrip.SuspendLayout(); this.proxyBox.SuspendLayout(); @@ -229,7 +230,7 @@ namespace NUS_Downloader // SystemMenuList // this.SystemMenuList.AutoSize = false; - this.SystemMenuList.Image = global::NUS_Downloader.Properties.Resources.wii16x16_copy; + this.SystemMenuList.Image = ((System.Drawing.Image)(resources.GetObject("SystemMenuList.Image"))); this.SystemMenuList.Name = "SystemMenuList"; this.SystemMenuList.Size = new System.Drawing.Size(158, 22); this.SystemMenuList.Text = "System"; @@ -244,7 +245,7 @@ namespace NUS_Downloader // // IOSMenuList // - this.IOSMenuList.Image = global::NUS_Downloader.Properties.Resources.wii16x16_copy; + this.IOSMenuList.Image = ((System.Drawing.Image)(resources.GetObject("IOSMenuList.Image"))); this.IOSMenuList.Name = "IOSMenuList"; this.IOSMenuList.Size = new System.Drawing.Size(163, 22); this.IOSMenuList.Text = "IOS"; @@ -271,7 +272,7 @@ namespace NUS_Downloader this.TurboGrafx16MenuList, this.TurboGrafxCDMenuList, this.VCArcadeMenuList}); - this.VCMenuList.Image = global::NUS_Downloader.Properties.Resources.wii16x16_copy; + this.VCMenuList.Image = ((System.Drawing.Image)(resources.GetObject("VCMenuList.Image"))); this.VCMenuList.Name = "VCMenuList"; this.VCMenuList.Size = new System.Drawing.Size(163, 22); this.VCMenuList.Text = "Virtual Console"; @@ -352,7 +353,7 @@ namespace NUS_Downloader // // WiiWareMenuList // - this.WiiWareMenuList.Image = global::NUS_Downloader.Properties.Resources.wii16x16_copy; + this.WiiWareMenuList.Image = ((System.Drawing.Image)(resources.GetObject("WiiWareMenuList.Image"))); this.WiiWareMenuList.Name = "WiiWareMenuList"; this.WiiWareMenuList.Size = new System.Drawing.Size(163, 22); this.WiiWareMenuList.Text = "WiiWare"; @@ -453,9 +454,10 @@ namespace NUS_Downloader this.openNUSDDirectoryToolStripMenuItem, this.moreExtrasToolStripMenuItem, this.donateToolStripMenuItem, + this.toolStripSeparator7, this.aboutNUSDToolStripMenuItem}); this.extrasStrip.Name = "extrasStrip"; - this.extrasStrip.Size = new System.Drawing.Size(178, 170); + this.extrasStrip.Size = new System.Drawing.Size(178, 154); this.extrasStrip.Text = "Hidden"; this.extrasStrip.Closed += new System.Windows.Forms.ToolStripDropDownClosedEventHandler(this.anyStrip_Closed); this.extrasStrip.Opening += new System.ComponentModel.CancelEventHandler(this.extrasStrip_Opening); @@ -486,6 +488,14 @@ namespace NUS_Downloader this.toolStripSeparator6.Name = "toolStripSeparator6"; this.toolStripSeparator6.Size = new System.Drawing.Size(174, 6); // + // openNUSDDirectoryToolStripMenuItem + // + this.openNUSDDirectoryToolStripMenuItem.Image = global::NUS_Downloader.Properties.Resources.folder; + this.openNUSDDirectoryToolStripMenuItem.Name = "openNUSDDirectoryToolStripMenuItem"; + this.openNUSDDirectoryToolStripMenuItem.Size = new System.Drawing.Size(177, 22); + this.openNUSDDirectoryToolStripMenuItem.Text = "Open NUSD Directory"; + this.openNUSDDirectoryToolStripMenuItem.Click += new System.EventHandler(this.openNUSDDirectoryToolStripMenuItem_Click); + // // moreExtrasToolStripMenuItem // this.moreExtrasToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { @@ -551,20 +561,13 @@ namespace NUS_Downloader this.localTicketInventoryToolStripMenuItem.Text = "Local Ticket Inventory"; this.localTicketInventoryToolStripMenuItem.Click += new System.EventHandler(this.localTicketInventoryToolStripMenuItem_Click); // - // openNUSDDirectoryToolStripMenuItem - // - this.openNUSDDirectoryToolStripMenuItem.Image = global::NUS_Downloader.Properties.Resources.folder; - this.openNUSDDirectoryToolStripMenuItem.Name = "openNUSDDirectoryToolStripMenuItem"; - this.openNUSDDirectoryToolStripMenuItem.Size = new System.Drawing.Size(177, 22); - this.openNUSDDirectoryToolStripMenuItem.Text = "Open NUSD Directory"; - this.openNUSDDirectoryToolStripMenuItem.Click += new System.EventHandler(this.openNUSDDirectoryToolStripMenuItem_Click); - // // donateToolStripMenuItem // this.donateToolStripMenuItem.Image = global::NUS_Downloader.Properties.Resources.money; this.donateToolStripMenuItem.Name = "donateToolStripMenuItem"; this.donateToolStripMenuItem.Size = new System.Drawing.Size(177, 22); this.donateToolStripMenuItem.Text = "Donate!"; + this.donateToolStripMenuItem.Visible = false; this.donateToolStripMenuItem.Click += new System.EventHandler(this.donateToolStripMenuItem_Click); // // aboutNUSDToolStripMenuItem @@ -993,6 +996,20 @@ namespace NUS_Downloader this.localuse.TextImageRelation = System.Windows.Forms.TextImageRelation.ImageBeforeText; this.localuse.UseVisualStyleBackColor = true; // + // serverLbl + // + this.serverLbl.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.serverLbl.Location = new System.Drawing.Point(233, 38); + this.serverLbl.Name = "serverLbl"; + this.serverLbl.Size = new System.Drawing.Size(29, 20); + this.serverLbl.TabIndex = 57; + this.serverLbl.Text = "Wii"; + this.serverLbl.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + this.serverLbl.TextChanged += new System.EventHandler(this.serverLbl_TextChanged); + this.serverLbl.Click += new System.EventHandler(this.serverLbl_Click); + this.serverLbl.MouseEnter += new System.EventHandler(this.serverLbl_MouseEnter); + this.serverLbl.MouseLeave += new System.EventHandler(this.serverLbl_MouseLeave); + // // titleidbox // this.titleidbox.Font = new System.Drawing.Font("Tahoma", 8.25F); @@ -1027,19 +1044,10 @@ namespace NUS_Downloader this.titleversion.WaterMarkText = "Version"; this.titleversion.TextChanged += new System.EventHandler(this.titleversion_TextChanged); // - // serverLbl + // toolStripSeparator7 // - this.serverLbl.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; - this.serverLbl.Location = new System.Drawing.Point(233, 38); - this.serverLbl.Name = "serverLbl"; - this.serverLbl.Size = new System.Drawing.Size(29, 20); - this.serverLbl.TabIndex = 57; - this.serverLbl.Text = "Wii"; - this.serverLbl.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; - this.serverLbl.TextChanged += new System.EventHandler(this.serverLbl_TextChanged); - this.serverLbl.Click += new System.EventHandler(this.serverLbl_Click); - this.serverLbl.MouseEnter += new System.EventHandler(this.serverLbl_MouseEnter); - this.serverLbl.MouseLeave += new System.EventHandler(this.serverLbl_MouseLeave); + this.toolStripSeparator7.Name = "toolStripSeparator7"; + this.toolStripSeparator7.Size = new System.Drawing.Size(174, 6); // // Form1 // @@ -1185,6 +1193,7 @@ namespace NUS_Downloader private System.Windows.Forms.ToolStripMenuItem wiiRegionCodesMenu; private System.Windows.Forms.ToolStripMenuItem dsiRegionCodesMenu; private System.Windows.Forms.Label serverLbl; + private System.Windows.Forms.ToolStripSeparator toolStripSeparator7; } } diff --git a/NUS Downloader/Form1.cs b/NUS Downloader/Form1.cs index 7947973..ba6f021 100644 --- a/NUS Downloader/Form1.cs +++ b/NUS Downloader/Form1.cs @@ -638,10 +638,10 @@ namespace NUS_Downloader { SetTextThreadSafe(statusbox, " --- " + titleidbox.Text + " ---"); } - }*/ + } else - WriteStatus(" --- " + titleidbox.Text + " ---"); - + WriteStatus(" --- " + titleidbox.Text + " ---");*/ + // Running Downloads in background so no form freezing NUSDownloader.RunWorkerAsync(); @@ -682,7 +682,6 @@ namespace NUS_Downloader // WebClient configuration WebClient nusWC = new WebClient(); nusWC = ConfigureWithProxy(nusWC); - nusWC.Headers.Add("User-Agent", "wii libnup/1.0"); // Set UserAgent to Wii value // Create\Configure NusClient libWiiSharp.NusClient nusClient = new libWiiSharp.NusClient(); @@ -1741,7 +1740,7 @@ namespace NUS_Downloader /// Database as a String private void RetrieveNewDatabase(object sender, DoWorkEventArgs e) { - // Retrieve Wiibrew database page source code + // Retrieve Wiibrew/DSiBrew database page source code WebClient databasedl = new WebClient(); // Proxy @@ -1811,7 +1810,7 @@ namespace NUS_Downloader if (File.Exists(databaseFilename)) { WriteStatus(" - Overwriting your current database..."); - WriteStatus(" - The old database will become 'old*database.xml' in case the new one is faulty."); + WriteStatus(String.Format(" - The old database will become 'old{0}' in case the new one is faulty.", databaseFilename)); string olddatabase = File.ReadAllText(databaseFilename); File.WriteAllText("old" + databaseFilename, olddatabase); @@ -1820,8 +1819,8 @@ namespace NUS_Downloader } else { - WriteStatus(" - database.xml has been created."); - File.WriteAllText("database.xml", database); + WriteStatus(String.Format(" - {0} has been created.", databaseFilename)); + File.WriteAllText(databaseFilename, database); isCreation = true; } @@ -2423,15 +2422,15 @@ namespace NUS_Downloader WriteStatus("Various contributions by lukegb"); WriteStatus(String.Empty); - if (NUSDFileExists("key.bin") == false) + if (NUSDFileExists("key.bin") == true) WriteStatus("Wii Decryption: Local (key.bin)"); - - if (NUSDFileExists("kkey.bin") == false) + + if (NUSDFileExists("kkey.bin") == true) WriteStatus("Wii Korea Decryption: Local (kkey.bin)"); - - - if (NUSDFileExists("dsikey.bin") == false) + + + if (NUSDFileExists("dsikey.bin") == true) WriteStatus("DSi Decryption: Local (dsikey.bin)"); diff --git a/NUS Downloader/Form1.resx b/NUS Downloader/Form1.resx index 3a65736..df3e553 100644 --- a/NUS Downloader/Form1.resx +++ b/NUS Downloader/Form1.resx @@ -123,13 +123,265 @@ 159, 17 + + + + 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 + 71CQAAAAAElFTkSuQmCC + + + + + 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 + 71CQAAAAAElFTkSuQmCC + + + + + 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 + 71CQAAAAAElFTkSuQmCC + + + + + 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 + 71CQAAAAAElFTkSuQmCC + + 285, 17 394, 17 - AAABAAYAEBAAAAAAIABoBAAAZgAAABgYAAAAACAAiAkAAM4EAAAgIAAAAAAgAKgQAABWDgAAMDAAAAAA diff --git a/NUS Downloader/Latest/NUS Downloader.exe b/NUS Downloader/Latest/NUS Downloader.exe index 8bd9e822d4062c67fc8355e4af5f14f48b83e4c4..08183fbd573930d5001a44887b55bf13f5ff5110 100644 GIT binary patch delta 44333 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 z zvydKHG@eyssa!!6dTTD}WoXazAU#t?G;PR}Wd(RMTNb#}Ec&%nsPcCfA-)7_jHeSS zh|h?+MO=VmKkaQM7Wz#YF_?vZEe={5B)X%53^F|)L_Aw(2UBv3RdWSNFqAxT<)eM( z5j!3JqZpv&mBeKhvRf=yR+8R^anG@I(~%EE7Z!TaKbMm@I&2_ z5B*VWYZmfbob8`SI>pDrXyRZ}gXyrBEJo~9@FY-%!L$Ws@JV2Vt4Mr2LHgZ1l5P|_ zM%?zCPhyRco&{;)eA4GhWizkvtsbN|=aUpH3}M}hrkhMeqC@5oyPj7?8U%a%ALI@f z^at6?M=wax@B~u~S(HHy8o`C{oBGCzr3b+4@iF<40Jiw(-Od=9Y ziefaV;YN6x)bIiN{VIrdmMy2i+ltld<5)EsAFrCPlev#ETAy|e>(?KxAuiGdp>f42L)cyp!)qD59^EA9 z(J_KX=4IuXx|EeC&b0TXMPEoS&-^+?qUjsRTy@VacrPBOldK%5jde%;?G~ZeH;{3j zDEM`R;A@Dg709PR4w2)ing%x#PewhISo0ppMaYjq&b(cLoc$7Mh8&LVkX=C4khMwz zT*U;pv;o|N`aZ82j9&q(r&C0j@+*49ujo8#@D9eI)>3cr8;iN*>Mo!>$H z9Q_zH?-vbd3fl;eQ@{*UGQic+mb6_ppzUniJx;@4gnD~cfy=8bHRl*mTxO)q7+3~% zQ)I=go>ON;aJ2FyeJ&W#75uh)6Vct943}!@?Xh@_`3gZ2m|RKG7m86s1bX^5-tj*l CE=CIg delta 46199 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 Crystal_Clear_app_ark2.ico false - 5828AACDBD1A48E3768B7E0465E90D0E96E2BE4C + 1555E408E7D4078FB64D4CC67B4156C20E540209 NUS Downloader_TemporaryKey.pfx - false - false + true + true LocalIntranet Properties\app.manifest @@ -25,7 +25,8 @@ 3.5 - C:\Users\Luke\Desktop\NUSD\build\ + + C:\Users\Windows7\Documents\Visual Studio 2010\Projects\NUS Downloader\NUS Downloader\publish\ true Disk false @@ -34,13 +35,13 @@ Days false false - true - 11 + false + false + 12 1.0.0.%2a false true true - true @@ -110,6 +111,7 @@ Designer + SettingsSingleFileGenerator Settings.Designer.cs @@ -216,6 +218,28 @@ false + + + False + + + + + Exclude + True + File + + + False + + + + + Exclude + True + File + + copy "$(TargetPath)" "$(ProjectDir)\Latest\" diff --git a/NUS Downloader/NusClient.cs b/NUS Downloader/NusClient.cs index 8c88d15..135de20 100644 --- a/NUS Downloader/NusClient.cs +++ b/NUS Downloader/NusClient.cs @@ -37,6 +37,9 @@ namespace libWiiSharp private const string WII_NUS_URL = "http://nus.cdn.shop.wii.com/ccs/download/"; private const string DSI_NUS_URL = "http://nus.cdn.t.shop.nintendowifi.net/ccs/download/"; + private const string WII_USER_AGENT = "wii libnup/1.0"; + private const string DSI_USER_AGENT = "Opera/9.50 (Nintendo; Opera/154; U; Nintendo DS; en)"; + private string nusUrl = WII_NUS_URL; private WebClient wcNus = new WebClient(); private bool useLocalFiles = false; @@ -90,11 +93,13 @@ namespace libWiiSharp public void SetToWiiServer() { nusUrl = WII_NUS_URL; + wcNus.Headers.Add("User-Agent", WII_USER_AGENT); } public void SetToDSiServer() { nusUrl = DSI_NUS_URL; + wcNus.Headers.Add("User-Agent", DSI_USER_AGENT); } /// @@ -285,21 +290,21 @@ namespace libWiiSharp switch (st) { case StoreType.DecryptedContent: - fireDebug(" -> Storing Decrypted Content..."); + fireDebug(" [=] Storing Decrypted Content..."); storeDecrypted = true; break; case StoreType.EncryptedContent: - fireDebug(" -> Storing Encrypted Content..."); + fireDebug(" [=] Storing Encrypted Content..."); storeEncrypted = true; break; case StoreType.WAD: - fireDebug(" -> Storing WAD..."); + fireDebug(" [=] Storing WAD..."); storeWad = true; break; case StoreType.All: - fireDebug(" -> Storing Decrypted Content..."); - fireDebug(" -> Storing Encrypted Content..."); - fireDebug(" -> Storing WAD..."); + fireDebug(" [=] Storing Decrypted Content..."); + fireDebug(" [=] Storing Encrypted Content..."); + fireDebug(" [=] Storing WAD..."); storeDecrypted = true; storeEncrypted = true; storeWad = true; @@ -308,12 +313,12 @@ namespace libWiiSharp break; } } - - fireDebug(" Checking for Internet connection..."); + /* + fireDebug(" - Checking for Internet connection..."); if (!CheckInet()) - { fireDebug(" Connection not found..."); throw new Exception("You're not connected to the internet!"); } - - //if (outputDir[outputDir.Length - 1] != Path.DirectorySeparatorChar) outputDir += Path.DirectorySeparatorChar; + { fireDebug(" + Connection not found..."); throw new Exception("You're not connected to the internet!"); } + */ + if (!Directory.Exists(outputDir)) Directory.CreateDirectory(outputDir); if (!Directory.Exists(Path.Combine(outputDir, titleId))) Directory.CreateDirectory(Path.Combine(outputDir, titleId)); outputDir = Path.Combine(outputDir, titleId); @@ -321,7 +326,7 @@ namespace libWiiSharp string tmdFile = "tmd" + (string.IsNullOrEmpty(titleVersion) ? string.Empty : string.Format(".{0}", titleVersion)); //Download TMD - fireDebug(" Downloading TMD..."); + fireDebug(" - Downloading TMD..."); TMD tmd; byte[] tmdFileWithCerts; try @@ -329,13 +334,13 @@ namespace libWiiSharp tmdFileWithCerts = wcNus.DownloadData(titleUrl + tmdFile); tmd = TMD.Load(tmdFileWithCerts); } - catch (Exception ex) { fireDebug(" Downloading TMD Failed..."); throw new Exception("Downloading TMD Failed:\n" + ex.Message); } + catch (Exception ex) { fireDebug(" + Downloading TMD Failed..."); throw new Exception("Downloading TMD Failed:\n" + ex.Message); } //Parse TMD - fireDebug(" Parsing TMD..."); + fireDebug(" - Parsing TMD..."); - if (string.IsNullOrEmpty(titleVersion)) { fireDebug(" -> Title Version: {0}", tmd.TitleVersion); } - fireDebug(" -> {0} Contents", tmd.NumOfContents); + if (string.IsNullOrEmpty(titleVersion)) { fireDebug(" + Title Version: {0}", tmd.TitleVersion); } + fireDebug(" + {0} Contents", tmd.NumOfContents); if (!Directory.Exists(Path.Combine(outputDir, tmd.TitleVersion.ToString()))) Directory.CreateDirectory(Path.Combine(outputDir, tmd.TitleVersion.ToString())); outputDir = Path.Combine(outputDir, tmd.TitleVersion.ToString()); @@ -347,7 +352,7 @@ namespace libWiiSharp fireProgress(5); //Download cetk - fireDebug(" Downloading Ticket..."); + fireDebug(" - Downloading Ticket..."); try { wcNus.DownloadFile(Path.Combine(titleUrl, "cetk"), Path.Combine(outputDir, "cetk")); @@ -356,7 +361,7 @@ namespace libWiiSharp { if (!continueWithoutTicket || !storeEncrypted) { - fireDebug(" Downloading Ticket Failed..."); + fireDebug(" + Downloading Ticket Failed..."); throw new Exception("Downloading Ticket Failed:\n" + ex.Message); } @@ -374,7 +379,7 @@ namespace libWiiSharp if (File.Exists(Path.Combine(outputDir, "cetk"))) { - fireDebug(" Parsing Ticket..."); + fireDebug(" + Parsing Ticket..."); tik = Ticket.Load(Path.Combine(outputDir, "cetk")); // DSi ticket? Must make sure to use DSi Key :D @@ -383,7 +388,7 @@ namespace libWiiSharp } else { - fireDebug(" Ticket Unavailable..."); + fireDebug(" + Ticket Unavailable..."); } string[] encryptedContents = new string[tmd.NumOfContents]; @@ -391,11 +396,11 @@ namespace libWiiSharp //Download Content for (int i = 0; i < tmd.NumOfContents; i++) { - fireDebug(" Downloading Content #{0} of {1}... ({2} bytes)", i + 1, tmd.NumOfContents, tmd.Contents[i].Size); + fireDebug(" - Downloading Content #{0} of {1}... ({2} bytes)", i + 1, tmd.NumOfContents, tmd.Contents[i].Size); fireProgress(((i + 1) * 60 / tmd.NumOfContents) + 10); if (useLocalFiles && File.Exists(Path.Combine(outputDir, tmd.Contents[i].ContentID.ToString("x8")))) - { fireDebug(" Using Local File, Skipping..."); continue; } + { fireDebug(" + Using Local File, Skipping..."); continue; } try { @@ -404,7 +409,7 @@ namespace libWiiSharp encryptedContents[i] = tmd.Contents[i].ContentID.ToString("x8"); } - catch (Exception ex) { fireDebug(" Downloading Content #{0} of {1} failed...", i + 1, tmd.NumOfContents); throw new Exception("Downloading Content Failed:\n" + ex.Message); } + catch (Exception ex) { fireDebug(" - Downloading Content #{0} of {1} failed...", i + 1, tmd.NumOfContents); throw new Exception("Downloading Content Failed:\n" + ex.Message); } } //Decrypt Content @@ -414,7 +419,7 @@ namespace libWiiSharp for (int i = 0; i < tmd.NumOfContents; i++) { - fireDebug(" Decrypting Content #{0} of {1}...", i + 1, tmd.NumOfContents); + fireDebug(" - Decrypting Content #{0} of {1}...", i + 1, tmd.NumOfContents); fireProgress(((i + 1) * 20 / tmd.NumOfContents) + 75); //Decrypt Content @@ -426,7 +431,7 @@ namespace libWiiSharp byte[] newSha = s.ComputeHash(decryptedContent); if (!Shared.CompareByteArrays(newSha, tmd.Contents[i].Hash)) { - fireDebug(@"/!\ /!\ Hashes do not match /!\ /!\"); + fireDebug(@" + Hashes do not match! (Invalid Output)"); //throw new Exception(string.Format("Content #{0}: Hashes do not match!", i)); } @@ -440,7 +445,7 @@ namespace libWiiSharp //Pack Wad if (storeWad) { - fireDebug(" Building Certificate Chain..."); + fireDebug(" - Building Certificate Chain..."); CertificateChain cert = CertificateChain.FromTikTmd(Path.Combine(outputDir, "cetk"), tmdFileWithCerts); byte[][] contents = new byte[tmd.NumOfContents][]; @@ -448,7 +453,7 @@ namespace libWiiSharp for (int i = 0; i < tmd.NumOfContents; i++) contents[i] = File.ReadAllBytes(Path.Combine(outputDir, (tmd.Contents[i].ContentID.ToString("x8") + ".app"))); - fireDebug(" Creating WAD..."); + fireDebug(" - Creating WAD..."); WAD wad = WAD.Create(cert, tik, tmd, contents); wad.RemoveFooter(); wadName = wadName.Replace("[v]", this.TitleVersion.ToString()); @@ -461,26 +466,26 @@ namespace libWiiSharp //Delete not wanted files if (!storeEncrypted) { - fireDebug(" Deleting Encrypted Contents..."); + fireDebug(" - Deleting Encrypted Contents..."); for (int i = 0; i < encryptedContents.Length; i++) if (File.Exists(Path.Combine(outputDir, encryptedContents[i]))) File.Delete(Path.Combine(outputDir, encryptedContents[i])); } if (storeWad && !storeDecrypted) { - fireDebug(" Deleting Decrypted Contents..."); + fireDebug(" - Deleting Decrypted Contents..."); for (int i = 0; i < encryptedContents.Length; i++) if (File.Exists(Path.Combine(outputDir, (encryptedContents[i] + ".app")))) File.Delete(Path.Combine(outputDir, (encryptedContents[i] + ".app"))); } if (!storeDecrypted && !storeEncrypted) { - fireDebug(" Deleting TMD and Ticket..."); + fireDebug(" - Deleting TMD and Ticket..."); File.Delete(Path.Combine(outputDir, tmdFile)); File.Delete(Path.Combine(outputDir, "cetk")); } - fireDebug("Downloading Title {0} v{1} Finished...", titleId, (string.IsNullOrEmpty(titleVersion)) ? "[Latest]" : titleVersion); + fireDebug("Downloading Title {0} v{1} Finished...", titleId, tmd.TitleVersion /*(string.IsNullOrEmpty(titleVersion)) ? "[Latest]" : titleVersion*/); fireProgress(100); } diff --git a/NUS Downloader/Properties/Resources.Designer.cs b/NUS Downloader/Properties/Resources.Designer.cs index 67f8d19..5c5152d 100644 --- a/NUS Downloader/Properties/Resources.Designer.cs +++ b/NUS Downloader/Properties/Resources.Designer.cs @@ -319,13 +319,6 @@ namespace NUS_Downloader.Properties { } } - internal static System.Drawing.Bitmap wii16x16_copy { - get { - object obj = ResourceManager.GetObject("wii16x16 copy", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - internal static System.Drawing.Bitmap wrench { get { object obj = ResourceManager.GetObject("wrench", resourceCulture); diff --git a/NUS Downloader/Properties/Resources.resx b/NUS Downloader/Properties/Resources.resx index dc45ffe..0e3cf8e 100644 --- a/NUS Downloader/Properties/Resources.resx +++ b/NUS Downloader/Properties/Resources.resx @@ -127,7 +127,7 @@ ..\Resources\bullet_redorange.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - + ..\Resources\wii16x16 copy.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a @@ -193,9 +193,6 @@ ..\Resources\database_save.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\Resources\wii16x16.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - ..\Resources\bullet_green.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a @@ -232,7 +229,6 @@ ..\Resources\information.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - ..\Resources\dsi16x16.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a