Fixed download progress bar for updates
This commit is contained in:
parent
1bff8affb9
commit
08a94d7cec
8 changed files with 48 additions and 39 deletions
|
@ -41,7 +41,7 @@
|
|||
<Message ID="MesenUpToDate">You are running the latest version of Mesen</Message>
|
||||
<Message ID="PatchAndReset">Patch and reset the current game?</Message>
|
||||
<Message ID="SelectRomIps">Please select a ROM matching the IPS patch file.</Message>
|
||||
<Message ID="UnableToDownload">Unable to download file. Check your internet connection and try again.

Details:</Message>
|
||||
<Message ID="UnableToDownload">Unable to download file. Check your internet connection and try again.

Details:
{0}</Message>
|
||||
<Message ID="UnableToStartMissingDependencies">Mesen could not launch because it was unable to load MesenCore.dll due to missing dependencies.</Message>
|
||||
<Message ID="UnableToStartMissingFiles">Mesen was unable to start due to missing files.

Error: MesenCore.dll is missing.</Message>
|
||||
<Message ID="UnexpectedError">An unexpected error has occurred.

Error details:
{0}</Message>
|
||||
|
|
|
@ -531,7 +531,7 @@
|
|||
<Message ID="MesenUpToDate">Ya utiliza la versión mas reciente de Mesen.</Message>
|
||||
<Message ID="PatchAndReset">¿Aplicar el parche y reiniciar el juego?</Message>
|
||||
<Message ID="SelectRomIps">Elija la ROM que corresponde al archivo IPS seleccionado.</Message>
|
||||
<Message ID="UnableToDownload">No se puede descargar el archivo. Compruebe su conexión a Internet e inténtelo de nuevo.

Detalles del error:</Message>
|
||||
<Message ID="UnableToDownload">No se puede descargar el archivo. Compruebe su conexión a Internet e inténtelo de nuevo.

Detalles del error:
{0}</Message>
|
||||
<Message ID="UnableToStartMissingDependencies">Mesen no puede inciarse porque porque no puede cargar MesenCore.dll debido a dependencias no encontradas.</Message>
|
||||
<Message ID="UnableToStartMissingFiles">Mesen no puede iniciarse debido a que faltan archivos.

Error: No se encuentra el archivo MesenCore.dll.</Message>
|
||||
<Message ID="UnexpectedError">Se ha producido un error inesperado.

Detalles del error:
{0}</Message>
|
||||
|
|
|
@ -545,7 +545,7 @@
|
|||
<Message ID="MesenUpToDate">Vous utilisez déjà la version la plus récente de Mesen.</Message>
|
||||
<Message ID="PatchAndReset">Appliquer la patch et faire un reset du jeu?</Message>
|
||||
<Message ID="SelectRomIps">Choisissez un ROM qui correspond au fichier IPS choisi.</Message>
|
||||
<Message ID="UnableToDownload">Impossible de télécharger le fichier. Vérifier votre connexion internet et essayez à nouveau.

Détails de l'erreur:</Message>
|
||||
<Message ID="UnableToDownload">Impossible de télécharger le fichier. Vérifier votre connexion internet et essayez à nouveau.

Détails de l'erreur:
{0}</Message>
|
||||
<Message ID="UnableToStartMissingDependencies">Mesen n'a pas été en mesure de charger le fichier MesenCore.dll, et ne peut donc pas être lancé.</Message>
|
||||
<Message ID="UnableToStartMissingFiles">Mesen est incapable de démarrer puisqu'il manque des fichiers.

Erreur: Le fichier MesenCore.dll est introuvable.</Message>
|
||||
<Message ID="UnexpectedError">Une erreur inattendue s'est produite.

Détails de l'erreur :
{0}</Message>
|
||||
|
|
|
@ -527,7 +527,7 @@
|
|||
<Message ID="MesenUpToDate">既にMesenの最新のバージョンを使っています。</Message>
|
||||
<Message ID="PatchAndReset">IPSパッチを当てて、ゲームをリセットしますか?</Message>
|
||||
<Message ID="SelectRomIps">IPSファイルに合うゲームファイルを選んでください。</Message>
|
||||
<Message ID="UnableToDownload">ファイルをダウンロードできませんでした。ネット接続を確認してから、再試行してください。

エラーの詳細:</Message>
|
||||
<Message ID="UnableToDownload">ファイルをダウンロードできませんでした。ネット接続を確認してから、再試行してください。

エラーの詳細:
{0}</Message>
|
||||
<Message ID="UnableToStartMissingDependencies">MesenはMesenCore.dllをロード出来なかったため、起動できませんでした。</Message>
|
||||
<Message ID="UnableToStartMissingFiles">必要なファイルはロード出来なかったため、Mesenは起動できません。

エラー: MesenCore.dllはロードできません。</Message>
|
||||
<Message ID="UnexpectedError">予期しないエラーが発生しました。

エラーの詳細:
{0}</Message>
|
||||
|
|
|
@ -531,7 +531,7 @@
|
|||
<Message ID="MesenUpToDate">Já utiliza a versão mais recente do Mesen.</Message>
|
||||
<Message ID="PatchAndReset">Aplicar o patch e reiniciar o jogo?</Message>
|
||||
<Message ID="SelectRomIps">Selecione a ROM que corresponde ao arquivo IPS selecionado.</Message>
|
||||
<Message ID="UnableToDownload">Não foi possível baixar o arquivo. Verifique sua conexão com a internet e tente de novo.

Detalhes do erro:</Message>
|
||||
<Message ID="UnableToDownload">Não foi possível baixar o arquivo. Verifique sua conexão com a internet e tente de novo.

Detalhes do erro:
{0}</Message>
|
||||
<Message ID="UnableToStartMissingDependencies">Mesen não pode iniciar pois foi incapaz de carregar MesenCore.dll devido a falta de dependências.</Message>
|
||||
<Message ID="UnableToStartMissingFiles">Mesen não pode iniciar devido a falta de arquivos.

Erro: Não se encontra o arquivo MesenCore.dll.</Message>
|
||||
<Message ID="UnexpectedError">Houve um erro inesperado.

Detalhes do erro:
{0}</Message>
|
||||
|
|
|
@ -536,7 +536,7 @@
|
|||
<Message ID="MesenUpToDate">Вы используете последнюю версию Mesen</Message>
|
||||
<Message ID="PatchAndReset">Пропатчить и сбросить текущую игру?</Message>
|
||||
<Message ID="SelectRomIps">Пожалуйста выберите ROM соответствующий IPS.</Message>
|
||||
<Message ID="UnableToDownload">Невозможно загрузить файл. Проверьте ваше соединение с интернетом и попробуйте ещё раз.

Подробно:</Message>
|
||||
<Message ID="UnableToDownload">Невозможно загрузить файл. Проверьте ваше соединение с интернетом и попробуйте ещё раз.

Подробно:
{0}</Message>
|
||||
<Message ID="UnableToStartMissingDependencies">Mesen could not launch because it was unable to load MesenCore.dll due to missing dependencies.</Message>
|
||||
<Message ID="UnableToStartMissingFiles">Mesen не может запуститься из за отсутствующих файлов.

Ошибка: MesenCore.dll не найден.</Message>
|
||||
<Message ID="UnexpectedError">Неизвестная ошибка.

Подробно:
{0}</Message>
|
||||
|
|
|
@ -535,7 +535,7 @@
|
|||
<Message ID="MesenUpToDate">Ви використовуєте останню версію Mesen</Message>
|
||||
<Message ID="PatchAndReset">Пропатчити і скинути поточну гру?</Message>
|
||||
<Message ID="SelectRomIps">Будь ласка, оберіть ROM відповідний IPS.</Message>
|
||||
<Message ID="UnableToDownload">Неможливо завантажити файл. Перевірте ваше з'єднання з інтернетом і спробуйте ще раз.

Детально:</Message>
|
||||
<Message ID="UnableToDownload">Неможливо завантажити файл. Перевірте ваше з'єднання з інтернетом і спробуйте ще раз.

Детально:
{0}</Message>
|
||||
<Message ID="UnableToStartMissingDependencies">Mesen could not launch because it was unable to load MesenCore.dll due to missing dependencies.</Message>
|
||||
<Message ID="UnableToStartMissingFiles">Mesen не може запуститися через відсутні файли.

Помилка: MesenCore.dll не знайдений.</Message>
|
||||
<Message ID="UnexpectedError">Невідома помилка.

Детально:
{0}</Message>
|
||||
|
|
|
@ -46,44 +46,53 @@ namespace Mesen.GUI.Forms
|
|||
|
||||
DialogResult result = System.Windows.Forms.DialogResult.None;
|
||||
|
||||
using(var client = new WebClient()) {
|
||||
client.DownloadProgressChanged += (object s, DownloadProgressChangedEventArgs args) => {
|
||||
progressDownload.Value = args.ProgressPercentage;
|
||||
};
|
||||
client.DownloadFileCompleted += (object s, AsyncCompletedEventArgs args) => {
|
||||
if(!args.Cancelled && args.Error == null && File.Exists(_filename)) {
|
||||
result = System.Windows.Forms.DialogResult.OK;
|
||||
} else if(args.Error != null) {
|
||||
MesenMsgBox.Show("UnableToDownload", MessageBoxButtons.OK, MessageBoxIcon.Error, args.Error.ToString());
|
||||
Task.Run(() => {
|
||||
using(var client = new WebClient()) {
|
||||
client.DownloadProgressChanged += (object s, DownloadProgressChangedEventArgs args) => {
|
||||
this.BeginInvoke((Action)(() => {
|
||||
lblFilename.Text = string.Format("{0} ({1:0.00}Mb)", _link, (double)args.TotalBytesToReceive/1024/1024);
|
||||
progressDownload.Value = args.ProgressPercentage;
|
||||
}));
|
||||
};
|
||||
client.DownloadFileCompleted += (object s, AsyncCompletedEventArgs args) => {
|
||||
if(!args.Cancelled && args.Error == null && File.Exists(_filename)) {
|
||||
result = System.Windows.Forms.DialogResult.OK;
|
||||
} else if(args.Error != null) {
|
||||
MesenMsgBox.Show("UnableToDownload", MessageBoxButtons.OK, MessageBoxIcon.Error, args.Error.ToString());
|
||||
result = System.Windows.Forms.DialogResult.Cancel;
|
||||
}
|
||||
};
|
||||
|
||||
Task downloadTask = null;
|
||||
try {
|
||||
downloadTask = client.DownloadFileTaskAsync(_link, _filename);
|
||||
} catch(Exception ex) {
|
||||
MesenMsgBox.Show("UnableToDownload", MessageBoxButtons.OK, MessageBoxIcon.Error, ex.ToString());
|
||||
result = System.Windows.Forms.DialogResult.Cancel;
|
||||
}
|
||||
};
|
||||
|
||||
Task downloadTask = null;
|
||||
try {
|
||||
downloadTask = client.DownloadFileTaskAsync(_link, _filename);
|
||||
} catch(Exception ex) {
|
||||
MesenMsgBox.Show("UnableToDownload", MessageBoxButtons.OK, MessageBoxIcon.Error, ex.ToString());
|
||||
result = System.Windows.Forms.DialogResult.Cancel;
|
||||
}
|
||||
if(downloadTask == null) {
|
||||
result = System.Windows.Forms.DialogResult.Cancel;
|
||||
} else {
|
||||
while(!downloadTask.IsCompleted && !_cancel) {
|
||||
System.Threading.Thread.Sleep(200);
|
||||
}
|
||||
|
||||
if(downloadTask == null) {
|
||||
result = System.Windows.Forms.DialogResult.Cancel;
|
||||
} else {
|
||||
while(!downloadTask.IsCompleted && !_cancel) {
|
||||
System.Threading.Thread.Sleep(200);
|
||||
Application.DoEvents();
|
||||
}
|
||||
|
||||
if(_cancel) {
|
||||
client.CancelAsync();
|
||||
} else if(result == System.Windows.Forms.DialogResult.None) {
|
||||
result = System.Windows.Forms.DialogResult.OK;
|
||||
if(_cancel) {
|
||||
client.CancelAsync();
|
||||
} else if(result == System.Windows.Forms.DialogResult.None) {
|
||||
result = System.Windows.Forms.DialogResult.OK;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
DialogResult = result;
|
||||
this.Close();
|
||||
|
||||
//Wait a bit for the progress bar to update to 100% (display updates are slower than the .Value updates)
|
||||
System.Threading.Thread.Sleep(500);
|
||||
this.BeginInvoke((Action)(() => {
|
||||
DialogResult = result;
|
||||
this.Close();
|
||||
}));
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Add table
Reference in a new issue