X-Git-Url: http://git.osdn.net/view?a=blobdiff_plain;f=na-get-lib%2FNaGet.SubCommands%2FNaGetInstall.cs;h=05f0db1d5260e9e10cff386cd33e3c4f143ffd36;hb=9a97ef5e1b4ce5dde8f5457986820624d4a063b7;hp=e000ff78ccba9294d72b799c1dc46c5063e6d852;hpb=28244d25caea176161ae04c320f561938de9835d;p=applistation%2FAppliStation.git
diff --git a/na-get-lib/NaGet.SubCommands/NaGetInstall.cs b/na-get-lib/NaGet.SubCommands/NaGetInstall.cs
index e000ff7..05f0db1 100644
--- a/na-get-lib/NaGet.SubCommands/NaGetInstall.cs
+++ b/na-get-lib/NaGet.SubCommands/NaGetInstall.cs
@@ -1,4 +1,5 @@
-using System;
+using System;
+using System.Collections.Generic;
using NaGet.Packages.Install;
using NaGet.Packages;
using NaGet.Net;
@@ -13,7 +14,19 @@ namespace NaGet.SubCommands
private PackageListsManager pkgListMan;
- public Downloader Downloader; // TODO QÆðµÄZbg·éæ¤É
+ ///
+ /// ãã¦ã³ãã¼ãã«ä½¿ããã¦ã³ãã¼ããªãã¸ã§ã¯ã
+ ///
+ public Downloader Downloader {
+ get {
+ if (downloader == null) {
+ downloader = new Downloader();
+ }
+ return downloader;
+ }
+ }
+
+ private Downloader downloader;
private bool packageInstallerDownloaded = false;
@@ -22,23 +35,23 @@ namespace NaGet.SubCommands
}
///
- /// CXg[·épbP[W
+ /// ã¤ã³ã¹ãã¼ã«ããããã±ã¼ã¸
///
public Installation[] Installations;
///
- /// RXgN^
+ /// ã³ã³ã¹ãã©ã¯ã¿
///
- /// CXg[·épbP[W
+ /// ã¤ã³ã¹ãã¼ã«ããããã±ã¼ã¸
public NaGetInstall(PackageListsManager pkgListMan, Package[] pkgs)
: this(pkgListMan, Installation.ConvertInstallations(pkgs))
{
}
///
- /// RXgN^
+ /// ã³ã³ã¹ãã©ã¯ã¿
///
- /// CXg[Ìzñ
+ /// ã¤ã³ã¹ãã¼ã«å¦çã®é
å
public NaGetInstall(PackageListsManager pkgMan, Installation[] installations)
{
pkgListMan = pkgMan;
@@ -49,17 +62,18 @@ namespace NaGet.SubCommands
private void initializeMainTaskSetNames()
{
- System.Collections.Generic.List taskSetNames = new System.Collections.Generic.List();
+ List taskSetNames = new List();
for (int i =0; i < Installations.Length; i++) {
- taskSetNames.Add(string.Format("æ¾: {0}", Installations[i].ToString()));
+ taskSetNames.Add(string.Format("åå¾: {0}", Installations[i].ToString()));
+ taskSetNames.Add(string.Format("ã¦ã¤ã«ã¹ã¹ãã£ã³: {0}", Installations[i].ToString()));
}
- taskSetNames.Add("CXg[ÌØ");
+ taskSetNames.Add("ã¤ã³ã¹ãã¼ã©ã¼ã®æ¤è¨¼");
for (int i =0; i < Installations.Length; i++) {
- taskSetNames.Add(string.Format("CXg[: {0}", Installations[i].ToString()));
+ taskSetNames.Add(string.Format("ã¤ã³ã¹ãã¼ã«: {0}", Installations[i].ToString()));
}
- taskSetNames.Add(string.Format("XgXV: {0}", NaGet.Env.ArchiveInstalledPackageListFile));
- taskSetNames.Add(string.Format("XgXV: {0}", NaGet.Env.SystemInstalledPackageListFile));
+ taskSetNames.Add(string.Format("ãªã¹ãæ´æ°: {0}", NaGet.Env.ArchiveInstalledPackageListFile));
+ taskSetNames.Add(string.Format("ãªã¹ãæ´æ°: {0}", NaGet.Env.SystemInstalledPackageListFile));
TaskSetNames = taskSetNames.ToArray();
}
@@ -67,39 +81,51 @@ namespace NaGet.SubCommands
public override void Run()
{
currentTaskSetIndex = 0;
- RaiseTaskSetEvent(NaGetTaskSetEventType.STARTED, "CXg[Jn");
+ RaiseTaskSetEvent(NaGetTaskSetEventType.STARTED, "ã¤ã³ã¹ãã¼ã«å¦çéå§");
{
- // nbV
ñKÈCXg[Ì\
- System.Collections.Generic.List invalidInstallers = null;
+ // ããã·ã¥éé©åãªã¤ã³ã¹ãã¼ã©ã®è¡¨
+ List invalidInstallers = null;
while (invalidInstallers == null || invalidInstallers.Count > 0) {
currentTaskSetIndex = 0;
packageInstallerDownloaded = false;
- runDownloadInstallers();
- if (done) return; // àµrunDownloadInstallers()àÅG[I¹µÄ¢½ÈçI¹
+ runDownloadAndVirusCheckInstallers();
+ if (done) return; // ããrunDownloadInstallers()å
ã§ã¨ã©ã¼çµäºãã¦ãããªãçµäº
packageInstallerDownloaded = true;
- // nbV
ÌóêÄ¢éCXg[ðæ¾
+
+ RaiseTaskSetEvent(NaGetTaskSetEventType.STARTED_TASKSET, TaskSetNames[currentTaskSetIndex]);
+
+ // ããã·ã¥ã®å£ãã¦ããã¤ã³ã¹ãã¼ã©ã¼ãåå¾
invalidInstallers = runCheckHashForInstaller();
- // nbV
ªóêÄ¢éÆ«ÌÎô
+ // ããã·ã¥ãå£ãã¦ããã¨ãã®å¯¾ç
if (invalidInstallers.Count > 0) {
- string msg = string.Format("{0}ÂÌpbP[WÅt@CªóêÄ¢éÂ\«ª èÜ·\n§IÉCXg[ð±sµÜ·©?",
- invalidInstallers.Count);
- NaGetTaskQueryResult result = RaiseTaskSetQueryEvent(msg, NaGetTaskQueryResult.CONTINUE
- | NaGetTaskQueryResult.RETRY
- | NaGetTaskQueryResult.CANCEL);
+ System.Text.StringBuilder invalidInstallerNames = new System.Text.StringBuilder();
+ foreach (Installation invalidInst in invalidInstallers) {
+ invalidInstallerNames.AppendFormat(" - {0}\n", invalidInst.ToString());
+ }
+
+ string msg = string.Format("以ä¸ã®{0}åã®ããã±ã¼ã¸ã§ãã¡ã¤ã«ãå£ãã¦ããå¯è½æ§ãããã¾ãã\n{1}\nå¼·å¶çã«ã¤ã³ã¹ãã¼ã«ãç¶è¡ãã¾ãã?",
+ invalidInstallers.Count, invalidInstallerNames.ToString());
+ NaGetTaskQueryResult result = NaGetTaskQueryResult.CANCEL;
+
+ if (!cancelCalled) {
+ result = RaiseTaskSetQueryEvent(msg, NaGetTaskQueryResult.CONTINUE
+ | NaGetTaskQueryResult.RETRY
+ | NaGetTaskQueryResult.CANCEL);
+ }
switch (result) {
case NaGetTaskQueryResult.CONTINUE:
- RaiseTaskSetEvent(NaGetTaskSetEventType.WARNING, "nbV
Ìñ®ð³µÄCXg[ðp±");
- invalidInstallers.Clear(); // nbV
ñKpbP[Wð§IÉÁ
+ RaiseTaskSetEvent(NaGetTaskSetEventType.WARNING, "ããã·ã¥ã®éæ´åãç¡è¦ãã¦ã¤ã³ã¹ãã¼ã«ãç¶ç¶");
+ invalidInstallers.Clear(); // ããã·ã¥éé©åããã±ã¼ã¸ãå¼·å¶çã«æ¹æ¶
break;
case NaGetTaskQueryResult.RETRY:
- RaiseTaskSetEvent(NaGetTaskSetEventType.INFO, "_E[hðÄs");
+ RaiseTaskSetEvent(NaGetTaskSetEventType.INFO, "ãã¦ã³ãã¼ãå¦çãå試è¡");
foreach (Installation invalidInst in invalidInstallers) {
invalidInst.RemoveDownloadedFile();
@@ -108,19 +134,20 @@ namespace NaGet.SubCommands
break;
//case NaGetTaskQueryResult.CANCEL:
default:
- RaiseTaskSetEvent(NaGetTaskSetEventType.CANCELED, "pbP[WÌCXg[ªLZ³êܵ½");
+ RaiseTaskSetEvent(NaGetTaskSetEventType.CANCELED, "ããã±ã¼ã¸ã®ã¤ã³ã¹ãã¼ã«å¦çããã£ã³ã»ã«ããã¾ãã");
done = true;
return;
}
}
currentTaskSetIndex ++;
+ RaiseTaskSetEvent(NaGetTaskSetEventType.COMPLETED_TASKSET, TaskSetNames[currentTaskSetIndex-1]);
}
}
foreach (Installation inst in Installations) {
- string installTaskMsg = inst.ToString();
+ string installTaskMsg = TaskSetNames[currentTaskSetIndex];
if (inst.Silent && (!inst.SupportsSilentOnly)) {
- installTaskMsg += " (TCgCXg[)";
+ installTaskMsg += " (ãµã¤ã¬ã³ãã¤ã³ã¹ãã¼ã«)";
}
RaiseTaskSetEvent(NaGetTaskSetEventType.STARTED_TASKSET, installTaskMsg);
@@ -131,7 +158,7 @@ namespace NaGet.SubCommands
inst.OutputDataReceived += this.ReceivedOutputData;
int exitCode = inst.Install();
if (exitCode != 0) {
- RaiseTaskSetEvent(NaGetTaskSetEventType.WARNING, "CXg[ª³íÉI¦Ä¢È¢Â\«ª èÜ·BCXg[ÌI¹R[h:"+exitCode);
+ RaiseTaskSetEvent(NaGetTaskSetEventType.WARNING, "ã¤ã³ã¹ãã¼ã«ãæ£å¸¸ã«çµãã¦ããªãå¯è½æ§ãããã¾ããããã»ã¹ã®çµäºã³ã¼ã:"+exitCode);
}
pkgListMan.WriteInstallationLog(inst);
@@ -145,89 +172,144 @@ namespace NaGet.SubCommands
RaiseTaskSetEvent(NaGetTaskSetEventType.COMPLETED_TASKSET, installTaskMsg);
if (cancelCalled) {
- RaiseTaskSetEvent(NaGetTaskSetEventType.CANCELED, "pbP[WÌCXg[ªLZ³êܵ½");
+ RaiseTaskSetEvent(NaGetTaskSetEventType.CANCELED, "ããã±ã¼ã¸ã®ã¤ã³ã¹ãã¼ã«å¦çããã£ã³ã»ã«ããã¾ãã");
done = true;
return;
}
}
- pkgListMan.SaveSystemInstalledLogList(); // OÌR~bg
+ pkgListMan.SaveSystemInstalledLogList(); // ãã°ã®ã³ããã
runLocalUpdate();
done = true;
- RaiseTaskSetEvent(NaGetTaskSetEventType.COMPLETED, "I¹", 100);
+ RaiseTaskSetEvent(NaGetTaskSetEventType.COMPLETED, "çµäº", 100);
}
///
- /// àeÌ_E[hªÌTu[`
+ /// å¦çå
容ã®ãã¦ã³ãã¼ãã»ã¦ã¤ã«ã¹ã¹ãã£ã³é¨åã®ãµãã«ã¼ãã³
///
- private void runDownloadInstallers()
+ private void runDownloadAndVirusCheckInstallers()
{
- foreach (Installation inst in Installations) {
- if (! inst.IsInstallablePackage()) {
- string msg = string.Format("{0}ÍCXg[·é±ÆªÅ«Ü¹ñ", inst.ToString());
-
- RaiseTaskSetEvent(NaGetTaskSetEventType.ERROR, msg);
- done = true;
- return;
- }
-
- RaiseTaskSetEvent(NaGetTaskSetEventType.STARTED_TASKSET, inst.ToString());
-
- if (! inst.Downloaded) {
- try {
- inst.Download(Downloader);
- } catch (NaGetTaskCanceledException) {
- RaiseTaskSetEvent(NaGetTaskSetEventType.CANCELED, "CXg[Ì_E[hªLZ³êܵ½");
+ using (DownloadScanner scanner = new DownloadScanner()) {
+ scanner.Init();
+ foreach (Installation inst in Installations) {
+ if (! inst.IsInstallablePackage()) {
+ string msg = string.Format("{0}ã¯ã¤ã³ã¹ãã¼ã«ãããã¨ãã§ãã¾ãã", inst.ToString());
+
+ RaiseTaskSetEvent(NaGetTaskSetEventType.ERROR, msg);
done = true;
return;
- } catch (System.Net.WebException e) {
- RaiseTaskSetEvent(NaGetTaskSetEventType.WARNING, e.Message);
- if (System.Net.NetworkInformation.NetworkInterface.GetIsNetworkAvailable()) {
- RaiseTaskSetEvent(NaGetTaskSetEventType.ERROR, "lbg[NÉÚ±³êĢܹñB");
- } else {
- RaiseTaskSetEvent(NaGetTaskSetEventType.ERROR, "lbg[NÉڱūܹñŵ½Blbg[NªØf³êÄ¢é©At@CAEH[ÉæÁÄÕf³ê½Â\«ª èÜ·B");
+ }
+
+ RaiseTaskSetEvent(NaGetTaskSetEventType.STARTED_TASKSET, TaskSetNames[currentTaskSetIndex]);
+
+ if (! inst.Downloaded) {
+ try {
+ inst.Download(Downloader);
+ } catch (NaGetTaskCanceledException) {
+ RaiseTaskSetEvent(NaGetTaskSetEventType.CANCELED, "ã¤ã³ã¹ãã¼ã©ã¼ã®ãã¦ã³ãã¼ãå¦çããã£ã³ã»ã«ããã¾ãã");
+ done = true;
+ return;
+ } catch (System.Net.WebException e) {
+ RaiseTaskSetEvent(NaGetTaskSetEventType.WARNING, e.Message);
+ if (System.Net.NetworkInformation.NetworkInterface.GetIsNetworkAvailable()) {
+ RaiseTaskSetEvent(NaGetTaskSetEventType.ERROR, "ãããã¯ã¼ã¯ã«æ¥ç¶ããã¦ãã¾ããã");
+ } else {
+ RaiseTaskSetEvent(NaGetTaskSetEventType.ERROR, "ãããã¯ã¼ã¯ã«æ¥ç¶ã§ãã¾ããã§ããããããã¯ã¼ã¯ãåæããã¦ãããããã¡ã¤ã¢ã¦ã©ã¼ã«ã«ãã£ã¦é®æãããå¯è½æ§ãããã¾ãã");
+ }
+ done = true;
+ return;
+ } catch (Exception e) {
+ RaiseTaskSetEvent(NaGetTaskSetEventType.ERROR, e.Message);
+ done = true;
+ return;
}
+ }
+ currentTaskSetIndex ++;
+
+ if (inst.Downloaded) { // æ£å¸¸çµäº
+ RaiseTaskSetEvent(NaGetTaskSetEventType.COMPLETED_TASKSET, TaskSetNames[currentTaskSetIndex-1]);
+ } else { // ã¤ã³ã¹ãã¼ã«ãå®äºããã«çµãã£ã=失æ=ã¨ã©ã¼
+ RaiseTaskSetEvent(NaGetTaskSetEventType.ERROR, string.Format("{0}ã®ã¤ã³ã¹ãã¼ã©ã¼ãã¡ã¤ã«ãæ£å¸¸ã«ãã¦ã³ãã¼ãã§ãã¾ããã§ãã", inst.ToString()));
done = true;
return;
- } catch (Exception e) {
- RaiseTaskSetEvent(NaGetTaskSetEventType.ERROR, e.Message);
+ }
+
+ RaiseTaskSetEvent(NaGetTaskSetEventType.STARTED_TASKSET, TaskSetNames[currentTaskSetIndex]);
+ if (! NaGet.Env.EnableScanInstallerFile) {
+ RaiseTaskSetEvent(NaGetTaskSetEventType.INFO, "ã¦ã¤ã«ã¹ã¹ãã£ã³ãè¡ããªãè¨å®ã®ããããã¦ã³ãã¼ããããã¡ã¤ã«ã¯ã¦ã¤ã«ã¹ã¹ãã£ã³ããã¾ããã§ãã");
+ } else if (!scanner.HasScanner) {
+ RaiseTaskSetEvent(NaGetTaskSetEventType.INFO, "ãã¦ã³ãã¼ããããã¡ã¤ã«ã¯ã¦ã¤ã«ã¹ã¹ãã£ã³ããã¾ããã§ããï¼ã¦ã¤ã«ã¹ã¹ãã£ã³ã½ãããæ¤åºã§ãã¾ããã§ããï¼");
+ } else {
+ try {
+ DownloadScannerResult result = inst.ScanInstallerFile(scanner);
+
+ switch (result) {
+ case DownloadScannerResult.ScannerNotFound:
+ RaiseTaskSetEvent(NaGetTaskSetEventType.INFO, "ãã¦ã³ãã¼ããããã¡ã¤ã«ã¯ã¦ã¤ã«ã¹ã¹ãã£ã³ããã¾ããã§ããï¼ã¦ã¤ã«ã¹ã¹ãã£ã³ã½ãããæ¤åºã§ãã¾ããã§ããï¼");
+ break;
+ case DownloadScannerResult.InfectedAndCleaned:
+ RaiseTaskSetEvent(NaGetTaskSetEventType.ERROR,
+ "ã¤ã³ã¹ãã¼ã©ã¼ãã¡ã¤ã«ããã¦ã¤ã«ã¹ææãæ¤åºããããããåé¤ããã¾ããã");
+ done = true;
+ return;
+ case DownloadScannerResult.InfectedButNotCleaned:
+ RaiseTaskSetEvent(NaGetTaskSetEventType.ERROR,
+ "ã¤ã³ã¹ãã¼ã©ã¼ãã¡ã¤ã«ããã¦ã¤ã«ã¹ææãæ¤åºããã¾ããã");
+ done = true;
+ break;
+ case DownloadScannerResult.ErrorNotFound:
+ throw new System.IO.FileNotFoundException(string.Empty);
+ //break;
+ }
+
+ } catch (System.Runtime.InteropServices.COMException ex) {
+ RaiseTaskSetEvent(NaGetTaskSetEventType.WARNING,
+ string.Format("{0} (E{1})", ex.Message, ex.ErrorCode));
+ } catch (System.IO.FileNotFoundException ex) {
+ if (ex.InnerException is System.Runtime.InteropServices.COMException) {
+ RaiseTaskSetEvent(NaGetTaskSetEventType.WARNING,
+ string.Format("{0} (E{1})", ex.InnerException.Message, ((System.Runtime.InteropServices.COMException) ex.InnerException).ErrorCode));
+ }
+ RaiseTaskSetEvent(NaGetTaskSetEventType.ERROR, "ã¤ã³ã¹ãã¼ã©ã¼ãã¡ã¤ã«ãã¦ã¤ã«ã¹ã¹ãã£ãã¼ã«ãã£ã¦åé¤ããã¾ããã");
+ done = true;
+ return;
+ }
+ }
+ currentTaskSetIndex ++;
+ RaiseTaskSetEvent(NaGetTaskSetEventType.COMPLETED_TASKSET, TaskSetNames[currentTaskSetIndex-1]);
+
+ if (cancelCalled) {
+ RaiseTaskSetEvent(NaGetTaskSetEventType.CANCELED, "ããã±ã¼ã¸ã®ã¤ã³ã¹ãã¼ã«å¦çããã£ã³ã»ã«ããã¾ãã");
done = true;
return;
}
}
- currentTaskSetIndex ++;
-
- if (inst.Downloaded) { // ³íI¹
- RaiseTaskSetEvent(NaGetTaskSetEventType.COMPLETED_TASKSET, inst.ToString());
- } else { // CXg[ª®¹¹¸ÉIíÁ½=¸s=G[
- RaiseTaskSetEvent(NaGetTaskSetEventType.ERROR, string.Format("{0}ÌCXg[ð³íÉ_E[hūܹñŵ½", inst.ToString()));
- }
}
}
///
- /// _E[hµ½pbP[Wª®µ½©Û©nbV
Å`FbN
+ /// ãã¦ã³ãã¼ãããããã±ã¼ã¸ãæ´åãããå¦ãããã·ã¥ã§ãã§ãã¯
///
- /// ®µÈ©Á½CXg[ÌXg
- private System.Collections.Generic.List runCheckHashForInstaller()
+ /// æ´åããªãã£ãã¤ã³ã¹ãã¼ã©ã¼ã®ãªã¹ã
+ private List runCheckHashForInstaller()
{
- System.Collections.Generic.List invalidInstallers = new System.Collections.Generic.List();
+ List invalidInstallers = new List();
int i = 0;
foreach (Installation inst in Installations) {
float percent = (CurrentTaskSetIndex+((float)i / Installations.Length))*100f/TaskSetNames.Length;
if (inst.GetRegisteredHashCount() > 0) {
- RaiseTaskSetEvent(NaGetTaskSetEventType.INFO, "Ø: "+inst.ToString(), percent);
+ RaiseTaskSetEvent(NaGetTaskSetEventType.INFO, "æ¤è¨¼: "+inst.ToString(), percent);
if (inst.IsInstallablePackage() && inst.VerifyHashValues() == false) {
invalidInstallers.Add(inst);
- RaiseTaskSetEvent(NaGetTaskSetEventType.WARNING, "Ø: "+inst.ToString() + " ñ®", percent);
+ RaiseTaskSetEvent(NaGetTaskSetEventType.WARNING, "æ¤è¨¼: "+inst.ToString() + " éæ´å", percent);
} else {
- RaiseTaskSetEvent(NaGetTaskSetEventType.INFO, "Ø: "+inst.ToString() + " OK", percent);
+ RaiseTaskSetEvent(NaGetTaskSetEventType.INFO, "æ¤è¨¼: "+inst.ToString() + " OK", percent);
}
}
i++;
@@ -238,14 +320,14 @@ namespace NaGet.SubCommands
private void runLocalUpdate()
{
- // CXg[gXgÌXV
+ // ã¤ã³ã¹ãã¼ã«ããªã¹ãã®æ´æ°
RaiseTaskSetEvent(NaGetTaskSetEventType.STARTED_TASKSET, TaskSetNames[currentTaskSetIndex]);
pkgListMan.DetectInstalledPkgs();
pkgListMan.SaveInstalledPackageList();
currentTaskSetIndex++;
RaiseTaskSetEvent(NaGetTaskSetEventType.COMPLETED_TASKSET, TaskSetNames[currentTaskSetIndex-1]);
- // VXeÉCXg[³êÄ¢éXgÌXV
+ // ã·ã¹ãã ã«ã¤ã³ã¹ãã¼ã«ããã¦ãããªã¹ãã®æ´æ°
RaiseTaskSetEvent(NaGetTaskSetEventType.STARTED_TASKSET, TaskSetNames[currentTaskSetIndex]);
pkgListMan.DetectSystemInstalledPkgs();
pkgListMan.SaveSystemInstalledPackageList();