¿Convertir una compra en la aplicación xcodeproj en un file pkg desde un terminal (Bash) o cómo convertir un file xcarchive en un file pkg?

Estoy tratando de crear un script bash para automatizar la creación de files pkg de compra en la aplicación.

Estoy en un punto en el que el script crea exitosamente todos los proyectos de xcodeproj de compra en la aplicación y luego los archiva usando este command

xcodebuild -scheme $nameOfProject archive 

$ nameOfProject es una variable que contiene, dentro de un ciclo, el nombre del file xcodeproj correspondiente a la compra en la aplicación.

Después de hacer esto, tengo que abrir la parte de file de Xcode y exportar manualmente todos los files para crear los files pkg que necesito cargar para iTC.

¿Hay algún command que pueda usar para hacer esto automáticamente desde la terminal?

Otra cosa que proporcionaría la misma solución sería: ¿cómo convertir un file xcarchive en un file pkg?

Después de realizar búsquedas en Google y algunas testings con el proyecto "Contenido de la compra en la aplicación", creo que lo que debe usar es la herramienta de línea de command productbuild . Como soy el único desarrollador de iOS, no tengo experiencia en crear instaladores, pero estoy bastante seguro de que el file "pkg" para el contenido de la aplicación se crea utilizando estas herramientas de command-line.

Para encontrar los parameters correctos, puede consultar https://developer.apple.com/library/mac/#documentation/ToolsLanguages/Conceptual/OSXWorkflowGuide/DistributingApplications/DistributingApplications.html#//apple_ref/doc/uid/TP40011201-CH5- SW1

o man

Editar:
Para probar lo que hace XCode, he creado un proyecto simple
Proyecto

Y lo archivé: Contenido de archivo

Luego creé un progtwig simple, llamémosle ArgumentLogger , el código es

 int main(int argc, const char* argv[]) { //Open a file for logging FILE* file = fopen("/Users/Sulthan/Desktop/log.txt","a+"); for (int i = 0; i < argc; i++) { //log all parameters fprintf(file, "%s\n", argv[i]); } //end fclose(file); return 0; } 

Vamos a tener un ejemplo – para el command bash:

 ArgumentLoggger --arg test1 test2 test3 

log.txt contendrá

  ArgumentLogger
 --arg
 test1
 test2
 test3

Ahora, reemplacemos /usr/bin/productbuild con este progtwig

 sudo mv /usr/bin/productbuild /usr/bin/productbuild_old sudo mv ArgumentLogger /usr/bin/productbuild 

y luego presiona "Distribuir" en XCode. Distribuir y exporte el package.

log.txt ahora contiene

 / usr / bin / productbuild
 --contenido
 / var / folders / v5 / wwrmfpqx2mx1q5sf67_6vgg00000gn / T / FDCEA38E-1EF6-490B-8C30-8B0675C56CC8-47322-00014822C462D3CD / TestContent
 /var/folders/v5/wwrmfpqx2mx1q5sf67_6vgg00000gn/T/FDCEA38E-1EF6-490B-8C30-8B0675C56CC8-47322-00014822C462D3CD/TestContent.pkg

Ahora vemos exactamente qué hizo XCode.

El segundo file es el file resultante, no estoy seguro si hay algo más hecho con el file o no, pero después de expandirlo con pkgutil , los contenidos parecen ser los mismos que en el pkg creado desde XCode.

El primer file es un directory que parece tomarse directamente del file xcarchive . Veamos su contenido
Temp dir contenido

Editar 2:
En resumen, el script bash debería ser algo similar a:

 CONTENTS_DIR = $( find "$nameOfProject.xcarchive" -name "InAppPurchaseContent" -type d ) PKG_FILE = "$nameOfProject.pkg" productbuild --content "$CONTENTS_DIR" "$PKG_FILE"