@ -2101,6 +2101,7 @@ void GMainWindow::OnMenuInstallToNAND() {
QStringList new_files { } ; // Newly installed files that do not yet exist in the NAND
QStringList overwritten_files { } ; // Files that overwrote those existing in the NAND
QStringList failed_files { } ; // Files that failed to install due to errors
bool detected_base_install { } ; // Whether a base game was attempted to be installed
ui . action_Install_File_NAND - > setEnabled ( false ) ;
@ -2126,6 +2127,7 @@ void GMainWindow::OnMenuInstallToNAND() {
while ( ! future . isFinished ( ) ) {
QCoreApplication : : processEvents ( ) ;
std : : this_thread : : sleep_for ( std : : chrono : : milliseconds ( 1 ) ) ;
}
result = future . result ( ) ;
@ -2146,6 +2148,10 @@ void GMainWindow::OnMenuInstallToNAND() {
case InstallResult : : Failure :
failed_files . append ( QFileInfo ( file ) . fileName ( ) ) ;
break ;
case InstallResult : : BaseInstallAttempted :
failed_files . append ( QFileInfo ( file ) . fileName ( ) ) ;
detected_base_install = true ;
break ;
}
- - remaining ;
@ -2153,6 +2159,13 @@ void GMainWindow::OnMenuInstallToNAND() {
install_progress - > close ( ) ;
if ( detected_base_install ) {
QMessageBox : : warning (
this , tr ( " Install Results " ) ,
tr ( " To avoid possible conflicts, we discourage users from installing base games to the "
" NAND. \n Please, only use this feature to install updates and DLC. " ) ) ;
}
const QString install_results =
( new_files . isEmpty ( ) ? QString { }
: tr ( " %n file(s) were newly installed \n " , " " , new_files . size ( ) ) ) +
@ -2214,11 +2227,14 @@ InstallResult GMainWindow::InstallNSPXCI(const QString& filename) {
const auto res =
Core : : System : : GetInstance ( ) . GetFileSystemController ( ) . GetUserNANDContents ( ) - > InstallEntry (
* nsp , true , qt_raw_copy ) ;
if ( res = = FileSys : : InstallResult : : Success ) {
switch ( res ) {
case FileSys : : InstallResult : : Success :
return InstallResult : : Success ;
} else if ( res = = FileSys : : InstallResult : : OverwriteExisting ) {
case FileSys : : InstallResult : : OverwriteExisting :
return InstallResult : : Overwrite ;
} else {
case FileSys : : InstallResult : : ErrorBaseInstall :
return InstallResult : : BaseInstallAttempted ;
default :
return InstallResult : : Failure ;
}
}