Kolumne XAML Expertise: WPF und Windows-Apps

XAML-Tipp: UWP – App beim Start von Windows automatisch starten
Kommentare

In der Kolumne „XAML Expertise“ präsentiert Gregor Biswanger Top-How-tos zum Thema XAML. Einsteiger und fortgeschrittene XAML-Experten sollen hier durch geballtes Wissen gesättigt werden. Heute gibt es folgende Expertise: „UWP: App beim Start von Windows automatisch starten“.

Das neue Windows 10 Fall Creators Update bringt einige neue Features für die Entwicklung von Universal-Windows-Apps mit sich. Eines davon bietet die Möglichkeit, die eigene App beim Windows Start automatisch ausführen zu lassen. Dieses Feature war bisher nur über die Desktop-Bridge, die eine Win32-Anwendung in eine UWP-Anwendung konvertiert, verfügbar. Jetzt hat Microsoft diese Funktion auch für reguläre UWP-Anwendungen bereitgestellt.

Allerdings gibt es immer noch einen Unterschied zwischen der Desktop-Bridge-App und der UWP-App. Die Desktop-Bridge-App benötigt keine Genehmigung des Benutzers. Die UWP-App hingegen benötigt diese Bestätigung beim ersten Start der App.

Als Beispiel wird eine bestehende Universal-Windows-App um das neue StartupTask-API erweitert. Der erste Schritt für die Erweiterung ist das Bearbeiten der Package.appxmanifest-Datei mit dem XML-Editor. Dazu innerhalb von Visual Studio einen Rechtsklick auf die Datei und im Kontextmenü auf Open With … klicken. Im darauffolgenden Dialogfenster den XML-Editor auswählen. Der XML-Inhalt der Datei wird angezeigt und ganz oben bei der Package-Deklaration ein zusätzlicher XML Namespace benötigt:

xmlns:uap5="http://schemas.microsoft.com/appx/manifest/uap/windows10/5"

Außerdem sind die Metadaten für die Verwendung der Erweiterung relevant, die dann innerhalb des Application-Tags hinzugefügt werden müssen. Der zusätzliche XML-Code steht in Listing 1. Der Aufbau ist relativ einfach gehalten: Die wichtigste Info sind die Executable und der EntryPoint, die vom Namen exakt zur eigenen App passen müssen. Für die Task-ID wird einfach ein beliebiger GUID-Wert benötigt. Die Enable-Eigenschaft definiert, ob die Infos auch für den ersten Start der App relevant sind.

Die Windows-App hat nun Zugriff auf das StartupTask-API. Damit die App auch wirklich beim Autostart ausgeführt wird, ist eine Genehmigung durch den Benutzer erforderlich. Wir müssen daher immer berücksichtigen, dass der Benutzer den Start der App auch jederzeit selbst unterbinden kann. Für die Anfrage zur Genehmigung und für das tatsächliche Aktivieren des Autostarts wird der Code aus Listing 2 hinter einem Buttonklick hinterlegt.

Die Windows-App kann jetzt für einen automatischen Start registriert werden. In Abbildung 1 ist zu sehen, wie der Dialog nach dem Buttonklick aussieht. Wird dieser vom Benutzer genehmigt, wird die App automatisch mit Windows ausgeführt. Beispielcode dazu hat Microsoft auf GitHub bereitgestellt.

Abb. 1: Die Windows App für das automatische starten unter Windows aktivieren

Abb. 1: Die Windows App für das automatische starten unter Windows aktivieren

...
  <Extensions>
    <uap5:Extension
      Category="windows.startupTask"
      Executable="AutoStartApp.exe"
      EntryPoint="AutoStartApp.App">
      <uap5:StartupTask
        TaskId="{6CBE4894-D3C3-4FAD-A07F-9846CBD51E09}"
        Enabled="false"
        DisplayName="Auto Start App" />
    </uap5:Extension>
  </Extensions>
</Application>
private async void Button_Click(object sender, RoutedEventArgs e)
{
  var stateMode = await StartupTask.GetAsync("{6CBE4894-D3C3-4FAD-A07F-9846CBD51E09}");

  switch (stateMode.State)
  {
    case StartupTaskState.Disabled:
      var newState = await stateMode.RequestEnableAsync();
      break;
    case StartupTaskState.DisabledByUser:
      break;
    case StartupTaskState.Enabled:
      break;
    case StartupTaskState.DisabledByPolicy:
      break;
    default:
      throw new ArgumentOutOfRangeException();
  }
}
Unsere Redaktion empfiehlt:

Relevante Beiträge

Meinungen zu diesem Beitrag

X
- Gib Deinen Standort ein -
- or -