private void InstallPluginInEngine()

in src/dotnet/RiderPlugin.UnrealLink/PluginInstaller/UnrealPluginInstaller.cs [230:275]


        private void InstallPluginInEngine(Lifetime lifetime, UnrealPluginInstallInfo unrealPluginInstallInfo,
            IProperty<double> progress, bool buildRequired)
        {
            var backupDir = CreateTempDirectory();
            if (backupDir.IsNullOrEmpty()) return;
            
            using var deleteTempFolders = new DeleteTempFolders(backupDir.Directory);

            var backupAllPlugins = BackupAllPlugins(unrealPluginInstallInfo);
            progress.Value = 0.0;
            bool success;
            try
            {
                if (buildRequired)
                {
                    success = InstallPlugin(lifetime, unrealPluginInstallInfo.EnginePlugin,
                        unrealPluginInstallInfo.EngineRoot, progress, 1.0);   
                }
                else
                {
                    success = ExtractPlugin(lifetime, unrealPluginInstallInfo.EnginePlugin,
                        unrealPluginInstallInfo.EngineRoot, progress, 1.0);
                }
            }
            catch (OperationCanceledException)
            {
                success = false;
            }

            if (!success)
            {
                foreach (var backupAllPlugin in backupAllPlugins)
                {
                    backupAllPlugin.Restore();
                }
            }
            else
            {
                foreach (var installDescription in unrealPluginInstallInfo.ProjectPlugins)
                {
                    installDescription.IsPluginAvailable = false;
                }
            }

            myUnrealHost.myModel.InstallPluginFinished(success);
        }