Как подготовить разрешения для NWJS на отправку приложения в Mac App Store? - PullRequest
0 голосов
/ 11 февраля 2019

Я подписал файлы пакета приложения NWJS, используя скрипт оболочки для Nwjs 0.36 на MacOS 10.14.3.Я хочу загрузить приложение NWJS в магазин приложений Mac.Тем не менее, приложение падает после подписания и попытки запуска.Я думаю, что это связано с отсутствием разрешений в разрешениях «песочницы».

Эту проблему можно повторить, подписав nwjs.app по умолчанию для MacOs без изменения с использованием идентификатора разработчика MacOS.Список файлов, которые я включил в сценарий, - это файлы, перечисленные MacOS «загрузчиком приложений», отправкой пакета проверки приложений в магазин приложений Mac.Приложение требовало, чтобы в список программ входила песочница.https://developer.apple.com/app-sandboxing/

    #!/bin/bash
# copy this script in a file & run this by typing "sh thenameofthisfile" in Mac terminal
#directory is just the path name without app.
# app is yourapp without .app extension
#helpername is the name to replace= nwjs in nwjs help.app
#macosuseraccount is your macOS user account for the paths.
# "3rd party mac developer Installer" => for signing pkg // 3rd party mac developer Application => for signing everything in the app + .app
# replace app name / helpen name / macOs user name
#V1 is a variable equals to the current chromium version in the pathname for example: 71.0.3578.98

APP=nwjs
HELPERNAME=nwjs
MACOSUSERACCOUNT=nicolasguerinet

ID_APP="3rd Party Mac Developer Application"
ID_PKR="3rd Party Mac Developer Installer"
DIRECTORY=/users/$MACOSUSERACCOUNT/path/to/your/app
APP_PATH="$DIRECTORY/$APP.app"
PARENT_PLIST=$DIRECTORY/parent.plist
CHILD_PLIST=$DIRECTORY/child.plist
CHROMIUMVERSION=(/$APP_PATH/contents/versions/*/)
V1="$(basename $CHROMIUMVERSION)"

xattr -cr $APP_PATH

codesign --deep -s "$ID_APP" --entitlements "$CHILD_PLIST" "$APP_PATH/contents/versions/$V1/$HELPERNAME helper.app" -f -v
codesign --deep -s "$ID_APP" --entitlements "$CHILD_PLIST" "$APP_PATH/contents/versions/$V1/$HELPERNAME helper.app/contents/macos/$HELPERNAME helper" -f -v

codesign --deep -s "$ID_APP" --entitlements "$CHILD_PLIST" "$APP_PATH/contents/versions/$V1/nwjs framework.framework/versions/a/helpers/crashpad_handler" -f -v

codesign --deep -s "$ID_APP" --entitlements "$CHILD_PLIST" "$APP_PATH/contents/versions/$V1/nwjs framework.framework/Versions/A/Resources/app_mode_loader.app/Contents/MacOS/app_mode_loader" -f -v

codesign --deep -s "$ID_APP" --entitlements "$CHILD_PLIST" "$APP_PATH/contents/versions/$V1/nwjs framework.framework/Versions/A/XPCServices/AlertNotificationService.xpc/Contents/MacOS/AlertNotificationService" -f -v

#codesign --force --verify -s "$ID_APP" --entitlements "$CHILD_PLIST" "$APP_PATH/Contents/Versions/$V1/nwjs Framework.framework/nwjs Framework"

codesign --deep --force --verify -s "$ID_APP" --entitlements "$CHILD_PLIST" "$APP_PATH/Contents/Versions/$V1/nwjs Framework.framework"

codesign --deep -s "$ID_APP" --entitlements "$CHILD_PLIST" "$APP_PATH/contents/versions/$V1/nwjs framework.framework/libnode.dylib" -f -v

#codesign -s "$ID_APP" --entitlements "$CHILD_PLIST" "$APP_PATH/Contents/MacOS/$APP" -f -v


codesign --deep -s "$ID_APP" --entitlements "$PARENT_PLIST" $APP_PATH -f -v

Вот мой child.plist

<?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.inherit</key>
    <true/>
</dict>
</plist>

После подписания программ и родительского пакета, когда я пытаюсь запустить приложение, происходит сбой сразу.Я могу найти ошибки в моей консоли, когда фильтр использует "nwjs" или "process: sandboxd"

Я думаю, что главная ошибка:

Песочница: nwjs (4602) deny (1) привязка к сети

/ private / var / folder / kt / c216x7lx2qg87zhlwx46l6zr0000gn / T / io.nwjs.nwjs / .io.nwjs.nwjs.5zPGi8 / SingletonSocket

1019также получаю ошибки, подобные этой:

Песочница: nwjs (4676) deny (1) file-read-data /Users/nicolasguerinet/Library/Preferences/com.apple.LaunchServices/com.apple.launchservices.secure.plist

Песочница: nwjs (4676) deny (1) mach-register io.nwjs.nwjs.rohitfork.4676

Песочница: nwjs (4676) deny (1) mach-register.1029 *

и эти два из приложения:

[0210 / 210429.187708: ОШИБКА: directory_reader_posix.cc (42)] opendir: операция не разрешена (1)

[0210 / 214620.466617: ОШИБКА: mach_port_broker.mm (43)] bootstrap_look_up: разрешение отклонено (1100)

Я полагаю, что некоторые разрешения отсутствуют в parent.plist и должны быть добавлены в parent.plist для запуска Nwjs после подписания кода.


Обновление: я добавил следующее для моих родителей.без успеха:

<key>com.apple.security.temporary-exception.sbpl</key>
<array>

        <string>(allow ipc-posix-sem)</string>
        <string>(allow file-issue-extension)</string>
        <string>(allow mach-lookup)</string>
        <string>(allow file-write-create)</string>
        <string>(allow file-read-data)</string>

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