public void Register(GameRegistrationData registrationData)
        {
            string iconPath = GetIconPath(registrationData.InstallationPath);

            registrationData.IconPath = iconPath;
            bool gameWasInstalled = IsRegistered(registrationData.LauncherKey, registrationData.Key);

            RegisterInRegistry(registrationData);
            CreateDesktopShortcut(registrationData, gameWasInstalled);
        }
        private void RegisterInRegistry(GameRegistrationData registrationData)
        {
            string uninstallGameRegistryKey = GetUninstallGameRegistryKey(
                registrationData.LauncherKey, registrationData.Key);
            long?nullable = new long?();
            long result;

            if (long.TryParse(registrationData.Size, out result))
            {
                nullable = new long?(result);
            }

            if (!RegistryHelper.TryRegisterUninstallInfo(
                    uninstallGameRegistryKey, new RegistryUninstallInfo()
            {
                Version = registrationData.Version,
                SizeBytes = nullable,
                InstallationPath = registrationData.InstallationPath,
                IconPath = registrationData.IconPath,
                Name = registrationData.Name,
                InstallationDate = registrationData.InstallationDate,
                UninstallCommand = registrationData.UninstallCommand,
                Publisher = "Innova Co. SARL"
            }))
            {
                throw new Exception(
                          $"Can't register game {uninstallGameRegistryKey} in uninstall registry");
            }

            if (!RegistryHelper.TryRegisterGameSoftwareData(new RegisterGameSoftwareInfo {
                Publisher = "Innova Co. SARL",
                LauncherKey = registrationData.LauncherKey,
                Version = registrationData.Version,
                InstallationPath = registrationData.InstallationPath,
                InstallationDate = new DateTime?(registrationData.InstallationDate),
                GameName = registrationData.Name
            }))
            {
                RegistryHelper.DeleteUninstallInfo(uninstallGameRegistryKey);

                throw new Exception(
                          $"Can't register game {uninstallGameRegistryKey} in software registry");
            }
        }
        private void CreateDesktopShortcut(
            GameRegistrationData registrationData,
            bool gameWasInstalled)
        {
            try
            {
                File.WriteAllBytes(registrationData.IconPath, registrationData.IconData);

                if (gameWasInstalled)
                {
                    return;
                }

                //ShortcutHelper.CreateOrReplaceDesktopShortcut(registrationData.Name, registrationData.IconPath, registrationData.RunnerPath, registrationData.RunnerArgs);
            }
            catch (Exception)
            {
                throw;
            }
        }