更改ClickOnce应用程序的更新URL

时间:2012-09-25 10:50:35

标签: c# clickonce

是否可以将更新URL更改为已安装的ClickOnce应用程序的不同位置?如果是这样,我该怎么做?

3 个答案:

答案 0 :(得分:3)

您在评论中提到您希望“在客户端”进行更改。这是不可能的。您的客户端应用程序必须能够检查先前位置的更新,然后将其重定向到新位置,以便立即进行下一次部署。

请参阅How to move a ClickOnce deployment

答案 1 :(得分:3)

是否可以通过技巧。 您可以将其部署到默认发布位置。 (应用程序不应检查更新)。 然后将部署复制到客户服务器。 只需在客户端计算机上安装您的应用程序 System.Deployment.Application.ApplicationDeployment.CurrentDeployment.UpdateLocation.AbsoluteUri字段包含安装应用程序的位置和.application。如果您知道,那么您可以简单地执行此URL。 要检查是否有更新,请检查版本的.application文件。

这是我的助手班:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Xml;

namespace MatemanSC.Utility
{
    public class ClickOnceUtil
    {
        Version _UpdateVersion = null;
        public string UpdateLocation
        {
            get
            {
                return System.Deployment.Application.ApplicationDeployment.CurrentDeployment.UpdateLocation.AbsoluteUri;
            }
        }
        public Version AvailableVersion
        {
            get
            {
                if (_UpdateVersion == null)
                {
                    _UpdateVersion = new Version("0.0.0.0");
                    if (System.Deployment.Application.ApplicationDeployment.IsNetworkDeployed)
                    {
                        using (XmlReader reader = XmlReader.Create(System.Deployment.Application.ApplicationDeployment.CurrentDeployment.UpdateLocation.AbsoluteUri))
                        {
                            //Keep reading until there are no more FieldRef elements
                            while (reader.ReadToFollowing("assemblyIdentity"))
                            {
                                //Extract the value of the Name attribute
                                string versie = reader.GetAttribute("version");
                                _UpdateVersion = new Version(versie);
                            }
                        }
                    }
                }
                return _UpdateVersion;
            }
        }
        public bool UpdateAvailable
        {
            get
            {
                return System.Deployment.Application.ApplicationDeployment.CurrentDeployment.CurrentVersion < AvailableVersion;
            }
        }
        public string CurrentVersion
        {
            get
            {
                return System.Deployment.Application.ApplicationDeployment.CurrentDeployment.CurrentVersion.ToString();
            }
        }

        public void Update()
        {
            System.Diagnostics.Process.Start(System.Deployment.Application.ApplicationDeployment.CurrentDeployment.UpdateLocation.AbsoluteUri);
            Environment.Exit(0);
        }

        public void CheckAndUpdate()
        {
            try
            {
                if (UpdateAvailable)
                    Update();
            }
            catch (Exception)
            {
            }
        }
    }
}

以及如何使用它:

public partial class App : Application
{
    public App()
    {
        ClickOnceUtil clickonceutil = new ClickOnceUtil();
        clickonceutil.CheckAndUpdate();
    }
}

答案 2 :(得分:0)

当您想要更改用于升级程序的URL时,您可以在web.config上使用url rewrite:旧程序将指向旧URL,但它将带来新程序,它将具有新网址。