Как лучше всего распространять QT-кроссплатформенное приложение в Mac OS?
Как я понял, с маркетом не все просто — многие его не юзают (вообще есть ли проблемы с заливкой QT-прог в маркет?)
Многие делают dmg-образ, который потом нужно клацнуть, запускается авторан, после чего остается перетянуть значок на Applications. Как то тупо, не как привычная инсталляция.
Однако же некоторые делают классику, к примеру MS так распространяет свой офис. Сделали pkg, как я понял — это Java-пакет?
Здравствуйте, Shmj, Вы писали:
S>Как лучше всего распространять QT-кроссплатформенное приложение в Mac OS?
S>Как я понял, с маркетом не все просто — многие его не юзают (вообще есть ли проблемы с заливкой QT-прог в маркет?)
что бы попасть в App Store надо купить подписку Apple Developer. Если вы пишите прогу в Xcode там есть встроенная функция для загрузки в App Store (вроде в Xcode можно QT прикрутить — но это я не знаю. у меня все на obj-c или swift)
Не obj-c или swift программы в App Store вроде есть. Для загрузки была специальная утилита но я не уверен что она все еще есть, там были обновления в этой части в прошлом году.
в App Store берут только программы работающие в sandbox режиме.
S>Многие делают dmg-образ, который потом нужно клацнуть, запускается авторан, после чего остается перетянуть значок на Applications. Как то тупо, не как привычная инсталляция.
dmg-образ это и был настоящий "apple way". Программа просто копируется в Applications. Удаление программы — удаление ее из папки Applications. По рекомендациям эппла программа не должна рассовывать свои компоненты по разным местам системы так что нужды в специальных установщиках вроде нет.
(к стати — никакого авторана там нет — dmg это образ диска. клацаете — система проверяет образ на целостность и монтирует его. и уже можно запускать программу прямо с dmg или скопировать в Applications)
S>Однако же некоторые делают классику, к примеру MS так распространяет свой офис. Сделали pkg, как я понял — это Java-пакет?
это скрипт который может выполнить какие нибудь проверки перед установкой и/или может нагадить в какие нибудь системные области диска, как потом удалять такую программу — непонятно. я, как пользователь, стараюсь программы в pkg не ставить — они меня пугают (я возможно ретроград/параноик/не умный человек но подозреваю что я не один такой)
если вам не надо ничего в системе менять/добавлять — проще использовать dmg или просто zip архив
S>Кто что скажет?
Помните про Gatekeeper — если ваша программа не подписана (эппловским сертификатом который продают вместе с подпиской Apple Developer ($99 в год) то пользователю надо будет применить некоторый знания и умения что бы запустить программу в первый раз.
Здравствуйте, Shmj, Вы писали:
S>Как лучше всего распространять QT-кроссплатформенное приложение в Mac OS?
Через магазин и через скачивание.
S>Как я понял, с маркетом не все просто — многие его не юзают (вообще есть ли проблемы с заливкой QT-прог в маркет?)
Не думаю, что есть проблемы. Неизвестному производителю лучше не выпендриваться и давать все опции. Если про твой продукт знают — можешь выпендриваться.
S>Многие делают dmg-образ, который потом нужно клацнуть, запускается авторан, после чего остается перетянуть значок на Applications. Как то тупо, не как привычная инсталляция.
Для макоси это привычная инсталляция.
S>Однако же некоторые делают классику, к примеру MS так распространяет свой офис. Сделали pkg, как я понял — это Java-пакет?
Я бы не стал запускать никакие pkg от не слишком известного производителя.
S>Кто что скажет?
Делать как все. Давать скачивать с магазина или из браузера. С браузера скачивать dmg со своим приложением, давать устанавливать перетягиванием. Зачем что-то выдумывать?
S>>Многие делают dmg-образ, который потом нужно клацнуть, запускается авторан, после чего остается перетянуть значок на Applications. Как то тупо, не как привычная инсталляция.
J>dmg-образ это и был настоящий "apple way". Программа просто копируется в Applications. Удаление программы — удаление ее из папки Applications. По рекомендациям эппла программа не должна рассовывать свои компоненты по разным местам системы так что нужды в специальных установщиках вроде нет.
J>(к стати — никакого авторана там нет — dmg это образ диска. клацаете — система проверяет образ на целостность и монтирует его. и уже можно запускать программу прямо с dmg или скопировать в Applications)
Прямо как AppImage в Linux.
Но что делать, если приложению нужно что-то зарегистрировать в ОС, например создать сервис или scheduled task при установке (в терминах MS Windows, не знаю как правильно обозначить аналоги в Apple MacOS)7
Как осуществляется проверка на совместимость с версией ОС и на наличие крупных зависимостей, которые упаковывать в dmg невозможно или нецелесообразно (java runtime например)?
M>Но что делать, если приложению нужно что-то зарегистрировать в ОС, например создать сервис или scheduled task при установке (в терминах MS Windows, не знаю как правильно обозначить аналоги в Apple MacOS)7
сделать pkg установщик, который все это и создаст при установке. возможно еще попросит ввести пароль для повышения полномочий программы что бы она получила возможность писать в системные папки. ну и понимать что не всякий пользователь захочет все это устанавливать.
если бы я писал такую программу то я бы эти действия выполнил при первом запуске программы подробно объяснив пользователю нафига ему это надо и почему без этого никак.
Такое поведение рекомендовано самим эпплом например для обхода ограничений sandbox-программ для доступа к диску. При первом запуске вы выкатываете диалог открытия папки с вашим домашним каталогом (~/) и говорите юзеру что программа собирается использовать его файлы для работы и если он, юзер, не хочет подтверждать открытие каждого файла/папки по отдельности он может открыть каталог сейчас и программа запомнит его выбор. (так работают файловые менеджеры загружаемые из app store)
в мак оси _почти_ нет вирусов и троянов потому что каждый вирус и троян перед тем как сделать что нибудь обязательно либо сам запрoсит разрешение это сделать либо система его отловит и спросит — "тут ваш CD-Ejector собирается модифицировать системные файлы, введите пароль для разрешения?"
пользователей такие вещи от непонятных программ обычно очень напрягают
M>Как осуществляется проверка на совместимость с версией ОС и на наличие крупных зависимостей, которые упаковывать в dmg невозможно или нецелесообразно (java runtime например)?
ну, минимальная версия должна быть прописана в самой программе и если она не соответствует то система просто не даст запустить такую программу (иконка программы будет перечеркнута а при попытке запуска вылезет системное предупреждение.
можно еще в самой программе проверять есть ли в системе определенный "новые" функции и если их нет использовать "старые" аналоги.
но конечно если нужна серьезная проверка — делайте свой установщик
Здравствуйте, m2user, Вы писали:
M>Но что делать, если приложению нужно что-то зарегистрировать в ОС, например создать сервис или scheduled task при установке (в терминах MS Windows, не знаю как правильно обозначить аналоги в Apple MacOS)7
Наверное это лучше сделать при первом запуске.
M>Как осуществляется проверка на совместимость с версией ОС и на наличие крупных зависимостей, которые упаковывать в dmg невозможно или нецелесообразно (java runtime например)?
Насчёт проверки совместимостей — не знаю. Обычно в macOS поддерживают последнюю версию и пару предыдущих от силы, остальное — уже проблема пользователя. А в чём проблема крупных зависимостей — не понимаю. java runtime можно и нужно упаковывать в dmg. Та же idea в dmg занимает гигабайты, никаких проблем это не создаёт.
Здравствуйте, Shmj, Вы писали:
S>Многие делают dmg-образ, который потом нужно клацнуть, запускается авторан, после чего остается перетянуть значок на Applications. Как то тупо, не как привычная инсталляция.
dmg-образ — это крутейшая вещь. Идея её в том, что это образ диска. А с диска можно запустить всё что угодно — инсталлятор, саму программу или файлы полистать. Никто не мешает положить в dmg-образ полноценный инсталлятор с визардом, который сделает всё и даже сам отмонтирует этот диск по своему завершению если нужно.
Я тоже долго не мог вкурить в dmg-образы после винды, это всё казалось каким-то странным костылем. Но если задуматься, так и должно быть: вы скачиваете медиа-артифакт, а потом сами решаете что с ним делать: посмотреть, запустить или просто закрыть потому что содержимое не понравилось.
В винде на самом деле всё то же самое, только скрыто от пользователя в самом файле-контейнере инсталляции (.msi или .cab).
Но зачем изобретать велосипеды, если ОС уже и так поддерживает файлы-контейнеры? Собственно это и есть идея dmg — чтобы не изобретать велосипеды вновь и вновь, файлы упаковываются в стандартный медиа контейнер, который потом может быть универсально использован для дистрибьюции: будь то скачивание через интернет или даже запись на физический носитель. Всё происходит по единому образу и подобию, универсально и без лишнего кода.
M>>Но что делать, если приложению нужно что-то зарегистрировать в ОС, например создать сервис или scheduled task при установке (в терминах MS Windows, не знаю как правильно обозначить аналоги в Apple MacOS)7
vsb>Наверное это лучше сделать при первом запуске.
А при удалении приложения нужно все эти артефакты почистить. Это обычно setup делает.
Здравствуйте, m2user, Вы писали:
M>>>Но что делать, если приложению нужно что-то зарегистрировать в ОС, например создать сервис или scheduled task при установке (в терминах MS Windows, не знаю как правильно обозначить аналоги в Apple MacOS)7
vsb>>Наверное это лучше сделать при первом запуске.
M>А при удалении приложения нужно все эти артефакты почистить. Это обычно setup делает.
Стандартный способ удаления программ официально рекомендованный эпплом (если программа не из app store) — перетащить программу в мусорную корзину и очистить корзину. Официальные рекомендации для разработчиков — иметь это в виду.
Видимо остатки user preferences в ~/Library/Preferences/ ~/Library/Caches/ и других подобных местах вообще не считаются преступлением.
Так что запуск каких то приложений, специального ан-инсталлера от разработчика программы или универсальных ан-инсталлеров типа Clean-my-mac (навязчиво навязываемых рекламой на любых мак-сайтах) это уже не "Mac way"
Если обойтись без внедренных в систему сервисов нельзя но хочется снять с души груз за загаживание системы пользователя — я бы сделал в программе какую нибудь менюшку "Удалить программу" которая будет удалять все лишнее и заканчиваться сообщением — "Теперь можете переместить программу в корзину". Пользователь который этого не сделает — сам дурак, пусть покупает Clean-my-mac professional ))
Здравствуйте, m2user, Вы писали:
S>>>Многие делают dmg-образ, который потом нужно клацнуть, запускается авторан, после чего остается перетянуть значок на Applications. Как то тупо, не как привычная инсталляция.
J>> M>Прямо как AppImage в Linux.