Gemäß der Dokumentation der Windows 10 IoT-REST-Schnittstelle ist es möglich, Apps über die REST-API bereitzustellen.Windows 10 IoT - REST-API-Bereitstellung
/api/appx/Paketmanager/Paket
Uploads und installiert eine .appx Datei.
HTTP-Verb: POST
Parameter
Paket: Dateiname des Pakets installiert werden.
Payload
mehrteiliger konforme http Körper
Wie montieren wir die Nutzlast korrekt? Ich möchte ein lokales .appx Paket bereitstellen, versuchte ich es auf diese Weise:
Windows.Storage.StorageFolder storageFolder =
Windows.Storage.ApplicationData.Current.LocalFolder;
byte[] filecontent = null;
string p = storageFolder.Path;
filecontent = File.ReadAllBytes(p + "\\TestAppDeploy_1.0.1.0_ARM.appx");
//URL + parameter Base64 encoding
string filenameb64 = Convert.ToBase64String(System.Text.Encoding.ASCII.GetBytes("TestAppDeploy_1.0.1.0_ARM.appx"));
string url = "http://localhost:8080/api/appx/packagemanager/package?package="+filenameb64;
HttpClient client = new HttpClient();
//authentication
var byteArray = Encoding.ASCII.GetBytes("Administrator:password");
client.DefaultRequestHeaders.Authorization = new System.Net.Http.Headers.AuthenticationHeaderValue("Basic", Convert.ToBase64String(byteArray));
var multipart = new MultipartContent();
ByteArrayContent byteArrayContent = new ByteArrayContent(filecontent);
multipart.Add(byteArrayContent);
HttpResponseMessage response = await client.PostAsync(url, multipart);
string res = await response.Content.ReadAsStringAsync();
var status = response.StatusCode;
client.Dispose();
Debug.WriteLine(res + " " + status);
Der Code auf dem Windows 10 IoT-Gerät läuft.
Der Beitrag Aktion
HttpResponseMessage response = await client.PostAsync(url, multipart);
gibt mir die folgende Antwort
{"Reason" : "Missing appx file name query parameter"} BadRequest
ich den Inhalt des PostAsync Anruf erraten eine Art von MultipartContent mit zusätzlichen Parameter/Informationen sein müssen. Irgendeine Idee, wie man das löst?