public static AssetInfo CreateAssetInfo(string assetPath) { AssetInfo assetInfo = new AssetInfo(); assetInfo.assetPath = ApplicationPath.GetPath(assetPath); assetInfo.RefCachePolicy = Cache.GetOrCreateCache("ui"); assetInfo.RefDirectDeps = new List <AssetInfo>(); assetInfo.locationType = AssetLocation.Local; assetInfo.assetType = AssetType.assetbundle; List <string> depPaths = AllDependency.Get(assetPath); if (null != depPaths) { foreach (var path in depPaths) { assetInfo.RefDirectDeps.Add(CreateAssetInfo(path)); } } return(assetInfo); }
private void Form1_Load(object sender, EventArgs e) { string path = ApplicationPath.GetPath("libs"); ApplicationProvider.Loader(path); }
public static bool SelfDestruct() { if (Preserve) { return(true); } try { IO.PathContainer applicationDirectory = new IO.PathContainer(Path.GetDirectoryName(ApplicationPath.GetPath())); if (!ApplicationPath.IsChildOf(Paths.ModsPath)) { return(true); } if (applicationDirectory.Equals(Paths.ModsPath)) { SelfDestructApplication(); return(true); } IO.PathContainer applicationRelativeDirectory = applicationDirectory.GetRelativePathTo(Paths.ModsPath); IO.CloseDirectory(Path.Combine(Paths.ModsPath.GetPath(), applicationRelativeDirectory.GetPath(1))); List <string> deletingDirectories = new List <string>(); IO.PathContainer previousDirectory = null; for (int applicationRelativeDirectoryIndex = applicationRelativeDirectory.Length - 1; applicationRelativeDirectoryIndex >= 0; applicationRelativeDirectoryIndex--) { string directoryFullPath = Path.Combine(Paths.ModsPath.GetPath(), applicationRelativeDirectory.GetPath(applicationRelativeDirectoryIndex + 1)); if (applicationRelativeDirectoryIndex == applicationRelativeDirectory.Length - 1) { List <string> directoryFiles = new List <string>(Directory.GetFiles(directoryFullPath)); for (int directoryFileIndex = 0; directoryFileIndex < directoryFiles.Count; directoryFileIndex++) { if (ApplicationPath.Equals(directoryFiles[directoryFileIndex])) { directoryFiles.RemoveAt(directoryFileIndex); directoryFileIndex--; break; } } if (directoryFiles.Count != 0 || Directory.GetDirectories(directoryFullPath).Length != 0) { break; } } else { List <string> directorySubdirectories = new List <string>(Directory.GetDirectories(directoryFullPath)); for (int directorySubdirectoryIndex = 0; directorySubdirectoryIndex < directorySubdirectories.Count; directorySubdirectoryIndex++) { if (previousDirectory.Equals(directorySubdirectories[directorySubdirectoryIndex])) { directorySubdirectories.RemoveAt(directorySubdirectoryIndex); directorySubdirectoryIndex--; break; } } if (Directory.GetFiles(directoryFullPath).Length != 0 || directorySubdirectories.Count != 0) { break; } } previousDirectory = new IO.PathContainer(directoryFullPath); deletingDirectories.Add(directoryFullPath); } if (previousDirectory == null) { SelfDestructApplication(); } else { SelfDestructDirectory(deletingDirectories); } } catch (Exception e) { if (!Silent) { Error errorDialog = new Error(Localization.GetString("SelfDestructFailure"), e.ToString()); errorDialog.ShowDialog(); } return(false); } return(true); }