Example #1
0
        /// <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();
            }
        }
Example #2
0
        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);
                }
            }));
        }