2016-04-09 11 views
2

Ich möchte nicht das Standardverhalten von Clickonce verwendet, die ein Dialogfenster präsentiert, nach Updates, möchte ich für die Aktualisierung überprüfen manuellmanuelle Prüfung auf Updates mit WPF Clickonce

Nach Suche im Internet fand ich :

 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()); 
     } 

Wenn ich installieren Sie die Anwendung und wollen für die Aktualisierung zu überprüfen, habe ich den Fehler:

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

Könnten Sie bitte helfen.

Vielen Dank im Voraus.

Antwort

1

Rechts auf Ihr Projekt Klicken Sie auf Eigenschaften Wählen Sie dann die Registerkarte zu veröffentlichen gehen Updates Klicken Sie dann deaktivieren Sie „Der Antrag auf Updates überprüfen sollten“

enter image description here...

Ich bin nicht wirklich sicher, warum Sie diesen Fehler erhalten, aber ich verwende auch den gleichen Ansatz.Prüfen manuell auf Updates.Aber meine Anwendung wird auf einem Server bereitgestellt.Ich habe diesen Timer, der nach neuen Updates sucht alle 15 Min.

So geht's:

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

Ich habe meine Antwort aktualisiert. Sie können dieses kopieren und einfügen und entsprechend den Anforderungen Ihrer App anpassen.

Auf meiner vorherigen Antwort, öffne ich ein neues Fenster, das den Benutzern mitteilt, dass es ein Update gibt, dann muss der Benutzer wählen, ob er die Anwendung aktualisieren möchte.

+0

.Log(), ad_UpdateCompleted, NewUpdateWindow(), EnableDWMDropShadow, ShowNotifyBaloon, AppUpdateTimer nicht deklariert. Was ist die Referenz sollte ich verwenden? Kannst du mir bitte eine kleine Test App geben? – YoMoRe

+0

Siehe meine aktualisierte Antwort. – ljpv14

+0

Wir verwenden einen Code, der praktisch identisch mit dem obigen für unser ClickOnce VSTO-Add-In für Outlook ist. Leider erhalten wir eine "TrustNotGrantedException", die angibt, dass der Benutzer die Erteilung von Berechtigungen abgelehnt hat - es gibt jedoch niemals eine Aufforderung. Irgendwelche Vorschläge @ ljpv14 oder @ abdulsalam-elsharif? –