Preparare le app iOS per i criteri di protezione delle app con lo strumento di wrapping delle app di IntunePrepare iOS apps for app protection policies with the Intune App Wrapping Tool

Si applica a: IntuneApplies to: Intune
Questo argomento si applica a Intune sia nel portale di Azure che nel portale classico.This topic applies to Intune in both the Azure portal and the classic portal.

Usare lo strumento di wrapping delle app di Microsoft Intune per iOS per abilitare i criteri di protezione delle app di Intune senza modificare il codice dell'app stessa.Use the Microsoft Intune App Wrapping Tool for iOS to enable Intune app protection policies for in-house iOS apps without changing the code of the app itself.

Lo strumento è un'applicazione da riga di comando di macOS che crea un wrapper intorno a un'app.The tool is a macOS command-line application that creates a wrapper around an app. Dopo l'elaborazione di un'app, è possibile modificarne la funzionalità distribuendo i criteri di protezione delle app in tale app.Once an app is processed, you can change the app's functionality by deploying app protection policies to it.

Per scaricare lo strumento, vedere Microsoft Intune App Wrapping Tool for iOS (Strumento di wrapping delle app di Microsoft Intune per iOS) in GitHub.To download the tool, see Microsoft Intune App Wrapping Tool for iOS on GitHub.

Prerequisiti generali per lo strumento di wrapping delle appGeneral prerequisites for the App Wrapping Tool

Prima di eseguire lo strumento di wrapping delle app, è necessario soddisfare alcuni prerequisiti generali:Before you run the App Wrapping Tool, you need to fulfill some general prerequisites:

  • Scaricare lo strumento di wrapping delle app di Microsoft Intune per iOS da GitHub.Download the Microsoft Intune App Wrapping Tool for iOS from GitHub.

  • Un computer macOS che esegue OS X 10.8.5 o versioni successive e con il set di strumenti XCode versione 5 o successive.A macOS computer that runs OS X 10.8.5 or later and has the Xcode toolset version 5 or later installed.

  • L'app iOS di input deve essere sviluppata e firmata dalla società o da un fornitore di software indipendente (ISV).The input iOS app must be developed and signed by your company or an independent software vendor (ISV).

    • Il file dell'app di input deve avere estensione ipa o app.The input app file must have the extension .ipa or .app.

    • L'app di input deve essere compilata per iOS 8.0The input app must be compiled for iOS 8.0. o versione successiva.or later.

    • L'app di input non può essere crittografata.The input app cannot be encrypted.

    • L'app di input non può avere attributi di file estesi.The input app cannot have extended file attributes.

    • L'app di input deve avere i diritti impostati prima dell'elaborazione con lo strumento di wrapping delle app di Intune.The input app must have entitlements set before being processed by the Intune App Wrapping Tool. I diritti concedono all'app autorizzazioni e funzionalità aggiuntive oltre a quelle generalmente concesse.Entitlements give the app additional permissions and capabilities beyond those typically granted. Per istruzioni, vedere Impostazione dei diritti delle app.See Setting app entitlements for instructions.

Prerequisiti per sviluppatori Apple per lo strumento di wrapping delle appApple Developer prerequisites for the App Wrapping Tool

Per distribuire le app di cui viene eseguito il wrapping in modo esclusivo agli utenti dell'organizzazione, è necessario un account per il programma Apple Developer Enterprise Program e più entità per la firma delle app collegate al proprio account per sviluppatori di Apple.To distribute wrapped apps exclusively to your organization's users, you need an account with the Apple Developer Enterprise Program and several entities for app signing that are linked to your Apple Developer account.

Per altre informazioni sulla distribuzione di app iOS internamente per gli utenti dell'organizzazione, leggere la guida ufficiale Distributing Apple Developer Enterprise Program Apps (Distribuzione di app Apple Developer Enterprise Program).To learn more about distributing iOS apps internally to your organization's users, read the official guide to Distributing Apple Developer Enterprise Program Apps.

È necessario quanto segue per distribuire le app di cui è stato eseguito il wrapping con Intune:You will need the following to distribute apps wrapped by Intune:

  • Account per sviluppatori per Apple Developer Enterprise Program.A developer account with the Apple Developer Enterprise Program.

  • Certificato di firma della distribuzione interno e ad hoc con identificatore del team valido.In-house and ad-hoc distribution signing certificate with valid Team Identifier.

    • L'hash SHA1 del certificato di firma sarà necessario come parametro per lo strumento di wrapping delle app di Intune.You will need the SHA1 hash of the signing certificate as a parameter to the Intune App Wrapping Tool.
  • Profili di provisioning della distribuzione interno.In-house distribution provisioning profile.

Procedura per creare un account Apple Developer EnterpriseSteps to create an Apple Developer Enterprise account

  1. Passare al sito Apple Developer Enterprise Program.Go to the Apple Developer Enterprise Program site.

  2. In alto a destra nella pagina fare clic su Enroll (Registra).In the top right of the page, click Enroll.

  3. Leggere l'elenco di controllo delle informazioni necessarie per la registrazione.Read the checklist of what you need to enroll. Fare clic su Start Your Enrollment (Avvia registrazione) nella parte inferiore della pagina.Click Start Your Enrollment at the bottom of the page.

  4. Accedere (Sign in) con l'ID Apple dell'organizzazione.Sign in with the Apple ID of your organization. Se non è disponibile, fare clic su Create Apple ID (Crea ID Apple).If you don't have one, click Create Apple ID.

  5. Selezionare Entity Type (Tipo di entità) e fare clic su Continue (Continua).Select your Entity Type and click Continue.

  6. Compilare il modulo con le informazioni dell'organizzazione.Fill out the form with your organization's information. Fare clic su Continue.Click Continue. A questo punto, Apple contatterà l'utente per verificare che sia autorizzato a registrare l'organizzazione.At this point, Apple contacts you to verify that you are authorized to enroll your organization.

  7. Dopo la verifica, fare clic su Agree to License (Accettazione licenza).After verification, click Agree to License.

  8. Dopo aver accettato la licenza, completare la registrazione con acquisto e attivazione del programma.After agreeing to license, finish by purchasing and activating the program.

  9. Se si è l'agente del team (ovvero la persona che partecipa al programma Apple Developer Enterprise Program per conto dell'organizzazione), comporre prima di tutto il team invitando i membri e assegnando i ruoli.If you are the team agent (the person who joins the Apple Developer Enterprise Program on behalf of your organization), build your team first by inviting team members and assigning roles. Per informazioni su come gestire il team, leggere la documentazione di Apple Managing Your Developer Account Team (Gestione del team di account per sviluppatori).To learn how to manage your team, read the Apple documentation on Managing Your Developer Account Team.

Procedura per creare un certificato di firma AppleSteps to create an Apple signing certificate

  1. Passare al portale per sviluppatori Apple.Go to the Apple Developer portal.

  2. In alto a destra nella pagina fare clic su Account.In the top right of the page, click Account.

  3. Accedere (Sign in) con l'ID Apple dell'organizzazione.Sign in with your organizational Apple ID.

  4. Fare clic su Certificates, IDs & Profiles (Certificati, ID e profili).Click Certificates, IDs & Profiles.

    Portale per sviluppatori Apple

  5. Fare clic suClick the segno più nel portale per sviluppatori Apple nell'angolo in alto a destra per aggiungere un certificato iOS.in the top right corner to add an iOS certificate.

  6. Scegliere di creare un certificato In-House and Ad Hoc (Interno e ad hoc) in Production (Produzione).Choose to create an In-House and Ad Hoc certificate under Production.

    Selezionare il certificato interno e ad hoc

    Nota

    Se non si prevede di distribuire l'app e si vuole solo testarla internamente, è possibile usare un certificato per lo sviluppo di app iOS invece di un certificato per la produzione.If do not plan to distribute the app, and only want to test it internally, you can use an iOS App Development certificate instead of a certificate for Production. Se si usa un certificato di sviluppo, assicurarsi che il profilo di provisioning per dispositivi mobili faccia riferimento ai dispositivi in cui verrà installata l'app.If you use a development certificate, make sure the mobile provisioning profile references the devices on which the app will be installed.

  7. Fare clic su Next (Avanti) nella parte inferiore della pagina.Click Next at the bottom of the page.

  8. Leggere le istruzioni per la creazione di una richiesta di firma del certificato (CSR, Certificate Signing Request) mediante l'applicazione Accesso Portachiavi nel computer macOS.Read the instructions on creating a Certificate Signing Request (CSR) using the Keychain Access application on your macOS computer.

    Leggere le istruzioni per creare una richiesta CSTR

  9. Seguire le istruzioni sopra riportate per creare una richiesta di firma del certificato.Follow the instructions above to create a Certificate Signing Request. Nel computer macOS in uso avviare l'applicazione Accesso Portachiavi.On your macOS computer, launch the Keychain Access application.

  10. Nel menu macOS nella parte superiore della schermata, passare a Accesso Portachiavi > Assistente Certificato > Richiedi un certificato da una Autorità di Certificazione.On the macOS menu at the top of the screen, go to Keychain Access > Certificate Assistant > Request a Certificate From a Certificate Authority.

    Richiedere un certificato a un'Autorità di certificazione in Accesso Portachiavi

  11. Seguire le istruzioni nel sito per sviluppatori Apple sopra indicato su come creare un file CSR.Follow the instructions from the Apple developer site above on how to create a CSR file. Salvare il file CSR nel computer macOS in uso.Save the CSR file to your macOS computer.

    Richiedere un certificato a un'Autorità di certificazione in Accesso Portachiavi

  12. Tornare al sito per sviluppatori Apple.Return to the Apple developer site. Fare clic su Continue.Click Continue. Caricare quindi il file CSR.Then upload the CSR file.

  13. Il certificato di firma viene generato da Apple.Apple generates your signing certificate. Scaricarlo e salvarlo in un percorso facile da ricordare nel computer macOS.Download and save it to a memorable location on your macOS computer.

    Scaricare il certificato di firma

  14. Fare doppio clic sul file di certificato appena scaricato per aggiungere il certificato a un portachiavi.Double-click the certificate file you just downloaded to add the certificate to a keychain.

  15. Aprire di nuovo Accesso Portachiavi.Open Keychain Access again. Individuare il certificato cercandone il nome nella barra di ricerca in alto a destra.Locate your certificate by searching for its name in the top right search bar. Fare clic con il pulsante destro del mouse su un elemento per visualizzare il menu e scegliere Ottieni informazioni.Right-click on the item to bring up the menu and click Get Info. Nelle schermate di esempio viene usato un certificato di sviluppo anziché un certificato di produzione.In the example screens, we are using a development certificate instead of a production certificate.

    Aggiungere il certificato a un portachiavi

  16. Viene visualizzata una finestra informativa.An informational window appears. Scorrere verso il basso fino alla sezione Impronte digitali.Scroll to the bottom and look under the Fingerprints label. Copiare la stringa SHA1 (sfocata) da usare come argomento per "-c" per lo strumento di wrapping delle app.Copy the SHA1 string (blurred out) to use as the argument for "-c" for the App Wrapping Tool.

    Aggiungere il certificato a un portachiavi

Procedura per creare un profilo di provisioning della distribuzione internoSteps to create an In-House Distribution Provisioning profile

  1. Tornare al portale per gli account per sviluppatori di Apple e accedere con l'ID Apple dell'organizzazione.Go back to the Apple Developer account portal and sign in with your organizational Apple ID.

  2. Fare clic su Certificates, IDs & Profiles (Certificati, ID e profili).Click Certificates, IDs & Profiles.

  3. Fare clic sulla schedaClick the segno più nel portale per sviluppatori Apple nell'angolo in alto a destra per aggiungere un profilo di provisioning iOS.in the top right corner to add an iOS provisioning profile.

  4. Scegliere In House (Interna) in Distribution (Distribuzione) per creare un profilo di provisioning interno.Choose to create an In House provisioning profile under Distribution.

    Selezionare un profilo di provisioning interno

  5. Fare clic su Continue.Click Continue. Assicurarsi di collegare il certificato di firma generato in precedenza al profilo di provisioning.Make sure to link the previously generated signing certificate to the provisioning profile.

  6. Seguire le istruzioni per scaricare il profilo (con estensione mobileprovision) nel computer macOS.Follow the steps to download your profile (with extension .mobileprovision) to your macOS computer.

  7. Salvare il file in una posizione facile da ricordare.Save the file in a memorable location. Questo file verrà usato per il parametro -p durante l'uso dello strumento di wrapping delle app.This file will be used for the -p parameter while using the App Wrapping Tool.

Scaricare lo strumento di wrapping delle appDownload the App Wrapping Tool

  1. Scaricare i file per lo strumento di wrapping delle app da GitHub in un computer macOS.Download the files for the App Wrapping Tool from GitHub to a macOS computer.

  2. Fare doppio clic su Microsoft Intune App Wrapping Tool for iOS.dmg.Double-click Microsoft Intune App Wrapping Tool for iOS.dmg. Verrà visualizzata una finestra con il Contratto di licenza con l'utente finale (EULA).A window with the End User License Agreement (EULA) will appear. Leggere attentamente il documento.Read the document carefully.

  3. Scegliere Accetto per accettare il contratto di licenza e procedere al montaggio del pacchetto nel computer.Choose Agree to accept EULA, which mounts the package to your computer.

  4. Aprire la cartella IntuneMAMPackager e salvarne il contenuto nel computer macOS.Open the IntuneMAMPackager folder and save its contents to your macOS computer. È ora possibile eseguire lo strumento di wrapping delle app.You are now ready to run the App Wrapping Tool.

Eseguire lo strumento di wrapping delle appRun the App Wrapping Tool

Usare il terminaleUse terminal

Aprire il programma Terminale macOS e passare alla cartella in cui sono stati salvati i file dello strumento di wrapping delle app.Open the macOS Terminal program and navigate to the folder where you saved the app wrapping tool files. Lo strumento eseguibile è denominato IntuneMAMPackager e si trova in IntuneMAMPackager/Contents/MacOS.The executable tool is named IntuneMAMPackager and is located in IntuneMAMPackager/Contents/MacOS. Eseguire il comando come segue:Run the command as follows:

./IntuneMAMPackager/Contents/MacOS/IntuneMAMPackager -i /<path of input app>/<app filename> -o /<path to output folder>/<app filename> -p /<path to provisioning profile> -c <SHA1 hash of the certificate> [-b [<output app build string>]] [-v] [-e] [-x /<array of extension provisioning profile paths>]

Nota

Alcuni parametri sono facoltativi, come illustrato nella tabella seguente.Some parameters are optional as shown in the following table.

Esempio: il comando di esempio seguente esegue lo strumento di wrapping delle app sull'app denominata MyApp.ipa.Example: The following example command runs the App Wrapping Tool on the app named MyApp.ipa. Per firmare l'app di cui è stato eseguito il wrapping vengono specificati e usati un profilo di provisioning e l'hash SHA-1 del certificato di firma.A provisioning profile and SHA-1 hash of the signing certificate are specified and used to sign the wrapped app. L'app di output (MyApp_Wrapped.ipa) viene creata e archiviata nella cartella Desktop dell'utente.The output app (MyApp_Wrapped.ipa) is created and stored in your Desktop folder.

./IntuneMAMPackager/Contents/MacOS/IntuneMAMPackager -i ~/Desktop/MyApp.ipa -o ~/Desktop/MyApp_Wrapped.ipa -p ~/Desktop/My_Provisioning_Profile_.mobileprovision -c "12 A3 BC 45 D6 7E F8 90 1A 2B 3C DE F4 AB C5 D6 E7 89 0F AB"  -v true

Parametri della riga di comandoCommand-line parameters

Con lo strumento di wrapping delle app è possibile usare i parametri della riga di comando seguenti:You can use the following command line parameters with the App Wrapping Tool:

ProprietàProperty Modo d'usoHow to use it
-i-i <Path of the input native iOS application file>.<Path of the input native iOS application file>. Il nome del file deve terminare con l'estensione app o ipa.The file name must end in .app or .ipa.
-o-o <Path of the wrapped output application>
-p-p <Path of your provisioning profile for iOS apps>
-c-c <SHA1 hash of the signing certificate>
-h-h Mostra informazioni d'uso dettagliate per le proprietà della riga di comando disponibili per lo strumento di wrapping delle app.Shows detailed usage information about the available command line properties for the App Wrapping Tool.
-v-v (Facoltativo) Mostra messaggi dettagliati nella console.(Optional) Outputs verbose messages to the console. È consigliabile usare questo flag per il debug di eventuali errori.It is recommended to use this flag to debug any errors.
-e-e (Facoltativo) Usare questo flag per fare in modo che lo strumento di wrapping delle app rimuova i diritti mancanti durante l'elaborazione dell'app.(Optional) Use this flag to have the App Wrapping Tool remove missing entitlements as it processes the app. Per altri dettagli, vedere Impostazione dei diritti delle app.See Setting app entitlements for more details.
-xe-xe (Facoltativo) Visualizza informazioni sulle estensioni iOS nell'app e sui diritti necessari per usarle.(Optional) Prints information about the iOS extensions in the app and what entitlements are required to use them. Per altri dettagli, vedere Impostazione dei diritti delle app.See Setting app entitlements for more details.
-x-x (Facoltativo) <An array of paths to extension provisioning profiles>.(Optional) <An array of paths to extension provisioning profiles>. Usare questa opzione se l'app richiede profili di provisioning estensioni.Use this if your app needs extension provisioning profiles.
-f-f (Facoltativo) <Path to a plist file specifying arguments.> Usare questo flag prima del file plist se si sceglie di usare il modello plist per specificare le altre proprietà IntuneMAMPackager, come: -i, -o e -p.(Optional) <Path to a plist file specifying arguments.> Use this flag in front of the plist file if you choose to use the plist template to specify the rest of the IntuneMAMPackager properties like -i, -o, and -p. Vedere Usare un file plist per l'input di argomenti.See Use a plist to input arguments.
-b-b (Facoltativo) Usare -b senza argomento se si vuole che l'applicazione di output con wrapper abbia la stessa versione di bundle dell'app di input (scelta non consigliata).(Optional) Use -b without an argument if you want the wrapped output app to have the same bundle version as the input app (not recommended).

Usare -b <custom bundle version> se si vuole che l'app con wrapper abbia un valore CFBundleVersion personalizzato.Use -b <custom bundle version> if you want the wrapped app to have a custom CFBundleVersion. Se si sceglie di specificare un valore CFBundleVersion personalizzato, è consigliabile incrementare il componente meno significativo del valore CFBundleVersion dell'app nativa, ad esempio 1.0.0 -> 1.0.1.If you choose to specify a custom CFBundleVersion, it's a good idea to increment the native app’s CFBundleVersion by the least significant component, like 1.0.0 -> 1.0.1.

Usare un file plist per l'input di argomentiUse a plist to input arguments

Un modo semplice per eseguire lo strumento di wrapping delle app è l'inserimento di tutti gli argomenti del comando in un file plist.An easy way to run the App Wrapping Tool is to put all the command arguments into a plist file. Il formato plist è simile al formato XML e consente di immettere gli argomenti della riga di comando mediante un'interfaccia di tipo modulo.Plist is a file format similar to XML that you can use to input your command line arguments using a form interface.

Nella cartella IntuneMAMPackager/Contents/MacOS aprire Parameters.plist, un modello di file plist vuoto, con un editor di testo o Xcode.In the IntuneMAMPackager/Contents/MacOS folder, open Parameters.plist (a blank plist template) with a text editor or Xcode. Immettere argomenti per le chiavi seguenti:Enter your arguments for the following keys:

Chiave plistPlist key Valore predefinitoDefault value NoteNotes
Input Application Package PathInput Application Package Path emptyempty Uguale a -iSame as -i
Output Application Package PathOutput Application Package Path emptyempty Uguale a -oSame as -o
Provisioning Profile PathProvisioning Profile Path emptyempty Uguale a -pSame as -p
SHA-1 Certificate HashSHA-1 Certificate Hash emptyempty Uguale a -cSame as -c
Verbose EnabledVerbose Enabled falsefalse Uguale a -vSame as -v
Remove Missing EntitlementsRemove Missing Entitlements falsefalse Uguale a -cSame as -c
Prevent Default BuildPrevent Default Build falsefalse Equivalente all'uso di -b senza argomentiEquivalent to using -b without arguments
Build String OverrideBuild String Override emptyempty Versione personalizzata di CFBundleVersion dell'app di output con wrapperThe custom CFBundleVersion of the wrapped output app
Extension Provisioning Profile PathsExtension Provisioning Profile Paths emptyempty Matrice di profili di provisioning estensioni per l'app.An array of extension provisioning profiles for the app.

Eseguire IntuneMAMPackager con il file plist come unico argomento:Run the IntuneMAMPackager with the plist as the sole argument:

./IntuneMAMPackager –f Parameters.plist

Dopo il wrappingPost-wrapping

Al termine del processo di wrapping verrà visualizzato un messaggio simile al seguente: "Wrapping dell'applicazione completato".After the wrapping process completes, the message "The application was successfully wrapped" will be displayed. Se si verifica un errore, vedere Messaggi di errore per altre informazioni.If an error occurs, see Error messages for help.

L'app di cui è stato eseguito il wrapping viene salvata nella cartella di output specificata in precedenza.The wrapped app is saved in the output folder you specified previously. È ora possibile caricare l'app nella console di amministrazione di Intune e associarla ai criteri di gestione di applicazioni mobili.You can upload the app to the Intune admin console and associate it with a mobile application management policy.

Importante

Quando si carica un'app con wrapper è possibile provare a eseguire l'aggiornamento di una versione precedente (con wrapper o nativa) se tale versione era già stata distribuita a Intune.When uploading a wrapped app, you can try to update an older version of the app if an older (wrapped or native) version was already deployed to Intune. In caso di errore, caricare l'app come nuova app ed eliminare la versione precedente.If you experience an error, upload the app as a new app and delete the older version.

È ora possibile distribuire l'app ai gruppi di utenti e assegnare i criteri di protezione delle app all'app.You can now deploy the app to your user groups and target app protection policies to the app. L'app verrà eseguita nel dispositivo con i criteri di protezione delle app specificati.The app will run on the device using the app protection policies you specified.

Messaggi di errore e file di logError messages and log files

Usare le informazioni seguenti per risolvere i problemi dello strumento per la disposizione testo per app.Use the following information to troubleshoot issues you have with the app wrapping tool.

Messaggi di erroreError messages

Se lo strumento di wrapping delle app non viene eseguito correttamente, nella console viene visualizzato uno dei messaggi di errore seguenti:If the app wrapping tool fails to finish successfully, one of the following error messages will be displayed in the console:

Messaggio di erroreError message Altre informazioniMore information
È necessario specificare un profilo di provisioning iOS valido.You must specify a valid iOS provisioning profile. Il profilo di provisioning potrebbe non essere valido.Your provisioning profile might not be valid. Verificare di avere le autorizzazioni corrette per i dispositivi e che il profilo sia indirizzato correttamente all'ambiente di sviluppo o distribuzione.Check to make sure you have the correct permissions for devices and that your profile is correctly targeting development or distribution. È anche possibile che il profilo di provisioning sia scaduto.Your provisioning profile might also be expired.
Specificare un nome dell'applicazione di input valido.Specify a valid input application name. Verificare che il nome dell'applicazione di input specificato sia corretto.Make sure that the input application name you specified is correct.
Specificare un percorso dell'applicazione di output valido.Specify a valid path to the output application. Verificare che il percorso dell'applicazione di output specificato esista e sia corretto.Make sure that the path to the output application you specified exists, and is correct.
Specificare un profilo di provisioning di input valido.Specify a valid input provisioning profile. Verificare di aver fornito un nome e un'estensione per il profilo di provisioning validi.Make sure you supplied a valid provisioning profile name and extension. È possibile che manchino i diritti per il profilo di provisioning o che non sia stata inclusa l'opzione -p della riga di comando.Your provisioning profile might be missing entitlements, or you might not have included the –p command line option.
L'applicazione di input specificata non è stata trovata.The input application you specified was not found. Specificare un nome e un percorso dell'applicazione di input validi.Specify a valid input application name and path. Verificare che il percorso dell'app di input sia valido e che esista.Make sure your input app path is valid and exists. Verificare che l'app di input sia presente in tale percorso.Make sure the input app exists at that location.
Il file del profilo di provisioning di input specificato non è stato trovato.The input provisioning profile file you specified was not found. Specificare un file del profilo di provisioning di input valido.Specify a valid input provisioning profile file. Verificare che il percorso del file del profilo di provisioning di input sia valido e che il file specificato sia presente in tale percorso.Make sure that the path to the input provisioning file is valid and that the file you specified exists.
La cartella dell'applicazione di output specificata non è stata trovata.The output application folder you specified was not found. Specificare un percorso dell'applicazione di output valido.Specify a valid path to the output application. Verificare che il percorso di output specificato sia valido e che esista.Make sure that the output path you specified is valid and exists.
L'app di output non ha l'estensione ipa.Output app does not have .ipa extension. Solo le app con estensione app e ipa vengono accettate dallo strumento di wrapping delle app.Only apps with the .app and .ipa extensions are accepted by the App Wrapping Tool. Verificare che l'estensione del file di output sia valida.Make sure your output file has a valid extension.
È stato specificato un certificato di firma non valido.An invalid signing certificate was specified. Specificare un certificato di firma Apple valido.Specify a valid Apple signing certificate. Verificare di aver scaricato il certificato di firma corretto dal portale per sviluppatori di Apple.Make sure you’ve downloaded the correct signing certificate from the Apple developer portal. Il certificato potrebbe essere scaduto o non includere una chiave pubblica o privata.Your certificate might be expired or might be missing a public or private key. Se il certificato e il profilo di provisioning Apple possono essere usati per firmare correttamente un'app all'interno di Xcode, saranno validi anche per lo strumento di wrapping delle app.If your Apple certificate and provisioning profile can be used to correctly sign an app within Xcode, then they are valid for the App Wrapping Tool.
L'applicazione di input specificata non è valida.The input application you specified is invalid. Specificare un'applicazione valida.Specify a valid application. Verificare di avere un'applicazione iOS valida compilata come file APP o IPA.Make sure you have a valid iOS application that has been compiled as an .app or .ipa file.
L'applicazione di input specificata è crittografata.The input application you specified is encrypted. Specificare un'applicazione non crittografata valida.Specify a valid unencrypted application. Lo strumento di wrapping delle app non supporta le app crittografate.The App Wrapping Tool does not support encrypted apps. Fornire un'app non crittografata.Provide an unencrypted app.
Il formato dell'applicazione di input specificata non è PIE (Position Independent Executable).The input application you specified is not in a Position Independent Executable (PIE) format. Specificare un'applicazione valida in formato PIE.Specify a valid application in PIE format. Le app PIE (Position Independent Executable) possono essere caricate in un indirizzo di memoria casuale quando vengono eseguite,Position Independent Executable (PIE) apps can be loaded at a random memory address when run. con importanti vantaggi per la sicurezza.This can have security benefits. Per altre informazioni sui vantaggi per la sicurezza, vedere la documentazione per sviluppatori di Apple.For more about security benefits, see your Apple Developer documentation.
È già stato eseguito il wrapping dell'app di input specificata.The input app you specified has already been wrapped. Specificare un'applicazione valida di cui non sia stato eseguito il wrapping.Specify a valid unwrapped application. Non è possibile elaborare un'app che sia già stata elaborata dallo strumento.You cannot process an app that has already been processed by the tool. Se si vuole elaborare nuovamente un'app, eseguire lo strumento usando la versione originale dell'app.If you want to process an app again, run the tool using the original version of the app.
L'applicazione di input specificata non è firmata.The input application you specified is not signed. Specificare un'applicazione firmata valida.Specify a valid signed application. Lo strumento di wrapping delle app richiede che le app siano firmate.The app wrapping tool requires apps to be signed. Consultare la documentazione per sviluppatori per informazioni su come firmare un'app di cui è stato eseguito il wrapping.Consult your developer documentation to learn how to sign a wrapped app.
Il formato dell'applicazione di input specificata deve essere IPA o APP.The input application you specified must be in the .ipa or .app format. Solo le estensioni APP e IPA sono accettate dallo strumento di wrapping delle app.Only .app and .ipa extensions are accepted by the app wrapping tool. Verificare che il file di input abbia un'estensione valida e che sia stato compilato come file APP o IPA.Make sure your input file has a valid extension and has been compiled as a .app or .ipa file.
È già stato eseguito il wrapping dell'app di input specificata e la versione del modello di criteri è la più recente.The input app you specified has already been wrapped and is on the latest policy template version. Lo strumento di wrapping delle app non eseguirà nuovamente il wrapping di un'app esistente di cui è già stato eseguito il wrapping con la versione più recente del modello di criteri.The App Wrapping Tool will not rewrap an existing wrapped app with the latest policy template version.
AVVISO: non è stato specificato un hash SHA1 del certificato.WARNING: You did not specify a SHA1 certificate hash. Verificare che l'applicazione di cui è stato eseguito il wrapping è firmata prima della distribuzione.Make sure that your wrapped application is signed before deploying. Verificare di avere specificato un hash SHA1 valido dopo il flag della riga di comando -c.Ensure that you specify a valid SHA1 hash following the –c command line flag.

File di log per lo strumento di wrapping delle appLog files for the App Wrapping Tool

Le app di cui è stato eseguito il wrapping tramite lo strumento di wrapping delle app generano log che vengono scritti nella console del dispositivo client iOS.Apps that have been wrapped by using the App Wrapping Tool generate logs that are written to the iOS client device console. Queste informazioni sono utili quando si riscontrano problemi con l'applicazione ed è necessario determinare se il problema è correlato allo strumento di wrapping delle app.This information is useful when you are having problems with the application and need to determine if the issue is related to the App Wrapping Tool. Per recuperare queste informazioni, usare i passaggi seguenti:To retrieve this information, use the following steps:

  1. Riprodurre il problema eseguendo l'app.Reproduce the issue by running the app.

  2. Raccogliere l'output della console seguendo le istruzioni di Apple fornite nell'articolo relativo al debug delle app iOS distribuite.Collect the console output by following Apple's instructions for Debugging Deployed iOS Apps.

  3. Filtrare i log salvati per l'output delle restrizioni dell'app immettendo lo script seguente nella console:Filter the saved logs for App Restrictions output by entering the following script into the console:

    grep “IntuneAppRestrictions” <text file containing console output> > <required filtered log file name>
    

    È possibile inviare i log filtrati a Microsoft.You can submit the filtered logs to Microsoft.

    Nota

    Nel file di log, l'elemento 'build version' rappresenta la versione build di Xcode.In the log file, the item ‘build version’ represents the build version of Xcode.

    Anche nelle app di cui è stato eseguito il wrapping sarà presente un'opzione per inviare i log direttamente dal dispositivo tramite posta elettronica dopo l'arresto anomalo dell'app.Wrapped apps will also present users the option to send logs directly from the device via email after the app crashes. Il responsabile potrà analizzare i log inviati dagli utenti e se necessario inoltrarli a Microsoft.Users can send the logs to you to examine and forward to Microsoft if necessary.

Certificato, profilo di provisioning e requisiti di autenticazioneCertificate, provisioning profile, and authentication requirements

Lo strumento di wrapping delle app per iOS include alcuni requisiti che devono essere soddisfatti per garantire la completa funzionalità.The App Wrapping Tool for iOS has some requirements that must be met in order to guarantee full functionality.

RequisitoRequirement DettagliDetails
Profilo di provisioning iOSiOS provisioning profile Verificare che il profilo di provisioning sia valido prima di includerlo.Make sure that the provisioning profile is valid before you include it. Lo strumento di wrapping delle app non controlla se il profilo di provisioning è scaduto durante l'elaborazione di un'app iOS.The App Wrapping Tool does not check whether the provisioning profile is expired when processing an iOS app. Se viene specificato un profilo di provisioning scaduto, lo strumento di wrapping delle app includerà il profilo di provisioning scaduto e il problema si scoprirà solo durante l'installazione dell'app nel dispositivo iOS, che non riuscirà.If an expired provisioning profile is specified, the app wrapping tool will include the expired provisioning profile, and you will not know there is a problem until the app fails to install on an iOS device.
Certificato di firma iOSiOS signing certificate Assicurarsi che il certificato di firma sia valido prima di specificarlo.Make sure that the signing certificate is valid before you specify it. Lo strumento non verifica se un certificato è scaduto durante l'elaborazione delle app iOS.The tool does not check whether a certificate is expired when processing iOS apps. Se viene fornito l'hash per un certificato scaduto, lo strumento elaborerà e firmerà l'app, ma l'installazione nei dispositivi non riuscirà.If the hash for an expired certificate is provided, the tool will process and sign the app, but it will fail to install on devices.

Verificare che il certificato fornito per la firma dell'app di cui è stato eseguito il wrapping abbia una corrispondenza nel profilo di provisioning.Make sure that the certificate provided for signing the wrapped app has a match in the provisioning profile. Lo strumento non verifica se il profilo di provisioning ha una corrispondenza per il certificato fornito per la firma dell'applicazione con wrapper.The tool does not validate if the provisioning profile has a match for the certificate provided for signing the wrapped application.
AutenticazioneAuthentication Per usare la crittografia, è necessario che il dispositivo disponga di un PIN.A device must have a PIN for encryption to work. Se si tocca la barra di stato nei dispositivi in cui è stata distribuita un'app di cui è stato eseguito il wrapping, verrà richiesto di eseguire di nuovo l'accesso con un account aziendale o dell'istituto di istruzione.On devices to which you have deployed a wrapped app, touching the status bar on the device will require the user to sign in again with a work or school account. I criteri predefiniti per un'app con wrapper prevedono l'autenticazione al riavvio.The default policy in a wrapped app is authentication on re-launch. iOS gestisce qualsiasi notifica esterna, come una chiamata telefonica, chiudendo e riavviando l'app.iOS handles any external notification (like a phone call) by exiting the app and then re-launching it.

Impostazione dei diritti delle appSetting app entitlements

Prima di eseguire il wrapping dell'app, è possibile assegnare diritti per concedere all'app autorizzazioni e funzionalità aggiuntive superiori alle operazioni normalmente eseguibili da un'app.Before wrapping your app, you can grant entitlements to give the app additional permissions and capabilities that exceed what an app can typically do. Durante la firma del codice viene usato un file dei diritti per specificare le autorizzazioni speciali all'interno dell'app, ad esempio l'accesso a un portachiavi condiviso.An entitlement file is used during code signing to specify special permissions within your app (for example, access to a shared keychain). I servizi di app specifici, denominati funzionalità, vengono abilitati all'interno di Xcode durante lo sviluppo delle app.Specific app services called capabilities are enabled within Xcode during app development. Una volta abilitate, le funzionalità vengono riportate nel file dei diritti.Once enabled, the capabilities are reflected in your entitlements file. Per altre informazioni su funzionalità e diritti, vedere l'articolo relativo all'aggiunta di funzionalità nella libreria per gli sviluppatori iOS.For more information about entitlements and capabilities, see Adding Capabilities in the iOS Developer Library. Per un elenco completo delle funzionalità supportate, vedere Funzionalità supportate.For a complete list of supported capabilities, see Supported capabilities.

Funzionalità supportate per lo strumento per la disposizione testo per app per iOSSupported capabilities for the App Wrapping Tool for iOS

FunzionalitàCapability DescrizioneDescription Procedura consigliataRecommended guidance
Gruppi di appApp groups Usare i gruppi di app per consentire a più app di accedere a contenitori condivisi e favorire la comunicazione interprocesso tra app.Use app groups to allow multiple apps to access shared containers and allow additional interprocess communication between apps.

Per abilitare i gruppi di app, aprire il riquadro Capabilities (Funzionalità) e fare clic su ON in App Groups (Gruppi di app).To enable app groups, open the Capabilities pane and click ON in App Groups. È possibile aggiungere gruppi di app o selezionare gruppi esistenti.You can add app groups or select existing ones.
Quando si usano gruppi di app, usare la notazione DNS inversa:When using App Groups, use reverse DNS notation:

group.com.companyName.AppGroupgroup.com.companyName.AppGroup
Modalità di backgroundBackground modes L'abilitazione delle modalità di background consente all'app iOS di continuare l'esecuzione in background.Enabling background modes lets your iOS app continue running in the background.
Protezione datiData protection La protezione dei dati aggiunge un livello di sicurezza ai file archiviati su disco dall'app iOS.Data protection adds a level of security to files stored on disk by your iOS app. La protezione dei dati usa l'hardware di crittografia incorporato presente in dispositivi specifici per archiviare i file in formato crittografato su disco.Data protection uses the built-in encryption hardware present on specific devices to store files in an encrypted format on disk. È necessario eseguire il provisioning dell'app per usare la protezione dei dati.Your app needs to be provisioned to use data protection.
Acquisto in-appIn-app purchase L'acquisto in-app incorpora uno store direttamente nell'app, consentendo di connettersi allo store ed elaborare in modo sicuro i pagamenti eseguiti dall'utente.In-app purchase embeds a store directly into your app by enabling you to connect to the store and securely process payments from the user. È possibile usare l'acquisto in-app per riscuotere pagamenti per funzionalità avanzate o contenuti aggiuntivi utilizzabili dall'app.You can use in-app purchase to collect payment for enhanced functionality or for additional content usable by your app.
Condivisione del portachiaviKeychain sharing L'attivazione della condivisione del portachiavi consente all'app di condividere le password nel portachiavi con altre app sviluppate dal team.Enabling keychain sharing lets your app share passwords in the keychain with other apps developed by your team. Quando si usa la condivisione del portachiavi, usare la notazione DNS inversa:When using keychain sharing, use reverse DNS notation:

com.companyName.KeychainGroupcom.companyName.KeychainGroup
VPN personalePersonal VPN Abilitare la VPN personale per consentire all'app di creare e controllare una configurazione VPN di sistema personalizzata usando il framework di estensione di rete.Enable personal VPN to allow your app to create and control a custom system VPN configuration using the Network Extension framework.
Notifiche pushPush notifications Il servizio Apple Push Notification (APN) consente a un'app che non è in esecuzione in primo piano di notificare all'utente la disponibilità di informazioni.Apple Push Notification service (APNs) lets an app that isn’t running in the foreground notify the user that it has information for the user. Per consentire il funzionamento delle notifiche push, è necessario usare un profilo di provisioning specifico dell'app.For push notifications to work, you need to use an app-specific provisioning profile.

Seguire i passaggi indicati nella documentazione per sviluppatori Apple.Follow the steps in the Apple developer documentation.
Configurazione degli accessori wirelessWireless accessory configuration L'abilitazione della configurazione degli accessori wireless aggiunge il framework degli accessori esterni al progetto e consente all'app di configurare accessori MFi Wi-Fi.Enabling wireless accessory configuration adds the External Accessory framework to your project and lets your app set up MFi Wi-Fi accessories.

Passaggi per abilitare i dirittiSteps to enable entitlements

  1. Abilitare le funzionalità nell'app:Enable capabilities in your app:

    a.a. In Xcode passare alla destinazione dell'app e fare clic su Capabilities (Funzionalità).In Xcode, go to your app’s target, and click Capabilities.

    b.b. Attivare le funzionalità appropriate.Turn on the appropriate capabilities. Per informazioni dettagliate su ogni funzionalità e su come determinare i valori corretti, vedere l'articolo relativo all'aggiunta di funzionalità nella libreria per sviluppatori iOS.For detailed information about each capability and how to determine the correct values, see Adding Capabilities in the iOS Developer Library.

    c.c. Prendere nota di eventuali ID creati durante il processo.Note any IDs that you created during the process.

    d.d. Creare e firmare l'app di cui eseguire il wrapping.Build and sign your app to be wrapped.

  2. Abilitare i diritti nel profilo di provisioning:Enable entitlements in your provisioning profile:

    a.a. Accedere all'area membri degli sviluppatori Apple.Sign in to the Apple Developer Member Center.

    b.b. Creare un profilo di provisioning per l'app.Create a provisioning profile for your app. Per istruzioni, vedere How to Obtain the Prerequisites for the Intune App Wrapping Tool for iOS (Come ottenere i prerequisiti per lo strumento per la disposizione testo per app di Intune per iOS).For instructions, see How to Obtain the Prerequisites for the Intune App Wrapping Tool for iOS.

    c.c. Nel profilo di provisioning abilitare gli stessi diritti dell'app.In your provisioning profile, enable the same entitlements that you have in your app. È necessario indicare gli stessi ID specificati durante lo sviluppo dell'app.You will need to supply the same IDs that you specified during the development of your app.

    d.d. Completare la configurazione guidata del profilo di provisioning e scaricare il file.Finish the provisioning profile wizard and download your file.

  3. Assicurarsi di aver soddisfatto tutti i prerequisiti e quindi eseguire il wrapping dell'app.Ensure that you have satisfied all the prerequisites, and then wrap the app.

Risoluzione di problemi comuni relativi ai dirittiTroubleshoot common errors with entitlements

Se lo strumento di wrapping delle app per iOS visualizza un errore relativo ai diritti, provare le procedure seguenti per la risoluzione dei problemi.If the App Wrapping Tool for iOS shows an entitlement error, try the following troubleshooting steps.

ProblemaIssue CausaCause RisoluzioneResolution
Impossibile analizzare i diritti generati dall'applicazione di input.Failed to parse entitlements generated from the input application. Lo strumento per la disposizione testo per app non è in grado di leggere il file dei diritti che è stato estratto dall'app.The App Wrapping Tool cannot read the entitlements file that was extracted from the app. Il file dei diritti potrebbe non essere nel formato corretto.The entitlements file might be malformed. Esaminare il file dei diritti per l'app.Inspect the entitlements file for your app. Le istruzioni seguenti spiegano come eseguire questa operazione.The following instructions explain how to do so. Quando si esamina il file dei diritti, verificare se sono presenti errori di sintassi.When inspecting the entitlements file, check for any malformed syntax. Il file deve essere in formato XML.The file should be in XML format.
I diritti non sono presenti nel profilo di provisioning (sono elencati i diritti mancanti).Entitlements are missing in the provisioning profile (missing entitlements are listed). Ricreare il pacchetto dell'app con un profilo di provisioning a cui sono assegnati tali diritti.Repackage the app with a provisioning profile that has these entitlements. I diritti abilitati nel profilo di provisioning e le funzionalità abilitate nell'app non corrispondono.There is a mismatch between the entitlements enabled in the provisioning profile and the capabilities enabled in the app. Questa mancata corrispondenza vale anche per gli ID associati a particolari funzionalità, ad esempio gruppi di app, accesso al portachiavi e così via.This mismatch also applies to the IDs associated with particular capabilities (like app groups and keychain access). In genere è possibile creare un nuovo profilo di provisioning che abilita le stesse funzionalità dell'app.Generally, you can create a new provisioning profile that enables the same capabilities as the app. In caso di mancata corrispondenza tra gli ID del profilo e dell'app, lo strumento per la disposizione testo per app sostituirà gli ID, se è in grado di eseguire l'operazione.When IDs between the profile and app don't match, the App Wrapping Tool will replace the IDs if it is able to. Se questo errore viene ancora visualizzato dopo aver creato un nuovo profilo di provisioning, è possibile provare a rimuovere i diritti dall'app usando il parametro -e (vedere la sezione Uso del parametro -e per rimuovere diritti da un'app).If you still get this error after creating a new provisioning profile, you can try removing entitlements from the app by using the –e parameter (see Using the –e parameter to remove entitlements from an app section).

Trovare i diritti esistenti di un'app firmataFind the existing entitlements of a signed app

Per rivedere i diritti esistenti di un'app firmata e di un profilo di provisioning:To review the existing entitlements of a signed app and provisioning profile:

  1. Trovare il file con estensione IPA e modificare l'estensione in ZIP.Find the .ipa file and change its the extension to .zip.

  2. Espandere il file con estensione ZIP.Expand the .zip file. Verrà generata una cartella Payload contenente il bundle .app.This will produce a Payload folder containing your .app bundle.

  3. Usare lo strumento codesign per verificare i diritti nel bundle con estensione app, dove YourApp.app è il nome effettivo del bundle con estensione app:Use the codesign tool to check the entitlements on the .app bundle, where YourApp.app is the actual name of your .app bundle.:

    $ codesign -d --entitlements :- "Payload/YourApp.app"
    
  4. Usare lo strumento security per verificare i diritti del profilo di provisioning incorporato dell'app, dove YourApp.app è il nome effettivo del bundle con estensione app.Use the security tool to check the entitlements of the app's embedded provisioning profile, where YourApp.app is the actual name of your .app bundle.

    $ security -D -i "Payload/YourApp.app/embedded.mobileprovision"
    

Rimuovere diritti da un'app con il parametro -eRemove entitlements from an app by using the –e parameter

Questo comando rimuove tutte le funzionalità abilitate nell'app che non sono presenti nel file dei diritti.This command removes any enabled capabilities in the app that are not in the entitlements file. Se si rimuovono le funzionalità usate dall'app si possono verificare interruzioni dell'app.If you remove capabilities that are being used by the app, it can break your app. Ad esempio, è possibile rimuovere le funzionalità mancanti in un'app prodotta dal fornitore che ha tutte le funzionalità per impostazione predefinita.An example of where you might remove missing capabilities is in a vendor-produced app that has all capabilities by default.

./IntuneMAMPackager/Contents/MacOS/IntuneMAMPackager –i /<path of input app>/<app filename> -o /<path to output folder>/<app filename> –p /<path to provisioning profile> –c <SHA1 hash of the certificate> -e

Sicurezza e privacy per lo strumento di wrapping delle appSecurity and privacy for the App Wrapping Tool

Quando si usa lo strumento di wrapping delle app, adottare le procedure consigliate seguenti per la sicurezza e la privacy.Use the following security and privacy best practices when you use the App Wrapping Tool.

  • Il certificato di firma, il profilo di provisioning e l'app line-of-business specificati devono risiedere nello stesso computer macOS usato per eseguire lo strumento di wrapping delle app.The signing certificate, provisioning profile, and the line-of-business app you specify must be on the same macOS machine that you use to run the app wrapping tool. Se i file si trovano in un percorso UNC, assicurarsi che siano accessibili dal computer macOS.If the files are on a UNC path, ensure that these are accessible from the macOS machine. Il percorso deve essere protetto tramite firma IPsec o SMB.The path must be secured via IPsec or SMB signing.

    L'applicazione di cui è stato eseguito il wrapping importata nella console di amministrazione deve trovarsi nello stesso computer in cui viene eseguito lo strumento.The wrapped application imported into the admin console should be on the same computer that you run the tool on. Se il file si trova in un percorso UNC, assicurarsi che sia accessibile dal computer che esegue la console di amministrazione.If the file is on a UNC path, ensure that it is accessible on the computer running the admin console. Il percorso deve essere protetto tramite firma IPsec o SMB.The path must be secured via IPsec or SMB signing.

  • L'ambiente in cui lo strumento di wrapping delle app viene scaricato dal repository GitHub deve essere protetto tramite firma IPSec o SMB.The environment where the App Wrapping Tool is downloaded from the GitHub repository needs to be secured via IPsec or SMB signing.

  • L'app elaborata deve provenire da una fonte attendibile per garantire la protezione dagli attacchi.The app you process must come from a trustworthy source to ensure protection against attacks.

  • Assicurarsi che la cartella di output specificata nello strumento di wrapping delle app sia protetta, soprattutto se è una cartella remota.Ensure that the output folder you specify in the App Wrapping Tool is secured, particularly if it is a remote folder.

  • Le app iOS che includono una finestra di dialogo per il caricamento dei file possono consentire agli utenti di eludere le restrizioni per le operazioni taglia, copia e incolla applicate all'app.iOS apps that include a file upload dialog box can allow users to circumvent, cut, copy, and paste restrictions applied to the app. Ad esempio, un utente potrebbe usare la finestra di dialogo per il caricamento dei file per caricare una schermata dei dati dell'app.For example, a user could use the file upload dialog box to upload a screenshot of the app data.

  • Quando si monitora la cartella dei documenti nel dispositivo dall'app di cui è stato eseguito il wrapping, potrebbe essere visualizzata una cartella denominata .msftintuneapplauncher.When you monitor the documents folder on your device from within a wrapped app, you might see a folder named .msftintuneapplauncher. Se questo file viene modificato o eliminato, ciò potrebbe influire sul corretto funzionamento delle app con restrizioni.If you change or delete this file, it might affect the correct functioning of restricted apps.

Vedere ancheSee also