コード例 #1
0
        private void LoadNativeStorage(object invokeUntyped)
        {
            try
            {
                nativeStorage = NativeStorage.LoadFromAssemblyPath();
            }
            catch (Exception ex)
            {
                // Need to swallow this unfortunately because we are on a backrground thread
                Debug.Fail(ex.Message);
            }
            finally
            {
                if (nativeStorage == null)
                {
                    nativeStorage = new NativeStorage();
                }
            }

            // Ping the UI to let in know the Database is now loaded
            ISynchronizeInvoke invoke = (ISynchronizeInvoke)invokeUntyped;

            try
            {
                WaitCallback del = delegate(object notused) { this.OnTabPageChanged(this, EventArgs.Empty); };
                invoke.Invoke(del, new object[] { null });
            }
            catch (Exception)
            {
                // No need to assert.  We get this if the user closes the application before
                // the database finishes loading
            }
        }
コード例 #2
0
        public void SetUp()
        {
            var directory = Directory.CreateDirectory(Path.Combine(Path.GetTempPath(), Guid.NewGuid().ToString()));

            storage = new NativeStorage(directory.FullName);

            realmContextFactory = new RealmContextFactory(storage);
            keyBindingStore     = new RealmKeyBindingStore(realmContextFactory);
        }
コード例 #3
0
        public void SetUp()
        {
            var directory = Directory.CreateDirectory(Path.Combine(Path.GetTempPath(), Guid.NewGuid().ToString()));

            storage = new NativeStorage(directory.FullName);

            realm           = new RealmAccess(storage, "test");
            keyBindingStore = new RealmKeyBindingStore(realm, new ReadableKeyCombinationProvider());
        }
コード例 #4
0
        internal static void Main(string[] args)
        {
            var dataDirectory = @"..\..\..\StorageGenerator\Data";
            var oldFilePath   = Path.Combine(dataDirectory, "windows.xml");
            var newFilePath   = Path.Combine(dataDirectory, "windows.csv");

            Console.WriteLine("Reading old data");
            var nativeStorage = new NativeStorage();

            nativeStorage.ReadXml(oldFilePath);

            Console.WriteLine($"Converting to a {nameof(BasicSymbolStorage)}");
            var storage = new BasicSymbolStorage();

            foreach (var name in nativeStorage.NativeNames)
            {
                if (name.Kind == NativeNameKind.EnumValue)
                {
                    continue;
                }

                NativeGlobalSymbol symbol;
                if (!nativeStorage.TryGetGlobalSymbol(name, out symbol))
                {
                    Console.WriteLine($"Error: Unable to load {name.Name} {name.Kind}");
                    continue;
                }

                storage.Add(symbol);
            }

            Console.WriteLine("Saving new data");
            using (var stream = File.Open(newFilePath, FileMode.Create))
            {
                StorageUtil.WriteCsv(stream, storage);
            }

            Console.WriteLine("Loading data for sanity check");
            using (var stream = File.Open(newFilePath, FileMode.Open))
            {
                var testStorage = StorageUtil.ReadCsv(stream);
                if (testStorage.Count != storage.Count)
                {
                    Console.WriteLine("Error: Different count on load");
                }
            }
        }
コード例 #5
0
ファイル: Startup.cs プロジェクト: Tiller431/yes
        // ReSharper disable once UnusedParameter.Local
        public Startup(IConfiguration configuration)
        {
            dataStorage         = new NativeStorage("data");
            osuContextFactory   = new DatabaseContextFactory(dataStorage);
            cacheContextFactory = new PisstaubeCacheDbContextFactory(dataStorage);
            dbContextFactory    = new PisstaubeDbContextFactory();

            // copy paste of OsuGameBase.cs
            try
            {
                using (var db = dbContextFactory.GetForWrite(false))
                    db.Context.Database.Migrate();

                using (var db = osuContextFactory.GetForWrite(false))
                    db.Context.Migrate();
            }
            catch (Exception e)
            {
                Logger.Error(e.InnerException ?? e, "Migration failed! We'll be starting with a fresh database.", LoggingTarget.Database);
                osuContextFactory.ResetDatabase();
                Logger.Log("Database purged successfully.", LoggingTarget.Database);
                using (var db = osuContextFactory.GetForWrite(false))
                    db.Context.Migrate();
            }

            // copy paste of OsuGameBase.cs
            try
            {
                using (var db = cacheContextFactory.GetForWrite(false))
                    db.Context.Migrate();
            }
            catch (Exception e)
            {
                Logger.Error(e.InnerException ?? e, "Migration failed! We'll be starting with a fresh database.", LoggingTarget.Database);
                cacheContextFactory.ResetDatabase();
                Logger.Log("Database purged successfully.", LoggingTarget.Database);
                using (var db = cacheContextFactory.GetForWrite(false))
                    db.Context.Migrate();
            }
        }
コード例 #6
0
    public static void Main(string[] args)
    {
        NativeStorage ns = NativeStorage.LoadFromAssemblyPath;

        NativeSymbolBag bag = new NativeSymbolBag(ns);

        NativeProcedure ntProc = null;

        bag.TryFindOrLoadProcedure("FindFirstFileW", ntProc);
        bag.TryFindOrLoadProcedure("FindNextFileW", ntProc);
        bag.TryFindOrLoadProcedure("FindClose", ntProc);
        bag.TryFindOrLoadProcedure("GetSystemDirectoryW", ntProc);
        bag.TryFindOrLoadProcedure("GetWindowTextW", ntProc);
        bag.TryFindOrLoadProcedure("EnumWindows", ntProc);
        bag.TryFindOrLoadProcedure("GetComputerNameW", ntProc);
        bag.TryFindOrLoadProcedure("CreateWellKnownSid", ntProc);
        bag.TryFindOrLoadProcedure("CopySid", ntProc);
        bag.TryFindOrLoadProcedure("IsEqualSid", ntProc);
        bag.TryFindOrLoadProcedure("SHGetFileInfoW", ntProc);
        bag.TryFindOrLoadProcedure("GetEnvironmentVariableW", ntProc);
        bag.TryFindOrLoadProcedure("atoi", ntProc);

        NativeDefinedType ntDefined = null;
        NativeTypeDef     ntTypedef = null;

        bag.TryFindOrLoadDefinedType("WNDPROC", ntDefined);
        bag.TryFindOrLoadDefinedType("WNDENUMPROC", ntDefined);
        bag.TryFindOrLoadDefinedType("COMSTAT", ntDefined);
        bag.TryFindOrLoadDefinedType("_DCB", ntDefined);
        bag.TryFindOrLoadDefinedType("_IMAGE_LINENUMBER", ntDefined);


        BasicConverter convert = new BasicConverter(LanguageType.VisualBasic, ns);
        string         code    = convert.ConvertToPInvokeCode(bag);

        code = "' Generated File ... Re-Run PInvokeTestGen to regenerate this file" + Constants.vbCrLf + "Namespace Generated" + Constants.vbCrLf + code + Constants.vbCrLf + "End Namespace";
        IO.File.WriteAllText(args(0), code);
    }
コード例 #7
0
        private static void Main()
        {
            var currentDirectory  = new NativeStorage(".");
            var solutionDirectory = new NativeStorage("..");

            currentDirectory.DeleteDirectory("./staging");

            if (!Directory.Exists("releases"))
            {
                Directory.CreateDirectory("releases");
            }

            var stagingDirectory = currentDirectory.GetStorageForDirectory("staging");
            var currentDate      = DateTime.Now.ToString("yyyy.Mdd.");

            currentDate += currentDirectory.GetDirectories("releases").Count(s => s.Contains(currentDate));

            var releaseDirectory = currentDirectory.GetStorageForDirectory($"./releases/App-{currentDate}");

            Console.WriteLine($"Package: Qsor");
            Console.WriteLine($"Release Version: {currentDate}");
            Console.WriteLine($"Release Directory: {releaseDirectory.GetFullPath(".")}");
            Console.WriteLine($"Changelog: \n{ChangelogGenerator.GenerateChangelog()}");

            var logo = solutionDirectory.GetFullPath("Qsor.Game/Resources/Textures/Logo-256x256.png");
            var icon = solutionDirectory.GetFullPath("Qsor.Desktop/icon.ico");

            RunCommand("dotnet", $"publish -f netcoreapp3.1 Qsor.Desktop --configuration Release --runtime win-x64 -p:Version={currentDate} -o {stagingDirectory.GetFullPath(".")}",
                       solutionDirectory.GetFullPath("."));

            RunCommand("./tools/rcedit-x64.exe", $"\"{stagingDirectory.GetFullPath(".")}\\Qsor.exe\" --set-icon \"{icon}\"");

            RunCommand(NugetPath, $"pack Qsor.Desktop/qsor.nuspec -Version {currentDate} -Properties Configuration=Release -OutputDirectory {stagingDirectory.GetFullPath(".")} -BasePath {stagingDirectory.GetFullPath(".")}",
                       solutionDirectory.GetFullPath("."));

            RunCommand(SquirrelPath, $"--releasify {stagingDirectory.GetFullPath($"./Qsor.{currentDate}.nupkg")} --releaseDir {releaseDirectory.GetFullPath(".")} --no-msi --icon {icon} --setupIcon {icon} --loadingGif {logo}",
                       stagingDirectory.GetFullPath("."));

            RunCommand("git", $"tag {currentDate}");
            RunCommand("git", $"push origin {currentDate}");

            File.Move(releaseDirectory.GetFullPath("Setup.exe"), releaseDirectory.GetFullPath("install.exe"));

            stagingDirectory.DeleteDirectory(".");

            var req = new JsonWebRequest <GitHubRelease>($"https://api.github.com/repos/Mempler/Qsor/releases")
            {
                Method = HttpMethod.Post,
            };

            Console.WriteLine($"Creating release {currentDate}...");

            req.AddRaw(JsonConvert.SerializeObject(new GitHubRelease
            {
                Name  = currentDate,
                Draft = true,
                Body  = ChangelogGenerator.GenerateChangelog()
            }));

            req.AddHeader("Authorization", $"token {GithubAccessToken}");
            req.Perform();

            var targetRelease = req.ResponseObject;

            var assetUploadUrl = targetRelease.UploadUrl.Replace("{?name,label}", "?name={0}");

            foreach (var a in Directory.GetFiles(releaseDirectory.GetFullPath(".")).Reverse())
            {
                if (Path.GetFileName(a).StartsWith('.'))
                {
                    continue;
                }

                Console.WriteLine($"- Pushing asset {a}...");
                var upload = new WebRequest(assetUploadUrl, Path.GetFileName(a))
                {
                    Method      = HttpMethod.Post,
                    Timeout     = 240000,
                    ContentType = "application/octet-stream",
                };

                upload.AddRaw(File.ReadAllBytes(a));
                upload.AddHeader("Authorization", $"token {GithubAccessToken}");
                upload.Perform();
            }
        }
コード例 #8
0
ファイル: MigrationRunScreen.cs プロジェクト: omkelderman/osu
        protected override void LoadComplete()
        {
            base.LoadComplete();

            InternalChildren = new Drawable[]
            {
                new FillFlowContainer
                {
                    AutoSizeAxes = Axes.Both,
                    Direction    = FillDirection.Vertical,
                    Anchor       = Anchor.Centre,
                    Origin       = Anchor.Centre,
                    Spacing      = new Vector2(10),
                    Children     = new Drawable[]
                    {
                        new OsuSpriteText
                        {
                            Anchor = Anchor.Centre,
                            Origin = Anchor.Centre,
                            Text   = "Migration in progress",
                            Font   = OsuFont.Default.With(size: 40)
                        },
                        new OsuSpriteText
                        {
                            Anchor = Anchor.Centre,
                            Origin = Anchor.Centre,
                            Text   = "This could take a few minutes depending on the speed of your disk(s).",
                            Font   = OsuFont.Default.With(size: 30)
                        },
                        new LoadingSpinner(true)
                        {
                            State = { Value = Visibility.Visible }
                        },
                        new OsuSpriteText
                        {
                            Anchor = Anchor.Centre,
                            Origin = Anchor.Centre,
                            Text   = "Please avoid interacting with the game!",
                            Font   = OsuFont.Default.With(size: 30)
                        },
                    }
                },
            };

            Beatmap.Value = Beatmap.Default;

            var originalStorage = new NativeStorage(storage.GetFullPath(string.Empty), host);

            migrationTask = Task.Run(PerformMigration)
                            .ContinueWith(task =>
            {
                if (task.IsFaulted)
                {
                    Logger.Error(task.Exception, $"Error during migration: {task.Exception?.Message}");
                }
                else if (!task.GetResultSafely())
                {
                    notifications.Post(new SimpleNotification
                    {
                        Text      = "Some files couldn't be cleaned up during migration. Clicking this notification will open the folder so you can manually clean things up.",
                        Activated = () =>
                        {
                            originalStorage.PresentExternally();
                            return(true);
                        }
                    });
                }

                Schedule(this.Exit);
            });
        }