¿Cómo construir un instalador nativo de Mac OS X (en una plataforma que no sea Mac)?

StackOverflow https://stackoverflow.com/questions/283480

  •  08-07-2019
  •  | 
  •  

Pregunta

¿Cómo puedo construir un instalador nativo de Mac OS X para mi aplicación, en una plataforma que no sea Mac?

Por ejemplo, tengo una PC con Windows y una aplicación Java. Quiero que la PC con Windows construya un instalador (posiblemente dentro de un archivo .dmg) que funcione con el instalador de Apple.

¿Fue útil?

Solución

Ahora es posible crear un instalador nativo de Mac OS X en una plataforma que no sea Mac. Como Louis Gerbarg, lo complicado es el archivo BOM (lista de materiales). Sin embargo, una versión de código abierto de mkbom (basada en el código osxbom de Joseph Coffland) ahora está disponible en:

http://hogliux.github.io/bomutils

El sitio web también tiene un tutorial paso a paso fácil de seguir sobre cómo crear un instalador de Mac OS X en Linux ( http://hogliux.github.io/bomutils/tutorial.html ).

Mi compañía construye regularmente instaladores de Mac OS X en Linux con este método y hasta ahora no hemos tenido ningún problema importante.

Otros consejos

Como otros ya lo han señalado, realmente está tomando la solución difícil a este problema, y ??sus usuarios maldecirán su nombre por ello, a menos que tenga una buena razón para hacerlo. Es cierto que ciertos tipos de aplicaciones requerirán instaladores para Mac OSX. Estos generalmente incluyen:

  • Aplicaciones que instalan controladores personalizados (es decir, extensiones del kernel)
  • Aplicaciones que necesitan instalar marcos u otros recursos que por alguna razón no se pudieron empaquetar dentro del paquete de aplicaciones
  • Las aplicaciones que deben ejecutarse como un servicio del sistema y, por lo tanto, deben ejecutar algunos scripts posteriores a la instalación para iniciar la aplicación durante el arranque
  • Programas mal escritos que requieren hacer algún tipo de cambio en el sistema del usuario (es decir, establecer permisos en una carpeta o algo), y las manos del desarrollador están atadas por los departamentos del departamento de marketing para distribuir la aplicación de la manera más dolorosa posible

Ok, ese último punto es un poco sarcástico, pero ¿entiendes aquí? :) Básicamente, si está escribiendo una aplicación normal para el usuario final, debe distribuirla de la manera normal que esperarían los usuarios de Mac, que es un archivo DMG que contiene el paquete de su aplicación. O si quieres ser realmente elegante, pega un alias a las "Aplicaciones". carpeta dentro del DMG para ayudar al usuario a arrastrar el programa allí. A menos que esté escribiendo algo que deba instalarse en el sistema, en lugar de simplemente ser ejecutado por el sistema, no hay razón para usar un instalador aquí. Además, tenga en cuenta que se trata de OSX, que ya contiene un JRE de Java totalmente funcional, por lo que no debe preocuparse por empaquetar el JRE en un instalador ni nada por el estilo.

Ahora que ha sido regañado adecuadamente por hacer esta pregunta, la responderé asumiendo que su software se encuentra en una de las categorías anteriores. Realmente, su mejor opción sería optar por una solución comercial como el instalador VISE (que, una vez más, puedo afirmar con seguridad que la gran mayoría de los usuarios de Mac retrocederán aterrorizados al instalar un producto hecho con esta herramienta), que le permite hacer exactamente lo que está buscando aquí, básicamente, hacer un instalador multiplataforma que se construya para las diversas plataformas que desea admitir desde un solo archivo de instalador.

Sin embargo, una vez más, su mejor apuesta aquí es hacer con lo que los usuarios de esa plataforma se sientan más cómodos (razón por la cual todas las respuestas a su pregunta le instan a no hacer un instalador). Sin embargo, eso significa que si realmente debe hacer un instalador, debe usar un marco no de plataforma cruzada; Los usuarios de Windows se sentirán más en casa cuando se les presente un instalador MSI estándar, y los usuarios de Mac se sentirán más en casa con un paquete de instalador de Apple. Sin embargo, el programa PackageMaker es notoriamente limitado, por lo que si debe hacerlo, debe usar iceberg en su lugar. Esto significará un poco más de mantenimiento para usted, ya que necesitará atender a dos (o más) instaladores separados, pero si su software es realmente tan complejo como para exigir esto, debería estar dispuesto a hacer el sacrificio por la comodidad de tus usuarios.

Es difícil crear un .dmg en Windows, pero ciertamente es posible crear una estructura de archivo .app que luego puede comprimir, como han mencionado otros. Hay momentos en que un .pkg normal no lo corta y desea proporcionar cuadros de diálogo, verificaciones previas a la instalación, etc. Puede hacerlo con BitRock installbuilder , puede construir instaladores para mac, Linux, Windows, Solaris desde cada una de las otras plataformas.

Entonces, un par de preguntas rápidas.

Primero, ¿por qué quieres un instalador? La mayoría de los usuarios de Mac prefieren aplicaciones que simplemente se instalan por arrastre. Si no está escribiendo un código específico para Mac OS X, es difícil imaginar que necesita colocar bits en lugares especiales, como Application Support o LaunchDaemons. Suponiendo que todo lo que tiene va en una carpeta, ¿por qué molestarse con un instalador?

Segundo, ¿por qué sería un problema construir el instalador de Mac en una Mac? Seguramente tienes un Macintosh para probar la aplicación (no solo la envías a ciegas para Mac sin probarla en una Mac, ¿verdad?).

Bien, habiendo dicho eso, asumiendo que todavía tienes una buena razón para construir esto en una PC, hay algunos bits que no serán fáciles. Básicamente, un .pkg es un conjunto de scripts de texto, localizaciones, un archivo de almacenamiento (Archive.pax.gz) y una lista de materiales (Archive.bom).

Suponiendo que no haya muchos cambios entre las compilaciones, puede realizar el instalador en una Mac, y luego simplemente reconstruir el bom y el pax.gz, reemplazarlos en el .pkg existente y agrupar algunas piezas de metadatos. La pax debería ser lo suficientemente fácil de manejar (pax es un formato de archivo estándar), pero el archivo bom puede resultar un poco más complicado, ya que no creo que esté documentado públicamente, y dudo que las herramientas para crearlos (mkbom) sean parte de darwin (no de código abierto). Por lo tanto, tendrá que resolver eso y escribir una herramienta personalizada para crear el archivo bom.

En otras palabras, es probable que esto sea una gran cantidad de trabajo.

La forma habitual de instalar una aplicación en una Mac es arrastrar la aplicación a la carpeta de la aplicación. La mayoría de los programas vienen como un DMG que contiene la aplicación y un enlace simbólico a la carpeta de la aplicación. ¿Por qué lo querrías de otra manera? ¡Necesita pensar en Mac para crear una gran aplicación para Mac! La apariencia es muy importante, especialmente para los usuarios de Mac.

Consulte este código para leer archivos BOM: https://cauldrondevelopment.com/svn/osxbom/trunk

Ponga todo en un archivo JAR, agréguelo a un ZIP. Listo.

Pero en serio, ¿desea distribuir su aplicación a los usuarios de Macintosh sin probarla primero? ¿En qué planeta estás?

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top