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);
}