diff --git a/UWPHook/GamesWindow.xaml.cs b/UWPHook/GamesWindow.xaml.cs index edeaeb0..f290ca8 100644 --- a/UWPHook/GamesWindow.xaml.cs +++ b/UWPHook/GamesWindow.xaml.cs @@ -58,7 +58,7 @@ namespace UWPHook if (args?.Length > 1) { // When length is 1, the only argument is the path where the app is installed - _ = LauncherAsync(args); // Launches the requested game + _ = LauncherAsync(args); // Launches the requested game } else @@ -177,11 +177,11 @@ namespace UWPHook await RestartSteam(restartSteam); msg = "Your apps were successfuly exported!"; - if(!restartSteam) + if (!restartSteam) { msg += " Please restart Steam in order to see them."; } - else if(result) + else if (result) { msg += " Steam has been restarted."; } @@ -231,7 +231,7 @@ namespace UWPHook stream.Close(); client.Dispose(); } - }); + }); } /// @@ -239,16 +239,16 @@ namespace UWPHook /// /// The user path to copy images to private void CopyTempGridImagesToSteamUser(string user) - { + { string tmpGridDirectory = Path.GetTempPath() + "UWPHook\\tmp_grid\\"; string userGridDirectory = user + "\\config\\grid\\"; - + // No images were downloaded, maybe the key is invalid or no app had an image if (!Directory.Exists(tmpGridDirectory)) { return; } - + string[] images = Directory.GetFiles(tmpGridDirectory); if (!Directory.Exists(userGridDirectory)) @@ -295,7 +295,7 @@ namespace UWPHook Log.Error(exception.Message); throw; } - + if (games != null) { var game = games[0]; @@ -435,7 +435,8 @@ namespace UWPHook } }); } - else { + else + { icon = PersistAppIcon(app); } @@ -461,7 +462,7 @@ namespace UWPHook for (int i = 0; i < shortcuts.Length; i++) { Log.Verbose(shortcuts[i].ToString()); - + if (shortcuts[i].AppName == app.Name) { @@ -525,38 +526,38 @@ namespace UWPHook /// Copies an apps icon to a intermediate location /// Due to some apps changing the icon location when they update, which causes icons to be "lost" /// - /// App to copy the icon from - /// - private string PersistAppIcon(AppEntry app) + /// App to copy the icon to + /// Overwrites the app.icon to be copied + /// string, the path to the usable and persisted icon + private string PersistAppIcon(AppEntry app, string forcedIcon = "") { string path = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData); string icons_path = path + @"\Briano\UWPHook\icons\"; - if (!Directory.Exists(icons_path)) - { - Directory.CreateDirectory(icons_path); - } + // If we do not have an specific icon to copy, copy app.icon, if we do, copy the specified icon + string icon_to_copy = String.IsNullOrEmpty(forcedIcon) ? app.Icon : forcedIcon; - string destFile = String.Join(String.Empty, icons_path, app.Aumid + Path.GetFileName(app.Icon)); - File.Copy(app.Icon, destFile, true); - - return destFile; - } - - private string PersistAppIcon(AppEntry app, string iconDownloadedPath) - { - string path = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData); - string icons_path = path + @"\Briano\UWPHook\icons\"; if (!Directory.Exists(icons_path)) { Directory.CreateDirectory(icons_path); } - string destFile = String.Join(String.Empty, icons_path, app.Aumid + Path.GetFileName(iconDownloadedPath)); - File.Copy(iconDownloadedPath, destFile, true); + string dest_file = String.Join(String.Empty, icons_path, app.Aumid + Path.GetFileName(icon_to_copy)); + try + { + File.Copy(icon_to_copy, dest_file, true); + } + catch (System.IO.IOException) + { + // This file is most likely encrypted or does not exist, so we return the app.Icon itself + // but this app is now prone to #90 unfortunately, if we return String.empty, Steam will default + // to UWPHook's icon + Log.Warning("File could not be copied: " + icon_to_copy); + dest_file = app.Icon; + } - return destFile; + return dest_file; } /// @@ -792,7 +793,7 @@ namespace UWPHook } } } - + public static void SetLogLevel() { switch (Settings.Default.SelectedLogLevel)