Mac App Sandbox的问题.
来源:互联网 发布:9wifi九维网络登入不了 编辑:程序博客网 时间:2024/04/30 07:27
我的程序Test.app里面包含一个命令行工具HelloWorld.如果只是Test.app打开sandbox,那么从Test.app调用HelloWorld是没有任何问题的.但是如果这样上传的话,MacStore会reject,理由是我的HelloWorld不是sandbox enable.但是如果我吧HelloWorld改成sandbox enable之后, Test.app就无法调用HelloWorld了.
yuriwang2012-10-12 12:13人工置顶.顶到有大大们慷慨相助为止
朱东勇2012-10-12 12:37楼主可以把调用HelloWorld程序的代码,以及把sandbox的设置页面截屏看下么
yuriwang2012-10-12 13:16代码已经上传,工程默认使用的是Sandbox签名后的HelloWorld.
无法正确执行.
文件夹里面还有个HelloWorld-UnSandbox的,可以正常执行.
zplay_mfly2012-10-12 13:31
yuriwang2012-10-12 13:46着急啊.....没有源码,用XPC也不行啊
朱东勇2012-10-12 14:09应该是沙盒模式数据访问限制的问题,execl(szExe, szExe, tmpName, (char *)0) 这个方法里面传的参数依然是app 包里面的数据,而这里面的数据,是只能是程序内部去访问的,所以楼主要增加以下操作 :1.把HelloWorld可执行程序及相关文件保存到应用程序用户目录(如 NSTemporaryDirectory());2.将执行的目前改为用户目录下面的文件,应该就可以解决
yuriwang2012-10-12 14:27NoNo,在沙箱下,考出去你更加无法执行了....
拷贝出去后,哪怕在命令行下,用sudo 都无法执行.
DEMO我都放出来了.给出答案前你可以自己试一下...
yuriwang2012-10-12 16:14继续自己顶自己吧~!
朱东勇2012-10-12 16:52可以把不加沙盒,执行的正确结果给我看下么?我这边去掉沙盒一样是只看到打印出个 100,没有其它现象
yuriwang2012-10-12 17:10去掉沙盒的,会打印Hello World,主程序打印出来的是101
你将demo里面的helloWorld-UnSandbox 改名成HelloWorld就可以了.
朱东勇2012-10-12 17:47[[NSWorkspace sharedWorkspace] openFile:exePath withApplication:@"/Applications/Utilities/Terminal.app"];
这个方法可以解决你所讲的问题,我有测试过了
朱东勇2012-10-12 18:00上面那个方法会打开 终端程序,还可以用 以下这种方法实现
*****;*****;*****;*****;[NSTask launchedTaskWithLaunchPath:exePath arguments:[NSArray arrayWithObjects:exePath, exePath, @"/application", nil]];
*****;*****;*****;*****;
不过要当接到*****;*****;NSTaskDidTerminateNotification 这个通知后,结果才会被改为 101
yuriwang2012-10-13 11:03谢谢.我试一下.
yuriwang2012-10-13 11:17兄弟,你确定使用的是sandbox吗?
这个方法我早试过了,不行.
CallCommandLine[1151:303] launch path not accessible
兄弟你可以查一下那个HelloWorld是否是sandbox的.
yuriwang2012-10-14 13:17周末不休息~~
yuriwang2012-10-14 17:04cocoachina的高手都去哪里了
yuriwang2012-10-15 09:11这个问题应该很常见吧.哪位遇到过的,能分享一下吗?
yuriwang2012-10-15 15:09怎么还没有高人愿意指点一下啊
yuriwang2012-10-16 10:54cocoachina以前不是这样的...
konglongdan2012-10-18 09:19果断XPC吧*****;*****;*****;*****;我以前也是你那样做的*****;*****; 经过各种尝试,最后还是放弃了,用的xpc*****;*****;完美通过app store 并且也达到我的要求了。
yuriwang2012-10-19 17:19但是我没有源码啊.我只有一个人家的命令行工具啊,能XPC吗?
另外我看了一些mac store上的应用,里面也是包含的命令行工具,而不是XPC app
konglongdan2012-10-23 09:33cmd tool 也可以sandbox的(我确认)。
但是我不知道你是怎么搞的。
友情提升下,二进制程序的签名和sandbox 都是用codesign 完成的。
ps:以前我是自己写的,有源码,所以用xpc 非常方便。
yuriwang2012-10-31 10:43我正是将cmd tool用codesign签名为sandbox之后,在程序里就不能使用了.但是不签名的话,会被苹果reject.
这种情况怎么办?
konglongdan2012-11-05 09:56
你的那个entitlements 的plist 文件的key 要弄对。
yuriwang2012-11-09 08:51我是加了enableSandbox啊。
我用的entitlements*****;*****;文件,和我程序里使用的是一样的。
请问key错在什么地方?导致拉不起来,用fork不行,用NSTask也是不行
yuriwang2012-10-12 12:13人工置顶.顶到有大大们慷慨相助为止
朱东勇2012-10-12 12:37楼主可以把调用HelloWorld程序的代码,以及把sandbox的设置页面截屏看下么
yuriwang2012-10-12 13:16代码已经上传,工程默认使用的是Sandbox签名后的HelloWorld.
无法正确执行.
文件夹里面还有个HelloWorld-UnSandbox的,可以正常执行.
zplay_mfly2012-10-12 13:31
yuriwang2012-10-12 13:46着急啊.....没有源码,用XPC也不行啊
朱东勇2012-10-12 14:09应该是沙盒模式数据访问限制的问题,execl(szExe, szExe, tmpName, (char *)0) 这个方法里面传的参数依然是app 包里面的数据,而这里面的数据,是只能是程序内部去访问的,所以楼主要增加以下操作 :1.把HelloWorld可执行程序及相关文件保存到应用程序用户目录(如 NSTemporaryDirectory());2.将执行的目前改为用户目录下面的文件,应该就可以解决
yuriwang2012-10-12 14:27NoNo,在沙箱下,考出去你更加无法执行了....
拷贝出去后,哪怕在命令行下,用sudo 都无法执行.
DEMO我都放出来了.给出答案前你可以自己试一下...
yuriwang2012-10-12 16:14继续自己顶自己吧~!
朱东勇2012-10-12 16:52可以把不加沙盒,执行的正确结果给我看下么?我这边去掉沙盒一样是只看到打印出个 100,没有其它现象
yuriwang2012-10-12 17:10去掉沙盒的,会打印Hello World,主程序打印出来的是101
你将demo里面的helloWorld-UnSandbox 改名成HelloWorld就可以了.
朱东勇2012-10-12 17:47[[NSWorkspace sharedWorkspace] openFile:exePath withApplication:@"/Applications/Utilities/Terminal.app"];
这个方法可以解决你所讲的问题,我有测试过了
朱东勇2012-10-12 18:00上面那个方法会打开 终端程序,还可以用 以下这种方法实现
*****;*****;*****;*****;[NSTask launchedTaskWithLaunchPath:exePath arguments:[NSArray arrayWithObjects:exePath, exePath, @"/application", nil]];
*****;*****;*****;*****;
不过要当接到*****;*****;NSTaskDidTerminateNotification 这个通知后,结果才会被改为 101
yuriwang2012-10-13 11:03谢谢.我试一下.
yuriwang2012-10-13 11:17兄弟,你确定使用的是sandbox吗?
这个方法我早试过了,不行.
CallCommandLine[1151:303] launch path not accessible
兄弟你可以查一下那个HelloWorld是否是sandbox的.
yuriwang2012-10-14 13:17周末不休息~~
yuriwang2012-10-14 17:04cocoachina的高手都去哪里了
yuriwang2012-10-15 09:11这个问题应该很常见吧.哪位遇到过的,能分享一下吗?
yuriwang2012-10-15 15:09怎么还没有高人愿意指点一下啊
yuriwang2012-10-16 10:54cocoachina以前不是这样的...
konglongdan2012-10-18 09:19果断XPC吧*****;*****;*****;*****;我以前也是你那样做的*****;*****; 经过各种尝试,最后还是放弃了,用的xpc*****;*****;完美通过app store 并且也达到我的要求了。
yuriwang2012-10-19 17:19但是我没有源码啊.我只有一个人家的命令行工具啊,能XPC吗?
另外我看了一些mac store上的应用,里面也是包含的命令行工具,而不是XPC app
konglongdan2012-10-23 09:33cmd tool 也可以sandbox的(我确认)。
但是我不知道你是怎么搞的。
友情提升下,二进制程序的签名和sandbox 都是用codesign 完成的。
ps:以前我是自己写的,有源码,所以用xpc 非常方便。
yuriwang2012-10-31 10:43我正是将cmd tool用codesign签名为sandbox之后,在程序里就不能使用了.但是不签名的话,会被苹果reject.
这种情况怎么办?
konglongdan2012-11-05 09:56
引用引用第23楼yuriwang于2012-10-31 10:43发表的 回 22楼(konglongdan) 的帖子 :
我正是将cmd tool用codesign签名为sandbox之后,在程序里就不能使用了.但是不签名的话,会被苹果reject.
这种情况怎么办?
你的那个entitlements 的plist 文件的key 要弄对。
yuriwang2012-11-09 08:51我是加了enableSandbox啊。
我用的entitlements*****;*****;文件,和我程序里使用的是一样的。
请问key错在什么地方?导致拉不起来,用fork不行,用NSTask也是不行
- Mac App Sandbox的问题.
- 在sandbox下对Mac app 验证receipt时遇到的问题
- Mac OS app, sandbox with command line tool
- Mac OS app, sandbox with command line tool?
- Mac 10.10下的sandBox目录
- sandbox app入门
- Designing for App Sandbox
- 关于Lucene SandBox包的下载问题
- Mac OS X Lion 的 Sandbox 技术初探
- 关于App Sandbox in Depth自己的翻译
- How to Run a Shell Script with Mac App Sandbox Enabled?
- How to Run a Shell Script with Mac App Sandbox Enabled
- 如何解决Mac App Store无法更新应用的问题
- Mac App 的发布
- 在Sandbox中调用系统工具的问题
- Hortonworks HDP Sandbox 2.2 修复HBase无法启动的问题
- 一个诡异的问题:Mac上Charles只能抓浏览器,抓app包失败的问题
- Chromium的Sandbox机制
- Linux命令 -- ps
- 运营商Pos接口连接IP网与SDH网络
- DWORD
- MongoDB复制集简介(四)--复制集的写关注
- Deep learning with word2vec and gensim
- Mac App Sandbox的问题.
- 解决connection to server failed, probable Oracle Net admin error
- android上一些类型转换
- Java跨平台中的平台
- 如何在安卓虚拟机中安装本地的apk
- 0和1的故事
- cocos2dx功能框架概述
- 上网本ubuntu分辨率设置
- 今天彻底放弃了一段不可能有结果的爱情