Merge pull request #3914 from jamierocks/mch-check-checksums
NOISSUE Cache modpacks.ch files and check their checksums
This commit is contained in:
commit
417994735a
@ -273,13 +273,13 @@ QList<QString> JavaUtils::FindJavaPaths()
|
|||||||
QList<JavaInstallPtr> ZULU64s = this->FindJavaFromRegistryKey(
|
QList<JavaInstallPtr> ZULU64s = this->FindJavaFromRegistryKey(
|
||||||
KEY_WOW64_64KEY, "SOFTWARE\\Azul Systems\\Zulu", "InstallationPath");
|
KEY_WOW64_64KEY, "SOFTWARE\\Azul Systems\\Zulu", "InstallationPath");
|
||||||
QList<JavaInstallPtr> ZULU32s = this->FindJavaFromRegistryKey(
|
QList<JavaInstallPtr> ZULU32s = this->FindJavaFromRegistryKey(
|
||||||
KEY_WOW64_64KEY, "SOFTWARE\\Azul Systems\\Zulu", "InstallationPath");
|
KEY_WOW64_32KEY, "SOFTWARE\\Azul Systems\\Zulu", "InstallationPath");
|
||||||
|
|
||||||
// BellSoft Liberica
|
// BellSoft Liberica
|
||||||
QList<JavaInstallPtr> LIBERICA64s = this->FindJavaFromRegistryKey(
|
QList<JavaInstallPtr> LIBERICA64s = this->FindJavaFromRegistryKey(
|
||||||
KEY_WOW64_64KEY, "SOFTWARE\\BellSoft\\Liberica", "InstallationPath");
|
KEY_WOW64_64KEY, "SOFTWARE\\BellSoft\\Liberica", "InstallationPath");
|
||||||
QList<JavaInstallPtr> LIBERICA32s = this->FindJavaFromRegistryKey(
|
QList<JavaInstallPtr> LIBERICA32s = this->FindJavaFromRegistryKey(
|
||||||
KEY_WOW64_64KEY, "SOFTWARE\\BellSoft\\Liberica", "InstallationPath");
|
KEY_WOW64_32KEY, "SOFTWARE\\BellSoft\\Liberica", "InstallationPath");
|
||||||
|
|
||||||
// List x64 before x86
|
// List x64 before x86
|
||||||
java_candidates.append(JRE64s);
|
java_candidates.append(JRE64s);
|
||||||
|
@ -1,10 +1,12 @@
|
|||||||
#include "FTBPackInstallTask.h"
|
#include "FTBPackInstallTask.h"
|
||||||
|
|
||||||
#include "BuildConfig.h"
|
#include "BuildConfig.h"
|
||||||
|
#include "Env.h"
|
||||||
#include "FileSystem.h"
|
#include "FileSystem.h"
|
||||||
#include "Json.h"
|
#include "Json.h"
|
||||||
#include "minecraft/MinecraftInstance.h"
|
#include "minecraft/MinecraftInstance.h"
|
||||||
#include "minecraft/PackProfile.h"
|
#include "minecraft/PackProfile.h"
|
||||||
|
#include "net/ChecksumValidator.h"
|
||||||
#include "settings/INISettingsObject.h"
|
#include "settings/INISettingsObject.h"
|
||||||
|
|
||||||
namespace ModpacksCH {
|
namespace ModpacksCH {
|
||||||
@ -93,11 +95,23 @@ void PackInstallTask::downloadPack()
|
|||||||
for(auto file : m_version.files) {
|
for(auto file : m_version.files) {
|
||||||
if(file.serverOnly) continue;
|
if(file.serverOnly) continue;
|
||||||
|
|
||||||
|
QFileInfo fileName(file.name);
|
||||||
|
auto cacheName = fileName.completeBaseName() + "-" + file.sha1 + "." + fileName.suffix();
|
||||||
|
|
||||||
|
auto entry = ENV.metacache()->resolveEntry("ModpacksCHPacks", cacheName);
|
||||||
|
entry->setStale(true);
|
||||||
|
|
||||||
auto relpath = FS::PathCombine("minecraft", file.path, file.name);
|
auto relpath = FS::PathCombine("minecraft", file.path, file.name);
|
||||||
auto path = FS::PathCombine(m_stagingPath, relpath);
|
auto path = FS::PathCombine(m_stagingPath, relpath);
|
||||||
|
|
||||||
qDebug() << "Will download" << file.url << "to" << path;
|
qDebug() << "Will download" << file.url << "to" << path;
|
||||||
auto dl = Net::Download::makeFile(file.url, path);
|
filesToCopy[entry->getFullPath()] = path;
|
||||||
|
|
||||||
|
auto dl = Net::Download::makeCached(file.url, entry);
|
||||||
|
if (!file.sha1.isEmpty()) {
|
||||||
|
auto rawSha1 = QByteArray::fromHex(file.sha1.toLatin1());
|
||||||
|
dl->addValidator(new Net::ChecksumValidator(QCryptographicHash::Sha1, rawSha1));
|
||||||
|
}
|
||||||
jobPtr->addNetAction(dl);
|
jobPtr->addNetAction(dl);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -121,6 +135,19 @@ void PackInstallTask::downloadPack()
|
|||||||
|
|
||||||
void PackInstallTask::install()
|
void PackInstallTask::install()
|
||||||
{
|
{
|
||||||
|
setStatus(tr("Copying modpack files"));
|
||||||
|
|
||||||
|
for (auto iter = filesToCopy.begin(); iter != filesToCopy.end(); iter++) {
|
||||||
|
auto &from = iter.key();
|
||||||
|
auto &to = iter.value();
|
||||||
|
FS::copy fileCopyOperation(from, to);
|
||||||
|
if(!fileCopyOperation()) {
|
||||||
|
qWarning() << "Failed to copy" << from << "to" << to;
|
||||||
|
emitFailed(tr("Failed to copy files"));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
setStatus(tr("Installing modpack"));
|
setStatus(tr("Installing modpack"));
|
||||||
|
|
||||||
auto instanceConfigPath = FS::PathCombine(m_stagingPath, "instance.cfg");
|
auto instanceConfigPath = FS::PathCombine(m_stagingPath, "instance.cfg");
|
||||||
|
@ -37,6 +37,8 @@ private:
|
|||||||
QString m_version_name;
|
QString m_version_name;
|
||||||
Version m_version;
|
Version m_version;
|
||||||
|
|
||||||
|
QMap<QString, QString> filesToCopy;
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user