Пакет приложений OSX не запускается
У меня проблема с комплектом приложений Mac OSX. Если я хочу запустить свой пакет приложений, ничего не происходит (двойной щелчок myApp.app
).
Я могу запустить приложение, выполнив ./myApp.app/Contents/MacOS/myApp
без каких-либо проблем.
Структура каталогов:
myApp.app/
Contents/
Info.plist
PkgInfo
Resources/
Frameworks/
MacOS/
myApp
мой Info.plist
:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>CFBundleDevelopmentRegion</key>
<string>en</string>
<key>CFBundleExecutable</key>
<string>myApp</string>
<key>CFBundleIconFile</key>
<string>icon</string>
<key>CFBundleIdentifier</key>
<string>com.whatever.test</string>
<key>CFBundleInfoDictionaryVersion</key>
<string>6.0</string>
<key>CFBundleName</key>
<string>${PRODUCT_NAME}</string>
<key>CFBundlePackageType</key>
<string>APPL</string>
<key>CFBundleShortVersionString</key>
<string>1.0.0</string>
<key>CFBundleSignature</key>
<string>com.whatever.test</string>
<key>CFBundleVersion</key>
<string>1.0.0</string>
<key>LSMinimumSystemVersion</key>
<string>${MACOSX_DEPLOYMENT_TARGET}</string>
<key>NSHumanReadableCopyright</key>
<string>Copyright © 2014. All rights reserved.</string>
</dict>
</plist>
Редактировать:
Результат Console.app:
08.02.14 16:30:45,041 com.apple.launchd.peruser.501[1077]: (com.whatever.test.72544[20350]) Job failed to exec(3) for weird reason: 13
08.02.14 16:30:45,043 Finder[1094]: 8837325: Attempting to SIGCONT to pid #20350 failed, with errno=#3, or the process failed to actually start
08.02.14 16:30:45,046 Dock[1091]: no information back from LS about running process LSASN:{hi=0x0;lo=0x168168}
3 ответа
Это была проблема с рабочим каталогом. с помощью getcwd
при выполнении "myApp.app" дает /
Я исправил это, используя dir пакета вместо getcwd
:
#include <CoreFoundation/CoreFoundation.h>
std::string getBundleDir()
{
CFBundleRef mainBundle = CFBundleGetMainBundle();
CFURLRef resourcesURL = CFBundleCopyResourcesDirectoryURL(mainBundle);
char path[PATH_MAX];
if (!CFURLGetFileSystemRepresentation(resourcesURL, TRUE, (UInt8 *)path, PATH_MAX))
return "";
CFRelease(resourcesURL);
chdir(path);
return path;
}
Я не думаю, что ваш код подписан должным образом, если вы пропустили _CodeSignature
каталог. таким образом GateKeeper
возможно, блокирует выполнение кода.
У вас есть два варианта:
- Код подписать свой код.
- Control щелкните пакет приложений, а затем выберите
Open
- это обойдет проверку подписи кода.
Эта строка:
08.02.14 16:30:45,041 com.apple.launchd.peruser.501[1077]: (com.whatever.test.72544[20350]) Job failed to exec(3) for weird reason: 13
Заставляет меня думать, что у вас есть Permission Denied
Проблема, основанная на этой справочной странице:
https://developer.apple.com/library/mac/documentation/Darwin/Reference/ManPages/man2/intro.2.html