2012-03-13 2 views
2

잘 알려진 사실은 clickonce가 설치된 응용 프로그램을 두 번 클릭하면 "시스템 요구 사항 확인 중"이라는 "clickonce 화면"이 표시된다는 것입니다. 그런 다음 서버에 업데이트 된 버전이 있으면 clickonce가 설치된 로컬 버전을 업데이트하고 응용 프로그램을 시작합니다. 이 전체 프로세스를 사용자 정의 할 수있는 방법이 있습니까? 그렇다고해서 설치/업 그레 이드 부분으로 뭔가를하고 싶지는 않습니다.이 모든 것을 GUI로 바꾸고 싶습니다. "응용 프로그램 시작 중 ...."이라고 표시된 화면과 같이 무한 진행률 표시 줄과 함께 표시 될 수 있습니다. 이 화면은 모든 clickonce 팝업 대신에 clickonce가 백그라운드에서 실제 작업을 수행 할 수 있도록합니다. 스플래시 화면의 종류는 제가 의도 한 바지만 clickonce 화면의 GUI를 재정의합니다 ... 제안 사항 ???clickonce 다운로드 화면 사용자 정의

답변

0

ApplicationDeployment 클래스를 사용하여 프로그램을 과학적으로 업데이트 할 수 있습니다. 그러나이 경우 문제에 따라 간단하거나 정교 할 수있는 업데이트 논리를 구현해야합니다.

프로그래밍 방식으로 업데이트를 다운로드하고 다운로드하는 경우 "게시"창에서 업데이트 옵션을 선택 취소 할 수 있습니다. 즉, 응용 프로그램은 ClickOnce에 의해 업데이트되지 않고 작성한 모든 업데이트 논리를 수행합니다. 코드에서 스플래시 화면을 추가하고 동 기적으로 업데이트하거나 일부 "동적"을 추가하여 CheckForDetailedUpdate 메소드에서 제공하는 데이터를 사용하여 업데이트 진행 상황을 사용자에게 알릴 수 있습니다.

리틀 샘플 :

[STAThread] 
    static void Main() 
    { 
     Application.EnableVisualStyles(); 
     Application.SetCompatibleTextRenderingDefault(false); 

     bool isUpdated = tryUpdateApplication(); 

     if (isUpdated) 
     { 
      Application.Restart(); 
     } 
     else 
     { 
      Application.Run(new MainForm()); 
     } 
    } 

    static bool tryUpdateApplication() 
    { 
     bool result = false; 

     try 
     { 
      UpdateCheckInfo info = ApplicationDeployment.CurrentDeployment.CheckForDetailedUpdate(); 

      if (info.UpdateAvailable) 
      { 
       //Show what you want to show 
       ApplicationDeployment.CurrentDeployment.Update(); 
       //Hide what you showed 
       result = true; 
      } 
     } 
     catch (Exception ex) //better to catch the specific exceptions 
     { 
      //some exception handling logic 
     } 

     return result; 
    } 
관련 문제