كيف يمكنني التراجع clickOnce إذا كان لدي الحد الأدنى المطلوب نسخة؟

StackOverflow https://stackoverflow.com/questions/241541

  •  04-07-2019
  •  | 
  •  

سؤال

وقررنا استخدام minimumRequiredVersion في طلبنا واضح clickOnce، والآن عندما نحاول التراجع إلى إصدار سابق عندما تطلق المستخدم التطبيق أنه فشل في بدء. وتقول الظاهر تطبيق لديها إصدار سابق من الإصدار المطلوب ولا يمكن للمستخدم استخدام التطبيق. لم يكن لدينا هذه المشكلة withou وminimumRequiredVersion، ولكن نود أن استخدام ذلك.

هل كانت مفيدة؟

المحلول

لديك لنشر الإصدار الجديد مع رقم إصدار أعلى. وهناك بنيت في ميزة الاستعادة.

نصائح أخرى

ويمكنك استخدام Mage.exe لتحديث النشر الخاصة بك واضح (ملف .application ارشادية) إلى إصدار أعلى، وحدد بيان التطبيق من الإصدار السابق. كما قال chilltemp، لا يزال لديك للذهاب إلى إصدار أعلى، ولكن لم يكن لديك إلى إعادة توزيع التعليمات البرمجية.

إذا كنت تريد التراجع عن نسخة لسابقتها قبل عملاء الحد الأدنى الإصدار المطلوب فإنك سوف تحتاج إلى إعادة تثبيت تطبيق ClickOnce.

ونلقي نظرة على هذا الرابط لرؤية كيف يمكن أن يتم ذلك في التعليمات البرمجية: ClickOnce و تنتهي كود توقيع شهادات

ويمكن القيام بذلك عن طريق التفكير إذا كنت تعرف اوري الناشر واسم، إصدار اللغة العامة الرئيسية العمارة رمزية والمعالج من كل من نشر وتطبيق.

ورمز أدناه سيحاول العودة إلى الحالة السابقة "coolapp.app" انقر مرة واحدة التطبيق. إذا كان لا يمكن التراجع، وسوف محاولة إلغاء تثبيته.


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 });
            }
        }
    }
}
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top