Esempio n. 1
0
        public static string GetPackageFamilyName()
        {
#if NET472
            return(WindowsVersionHelper.GetPackageFamilyName());
#endif
            return("");
        }
Esempio n. 2
0
        public static void Display(DecompilerTextView textView)
        {
            AvalonEditTextOutput output = new AvalonEditTextOutput()
            {
                Title = Resources.About, EnableHyperlinks = true
            };

            output.WriteLine(Resources.ILSpyVersion + RevisionClass.FullVersion);
            if (WindowsVersionHelper.HasPackageIdentity)
            {
                output.WriteLine($"Package Name: {WindowsVersionHelper.GetPackageFamilyName()}");
            }
            else                // if we're running in an MSIX, updates work differently
            {
                output.AddUIElement(
                    delegate {
                    StackPanel stackPanel          = new StackPanel();
                    stackPanel.HorizontalAlignment = HorizontalAlignment.Center;
                    stackPanel.Orientation         = Orientation.Horizontal;
                    if (latestAvailableVersion == null)
                    {
                        AddUpdateCheckButton(stackPanel, textView);
                    }
                    else
                    {
                        // we already retrieved the latest version sometime earlier
                        ShowAvailableVersion(latestAvailableVersion, stackPanel);
                    }
                    CheckBox checkBox       = new CheckBox();
                    checkBox.Margin         = new Thickness(4);
                    checkBox.Content        = Resources.AutomaticallyCheckUpdatesEveryWeek;
                    UpdateSettings settings = new UpdateSettings(ILSpySettings.Load());
                    checkBox.SetBinding(CheckBox.IsCheckedProperty, new Binding("AutomaticUpdateCheckEnabled")
                    {
                        Source = settings
                    });
                    return(new StackPanel {
                        Margin = new Thickness(0, 4, 0, 0),
                        Cursor = Cursors.Arrow,
                        Children = { stackPanel, checkBox }
                    });
                });
                output.WriteLine();
            }

            foreach (var plugin in App.ExportProvider.GetExportedValues <IAboutPageAddition>())
            {
                plugin.Write(output);
            }
            output.WriteLine();
            output.Address = new Uri("resource://AboutPage");
            using (Stream s = typeof(AboutPage).Assembly.GetManifestResourceStream(typeof(AboutPage), Resources.ILSpyAboutPageTxt)) {
                using (StreamReader r = new StreamReader(s)) {
                    string line;
                    while ((line = r.ReadLine()) != null)
                    {
                        output.WriteLine(line);
                    }
                }
            }
            output.AddVisualLineElementGenerator(new MyLinkElementGenerator("MIT License", "resource:license.txt"));
            output.AddVisualLineElementGenerator(new MyLinkElementGenerator("third-party notices", "resource:third-party-notices.txt"));
            textView.ShowText(output);
        }
Esempio n. 3
0
        public static void CreateAndRun(bool forceSoftwareRenderingMode)
        {
            FilesStorage.Initialize(EntryPoint.ApplicationDataDirectory);

            if (!AppArguments.GetBool(AppFlag.DisableLogging))
            {
                var logFilename = EntryPoint.GetLogName("Main Log");
                Logging.Initialize(FilesStorage.Instance.GetFilename("Logs", logFilename), AppArguments.GetBool(AppFlag.OptimizeLogging));
                Logging.Write($"App version: {BuildInformation.AppVersion} ({BuildInformation.Platform}, {WindowsVersionHelper.GetVersion()})");
            }

            if (AppArguments.GetBool(AppFlag.DisableSaving))
            {
                ValuesStorage.Initialize();
                CacheStorage.Initialize();
                AuthenticationStorage.Initialize();
            }
            else
            {
                ValuesStorage.Initialize(FilesStorage.Instance.GetFilename("Values.data"),
                                         InternalUtils.GetValuesStorageEncryptionKey(),
                                         AppArguments.GetBool(AppFlag.DisableValuesCompression));
                CacheStorage.Initialize(FilesStorage.Instance.GetFilename("Cache.data"), AppArguments.GetBool(AppFlag.DisableValuesCompression));
                AuthenticationStorage.Initialize(FilesStorage.Instance.GetFilename("Authentication.data"),
                                                 AppArguments.GetBool(AppFlag.DisableValuesCompression));
                if (MathUtils.Random(0, 10) == 0)
                {
                    LazierCached.Purge();
                }

                FatalErrorHandler.FatalError += OnFatalError;
            }

            if (AppArguments.GetBool(AppFlag.NoProxy, true))
            {
                WebRequest.DefaultWebProxy = null;
            }

            NonfatalError.Initialize();
            LocaleHelper.InitializeAsync().Wait();

            var softwareRenderingModeWasEnabled = IsSoftwareRenderingModeEnabled();

            if (forceSoftwareRenderingMode)
            {
                ValuesStorage.Set(AppAppearanceManager.KeySoftwareRendering, true);
            }

            if (IsSoftwareRenderingModeEnabled())
            {
                SwitchToSoftwareRendering();
            }

            var app = new App();

            // Some sort of safe mode
            if (forceSoftwareRenderingMode && !softwareRenderingModeWasEnabled)
            {
                Toast.Show("Safe mode", "Failed to start the last time, now CM uses software rendering", () => {
                    if (ModernDialog.ShowMessage(
                            "Would you like to switch back to hardware rendering? You can always do that in Settings/Appearance. App will be restarted.",
                            "Switch back", MessageBoxButton.YesNo) == MessageBoxResult.Yes)
                    {
                        ValuesStorage.Set(AppAppearanceManager.KeySoftwareRendering, false);
                        Storage.SaveBeforeExit(); // Just in case
                        WindowsHelper.RestartCurrentApplication();
                    }
                });
            }

            app.Run();
        }
Esempio n. 4
0
 private static string GetWindowsName()
 {
     return(Registry.LocalMachine.OpenSubKey(@"SOFTWARE\Microsoft\Windows NT\CurrentVersion")?.GetValue("ProductName") as string ??
            WindowsVersionHelper.GetVersion());
 }
Esempio n. 5
0
        public static void CreateAndRun(bool forceSoftwareRenderingMode)
        {
            FilesStorage.Initialize(EntryPoint.ApplicationDataDirectory);

            if (!AppArguments.GetBool(AppFlag.DisableLogging))
            {
                var logFilename = EntryPoint.GetLogName("Main Log");
                Logging.Initialize(FilesStorage.Instance.GetFilename("Logs", logFilename), AppArguments.GetBool(AppFlag.OptimizeLogging));
                Logging.Write($"App version: {BuildInformation.AppVersion} ({BuildInformation.Platform}, {WindowsVersionHelper.GetVersion()})");
            }

            Storage.TemporaryBackupsDirectory = FilesStorage.Instance.GetTemporaryDirectory("Storages Backups");
            if (AppArguments.GetBool(AppFlag.DisableSaving))
            {
                ValuesStorage.Initialize();
                CacheStorage.Initialize();
                AuthenticationStorage.Initialize();
            }
            else
            {
                ValuesStorage.Initialize(FilesStorage.Instance.GetFilename("Values.data"),
                                         InternalUtils.GetValuesStorageEncryptionKey(),
                                         AppArguments.GetBool(AppFlag.DisableValuesCompression));
                CacheStorage.Initialize(FilesStorage.Instance.GetFilename("Cache.data"), AppArguments.GetBool(AppFlag.DisableValuesCompression));
                AuthenticationStorage.Initialize(FilesStorage.Instance.GetFilename("Authentication.data"),
                                                 AppArguments.GetBool(AppFlag.DisableValuesCompression));
                if (MathUtils.Random(0, 10) == 0)
                {
                    LazierCached.Purge();
                }

                FatalErrorHandler.FatalError += OnFatalError;
            }

            if (AppArguments.GetBool(AppFlag.NoProxy, true))
            {
                WebRequest.DefaultWebProxy = null;
            }

            NonfatalError.Initialize();
            LocaleHelper.InitializeAsync().Wait();

            var softwareRenderingModeWasEnabled = IsSoftwareRenderingModeEnabled();

            if (forceSoftwareRenderingMode)
            {
                ValuesStorage.Set(AppAppearanceManager.KeySoftwareRendering, true);
            }

            if (IsSoftwareRenderingModeEnabled())
            {
                SwitchToSoftwareRendering();
            }

            var app = new App();

            // Some sort of safe mode
            if (forceSoftwareRenderingMode && !softwareRenderingModeWasEnabled)
            {
                Toast.Show("Safe mode", "Failed to start the last time, now CM uses software rendering", () => {
                    if (MessageDialog.Show(
                            "Would you like to switch back to hardware rendering? You can always do that in Settings/Appearance. App will be restarted.",
                            "Switch back", MessageBoxButton.YesNo) == MessageBoxResult.Yes)
                    {
                        ValuesStorage.Set(AppAppearanceManager.KeySoftwareRendering, false);
                        Storage.SaveBeforeExit(); // Just in case
                        WindowsHelper.RestartCurrentApplication();
                    }
                });
            }

            var move = AppArguments.Get(AppFlag.MoveApp);

            if (move != null && File.Exists(move))
            {
                for (var i = 0; i < 10; i++)
                {
                    if (FileUtils.TryToDelete(move) || !File.Exists(move))
                    {
                        break;
                    }
                    Thread.Sleep(100);
                }
                Toast.Show("App moved", $"App moved from AC root folder, now Oculus Rift should work better", () => {
                    var originalRemoved = File.Exists(move) ? "failed to remove original file" : "original file removed";
                    if (MessageDialog.Show(
                            $"New location is “{MainExecutingFile.Location}”, {originalRemoved}. Please don’t forget to recreate any shortcuts you might have created.",
                            "Content Manager is moved",
                            new MessageDialogButton {
                        [MessageBoxResult.Yes] = "View new location",
                        [MessageBoxResult.No] = UiStrings.Ok
                    }) == MessageBoxResult.Yes)
                    {
                        WindowsHelper.ViewFile(MainExecutingFile.Location);
                    }
                });
            }

            app.Run();
        }
Esempio n. 6
0
        public static void CreateAndRun()
        {
            FilesStorage.Initialize(EntryPoint.ApplicationDataDirectory);
            if (AppArguments.GetBool(AppFlag.DisableSaving))
            {
                ValuesStorage.Initialize();
                CacheStorage.Initialize();
            }
            else
            {
                ValuesStorage.Initialize(FilesStorage.Instance.GetFilename("Values.data"),
                                         InternalUtils.GetValuesStorageEncryptionKey(),
                                         AppArguments.GetBool(AppFlag.DisableValuesCompression));
                CacheStorage.Initialize(FilesStorage.Instance.GetFilename("Cache.data"), AppArguments.GetBool(AppFlag.DisableValuesCompression));
            }

            if (!AppArguments.GetBool(AppFlag.DisableLogging))
            {
                var logFilename = EntryPoint.GetLogName("Main Log");
                Logging.Initialize(FilesStorage.Instance.GetFilename("Logs", logFilename), AppArguments.GetBool(AppFlag.OptimizeLogging, true));
                Logging.Write($"App version: {BuildInformation.AppVersion} ({BuildInformation.Platform}, {WindowsVersionHelper.GetVersion()})");
            }

            if (AppArguments.GetBool(AppFlag.NoProxy, true))
            {
                WebRequest.DefaultWebProxy = null;
            }

            NonfatalError.Initialize();
            LocaleHelper.InitializeAsync().Wait();
            new App().Run();
        }
Esempio n. 7
0
        public App()
        {
            // FirstFloor.ModernUI initialization (library used here is a forked version from Content Manager project with extra bits)
            ValuesStorage.Initialize(TypoModel.DataFilename, "_key_zsu4b3ws1k17ties_" + Environment.UserName, true);
            CacheStorage.Initialize();
            Logging.Initialize(TypoModel.LogFilename, false);
            Logging.Write($"App version: {BuildInformation.AppVersion} ({BuildInformation.Platform}, {WindowsVersionHelper.GetVersion()})");

            if (Directory.GetFiles(TypoModel.DataDirectory).Length == 0)
            {
                using (var memory = new MemoryStream(Typo4.Properties.Resources.Typo4Data)) {
                    new ZipArchive(memory).ExtractToDirectory(TypoModel.DataDirectory);
                }
            }

            AppearanceManager.Current.Initialize();
            AppearanceManager.Current.SetTheme(new Uri("pack://application:,,,/Typo4;component/Assets/AppTheme.xaml", UriKind.Absolute));
            AppearanceManager.Current.BoldTitleLinks   = false;
            AppearanceManager.Current.LargerTitleLinks = false;
            AppearanceManager.Current.SubMenuFontSize  = FontSize.Small;
            Resources.MergedDictionaries.Add(new ResourceDictionary {
                Source = new Uri("pack://application:,,,/Typo4;component/Assets/AppAssets.xaml", UriKind.Absolute)
            });

            MuiSystemAccent.Initialize();
            NonfatalError.Initialize();
            AppIconService.Initialize(this);
            FatalErrorMessage.Register(this);

            // All logic in relationship to UI
            _typoModel = new TypoModel();

            // Some more UI initialization bits
            PrepareUi();
            AppShortcut.Initialize("x4fab.Typo4", "Typo4");
            Toast.SetDefaultAction(() => (Current.Windows.OfType <ModernWindow>().FirstOrDefault(x => x.IsActive) ??
                                          Current.MainWindow as ModernWindow)?.BringToFront());
            BbCodeBlock.OptionEmojiProvider = this;

            // Let’s at least try to handle stuff properly
            AppDomain.CurrentDomain.ProcessExit += OnProcessExit;

            // Log stuff using FirstFloor.ModernUI library
            TypoLogging.Logger = (s, m, p, l) => Logging.Write($"{s} (Typo)", m, p, l);
            TypoLogging.TypoLoggingNonFatalErrorHandler = (s, c, e) => NonfatalError.Notify(s, c, e);

            // Most of the time app should work from system tray
            _typoModel.Initialize();
            _trayInterface = new TrayInterface(_typoModel);

            // Close only manually
            ShutdownMode = ShutdownMode.OnExplicitShutdown;

            // Fancy blur for all windows
            DpiAwareWindow.NewWindowCreated += OnWindowLoaded;
        }
Esempio n. 8
0
        public static void CreateAndRun()
        {
            FilesStorage.Initialize(EntryPoint.ApplicationDataDirectory);
            if (AppArguments.GetBool(AppFlag.DisableSaving))
            {
                ValuesStorage.Initialize();
                CacheStorage.Initialize();
            }
            else
            {
                ValuesStorage.Initialize(FilesStorage.Instance.GetFilename("Values.data"),
                                         InternalUtils.GetValuesStorageEncryptionKey(),
                                         AppArguments.GetBool(AppFlag.DisableValuesCompression));
                CacheStorage.Initialize(FilesStorage.Instance.GetFilename("Cache.data"), AppArguments.GetBool(AppFlag.DisableValuesCompression));
                LargeFileUploaderParams.Initialize(FilesStorage.Instance.GetFilename("Authentication.data"), AppArguments.GetBool(AppFlag.DisableValuesCompression));
            }

            if (!AppArguments.GetBool(AppFlag.DisableLogging))
            {
                var logFilename = EntryPoint.GetLogName("Main Log");
                Logging.Initialize(FilesStorage.Instance.GetFilename("Logs", logFilename), AppArguments.GetBool(AppFlag.OptimizeLogging, true));
                Logging.Write($"App version: {BuildInformation.AppVersion} ({BuildInformation.Platform}, {WindowsVersionHelper.GetVersion()})");
            }

            if (AppArguments.GetBool(AppFlag.NoProxy, true))
            {
                WebRequest.DefaultWebProxy = null;
            }

            NonfatalError.Initialize();
            LocaleHelper.InitializeAsync().Wait();

            AppearanceManager.DefaultValuesSource = new Uri("/AcManager.Controls;component/Assets/ModernUI.Default.xaml", UriKind.Relative);
            new App().Run();
        }