2 using System.Drawing;
\r
3 using System.Windows.Forms;
\r
4 using NaGet.Packages;
\r
5 using NaGet.Packages.Install;
\r
7 using System.Collections.Generic;
\r
9 namespace AppliStation
\r
12 /// Description of PackageListViewForm.
\r
14 public partial class PackageListViewForm : Form
\r
16 protected PackageListsManager pkgListsMan = null;
\r
18 public PackageListViewForm()
\r
21 // The InitializeComponent() call is required for Windows Forms designer support.
\r
23 InitializeComponent();
\r
25 installToolStripMenuItem.Font = new Font(installToolStripMenuItem.Font, FontStyle.Bold);
\r
26 uninstallToolStripMenuItem.Font = new Font(uninstallToolStripMenuItem.Font, FontStyle.Bold);
\r
28 pkgListsMan = new PackageListsManager();
\r
30 this.Icon = Icon.ExtractAssociatedIcon(Application.ExecutablePath);
\r
33 void PackageListViewSelectedIndexChanged(object sender, EventArgs e)
\r
35 bool installBtnEnabled = false;
\r
36 bool uninstallBtnEnabled = false;
\r
39 foreach (ListViewItem item in packageListView.SelectedItems) {
\r
40 Package pkg = (Package) item.Tag;
\r
42 bool isInstalledPackage = pkg is InstalledPackage;
\r
43 uninstallBtnEnabled = isInstalledPackage;
\r
44 installBtnEnabled = ! isInstalledPackage;
\r
46 detailBox.SelectionFont = new Font(detailBox.Font.FontFamily, 12);
\r
47 detailBox.SelectedText += string.Format("{0} ({1})\r\n", pkg.Name, pkg.Version);
\r
48 if (! string.IsNullOrEmpty(pkg.Tags) ) {
\r
49 detailBox.SelectionFont = new Font(detailBox.Font.FontFamily, 8);
\r
50 detailBox.SelectedText += string.Format("
\83^
\83O: {0}\r\n", pkg.Tags);
\r
52 if (isInstalledPackage) {
\r
53 InstalledPackage iPkg = (InstalledPackage) pkg;
\r
54 System.Text.StringBuilder sb = new System.Text.StringBuilder();
\r
55 if (iPkg.UninstallInfo.InstallDate != null) {
\r
56 sb.AppendFormat("
\83C
\83\93\83X
\83g
\81[
\83\8b\82µ
\82½
\93ú: {0:d} ", iPkg.UninstallInfo.InstallDate.Value);
\r
58 if (iPkg.UninstallInfo.EstimatedSize > 0) {
\r
59 sb.AppendFormat("
\83T
\83C
\83Y: {0} ", NaGet.Utils.FormatSize(iPkg.UninstallInfo.EstimatedSize*1024));
\r
62 if (sb.Length > 0) {
\r
63 detailBox.SelectionFont = new Font(detailBox.Font.FontFamily, 8);
\r
64 detailBox.SelectedText += sb.ToString();
\r
65 detailBox.SelectedText += "\r\n";
\r
68 detailBox.SelectionFont = detailBox.Font;
\r
69 if (pkg.Url != null && pkg.Url.Href != null) {
\r
70 detailBox.SelectedText += "
\8cö
\8e®
\83T
\83C
\83g: " + pkg.Url.Href + "\r\n";
\r
72 detailBox.SelectedText += pkg.Summary;
\r
77 uninstallToolStripButton.Visible = uninstallBtnEnabled;
\r
78 installToolStripButton.Visible = installBtnEnabled;
\r
80 if (packageListView.SelectedItems.Count <= 0) {
\r
81 detailBox.SelectionFont = detailBox.Font;
\r
82 int count = packageListView.Items.Count;
\r
83 detailBox.Text = (count > 0) ? string.Format("{0}
\8cÂ
\82Ì
\83\
\83t
\83g
\82ª
\82 \82è
\82Ü
\82·
\81B", count)
\r
84 : "
\8aY
\93\96\82·
\82é
\83\
\83t
\83g
\82ª
\82 \82è
\82Ü
\82¹
\82ñ
\81B";
\r
87 detailBox.SelectionStart = 0;
\r
88 detailBox.ScrollToCaret();
\r
91 void PackageListViewItemActivate(object sender, EventArgs e)
\r
93 if (packageListView.SelectedItems.Count <= 0) {
\r
97 foreach (ListViewItem item in packageListView.SelectedItems) {
\r
98 Package pkg = (Package) item.Tag;
\r
100 if (pkg is InstalledPackage) {
\r
101 UninstallToolStripButtonClick(sender, e);
\r
103 InstallToolStripButtonClick(sender, e);
\r
110 AppliStation.Util.ListViewItemSortComparer packageListViewSortComparer;
\r
112 void PackageListViewColumnClick(object sender, ColumnClickEventArgs e)
\r
114 SortOrder order = SortOrder.None;
\r
116 if (packageListViewSortComparer == null) {
\r
117 order = SortOrder.Ascending;
\r
118 packageListViewSortComparer = new AppliStation.Util.ListViewItemSortComparer(e.Column, order);
\r
119 packageListView.ListViewItemSorter = packageListViewSortComparer;
\r
121 if (packageListViewSortComparer.Column == e.Column) {
\r
122 order = (packageListViewSortComparer.Order == SortOrder.Ascending)? SortOrder.Descending : SortOrder.Ascending;
\r
124 packageListViewSortComparer.Order = order;
\r
126 order = packageListViewSortComparer.Order;
\r
127 packageListViewSortComparer.Column = e.Column;
\r
130 packageListView.Sort();
\r
132 AppliStation.Util.NativeMethods.ColumnHeader_SetSortState(packageListView, e.Column, order);
\r
134 //
\83\
\81[
\83g
\91Î
\8fÛ
\97ñ
\82Ì
\90F
\95t
\82¯
\r
136 // SendMessage(hWnd, LVM_SETSELECTEDCOLUMN, column, NULL);
\r
137 AppliStation.Util.NativeMethods.SendMessage(packageListView.Handle, 0x1000+140, (uint) e.Column, 0);
\r
138 } catch (Exception) {
\r
142 void Form_OnLoad(object sender, EventArgs e)
\r
144 System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(PackageListViewForm));
\r
145 ImageList imageList = new ImageList();
\r
146 imageList.Images.Add("installed", this.Icon);
\r
147 imageList.Images.Add("sys", (Icon)(resources.GetObject("sysinstalled.Icon")));
\r
148 packageListView.SmallImageList = imageList;
\r
150 updatePackageFilterToolStripMenuItemCheckState();
\r
151 installedASPackageFilterToolStripMenuItem.Image = this.Icon.ToBitmap();
\r
152 installedSysPackageFilterToolStripMenuItem.Image = ((Icon)(resources.GetObject("sysinstalled.Icon"))).ToBitmap();
\r
155 #region PackageFilter
\8aÖ
\98A
\r
157 private enum PackageFilterIndex : int
\r
165 private PackageFilterIndex currentPackageFilter = PackageFilterIndex.All;
\r
167 private PackageFilterIndex CurrentPackageFilter {
\r
169 return currentPackageFilter;
\r
172 currentPackageFilter = value;
\r
174 updatePackageFilterToolStripMenuItemCheckState();
\r
178 private void updatePackageFilterToolStripMenuItemCheckState()
\r
180 ToolStripMenuItem selected = getCheckedPackageFilterToolStripItem();
\r
182 foreach (ToolStripMenuItem item in packageFilterToolStripDropDownButton.DropDown.Items) {
\r
183 item.Checked = selected == item;
\r
186 packageFilterToolStripDropDownButton.Text = selected.Text;
\r
187 packageFilterToolStripDropDownButton.Image = selected.Image;
\r
188 packageFilterToolStripDropDownButton.ToolTipText = selected.ToolTipText;
\r
191 private ToolStripMenuItem getCheckedPackageFilterToolStripItem()
\r
193 switch (currentPackageFilter) {
\r
194 case PackageFilterIndex.NotInstalled:
\r
195 return notInstalledPackageFilterToolStripMenuItem;
\r
196 case PackageFilterIndex.InstalledAS:
\r
197 return installedASPackageFilterToolStripMenuItem;
\r
198 case PackageFilterIndex.InstalledSys:
\r
199 return installedSysPackageFilterToolStripMenuItem;
\r
201 return allPackageFilterToolStripMenuItem;
\r
205 void AnyPackageFilterToolStripMenuItemClicked(object sender, EventArgs e)
\r
207 if (sender == notInstalledPackageFilterToolStripMenuItem) {
\r
208 currentPackageFilter = PackageFilterIndex.NotInstalled;
\r
209 } else if (sender == installedASPackageFilterToolStripMenuItem) {
\r
210 currentPackageFilter = PackageFilterIndex.InstalledAS;
\r
211 } else if (sender == installedSysPackageFilterToolStripMenuItem) {
\r
212 currentPackageFilter = PackageFilterIndex.InstalledSys;
\r
214 currentPackageFilter = PackageFilterIndex.All;
\r
217 updatePackageFilterToolStripMenuItemCheckState();
\r
218 searchTextBoxUpdate(false);
\r
223 private string oldSearchKeywords = null;
\r
224 void PackageListViewUpdate()
\r
226 string searchKeywords = this.SearchKeyword;
\r
227 if (oldSearchKeywords == searchKeywords) { //
\8dX
\90V
\82³
\82ê
\82Ä
\82¢
\82È
\82¢
\8fê
\8d\87\82Í
\8c\9f\8dõ
\82µ
\82È
\82¢
\r
231 this.packageListView.Items.Clear();
\r
233 if (currentPackageFilter == PackageFilterIndex.All || currentPackageFilter == PackageFilterIndex.NotInstalled) {
\r
234 foreach (Package pkg in pkgListsMan.AvailablePkgList.Search(searchKeywords)) {
\r
235 if (Installation.GetPreferInstallerIndex(pkg) >= 0) { //
\83C
\83\93\83X
\83g
\81[
\83\8b\89Â
\94\
\r
236 if (currentPackageFilter == PackageFilterIndex.NotInstalled &&
\r
237 (pkgListsMan.InstalledPkgList.GetPackageForName(pkg.Name) != null||
\r
238 pkgListsMan.SystemInstalledPkgList.GetPackageForName(pkg.Name) != null) ) {
\r
239 continue; //
\83C
\83\93\83X
\83g
\81[
\83\8b\8dÏ
\82Ý
\82Í
\8e\9f\82Ì
\83\8b\81[
\83v
\82Ö(
\96¢
\83C
\83\93\83X
\83g
\81[
\83\8b\83\
\83t
\83g
\92\8a\8fo
\8e\9e)
\r
242 ListViewItem item = new ListViewItem(new string[]{pkg.Name, pkg.Version, pkg.Summary});
\r
244 item.ToolTipText = pkg.Summary;
\r
246 this.packageListView.Items.Add(item);
\r
251 if (currentPackageFilter == PackageFilterIndex.All || currentPackageFilter == PackageFilterIndex.InstalledAS) {
\r
252 foreach (Package pkg in pkgListsMan.InstalledPkgList.Search(this.SearchKeyword)) {
\r
253 ListViewItem item = new ListViewItem(new string[]{pkg.Name, pkg.Version, pkg.Summary});
\r
255 item.ToolTipText = pkg.Summary;
\r
256 item.ImageKey = "installed";
\r
258 this.packageListView.Items.Add(item);
\r
262 if (currentPackageFilter == PackageFilterIndex.All || currentPackageFilter == PackageFilterIndex.InstalledSys) {
\r
263 foreach (Package pkg in pkgListsMan.SystemInstalledPkgList.Search(this.SearchKeyword)) {
\r
264 ListViewItem item = new ListViewItem(new string[]{pkg.Name, pkg.Version, pkg.Summary});
\r
266 item.ToolTipText = pkg.Summary;
\r
267 item.ImageKey = "sys";
\r
269 this.packageListView.Items.Add(item);
\r
273 PackageListViewSelectedIndexChanged(packageListView, null);
\r
274 detailBox.Refresh();
\r
276 //this.packageListView.AutoResizeColumns(ColumnHeaderAutoResizeStyle.ColumnContent);
\r
278 oldSearchKeywords = searchKeywords; //
\89ß
\8b\8e\82Ì
\8c\9f\8dõ
\83L
\81[
\83\8f\81[
\83h
\82Æ
\82µ
\82Ä
\8ao
\82¦
\82Ä
\82¨
\82
\r
281 void PackageDetailBoxLinkClicked(object sender, LinkClickedEventArgs e)
\r
283 System.Diagnostics.Process.Start(e.LinkText);
\r
286 internal void updateActionInvoke(bool downloadPackageListsFlag)
\r
288 AppliStation.Util.ExecutionProgressViewer prog = new AppliStation.Util.ExecutionProgressViewer();
\r
289 prog.Shown += delegate(object sender2, EventArgs e2) {
\r
290 NaGet.SubCommands.NaGetUpdate tasks = new NaGet.SubCommands.NaGetUpdate(pkgListsMan, downloadPackageListsFlag);
\r
291 tasks.Downloader = prog.Downloader;
\r
292 prog.SetTaskSet(tasks);
\r
294 prog.StartTaskSet();
\r
296 prog.Text = "
\83\8a\83X
\83g
\82Ì
\8dX
\90V";
\r
297 prog.ShowDialog(this);
\r
300 void UpdateToolStripButtonClick(object sender, EventArgs e)
\r
302 updateActionInvoke(true);
\r
304 UpdatePackageList();
\r
307 void LocalupdateToolStripMenuItemClick(object sender, EventArgs e)
\r
309 updateActionInvoke(false);
\r
311 UpdatePackageList();
\r
314 #region searchTextBox
\82Ü
\82í
\82è
\r
316 private bool searchTextBoxIsEmpty = true;
\r
318 private Timer searchUpdateTimer = null;
\r
320 string SearchKeyword {
\r
322 return searchTextBoxIsEmpty? string.Empty : searchTextBox.Text;
\r
326 void SearchTextBoxEnter(object sender, EventArgs e)
\r
328 if (searchTextBoxIsEmpty) {
\r
329 searchTextBox.Text = string.Empty;
\r
330 searchTextBox.ForeColor = DefaultForeColor;
\r
331 searchTextBoxIsEmpty = false;
\r
335 void SearchTextBoxLeave(object sender, EventArgs e)
\r
337 if (string.IsNullOrEmpty(searchTextBox.Text)) {
\r
338 searchTextBox.Text = "
\8c\9f\8dõ";
\r
339 searchTextBox.ForeColor = SystemColors.GrayText;
\r
340 searchTextBoxIsEmpty = true;
\r
344 void SearchTextBoxTextChanged(object sender, EventArgs e)
\r
346 if (searchTextBox.Focused) {
\r
347 searchTextBoxUpdate(false);
\r
351 void SearchTextBoxKeyPress(object sender, KeyPressEventArgs e)
\r
353 switch (e.KeyChar) {
\r
354 case (char)Keys.Enter:
\r
355 searchTextBoxUpdate(true);
\r
357 case (char)Keys.Escape:
\r
358 searchTextBox.Text = "";
\r
363 private void searchTextBoxUpdate(bool force)
\r
365 if (! this.Created) return;
\r
367 if (searchUpdateTimer != null) {
\r
368 searchUpdateTimer.Stop();
\r
370 searchUpdateTimer = new Timer();
\r
371 searchUpdateTimer.Tick += searchUpdateTimerTick;
\r
373 searchUpdateTimer.Interval = (force)? 10 : 500;
\r
374 searchUpdateTimer.Start();
\r
377 private void searchUpdateTimerTick(object sender, EventArgs e)
\r
379 searchUpdateTimer.Stop();
\r
380 searchUpdateTimer = null;
\r
382 PackageListViewUpdate();
\r
387 internal void installActionInvoke(Package[] pkgs)
\r
389 AppliStation.Util.ExecutionProgressViewer prog = new AppliStation.Util.ExecutionProgressViewer();
\r
390 prog.Shown += delegate(object sender2, EventArgs e2) {
\r
391 NaGet.SubCommands.NaGetInstall tasks = new NaGet.SubCommands.NaGetInstall(pkgListsMan, pkgs);
\r
392 tasks.Downloader = prog.Downloader;
\r
393 prog.SetTaskSet(tasks);
\r
395 prog.StartTaskSet();
\r
397 prog.Text = string.Format("
\83\
\83t
\83g
\83E
\83F
\83A
\82Ì
\83C
\83\93\83X
\83g
\81[
\83\8b");
\r
398 prog.ShowDialog(this);
\r
401 void InstallToolStripButtonClick(object sender, EventArgs e)
\r
403 PackagesInstallConfirmForm confirm = new PackagesInstallConfirmForm();
\r
404 confirm.PkgListsManager = pkgListsMan;
\r
405 confirm.Packages = SelectedPackages<Package>();
\r
406 confirm.UseRunas = confirm.GetShouldUseRunas();
\r
407 DialogResult result = confirm.ShowDialog(this);
\r
409 if (result == DialogResult.OK) {
\r
410 Package[] instPkgs = confirm.CheckedPackages;
\r
412 if (confirm.UseRunas) {
\r
413 this.Enabled = false;
\r
414 installRunasActionInvoke(instPkgs);
\r
415 this.Enabled = true;
\r
418 installActionInvoke(instPkgs);
\r
421 UpdatePackageList();
\r
425 public void installRunasActionInvoke(Package[] pkgs)
\r
427 string tmpfileName = System.IO.Path.GetTempFileName();
\r
429 NaGet.Utils.PutSerializeObject(tmpfileName, pkgs);
\r
431 System.Diagnostics.ProcessStartInfo procInfo = new System.Diagnostics.ProcessStartInfo();
\r
432 procInfo.FileName = Application.ExecutablePath;
\r
433 procInfo.Arguments = string.Format("--noupdate --cmd=install \"--pkgsref={0}\"", tmpfileName);
\r
434 procInfo.Verb = "runas";
\r
435 procInfo.WorkingDirectory = Environment.CurrentDirectory;
\r
437 using (System.Diagnostics.Process hProc = System.Diagnostics.Process.Start(procInfo)) {
\r
438 hProc.WaitForExit();
\r
441 pkgListsMan.LoadPackageLists();
\r
442 } catch (System.ComponentModel.Win32Exception ex) {
\r
443 MessageBox.Show(ex.Message, "
\83C
\83\93\83X
\83g
\81[
\83\8b", MessageBoxButtons.OK, MessageBoxIcon.Error);
\r
445 if (File.Exists(tmpfileName)) {
\r
446 File.Delete(tmpfileName);
\r
451 internal void uninstallActionInvoke(InstalledPackage[] pkgs)
\r
453 AppliStation.Util.ExecutionProgressViewer prog = new AppliStation.Util.ExecutionProgressViewer();
\r
454 prog.Shown += delegate(object sender2, EventArgs e2) {
\r
455 NaGet.SubCommands.NaGetUninstall tasks = new NaGet.SubCommands.NaGetUninstall(pkgListsMan, pkgs);
\r
456 prog.SetTaskSet(tasks);
\r
458 prog.StartTaskSet();
\r
460 prog.Text = string.Format("
\83\
\83t
\83g
\83E
\83F
\83A
\82Ì
\83A
\83\93\83C
\83\93\83X
\83g
\81[
\83\8b");
\r
461 prog.ShowDialog(this);
\r
464 internal void uninstallRunasActionInvoke(InstalledPackage[] pkgs)
\r
466 string tmpfileName = System.IO.Path.GetTempFileName();
\r
468 NaGet.Utils.PutSerializeObject(tmpfileName, pkgs);
\r
470 System.Diagnostics.ProcessStartInfo procInfo = new System.Diagnostics.ProcessStartInfo();
\r
471 procInfo.FileName = Application.ExecutablePath;
\r
472 procInfo.Arguments = string.Format("--noupdate --cmd=uninstall \"--pkgsref={0}\"", tmpfileName);
\r
473 procInfo.Verb = "runas";
\r
474 procInfo.WorkingDirectory = Environment.CurrentDirectory;
\r
476 using (System.Diagnostics.Process hProc = System.Diagnostics.Process.Start(procInfo)) {
\r
477 hProc.WaitForExit();
\r
480 pkgListsMan.LoadPackageLists();
\r
481 } catch (System.ComponentModel.Win32Exception ex) {
\r
482 MessageBox.Show(ex.Message, "
\83A
\83\93\83C
\83\93\83X
\83g
\81[
\83\8b", MessageBoxButtons.OK, MessageBoxIcon.Error);
\r
484 if (File.Exists(tmpfileName)) {
\r
485 File.Delete(tmpfileName);
\r
490 void UninstallToolStripButtonClick(object sender, EventArgs e)
\r
492 PackageUninstallConfirmForm confirm = new PackageUninstallConfirmForm();
\r
493 foreach (InstalledPackage pkg in SelectedPackages<InstalledPackage>()) {
\r
494 confirm.UninstallPackage = pkg;
\r
497 confirm.UseRunas = confirm.GetShouldUseRunas();
\r
498 DialogResult result = confirm.ShowDialog(this);
\r
500 if (result == DialogResult.OK) {
\r
501 InstalledPackage[] instPkgs = new InstalledPackage[]{confirm.UninstallPackage};
\r
503 if (confirm.UseRunas) {
\r
504 this.Enabled = false;
\r
505 uninstallRunasActionInvoke(instPkgs);
\r
506 this.Enabled = true;
\r
509 uninstallActionInvoke(instPkgs);
\r
512 UpdatePackageList();
\r
517 void WebOfficialToolStripMenuItemClick(object sender, EventArgs e)
\r
519 foreach (Package pkg in SelectedPackages<Package>()) {
\r
520 string linkURL = pkg.Url.Href;
\r
522 if (! (pkg == null || string.IsNullOrEmpty(linkURL))) {
\r
523 System.Diagnostics.Process.Start(linkURL);
\r
529 void WebGoogleSearchToolStripMenuItemClick(object sender, EventArgs e)
\r
531 foreach (Package pkg in SelectedPackages<Package>()) {
\r
532 string q = System.Web.HttpUtility.UrlEncode(pkg.Name, System.Text.Encoding.UTF8);
\r
533 string googleURL = @"http://www.google.co.jp/search?q="+q;
\r
535 System.Diagnostics.Process.Start(googleURL);
\r
541 void OpenInstalledDirectoryStripMenuItemClick(object sender, EventArgs e)
\r
543 foreach (InstalledPackage pkg in SelectedPackages<InstalledPackage>()) {
\r
544 if (pkg.Type == InstallerType.ARCHIVE) {
\r
545 System.Diagnostics.Process.Start(Path.Combine(NaGet.Env.ArchiveProgramFiles, pkg.Name));
\r
546 } else if (Directory.Exists(pkg.UninstallInfo.InstallLocation)) {
\r
547 System.Diagnostics.Process.Start(pkg.UninstallInfo.InstallLocation);
\r
555 void PropertiesToolStripMenuItemClick(object sender, EventArgs e)
\r
557 foreach (Package pkg in SelectedPackages<Package>()) {
\r
558 PackageInfoForm form = new PackageInfoForm();
\r
559 form.SelectedObject = pkg;
\r
560 form.Text = pkg.ToString() + "
\82Ì
\83v
\83\8d\83p
\83e
\83B";
\r
561 form.AutoSize = true;
\r
563 form.ShowDialog(this);
\r
569 void PackageListContextMenuStripOpening(object sender, System.ComponentModel.CancelEventArgs e)
\r
571 //
\91I
\91ð
\82³
\82ê
\82Ä
\82¢
\82È
\82¢
\82È
\82ç
\8aJ
\82©
\82È
\82¢
\r
572 if (packageListView.SelectedItems.Count <= 0) {
\r
577 foreach (Package pkg in SelectedPackages<Package>()) {
\r
578 bool isInstalledPackage = pkg is InstalledPackage;
\r
580 installToolStripMenuItem.Visible = ! isInstalledPackage;
\r
581 uninstallToolStripMenuItem.Visible = isInstalledPackage;
\r
583 webResourcesToolStripMenuItem.Text = string.Format(webResourcesToolStripMenuItem.Tag.ToString(), pkg.Name);
\r
584 webOfficialToolStripMenuItem.Enabled = ! (pkg.Url == null || string.IsNullOrEmpty(pkg.Url.Href));
\r
585 // webGoogleSearchToolStripMenuItem always active.
\r
587 openInstalledDirectoryStripMenuItem.Visible = isInstalledPackage &&
\r
588 ( (pkg.Type == InstallerType.ARCHIVE) || Directory.Exists(((InstalledPackage) pkg).UninstallInfo.InstallLocation) );
\r
594 private IEnumerable<Package> getUpdatedPackages(PackageList<InstalledPackage> installedPkgList, PackageList<Package> avaiablePkgList, IComparer<string> verComp)
\r
596 foreach (InstalledPackage pkg in installedPkgList.Packages) {
\r
597 Package avaiablePkg = avaiablePkgList.GetPackageForName(pkg.Name);
\r
599 if (avaiablePkgList != null) {
\r
600 if (verComp.Compare(pkg.Version, avaiablePkg.Version) < 0 &&
\r
601 installedPkgList.GetPackageForPackage(pkg.Name, avaiablePkg.Version) == null) {
\r
603 yield return avaiablePkg;
\r
609 void UpgradeToolStripButtonClick(object sender, EventArgs e)
\r
611 List<Package> pkgs = new List<Package>();
\r
612 VersionComparetor verComp = new VersionComparetor();
\r
613 PackageList<Package> avaiablePackageList = pkgListsMan.AvailablePkgList;
\r
615 pkgs.AddRange(getUpdatedPackages(pkgListsMan.InstalledPkgList, avaiablePackageList, verComp));
\r
616 pkgs.AddRange(getUpdatedPackages(pkgListsMan.SystemInstalledPkgList, avaiablePackageList, verComp));
\r
618 if (pkgs.Count <= 0) {
\r
619 MessageBox.Show(this, "
\8dX
\90V
\82³
\82ê
\82½
\83\
\83t
\83g
\82Í
\82 \82è
\82Ü
\82¹
\82ñ", "
\83\
\83t
\83g
\82Ì
\8dX
\90V");
\r
623 PackagesInstallConfirmForm confirm = new PackagesInstallConfirmForm();
\r
624 confirm.PkgListsManager = pkgListsMan;
\r
625 confirm.Packages = pkgs.ToArray();
\r
626 DialogResult result = confirm.ShowDialog(this);
\r
628 if (result == DialogResult.OK) {
\r
629 Package[] instPkgs = confirm.CheckedPackages;
\r
631 if (confirm.UseRunas) {
\r
632 this.Enabled = false;
\r
633 installRunasActionInvoke(instPkgs);
\r
634 this.Enabled = true;
\r
636 installActionInvoke(instPkgs);
\r
639 UpdatePackageList();
\r
643 public void UpdatePackageList()
\r
645 pkgListsMan.LoadPackageLists();
\r
646 this.PackageListViewUpdate();
\r
650 ///
\83C
\83\93\83X
\83g
\81[
\83\8b\82·
\82é
\82æ
\82¤
\91I
\91ð
\82³
\82ê
\82½
\83p
\83b
\83P
\81[
\83W
\82Ì
\94z
\97ñ
\r
652 public TPackage[] SelectedPackages<TPackage>() where TPackage : Package
\r
654 List<TPackage> pkgs = new List<TPackage>();
\r
655 foreach (ListViewItem item in packageListView.SelectedItems) {
\r
656 pkgs.Add((TPackage) item.Tag);
\r
659 return pkgs.ToArray();
\r