Page tree
Skip to end of metadata
Go to start of metadata

Last updated: Jun 25, 2020 18:16

Problem

An app fails during the installation process and the following error message shows:

installApplication command failed. Reason: handset server: Cannot install application. file is not signed properly or has the wrong provisioning
'Install' completed with errors

Solution

This issue may be the result of one of the following scenarios.

Manual testing and automation

You install the app in the Manual Testing view (through the Application form for the open device) or using an automation script, but without instrumentation. 

Solution

Your application includes a file called embedded.mobileprovision. This file contains all UDIDs (device IDs) for your iOS devices. The application developer needs to take the device UDIDs and sign the embedded.mobileprovision file with them. You can manually check the application's embedded provisioning file to make sure the device UDID is listed.

To check if a UDID has been added to the app's embedded provisioning file:

  1. Download and unzip the <app-name>.ipa file on your computer.
  2. Open the <app-name>.app directory.
  3. Find the file called embedded.mobileprovision and open it with Notepad++ or any text editor.
  4. Look for the string <key>ProvisionedDevices</key>, which will list all device UDIDs. 
  5. If the above key is missing, look for the following key: <key>ProvisionsAllDevices</key><true/>
    If the key exists and the value is true, the app can be installed on any device. (iOS developers enrolled in the Enterprise program have the ability to distribute their in-house applications without identifying individual devices or submitting the application to the App Store.)

XCUITest/XCTest

Scenario 1 | The configuration file includes Resign=false

If the configuration file includes Resign=false, this likely means that the devices are not registered in the customer's provision profile.

Solution

If parameter=true (set by default), the app is resigned with the Perfecto developer signature.

Note: Entitlements may be removed. 

For more information, see Sign iOS applications for Gradle Plugin.

Scenario 2 | The application's signature differs from the one used for the installation

Ideally, customer development teams would push the ipa/ipa-runner to Perfecto as per their build process because it is the only sure way to know that the QA team is testing the proper app version and the signature is correct (for example, if the signature for the latest app version is different than the one used for installation and testing) 

In this scenario, and when using DevTunnel, the provision profiles must be installed on the devices by the customer. Usually, this task is performed by development teams, not by QA. Perfecto is not involved because the developer user credentials are necessary and may not be available as per company policy. 

Alternatively, we would need customers to get a developer's provisioning signature access, to be able to build the app with the correct signature as per our documentation.