| 775 | } |
| 776 | |
| 777 | void BoxedContainer::installNextTinyCorePackage(WaitDlg* dlg, std::vector<BString> packages) { |
| 778 | if (packages.size() == 0) { |
| 779 | return; |
| 780 | } |
| 781 | BString package = packages.back(); |
| 782 | packages.pop_back(); |
| 783 | GlobalSettings::startUpArgs = StartUpArgs(); |
| 784 | this->launch(); |
| 785 | if (package.endsWith(".tcz")) { |
| 786 | GlobalSettings::startUpArgs.setWorkingDir(B("")); |
| 787 | GlobalSettings::startUpArgs.addArg(B("/usr/local/bin/unsquashfs")); |
| 788 | GlobalSettings::startUpArgs.addArg(B("-f")); |
| 789 | GlobalSettings::startUpArgs.addArg(B("-d")); |
| 790 | GlobalSettings::startUpArgs.addArg(B("/")); |
| 791 | GlobalSettings::startUpArgs.addArg("/tcCache/" + package); |
| 792 | GlobalSettings::startUpArgs.mountInfo.push_back(MountInfo(B("/tcCache"), getCacheFolder(), false)); |
| 793 | dlg->addSubLabel("Extracting " + package, 5); |
| 794 | installingPackages.push_back(package); |
| 795 | } else if (package.length()>0) { |
| 796 | GlobalSettings::startUpArgs.setWorkingDir(B("/usr/local/sbin")); |
| 797 | GlobalSettings::startUpArgs.addArg(package); |
| 798 | dlg->addSubLabel("Running post install " + Fs::getFileNameFromPath(package), 5); |
| 799 | } else { |
| 800 | BString sep = BString::pathSeparator(); |
| 801 | BString installed = GlobalSettings::getRootFolder(this).stringByApppendingPath("usr") + sep + "local" + sep + "tce.installed"; |
| 802 | Fs::iterateAllNativeFiles(installed, false, false, [this, &packages](BString filePath, bool isDir) { |
| 803 | BString fileName = Fs::getFileNameFromNativePath(filePath); |
| 804 | if (vectorContainsIgnoreCase(installingPackages, fileName + ".tcz")) { |
| 805 | packages.push_back("/usr/local/tce.installed/" + fileName); |
| 806 | } |
| 807 | return 0; |
| 808 | }); |
| 809 | GlobalSettings::startUpArgs.setWorkingDir(B("/sbin")); |
| 810 | GlobalSettings::startUpArgs.addArg(B("/sbin/ldconfig")); |
| 811 | dlg->addSubLabel(B("Running ldconfig"), 5); |
| 812 | } |
| 813 | GlobalSettings::startUpArgs.readyToLaunch = true; |
| 814 | GlobalSettings::startUpArgs.userId = 0; |
| 815 | #ifndef BOXEDWINE_UI_LAUNCH_IN_PROCESS |
| 816 | GlobalSettings::startUpArgs.ttyPrepend = true; |
| 817 | #endif |
| 818 | if (packages.size()) { |
| 819 | GlobalSettings::keepUIRunning = [dlg, packages, this]() { |
| 820 | runOnMainUI([dlg, packages, this]() { |
| 821 | installNextTinyCorePackage(dlg, packages); |
| 822 | return false; |
| 823 | }); |
| 824 | }; |
| 825 | } else { |
| 826 | installedPackages.insert(installedPackages.end(), installingPackages.begin(), installingPackages.end()); |
| 827 | installingPackages.clear(); |
| 828 | saveInstalledPackageList(); |
| 829 | BString containerPath = dirPath; |
| 830 | GlobalSettings::startUpArgs.runOnRestartUI = [containerPath]() { |
| 831 | gotoView(VIEW_CONTAINERS, containerPath); |
| 832 | }; |
| 833 | } |
| 834 | } |
nothing calls this directly
no test coverage detected