8

更新URLを、インストールされている ClickOnce アプリケーションの別の場所に変更することはできますか? もしそうなら、どうすればそれを行うことができますか?

4

3 に答える 3

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 に答える
3

コメントで、「クライアント側で」変更したいと述べています。これは不可能です。クライアント アプリは、以前の場所で更新を確認できる必要があります。これにより、すぐに次の展開のために新しい場所にリダイレクトされます。

ClickOnce 配置を移動する方法 を参照してください。

于 2013-03-08T04:37:05.107 に答える
0

プログラムのアップグレードに使用する URL を変更したい場合は、web.config で URL 書き換えを使用するだけです。古いプログラムは古い URL を指しますが、新しい URL を持つ新しいプログラムが表示されます。 .

于 2016-04-29T20:49:52.700 に答える