更改更新网址为ClickOnce应用程序

问题描述 投票:7回答:3

是否有可能更新URL更改为安装ClickOnce应用程序的不同的位置?如果是这样,我该怎么办呢?

c# clickonce
3个回答
3
投票

你提到在您的评论,你想改变它“在客户端”。这是不可能的。您的客户端应用必须能够检查在前面的位置,然后将其重定向到新位置紧邻部署更新。

How to move a ClickOnce deployment


3
投票

是否有可能一招。你可以把它部署到默认的发布位置。 (该应用程序不应该检查更新)。然后部署复制到客户服务器。只是在客户机上安装应用程序。现场System.Deployment.Application.ApplicationDeployment.CurrentDeployment.UpdateLocation.AbsoluteUri包含了应用程序从安装的位置和。应用。如果你知道,那么你可以简单的执行这个网址。要检查是否有更新,检查。应用文件恩葡萄的版本。

这是我的助手类:

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();
    }
}

0
投票

如果你想改变,你将使用升级程序的网址,你可以只使用URL重写在web.config中:旧的程序将指向旧的URL,但它会带来新的方案,这将有新的网址。

© www.soinside.com 2019 - 2024. All rights reserved.