Announcement [Official] Bless Online Korean -> English Patch

      New

      sEEEEb wrote:

      Re-downloaded and always ran as administrator, still crashes :/

      I'm kind of a noob, how exactly do I get the error code?

      Edit: Now it worked without problem, weird.


      If it does happen again, copy all the error code, which means to copy all the text inside the white box in the picture you have attached above

      New

      nireyes25 wrote:

      RehdEyez wrote:

      After patching this morning game start button doesn't start PStall.exe. Game start button keeps taking me to download page. I can launch game from website just cant launch using Bless icon on desktop after patch.

      You have to launch it from the browser anyways. What's the issue?


      Yes I know it launches from browser only. Yesterday before the new patch when i would click on the Bless icon on my desktop and it opens my browser(which is Firefox) it takes you to game start page. When clicking on game start the login window would come up i would login, click game start again and PStall.exe would launch and game would start. Today after patching when clicking on Bless icon and going to start page clicking on game start doesn't bring up login window it takes me to download page and act's like the game isn't installed. I then have to login from download page and click game start on download page. I can still get into game so it's not really a problem just a few extra steps to get into game that i didn't have to do 8 hours ago.

      New

      RehdEyez wrote:

      nireyes25 wrote:

      RehdEyez wrote:

      After patching this morning game start button doesn't start PStall.exe. Game start button keeps taking me to download page. I can launch game from website just cant launch using Bless icon on desktop after patch.

      You have to launch it from the browser anyways. What's the issue?


      Yes I know it launches from browser only. Yesterday before the new patch when i would click on the Bless icon on my desktop and it opens my browser(which is Firefox) it takes you to game start page. When clicking on game start the login window would come up i would login, click game start again and PStall.exe would launch and game would start. Today after patching when clicking on Bless icon and going to start page clicking on game start doesn't bring up login window it takes me to download page and act's like the game isn't installed. I then have to login from download page and click game start on download page. I can still get into game so it's not really a problem just a few extra steps to get into game that i didn't have to do 8 hours ago.


      Well that's weird, but unfortunately it ain't related to the patch, 100% .

      New

      I think is good idea to add to your program force updater:

      Source Code


      Source Code

      1. {
      2. this.proxySetting = null;
      3. }
      4. string currPatchVersion = ((AssemblyFileVersionAttribute)Assembly.GetEntryAssembly().GetCustomAttributes(typeof(AssemblyFileVersionAttribute), false)[0]).Version.ToString();
      5. string serverPatchVersion;
      6. try
      7. {
      8. serverPatchVersion = new WebClient
      9. {
      10. Proxy = this.proxySetting
      11. }.DownloadString("http://www.xxxxxxx.version.php").Replace("\r", "").Replace("\n", "");
      12. }
      13. catch
      14. {
      15. serverPatchVersion = null;
      16. }
      17. if (serverPatchVersion == null || serverPatchVersion.Equals(currPatchVersion))
      18. return;
      19. DownloadProgramUpdate downloadProgramUpdate = new DownloadProgramUpdate("http://blackdesert.com.pl/patch/kr/exe/setup.exe");
      20. try
      21. {
      22. int num = (int)downloadProgramUpdate.ShowDialog();
      23. } catch (TargetInvocationException ex)
      24. {
      25. }


      and for Assembly


      Source Code

      1. using System;
      2. using System.Diagnostics;
      3. using System.Reflection;
      4. using System.Resources;
      5. using System.Runtime.CompilerServices;
      6. using System.Runtime.InteropServices;
      7. using System.Runtime.Versioning;
      8. [assembly: AssemblyVersion("1.0.0.18")]
      9. [assembly: Debuggable(DebuggableAttribute.DebuggingModes.Default | DebuggableAttribute.DebuggingModes.DisableOptimizations | DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints | DebuggableAttribute.DebuggingModes.EnableEditAndContinue)]
      10. [assembly: AssemblyCompany("")]
      11. [assembly: AssemblyConfiguration("")]
      12. [assembly: AssemblyCopyright("Copyright © 2015")]
      13. [assembly: AssemblyDescription("")]
      14. [assembly: AssemblyFileVersion("1.0.0.18")]



      downloadProgramUpdate

      Source Code

      1. using System;
      2. using System.ComponentModel;
      3. using System.Diagnostics;
      4. using System.Drawing;
      5. using System.IO;
      6. using System.Net;
      7. using System.Net.Cache;
      8. using System.Windows.Forms;
      9. namespace BlackDesert_Patcher
      10. {
      11. internal class DownloadProgramUpdate : Form
      12. {
      13. private readonly string _downloadURL;
      14. private string _tempPath;
      15. private ProgressBar progressBar;
      16. public DownloadProgramUpdate(string downloadURL)
      17. {
      18. this.InitializeComponent();
      19. this._downloadURL = downloadURL;
      20. }
      21. protected override void Dispose(bool disposing)
      22. {
      23. base.Dispose(disposing);
      24. }
      25. private void downloadProgramUpdate_Load(object sender, EventArgs e)
      26. {
      27. base.ControlBox = false;
      28. WebClient webClient = new WebClient();
      29. Uri address = new Uri(this._downloadURL);
      30. string fileName = DownloadProgramUpdate.GetFileName(this._downloadURL);
      31. bool flag = fileName == null;
      32. if (flag)
      33. {
      34. int num = (int)MessageBox.Show("Unable to find update file, please make sure you're connected to the internet.", "Error");
      35. base.Close();
      36. }
      37. else
      38. {
      39. this._tempPath = string.Format("{0}{1}", Path.GetTempPath(), fileName);
      40. webClient.DownloadProgressChanged += new DownloadProgressChangedEventHandler(this.OnDownloadProgressChanged);
      41. webClient.DownloadFileCompleted += new AsyncCompletedEventHandler(this.OnDownloadComplete);
      42. webClient.DownloadFileAsync(address, this._tempPath);
      43. }
      44. }
      45. private static string GetFileName(string url)
      46. {
      47. string text = string.Empty;
      48. HttpWebRequest httpWebRequest = (HttpWebRequest)WebRequest.Create(url);
      49. httpWebRequest.CachePolicy = new HttpRequestCachePolicy(HttpRequestCacheLevel.NoCacheNoStore);
      50. httpWebRequest.Method = "HEAD";
      51. httpWebRequest.AllowAutoRedirect = false;
      52. string result;
      53. try
      54. {
      55. HttpWebResponse httpWebResponse = (HttpWebResponse)httpWebRequest.GetResponse();
      56. bool flag = (httpWebResponse.StatusCode.Equals(HttpStatusCode.Found) || httpWebResponse.StatusCode.Equals(HttpStatusCode.MovedPermanently) || httpWebResponse.StatusCode.Equals(HttpStatusCode.MovedPermanently)) && httpWebResponse.Headers["Location"] != null;
      57. if (flag)
      58. {
      59. result = DownloadProgramUpdate.GetFileName(httpWebResponse.Headers["Location"]);
      60. }
      61. else
      62. {
      63. bool flag2 = httpWebResponse.Headers["content-disposition"] != null;
      64. if (flag2)
      65. {
      66. string text2 = httpWebResponse.Headers["content-disposition"];
      67. bool flag3 = !string.IsNullOrEmpty(text2);
      68. if (flag3)
      69. {
      70. int num = text2.IndexOf("filename=", StringComparison.CurrentCultureIgnoreCase);
      71. bool flag4 = num >= 0;
      72. if (flag4)
      73. {
      74. text = text2.Substring(num + "filename=".Length);
      75. }
      76. bool flag5 = text.StartsWith("\"") && text.EndsWith("\"");
      77. if (flag5)
      78. {
      79. text = text.Substring(1, text.Length - 2);
      80. }
      81. }
      82. }
      83. bool flag6 = string.IsNullOrEmpty(text);
      84. if (flag6)
      85. {
      86. text = Path.GetFileName(new Uri(url).LocalPath);
      87. }
      88. result = text;
      89. }
      90. }
      91. catch
      92. {
      93. result = null;
      94. }
      95. return result;
      96. }
      97. private void OnDownloadComplete(object sender, AsyncCompletedEventArgs e)
      98. {
      99. Process.Start(new ProcessStartInfo
      100. {
      101. FileName = this._tempPath,
      102. UseShellExecute = true
      103. });
      104. bool messageLoop = Application.MessageLoop;
      105. if (messageLoop)
      106. {
      107. Application.Exit();
      108. }
      109. else
      110. {
      111. Environment.Exit(1);
      112. }
      113. }
      114. private void OnDownloadProgressChanged(object sender, DownloadProgressChangedEventArgs e)
      115. {
      116. this.progressBar.Value = e.ProgressPercentage;
      117. }
      118. private void InitializeComponent()
      119. {
      120. this.progressBar = new ProgressBar();
      121. base.SuspendLayout();
      122. this.progressBar.Location = new Point(12, 12);
      123. this.progressBar.Name = "progressBar";
      124. this.progressBar.Size = new Size(364, 36);
      125. this.progressBar.TabIndex = 0;
      126. base.ClientSize = new Size(388, 60);
      127. base.Controls.Add(this.progressBar);
      128. base.FormBorderStyle = FormBorderStyle.FixedDialog;
      129. base.Name = "DownloadProgramUpdate";
      130. base.ShowIcon = false;
      131. base.StartPosition = FormStartPosition.CenterScreen;
      132. this.Text = "Pobieram słownik / Downloading files";
      133. base.TopMost = true;
      134. base.Load += new EventHandler(this.downloadProgramUpdate_Load);
      135. base.ResumeLayout(false);
      136. }
      137. }
      138. }



      progressBar

      Source Code

      1. using System;
      2. using System.ComponentModel;
      3. using System.Drawing;
      4. using System.Windows.Forms;
      5. namespace BlackDesert_Patcher
      6. {
      7. public class progressBarForm : Form
      8. {
      9. private IContainer components;
      10. public ProgressBar progressBar;
      11. public progressBarForm()
      12. {
      13. this.InitializeComponent();
      14. }
      15. private void progressBarForm_Load(object sender, EventArgs e)
      16. {
      17. base.ControlBox = false;
      18. }
      19. protected override void Dispose(bool disposing)
      20. {
      21. bool flag = disposing && this.components != null;
      22. if (flag)
      23. {
      24. this.components.Dispose();
      25. }
      26. base.Dispose(disposing);
      27. }
      28. private void InitializeComponent()
      29. {
      30. this.progressBar = new ProgressBar();
      31. base.SuspendLayout();
      32. this.progressBar.Location = new Point(12, 12);
      33. this.progressBar.Name = "progressBar";
      34. this.progressBar.Size = new Size(342, 50);
      35. this.progressBar.TabIndex = 0;
      36. base.AutoScaleDimensions = new SizeF(6f, 13f);
      37. base.AutoScaleMode = AutoScaleMode.Font;
      38. base.ClientSize = new Size(366, 74);
      39. base.Controls.Add(this.progressBar);
      40. base.FormBorderStyle = FormBorderStyle.FixedDialog;
      41. base.Name = "progressBarForm";
      42. base.StartPosition = FormStartPosition.CenterScreen;
      43. this.Text = "Updating / Aktualizuje";
      44. base.Load += new EventHandler(this.progressBarForm_Load);
      45. base.ResumeLayout(false);
      46. }
      47. }
      48. }


      I taked it from my patcher, so you need edit class names and links only.

      After program will lunch, it will check there is new update for program, if yes it will download it from your ftp server. But remember that you need change program version at assym.

      New

      Xenonino wrote:

      I think is good idea to add to your program force updater:

      Source Code


      Source Code

      1. {
      2. this.proxySetting = null;
      3. }
      4. string currPatchVersion = ((AssemblyFileVersionAttribute)Assembly.GetEntryAssembly().GetCustomAttributes(typeof(AssemblyFileVersionAttribute), false)[0]).Version.ToString();
      5. string serverPatchVersion;
      6. try
      7. {
      8. serverPatchVersion = new WebClient
      9. {
      10. Proxy = this.proxySetting
      11. }.DownloadString("http://www.xxxxxxx.version.php").Replace("\r", "").Replace("\n", "");
      12. }
      13. catch
      14. {
      15. serverPatchVersion = null;
      16. }
      17. if (serverPatchVersion == null || serverPatchVersion.Equals(currPatchVersion))
      18. return;
      19. DownloadProgramUpdate downloadProgramUpdate = new DownloadProgramUpdate("http://blackdesert.com.pl/patch/kr/exe/setup.exe");
      20. try
      21. {
      22. int num = (int)downloadProgramUpdate.ShowDialog();
      23. } catch (TargetInvocationException ex)
      24. {
      25. }


      and for Assembly


      Source Code

      1. using System;
      2. using System.Diagnostics;
      3. using System.Reflection;
      4. using System.Resources;
      5. using System.Runtime.CompilerServices;
      6. using System.Runtime.InteropServices;
      7. using System.Runtime.Versioning;
      8. [assembly: AssemblyVersion("1.0.0.18")]
      9. [assembly: Debuggable(DebuggableAttribute.DebuggingModes.Default | DebuggableAttribute.DebuggingModes.DisableOptimizations | DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints | DebuggableAttribute.DebuggingModes.EnableEditAndContinue)]
      10. [assembly: AssemblyCompany("")]
      11. [assembly: AssemblyConfiguration("")]
      12. [assembly: AssemblyCopyright("Copyright © 2015")]
      13. [assembly: AssemblyDescription("")]
      14. [assembly: AssemblyFileVersion("1.0.0.18")]



      downloadProgramUpdate

      Source Code

      1. using System;
      2. using System.ComponentModel;
      3. using System.Diagnostics;
      4. using System.Drawing;
      5. using System.IO;
      6. using System.Net;
      7. using System.Net.Cache;
      8. using System.Windows.Forms;
      9. namespace BlackDesert_Patcher
      10. {
      11. internal class DownloadProgramUpdate : Form
      12. {
      13. private readonly string _downloadURL;
      14. private string _tempPath;
      15. private ProgressBar progressBar;
      16. public DownloadProgramUpdate(string downloadURL)
      17. {
      18. this.InitializeComponent();
      19. this._downloadURL = downloadURL;
      20. }
      21. protected override void Dispose(bool disposing)
      22. {
      23. base.Dispose(disposing);
      24. }
      25. private void downloadProgramUpdate_Load(object sender, EventArgs e)
      26. {
      27. base.ControlBox = false;
      28. WebClient webClient = new WebClient();
      29. Uri address = new Uri(this._downloadURL);
      30. string fileName = DownloadProgramUpdate.GetFileName(this._downloadURL);
      31. bool flag = fileName == null;
      32. if (flag)
      33. {
      34. int num = (int)MessageBox.Show("Unable to find update file, please make sure you're connected to the internet.", "Error");
      35. base.Close();
      36. }
      37. else
      38. {
      39. this._tempPath = string.Format("{0}{1}", Path.GetTempPath(), fileName);
      40. webClient.DownloadProgressChanged += new DownloadProgressChangedEventHandler(this.OnDownloadProgressChanged);
      41. webClient.DownloadFileCompleted += new AsyncCompletedEventHandler(this.OnDownloadComplete);
      42. webClient.DownloadFileAsync(address, this._tempPath);
      43. }
      44. }
      45. private static string GetFileName(string url)
      46. {
      47. string text = string.Empty;
      48. HttpWebRequest httpWebRequest = (HttpWebRequest)WebRequest.Create(url);
      49. httpWebRequest.CachePolicy = new HttpRequestCachePolicy(HttpRequestCacheLevel.NoCacheNoStore);
      50. httpWebRequest.Method = "HEAD";
      51. httpWebRequest.AllowAutoRedirect = false;
      52. string result;
      53. try
      54. {
      55. HttpWebResponse httpWebResponse = (HttpWebResponse)httpWebRequest.GetResponse();
      56. bool flag = (httpWebResponse.StatusCode.Equals(HttpStatusCode.Found) || httpWebResponse.StatusCode.Equals(HttpStatusCode.MovedPermanently) || httpWebResponse.StatusCode.Equals(HttpStatusCode.MovedPermanently)) && httpWebResponse.Headers["Location"] != null;
      57. if (flag)
      58. {
      59. result = DownloadProgramUpdate.GetFileName(httpWebResponse.Headers["Location"]);
      60. }
      61. else
      62. {
      63. bool flag2 = httpWebResponse.Headers["content-disposition"] != null;
      64. if (flag2)
      65. {
      66. string text2 = httpWebResponse.Headers["content-disposition"];
      67. bool flag3 = !string.IsNullOrEmpty(text2);
      68. if (flag3)
      69. {
      70. int num = text2.IndexOf("filename=", StringComparison.CurrentCultureIgnoreCase);
      71. bool flag4 = num >= 0;
      72. if (flag4)
      73. {
      74. text = text2.Substring(num + "filename=".Length);
      75. }
      76. bool flag5 = text.StartsWith("\"") && text.EndsWith("\"");
      77. if (flag5)
      78. {
      79. text = text.Substring(1, text.Length - 2);
      80. }
      81. }
      82. }
      83. bool flag6 = string.IsNullOrEmpty(text);
      84. if (flag6)
      85. {
      86. text = Path.GetFileName(new Uri(url).LocalPath);
      87. }
      88. result = text;
      89. }
      90. }
      91. catch
      92. {
      93. result = null;
      94. }
      95. return result;
      96. }
      97. private void OnDownloadComplete(object sender, AsyncCompletedEventArgs e)
      98. {
      99. Process.Start(new ProcessStartInfo
      100. {
      101. FileName = this._tempPath,
      102. UseShellExecute = true
      103. });
      104. bool messageLoop = Application.MessageLoop;
      105. if (messageLoop)
      106. {
      107. Application.Exit();
      108. }
      109. else
      110. {
      111. Environment.Exit(1);
      112. }
      113. }
      114. private void OnDownloadProgressChanged(object sender, DownloadProgressChangedEventArgs e)
      115. {
      116. this.progressBar.Value = e.ProgressPercentage;
      117. }
      118. private void InitializeComponent()
      119. {
      120. this.progressBar = new ProgressBar();
      121. base.SuspendLayout();
      122. this.progressBar.Location = new Point(12, 12);
      123. this.progressBar.Name = "progressBar";
      124. this.progressBar.Size = new Size(364, 36);
      125. this.progressBar.TabIndex = 0;
      126. base.ClientSize = new Size(388, 60);
      127. base.Controls.Add(this.progressBar);
      128. base.FormBorderStyle = FormBorderStyle.FixedDialog;
      129. base.Name = "DownloadProgramUpdate";
      130. base.ShowIcon = false;
      131. base.StartPosition = FormStartPosition.CenterScreen;
      132. this.Text = "Pobieram słownik / Downloading files";
      133. base.TopMost = true;
      134. base.Load += new EventHandler(this.downloadProgramUpdate_Load);
      135. base.ResumeLayout(false);
      136. }
      137. }
      138. }



      progressBar

      Source Code

      1. using System;
      2. using System.ComponentModel;
      3. using System.Drawing;
      4. using System.Windows.Forms;
      5. namespace BlackDesert_Patcher
      6. {
      7. public class progressBarForm : Form
      8. {
      9. private IContainer components;
      10. public ProgressBar progressBar;
      11. public progressBarForm()
      12. {
      13. this.InitializeComponent();
      14. }
      15. private void progressBarForm_Load(object sender, EventArgs e)
      16. {
      17. base.ControlBox = false;
      18. }
      19. protected override void Dispose(bool disposing)
      20. {
      21. bool flag = disposing && this.components != null;
      22. if (flag)
      23. {
      24. this.components.Dispose();
      25. }
      26. base.Dispose(disposing);
      27. }
      28. private void InitializeComponent()
      29. {
      30. this.progressBar = new ProgressBar();
      31. base.SuspendLayout();
      32. this.progressBar.Location = new Point(12, 12);
      33. this.progressBar.Name = "progressBar";
      34. this.progressBar.Size = new Size(342, 50);
      35. this.progressBar.TabIndex = 0;
      36. base.AutoScaleDimensions = new SizeF(6f, 13f);
      37. base.AutoScaleMode = AutoScaleMode.Font;
      38. base.ClientSize = new Size(366, 74);
      39. base.Controls.Add(this.progressBar);
      40. base.FormBorderStyle = FormBorderStyle.FixedDialog;
      41. base.Name = "progressBarForm";
      42. base.StartPosition = FormStartPosition.CenterScreen;
      43. this.Text = "Updating / Aktualizuje";
      44. base.Load += new EventHandler(this.progressBarForm_Load);
      45. base.ResumeLayout(false);
      46. }
      47. }
      48. }


      I taked it from my patcher, so you need edit class names and links only.

      After program will lunch, it will check there is new update for program, if yes it will download it from your ftp server. But remember that you need change program version at assym.


      Force Updater so if I release an update for the updater itself it will update?
      I can do it actually, do you think it's necessary ?

      New

      It's nice, because someone dont need to know that there is program update. When he run patcher program will detect update, download it and run updated program.

      This is usefull for you only and good for users that they dont need still checking there is program update, because they will know if there is one, program will auto update.
      BTW your update check, based on the file saved in document, this code i send you will check version from your FTP than it will check this same version you got in assm. exe file.

      New

      @nireyes25 @Xenonino
      I installed the game perfect and then updated with your updater to make English when running the game launcher now i get this error : Failed to start awesomium64.dll. is missing from my system.

      I don't want to download from a dll wesbite and add it to system32 as i don't have a clue what it is , what it does.

      how can I solve this problem / ive done everything to the book.
      The client was working before i updated the English patch and now have the above error.

      Post was edited 1 time, last by “Landstalker” ().

      New

      Landstalker wrote:

      @nireyes25 @Xenonino
      I installed the game perfect and then updated with your updater to make English when running the game launcher now i get this error : Failed to start awesomium64.dll. is missing from my system.

      I don't want to download from a dll wesbite and add it to system32 as i don't have a clue what it is , what it does.

      how can I solve this problem / ive done everything to the book.
      The client was working before i updated the English patch and now have the above error.

      I'm pretty sure it has nothing with the patcher, the patcher only replaces the KOR files, nothing else.
      This dll file is a library for games, as I know Archeage uses it as well, you have nothing to be afraid off.
      Just download the dll from here : dll-files.com/dllindex/dll-files.shtml?awesomium
      This site is 100% safe, and use the manual fix to download the file.

      vVe wrote:

      Nothing wrong with my English patcher, but I just wanted to stop by to say thanks for for the effort you have put into this project! :thumbsup:

      Thank you my friend :)