2012-09-25 12 views
6

URLのアップデートをインストール済みのClickOnceアプリケーションの別の場所に変更することはできますか?もしそうなら、どうしたらいいですか?ClickOnceアプリケーションの更新URLを変更する

+0

ここで、更新URLをクライアント側またはサーバー側から変更しますか? – Cybermaxs

+0

これはあなたが望むものを詳細にしているようです:http://social.msdn.microsoft.com/Forums/en-US/winformssetup/thread/5309f67e-efe4-40b4-b937-aed18cf87155/ –

+0

@ Cyber​​maxs-私はクライアント側。クライアントは既にclickonceアプリをインストールしており、更新チェックのURLを変更する必要があります。 –

答えて

2

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

How to move a ClickOnce deploymentを参照してください。

+0

\\ Server \ ApplicationNameという形式を使用してUNCパスを設定することは可能です。だから、私は正確な場所を知る必要があることを示唆するためにリンクしたこの記事は、私のアプリケーションを公開する時点でクライアントのローカルネットワークに配置されますか?クライアントがいくつかの変更(例えば、フォルダの名前を変更した場合)の場合、アプリケーションが更新を探す場所を変更する唯一の方法は、新しい更新場所を使って新しいインストールを行い、古いバージョンを再インストールして新しいバージョンをインストールすることです?そうですか?このアップデートパスをアプリケーション側から設定する方法はありませんか? – Prokurors

0

トリックで可能ですか? デフォルトの公開場所に展開できます。 (アプリケーションは更新をチェックすべきではありません)。 次に、展開を顧客サーバーにコピーします。 クライアントマシンにアプリケーションをインストールするだけです。 フィールドSystem.Deployment.Application.ApplicationDeployment.CurrentDeployment.UpdateLocation.AbsoluteUriには、アプリケーションがインストールされている場所とアプリケーションが含まれています。あなたが知っているなら、この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(); 
    } 
} 

幸運とご挨拶 マルセル

0

あなたのURLを変更したいときあなたはプログラムをアップグレードするために使用します、あなたはweb.configでURLリライトを使用することができます:古いプログラムは古いURLを指しますが、新しいURLを持つ新しいプログラムを持ち出します。

関連する問題