mirror of
https://github.com/MindWorkAI/AI-Studio.git
synced 2026-08-24 20:52:11 +00:00
Fixed loading a replaced assistant plugin twice during installation
This commit is contained in:
parent
c50ca0dd54
commit
a4db045881
@ -23,6 +23,7 @@ public sealed class AssistantPluginInstallService
|
|||||||
private const string PLUGIN_FILE_NAME = "plugin.lua";
|
private const string PLUGIN_FILE_NAME = "plugin.lua";
|
||||||
private const string ASSISTANT_BUILDER_DIRECTORY_PREFIX = "assistant-builder";
|
private const string ASSISTANT_BUILDER_DIRECTORY_PREFIX = "assistant-builder";
|
||||||
private const string DELETE_BACKUP_DIRECTORY = ".plugin-delete-backups";
|
private const string DELETE_BACKUP_DIRECTORY = ".plugin-delete-backups";
|
||||||
|
private const string INSTALL_BACKUP_DIRECTORY = ".plugin-install-backups";
|
||||||
private const int DIRECTORY_PREFIX_MAX_LEN = 80;
|
private const int DIRECTORY_PREFIX_MAX_LEN = 80;
|
||||||
|
|
||||||
private readonly ILogger<AssistantPluginInstallService> logger;
|
private readonly ILogger<AssistantPluginInstallService> logger;
|
||||||
@ -439,7 +440,12 @@ public sealed class AssistantPluginInstallService
|
|||||||
if (Directory.Exists(finalDirectory))
|
if (Directory.Exists(finalDirectory))
|
||||||
{
|
{
|
||||||
replacedExisting = true;
|
replacedExisting = true;
|
||||||
backupDirectory = Path.Join(assistantPluginsRoot, $".{Path.GetFileName(finalDirectory)}.backup-{Guid.NewGuid():N}");
|
|
||||||
|
// The backup goes to a directory outside the plugin root, so the plugin loader
|
||||||
|
// cannot discover it during the reload below. Otherwise, the previous version
|
||||||
|
// would be loaded a second time, next to the version we are installing:
|
||||||
|
backupDirectory = CreateInstallBackupDirectory(assistantPlugin);
|
||||||
|
Directory.CreateDirectory(Path.GetDirectoryName(backupDirectory)!);
|
||||||
Directory.Move(finalDirectory, backupDirectory);
|
Directory.Move(finalDirectory, backupDirectory);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -700,6 +706,12 @@ public sealed class AssistantPluginInstallService
|
|||||||
return Path.Join(backupRoot, $"assistant-{plugin.Id:N}-{Guid.NewGuid():N}");
|
return Path.Join(backupRoot, $"assistant-{plugin.Id:N}-{Guid.NewGuid():N}");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private static string CreateInstallBackupDirectory(IPluginMetadata plugin)
|
||||||
|
{
|
||||||
|
var backupRoot = Path.Join(SettingsManager.DataDirectory, INSTALL_BACKUP_DIRECTORY);
|
||||||
|
return Path.Join(backupRoot, $"assistant-{plugin.Id:N}-{Guid.NewGuid():N}");
|
||||||
|
}
|
||||||
|
|
||||||
private async Task TryRestoreDeletedAssistantPluginAsync(IAvailablePlugin plugin, string pluginDirectory, string backupDirectory, bool wasEnabled, List<PluginAssistantAudit> removedAudits, CancellationToken token)
|
private async Task TryRestoreDeletedAssistantPluginAsync(IAvailablePlugin plugin, string pluginDirectory, string backupDirectory, bool wasEnabled, List<PluginAssistantAudit> removedAudits, CancellationToken token)
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user