get {\r
if (downloader == null) {\r
downloader = new Downloader();\r
+ downloader.DownloadEventRaised += delegate(object sender, DownloadEventArgs e) {\r
+ if (e.Type == DownloadEventType.DOWNLOADING && e.TaskProgressPercent > 0) {\r
+ RaiseTaskSetEvent(NaGetTaskSetEventType.PING, string.Empty, GetProgressPercent(NaGetTaskSetEventType.PING, e.TaskProgressPercent));\r
+ }\r
+ };\r
}\r
return downloader;\r
}\r
// ハッシュ非適合なインストーラの表\r
List<Installation> invalidInstallers = null;\r
\r
- while (invalidInstallers == null || invalidInstallers.Count > 0) {\r
+ do {\r
currentTaskSetIndex = 0;\r
packageInstallerDownloaded = false;\r
\r
return;\r
}\r
}\r
- currentTaskSetIndex ++;\r
- RaiseTaskSetEvent(NaGetTaskSetEventType.COMPLETED_TASKSET, TaskSetNames[currentTaskSetIndex-1]);\r
- }\r
+ \r
+ // もしハッシュが不適合なソフトがあるならばダウンロード処理からやり直す\r
+ } while (invalidInstallers == null || invalidInstallers.Count > 0);\r
+ RaiseTaskSetEvent(NaGetTaskSetEventType.COMPLETED_TASKSET, TaskSetNames[currentTaskSetIndex]);\r
+ currentTaskSetIndex ++;\r
}\r
\r
foreach (Installation inst in Installations) {\r
done = true;\r
return;\r
}\r
- currentTaskSetIndex ++;\r
- \r
RaiseTaskSetEvent(NaGetTaskSetEventType.COMPLETED_TASKSET, installTaskMsg);\r
+ currentTaskSetIndex ++;\r
\r
if (cancelCalled) {\r
RaiseTaskSetEvent(NaGetTaskSetEventType.CANCELED, "パッケージのインストール処理がキャンセルされました");\r
return;\r
}\r
}\r
- pkgListMan.SaveSystemInstalledLogList(); // ログのコミット\r
\r
runLocalUpdate();\r
\r
return;\r
}\r
}\r
- currentTaskSetIndex ++;\r
\r
- if (inst.Downloaded) { // 正常終了\r
- RaiseTaskSetEvent(NaGetTaskSetEventType.COMPLETED_TASKSET, TaskSetNames[currentTaskSetIndex-1]);\r
- } else { // インストールが完了せずに終わった=失敗=エラー\r
+ if (! inst.Downloaded) { // インストールが完了せずに終わった=失敗=エラー\r
RaiseTaskSetEvent(NaGetTaskSetEventType.ERROR, string.Format("{0}のインストーラーファイルを正常にダウンロードできませんでした", inst.ToString()));\r
done = true;\r
return;\r
}\r
+ RaiseTaskSetEvent(NaGetTaskSetEventType.COMPLETED_TASKSET, TaskSetNames[currentTaskSetIndex]);\r
+ currentTaskSetIndex ++;\r
\r
RaiseTaskSetEvent(NaGetTaskSetEventType.STARTED_TASKSET, TaskSetNames[currentTaskSetIndex]);\r
if (! NaGet.Env.EnableScanInstallerFile) {\r
- RaiseTaskSetEvent(NaGetTaskSetEventType.INFO, string.Format("ウイルススキャンを行わない設定のため、ダウンロードしたファイルはウイルススキャンされませんでした"));\r
+ RaiseTaskSetEvent(NaGetTaskSetEventType.INFO, "ウイルススキャンを行わない設定のため、ダウンロードしたファイルはウイルススキャンされませんでした");\r
} else if (!scanner.HasScanner) {\r
- RaiseTaskSetEvent(NaGetTaskSetEventType.INFO, string.Format("ダウンロードしたファイルはウイルススキャンされませんでした(ウイルススキャンソフトが検出できませんでした)"));\r
+ RaiseTaskSetEvent(NaGetTaskSetEventType.INFO, "ダウンロードしたファイルはウイルススキャンされませんでした(ウイルススキャンソフトが検出できませんでした)");\r
} else {\r
try {\r
- inst.ScanInstallerFile(scanner);\r
+ DownloadScannerResult result = inst.ScanInstallerFile(scanner);\r
+ \r
+ switch (result) {\r
+ case DownloadScannerResult.ScannerNotFound:\r
+ RaiseTaskSetEvent(NaGetTaskSetEventType.INFO, "ダウンロードしたファイルはウイルススキャンされませんでした(ウイルススキャンソフトが検出できませんでした)");\r
+ break;\r
+ case DownloadScannerResult.InfectedAndCleaned:\r
+ RaiseTaskSetEvent(NaGetTaskSetEventType.ERROR,\r
+ "インストーラーファイルからウイルス感染が検出されたため、削除されました。");\r
+ done = true;\r
+ return;\r
+ case DownloadScannerResult.InfectedButNotCleaned:\r
+ RaiseTaskSetEvent(NaGetTaskSetEventType.ERROR,\r
+ "インストーラーファイルからウイルス感染が検出されました。");\r
+ done = true;\r
+ break;\r
+ case DownloadScannerResult.ErrorNotFound:\r
+ throw new System.IO.FileNotFoundException(string.Empty);\r
+ //break;\r
+ }\r
+ \r
} catch (System.Runtime.InteropServices.COMException ex) {\r
RaiseTaskSetEvent(NaGetTaskSetEventType.WARNING,\r
string.Format("{0} (E{1})", ex.Message, ex.ErrorCode));\r
return;\r
}\r
}\r
+ RaiseTaskSetEvent(NaGetTaskSetEventType.COMPLETED_TASKSET, TaskSetNames[currentTaskSetIndex]);\r
currentTaskSetIndex ++;\r
- RaiseTaskSetEvent(NaGetTaskSetEventType.COMPLETED_TASKSET, TaskSetNames[currentTaskSetIndex-1]);\r
\r
if (cancelCalled) {\r
RaiseTaskSetEvent(NaGetTaskSetEventType.CANCELED, "パッケージのインストール処理がキャンセルされました");\r
RaiseTaskSetEvent(NaGetTaskSetEventType.STARTED_TASKSET, TaskSetNames[currentTaskSetIndex]);\r
pkgListMan.DetectInstalledPkgs();\r
pkgListMan.SaveInstalledPackageList();\r
+ RaiseTaskSetEvent(NaGetTaskSetEventType.COMPLETED_TASKSET, TaskSetNames[currentTaskSetIndex]);\r
currentTaskSetIndex++;\r
- RaiseTaskSetEvent(NaGetTaskSetEventType.COMPLETED_TASKSET, TaskSetNames[currentTaskSetIndex-1]);\r
\r
// システムにインストールされているリストの更新\r
RaiseTaskSetEvent(NaGetTaskSetEventType.STARTED_TASKSET, TaskSetNames[currentTaskSetIndex]);\r
pkgListMan.DetectSystemInstalledPkgs();\r
pkgListMan.SaveSystemInstalledPackageList();\r
+ RaiseTaskSetEvent(NaGetTaskSetEventType.COMPLETED_TASKSET, TaskSetNames[currentTaskSetIndex]);\r
currentTaskSetIndex++;\r
- RaiseTaskSetEvent(NaGetTaskSetEventType.COMPLETED_TASKSET, TaskSetNames[currentTaskSetIndex-1]);\r
}\r
\r
public override bool Done {\r