|
|
|
@ -3113,10 +3113,9 @@ void GMainWindow::OnMenuInstallToNAND() {
|
|
|
|
|
QFuture<InstallResult> future;
|
|
|
|
|
InstallResult result;
|
|
|
|
|
|
|
|
|
|
if (file.endsWith(QStringLiteral("xci"), Qt::CaseInsensitive) ||
|
|
|
|
|
file.endsWith(QStringLiteral("nsp"), Qt::CaseInsensitive)) {
|
|
|
|
|
if (file.endsWith(QStringLiteral("nsp"), Qt::CaseInsensitive)) {
|
|
|
|
|
|
|
|
|
|
future = QtConcurrent::run([this, &file] { return InstallNSPXCI(file); });
|
|
|
|
|
future = QtConcurrent::run([this, &file] { return InstallNSP(file); });
|
|
|
|
|
|
|
|
|
|
while (!future.isFinished()) {
|
|
|
|
|
QCoreApplication::processEvents();
|
|
|
|
@ -3175,7 +3174,7 @@ void GMainWindow::OnMenuInstallToNAND() {
|
|
|
|
|
ui->action_Install_File_NAND->setEnabled(true);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
InstallResult GMainWindow::InstallNSPXCI(const QString& filename) {
|
|
|
|
|
InstallResult GMainWindow::InstallNSP(const QString& filename) {
|
|
|
|
|
const auto qt_raw_copy = [this](const FileSys::VirtualFile& src,
|
|
|
|
|
const FileSys::VirtualFile& dest, std::size_t block_size) {
|
|
|
|
|
if (src == nullptr || dest == nullptr) {
|
|
|
|
@ -3209,9 +3208,7 @@ InstallResult GMainWindow::InstallNSPXCI(const QString& filename) {
|
|
|
|
|
return InstallResult::Failure;
|
|
|
|
|
}
|
|
|
|
|
} else {
|
|
|
|
|
const auto xci = std::make_shared<FileSys::XCI>(
|
|
|
|
|
vfs->OpenFile(filename.toStdString(), FileSys::Mode::Read));
|
|
|
|
|
nsp = xci->GetSecurePartitionNSP();
|
|
|
|
|
return InstallResult::Failure;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (nsp->GetStatus() != Loader::ResultStatus::Success) {
|
|
|
|
|