2 votos

El instalador de paquetes para Mac instala la carpeta "Contenidos" en /Aplicaciones en lugar del paquete

Cuando trato de usar el paquete con mi .app para crear un instalador para Mac, y ejecuto el instalador, éste me crea una carpeta llamada "Contenidos" en mi carpeta /Aplicaciones, en lugar del "paquete de aplicaciones" como debería.

He probado con pkgbuild + productbuild:

pkgbuild --component "./myapp.app" --version 1 --install-location /Applications component.pkg
productbuild  --package-path "component.pkg" --distribution "./Distribution.xml" --package-path "./Temp" --resources "./Resources" --sign mycert "myapp.pkg"

Y sólo con la construcción de productos:

productbuild --component "./myapp.app" /Applications -s mycert myapp.pkg

En ambos casos, ejecuto el instalador, todo parece estar bien, pero en la carpeta de Aplicaciones veo "Contenidos" (que es el contenido del paquete de aplicaciones)

Lo he intentado con "./myapp.app/" también en el atributo --componente, e incluso añadiendo "/Aplicaciones/myapp.app" en el --install-location

0 votos

¿Ha intentado especificar la opción --Root con el resto de las opciones de pkgbuild?

0 votos

La opción --Root no puede utilizarse con --component

0 votos

¿Puede probarlo con la opción --Root en lugar de --component? Recuerdo haber tenido el mismo problema que tú con la herramienta PackageMaker de Apple (GUI). Descubrí que tenía que marcar una opción llamada "Incluir root en el paquete". Me preguntaba si --Root hacía esto y --component no.

1voto

rpetrich Puntos 25769

Me costó unos cuantos intentos hacer que esto funcionara (el instalador se las arregló para hacer cosas realmente extrañas en mis primeros intentos). Pero esto parece funcionar de forma fiable.

Creé una carpeta temporal con la aplicación que quería empaquetar (dejar la aplicación en otro lugar parecía dar lugar al extraño comportamiento antes mencionado), y luego empaquetarla desde allí. Así que creé una carpeta temporal llamada "test" en mi escritorio y dejé la aplicación allí por su cuenta. El siguiente comando da como resultado un paquete de trabajo en mi escritorio.

productbuild --component ~/Desktop/test/myapp.app /Applications ~/Desktop/myapp.pkg --sign "my certificate identity name"

Algo que es útil cuando se hacen pruebas es ejecutar sudo opensnoop | grep installd en una Terminal al mismo tiempo. Genera mucha salida pero deberías poder ver el paquete de aplicaciones que se crea en algo como /var/folders/zz/GIBBERISH/C/PKInstallSandboxManager/GIBBERISH.activeSandbox/Root/ y luego copiado a su destino final.

Nota: No estoy seguro de por qué estás usando -s en el segundo ejemplo productbuild la orden que diste en tu pregunta. Hay tres opciones de argumentos para la construcción del producto que comienzan con "s" (síntesis, scripts y signo) y la página de manual no menciona el uso de la "-s" más corta para ninguna de ellas. Tal vez este sea el problema. Por supuesto que podría ser sólo un error tipográfico. :)

0 votos

Buena idea ! pero es extraño ... ahora no veo ningún cambio en la Aplicación ... no se instala nada, no hay cambios ... y el instalador dice "las aplicaciones se han instalado" con el check verde al final ... raro !

0 votos

@FlamingMoe He añadido un poco sobre opensnoop a la respuesta. Eso debería ayudarte a identificar dónde está escribiendo el instalador el paquete de aplicaciones si no lo está escribiendo en /Applications.

0voto

Creo que la cuestión aquí es que usted está usando --component en lugar de --root . Los documentos son un poco confusos en cuanto a su uso, pero parece que, al igual que con Root también, es necesario especificar la carpeta que encierra el .app y no la propia ruta del paquete. Cometí este error al utilizar --root y fui testigo de cómo el contenido de mi paquete se instalaba en /Applications . La misma precaución es necesaria cuando se construye el paquete con pkgbuild.

Copiaría mi .app en un ./build carpeta y luego:

pkgbuild --analyze --root ./build MyApp.plist 
pkgbuild --root ./build --component-plist MyApp.plist --identifier co.uk.MyApp --version 0 --install-location /Applications MyApp.pkg
productBuild --synthesize --package ./MyApp.pkg ./Distribution.xml
productBuild --distribution ./Distribution.xml --resources ./Resources --sign "Developer ID Installer: My Id" --package-path . ./MyApp-ver-whatever.pkg

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X