Как я поворачиваю Моно .exe в пакет для OS X?

У меня есть приложение, которое было разработано для Windows, но хорошо работает на MacOS под моно без любых модификаций (yay!). Однако, так как это - exectutable, OSX не распознает его как собственный тип файла, означая, что необходимо опуститься до командной строки для выполнения 'моно appname.exe'. Это также не показывает значок приложения. В случае, если это имеет значение, моя тестовая среда является Snow Leopard w/Mono 2.6.1.

Насколько я понимаю, в мире Mac, заставляя пользователя спасть до командной строки чрезмерно грубо. Существует ли 'правильный путь' для развертывания Моно приложения так, чтобы он мог работать путем нажатия на значок - возможно, Mac, эквивалентный из ярлыка, если такая вещь существует? Я услышал о чем-то позвонившем 'пакет', но возможно это не для Моно приложений / приложений.NET.

Так, есть ли 'правильный путь' для создания запущения приложения легче на пользователе?

20
задан RichVel 20 August 2012 в 15:38
поделиться

4 ответа

Майкл Хатчинсон только что написал отличную статью о том, как это сделать:

http://mjhutchinson.com/journal/2010/01/24/creating_mac_app_bundle_for_gtk_app

Это помогло мне чрезвычайно пытаться сделать именно то, что вы делаете.

19
ответ дан 30 November 2019 в 00:59
поделиться

Если вы посмотрите на структуру каталогов внутри приложения, вы увидите, что пакеты немного больше, чем список свойств XML (info.plist) + некоторые папки. Не слишком сложно строить один вручную. Просто возьмите любое приложение в качестве примера, затем измените его и опустите исполняемый файл.

0
ответ дан 30 November 2019 в 00:59
поделиться

Monobjc - лучший путь к ИМО.

http://www.monobjc.net/

4
ответ дан 30 November 2019 в 00:59
поделиться

Хотя собель является достойным выбором, я, вероятно, выбрал бы расчет величины кромки для проекций в направлениях 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 .

-121--1403859-

Также можно запустить macpack из командной строки.

1
ответ дан 30 November 2019 в 00:59
поделиться
Другие вопросы по тегам:

Похожие вопросы: