Electron / Quasar - как запустить приложение Mac после подписи и песочницы? - PullRequest
0 голосов
/ 30 октября 2018

У меня есть приложение Quasar / Electron Mac, которое позволяет пользователю щелкнуть фрагмент и вставить его в последнее просмотренное приложение (например, «Почта» и т. Д.).

Когда я создаю приложение для платформы mas (Mac App Store) без подписи и песочницы, со следующими настройками в quasar.conf.js

electron: {
    packager: {
        asar: false,
        appBundleId: '[app id]',
        platform: 'mas', 
        version: '1.0.0',
        buildVersion: '4'
    }
}

... и следующая команда сборки:

quasar build -m electron

Тогда сгенерированный файл приложения работает нормально, когда я дважды щелкаю по нему.

Однако, если я подпишу и подпишу приложение, со следующими настройками в quasar.conf.js :

electron: {
    packager: {
        asar: false,
        appBundleId: '[app id]',
        osxSign: {
            'entitlements': 'src-electron/default.entitlements.mas.plist'
        },
        platform: 'mas', 
        version: '1.0.0',
        buildVersion: '4'
    }
}

... с этим default.entitlements.mas.plist file:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
    <dict>
        <key>com.apple.security.app-sandbox</key>
        <true/>
        <key>com.apple.security.network.client</key>
        <true/>
    </dict>
</plist>

... и та же команда сборки:

quasar build -m electron

Затем, когда я дважды щелкаю по сгенерированному файлу приложения, он сразу же выходит со следующим сообщением:

enter image description here

Редактировать: При нажатии на отчет появляется следующее сообщение:

PROCESS:               Email Snippets [90262]
Path:                  /Applications/MAMP/*/Email Snippets.app/Contents/MacOS/Email Snippets
Identifier:            com.dannyconnell.emailsnippets
Version:               ???
Code Type:             X86-64 (Native)
Parent Process:        ??? [1]
Responsible:           Email Snippets [90262]
User ID:               501

Date/Time:             2018-11-03 21:14:01.171 +0000
OS Version:            Mac OS X 10.13.6 (17G65)
Report Version:        12
Anonymous UUID:        E00B5535-E6DC-B81E-1DCC-43B629EDC468

Sleep/Wake UUID:       B3B79D2B-F30B-47B0-A980-0822EFC30745

Time Awake Since Boot: 90000 seconds
Time Since Wake:       480 seconds

System Integrity Protection: enabled

Crashed Thread:        0

Exception Type:        EXC_CRASH (Code Signature Invalid)
Exception Codes:       0x0000000000000000, 0x0000000000000000
Exception Note:        EXC_CORPSE_NOTIFY

Termination Reason:    Namespace CODESIGNING, Code 0x1

kernel messages:

VM Regions Near 0 (cr2):
--> 
    __TEXT                 0000000103992000-0000000103993000 [    4K] r-x/rwx SM=COW  

Thread 0 Crashed:
0   ???                             0x000000011127d19c _dyld_start + 0

Thread 0 crashed with X86 Thread State (64-bit):
  rax: 0x0000000000000000  rbx: 0x0000000000000000  rcx: 0x0000000000000000  rdx: 0x0000000000000000
  rdi: 0x0000000000000000  rsi: 0x0000000000000000  rbp: 0x0000000000000000  rsp: 0x00007ffeec26db20
   r8: 0x0000000000000000   r9: 0x0000000000000000  r10: 0x0000000000000000  r11: 0x0000000000000000
  r12: 0x0000000000000000  r13: 0x0000000000000000  r14: 0x0000000000000000  r15: 0x0000000000000000
  rip: 0x000000011127d19c  rfl: 0x0000000000000200  cr2: 0x0000000000000000

Logical CPU:     0
Error Code:      0x00000000
Trap Number:     0


Binary Images:
       0x103992000 -        0x103992ff7 +??? (0) <447A1052-3F46-3E1B-BAC8-64F49EDE036E> (null)
       0x11127c000 -        0x1112c6acf +??? (551.4) <8A72DE9C-A136-3506-AA02-4BA2B82DCAF3> (null)

External Modification Summary:
  Calls made by other processes targeting this process:
    task_for_pid: 0
    thread_create: 0
    thread_set_state: 0
  Calls made by this process:
    task_for_pid: 0
    thread_create: 0
    thread_set_state: 0
  Calls made by all processes on this machine:
    task_for_pid: 58409
    thread_create: 0
    thread_set_state: 54

VM Region Summary:
ReadOnly portion of Libraries: Total=432K resident=0K(0%) swapped_out_or_unallocated=432K(100%)
Writable regions: Total=8404K written=0K(0%) resident=0K(0%) swapped_out=0K(0%) unallocated=8404K(100%)

                                VIRTUAL   REGION 
REGION TYPE                        SIZE    COUNT (non-coalesced) 
===========                     =======  ======= 
STACK GUARD                       56.0M        2 
Stack                             8192K        2 
__DATA                             228K        4 
__LINKEDIT                         128K        3 
__TEXT                             304K        3 
shared memory                        8K        3 
===========                     =======  ======= 
TOTAL                             64.7M       11 

Model: MacBookPro12,1, BootROM MBP121.0177.B00, 2 processors, Intel Core i5, 2.7 GHz, 8 GB, SMC 2.28f7
Graphics: Intel Iris Graphics 6100, Intel Iris Graphics 6100, Built-In
Memory Module: BANK 0/DIMM0, 4 GB, DDR3, 1867 MHz, 0x80AD, 0x483943434E4E4E424C54414C41522D4E5544
Memory Module: BANK 1/DIMM0, 4 GB, DDR3, 1867 MHz, 0x80AD, 0x483943434E4E4E424C54414C41522D4E5544
AirPort: spairport_wireless_card_type_airport_extreme (0x14E4, 0x133), Broadcom BCM43xx 1.0 (7.77.37.31.1a9)
Bluetooth: Version 6.0.7f10, 3 services, 27 devices, 1 incoming serial ports
Network Service: Wi-Fi, AirPort, en0
Serial ATA Device: APPLE SSD SM0256G, 251 GB
USB Device: USB 3.0 Bus
USB Device: Internal Memory Card Reader
USB Device: Bluetooth USB Host Controller
Thunderbolt Bus: MacBook Pro, Apple Inc., 27.1

Если я затем упакую приложение, используя Electron-osx-Flat :

electron-osx-flat "dist/electron-mat/[app name]-mas-x64/[app name].app" --verbose

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

Редактировать: Кроме того, если я запускаю исполняемый файл в файле .app в Терминале, я просто получаю сообщение:

Killed: 9

Однако, когда я отправляю этот сгенерированный файл pkg на проверку, приложение в основном работает для рецензента, но функция копирования и вставки не работает.

Я считаю, что это связано с отсутствующими правами в файле default.entitlements.mas.plist .

Тем не менее, я бы хотел самостоятельно протестировать решение подобных проблем, прежде чем отправлять их в магазин приложений.

Как я могу запустить и протестировать свое приложение, если оно подписано и помещено в песочницу?

1 Ответ

0 голосов
/ 07 ноября 2018

Спасибо @ miadz за указание в правильном направлении.

Вот что вам нужно сделать, чтобы ваше приложение Electron было полностью изолированным (как оно будет отображаться в Apple Review Team со всеми применимыми правами):

1) Во-первых, вам нужен второй Mac для тестирования вашего приложения

2) Добавьте свой второй Mac в список устройств на сайте Apple Developer ( Учетная запись > Сертификаты, идентификаторы и профили > macOS > Устройства > все ). Вам понадобится UUID вашего Mac, который вы можете найти в строке меню в Apple > Об этом Mac > Обзор > Системный отчет ...

3) Создание профиля обеспечения разработки Mac для вашего приложения на сайте Apple Developer ( Учетная запись > Сертификаты, идентификаторы и профили > macOS > Provisioning Profiles > Development ) и убедитесь, что вы выбрали свой второй Mac в качестве устройства. Если у вас уже есть профиль обеспечения разработки, отредактируйте его и выберите свой второй Mac в разделе Устройства .

.

4) Загрузите свой профиль обеспечения и поместите его в корень проекта Quasar / Electron

5) На вашем Mac для разработки создайте приложение для платформы mas без подписи, например,

electron: {
    packager: {
        asar: false,
        appBundleId: '[app id]',
        platform: 'mas', 
        version: '1.0.0',
        buildVersion: '4'
    }
}

тогда ...

quasar build -m electron

6) Подпишите созданное вами приложение для разработки с помощью Electron-osx-sign (сначала вам может понадобиться npm install electron-osx-sign -g):

electron-osx-sign "dist/electron-mat/[app name]-mas-x64/[app name].app" --platform=mas --type=development --entitlements="src-electron/default.entitlements.mas.plist" --provisioning-profile="[app name]_Mac_Development.provisionprofile"

7) Отправьте сгенерированный файл .app на второй компьютер Mac и запустите

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...