Reboot v3

This commit is contained in:
Alessandro Autiero
2023-05-24 23:19:36 +02:00
parent 760e336bc0
commit eb6381912c
129 changed files with 396379 additions and 1380 deletions

View File

@@ -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));
}
});
}