2016-12-08 9 views
0

Ich bin sehr neu in Mac-Entwicklungsumgebung. Ich habe Visual Studio für Mac installiert und ein neues .NET/Gtk 2.0-Lösungsprojekt erstellt, um ein GUI-Umbenennungstool zu erstellen. Ich habe das Werkzeug erstellt. Allerdings, wenn ich es in Debug und Release erstellen, generiert es. Exe-Datei, die ich nur mit der Shell ausführen kann.Mac-Anwendung von Gtk in Visual Studio Mac

Allerdings muss ich dieses Programm im App-Bundle erstellen, damit ich es an andere Benutzer senden kann, und sie können es ausführen, indem Sie darauf klicken. Gibt es eine Möglichkeit, dies zu erreichen? (Ich habe einige Stunden damit verbracht, konnte aber kein klares Dokument sehen, das mir erklärt. Wenn nichts funktioniert, muss ich es in Java umschreiben).

Vielen Dank im Voraus!

+0

Ich bekomme auch eine EXE, wenn ich für Linux und auf meiner Ubuntu-Box mit Mono installiert bin, kann ich einfach auf die ausführbare Datei doppelklicken, um es auszuführen. Wenn das nicht funktioniert, können Sie vielleicht ein Shell-Skript oder eine native Anwendung erstellen, die die exe ausführt? –

+0

Ja Doppelklick ist nicht woking, ich renne es von Shell und ich glaube nicht, dass die Benutzer mit Shell zufrieden sein werden oder mono Framework herunterladen müssen, um es auszuführen. Also ich denke, ich werde es mit Java bauen, da ich noch nie eine native Mac App gebaut habe. Trotzdem danke! – ozimax06

Antwort

0

Ich habe Xamarin Studio Community, die ich versuchte und wieder, es in EXE gebaut.

+0

Sie können Ihrem Beitrag Änderungen oder Kommentare hinzufügen. Bitte reservieren Sie den Antwortbereich für aktuelle Antworten. –

0

Angenommen, Mono ist auf allen Ihren Zielmaschinen installiert, dann können Sie (manuell) einen .app-Paketordner zusammenstellen, der Ihre .exe-Datei ausführt, wenn ein Benutzer darauf doppelklickt. Es gibt eine Reihe von Dingen, die Sie in das .app-Paket einfügen müssen. Eine davon ist eine Befehlsshell-Datei, die Ihre .exe startet und beim Ausführen von .app ausgeführt wird.

B.t.w. Visual Studio Mac und Xamarin Studio und MonoDevelop sind allesamt verschiedene Twists zum selben Thema, MonoDevelop. VS Mac und XS haben Extras, aber die grundlegende zugrunde liegende IDE ist MD. Welches dieser Produkte Sie auch verwenden, um Ihren Code zu kompilieren, ist unwahrscheinlich, dass sich etwas anderes als das nächste ergibt.

Die Struktur des Grund .app Ordners:

MyApp.app 
    +-- Contents 
     --- Info.plist 
     +-- MacOS 
      --- MyApp 
      --- MyApp.exe 
     +-- Resources 
      --- MyApp.icns 

Die Inhalte sind wie folgt:

Info.plist ist ein Mac OS-spezifische XML-Datei, die eine Beschreibung Ihres .app-Pakets enthält. Es wird wie folgt aussehen:

<?xml version="1.0" encoding="UTF-8"?> 
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> 
<plist version="1.0"> 
<dict> 
    <key>CFBundleDevelopmentRegion</key> 
    <string>English</string> 
    <key>CFBundleExecutable</key> 
    <string>MyApp</string> 
    <key>CFBundleIconFile</key> 
    <string>MyApp.icns</string> 
    <key>CFBundleIdentifier</key> 
    <string>com.myapp</string> 
    <key>CFBundleInfoDictionaryVersion</key> 
    <string>6.0</string> 
    <key>CFBundleName</key> 
    <string>My App Name</string> 
    <key>CFBundlePackageType</key> 
    <string>APPL</string> 
    <key>CFBundleShortVersionString</key> 
    <string>1.2.3</string> 
    <key>CFBundleSignature</key> 
    <string>xmmd</string> 
    <key>CFBundleVersion</key> 
    <string>1.2.3</string> 
    <key>NSAppleScriptEnabled</key> 
    <string>NO</string> 
</dict> 
</plist> 

Die MyApp.icns Datei ist eine Symboldatei Sie für Ihre App-Paket als Symbol verwendet wird.

Die Datei MyApp.exe ist Ihre kompilierte .NET-Exe.

Die MyApp-Datei ist eine ausführbare Befehlsdatei, die ausgeführt wird, wenn das .app-Paket vom Benutzer ausgeführt wird. Dies wird in der plist-Datei unter CFBundleExecutable referenziert und muss ausführbar sein (+ x permissions,). Dies ist, was es aussehen könnte:

#!/bin/sh 

DIR=$(cd "$(dirname "$0")"; pwd) 
MONO_FRAMEWORK_PATH=/Library/Frameworks/Mono.framework/Versions/Current 
export DYLD_FALLBACK_LIBRARY_PATH="$DIR:$MONO_FRAMEWORK_PATH/lib:/lib:/usr/lib" 
export PATH="$MONO_FRAMEWORK_PATH/bin:$PATH" 

exec mono "$DIR/MyApp.exe" 

Hoffnung, das hilft. Prost, Martin.

Verwandte Themen