6 namespace NaGet.SubCommands.SubTask
8 public class LocalUpdateSubTask : NaGetSubTask
10 private PackageListsManager pkgListMan;
12 public LocalUpdateSubTask(PackageListsManager pkgListMan)
14 this.pkgListMan = pkgListMan;
17 public override void Run()
20 RaiseTaskSetEvent(TaskEventType.STARTED, "インストール済みファイルリスト更新", 0);
23 pkgListMan.DetectInstalledPkgs();
24 } catch (PackageInformationFileAccessException e) {
25 recoverExceptionAtDetectInstalledPkgs(e);
27 pkgListMan.SaveInstalledPackageList();
28 RaiseTaskSetEvent(TaskEventType.INFO, string.Format("{0} を更新しました", NaGet.Env.ArchiveInstalledPackageListFile), 50);
30 pkgListMan.DetectSystemInstalledPkgs();
31 pkgListMan.SaveSystemInstalledPackageList();
32 RaiseTaskSetEvent(TaskEventType.INFO, string.Format("{0} を更新しました", NaGet.Env.SystemInstalledPackageListFile), 100);
34 RaiseTaskSetEvent(TaskEventType.COMPLETED, "インストール済みファイルリスト更新", 100);
38 private void recoverExceptionAtDetectInstalledPkgs(PackageInformationFileAccessException e)
40 RaiseTaskSetEvent(TaskEventType.WARNING, string.Format("{0} が読み込めませんでした", e.FilePath), -1);
42 string dirPath = Path.GetDirectoryName(e.FilePath);
43 if (Directory.Exists(dirPath)) {
44 NaGet.Utils.SetAttributeRecursive(dirPath, FileAttributes.Normal);
45 Directory.Delete(dirPath, true);
46 RaiseTaskSetEvent(TaskEventType.WARNING, string.Format("{0}を削除しました。", Path.GetDirectoryName(e.FilePath)), -1);
48 pkgListMan.DetectInstalledPkgs();