nw.js应用签名(OSX)

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

enter image description here

我已在github上提问,但尚未收到任何回复。如果有人在macOS上使用nw.js有经验,请帮助我。

2
你正在尝试使用哪个代码签署你的应用程序?其他错误都相当容易理解。 - Oskar
@Oskar我使用了这个Python脚本。添加了所有凭据,它成功地签署了应用程序,但是应用程序在启动后关闭...而且在应用商店中显示签名无效。http://docs.nwjs.io/en/latest/For%20Users/Advanced/Support%20for%20Mac%20App%20Store/ - Arti
我按照教程做了所有的配置,多次检查过了。 - Arti
你尝试使用 --pkg 参数了吗? - l'L'l
是的,我已经上传了 myapp.pkg 文件到模板加载器。但是有几个用户报告了相同的问题:( - Arti
我唯一注意到的是关于“安装程序包包含仅可由root用户读取的文件”的错误,因此您可以检查项目中的文件权限,并尝试更改设置为root用户的任何内容以便其他人可以读取。 - l'L'l
2个回答

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"

0

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

因此,您需要执行以下步骤来签署您的应用程序:

在运行mas.py脚本之前修复未释放的内容:

# 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 团队能够解决这个问题。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接