2012-09-25 29 views
6

¿Es posible cambiar la actualización URL a una ubicación diferente de una aplicación ClickOnce instalada? Si es así, ¿cómo puedo hacer eso?Cambiar la URL de actualización para una aplicación ClickOnce

+0

¿dónde quieres cambiar la URL de actualización: del lado del cliente o del servidor? – Cybermaxs

+0

Esto parece detallar lo que desea: http://social.msdn.microsoft.com/Forums/en-US/winformssetup/thread/5309f67e-efe4-40b4-b937-aed18cf87155/ –

+0

@ Cybermaxs-Quiero cambiar de el lado del cliente. El cliente ya ha instalado la aplicación clickonce y necesito cambiar la URL de comprobación de actualizaciones. –

Respuesta

2

Mencione en su comentario que desea cambiarlo "del lado del cliente". Esto no es posible. Su aplicación cliente debe poder verificar la actualización en la ubicación anterior, que luego lo redirigirá a la nueva ubicación para la siguiente implementación.

Ver How to move a ClickOnce deployment.

+0

Es posible establecer la ruta UNC utilizando el formato \\ Server \ ApplicationName. Entonces, ¿esta publicación a la que me has vinculado sugiere, que tengo que saber el lugar exacto donde se ubicarán las actualizaciones en la red local del cliente en el momento en que publique mi aplicación? Y en caso de que el cliente tenga algunos cambios (una carpeta renombrada por ejemplo) entonces la única manera de cambiar dónde mi aplicación busca actualizaciones sería hacer una nueva instalación (con la nueva ubicación de actualización), reinstalar la versión anterior e instalar la nueva versión ? ¿Está bien? ¿No hay forma de configurar esta ruta de actualización desde el lado de la aplicación? – Prokurors

0

Es posible con un truco. Puede implementarlo en la ubicación de publicación predeterminada. (la aplicación no debe verificar si hay actualizaciones). Luego, copie su implementación en el servidor de clientes. Simplemente instale su aplicación en las máquinas del cliente. El campo System.Deployment.Application.ApplicationDeployment.CurrentDeployment.UpdateLocation.AbsoluteUri contiene la ubicación y .application desde donde se instala la aplicación. Si sabes eso, entonces puedes simplemente ejecutar esta url. Para verificar si hay una actualización, examine el archivo .application en la versión.

esta es mi clase de ayuda:

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

Y esto cómo se usa:

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

Suerte y saludos Marcel

0

Cuando se desea cambiar la dirección URL que utilizará para actualizar programas, puede usar la reescritura de url en web.config: el programa anterior apuntará a la URL anterior, pero traerá el nuevo programa, que tendrá la nueva URL .

Cuestiones relacionadas