RelativePathThread.cs 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. using GeekDesk.Constant;
  2. using GeekDesk.Util;
  3. using GeekDesk.ViewModel;
  4. using System;
  5. using System.Collections.Generic;
  6. using System.Collections.ObjectModel;
  7. using System.IO;
  8. using System.Linq;
  9. using System.Text;
  10. using System.Threading;
  11. using System.Threading.Tasks;
  12. namespace GeekDesk.MyThread
  13. {
  14. public class RelativePathThread
  15. {
  16. public static void MakeRelativePath()
  17. {
  18. new Thread(() =>
  19. {
  20. ObservableCollection<MenuInfo> menuList = MainWindow.appData.MenuList;
  21. string myExePath = Constants.APP_DIR + "GeekDesk.exe";
  22. foreach (MenuInfo mi in menuList)
  23. {
  24. ObservableCollection<IconInfo> iconList = mi.IconList;
  25. foreach (IconInfo icon in iconList)
  26. {
  27. string relativePath = FileUtil.MakeRelativePath(myExePath, icon.Path);
  28. if (File.Exists(icon.Path)
  29. && !string.IsNullOrEmpty(relativePath)
  30. && !relativePath.Equals(icon.Path)) {
  31. icon.RelativePath_NoWrite = relativePath;
  32. }
  33. }
  34. }
  35. CommonCode.SaveAppData(MainWindow.appData, Constants.DATA_FILE_PATH);
  36. CommonCode.SaveAppData(MainWindow.appData, Constants.DATA_FILE_BAK_PATH);
  37. }).Start();
  38. }
  39. }
  40. }