使用ClickOnce部署VS2005中的WinForm应用程序

使用ClickOnce部署VS2005中的WinForm应用程序

这两天学习了下ClickOnce的部署方式,略略操练了下,感觉很不错,怕自己忘性大,过两天就给忘了,就整理了一下,写成文档形式.呵呵J



一、部署步骤

1.      创建一个WinForm程序

1.1        打开VS2005,新建一个WinForm项目。

1.2        做一个简单的Form,运行成功。

2.      发布程序

2.1 在项目上点右键选择“属性”,会看到该项目的属性列表。



2.2左边的目录中选择“发布”,可以看到关于发布的属性。



2.3首先是发布位置,默认是http://localhost/项目名/,也可以更改,选择 “文件系统”、“本地IIS”、


FTP站点”、“远程站点”中的任意一个子目录。


2.4 安装模式和设置


1)      启动方式默认为可以脱机使用,也可以更改为只能联机。


2)      应用程序文件:



点击“显示所有文件”可以看到所有应用程序文件以及bin目录下有的文件,系统会自动选择哪些该包括,


哪些该排除。如果有必要,可以更改默认设置。



3)      系统必备:


选择要安装的系统必备组件,安装位置可以选择供应商网站、应用程序位置或任意一个URLUNC路径


(例:http://www.microsoft.com/myapplication//server/myapplication)。


4)      更新:


可以在这里设置应用程序是否应该检查更新、在何时检查更新,指定更新的频率,指定更新的最低版本,


指定更新位置等。


5)      选项:


指定发布语言、发行者名称、产品名称、部署网页等发布相关的选项。


2.5 发布版本:


显示该次发布的版本号,可以修改,默认每次发布修订号自动递增。


2.6 发布:


可以通过“发布向导”或选择“立即发布”。发布成功后默认打开发布页,可以从此页面安装程序。


一次安装后,会自动在程序目录下加一个快捷方式。


如果发布时更新选择了自动更新,那么每次打开程序前(或程序后,可设置)会自动检查是否有更新的版本,


如果有,可以选择更新或跳过。


如果跳过了更新,以后要更新就必须到第一次更新的发布页面手动安装更新。


当然,这些功能也可以在程序中通过编程实现,在文档后面的内容中会有所提及。


3.      安装


在本机或其他任意一台可以访问到发布网页的机器上打开IE,访问发布页安装程序。


4.      删除、还原


在“控制面板”中选择“添加或删除程序”,找到程序点击“删除”,可以选择还原到上一个版本的程序或是删除程序。

二、实例

1.      新建项目“DemoClickOnce”。

1.1 新建窗体frmIE_Load向窗体中添加几个控件

grpTopGroupBoxtxtAddressTextBoxbtnLinkBottonwebBrowser1WebBrowser

1.2 双击窗体,在frmIE_Load事件中输入代码:

txtAddress.Text ="http://tangtang.oracle.com.cn";

1.3 双击btnLink,在btnLink_Click事件中输入代码:

webBrowser1.Url =newUri(txtAddress.Text.Trim());

webBrowser1.Update();

1.4 运行程序,画面如下:

2.      发布项目

2.1   设置发布相关的属性,发行者名称为candy,产品名称为clickOnce,其他全部用默认。

2.2   点击立即发布,发布成功后自动打开发布页http://candisin/DemoClickOnce/publish.htm

3.      安装

3.1     在本机或其他任意一台可以访问到发布网页的机器上打开IE,访问发布页http://candisin/DemoClickOnce/publish.htm,机器名candisin可能需要替换为IP地址或其他虚拟域名,点击安装。

3.2     成功安装后,程序会自动启动。而开始菜单中所有程序目录中会出现一个快捷方式,指向该程序。该程序的默认安装路径通常为:C:/Documents and Settings/candisin/Local Settings/Apps/2.0/0E6XTHOH.A0J/6DEOBQLW.B2K

4.      版本更新,修改程序

4.1   向窗体frmIE_Load中添加几个控件/组件:

picReflashPictureBoxtimerUpdateTimertoolTipUpdateToolTip

4.2   增加引用:

using System.Deployment.Application;

4.3   增加成员变量:

///<summary>

///更新标志:0,未检测到更新;1,已检测到更新;

///</summary>

privatestring flagUpdate = "0";

4.4   增加方法:

privatevoid UpdateApplication()

{

if (ApplicationDeployment.IsNetworkDeployed ==true)

 {

    ApplicationDeployment ad =ApplicationDeployment.CurrentDeployment;

    Text ="当前版本:" + ad.CurrentVersion;

    toolTipUpdate.SetToolTip(this, Text);

    UpdateCheckInfo checkInfo = ad.CheckForDetailedUpdate();

    if (checkInfo.UpdateAvailable ==true)

    {

      flagUpdate ="1";

      toolTipUpdate.SetToolTip(this,"检测到新的版本:" + checkInfo.AvailableVersion);

       if (MessageBox.Show("检测到新的版本:" + checkInfo.AvailableVersion + ",现在需要更新吗?/n您也可以稍后手工更新到最新版本!","",MessageBoxButtons.YesNo,MessageBoxIcon.Question) ==DialogResult.Yes)

        {

           ad.Update();

           MessageBox.Show("更新完毕,将要重新启动程序!");

           Application.Restart();

        }

     }

  }

}

4.5   增加或修改事件

privatevoid frmIE_Load(object sender,EventArgs e)

{

  txtAddress.Text ="http://tangtang.oracle.com.cn";

  UpdateApplication();

}

 

privatevoid picReflash_Click(object sender,EventArgs e)

{

   UpdateApplication();

}

 

privatevoid timerUpdate_Tick(object sender,EventArgs e)

{

   if (timerUpdate.Enabled)

   {

       if (flagUpdate =="0")

       {

           UpdateApplication();

       }

   }

}

4.6   运行程序

5.      二次发布

6.      客户端更新

6.1   客户端单击打开程序时,系统会先检测是否有更新的版本,如果有,则弹出页面询问是否下载。

6.2   选择确定,则自动更新到了新版本。

6.3   此时,若再有新的更新发布,程序可以自动检测到更新,并询问是否更新到新的版本。

6.4   需要更新点击“是”则立即更新,更新完后程序会重新启动。还可以点击“否”暂时不更新,之后程序直到关闭都不再自动提醒,需要手工点击刷新图标更新程序。

三、注意事项

1.          必备条件:需要安装.Net FrameWork 2.0

1.1   在发布属性页中,点击“系统必备”,钩选“.Net FrameWork 2.0,指定安装位置为应用程序相同的位置。

1.2   成功发布后,客户端如果没有安装.Net FrameWork 2.0,访问发布页面会显示有系统必需的组件

1.3   点击安装后,首先会安装.Net FrameWork 2.0

1.4   成功安装框架后,还会弹出一个窗口提示安装程序。安装成功后,程序自动执行。

2.          应用程序文件:有第三方控件时

2.1   向窗体frmIE_Load中添加一个Dev控件。

例如simpleButton1DevExpress.XtraEditors.SimpleButton

双击simpleButton1simpleButton1_Click事件中输入代码

MessageBox.Show("dev test");

2.2   在发布属性页中,点击“应用程序文件”:

点击“显示所有文件”可以看到所有应用程序文件以及bin目录下有的文件,将程序引用到的DEV类库“包括”,保存。

2.3   运行程序,发布。

2.4   客户端程序更新时便会自动将引用到DEV类库拷贝到应用程序目录,可成功运行。

四、问题

1.       自动更新会清除所有文件,包括本地的配置文件,如何保留?

解决方向:配置文件不放在程序目录,新建其他目录或是通过写注册表等其他方式记录配置。

 

 
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值