如何在Windows窗体上显示ClickOnce版本号

我有一个Windows窗体应用程序部署到两个不同的位置。

  • Intranet - ClickOnce
  • 互联网 - 通过Windows安装程序安装在citrix服务器场上
  • 我为点击一次部署的版本ApplicationDeployment.IsNetworkDeployed显示ClickOnce版本号。

    if (ApplicationDeployment.IsNetworkDeployed)
            return ApplicationDeployment.CurrentDeployment.CurrentVersion;
    

    但对于非点击应用程序,我不知道如何检索clickonce版本,除非我在汇编信息中硬编码版本号。

    是否有一种自动方式检索非Clickonce部署版本的ClickOnce版本号?


    不,我不相信有一种方法。 我相信ClickOnce信息来自清单,只会在ClickOnce部署中提供。 我认为硬编码版本号是您的最佳选择。


  • System.Deployment的程序集引用添加到您的项目中。

  • 在您的类文件中导入名称空间:

    VB.NET:

    Imports System.Deployment
    

    C#:

    using System.Deployment;
    
  • CurrentVersion属性中检索ClickOnce版本。

    您可以从ApplicationDeployment.CurrentDeployment.CurrentVersion属性获取当前版本。 这将返回一个System.Version对象。

    注意(来自MSDN):

    如果已安装新更新但尚未调用RestartCurrentVersion将与UpdatedVersion不同。 如果部署清单配置为执行自动更新,则可以比较这两个值以确定是否应重新启动应用程序。

    注: CurrentDeployment静态属性仅在使用ClickOnce部署应用程序时才有效。 因此,在访问此属性之前,应首先检查ApplicationDeployment.IsNetworkDeployed属性。 它总是会在调试环境中返回false。

    VB.NET:

    Dim myVersion as Version
    
    If ApplicationDeployment.IsNetworkDeployed Then
       myVersion = ApplicationDeployment.CurrentDeployment.CurrentVersion
    End If
    

    C#:

    Version myVersion;
    
    if (ApplicationDeployment.IsNetworkDeployed)
       myVersion = ApplicationDeployment.CurrentDeployment.CurrentVersion;
    
  • 使用Version对象:

    从这里开始,您可以在标签中使用版本信息,例如在“关于”表单上,以这种方式:

    VB.NET:

    versionLabel.Text = String.Concat("ClickOnce published Version: v", myVersion)
    

    C#:

    versionLabel.Text = string.Concat("ClickOnce published Version: v", myVersion);
    

    Version对象被格式化为四部分编号(major.minor.build.revision)。)


  • 每次推出新版本时,我都会简单地将主程序集的组装版本与CLickOnce版本相同。 然后,当它作为非clickonce应用程序运行时,只需使用Reflection即可获取程序集版本。

    链接地址: http://www.djcxy.com/p/22719.html

    上一篇: How to display ClickOnce Version number on Windows Forms

    下一篇: Relocating a ClickOnce deployment