У меня есть приложение, которое было разработано для Windows, но хорошо работает на MacOS под моно без любых модификаций (yay!). Однако, так как это - exectutable, OSX не распознает его как собственный тип файла, означая, что необходимо опуститься до командной строки для выполнения 'моно appname.exe'. Это также не показывает значок приложения. В случае, если это имеет значение, моя тестовая среда является Snow Leopard w/Mono 2.6.1.
Насколько я понимаю, в мире Mac, заставляя пользователя спасть до командной строки чрезмерно грубо. Существует ли 'правильный путь' для развертывания Моно приложения так, чтобы он мог работать путем нажатия на значок - возможно, Mac, эквивалентный из ярлыка, если такая вещь существует? Я услышал о чем-то позвонившем 'пакет', но возможно это не для Моно приложений / приложений.NET.
Так, есть ли 'правильный путь' для создания запущения приложения легче на пользователе?
Майкл Хатчинсон только что написал отличную статью о том, как это сделать:
http://mjhutchinson.com/journal/2010/01/24/creating_mac_app_bundle_for_gtk_app
Это помогло мне чрезвычайно пытаться сделать именно то, что вы делаете.
Если вы посмотрите на структуру каталогов внутри приложения, вы увидите, что пакеты немного больше, чем список свойств XML (info.plist) + некоторые папки. Не слишком сложно строить один вручную. Просто возьмите любое приложение в качестве примера, затем измените его и опустите исполняемый файл.
Хотя собель является достойным выбором, я, вероятно, выбрал бы расчет величины кромки для проекций в направлениях x и y в нескольких небольших репрезентативных областях. Другой понятный для .NET вариант на основе OpenCV - @ http://www.emgu.com/wiki/index.php/Main_Page .
-121--2276743- Для o
и O
вот несколько функций, которые я написал много лет назад:
(defun vi-open-line-above ()
"Insert a newline above the current line and put point at beginning."
(interactive)
(unless (bolp)
(beginning-of-line))
(newline)
(forward-line -1)
(indent-according-to-mode))
(defun vi-open-line-below ()
"Insert a newline below the current line and put point at beginning."
(interactive)
(unless (eolp)
(end-of-line))
(newline-and-indent))
(defun vi-open-line (&optional abovep)
"Insert a newline below the current line and put point at beginning.
With a prefix argument, insert a newline above the current line."
(interactive "P")
(if abovep
(vi-open-line-above)
(vi-open-line-below)))
Вы можете связать vi-open-line
, скажем, M-insert следующим образом:
(define-key global-map [(meta insert)] 'vi-open-line)
Для dd
, если вы хотите, чтобы убитая линия попала в кольцо уничтожения, вы можете использовать эту функцию, которая оборачивает kill-line
:
(defun kill-current-line (&optional n)
(interactive "p")
(save-excursion
(beginning-of-line)
(let ((kill-whole-line t))
(kill-line n))))
Для полноты, он принимает аргумент префикса и применяет его к kill-line
, так что он может убить гораздо больше, чем «текущая» строка.
Можно также просмотреть источник для viper-mode
, чтобы увидеть, как он реализует эквивалентные команды dd
, o
и O
.
Также можно запустить macpack из командной строки.