public static ThemeDescription InstallFromPackedFile(string path) { logger.Info($"Installing theme extenstion {path}"); var desc = GetDescriptionFromPackedFile(path); if (desc == null) { throw new FileNotFoundException("Theme manifest not found."); } var installDir = Paths.GetSafeFilename(desc.Name).Replace(" ", string.Empty) + "_" + (desc.Name + desc.Author).MD5(); var targetDir = PlayniteSettings.IsPortable ? PlaynitePaths.ThemesProgramPath : PlaynitePaths.ThemesUserDataPath; targetDir = Path.Combine(targetDir, desc.Mode.GetDescription(), installDir); var oldBackPath = targetDir + "_old"; if (Directory.Exists(targetDir)) { logger.Debug($"Replacing existing theme installation: {targetDir}."); Directory.Move(targetDir, oldBackPath); } FileSystem.CreateDirectory(targetDir, true); ZipFile.ExtractToDirectory(path, targetDir); if (Directory.Exists(oldBackPath)) { Directory.Delete(oldBackPath, true); } return(ThemeDescription.FromFile(Path.Combine(targetDir, PlaynitePaths.ThemeManifestFileName))); }
public static void InstallFromPackedFile(string path) { var desc = GetDescriptionFromPackedFile(path); var installDir = Paths.GetSafeFilename(desc.Name).Replace(" ", string.Empty) + "_" + (desc.Name + desc.Author).MD5(); var targetDir = PlayniteSettings.IsPortable ? PlaynitePaths.ThemesProgramPath : PlaynitePaths.ThemesUserDataPath; targetDir = Path.Combine(targetDir, desc.Mode.GetDescription(), installDir); FileSystem.CreateDirectory(targetDir, true); ZipFile.ExtractToDirectory(path, targetDir); }
public void CreateShortcut(Game game) { try { var path = Environment.ExpandEnvironmentVariables(Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.DesktopDirectory), Paths.GetSafeFilename(game.Name) + ".url")); string icon = string.Empty; if (!game.Icon.IsNullOrEmpty()) { icon = Database.GetFullFilePath(game.Icon); } else { icon = game.GetDefaultIcon(AppSettings, Database, Extensions.GetLibraryPlugin(game.PluginId)); if (!File.Exists(icon)) { icon = string.Empty; } } if (File.Exists(icon)) { if (Path.GetExtension(icon) != ".ico") { var targetIconPath = Path.Combine(PlaynitePaths.TempPath, Guid.NewGuid() + ".ico"); BitmapExtensions.ConvertToIcon(icon, targetIconPath); var md5 = FileSystem.GetMD5(targetIconPath); var existingFile = Path.Combine(PlaynitePaths.TempPath, md5 + ".ico"); if (File.Exists(existingFile)) { icon = existingFile; File.Delete(targetIconPath); } else { File.Move(targetIconPath, existingFile); icon = existingFile; } } } else { icon = PlaynitePaths.DesktopExecutablePath; } var args = new CmdLineOptions() { Start = game.Id.ToString() }.ToString(); Programs.CreateUrlShortcut($"playnite://playnite/start/{game.Id}", icon, path); } catch (Exception exc) when(!PlayniteEnvironment.ThrowAllErrors) { logger.Error(exc, "Failed to create shortcut: "); Dialogs.ShowMessage( string.Format(resources.GetString("LOCGameShortcutError"), exc.Message), resources.GetString("LOCGameError"), MessageBoxButton.OK, MessageBoxImage.Error); } }
public void CreateShortcut(Game game) { try { var path = Environment.ExpandEnvironmentVariables(Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.DesktopDirectory), Paths.GetSafeFilename(game.Name) + ".lnk")); string icon = string.Empty; if (!string.IsNullOrEmpty(game.Icon) && Path.GetExtension(game.Icon) == ".ico") { icon = Database.GetFullFilePath(game.Icon); } else if (game.PlayAction?.Type == GameActionType.File) { icon = game.GetRawExecutablePath(); } var args = new CmdLineOptions() { Start = game.Id.ToString() }.ToString(); Programs.CreateShortcut(PlaynitePaths.DesktopExecutablePath, args, icon, path); } catch (Exception exc) when(!PlayniteEnvironment.ThrowAllErrors) { logger.Error(exc, "Failed to create shortcut: "); Dialogs.ShowMessage( string.Format(resources.GetString("LOCGameShortcutError"), exc.Message), resources.GetString("LOCGameError"), MessageBoxButton.OK, MessageBoxImage.Error); } }