обновить приложение UWP с USB-накопителя на Raspberry Pi - PullRequest
0 голосов
/ 03 декабря 2018

У меня есть универсальное приложение для Windows, которое я создал в visual studio 2017. Я развернул это приложение на своем Raspberry Pi, и оно работает хорошо.Я также создал пакет, используя 2017. Я хочу добавить кнопку обновления в мое приложение, и при нажатии оно будет искать USB-флешку и проверять файл.Я вижу, что этот файл будет обновлять приложение так же, как если бы он искал магазин для обновления.Это устройство не имеет подключения к Интернету и предназначено только для внутреннего использования.Но я хочу убедиться, что я могу обновить их или дать USB-флешку с обновлением, чтобы коллега мог обновить его.

Я понятия не имею, как это сделать или если это возможно.Любая помощь с благодарностью.

1 Ответ

0 голосов
/ 03 декабря 2018

Я хочу добавить кнопку обновления в мое приложение, и при нажатии она будет искать USB-накопитель и проверять файл.

API packagemanager.UpdatePackageAsync может помочь вам сделатьэто в вашем приложении UWP и само обновление.

Но вы не можете просто «найти USB-флешку и проверить файл», как вы можете сделать это на рабочем столе через FilePicker, который не поддерживается в Windows IoT Core.Здесь я показываю пример, чтобы указать местоположение и версию файла, а затем обновить его.

Чтобы использовать этот API, вам нужно добавить возможность packageManagement в Package.appxmanifest, как показано ниже:

...   
xmlns:rescap="http://schemas.microsoft.com/appx/manifest/foundation/windows10/restrictedcapabilities" 

IgnorableNamespaces="uap mp rescap">

...

  <Capabilities>
    <rescap:Capability Name="packageManagement" />
  </Capabilities>

Существует пример кода, на который вы можете ссылаться:

MainPage.xaml

<StackPanel VerticalAlignment="Center">
    <Button Content="Update" Click="Button_Click"/>
    <TextBox Name="NewVersion" PlaceholderText="For example: 1.0.5.0"/>
    <TextBox Name="PkgPath" PlaceholderText="For example: D:\AppUpdate"/>
    <TextBlock Text="Install result: " Name="Result" />
</StackPanel>

MainPage.xaml.cs

    private async void Button_Click(object sender, RoutedEventArgs e)
    {
        try
        {
            string versionNum = NewVersion.Text;
            string packagePath = PkgPath.Text; 
            string packageLocation = packagePath + @"\TestAppUpdate_" + versionNum + "_x86_x64_arm_Debug.appxbundle";
            PackageManager packagemanager = new PackageManager();
            await packagemanager.UpdatePackageAsync(new Uri(packageLocation), null, DeploymentOptions.ForceApplicationShutdown);
        }
        catch (Exception ex)
        {
            Result.Text = ex.Message;
        }
    }

Приложение обновится и автоматически перезапустится до новой версии.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...