clickOnce 응용 프로그램 매니페스트에서 minimumRequiredVersion을 사용하기로 결정했습니다. 이제 사용자가 응용 프로그램을 시작할 때 이전 버전으로 롤백하려고하면 시작되지 않습니다. 응용 프로그램 매니페스트가 필요한 버전보다 이전 버전을 가지고있어 사용자가 응용 프로그램을 사용할 수 없다고합니다. minimumRequiredVersion과 함께이 문제가 발생하지 않았지만이를 사용하고 싶습니다.필요한 최소 버전이있는 경우 어떻게 clickOnce를 롤백 할 수 있습니까?
답변
더 높은 버전 번호로 새 버전을 배포해야합니다. 롤백 기능은 내장되어 있지 않습니다.
Mage.exe를 사용하여 배포 매니페스트 (.application 파일 확장명)를 상위 버전으로 업데이트하고 이전 버전의 응용 프로그램 매니페스트를 선택할 수 있습니다. chilltemp가 말했듯이 여전히 높은 버전으로 가야하지만 코드를 다시 배포 할 필요는 없습니다.
예를 들면? –
롤백하려는 폴더
클라이언트 최소 요구 버전 이전 버전으로 롤백하려는 경우 clickonce 응용 프로그램을 다시 설치해야합니다. 당신의 게시자 URI와 이름, 버전 언어 공개 키 토큰 및 프로세서 아키텍처를 알고있는 경우 ClickOnce and Expiring Code Signing Certificates
이 반사를 통해 수행 할 수 있습니다
이 코드에서 수행 할 수있는 방법을 보려면이 링크에서보세요 배포와 응용 프로그램 모두
아래 코드는 "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 });
}
}
}
}
- 1. 어떻게 트랜잭션을 롤백 할 수 있습니까?
- 2. 어떻게 가상 환경을 롤백 할 수 있습니까?
- 3. 복원을 롤백 할 수 있습니까? SQL 서버
- 4. 어떻게 Mercurial에서 단일 변경 사항을 롤백 할 수 있습니까?
- 5. ClickOnce를 사용하여 기본 Delphi 응용 프로그램을 배포 할 수 있습니까?
- 6. 애플릿을 실행하는 데 필요한 최소 Java 버전
- 7. Git에서 여러 가지 종류의 변경 사항을 롤백 할 수 있습니까?
- 8. 트리의 최소 깊이는 어떻게 알 수 있습니까?
- 9. 알림 및 수정 버전이있는 데이터베이스 구현이 있습니까?
- 10. 어디에서 최소 JRE를 다운로드 할 수 있습니까?
- 11. WCF 서비스 - 필요한 최소 web.config?
- 12. ClickOnce를 사용하여 Mono 응용 프로그램을 배포 할 수 있습니까?
- 13. TextView의 최소 너비 (문자 수)를 어떻게 설정할 수 있습니까?
- 14. 업데이트 할 수있는 쿼리에 필요한 최소 사용 권한 (Access Project)
- 15. 필요한 경우 BigInteger로 전환
- 16. SQL 집합에 필요한 최소 권한을 확인하는 도구가 있습니까?
- 17. Tomcat 5.5 stderr 및 stdout 파일이 너무 커지거나 커지면 어떻게 롤백 할 수 있습니까?
- 18. Lucene : 검색에 필요한 최소 유사성 설정
- 19. Spring Roo에서 어떻게 하나의 롤백 명령을 사용할 수 있습니까?
- 20. Clojure에서 내 STM의 롤백 수는 어떻게 볼 수 있습니까?
- 21. 과부하가 필요한 최소 연산자 집합은 무엇입니까?
- 22. jQuery 만 사용하여 애니메이션을 롤백 할 수 있습니까?
- 23. asp.net TransactionScope는 연결이 닫힌 후 트랜잭션을 롤백 할 수 있습니까?
- 24. 버그가있는 iPhone 앱이 승인되면 이전 버전으로 롤백 할 수 있습니까?
- 25. MySql은 여러 테이블에 대해 SQL 트랜잭션을 롤백 할 수 있습니까?
- 26. Zend Framework에서 트랜잭션을 롤백 할 수 없습니다.
- 27. MySQL에서 트랜잭션 - 롤백 할 수 없습니다.
- 28. 필요한 경우 상태를 저장할 수 있도록 사용자가 변경 한 사항을 어떻게 알 수 있습니까?
- 29. Direct3D9 장치를 만드는 데 필요한 최소 코드
- 30. (동적) 링크를 수행하는 데 필요한 최소 정보량?
이 미친 소리지만, 검색 몇 시간 후 나는 그것이 사실이라는 결론에 도달했습니다. 롤백하려면 더 높은 버전 번호로 이전 바이너리를 릴리스해야합니다. – Thomas