public AddonInstaller(ILogger logger, IManifestLoader manifestLoader, INicoFileIO fileIO, INicoDirectoryIO directoryIO, IAddonStoreHandler storeHandler, IAddonInfomationsContainer container, IAddonUninstaller uninstaller) { this.logger = logger; this.manifestLoader = manifestLoader; this.fileIO = fileIO; this.directoryIO = directoryIO; this.storeHandler = storeHandler; this.container = container; this.uninstaller = uninstaller; }
public static IManifestLoader BuildManifestLoader(string file, bool isVerbose) { IManifestLoader loader = null; if (Uri.IsWellFormedUriString(file, UriKind.Absolute) && Convert.ToBoolean(Environment.GetEnvironmentVariable("KANYON_ALLOWUNSAFECODE"))) { WebClient client = new WebClient(); var assemBytes = client.DownloadData(file); loader = new CompiledManifestLoader().FromBytes(assemBytes); } else { FileInfo fileInfo = new FileInfo(file); if (fileInfo.Extension == ".csproj") { loader = new CsprojManifestLoader().FromFile(fileInfo); } else { try { AssemblyName.GetAssemblyName(fileInfo.FullName); loader = new CompiledManifestLoader().FromFile(fileInfo); } catch (BadImageFormatException) { var scriptLoader = new ScriptManifestLoader() { Source = fileInfo, Verbose = isVerbose }; loader = scriptLoader; } } } return(loader); }
public void Init(FmsOptions options) { string manifestUrl = ""; if (options.JSONParser == null) { throw new CMSException("JSON parser implementation is required."); } Debug.Log("JSON parser: " + options.JSONParser.GetDescription()); switch (options.Mode) { case FmsMode.Versioned: manifestUrl = $"{options.BaseURL}manifest/{options.CodeName}/{options.Env.ToString().ToLower()}/{options.ManifestVersion}.json"; manifestLoader = new VersionedFileManifestLoader(options); break; case FmsMode.Passthrough: manifestLoader = new PassthroughFileManifestLoader(); break; } manifestLoader.Load(options, manifestUrl); }
public async Task <Manifest> GetFullManifest(IManifestLoader manifestLoader) { return(await manifestLoader.FromUri(ManifestUri)); }