mirror of
https://github.com/Auties00/Reboot-Launcher.git
synced 2026-01-14 03:32:23 +01:00
Reboot v3
This commit is contained in:
@@ -19,32 +19,6 @@ bool get isWin11 {
|
||||
return intBuild != null && intBuild > 22000;
|
||||
}
|
||||
|
||||
Future<File> loadBinary(String binary, bool safe) async{
|
||||
var safeBinary = File("${safeBinariesDirectory.path}\\$binary");
|
||||
if(await safeBinary.exists()){
|
||||
return safeBinary;
|
||||
}
|
||||
|
||||
var internal = _locateInternalBinary(binary);
|
||||
if(!safe){
|
||||
return internal;
|
||||
}
|
||||
|
||||
if(await internal.exists()){
|
||||
await internal.copy(safeBinary.path);
|
||||
}
|
||||
|
||||
return safeBinary;
|
||||
}
|
||||
|
||||
File _locateInternalBinary(String binary) =>
|
||||
File("${internalAssetsDirectory.path}\\binaries\\$binary");
|
||||
|
||||
Future<void> resetWinNat() async {
|
||||
var binary = await loadBinary("winnat.bat", true);
|
||||
await runElevated(binary.path, "");
|
||||
}
|
||||
|
||||
Future<bool> runElevated(String executable, String args) async {
|
||||
var shellInput = calloc<SHELLEXECUTEINFO>();
|
||||
shellInput.ref.lpFile = executable.toNativeUtf16();
|
||||
@@ -57,57 +31,30 @@ Future<bool> runElevated(String executable, String args) async {
|
||||
return shellResult == 1;
|
||||
}
|
||||
|
||||
Directory get internalAssetsDirectory =>
|
||||
Directory("${File(Platform.resolvedExecutable).parent.path}\\data\\flutter_assets\\assets");
|
||||
Directory get installationDirectory =>
|
||||
File(Platform.resolvedExecutable).parent;
|
||||
|
||||
Directory get logsDirectory =>
|
||||
Directory("${installationDirectory.path}\\logs");
|
||||
|
||||
Directory get assetsDirectory =>
|
||||
Directory("${installationDirectory.path}\\data\\flutter_assets\\assets");
|
||||
|
||||
Directory get tempDirectory =>
|
||||
Directory("${Platform.environment["Temp"]}");
|
||||
Directory(Platform.environment["Temp"]!);
|
||||
|
||||
Directory get safeBinariesDirectory =>
|
||||
Directory("${Platform.environment["UserProfile"]}\\.reboot_launcher");
|
||||
|
||||
Directory get embeddedBackendDirectory =>
|
||||
Directory("${safeBinariesDirectory.path}\\backend-lawin");
|
||||
|
||||
File loadEmbedded(String file) {
|
||||
var safeBinary = File("${embeddedBackendDirectory.path}\\$file");
|
||||
if(safeBinary.existsSync()){
|
||||
return safeBinary;
|
||||
Future<bool> delete(FileSystemEntity file) async {
|
||||
try {
|
||||
await file.delete(recursive: true);
|
||||
return true;
|
||||
}catch(_){
|
||||
return Future.delayed(const Duration(seconds: 5)).then((value) async {
|
||||
try {
|
||||
await file.delete(recursive: true);
|
||||
return true;
|
||||
}catch(_){
|
||||
return false;
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
safeBinary.parent.createSync(recursive: true);
|
||||
var internal = File("${internalAssetsDirectory.path}\\$file");
|
||||
if(internal.existsSync()) {
|
||||
internal.copySync(safeBinary.path);
|
||||
}
|
||||
|
||||
return safeBinary;
|
||||
}
|
||||
|
||||
Directory loadEmbeddedDirectory(String directory) {
|
||||
var safeBinary = Directory("${embeddedBackendDirectory.path}\\$directory");
|
||||
safeBinary.parent.createSync(recursive: true);
|
||||
var internal = Directory("${internalAssetsDirectory.path}\\$directory");
|
||||
_copyFolder(internal, safeBinary);
|
||||
return safeBinary;
|
||||
}
|
||||
|
||||
void _copyFolder(Directory dir1, Directory dir2) {
|
||||
if(!dir1.existsSync()){
|
||||
return;
|
||||
}
|
||||
|
||||
if (!dir2.existsSync()) {
|
||||
dir2.createSync(recursive: true);
|
||||
}
|
||||
|
||||
dir1.listSync().forEach((element) {
|
||||
var newPath = "${dir2.path}/${path.basename(element.path)}";
|
||||
if (element is File) {
|
||||
var newFile = File(newPath);
|
||||
newFile.writeAsBytesSync(element.readAsBytesSync());
|
||||
} else if (element is Directory) {
|
||||
_copyFolder(element, Directory(newPath));
|
||||
}
|
||||
});
|
||||
}
|
||||
Reference in New Issue
Block a user