Публикация десктоп-приложения в Mac App Store

Наша компания занимается разработкой, поддержкой и обслуживанием сайтов любой сложности. От простых одностраничных сайтов до масштабных кластерных систем построенных на микро сервисах. Опыт разработчиков подтвержден сертификатами от вендоров.

Разработка и обслуживание любых видов сайтов:

Информационные сайты или веб-приложения
Сайты визитки, landing page, корпоративные сайты, онлайн каталоги, квиз, промо-сайты, блоги, новостные ресурсы, информационные порталы, форумы, агрегаторы
Сайты или веб-приложения электронной коммерции
Интернет-магазины, B2B-порталы, маркетплейсы, онлайн-обменники, кэшбэк-сайты, биржи, дропшиппинг-платформы, парсеры товаров
Веб-приложения для управления бизнес-процессами
CRM-системы, ERP-системы, корпоративные порталы, системы управления производством, парсеры информации
Сайты или веб-приложения электронных услуг
Доски объявлений, онлайн-школы, онлайн-кинотеатры, конструкторы сайтов, порталы предоставления электронных услуг, видеохостинги, тематические порталы

Это лишь некоторые из технических типов сайтов, с которыми мы работаем, и каждый из них может иметь свои специфические особенности и функциональность, а также быть адаптированным под конкретные потребности и цели клиента

Предлагаемые услуги
Показано 1 из 1 услугВсе 2065 услуг
Публикация десктоп-приложения в Mac App Store
Средняя
~3-5 рабочих дней
Часто задаваемые вопросы

Наши компетенции:

Этапы разработки

Последние работы

  • image_website-b2b-advance_0.png
    Разработка сайта компании B2B ADVANCE
    1262
  • image_web-applications_feedme_466_0.webp
    Разработка веб-приложения для компании FEEDME
    1171
  • image_websites_belfingroup_462_0.webp
    Разработка веб-сайта для компании БЕЛФИНГРУПП
    874
  • image_ecommerce_furnoro_435_0.webp
    Разработка интернет магазина для компании FURNORO
    1094
  • image_crm_enviok_479_0.webp
    Разработка веб-приложения для компании Enviok
    831
  • image_bitrix-bitrix-24-1c_fixper_448_0.png
    Разработка веб-сайта для компании ФИКСПЕР
    851

Публикация десктоп-приложения в Mac App Store

Mac App Store предъявляет более строгие требования, чем прямое распространение: приложение должно работать в App Sandbox, использовать только разрешённые entitlements и пройти ревью Apple. Electron-приложения поддерживаются, но требуют специальной настройки.

Отличие MAS от прямого распространения

Параметр Mac App Store Direct Distribution
Подпись Mac App Distribution Certificate Developer ID Certificate
Sandbox Обязателен Опционально
Нотаризация Не нужна (ревью Apple) Обязательна
Автообновления App Store механизм Squirrel/Sparkle
Ограничения API Строже Меньше

Настройка electron-builder для MAS

# electron-builder.yml
mac:
  target:
    - target: mas       # Mac App Store
    - target: mas-dev   # Для тестирования sandbox

  provisioningProfile:        build/embedded.provisionprofile
  entitlements:               build/entitlements.mas.plist
  entitlementsInherit:        build/entitlements.mas.inherit.plist
  hardenedRuntime:            false   # MAS не требует hardened runtime
  identity: "3rd Party Mac Developer Application: Company (TEAM_ID)"

Entitlements для MAS

<!-- build/entitlements.mas.plist -->
<?xml version="1.0" encoding="UTF-8"?>
<plist version="1.0">
<dict>
  <!-- App Sandbox — обязателен для MAS -->
  <key>com.apple.security.app-sandbox</key><true/>

  <!-- Сеть -->
  <key>com.apple.security.network.client</key><true/>

  <!-- Если нужен доступ к файлам -->
  <key>com.apple.security.files.user-selected.read-write</key><true/>

  <!-- Для Electron: JIT нужен в отдельном entitlement child -->
</dict>
</plist>
<!-- build/entitlements.mas.inherit.plist — для child процессов Electron -->
<?xml version="1.0" encoding="UTF-8"?>
<plist version="1.0">
<dict>
  <key>com.apple.security.app-sandbox</key><true/>
  <key>com.apple.security.inherit</key><true/>
</dict>
</plist>

Provisioning Profile

Нужен Mac App Store Distribution Profile:

  1. Зайти в developer.apple.com → Certificates, Identifiers & Profiles
  2. Создать App ID с нужными capabilities
  3. Создать Distribution Certificate (3rd Party Mac Developer)
  4. Создать Provisioning Profile типа Mac App Store
  5. Скачать .provisionprofile и положить в build/

Сборка и валидация

# Сборка MAS-пакета
npx electron-builder --mac mas

# Валидация перед отправкой
xcrun altool --validate-app \
  --file dist/mas/AppName.pkg \
  --type osx \
  --apiKey   "YOUR_API_KEY" \
  --apiIssuer "YOUR_ISSUER_UUID"

# Отправка в App Store Connect
xcrun altool --upload-app \
  --file dist/mas/AppName.pkg \
  --type osx \
  --apiKey   "YOUR_API_KEY" \
  --apiIssuer "YOUR_ISSUER_UUID"

Современная альтернатива — xcrun notarytool и Transporter.app.

Ограничения App Sandbox

Sandbox запрещает ряд операций, к которым привыкли Electron-разработчики:

  • Нет прямого запуска shell-команд через child_process.exec
  • Нет доступа к произвольным путям файловой системы
  • Нет авто-запуска при старте системы (без LaunchAgent entitlement)
  • Межпроцессное взаимодействие — только через XPC или App Groups

Для обхода части ограничений используют XPC Services — отдельные процессы с расширенными правами, которые вызываются из основного приложения.

GitHub Actions

- name: Build MAS
  run: npx electron-builder --mac mas
  env:
    APPLE_ID:          ${{ secrets.APPLE_ID }}
    APPLE_TEAM_ID:     ${{ secrets.APPLE_TEAM_ID }}
    CSC_LINK:          ${{ secrets.MAS_CERTIFICATE }}
    CSC_KEY_PASSWORD:  ${{ secrets.MAS_CERTIFICATE_PWD }}

- name: Upload to App Store Connect
  run: |
    xcrun altool --upload-app \
      --file "dist/mas/AppName.pkg" \
      --type osx \
      --apiKey   "${{ secrets.ASC_API_KEY }}" \
      --apiIssuer "${{ secrets.ASC_ISSUER_ID }}"

Ревью Apple занимает от 1 до 7 дней. Обновления обычно проходят быстрее первой публикации.

Сроки

Настройка sandbox-совместимости, provisioning profiles и первая публикация в Mac App Store: 4–6 рабочих дней.