/Contents/Resources'da bulunan bir çalıştırmayı başlatan bir Mac OSX uygulamasına sahibim. Uygulama, App Store'da yayınlanmak üzere tasarlanmamıştır ve bu yüzden sanal alan açılmamış.NSTask - Sandboxing sorunları ile çalıştırılabilirlik başlatılıyor mu?
fırlatma kodu:
toolPath = [[[NSBundle mainBundle] pathForResource:@"myexecutable" ofType:@""] copy];
task = [[NSTask alloc] init];
[task setLaunchPath: toolPath];
pipe = [[NSPipe alloc] init];
[task setArguments:[NSArray arrayWithObjects:@"-someArg", someVariable, nil]];
file = [[NSFileHandle alloc] initWithFileDescriptor:[pipe fileHandleForReading].fileDescriptor];
[task setStandardOutput: stderrPipe];
[task launch];
şey - Xcode çalıştırırken bu her gayet iyi çalışıyor. Ayrıca, uygulamayı masaüstüne dışa aktarırken ve çalıştırırken de iyi çalışır.
Ancak, uygulamayı sıkıştırırsam, onu bir web sunucusuna yükleyin ve ardından aynı bilgisayara yükleyin (veya başka bir Mac'e bırakın), görev artık başlatılamıyor! Sistem konsolunda veya herhangi bir hatada hata yok.
Bu sorun hakkında biraz araştırma yaptım ve OSX'in yeni bir uygulamayı "karantinaya alınmış" özel izin hakkı olarak işaretleyeceğini öğrendim. Xcode benim uygulamayı dışa aktardıktan sonra yürütülebilir üzerinde
İzinler: Ben indirilen uygulaması ve ihraç app arasındaki farkı araştırıldı Bu noktada
-rwxr-xr-x 1 Username staff 65724 21 Jul 16:31 executableName
uygulama çalışıyor ve yürütülebilir bir fırlatılır app içinde düğme. Ben itmek neler olacağı bu nokta şey de
-rwxr-xr-x 1 Username staff 65724 21 Jul 16:31 executableName
com.apple.quarantine 26
:
Ve sunucusuna yüklenebilir uygulama, sıkıştırma sonra
, indirilen sıkıştırması, ve uygulamanın açılması ve kabul diyalog "Bu uygulama internet indirilen edildi" Uygulamamdaki düğme.-rwxr-xr-x 1 Username staff 65724 21 Jul 16:31 executableName
ama çalıştırılabilir hala başlatılmaktadır değil geçerli:
Sonra bütün uygulaması üzerinde xattr -rd com.apple.quarantine
çalıştırırsanız
ben artık masaüstü uygulamasında aşağıdaki izinlere sahip:
/İçerik/MacOS:
-rwxr-xr-x 1 Username staff 407728 21 Jul 16:31 appName
/İçerik/Kaynaklar:
-rwxr-xr-x 1 Username staff 65724 21 Jul 16:31 executableName
Ve indirilen üzerinde xattr -rd'yi kullandığım uygulama:
/İçindekiler/MacOS:
-rwxr-xr-x 1 Username staff 407728 21 Jul 16:31 appName
/İçerik/Kaynaklar:
-rwxr-xr-x 1 Username staff 65724 21 Jul 16:31 executableName
ilk uygulaması çalışıyor ve ikincisi yürütülebilir başlattı asla. Ne halt oluyor? Aynı bilgisayarda, aynı izinlerle aynı uygulama, ancak indirilen kişi çalışmıyor.
Bu sorun, farklı bilgisayarlardaki tüm OSX sürümlerinde görüntülenir.
thx !!!! Bu hiçbir çocuk işlemi –
yardımcı oldu, ana uygulama bu sorunun coz çöktü olsun – Swati
teşekkür ederim! NSTask kullanıyordum ve App Sandbox'ı ekledim = NO yetkisi beni kurtardı. – iOSDec