mirror of
https://github.com/Auties00/Reboot-Launcher.git
synced 2026-01-13 11:12:23 +01:00
10.0.8
This commit is contained in:
@@ -514,23 +514,38 @@ Future<bool> downloadDependency(InjectableDll dll, String outputPath) async {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
Future<void> downloadRebootDll(File file, String url, bool aboveS20) async {
|
Future<bool> downloadRebootDll(File file, String url, bool aboveS20) async {
|
||||||
Directory? outputDir;
|
Directory? outputDir;
|
||||||
try {
|
try {
|
||||||
var response = await http.get(Uri.parse(url));
|
var response = await http.get(Uri.parse(url));
|
||||||
if(response.statusCode != 200) {
|
if(response.statusCode != 200) {
|
||||||
response = await http.get(Uri.parse(aboveS20 ? _kRebootAboveS20FallbackDownloadUrl : _kRebootBelowS20FallbackDownloadUrl));
|
response = await http.get(Uri.parse(aboveS20 ? _kRebootAboveS20FallbackDownloadUrl : _kRebootBelowS20FallbackDownloadUrl));
|
||||||
if(response.statusCode != 200) {
|
if(response.statusCode != 200) {
|
||||||
throw Exception("status code ${response.statusCode}");
|
throw "status code ${response.statusCode}";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
outputDir = await installationDirectory.createTemp("reboot_out");
|
outputDir = await installationDirectory.createTemp("reboot_out");
|
||||||
final tempZip = File("${outputDir.path}\\reboot.zip");
|
final tempZip = File("${outputDir.path}\\reboot.zip");
|
||||||
await tempZip.writeAsBytes(response.bodyBytes, flush: true);
|
|
||||||
|
try {
|
||||||
|
await tempZip.writeAsBytes(response.bodyBytes, flush: true); // Write reboot.zip to disk
|
||||||
|
|
||||||
|
await tempZip.readAsBytes(); // Check implicitly if antivirus doesn't like reboot
|
||||||
|
|
||||||
await extractFileToDisk(tempZip.path, outputDir.path);
|
await extractFileToDisk(tempZip.path, outputDir.path);
|
||||||
final rebootDll = File(outputDir.listSync().firstWhere((element) => path.extension(element.path) == ".dll").path);
|
|
||||||
await file.writeAsBytes(await rebootDll.readAsBytes(), flush: true);
|
final rebootDll = outputDir.listSync()
|
||||||
|
.firstWhere((element) => path.extension(element.path) == ".dll") as File;
|
||||||
|
final rebootDllSource = await rebootDll.readAsBytes();
|
||||||
|
await file.writeAsBytes(rebootDllSource, flush: true);
|
||||||
|
|
||||||
|
await file.readAsBytes(); // Check implicitly if antivirus doesn't like reboot
|
||||||
|
|
||||||
|
return true;
|
||||||
|
} catch(_) {
|
||||||
|
return false; // Anti virus probably flagged reboot
|
||||||
|
}
|
||||||
} finally{
|
} finally{
|
||||||
if(outputDir != null) {
|
if(outputDir != null) {
|
||||||
delete(outputDir);
|
delete(outputDir);
|
||||||
|
|||||||
@@ -105,14 +105,25 @@ class DllController extends GetxController {
|
|||||||
duration: null
|
duration: null
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
await Future.wait(
|
final result = await Future.wait(
|
||||||
[
|
[
|
||||||
downloadRebootDll(rebootBeforeS20DllFile, beforeS20Mirror.text, false),
|
downloadRebootDll(rebootBeforeS20DllFile, beforeS20Mirror.text, false),
|
||||||
downloadRebootDll(rebootAboveS20DllFile, aboveS20Mirror.text, true),
|
downloadRebootDll(rebootAboveS20DllFile, aboveS20Mirror.text, true),
|
||||||
Future.delayed(const Duration(seconds: 1))
|
Future.delayed(const Duration(seconds: 1))
|
||||||
|
.then((_) => true)
|
||||||
],
|
],
|
||||||
eagerError: false
|
eagerError: false
|
||||||
|
).then((values) => values.reduce((first, second) => first && second));
|
||||||
|
if(!result) {
|
||||||
|
status.value = UpdateStatus.error;
|
||||||
|
showRebootInfoBar(
|
||||||
|
translations.downloadDllAntivirus(antiVirusName ?? defaultAntiVirusName, "reboot"),
|
||||||
|
duration: infoBarLongDuration,
|
||||||
|
severity: InfoBarSeverity.error
|
||||||
);
|
);
|
||||||
|
infoBarEntry?.close();
|
||||||
|
return false;
|
||||||
|
}
|
||||||
timestamp.value = DateTime.now().millisecondsSinceEpoch;
|
timestamp.value = DateTime.now().millisecondsSinceEpoch;
|
||||||
status.value = UpdateStatus.success;
|
status.value = UpdateStatus.success;
|
||||||
infoBarEntry?.close();
|
infoBarEntry?.close();
|
||||||
|
|||||||
Reference in New Issue
Block a user