public void CreateDesktopShortcut(Game game) { try { var path = Environment.ExpandEnvironmentVariables(Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.DesktopDirectory), Paths.GetSafePathName(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") { FileSystem.CreateDirectory(PlaynitePaths.IconsCachePath); var targetIconPath = Path.Combine(PlaynitePaths.IconsCachePath, game.Id + ".ico"); BitmapExtensions.ConvertToIcon(icon, targetIconPath); if (File.Exists(targetIconPath)) { icon = targetIconPath; } } } 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); } }