Pregunta

Decidimos usar la versión mínima requerida en nuestro manifiesto de aplicación clickOnce, y ahora, cuando intentamos retroceder a una versión anterior cuando el usuario inicia la aplicación, no puede iniciarla. Dice que el manifiesto de la aplicación tiene una versión anterior a la versión requerida y que el usuario no puede usar la aplicación. No tuvimos este problema con la versión mínima requerida, pero nos gustaría usarlo.

¿Fue útil?

Solución

Debe implementar una nueva versión con un número de versión superior. No hay una función de reversión incorporada.

Otros consejos

Puede usar Mage.exe para actualizar su manifiesto de implementación (extensión de archivo de aplicación) a una versión superior y seleccionar el manifiesto de aplicación de la versión anterior. Como dijo chilltemp, aún 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 a la versión mínima requerida de los clientes, 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 Certificados de firma de código con vencimiento

Esto se puede hacer a través de la reflexión si conoce el uri del editor y el nombre, el token de clave pública en el idioma de la versión y la arquitectura del procesador tanto de la implementación como de la aplicación.

El código siguiente intentará revertir el " coolapp.app " Haga clic una vez en la aplicación. Si no puede retroceder, 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 });
            }
        }
    }
}
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top