2012-09-25 19 views
6

URL güncellemesinin kurulu bir ClickOnce uygulamasının farklı konumuna değiştirilmesi mümkün mü? Eğer öyleyse, bunu nasıl yapabilirim?Bir ClickOnce uygulaması için güncelleme URL'sini değiştir

+0

Güncelleme URL'sini değiştirmek istediğiniz: istemci tarafında mı yoksa sunucu tarafında mı? – Cybermaxs

+0

Bu, istediğiniz şeyi detaylandırıyor: http://social.msdn.microsoft.com/Forums/en-US/winformssetup/thread/5309f67e-efe4-40b4-b937-aed18cf87155/ –

+0

@ Cybermaxs-Ben değiştirmek istiyorum müşteri tarafı. İstemci zaten tıklama uygulamasını yükledi ve güncelleme kontrol URL'sini değiştirmem gerekiyor. –

cevap

2

Yorumunuzda "istemci tarafında" değiştirmek istediğinizi belirtin. Bu mümkün değil. İstemci uygulamanız, önceki konumdaki güncellemeyi kontrol edebilmeli ve ardından bir sonraki dağıtım için yeni konuma yönlendirilmelidir.

Bkz. How to move a ClickOnce deployment.

+0

UNC yolunu \\ Sunucu \ UygulamaAdı biçimini kullanarak ayarlamak mümkündür. Öyleyse bu gönderiyi yaptığınız bağlantıda, başvurumu yayınladığım andan itibaren güncellemenin müşterinin yerel ağında yer alacağının tam olarak bilinmesi gerektiğidir. Ve istemci bazı değişiklikler (örneğin bir klasör yeniden adlandırılır) durumunda benim uygulama güncellemeleri için görünüyor nerede değiştirmek için yeni bir yol (yeni güncelleme konumu ile), eski sürümü yeniden yükleme ve yeni sürümü yüklemek için olurdu ? Bu doğru mu? Bu güncelleme yolunu uygulama tarafından yapılandırmanın bir yolu yok mu? – Prokurors

0

Bu bir numara ile mümkündür. Varsayılan yayın konumuna dağıtabilirsiniz. (uygulama güncellemeleri kontrol etmemelidir). Ardından dağıtımınızı müşteri sunucusuna kopyalayın. Sadece uygulamanızı istemci makinelere yükleyin. System.Deployment.Application.ApplicationDeployment.CurrentDeployment.UpdateLocation.AbsoluteUri alanı, uygulamanın yüklendiği konum ve .application alanını içerir. Bunu biliyorsanız, bu url'yi basit bir şekilde yürütebilirsiniz. Güncelleştirmenin olup olmadığını kontrol etmek için, sürümü uygulamada .application dosyasını inceleyin.

bu

benim yardımcı sınıftır:

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) 
      { 
      } 
     } 
    } 
} 

Ve bu nasıl kullanılacağını:

public partial class App : Application 
{ 
    public App() 
    { 
     ClickOnceUtil clickonceutil = new ClickOnceUtil(); 
     clickonceutil.CheckAndUpdate(); 
    } 
} 

İyi şanslar ve Selamlar Marcel

0

url değiştirmek istediğinizde size programları yükseltmek için kullanacak, sadece web.config adresinde url rewrite kullanabilirsiniz: eski program eski url'ye işaret edecek, ancak yeni url'ye sahip olacak yeni programı getirecektir. .

İlgili konular