Projet

Général

Profil

Créer un paquet avec OSX

QT propose tout ce qu'il faut pour créer un paquet directement :
  • compiler l'application dans QT Creator
  • ouvrir un terminal
  • se déplacer dans le bon dossier ou se trouvent les sources de l'application
  • lancer la commande suivante
macdeployqt nom_du_fichier.app -dmg

Et hop vous obtenez un fichier .dmg directement utilisable sur n'importe quel mac. À tester mais ça semble beaucoup plus facile que de passer par l'application PackageMaker.

Note: Pour le paquet CalculMental j'ai eu un pb assez idiot: l'emplacement des images pose soucis, j'ai donc du modifier main.cpp (cf code source de calculmental 1.0) et ensuite copier les images dans l'arborescence en dessous de l'exécutable avant de lancer le macdeployqt !

Note, pour ajouter des ressources et autres données avant la création du fichier dmg, voici la commande lancée par macdeployqt:

hdiutil create toto.dmg -srcfolder abuledu-monecoleadistance.app -format UDZO -volname abuledu-toto

Passage obligé par la case "intervention manuelle"

Pour que la ptite boite qui s'ouvre lorsqu'on double clique sur le dmg il faut passer par une étape manuelle détaillée dans le 3° lien en bas.

Note 2011.12.26: découverte du script create-dmg qui permet de scripter ce qui était encore manuel !

Automatisation totale

Télécharger le paquet create-dmg_pour_macosx.tar.bz2 qui se trouve sur https://redmine.ryxeo.com/projects/ryxeo/files et l'extraire à la racine du compte utilisateur mac.

Ensuite, on utilise le script macos/build.sh qui se trouve normalement dans chaque logiciel. Exemple du script build-mac.sh de monecoleadistance:

#!/bin/bash
#script de creation de l'image pour OSX
#Eric Seigne 2011 <eric.seigne@ryxeo.com>
#documentation https://redmine.ryxeo.com/projects/ryxeo/wiki/Cr%C3%A9er_un_paquet_avec_OSX
APPNAME="leterrier-mrpatate" 
APPVERSION="0.2" 
VOLNAME="AbulEdu LeTerrier MrPatate ${APPVERSION}" 
VOLICON="macos/icones/leterrier-mrpatate.icns" 

#On stoppe dès qu'on rencontre un problème
set -e

if [ -d /tmp/build-dmg ]; then
  echo "Erreur: répertoire temporaire de build existant, merci de supprimer /tmp/build-dmg" 
  echo "et relancez ce script ensuite ..." 
fi
#on fabrique une arborescence "dmg" temporaire
mkdir /tmp/build-dmg

#on cherche ou on se trouve et on change de repertoire le cas echeant
if [ -f ../${APPNAME}.pro ]; then
  cd ..
fi

#qmake
qmake ${APPNAME}.pro -r -spec macx-g++ CONFIG+=release

#compilation
make -w -j4

#on utilise les outils de Qt pour trimbaler le Qt framework et les dependances Qt
macdeployqt ${APPNAME}.app

#copie des petites choses indispensables ...
#cp -a ${APPNAME}.app /tmp/build-dmg/
#cp -a MacOS/.DS_Store /tmp/build-dmg/
#cp -a MacOS/.background /tmp/build-dmg/
#cp -a MacOS/Applications /tmp/build-dmg/

#copie des donnees
cp -a data ${APPNAME}.app/Contents/Resources/

#creation du fichier dmg ... ancienne methode avant de trouver le create-dmg
#hdiutil create ${APPNAME}-${APPVERSION}.dmg -srcfolder /tmp/build-dmg -format UDZO -volname ${APPNAME}
#nouvelle methode donc:
~/create-dmg/create-dmg --window-size 415 295 --volname "${VOLNAME}" --volicon ${VOLICON} --background "macos/.background/background.png" ~/Desktop/${APPNAME}-${APPVERSION}.dmg ${APPNAME}.app

#nettoyage
rm -rf /tmp/build-dmg

Sources d'informations

Créer une icône icns

png2icns leterrier-mrpatate.icns leterrier-mrpatate-256.png leterrier-mrpatate-128.png leterrier-mrpatate-48.png leterrier-mrpatate-32.png
Redmine Appliance - Powered by TurnKey Linux