Публікація десктоп-застосунку в 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 Пряме розповсюдження
Підпис 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 — для дочірніх процесів 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 з необхідними можливостями
  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 робочих днів.