更新URLを、インストールされている ClickOnce アプリケーションの別の場所に変更することはできますか? もしそうなら、どうすればそれを行うことができますか?
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();
}
}
コメントで、「クライアント側で」変更したいと述べています。これは不可能です。クライアント アプリは、以前の場所で更新を確認できる必要があります。これにより、すぐに次の展開のために新しい場所にリダイレクトされます。
ClickOnce 配置を移動する方法 を参照してください。
プログラムのアップグレードに使用する URL を変更したい場合は、web.config で URL 書き換えを使用するだけです。古いプログラムは古い URL を指しますが、新しい URL を持つ新しいプログラムが表示されます。 .