Gestire gli invii di pacchetti in anteprima
L'API di invio di Microsoft Store fornisce metodi che puoi usare per gestire gli invii dei pacchetti di distribuzione per le tue app, incluse le implementazioni graduali dei pacchetti. Per un'introduzione all'API di invio di Microsoft Store, inclusi i prerequisiti per l'utilizzo dell'API, vedereCrea e gestisci invii utilizzando i servizi di Microsoft Store.
Importante
Se usi l'API di invio di Microsoft Store per creare un invio per un pacchetto di distribuzione, assicurati di apportare ulteriori modifiche all'invio solo utilizzando l'API anziché il Centro per i partner. Se utilizzi il pannello di controllo per modificare un invio creato originariamente utilizzando l'API, non potrai più modificare o confermare tale invio utilizzando l'API. In alcuni casi, l'invio potrebbe rimanere in uno stato di errore in cui non è possibile procedere nel processo di invio. In tal caso, è necessario eliminare l'invio e crearne uno nuovo.
Metodi per gestire l'invio dei pacchetti di distribuzione.
Utilizzare i seguenti metodi per ottenere, creare, aggiornare, confermare o eliminare l'invio di un pacchetto di distribuzione. Prima di poter utilizzare questi metodi, il pacchetto di distribuzione deve già esistere nell'account del Centro partner. È possibile creare un pacchetto di distribuzione nel Centro per i partner definendo il tipo di prodotto e l'ID prodotto o utilizzando i metodi API di invio di Microsoft Store descritti in Gestisci pacchetti di distribuzione.
Method | URI | Descrizione |
---|---|---|
GET | https://manage.devcenter.microsoft.com/v1.0/my/applications/{applicationId}/flights/{flightId}/submissions/{submissionId} | Ottieni un invio di un pacchetto di distribuzione esistente |
GET | https://manage.devcenter.microsoft.com/v1.0/my/applications/{applicationId}/flights/{flightId}/submissions/{submissionId}/status | Ottieni lo stato dell'invio di un pacchetto di distribuzione esistente |
POST | https://manage.devcenter.microsoft.com/v1.0/my/applications/{applicationId}/flights/{flightId}/submissions | Crea un nuovo invio di un pacchetto di distribuzione |
PUT | https://manage.devcenter.microsoft.com/v1.0/my/applications/{applicationId}/flights/{flightId}/submissions/{submissionId} | Aggiorna un invio di un pacchetto di distribuzione esistente |
POST | https://manage.devcenter.microsoft.com/v1.0/my/applications/{applicationId}/flights/{flightId}/submissions/{submissionId}/commit | Effettua l'invio di un pacchetto di distribuzione nuovo o aggiornato |
DELETE | https://manage.devcenter.microsoft.com/v1.0/my/applications/{applicationId}/flights/{flightId}/submissions/{submissionId} | Cancella un nuovo invio di un pacchetto di distribuzione |
Creare un invio di pacchetto in anteprima
Per creare un invio per un pacchetto di distribuzione, seguire questa procedura.
Se non lo hai ancora fatto, completa i prerequisiti descritti n Crea e gestisci invii utilizzando i servizi di Microsoft Store, inclusa l'associazione di un'applicazione Azure AD al tuo account del Centro per i partner e l'ottenimento dell'ID client e della chiave. Devi farlo solo una volta; dopo aver ottenuto l'ID client e la chiave, è possibile riutilizzarli ogni volta che è necessario creare un nuovo token di accesso di Azure AD.
Ottieni un token di accesso di Azure AD. Devi passare questo token di accesso ai metodi nell'API di invio di Microsoft Store. Dopo aver ottenuto un token di accesso, questo sarà disponibile per 60 minuti prima della scadenza. Dopo la scadenza del token, è possibile ottenerne uno nuovo.
Crea l'invio di un pacchetto di distribuzione eseguendo il metodo seguente nell'API di invio di Microsoft Store. Questo metodo crea un nuovo invio in corso, che è una copia dell'ultimo invio pubblicato.
POST https://manage.devcenter.microsoft.com/v1.0/my/applications/{applicationId}/flights/{flightId}/submissions
Il corpo della risposta contiene un file invio distribuzione risorsa che include l'ID del nuovo invio, l'URI della firma di accesso condiviso (SAS) per il caricamento di ogni pacchetto per l'invio ad Archiviazione BLOB di Azure e tutti i dati per il nuovo invio (inclusi tutti glli elenchi e le informazioni sui prezzi ).
Nota
Un URI SAS fornisce l'accesso a una risorsa sicura nell'archiviazione di Azure senza richiedere chiavi dell'account. Per informazioni di base sugli URI SAS e sul relativo utilizzo con Archiviazione BLOB di Azure, vedere Firme di accesso condiviso, parte 1: comprensione del modello SAS e Firme di accesso condiviso, parte 2: creare e usare una firma di accesso condiviso con l'archiviazione BLOB.
Se stai aggiungendo nuovi pacchetti per l'invio prepara i pacchetti e aggiungili a un archivio ZIP.
Rivedere idati di invio della distribuzione con le eventuali modifiche richieste per il nuovo invio ed eseguire il seguente metodo per aggiornare l'invio del pacchetto di distribuzione.
PUT https://manage.devcenter.microsoft.com/v1.0/my/applications/{applicationId}/flights/{flightId}/submissions/{submissionId}
Nota
Se stai aggiungendo nuovi pacchetti per l'invio, assicurati di aggiornare i dati di invio per fare riferimento al nome e al percorso relativo di questi file nell'archivio ZIP.
Se stai aggiungendo nuovi pacchetti per l'invio, carica l'archivio ZIP su Azure Blob Storage utilizzando l'URI SAS fornito nel corpo della risposta del metodo POST chiamato in precedenza. Esistono diverse librerie di Azure che puoi usare per eseguire questa operazione su una varietà di piattaforme, tra cui:
- Libreria client di archiviazione di Azure per .NET
- Azure Storage SDK per Java
- SDK di Archiviazione di Azure per Python
Nell'esempio di codice C# seguente viene illustrato come caricare un archivio ZIP nell'archiviazione BLOB di Azure utilizzando la classe CloudBlockBlob nella libreria client di archiviazione di Azure per .NET. Questo esempio presuppone che l'archivio ZIP sia già stato scritto in un oggetto flusso.
string sasUrl = "https://productingestionbin1.blob.core.windows.net/ingestion/26920f66-b592-4439-9a9d-fb0f014902ec?sv=2014-02-14&sr=b&sig=usAN0kNFNnYE2tGQBI%2BARQWejX1Guiz7hdFtRhyK%2Bog%3D&se=2016-06-17T20:45:51Z&sp=rwl"; Microsoft.WindowsAzure.Storage.Blob.CloudBlockBlob blockBob = new Microsoft.WindowsAzure.Storage.Blob.CloudBlockBlob(new System.Uri(sasUrl)); await blockBob.UploadFromStreamAsync(stream);
Invia il pacchetto di distribuzione eseguendo il seguente metodo. Ciò avviserà il Centro per i partner che hai terminato l'invio e che gli aggiornamenti dovrebbero ora essere applicati al tuo account.
POST https://manage.devcenter.microsoft.com/v1.0/my/applications/{applicationId}/flights/{flightId}/submissions/{submissionId}/commit
Controlla lo stato eseguendo il metodo seguente per ottenere lo stato dell'invio del pacchetto di distribuzione.
GET https://manage.devcenter.microsoft.com/v1.0/my/applications/{applicationId}/flights/{flightId}/submissions/{submissionId}/status
Per confermare lo stato di invio, rivedere il valore dellostato nel corpo della risposta. Questo valore dovrebbe cambiare da CommitStarted aPreProcessingse la richiesta ha esito positivo oppure a CommitFailed se ci sono errori nella richiesta. Se ci sono errori, il campo di statusDetails contiene ulteriori dettagli sull'errore.
Una volta completato correttamente l'invio, questo viene inviato allo Store per l'inserimento. È possibile continuare a monitorare lo stato di avanzamento dell'invio utilizzando il metodo precedente o visitando il Centro per i partner.
Esempi di codice
I seguenti articoli forniscono esempi di codice dettagliati che dimostrano come creare un invio di un pacchetto di distribuzione in diversi linguaggi di programmazione:
Modulo StoreBroker PowerShell
In alternativa alla chiamata diretta all'API di invio di Microsoft Store, forniamo anche un modulo PowerShell open source che implementa un'interfaccia della riga di comando sopra l'API. Questo modulo è chiamato StoreBroker. Puoi utilizzare questo modulo per gestire gli invii di app, voli e componenti aggiuntivi dalla riga di comando invece di chiamare direttamente l'API di invio di Microsoft Store oppure puoi semplicemente esplorare l'origine per visualizzare altri esempi su come chiamare questa API. Il modulo StoreBroker viene utilizzato attivamente in Microsoft come modalità principale con cui molte applicazioni di prima parte vengono inviate allo Store.
Per maggiori informazioni, vedere la nostra pagina StoreBroker su GitHub.
Gestire un'implementazione graduale del pacchetto per l'invio di un pacchetto in anteprima
Puoi implementare gradualmente i pacchetti aggiornati nell'invio di un pacchetto di distribuzione a una percentuale di clienti della tua app su Windows 10 e Windows 11. Ciò ti consente di monitorare feedback e dati analitici per i pacchetti specifici per assicurarti di essere sicuro dell'aggiornamento prima di distribuirlo su un piano più ampio. Puoi modificare la percentuale di implementazione (o interrompere l'aggiornamento) per un invio pubblicato senza dover creare un nuovo invio. Per altri dettagli, incluse le istruzioni su come abilitare e gestire l'implementazione graduale del pacchetto nel Centro per i partner, vedere questo articolo.
Per abilitare a livello di codice un'implementazione graduale del pacchetto per l'invio di un pacchetto di distribuzione, segui questo processo utilizzando i metodi nell'API di invio di Microsoft Store:
- Crea l'invio di un pacchetto di distribuzione or ottieni l'invio di un pacchetto di distribuzione.
- Nei dati di risposta, individuare la risorsapackageRollout, impostare il campotisPackageRollousu vero, e impostare il campopackageRolloutPercentage relativo alla percentuale di clienti della tua app che dovrebbero ricevere i pacchetti aggiornati.
- Passa i dati aggiornati di invio del pacchetto di distribuzione al metodo di aggiornamento dell'invio del pacchetto di distribuzione.
Dopo aver abilitato l'implementazione graduale del pacchetto per l'invio di un pacchetto di distribuzione, è possibile utilizzare i seguenti metodi per ottenere, aggiornare, interrompere o finalizzare l'implementazione graduale a livello di codice.
Method | URI | Descrizione |
---|---|---|
GET | https://manage.devcenter.microsoft.com/v1.0/my/applications/{applicationId}/flights/{flightId}/submissions/{submissionId}/packagerollout | Ottieni le informazioni sull'implementazione graduale per l'invio di un pacchetto di distribuzione |
POST | https://manage.devcenter.microsoft.com/v1.0/my/applications/{applicationId}/flights/{flightId}/submissions/{submissionId}/updatepackagerolloutpercentage | AggiornaOttieni le informazioni sull'implementazione graduale percentuale per l'invio di un pacchetto di distribuzione |
POST | https://manage.devcenter.microsoft.com/v1.0/my/applications/{applicationId}/flights/{flightId}/submissions/{submissionId}/haltpackagerollout | Interrompi le informazioni sull'implementazione graduale per l'invio di un pacchetto di distribuzione |
POST | https://manage.devcenter.microsoft.com/v1.0/my/applications/{applicationId}/flights/{flightId}/submissions/{submissionId}/finalizepackagerollout | Finalizza le informazioni sull'implementazione graduale per l'invio di un pacchetto di distribuzione |
Risorse dati
I metodi API di invio di Microsoft Store per la gestione degli invii del pacchetto di distribuzione utilizzano le seguenti risorse di dati JSON.
Risorsa di invio distribuzione
Questa risorsa descrive un invio di pacchetto di distribuzione.
{
"id": "1152921504621243649",
"flightId": "cd2e368a-0da5-4026-9f34-0e7934bc6f23",
"status": "PendingCommit",
"statusDetails": {
"errors": [],
"warnings": [],
"certificationReports": []
},
"flightPackages": [
{
"fileName": "newPackage.appx",
"fileStatus": "PendingUpload",
"id": "",
"version": "1.0.0.0",
"languages": ["en-us"],
"capabilities": [],
"minimumDirectXVersion": "None",
"minimumSystemRam": "None"
}
],
"packageDeliveryOptions": {
"packageRollout": {
"isPackageRollout": false,
"packageRolloutPercentage": 0.0,
"packageRolloutStatus": "PackageRolloutNotStarted",
"fallbackSubmissionId": "0"
},
"isMandatoryUpdate": false,
"mandatoryUpdateEffectiveDate": "1601-01-01T00:00:00.0000000Z"
},
"fileUploadUrl": "https://productingestionbin1.blob.core.windows.net/ingestion/8b389577-5d5e-4cbe-a744-1ff2e97a9eb8?sv=2014-02-14&sr=b&sig=wgMCQPjPDkuuxNLkeG35rfHaMToebCxBNMPw7WABdXU%3D&se=2016-06-17T21:29:44Z&sp=rwl",
"targetPublishMode": "Immediate",
"targetPublishDate": "",
"notesForCertification": "No special steps are required for certification of this app."
}
Questa risorsa ha i seguenti valori.
Valore | Tipo | Descrizione |
---|---|---|
id | string | L'ID per l'invio. |
flightId | string | L'ID del pacchetto in anteprima a cui è associato l'invio. |
stato | string | Lo stato dell'invio. Questo può essere uno dei seguenti valori:
|
statusDetails | oggetto | Una risorsa di dettagli sullo stato che contiene dettagli aggiuntivi sullo stato dell'invio, incluse informazioni su eventuali errori. |
flightPackages | array | Contiene risorse del pacchetto di distribuzione che forniscono dettagli su ciascun pacchetto nell'invio. |
packageDeliveryOptions | oggetto | Una risorsa relativa alle opzioni di consegna del pacchetto che contiene l'implementazione graduale del pacchetto e le impostazioni di aggiornamento obbligatorie per l'invio. |
fileUploadUrl | string | L'URI della firma di accesso condiviso (SAS) per caricare eventuali pacchetti per l'invio. Se stai aggiungendo nuovi pacchetti per l'invio, carica l'archivio ZIP che contiene i pacchetti su questo URI. Per maggiori informazioni, vedere Crea invio pacchetto di distribuzione. |
targetPublishMode | string | Modalità di pubblicazione per l'invio. I valori possibili sono i seguenti:
|
targetPublishDate | string | Data di pubblicazione per l'invio in formato ISO 8601, se targetPublishMode è impostato su SpecificDate. |
notesForCertification | string | Fornisce informazioni aggiuntive per i tester di certificazione, ad esempio le credenziali dell'account di test e i passaggi per accedere e verificare le funzionalità. Per maggiori informazioni, vedere Note per la certificazione. |
Risorsa dei dettagli sullo stato
Questa risorsa contiene dettagli aggiuntivi sullo stato di un invio. Questa risorsa ha i seguenti valori.
Valore | Tipo | Descrizione |
---|---|---|
errori | oggetto | Un array di risorse per i dettagli sullo stato che contiene dettagli sull'errore per l'invio. |
avvisi | oggetto | Un array di risorse per i dettagli sullo stato che contiene dettagli di avviso per l'invio. |
certificationReports | oggetto | Un array di risorse del rapporto di certificazione che fornisce l'accesso ai dati del rapporto di certificazione per l'invio. È possibile esaminare questi report per ulteriori informazioni se la certificazione fallisce. |
Risorsa dei dettagli sullo stato
Questa risorsa contiene informazioni aggiuntive su eventuali errori o avvisi correlati per un invio. Questa risorsa ha i seguenti valori.
Valore | Tipo | Descrizione |
---|---|---|
codice | string | Un codice di stato dell'invio che descrive il tipo di errore o avviso.. |
dettagli | string | Un messaggio con maggiori dettagli sul problema. |
Risorsa del rapporto di certificazione
Questa risorsa fornisce l'accesso ai dati del report di certificazione per un invio. Questa risorsa ha i seguenti valori.
Valore | Tipo | Descrizione |
---|---|---|
data | string | La data e l'ora in cui è stato generato il report, in formato ISO 8601. |
reportUrl | string | L'URL da cui è possibile accedere al report. |
Risorsa di distribuzione del pacchetto
Questa risorsa fornisce i dettagli sull'invio del pacchetto.
{
"flightPackages": [
{
"fileName": "newPackage.appx",
"fileStatus": "PendingUpload",
"id": "",
"version": "1.0.0.0",
"languages": ["en-us"],
"capabilities": [],
"minimumDirectXVersion": "None",
"minimumSystemRam": "None"
}
],
}
Questa risorsa ha i seguenti valori.
Nota
Quando chiami il metodoaggiornamento di un pacchetto di distribuzione e invio, solo il fileName, fileStatus, minimumDirectXVersion, e il valore minimumSystemRam di questo oggetto sono obbligatori nel corpo della richiesta. Gli altri valori vengono popolati dal Centro per i partner.
Valore | Tipo | Descrizione |
---|---|---|
fileName | string | Il nome del pacchetto. |
fileStatus | string | Lo stato del pacchetto. Questo può essere uno dei seguenti valori:
|
id | string | Un ID che identifica in modo univoco il pacchetto. Questo valore viene utilizzato dal Centro per i partner. |
versione | string | La versione del pacchetto dell'app. Per maggiori informazioni, vedere Numerazione della versione del pacchetto. |
architecture | string | L'architettura del pacchetto app (ad esempio, ARM). |
languages | array | Una serie di codici lingua per le lingue supportate dall'app. Per ulteriori informazioni, vedere per ulteriori informazioniLingue supportate. |
capabilities | array | Una serie di funzionalità richieste dal pacchetto. Per ulteriori informazioni sulle funzionalità, vedere Dichiarazione di capacità dell'app. |
minimumDirectXVersion | string | La versione minima di DirectX supportata dal pacchetto dell'app. Questo può essere impostato solo per le app destinate a Windows 8.x; viene ignorato per le app destinate ad altre versioni. Questo può essere uno dei seguenti valori:
|
minimumSystemRam | string | La RAM minima richiesta dal pacchetto dell'app. Questo può essere impostato solo per le app destinate a Windows 8.x; viene ignorato per le app destinate ad altre versioni. Questo può essere uno dei seguenti valori:
|
Risorsa relativa alle opzioni di consegna del pacco
Questa risorsa relativa alle opzioni di consegna del pacchetto contiene l'implementazione graduale del pacchetto e le impostazioni di aggiornamento obbligatorie per l'invio.
{
"packageDeliveryOptions": {
"packageRollout": {
"isPackageRollout": false,
"packageRolloutPercentage": 0.0,
"packageRolloutStatus": "PackageRolloutNotStarted",
"fallbackSubmissionId": "0"
},
"isMandatoryUpdate": false,
"mandatoryUpdateEffectiveDate": "1601-01-01T00:00:00.0000000Z"
},
}
Questa risorsa ha i seguenti valori.
Valore | Tipo | Descrizione |
---|---|---|
packageRollout | oggetto | Unarisorsa di distribuzione del pacchettocontiene l'implementazione graduale del pacchetto e le impostazioni di aggiornamento obbligatorie per l'invio. |
isMandatoryUpdate | boolean | Indica se desideri considerare i pacchetti in questo invio come obbligatori per gli aggiornamenti delle app autoinstallanti. Per ulteriori informazioni sui pacchetti obbligatori per gli aggiornamenti delle app autoinstallanti, vedere Scarica e installa gli aggiornamenti del pacchetto per la tua app. |
mandatoryUpdateEffectiveDate | data | La data e l'ora in cui i pacchetti in questo invio diventano obbligatori, nel formato ISO 8601 e nel fuso orario UTC. |
Risorsa di distribuzione del pacchetto
Questa risorsa contiene le impostazioni di implementazione graduale del pacchetto per l'invio. per l'invio. Questa risorsa ha i seguenti valori.
Valore | Tipo | Descrizione |
---|---|---|
isPackageRollout | boolean | Indica se per l'invio è abilitata l'implementazione graduale del pacchetto. |
packageRolloutPercentage | float | La percentuale di utenti che riceveranno i pacchetti nell'implementazione graduale. |
packageRolloutStatus | string | Una delle seguenti stringhe che indica lo stato dell'implementazione graduale del pacchetto:
|
fallbackSubmissionId | string | L'ID dell'invio che verrà ricevuto dai clienti che non ricevono i pacchetti di implementazione graduale. |
Nota
I valori packageRolloutStatus e fallbackSubmissionId vengono assegnati dal Centro per i partner e non sono destinati a essere impostati dallo sviluppatore. Se includi questi valori nel corpo di una richiesta, questi valori verranno ignorati.
Enumerazioni
Questi metodi utilizzano le seguenti enumerazioni.
Codice di stato dell'invio
I seguenti codici rappresentano lo stato di un invio.
Codice | Descrizione |
---|---|
Nessuna | Non è stato specificato alcun codice. |
InvalidArchive | L'archivio ZIP contenente il pacchetto non è valido o ha un formato di archivio non riconosciuto. |
MissingFiles | L'archivio ZIP non contiene tutti i file elencati nei dati di invio oppure si trovano nella posizione sbagliata nell'archivio. |
PackageValidationFailed | La convalida di uno o più pacchetti inviati non è riuscita. |
InvalidParameterValue | Uno dei parametri nel corpo della richiesta non è valido. |
InvalidOperation | L'operazione che hai tentato non è valida. |
InvalidState | L'operazione tentata non è valida per lo stato attuale del pacchetto. |
ResourceNotFound | Impossibile trovare il pacchetto specificato. |
ServiceError | Un errore interno del servizio ha impedito la riuscita della richiesta. Riprova la richiesta. |
ListingOptOutWarning | Lo sviluppatore ha rimosso un elenco da un invio precedente o non ha incluso le informazioni sull'elenco supportate dal pacchetto. |
ListingOptInWarning | Lo sviluppatore ha aggiunto un elenco. |
UpdateOnlyWarning | Lo sviluppatore sta tentando di inserire qualcosa che abbia solo il supporto per gli aggiornamenti. |
Altro | L'invio è in uno stato non riconosciuto o senza categoria. |
PackageValidationWarning | Il processo di convalida del pacchetto ha generato un avviso. |
Argomenti correlati
- Creare e gestire gli invii usando i servizi di Microsoft Store
- Gestisci i pacchetti di distribuzione utilizzando l'API di invio di Microsoft Store
- Ottieni un nuovo invio di un pacchetto di distribuzione
- Creare un invio di pacchetto in anteprima
- Aggiorna un nuovo invio di un pacchetto di distribuzione
- Invio di un pacchetto di distribuzione
- Eliminare l'invio di un pacchetto in anteprima
- Ottenere lo stato dell'invio di un pacchetto in anteprima