Mac App Sandbox的问题.

我的程序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:27
NoNo,在沙箱下,考出去你更加无法执行了.... 
拷贝出去后,哪怕在命令行下,用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:04
cocoachina的高手都去哪里了

yuriwang2012-10-15 09:11
这个问题应该很常见吧.哪位遇到过的,能分享一下吗?

yuriwang2012-10-15 15:09
怎么还没有高人愿意指点一下啊

yuriwang2012-10-16 10:54
cocoachina以前不是这样的...

konglongdan2012-10-18 09:19
果断XPC吧*****;*****;*****;*****;我以前也是你那样做的*****;*****; 经过各种尝试,最后还是放弃了,用的xpc*****;*****;完美通过app store 并且也达到我的要求了。

yuriwang2012-10-19 17:19
但是我没有源码啊.我只有一个人家的命令行工具啊,能XPC吗? 
另外我看了一些mac store上的应用,里面也是包含的命令行工具,而不是XPC app

konglongdan2012-10-23 09:33
cmd 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也是不行
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值