fix: edge case for plugin installs with old PM

This commit is contained in:
goat 2020-12-09 14:23:08 +01:00
parent 1dd55b62e9
commit a104365b32

View file

@ -15,6 +15,8 @@ namespace Dalamud.Plugin
internal class PluginRepository {
private string PluginFunctionBaseUrl => "https://us-central1-xl-functions.cloudfunctions.net/download-plugin/?plugin={0}&isUpdate={1}&isTesting={2}";
private string PluginMasterUrl => "https://raw.githubusercontent.com/goatcorp/DalamudPlugins/master/pluginmaster.json";
private string PluginJsonUrl =
"https://raw.githubusercontent.com/goatcorp/DalamudPlugins/master/{0}/{1}/{1}.json";
private readonly Dalamud dalamud;
@ -66,6 +68,13 @@ namespace Dalamud.Plugin
public bool InstallPlugin(PluginDefinition definition, bool enableAfterInstall = true, bool isUpdate = false, bool fromTesting = false) {
try {
using var client = new WebClient();
// We need to redownload the json, for the eventuality of the zip having changed after PM download
definition = JsonConvert.DeserializeObject<PluginDefinition>(
client.DownloadString(string.Format(this.PluginJsonUrl, fromTesting ? "testing" : "plugins",
definition.InternalName)));
var outputDir = new DirectoryInfo(Path.Combine(this.pluginDirectory, definition.InternalName, fromTesting ? definition.TestingAssemblyVersion : definition.AssemblyVersion));
var dllFile = new FileInfo(Path.Combine(outputDir.FullName, $"{definition.InternalName}.dll"));
var disabledFile = new FileInfo(Path.Combine(outputDir.FullName, ".disabled"));
@ -93,8 +102,6 @@ namespace Dalamud.Plugin
var path = Path.GetTempFileName();
using var client = new WebClient();
var doTestingDownload = false;
if ((Version.TryParse(definition.TestingAssemblyVersion, out var testingAssemblyVer) || definition.IsTestingExclusive)
&& fromTesting) {