如何让ClickOnce进行手动更新

默认为自动更新,不过我认为手动更新更加的合理化一些.
想手动更新,只要在UPDATE中关闭"The application should check for updates"选项就可以了.
所以专门贴出手工更新的代码.这个代码是elearning视频上的,我把它记了下来,和大家分享一下.

 

 1if (ApplicationDeployment.IsNetworkDeployed == true)
 2            {
 3                ApplicationDeployment thisDeployment = ApplicationDeployment.CurrentDeployment;
 4                this.Text = "正在检测更新";
 5                if (thisDeployment.CheckForUpdate() == true)
 6                {
 7                    if (MessageBox.Show("检测到有新的版本可以进行更新,现在需要更新吗?", "选择是否要进行更新", MessageBoxButtons.YesNo, MessageBoxIcon.Information) == DialogResult.Yes)
 8                    {
 9                        this.Text = "正在更新中";
10                        thisDeployment.Update();
11                        MessageBox.Show("更新完毕,将要重启程序!");
12                        Application.Restart();
13                    }
14                    else
15                    {
16                        this.Text = Application.ProductName + " " + Application.ProductVersion;
17                    }
18                }
19                else
20                {                   
21                    MessageBox.Show("并没有新的版本进行更新!");                   
22                }
23            }
24            else
25            MessageBox.Show("这不是网络发布的程序");
ClickOnce确实很方便,让WINFROM很方便的部署和更新.不过通过我的实际使用,发现还是有些不稳定,发布时容易出错,关了VS再开又可以编译了,然而版本却自动降了一级,希望VS SP1能修正这些错误,呵...

ApplicationDeployment 成员 

支持以编程方式更新当前部署,以及按需下载文件。无法继承此类。

下表列出了由 ApplicationDeployment 类型公开的成员。

公共属性

  名称  说明 
  ActivationUri  获取用于启动应用程序的部署清单的 URL。 
  CurrentDeployment  返回此部署的当前 ApplicationDeployment。
  CurrentVersion  获取当前正在运行的应用程序实例的部署版本。
  DataDirectory  获取 ClickOnce 数据目录的路径。
  IsFirstRun  获取一个值,该值指示此应用程序是否是第一次在客户端计算机上运行。 
  IsNetworkDeployed  获取一个值,该值指示当前应用程序是否为 ClickOnce 应用程序。
  TimeOfLastUpdateCheck  获取 ClickOnce 上次检查应用程序更新时的日期和时间。
  UpdatedApplicationFullName  获取应用程序更新后的全名。
  UpdatedVersion  获取最近下载的更新版本。
  UpdateLocation  获取此应用程序从中更新自身的网站或文件共享。

 if (ApplicationDeployment.IsNetworkDeployed)
            {
                ApplicationDeployment curDeployment = ApplicationDeployment.CurrentDeployment;
                DateTime lastCheck = curDeployment.TimeOfLastUpdateCheck.ToLocalTime();
                string lastDay = lastCheck.Date.ToString();
                string lastTime = lastCheck.TimeOfDay.ToString();
                lblLastUpdateCheck.Text = string.Format("{0} {1}",lastDay,lastTime);
                lblNetWorkDeployed.Text = clientResManager.GetInstance().GetString("sYes");
                lblRunningVersion.Text = curDeployment.CurrentVersion.ToString();
                lblUpdateVersion.Text = curDeployment.UpdatedVersion.ToString();
                lblUpdateVersion.Text = curDeployment.UpdateLocation.ToString();
            }
            else
            {
                lblNetWorkDeployed.Text = clientResManager.GetInstance().GetString("sNo");

            }
ClickOnce 缓存概述 

所有 ClickOnce 应用程序,无论是本地安装的还是联机承载的,都存储在客户端计算机上的 ClickOnce应用程序“缓存”中。ClickOnce 缓存是当前用户的 Documents and Settings 文件夹中 Local Settings 目录下的一系列隐藏目录。此缓存保存所有应用程序文件,包括程序集、配置文件、应用程序和用户设置,以及数据目录。该缓存还负责将该应用程序的数据目录迁移到最新版本。有关数据迁移的更多信息,请参见在 ClickOnce 应用程序中访问本地数据和远程数据。

通过为应用程序存储通过一个位置,ClickOnce 从用户那里接管了管理应用程序物理安装的任务。通过对所有应用程序及其不同版本的程序集和数据文件进行独立保存,缓存还有助于隔离应用程序。例如,升级某个 ClickOnce 应用程序时,该版本及其数据资源是通过它们自己在缓存中的目录提供的。

我的缓存在

C:/Documents and Settings/jsq/Local Settings/Apps/2.0/XYRH5Q92.Z0Z/6OWA5N54.W3D/winp...exe_1a8d418fdd735cf3_0001.0000_none_f0acb23532be4c93

你可能感兴趣的:(如何让ClickOnce进行手动更新)