![]() |
Aplicación para Mac con Lazarus
Hola a todos.
Tengo una aplicación casi terminada hecha en lazarus, para el sistema operativo Mac OS. La aplicación usa un archivo INI y varios reportes LazReport. Cuando tengo abierto lazarus la aplicación funciona muy bien, sin problemas. En este momento, voy a opciones del proyecto y creo el envoltorio (bundle) para la aplicación. Posteriormente, modifico el bundle e introduzco el ejecutable del mismo nombre donde esta el enlace que hay dentro la carpeta MacOs. El problema viene cuando cierro lazarus y abro la aplicación por si sola desde el bundle (.app). La aplicación funciona bien pero no carga ni el archivo INI ni carga los reportes, en su lugar solo sale el nombre del componente "frPreview". Para que lea el archivo INI y los reportes, estos deben ir junto con el ejecutable, al menos en windows, pero en Mac, donde los coloco dentro del bundle? He probado a meterlos dentro de la carpeta Resources, dentro de la carpeta MacOs, pero nada sigue igual. Queria saber si alguien ha probado esto y si conocen alguna solución? Muchas gracias de antemano. Saludos. |
¿El programa está hecho sobre un mac?
|
Un bundle es un directorio que sigue una estructura especifica:
http://en.wikipedia.org/wiki/Application_bundle Es lo que permite que las apps puedan instalarse con solo copiarse, porque TODO lo que necesiten esta empaquetado dentro del bundle. Si necesitas que el archivo ini "viaje" con la app, entonces simplemente debe estar dentro del bundle. |
Gracias por vuestras respuestas.
Si, el programa esta hecho con lazarus en su ultima version la 1.2.2 y sobre mac os x tambien en su ultima version creo que es la 10.9.2. Entiendo que todo lo que necesite la app debe estar dentro del bundle pero no se donde meterlo y si hay que hacerlo manualmente, incluyendo los reportes y el INI por ejemplo en la carpeta resources que esta dentro del bundle o hay alguna opcion en lazarus para incluir automaticamente estos archivos en el envoltorio. He intentado meterlos manualmente pero no ha funcionado, no se si debo declararlos en alguna parte del proyecto o en el archivo plist... He buscado en todos los idiomas y he probado mil cosas pero no lo consigo. Tambien he mirado algunos ejemplos y los he intentado aplicar a mi app pero sin resultados. Me estoy tirando de los pelos... Gracias. |
Cuando te preguntes en iOS/OSX sobre algo, la documentacion de apple es generalmente buena:
https://developer.apple.com/library/...roduction.html https://developer.apple.com/library/...utBundles.html Mira como lo usan en Mozilla para empaquetar apps con XUL: https://developer.mozilla.org/en-US/...s_for_Mac_OS_X como pa darte una idea. El chiste es que contents es como te de la gana de organizarlo |
Yo intenté, como ya he comentado en algún otro hilo, conseguir esto mismo, es decir, programar, compilar y generar una app para OSX, aunque no me importaría tener que hacerlo desde win o linux. No lo conseguí ni encontre nada que me ayudara.
Asi que si alguien consigue hacerlo, que explique cómo se hace, y ponemos el mensaje fijo, con chincheta y letras rojas y grandes e intermitentes. Y al autor o autores de la hazaña los nombramos socios de honor de clubdelphi. :D Es que, aunque ya sabemos, que según dicen, es posible hacerlo, sería la hostia saber cómo se hace y tener un ejemplo, aunque fuese un sencillo hola mundo, para Windows, OSX, iOS y por supuesto, Linux. Un saludo PD: Si hace falta un betatester o algo podria volver a poner Lazrus en mi OSX. |
Yo he hecho eso. Crear la app y con bundle. El fastidio es que lazarus se nota a leguas que esta hecho por linuxeros. No hay sino que ver como se desinstala (y recordando ademas como se instala? Que pereza hacerlo de nuevo):
http://wiki.lazarus.freepascal.org/I...nd_Free_Pascal El problema no es tanto lograrlo. Es quien esta tan loco* de depender de una herramienta asi. Lazarus es una mala herramienta (FreePascal es buena!). Es de las mas anti-OSX que he usado. * Con mis respetos al que inicia este hilo ;) |
Cita:
// Saludos |
Cita:
|
1 Archivos Adjunto(s)
Ok aqui va:
Leer toda la información en http://wiki.lazarus.freepascal.org/I...rus_on_MacOS_X Instalar los prerequisitos. Descargar la ultima version estable de FreePascal. Actualmente es: http://sourceforge.net/projects/laza...x.dmg/download Se puede bajar el binario de lazarus, pero según se explica en el wiki, en Mavericks ya no esta instalado por defecto GDB (el debugger) porque Apple ha movido todo a una toolchain mas superior (LLVM, CLANG, LLDB), asi que hay que instalar aparte: http://wiki.lazarus.freepascal.org/G...ks_and_Xcode_5 Notar en el wiki cual es la version que combina de lazarus. Para FPC 2.6.4 es Lazarus 1.2.2. Visitar a http://svn.freepascal.org/svn/lazarus/tags/ y descargar con subversion el tag 1.2.2: Código:
svn co http://svn.freepascal.org/svn/lazarus/tags/lazarus_1_2_2/ lazarus Código:
cd lazarus Código:
make install Se va a quejar de que no tiene acceso a las fuentes de FPC ni al debugger. Los ignoro como todo un desgraciado. Lo del debugger se arregla como dice el wiki, y lo de las fuentes ahi que descargar del tag correcto por subversion. Guardo el proyecto en una carpeta. Lo ejecuto. Dentro de esa carpeta quedara [NOMBRE PROYECTO].app (si todo sale bien). FIN. |
Bueno, no es la primera vez que me llaman loco por usar lazarus y mas para mac :D:D pero me lo tomo con humor.
Solo decir, en defensa de lazarus, que en versiones anteriores a la que hay actualmente si que había miles de fallos y era bastante inestable tanto para windows como para mac, pero en esta versión todo parece funcionar bien y por lo menos a mi no se me ha colgado ninguna vez. En cuanto a la instalación si que es un fastidio, y la desinstalación... también a pesar de que lo quieren poner fácil con el archivo uninstall.sh, que creo no sirve de mucho. En cuanto al tema principal, hasta ahora he conseguido lo siguiente. Compilar y ejecutar la aplicación con lazarus. Crear el envoltorio .app con lazarus. Ahora en el directorio del proyecto tengo los archivos: - Programa.app - Programa.exec - Todas las .pas y demás. Si en este momento, me llevo el archivo .app al escritorio y lo intento ejecutar dice que esta incompleto. Por ello, muestro el contenido del paquete Programa.app y dentro de la carpeta MacOs, introduzco el archivo Programa.exec sustituyendo al que hay. Ahora, cuando me vuelvo a llevar el Programa.app al escritorio ya si que se ejecuta correctamente y todo funciona bien. Mi cuestión sigue siendo dónde meter los archivos INI y Report.lrf dentro del Programa.app para que éstos funcionen. Lo lógico y según he leído, es meterlos en Resources, pero lo he intentado y no resulta. Alguien sabe si debo declararlos en algún archivo mediante lazarus o manualmente? Gracias de nuevo. |
Que es lo que no resulta?
|
Lo que no resulta es que la app no carga el archivo INI ni los reportes, he echado un vistazo a la documentación y por lo que entiendo estos archivos deben ir en la carpeta resources del .app, pero los meto ahí y sigue sin cargarlos. Las rutas que tengo puestas en la aplicacion son del tipo ('conf.ini'), he intentado cambiarlas y poner ('resources/conf.ini') pero tampoco los carga, puede que sea esto? Me estoy equivocando al poner la ruta?
Gracias de nuevo. |
Creo que he encontrado una solución... Al menos temporal.
Por lo que creo, en mac no se puede llamar a un archivo sin la ruta completa, es decir, no puedo poner el programa.app en el escritorio y decirle por ejemplo al pulsar un botón que cree un archivo.txt por que no lo crea. En windows si pongo el .exe en el escritorio y le digo lo mismo si que crea un .txt en el escritorio. Asi que he llegado a la solución de obtener el path de programa.app con Application.Location y añadirle ahí que cree el archivo y posteriormente lo lea. Es decir en un ejemplo: Código:
Memo1.Lines.SaveToFile(Application.Location+'archivo.ini'); Código:
Memo1.Lines.:LoadFromFile(Application.Location+'archivo.ini'); Gracias. |
Si que funcionan, ahora mismo funciona todo, reportes, archivo INI, etc. Todo perfecto.
Ahora solo me falta probarlo en otro mac a ver si también funciona, aunque he forzado el cierre de lazarus para evitar que quede nada abierto y así probarlo, creo que probarlo en otro que no tengo nada de lazarus instalado estaría bien. Tengo otro con un poco mas antiguo, lo probare e ire informando. Ahora solo me falta el icono, no soy capaz de ponerlo. Lo he generado con Icon Composer (El original de Apple). Con el, ya tengo el iconset (.icns), ahora abro el info.plist del programa.app e introduzco las lineas: Código:
<key>CFBundleIconFile</key> Gracias. P.D.: Si lo creeis oportuno puedo hacer una pequeña guía de los pasos que he seguido para conseguir que funcione y que pueda servirle a otros usuarios aunque para completarla necesitaría una mano con el icono y el tema de cambiar la ruta de los archivos. Gracias de nuevo. Un Saludo. |
Hola Jovalca.
Cita:
Saludos :) |
Cita:
|
Ok, investigo un poco mas a ver si consigo algo estable y me pongo con la guia.
|
La franja horaria es GMT +2. Ahora son las 22:15:00. |
Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi