public static void Install() { try { var dependenciesFolder = FileSystem.Current.GetDirectory(Resources.DependenciesDir); if (!dependenciesFolder.Exists) { return; } var deps = new FrameworkDependencies(Resources.DependenciesFile); foreach (KeyValuePair <string, string> dep in deps.Dependencies) { if (dep.Key.Contains("..")) { Logger.Current.Write(LogInfoLevel.Error, "Cannot install dependencies outside of the framework dependency folder (" + dep.Key + ")"); } else { Logger.Current.Write(LogInfoLevel.Info, "Installing dependency " + dep.Key + " " + dep.Value + "..."); var result = ProcessManager.Current.WaitForProcess(Path.Combine(dependenciesFolder.FullName, dep.Key), dep.Value); Logger.Current.Write(result == 0 ? LogInfoLevel.Info : LogInfoLevel.Error, "Dependency " + dep.Key + " completed with code " + result); } } dependenciesFolder.DeleteWithTimeout(); } catch (Exception ex) { Logger.Current.Write(ex, "Unable to install dependencies"); } }
public void LoadDependenciesFile() { const string json = @"{ ""dependencies"":[ { ""command"": ""vc2013redist_x86.exe"", ""arguments"":""/q"" } ] }"; MockDirectory depsDirectory = ((MockDirectory)MockFileSystem.GetDirectory(EnvironmentSettings.Current.AppDirectory)); depsDirectory = depsDirectory.AddDirectory("dependencies"); depsDirectory.AddFile("dependencies.json", json); var deps = new FrameworkDependencies(Resources.DependenciesFile); Assert.AreEqual(true, deps.IsValid); Assert.AreEqual(0, deps.ErrorCollection.Count); Assert.AreEqual(1, deps.Dependencies.Count); Assert.AreEqual("/q", deps.Dependencies["vc2013redist_x86.exe"]); }