mirror of
				https://github.com/PabloMK7/citra.git
				synced 2025-10-31 05:40:04 +00:00 
			
		
		
		
	qt: Support updating an installed app image. (#6915)
This commit is contained in:
		
							parent
							
								
									a94297922b
								
							
						
					
					
						commit
						edf157200d
					
				
					 2 changed files with 19 additions and 5 deletions
				
			
		|  | @ -14,6 +14,7 @@ | |||
| #include "citra_qt/uisettings.h" | ||||
| #include "citra_qt/updater/updater.h" | ||||
| #include "citra_qt/updater/updater_p.h" | ||||
| #include "common/file_util.h" | ||||
| #include "common/logging/log.h" | ||||
| 
 | ||||
| #ifdef Q_OS_OSX | ||||
|  | @ -110,9 +111,22 @@ QString UpdaterPrivate::ToSystemExe(QString base_path) { | |||
| #endif | ||||
| } | ||||
| 
 | ||||
| QFileInfo UpdaterPrivate::GetMaintenanceTool() const { | ||||
| #if defined(Q_OS_UNIX) && !defined(Q_OS_OSX) | ||||
|     const auto appimage_path = QProcessEnvironment::systemEnvironment() | ||||
|                                    .value(QStringLiteral("APPIMAGE"), {}) | ||||
|                                    .toStdString(); | ||||
|     if (!appimage_path.empty()) { | ||||
|         const auto appimage_dir = FileUtil::GetParentPath(appimage_path); | ||||
|         LOG_DEBUG(Frontend, "Detected app image directory: {}", appimage_dir); | ||||
|         return QFileInfo(QString::fromStdString(std::string(appimage_dir)), tool_path); | ||||
|     } | ||||
| #endif | ||||
|     return QFileInfo(QCoreApplication::applicationDirPath(), tool_path); | ||||
| } | ||||
| 
 | ||||
| bool UpdaterPrivate::HasUpdater() const { | ||||
|     QFileInfo tool_info(QCoreApplication::applicationDirPath(), tool_path); | ||||
|     return tool_info.exists(); | ||||
|     return GetMaintenanceTool().exists(); | ||||
| } | ||||
| 
 | ||||
| bool UpdaterPrivate::StartUpdateCheck() { | ||||
|  | @ -125,9 +139,8 @@ bool UpdaterPrivate::StartUpdateCheck() { | |||
|     last_error_code = EXIT_SUCCESS; | ||||
|     last_error_log.clear(); | ||||
| 
 | ||||
|     QFileInfo tool_info(QCoreApplication::applicationDirPath(), tool_path); | ||||
|     main_process = new QProcess(this); | ||||
|     main_process->setProgram(tool_info.absoluteFilePath()); | ||||
|     main_process->setProgram(GetMaintenanceTool().absoluteFilePath()); | ||||
|     main_process->setArguments({QStringLiteral("--checkupdates"), QStringLiteral("-v")}); | ||||
| 
 | ||||
|     connect(main_process, qOverload<int, QProcess::ExitStatus>(&QProcess::finished), this, | ||||
|  | @ -271,7 +284,7 @@ void UpdaterPrivate::LaunchWithArguments(const QStringList& args) { | |||
|         return; | ||||
|     } | ||||
| 
 | ||||
|     QFileInfo tool_info(QCoreApplication::applicationDirPath(), tool_path); | ||||
|     QFileInfo tool_info = GetMaintenanceTool(); | ||||
| 
 | ||||
|     if (!QProcess::startDetached(tool_info.absoluteFilePath(), args, tool_info.absolutePath())) { | ||||
|         LOG_WARNING(Frontend, "Unable to start program {}", | ||||
|  |  | |||
|  | @ -26,6 +26,7 @@ public: | |||
| 
 | ||||
|     static QString ToSystemExe(QString base_path); | ||||
| 
 | ||||
|     QFileInfo GetMaintenanceTool() const; | ||||
|     bool HasUpdater() const; | ||||
| 
 | ||||
|     bool StartUpdateCheck(); | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue