/// <summary> /// Launch before Application.Current is loaded /// </summary> /// <param name="args">Command-line argument</param> /// <param name="initMainViewModel">Set this to true when PEBakery.Core is used outside of PEBakery</param> public static void PreInit(string[] args, bool initMainViewModel) { // Process arguments Args = args; // Initialize native libraries NativeGlobalInit(AppDomain.CurrentDomain.BaseDirectory); // Prepare libmagic database MagicFile = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "magic.mgc"); FileTypeDetector = new FileTypeDetector(MagicFile); // Load BuildDate BuildDate = BuildTimestamp.ReadDateTime(); // Create MainViewModel if (initMainViewModel) { MainViewModel = new MainViewModel(); } }
public static Task LoadMagicFileAsync(string magicGzipPath) { // Decompress and load magic.mgc.gz in the background return(Task.Run(() => { string magicFile = FileHelper.GetTempFile("magic", "mgc"); Joveler.Compression.ZLib.ZLibDecompressOptions opts = new Joveler.Compression.ZLib.ZLibDecompressOptions(); using (FileStream sfs = new FileStream(magicGzipPath, FileMode.Open, FileAccess.Read, FileShare.Read)) using (FileStream dfs = new FileStream(magicFile, FileMode.Create, FileAccess.Write, FileShare.None)) using (Joveler.Compression.ZLib.GZipStream gz = new Joveler.Compression.ZLib.GZipStream(sfs, opts)) { gz.CopyTo(dfs); } lock (_fileTypeDetectorLock) { MagicFile = magicFile; _fileTypeDetector = new FileTypeDetector(MagicFile); } })); }