Linux: Support for auto updates (+ refactoring)
This commit is contained in:
parent
4223566917
commit
8face6e666
11 changed files with 19 additions and 57 deletions
|
@ -41,7 +41,7 @@
|
|||
<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="UnableToStartMissingDependencies">Mesen must download and install the Microsoft Visual Studio 2015 runtime to continue. Would you like to automatically download the runtime from Microsoft's website and install it now?"</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>
|
||||
<Message ID="UpdateDownloadFailed">Download failed - the file appears to be corrupted. Please visit the Mesen website to download the latest version manually.</Message>
|
||||
|
|
|
@ -511,7 +511,7 @@
|
|||
<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="UnableToStartMissingDependencies">Mesen debe descargar e instalar el paquete redistribuible de Visual C++ de Microsoft Visual Studio 2015 antes de poder continuar. ¿Le gustaría instalarlo ahora?</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 no puede iniciar 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>
|
||||
<Message ID="UpdateDownloadFailed">Error en la descarga - el archivo parece estar dañado. Por favor, visite el sitio web de Mesen para descargar manualmente la versión más reciente.</Message>
|
||||
|
|
|
@ -525,7 +525,7 @@
|
|||
<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="UnableToStartMissingDependencies">Mesen doit télécharger et installer le package Redistribuable Visual C++ pour Microsoft Visual Studio 2015 avant de pouvoir continuer. Voulez-vous l'installer maintenant?"</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>
|
||||
<Message ID="UpdateDownloadFailed">Le téléchargement a échoué - le fichier semble être corrompu. Veuillez visiter le site de Mesen pour télécharger manuellement la version la plus récente.</Message>
|
||||
|
|
|
@ -507,7 +507,7 @@
|
|||
<Message ID="PatchAndReset">IPSパッチを当てて、ゲームをリセットしますか?</Message>
|
||||
<Message ID="SelectRomIps">IPSファイルに合うゲームファイルを選んでください。</Message>
|
||||
<Message ID="UnableToDownload">ファイルをダウンロードできませんでした。ネット接続を確認してから、再試行してください。

エラーの詳細:</Message>
|
||||
<Message ID="UnableToStartMissingDependencies">MesenはMicrosoft Visual Studio 2015のVisual C++再頒布可能パッケージなしではゲームをロードできません。 パッケージを自動的にMicrosoftのサーバからダウンロードして、インストールしますか?</Message>
|
||||
<Message ID="UnableToStartMissingDependencies">MesenはMesenCore.dllをロード出来なかったため、起動できませんでした。</Message>
|
||||
<Message ID="UnableToStartMissingFiles">必要なファイルはロード出来なかったため、Mesenは起動できません。

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

エラーの詳細:
{0}</Message>
|
||||
<Message ID="UpdateDownloadFailed">ダウンロードは失敗しました。 Mesenのサイトに行って、新しいバージョンをダウンロードしてください。</Message>
|
||||
|
|
|
@ -511,7 +511,7 @@
|
|||
<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="UnableToStartMissingDependencies">Mesen deve baixar e instalar o pacote redistribuível de Visual C++ de Microsoft Visual Studio 2015 antes de poder continuar. Gostaria de instalar agora?</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 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>
|
||||
<Message ID="UpdateDownloadFailed">Erro ao baixar - o arquivo parece estar danificado. Por favor, visite o site de Mesen para baixar manualmente a versão mais recente.</Message>
|
||||
|
|
|
@ -516,7 +516,7 @@
|
|||
<Message ID="PatchAndReset">Пропатчить и сбросить текущую игру?</Message>
|
||||
<Message ID="SelectRomIps">Пожалуйста выберите ROM соответствующий IPS.</Message>
|
||||
<Message ID="UnableToDownload">Невозможно загрузить файл. Проверьте ваше соединение с интернетом и попробуйте ещё раз.

Подробно:</Message>
|
||||
<Message ID="UnableToStartMissingDependencies">Mesen должен загрузить и установить Microsoft Visual Studio 2015 runtime чтобы продолжить. Хотите автоматически загрузить Microsoft Visual Studio 2015 runtime с сайта Microsoft и установить его сейчас?"</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>
|
||||
<Message ID="UpdateDownloadFailed">Загрузка не удалась - файл повреждён. Пожалуйста посетите сайт Mesen и загрузите последнюю версию вручную.</Message>
|
||||
|
|
|
@ -515,7 +515,7 @@
|
|||
<Message ID="PatchAndReset">Пропатчити і скинути поточну гру?</Message>
|
||||
<Message ID="SelectRomIps">Будь ласка, оберіть ROM відповідний IPS.</Message>
|
||||
<Message ID="UnableToDownload">Неможливо завантажити файл. Перевірте ваше з'єднання з інтернетом і спробуйте ще раз.

Детально:</Message>
|
||||
<Message ID="UnableToStartMissingDependencies">Mesen повинен завантажити та встановити Microsoft Visual Studio 2015 runtime щоб продовжити. Хочете автоматично завантажити Microsoft Visual Studio 2015 runtime з сайту Microsoft і встановити його зараз?"</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>
|
||||
<Message ID="UpdateDownloadFailed">Завантаження не вдалася - файл пошкоджений. Будь ласка відвідайте сайт Mesen і завантажте останню версію вручну.</Message>
|
||||
|
|
|
@ -41,7 +41,7 @@ namespace Mesen.GUI.Forms
|
|||
|
||||
private void btnUpdate_Click(object sender, EventArgs e)
|
||||
{
|
||||
string destFilePath = Process.GetCurrentProcess().MainModule.FileName;
|
||||
string destFilePath = System.Reflection.Assembly.GetEntryAssembly().Location;
|
||||
string srcFilePath = Path.Combine(ConfigManager.DownloadFolder, "Mesen." + lblLatestVersionString.Text + ".exe");
|
||||
string backupFilePath = Path.Combine(ConfigManager.BackupFolder, "Mesen." + lblCurrentVersionString.Text + ".exe");
|
||||
string updateHelper = Path.Combine(ConfigManager.HomeFolder, "MesenUpdater.exe");
|
||||
|
@ -54,7 +54,11 @@ namespace Mesen.GUI.Forms
|
|||
if(frmDownload.ShowDialog() == DialogResult.OK) {
|
||||
FileInfo fileInfo = new FileInfo(srcFilePath);
|
||||
if(fileInfo.Length > 0 && GetSha1Hash(srcFilePath) == _fileHash) {
|
||||
Process.Start(updateHelper, string.Format("\"{0}\" \"{1}\" \"{2}\"", srcFilePath, destFilePath, backupFilePath));
|
||||
if(Program.IsMono) {
|
||||
Process.Start("mono", string.Format("\"{0}\" \"{1}\" \"{2}\" \"{3}\"", updateHelper, srcFilePath, destFilePath, backupFilePath));
|
||||
} else {
|
||||
Process.Start(updateHelper, string.Format("\"{0}\" \"{1}\" \"{2}\"", srcFilePath, destFilePath, backupFilePath));
|
||||
}
|
||||
} else {
|
||||
//Download failed, mismatching hashes
|
||||
MesenMsgBox.Show("UpdateDownloadFailed", MessageBoxButtons.OK, MessageBoxIcon.Error);
|
||||
|
|
|
@ -24,53 +24,9 @@ namespace Mesen.GUI
|
|||
if(!File.Exists("MesenCore.dll") && !File.Exists("libMesenCore.dll")) {
|
||||
MesenMsgBox.Show("UnableToStartMissingFiles", MessageBoxButtons.OK, MessageBoxIcon.Error);
|
||||
} else {
|
||||
if(MesenMsgBox.Show("UnableToStartMissingDependencies", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes) {
|
||||
if(!RuntimeChecker.DownloadRuntime()) {
|
||||
MesenMsgBox.Show("CouldNotInstallRuntime", MessageBoxButtons.OK, MessageBoxIcon.Error);
|
||||
} else {
|
||||
Process.Start(Process.GetCurrentProcess().MainModule.FileName);
|
||||
}
|
||||
}
|
||||
MesenMsgBox.Show("UnableToStartMissingDependencies", MessageBoxButtons.OK, MessageBoxIcon.Error);
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
private static bool DownloadRuntime()
|
||||
{
|
||||
string link = string.Empty;
|
||||
if(IntPtr.Size == 4) {
|
||||
//x86
|
||||
link = "http://download.microsoft.com/download/C/E/5/CE514EAE-78A8-4381-86E8-29108D78DBD4/VC_redist.x86.exe";
|
||||
} else {
|
||||
//x64
|
||||
link = "http://download.microsoft.com/download/C/E/5/CE514EAE-78A8-4381-86E8-29108D78DBD4/VC_redist.x64.exe";
|
||||
}
|
||||
|
||||
string tempFilename = Path.GetTempPath() + "Mesen_VsRuntime2015.exe";
|
||||
|
||||
try {
|
||||
frmDownloadProgress frm = new frmDownloadProgress(link, tempFilename);
|
||||
|
||||
if(frm.ShowDialog() == DialogResult.OK) {
|
||||
Process installer = Process.Start(tempFilename, "/passive /norestart");
|
||||
installer.WaitForExit();
|
||||
if(installer.ExitCode != 0) {
|
||||
MesenMsgBox.Show("UnexpectedError", MessageBoxButtons.OK, MessageBoxIcon.Error, installer.ExitCode.ToString());
|
||||
return false;
|
||||
} else {
|
||||
//Runtime should now be installed, try to launch Mesen again
|
||||
return true;
|
||||
}
|
||||
}
|
||||
} catch(Exception e) {
|
||||
MesenMsgBox.Show("UnexpectedError", MessageBoxButtons.OK, MessageBoxIcon.Error, e.ToString());
|
||||
} finally {
|
||||
try {
|
||||
File.Delete(tempFilename);
|
||||
} catch { }
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -38,7 +38,7 @@ namespace MesenUpdater
|
|||
if(!isAdmin) {
|
||||
ProcessStartInfo proc = new ProcessStartInfo();
|
||||
proc.WindowStyle = ProcessWindowStyle.Normal;
|
||||
proc.FileName = Process.GetCurrentProcess().MainModule.FileName;
|
||||
proc.FileName = System.Reflection.Assembly.GetEntryAssembly().Location;
|
||||
proc.Arguments = string.Format("\"{0}\" \"{1}\" \"{2}\" admin", srcFile, destFile, backupDestFile);
|
||||
proc.UseShellExecute = true;
|
||||
proc.Verb = "runas";
|
||||
|
|
6
makefile
6
makefile
|
@ -38,10 +38,12 @@ all: ui
|
|||
|
||||
ui: InteropDLL/$(OBJFOLDER)/$(SHAREDLIB)
|
||||
mkdir -p $(RELEASEFOLDER)/Dependencies
|
||||
rm -f $(RELEASEFOLDER)/Dependencies/*
|
||||
rm -f $(RELEASEFOLDER)/Dependencies/*
|
||||
cd UpdateHelper && xbuild /property:Configuration="Release" /property:Platform="AnyCPU"
|
||||
cp "bin/Any CPU/Release/MesenUpdater.exe" $(RELEASEFOLDER)/Dependencies/
|
||||
cp GUI.NET/Dependencies/* $(RELEASEFOLDER)/Dependencies/
|
||||
cp InteropDLL/$(OBJFOLDER)/$(SHAREDLIB) $(RELEASEFOLDER)/Dependencies/$(SHAREDLIB)
|
||||
cd $(RELEASEFOLDER)/Dependencies && zip ../Dependencies.zip *
|
||||
cd $(RELEASEFOLDER)/Dependencies && zip ../Dependencies.zip *
|
||||
cd GUI.NET && xbuild /property:Configuration="Release" /property:Platform="$(MESENPLATFORM)" /property:PreBuildEvent="" /property:DefineConstants="HIDETESTMENU"
|
||||
|
||||
core: InteropDLL/$(OBJFOLDER)/$(SHAREDLIB)
|
||||
|
|
Loading…
Add table
Reference in a new issue