是否可以将更新URL更改为已安装 ClickOnce 应用程序的不同位置?如果是这样,我该怎么做?
user1366148
问问题
8869 次
3 回答
3
您在评论中提到您希望“在客户端”更改它。这是不可能的。您的客户端应用程序必须能够检查先前位置的更新,然后将其重定向到新位置以立即进行下一次部署。
于 2013-03-08T04:37:05.107 回答
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();
}
}
于 2016-04-21T06:14:30.020 回答
0
当你想更改升级程序的 url 时,你可以在 web.config 中使用 url rewrite:旧程序将指向旧 url,但它会带来新程序,新程序将具有新 url .
于 2016-04-29T20:49:52.700 回答