public static UpdateScript Parse(JSONObject jscript) { var script = new UpdateScript { Version = Version.Parse(jscript["_updateScript"].Value) }; if (script.Version != ScriptVersion) { throw new UpdateScriptParseException("Script version mismatch"); } jscript.Remove("_updateScript"); foreach (var kvp in jscript) { var obj = kvp.Value.AsObject; var pvi = new PluginVersionInfo { Version = obj.Linq.Any(p => p.Key == "version") ? Version.Parse(obj["version"].Value) : null, Download = obj.Linq.Any(p => p.Key == "download") ? new Uri(obj["download"].Value) : null, NewName = obj.Linq.Any(p => p.Key == "newName") ? obj["newName"] : null, NewScript = obj.Linq.Any(p => p.Key == "newScript") ? new Uri(obj["newScript"]) : null }; if (pvi.NewName == null && pvi.NewScript == null && (pvi.Version == null || pvi.Download == null)) { throw new UpdateScriptParseException($"Required fields missing from object {kvp.Key}"); } script.info.Add(kvp.Key, pvi); } return(script); }
/// <summary> PluginVersionInfoをシリアル化してセーブします。 /// </summary> /// <param name="pPluginVersionInfo"> シリアル化したいPluginVersionInfo </param> /// <param name="pSaveFullPath"> (ファイル名を含む)セーブパス </param> public void XmlSave(PluginVersionInfo pPluginVersionInfo, string pSaveFullPath) { this.xmlSerializerProcess.XmlSave(pSaveFullPath, pPluginVersionInfo, true); }