.net - tutorial - ¿Cómo puedo deshacer ClickOnce si tengo una versión mínima requerida?
clickonce vb net 2010 (4)
Tienes que implementar una nueva versión con un número de versión superior. No hay una función de retrotracción incorporada.
Decidimos usar la versión MinimumRequiredVersion en nuestro manifiesto de aplicación de clickOnce, y ahora cuando intentamos retrotraer a una versión anterior cuando el usuario inicia la aplicación, no puede iniciarse. Dice que el manifiesto de la aplicación tiene una versión anterior a la requerida y el usuario no puede usar la aplicación. No tuvimos este problema con la MinimumRequiredVersion, pero nos gustaría usar eso.
Puede usar Mage.exe para actualizar su manifiesto de despliegue (extensión de archivo .application) a una versión superior y seleccionar el manifiesto de la aplicación de la versión anterior. Como dijo chilltemp, todavía tienes que ir a una versión superior, pero no tienes que volver a implementar tu código.
Si desea revertir la versión a una anterior antes de la versión mínima requerida por el cliente, entonces deberá volver a instalar la aplicación clickonce.
Eche un vistazo a este enlace para ver cómo se puede hacer en el código: ClickOnce y Caducidad de certificados de firma de código
Esto se puede hacer a través de la reflexión si conoce el uri del editor y el nombre, token de clave pública de idioma de versión y arquitectura de procesador tanto del despliegue como de la aplicación.
El siguiente código intentará deshacer la aplicación "coolapp.app" una vez. Si no puede revertir, intentará desinstalarlo.
using System;
using System.Deployment.Application;
using System.Reflection;
namespace ClickOnceAppRollback
{
static class Program
{
///
/// The main entry point for the application.
///
static void Main()
{
string appId = string.Format("{0}#{1}, Version={2}, Culture={3}, PublicKeyToken={4}, processorArchitecture={5}/{6}, Version={7}, Culture={8}, PublicKeyToken={9}, processorArchitecture={10}, type={11}",
/*The URI location of the app*/@"http://www.microsoft.com/coolapp.exe.application",
/*The application''s assemblyIdentity name*/"coolapp.app",
/*The application''s assemblyIdentity version*/"10.8.62.17109",
/*The application''s assemblyIdentity language*/"neutral",
/*The application''s assemblyIdentity public Key Token*/"0000000000000000",
/*The application''s assemblyIdentity processor architecture*/"msil",
/*The deployment''s dependentAssembly name*/"coolapp.exe",
/*The deployment''s dependentAssembly version*/"10.8.62.17109",
/*The deployment''s dependentAssembly language*/"neutral",
/*The deployment''s dependentAssembly public Key Token*/"0000000000000000",
/*The deployment''s dependentAssembly processor architecture*/"msil",
/*The deployment''s dependentAssembly type*/"win32");
var ctor = typeof(ApplicationDeployment).GetConstructor(BindingFlags.Instance | BindingFlags.NonPublic, null, new Type[] { typeof(string) }, null);
var appDeployment = ctor.Invoke(new object[] { appId });
var subState = appDeployment.GetType().GetField("_subState", BindingFlags.NonPublic | BindingFlags.Instance).GetValue(appDeployment);
var subStore = appDeployment.GetType().GetField("_subStore", BindingFlags.NonPublic | BindingFlags.Instance).GetValue(appDeployment);
try
{
subStore.GetType().GetMethod("RollbackSubscription").Invoke(subStore, new object[] { subState });
}
catch
{
subStore.GetType().GetMethod("UninstallSubscription").Invoke(subStore, new object[] { subState });
}
}
}
}