2010-04-01 20 views
0

J'ai une application Mono qui ne devrait pas apparaître sur le dock, mais qui affiche parfois une fenêtre. Je ne veux afficher ni barre de menu ni icône de dock pour cette application. J'ai mon application enveloppée dans un ensemble d'applications, et mon fichier info.plist a le LSUIElement mis à "1". Cela ne semble pas cacher mon application du Dock.Comment masquer une application Mono sur la station d'accueil OSX

J'ai aussi essayé d'appeler osascript avec les informations suivantes dans un Process.Start: osascript -e 'tell application "System Events" pour définir visible du processus "myapp" false'

Ce système retourne un Code d'erreur de l'événement: -10006. Jusqu'à présent, je n'ai pas eu de chance de découvrir ce que cela signifie.

J'ai également essayé tous les éléments standard Hide() et Visibility = false à l'intérieur de Mono.

Quelqu'un a trouvé une solution de contournement pour cela, ou avez-vous une idée d'une direction que je peux regarder? Pour la plupart, travailler en Mono a été simple codage .Net, mais cela m'a bloqué.

Répondre

1

Eh bien, après une bonne quantité de travail, j'ai trouvé une meilleure façon de le faire. Je génère une application mono Silverlight + ciblant OSX. J'avais besoin d'avoir les deux lancés à partir du même bouton.

Le résoudre avec une commande de script bash à partir de l'ensemble que le processus d'installation de Silverlight OOB crée, et simplement distribué l'ensemble créé, avec quelques commandes rsync.

La ligne qui lance le bit de serveur (créé à l'aide de l'outil de macpack Mono): MyApp.app ouvert &

La ligne qui lance alors l'application Silverlight OOB normalement: ./Silverlight $ @ &>/dev/null

Le bit '$ @' transmet tous les arguments initiaux dans l'exécutable Silverlight de l'application OOB. Cela signifie que vous devez jouer avec Info.plist pour lancer votre propre lanceur, de sorte que votre exécutable 'Silverlight' ne soit pas écrasé sur une mise à jour Silverlight, mais semble fonctionner plutôt bien.

0

Voici ce que vous cherchez: http://uselessthingies.wordpress.com/2008/05/18/an-app-without-dock-icon-and-menu-bar/

tl; dr: Emballez votre .app, et Info.plist de votre application ajouter <key>LSUIElement</key><string>1</string>.

+0

J'avais essayé ces deux options, qui ne fonctionnaient pas pour moi à ce moment-là. Il doit y avoir quelque chose à propos de LSUIElement que je ne comprends pas, ou qui manquait. Il est possible à ce stade qu'une mise à jour corrige le comportement que je voyais. La solution que j'utilise a très bien fonctionné, donc je n'ai plus fait d'expérimentation. – Chris