2 using NaGet.Packages.Install;
\r
3 using NaGet.Packages;
\r
6 namespace NaGet.SubCommands
\r
8 public class NaGetInstall : NaGetTaskSet
\r
10 private bool done = false;
\r
12 private int currentTaskSetIndex = -1;
\r
14 private PackageListsManager pkgListMan;
\r
16 public Downloader Downloader; // TODO
\8eQ
\8fÆ
\82ð
\82µ
\82Ä
\83Z
\83b
\83g
\82·
\82é
\82æ
\82¤
\82É
\r
18 private bool packageInstallerDownloaded = false;
\r
20 public override bool Cancelable {
\r
21 get { return ! done; }
\r
25 ///
\83C
\83\93\83X
\83g
\81[
\83\8b\82·
\82é
\83p
\83b
\83P
\81[
\83W
\r
27 public Installation[] Installations;
\r
30 ///
\83R
\83\93\83X
\83g
\83\89\83N
\83^
\r
32 /// <param name="pkgs">
\83C
\83\93\83X
\83g
\81[
\83\8b\82·
\82é
\83p
\83b
\83P
\81[
\83W</param>
\r
33 public NaGetInstall(PackageListsManager pkgListMan, Package[] pkgs)
\r
34 : this(pkgListMan, Installation.ConvertInstallations(pkgs))
\r
39 ///
\83R
\83\93\83X
\83g
\83\89\83N
\83^
\r
41 /// <param name="installations">
\83C
\83\93\83X
\83g
\81[
\83\8b\8f\88\97\9d\82Ì
\94z
\97ñ</param>
\r
42 public NaGetInstall(PackageListsManager pkgMan, Installation[] installations)
\r
44 pkgListMan = pkgMan;
\r
46 Installations = installations;
\r
47 initializeMainTaskSetNames();
\r
50 private void initializeMainTaskSetNames()
\r
52 System.Collections.Generic.List<string> taskSetNames = new System.Collections.Generic.List<string>();
\r
54 for (int i =0; i < Installations.Length; i++) {
\r
55 taskSetNames.Add(string.Format("
\8eæ
\93¾: {0}", Installations[i].ToString()));
\r
57 taskSetNames.Add("
\83C
\83\93\83X
\83g
\81[
\83\89\82Ì
\8c\9f\8fØ");
\r
58 for (int i =0; i < Installations.Length; i++) {
\r
59 taskSetNames.Add(string.Format("
\83C
\83\93\83X
\83g
\81[
\83\8b: {0}", Installations[i].ToString()));
\r
61 taskSetNames.Add(string.Format("
\83\8a\83X
\83g
\8dX
\90V: {0}", NaGet.Env.ArchiveInstalledPackageListFile));
\r
62 taskSetNames.Add(string.Format("
\83\8a\83X
\83g
\8dX
\90V: {0}", NaGet.Env.SystemInstalledPackageListFile));
\r
64 TaskSetNames = taskSetNames.ToArray();
\r
67 public override void Run()
\r
69 currentTaskSetIndex ++;
\r
70 RaiseTaskSetEvent(NaGetTaskSetEventType.STARTED, "
\83C
\83\93\83X
\83g
\81[
\83\8b\8f\88\97\9d\8aJ
\8en");
\r
72 foreach (Installation inst in Installations) {
\r
73 if (! inst.IsInstallablePackage()) {
\r
74 string msg = string.Format("{0}
\82Í
\83C
\83\93\83X
\83g
\81[
\83\8b\82·
\82é
\82±
\82Æ
\82ª
\82Å
\82«
\82Ü
\82¹
\82ñ", inst.ToString());
\r
76 RaiseTaskSetEvent(NaGetTaskSetEventType.ERROR, msg);
\r
81 RaiseTaskSetEvent(NaGetTaskSetEventType.STARTED_TASKSET, inst.ToString());
\r
83 if (! inst.Downloaded) {
\r
85 inst.Download(Downloader);
\r
86 } catch (NaGetTaskCanceledException) {
\r
87 RaiseTaskSetEvent(NaGetTaskSetEventType.CANCELED, "
\83C
\83\93\83X
\83g
\81[
\83\89\82Ì
\83_
\83E
\83\93\83\8d\81[
\83h
\8f\88\97\9d\82ª
\83L
\83\83\83\93\83Z
\83\8b\82³
\82ê
\82Ü
\82µ
\82½");
\r
90 } catch (System.Net.WebException e) {
\r
91 RaiseTaskSetEvent(NaGetTaskSetEventType.WARNING, e.Message);
\r
92 if (System.Net.NetworkInformation.NetworkInterface.GetIsNetworkAvailable()) {
\r
93 RaiseTaskSetEvent(NaGetTaskSetEventType.ERROR, "
\83l
\83b
\83g
\83\8f\81[
\83N
\82É
\90Ú
\91±
\82³
\82ê
\82Ä
\82¢
\82Ü
\82¹
\82ñ
\81B");
\r
95 RaiseTaskSetEvent(NaGetTaskSetEventType.ERROR, "
\83l
\83b
\83g
\83\8f\81[
\83N
\82É
\90Ú
\91±
\82Å
\82«
\82Ü
\82¹
\82ñ
\82Å
\82µ
\82½
\81B
\83l
\83b
\83g
\83\8f\81[
\83N
\82ª
\90Ø
\92f
\82³
\82ê
\82Ä
\82¢
\82é
\82©
\81A
\83t
\83@
\83C
\83A
\83E
\83H
\81[
\83\8b\82É
\82æ
\82Á
\82Ä
\8eÕ
\92f
\82³
\82ê
\82½
\89Â
\94\
\90«
\82ª
\82 \82è
\82Ü
\82·
\81B");
\r
99 } catch (Exception e) {
\r
100 RaiseTaskSetEvent(NaGetTaskSetEventType.ERROR, e.Message);
\r
105 currentTaskSetIndex ++;
\r
107 if (inst.Downloaded) { //
\90³
\8fí
\8fI
\97¹
\r
108 RaiseTaskSetEvent(NaGetTaskSetEventType.COMPLETED_TASKSET, inst.ToString());
\r
109 } else { //
\83C
\83\93\83X
\83g
\81[
\83\8b\82ª
\8a®
\97¹
\82¹
\82¸
\82É
\8fI
\82í
\82Á
\82½=
\8e¸
\94s=
\83G
\83\89\81[
\r
110 RaiseTaskSetEvent(NaGetTaskSetEventType.ERROR, string.Format("{0}
\82Ì
\83C
\83\93\83X
\83g
\81[
\83\89\82ð
\90³
\8fí
\82É
\83_
\83E
\83\93\83\8d\81[
\83h
\82Å
\82«
\82Ü
\82¹
\82ñ
\82Å
\82µ
\82½", inst.ToString()));
\r
114 packageInstallerDownloaded = true;
\r
117 bool invalid = false;
\r
119 foreach (Installation inst in Installations) {
\r
120 float percent = (CurrentTaskSetIndex+((float)i / Installations.Length))*100f/TaskSetNames.Length;
\r
122 if (inst.GetRegisteredHashCount() > 0) {
\r
123 RaiseTaskSetEvent(NaGetTaskSetEventType.INFO, "
\8c\9f\8fØ: "+inst.ToString(), percent);
\r
125 if (inst.IsInstallablePackage() && inst.VerifyHashValues() == false) {
\r
127 RaiseTaskSetEvent(NaGetTaskSetEventType.WARNING, "
\8c\9f\8fØ: "+inst.ToString() + "
\94ñ
\90®
\8d\87", percent);
\r
129 RaiseTaskSetEvent(NaGetTaskSetEventType.INFO, "
\8c\9f\8fØ: "+inst.ToString() + " OK", percent);
\r
136 //
\83n
\83b
\83V
\83\85\82ª
\89ó
\82ê
\82Ä
\82¢
\82é
\82Æ
\82«
\82Ì
\91Î
\8dô
\r
138 string msg = "
\82¢
\82
\82Â
\82©
\82Ì
\83p
\83b
\83P
\81[
\83W
\82Å
\83t
\83@
\83C
\83\8b\82ª
\89ó
\82ê
\82Ä
\82¢
\82é
\89Â
\94\
\90«
\82ª
\82 \82è
\82Ü
\82·\n
\8b
\90§
\93I
\82É
\83C
\83\93\83X
\83g
\81[
\83\8b\82ð
\91±
\8ds
\82µ
\82Ü
\82·
\82©?";
\r
139 NaGetTaskQueryResult result = RaiseTaskSetQueryEvent(msg, NaGetTaskQueryResult.CONTINUE | NaGetTaskQueryResult.CANCEL);
\r
141 if (result != NaGetTaskQueryResult.CONTINUE) {
\r
142 RaiseTaskSetEvent(NaGetTaskSetEventType.CANCELED, "
\83p
\83b
\83P
\81[
\83W
\82Ì
\83C
\83\93\83X
\83g
\81[
\83\8b\8f\88\97\9d\82ª
\83L
\83\83\83\93\83Z
\83\8b\82³
\82ê
\82Ü
\82µ
\82½");
\r
146 RaiseTaskSetEvent(NaGetTaskSetEventType.WARNING, "
\83n
\83b
\83V
\83\85\82Ì
\94ñ
\90®
\8d\87\82ð
\96³
\8e\8b\82µ
\82Ä
\83C
\83\93\83X
\83g
\81[
\83\8b\82ð
\8cp
\91±");
\r
149 currentTaskSetIndex ++;
\r
152 foreach (Installation inst in Installations) {
\r
153 RaiseTaskSetEvent(NaGetTaskSetEventType.STARTED_TASKSET, inst.ToString());
\r
156 inst.ErrorDataReceived += this.ReceivedErrorData;
\r
157 inst.OutputDataReceived += this.ReceivedOutputData;
\r
158 int exitCode = inst.Install();
\r
159 if (exitCode != 0) {
\r
160 RaiseTaskSetEvent(NaGetTaskSetEventType.WARNING, "
\83C
\83\93\83X
\83g
\81[
\83\8b\82ª
\90³
\8fí
\82É
\8fI
\82¦
\82Ä
\82¢
\82È
\82¢
\89Â
\94\
\90«
\82ª
\82 \82è
\82Ü
\82·
\81B
\83C
\83\93\83X
\83g
\81[
\83\89\82Ì
\8fI
\97¹
\83R
\81[
\83h:"+exitCode);
\r
163 pkgListMan.WriteInstallationLog(inst);
\r
164 } catch (Exception e) {
\r
165 RaiseTaskSetEvent(NaGetTaskSetEventType.ERROR, e.Message);
\r
169 currentTaskSetIndex ++;
\r
171 RaiseTaskSetEvent(NaGetTaskSetEventType.COMPLETED_TASKSET, inst.ToString());
\r
173 if (cancelCalled) {
\r
174 RaiseTaskSetEvent(NaGetTaskSetEventType.CANCELED, "
\83p
\83b
\83P
\81[
\83W
\82Ì
\83C
\83\93\83X
\83g
\81[
\83\8b\8f\88\97\9d\82ª
\83L
\83\83\83\93\83Z
\83\8b\82³
\82ê
\82Ü
\82µ
\82½");
\r
179 pkgListMan.SaveSystemInstalledLogList(); //
\83\8d\83O
\82Ì
\83R
\83~
\83b
\83g
\r
185 RaiseTaskSetEvent(NaGetTaskSetEventType.COMPLETED, "
\8fI
\97¹", 100);
\r
188 private void runLocalUpdate()
\r
190 //
\83C
\83\93\83X
\83g
\81[
\83\8b\83g
\83\8a\83X
\83g
\82Ì
\8dX
\90V
\r
191 RaiseTaskSetEvent(NaGetTaskSetEventType.STARTED_TASKSET, TaskSetNames[currentTaskSetIndex]);
\r
192 pkgListMan.DetectInstalledPkgs();
\r
193 pkgListMan.SaveInstalledPackageList();
\r
194 currentTaskSetIndex++;
\r
195 RaiseTaskSetEvent(NaGetTaskSetEventType.COMPLETED_TASKSET, TaskSetNames[currentTaskSetIndex-1]);
\r
197 //
\83V
\83X
\83e
\83\80\82É
\83C
\83\93\83X
\83g
\81[
\83\8b\82³
\82ê
\82Ä
\82¢
\82é
\83\8a\83X
\83g
\82Ì
\8dX
\90V
\r
198 RaiseTaskSetEvent(NaGetTaskSetEventType.STARTED_TASKSET, TaskSetNames[currentTaskSetIndex]);
\r
199 pkgListMan.DetectSystemInstalledPkgs();
\r
200 pkgListMan.SaveSystemInstalledPackageList();
\r
201 currentTaskSetIndex++;
\r
202 RaiseTaskSetEvent(NaGetTaskSetEventType.COMPLETED_TASKSET, TaskSetNames[currentTaskSetIndex-1]);
\r
205 public override bool Done {
\r
206 get { return done; }
\r
209 public override int CurrentTaskSetIndex {
\r
210 get { return currentTaskSetIndex; }
\r
213 private bool cancelCalled = false;
\r
215 public override bool Cancel()
\r
217 cancelCalled = true;
\r
218 if (! packageInstallerDownloaded) {
\r
219 return Downloader.Cancel();
\r
220 } else return true;
\r