nw.js 签署应用程序 OSX

Posted

技术标签:

【中文标题】nw.js 签署应用程序 OSX【英文标题】:nw.js sign application OSX 【发布时间】:2017-09-28 23:21:00 【问题描述】:

我想根据安全性签署我的应用程序以摆脱应用程序阻止。我跟着官方NW.js文档Mac-App-Store-(MAS)-Submission-Guideline生成证书,打包我的应用程序,签名。但是签名后,我的应用程序在启动后立即关闭。当我尝试通过模板加载器将此签名的应用上传到应用商店时,我得到了:

我已经在github 上提问过,但还没有得到任何回复。如果有人在 mac os 上使用过 nw.js,请提供帮助。

【问题讨论】:

您尝试使用什么代码对您的应用进行签名?其他错误是不言自明的。 @Oskar我使用了这个 python 脚本。添加了所有凭据,并且它成功签署了应用程序,但应用程序在启动后关闭......并且在应用程序商店中它说签名无效。 docs.nwjs.io/en/latest/For%20Users/Advanced/… 我按照教程中的方式进行了所有配置,检查了几次 您是否尝试过使用--pkg 参数? 是的,我上传到模板加载器myapp.pkg 文件。很少有用户批准相同的问题:( 【参考方案1】:

您可以在不使用 xcode 的情况下对应用程序进行代码设计。以下 bash 脚本允许您执行此操作。您需要开发者 ID 应用程序,您可以在钥匙串访问应用程序中找到它。

您必须将版本之后的目录更改为您拥有的目录,具体取决于您使用的 nw.js 版本

identity="Developer ID Application: youridentiy... (some number)"
app="pathToYourApp.app"
rm -f "$app/Icon^M" 
rm -r -f "$app/.idea"


echo "### signing libraries"
codesign --force --verify --sign "$identity" "$app/Contents/Versions/60.0.3112.113/nwjs Framework.framework/Libraries/exif.so"
codesign --force --verify --sign "$identity" "$app/Contents/Versions/60.0.3112.113/nwjs Framework.framework/libffmpeg.dylib"
codesign --force --verify --sign "$identity" "$app/Contents/Versions/60.0.3112.113/nwjs Framework.framework/libnode.dylib"

echo "### signing frameworks"
codesign --force --verify --sign "$identity" "$app/Contents/Versions/60.0.3112.113/nwjs Framework.framework/nwjs Framework"
codesign --force --verify --sign "$identity" "$app/Contents/Versions/60.0.3112.113/nwjs Framework.framework/Helpers/crashpad_handler"
codesign --force --verify --sign "$identity" "$app/Contents/Versions/60.0.3112.113/nwjs Helper.app/Contents/MacOS/nwjs Helper"
codesign --force --verify --sign "$identity" "$app/Contents/Versions/60.0.3112.113/nwjs Helper.app/"
codesign --force --verify --sign "$identity" "$app/Contents/Versions/60.0.3112.113/nwjs Framework.framework/helpers/crashpad_handler"

echo "### sing osx folder"
codesign --force --verify --sign "$identity"  "$app/Contents/MacOS/nwjs"

echo "### signing app"
codesign --force --verify --sign "$identity" "$app"

echo "### verifying signature"
codesign -vv -d "$app"

【讨论】:

【参考方案2】:

终于在这里找到了答案: https://github.com/nwjs/nw.js/issues/6338

因此,要签署您的应用,您需要:

使用 nw-builder 构建您的应用

遵循 MAS 指南 http://docs.nwjs.io/en/latest/For%20Users/Advanced/Support%20for%20Mac%20App%20Store/

在 entitlements.plist 中设置 Sandbox=Yes

在运行 mas.py 脚本修复 Unleashed 内容之前:

# Set PATH_TO_YOUR_APP variable first
VERSION_NUMBER=`ls "$PATH_TO_YOUR_APP/Contents/Versions/"`
NWJS_FRAMEWORK="$PATH_TO_YOUR_APP/Contents/Versions/$VERSION_NUMBER/nwjs Framework.framework"
LIBNODE_DYLIB="libnode.dylib"
LIBNODE_LINK_TO="Versions/A/$LIBNODE_DYLIB"

echo fixing nwjs Framework unsealed content
pushd "$NWJS_FRAMEWORK"
mv "$LIBNODE_DYLIB" "$LIBNODE_LINK_TO"
ln -s "$LIBNODE_LINK_TO"
popd

您将在此线程中找到所有详细信息:https://github.com/nwjs/nw.js/issues/6338

希望 nw 团队解决此问题

【讨论】:

以上是关于nw.js 签署应用程序 OSX的主要内容,如果未能解决你的问题,请参考以下文章

nw.js使用

NW.js构建桌面应用

使用现有 CA 颁发的证书签署 OS X 应用程序并让 Gatekeeper 满意

无法在 nw.js 应用程序中完全删除鼠标光标

无法在 ubuntu 中运行 nw.js 应用程序

nw.js开发第一个程序(html开发桌面程序exe)