Предполагая, что Mono установлен на всех ваших целевых машинах, вы можете собрать (вручную) папку пакета .app, которая будет запускать ваш .exe-файл, когда пользователь дважды щелкнет по нему. Есть определенный набор вещей, которые вам нужно поместить в пакет .app, одним из которых является файл командной оболочки, который запускает ваш .exe и будет выполняться при запуске .app.
Кстати. Visual Studio Mac, Xamarin Studio и MonoDevelop — это, по сути, разные варианты одного и того же — MonoDevelop. В VS mac и XS есть дополнительные возможности, но основной базовой IDE является MD. Какой бы из этих продуктов вы ни использовали для компиляции своего кода, вряд ли получится что-то отличное от следующего.
Структура базовой папки .app:
MyApp.app
+-- Contents
--- Info.plist
+-- MacOS
--- MyApp
--- MyApp.exe
+-- Resources
--- MyApp.icns
Содержание следующее:
Info.plist — это XML-файл для Mac OS, который содержит описание вашего пакета .app. Это будет выглядеть примерно так:
<?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>
Файл MyApp.icns — это файл значка, который вы хотите использовать в качестве значка для своего пакета приложения.
Файл MyApp.exe — это ваш скомпилированный .NET exe.
Файл MyApp — это исполняемый командный файл, который выполняется, когда пользователь запускает пакет .app. Это указано в файле plist в разделе CFBundleExecutable и должно быть исполняемым (+x разрешения, ). Вот как это может выглядеть:
#!/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"
Надеюсь это поможет. Здоровья, Мартин.
person
muszeo
schedule
04.06.2017