2016-04-09 2 views
2

Я не хочу, чтобы использоваться поведение по умолчанию ClickOnce, который представляет собой диалоговое окно, проверка обновлений, я хочу, чтобы проверить наличие обновлений вручнуюРучная проверка обновлений с WPF ClickOnce

После поиска в Интернете я нашел :

 try 
     { 
      var deploy = ApplicationDeployment.CurrentDeployment; 

      if (deploy.CheckForUpdate()) 
       MessageBox.Show("There is a new update"); 
      else 
       MessageBox.Show("You using the latest version"); 

     } 
     catch (Exception e2) 
     { 
      MessageBox.Show(e2.ToString()); 
     } 

Когда я установить приложение и хотите проверить наличие обновлений я получил ошибку:

system.deployment.application.trustnotgrantedexception: user has refused to grant required permissions to the application

Не могли бы вы помочь, пожалуйста.

Заранее спасибо.

ответ

0

Там есть превосходная статья на CodeProject, что дает вам полный контроль: http://www.codeproject.com/Articles/731954/Simple-Auto-Update-Let-your-application-update-i

Нет ошибок от того, что я могу сказать и отлично работает в моих приложениях.

Единственная проблема, очевидно, в том, что вы не можете использовать ClickOnce. Это не обязательно плохо, хотя (:..

1

Щелкните правой кнопкой мыши на вашем проекте Выберите Свойства Затем перейдите на вкладку публиковать Нажмите обновления Затем снимите флажок «Приложение должно проверять наличие обновлений»

enter image description here...

Я не уверен, почему вы получаете эту ошибку, но я также использую тот же подход. Проверка вручную для обновлений. Но мое приложение развернуто на сервере. У меня есть этот таймер, который проверяет наличие новых обновлений каждые 15 минут

Вот как я это делаю.

private void InstallUpdateSyncWithInfo() 
    { 
     if (!isNewUpdateMessageShown) 
     { 
      try 
      { 
       if (ApplicationDeployment.IsNetworkDeployed) 
       { 
        ApplicationDeployment ad = ApplicationDeployment.CurrentDeployment; 
        ad.UpdateCompleted += new AsyncCompletedEventHandler(ad_UpdateCompleted); 
        //ad_UpdateCompleted is a private method which handles what happens after the update is done 
        UpdateCheckInfo info = ad.CheckForDetailedUpdate(); 
        if (info.UpdateAvailable) 
        { 
         //You can create a dialog or message that prompts the user that there's an update. Make sure the user knows that your are updating the application. 
         ad.UpdateAsync();//Updates the application asynchronously 
        } 
       } 

      } 
      catch (Exception ex) 
      { 
       ex.Log(); 
      } 
     } 

    } 

    void ad_UpdateCompleted(object sender, AsyncCompletedEventArgs e) 
    { 
     //Do something after the update. Maybe restart the application in order for the update to take effect. 

    } 

EDIT

Я обновил свой ответ. Вы можете скопировать и вставить этот файл и настроить его на основе потребностей вашего приложения.

В моем предыдущем ответе я открываю новое окно, в котором пользователи сообщают, что есть обновление, после чего пользователь выбирает, хочет ли он обновить приложение.

+0

.Log(), ad_UpdateCompleted, NewUpdateWindow(), EnableDWMDropShadow, ShowNotifyBaloon, appUpdateTimer не объявлен. Какую ссылку я должен использовать? Может, я дал небольшое приложение для тестирования, пожалуйста? – YoMoRe

+0

См. Мой обновленный ответ. – ljpv14

+0

Мы используем код, который практически идентичен приведенному выше для нашей надстройки ClickOnce VSTO для Outlook. К сожалению, мы получаем «TrustNotGrantedException», указывающий на то, что пользователь отказался предоставить разрешения, но никогда не существует ни одного приглашения. Любые предложения @ ljpv14 или @ abdulsalam-elsharif? –

Смежные вопросы