【发布时间】:2014-11-27 11:04:02
【问题描述】:
从 Finder 和 Xcode 运行 OSX App 的区别???
系统是运行 Mavericks OSX 10.9.5 和最新 Xcode 6.0.1 的 iMac 27 英寸一体机
App读取一个二进制文件并写入两个文本文件,可能会重写二进制文件,并绘制一个 窗口客户区。
App 完全在 Xcode 中运行。应用程序、二进制文件和两个文本文件位于 ~/Debug 或 ~/Release 目录中。 写入文件没有问题。文件 i/o 代码就是这样做的……
std::fstream out( binary_file, std::ios::in|std::ios::binary);
if ( out )
out.read(buffer, MaxBuffer);
out.close();
ofstream info(“info_file.txt”);
if ( info.is_open() )
info << text;
info.close();
system("chmod 777 info_file.txt"); //tried this, doesn’t help
ofstream clout(“clout_file.txt”);
if ( clout.is_open() )
clout << text;
clout.close();
system("chmod 777 clout_file.txt"); //tried this, doesn’t help
从 Finder 运行(双击)时,应用程序无法写入文件。无论应用程序和文件位于何处……
/Users/myname/Applications/Appname
/Users/myname/Library/Application Support/Appname
其他
我应该说该应用是在 Xcode 中构建的存档/发布并放置在目标目录中 查找器情况。这是正确的方法吗?这是我的第一个 OSX 应用程序,但我一直在为 几十年。
Finder 情况的权限是
App: myname Read & Write, staff Read only, everyone 只读 二进制文件:myname Read & Write、staff Read & Write、Everyone Read & Write 文本文件:myname Read & Write、staff Read & Write、Everyone Read & Write
我还检查了 Unix 终端目录树中的所有权限。 /用户/我的名字/…
Xcode 与 Finder,有什么区别?关于……
用户名(别名)
组名(员工、根、管理员)
启动时的工作目录
应用程序和文件的权限(读取、写入、执行)
应用和文件的位置
文件写入的 /tmp 位置会起作用吗?
哪里是放置应用程序和文件的最佳位置?
App 工作目录由 App 更改为 App 和文件所在的位置。 Xcode -> 产品 -> 方案 -> 编辑方案 -> 选项 -> 工作目录设置为相同位置。 这无助于 Finder 运行情况。
此应用程序的 MS Windows 版本运行良好。 我已经为 iMac OSX 环境移植、重写了它,它在 Xcode 中运行良好。 Finder案例有什么问题?为什么输出模式打不开文件?
我正在考虑用 Objective-C 风格重写文件 i/o,但这会很痛苦,不应该 必要的。 CString 与 NSString 对我来说是一个很大的痛苦。我不得不使用 .mm 和 Objective- c++ 源代码类型可以做到这一点。
欢迎提出想法并表示感谢。
【问题讨论】:
-
您应该在启动时将工作目录设置为合理的位置,而不是依赖于工作目录在启动时发生的任何内容(通常从 Finder 启动时为
/)。要么使用完整路径,要么使用文件的完整路径。 -
应用工作目录被应用更改为应用和文件所在的位置。
-
您的意思是您在启动时致电
chdir或类似名称?哦不 - 我看到你在谈论 Xcode 中的方案 - 这仅适用于从 Xcode 运行时 - 它不会影响从命令行或 Finder 运行时发生的情况。 -
完整路径名解决所有问题。尝试了多个目录。好的。太棒了。