安装时应用程序无法正常运行
Posted
技术标签:
【中文标题】安装时应用程序无法正常运行【英文标题】:Application does not operate correctly when installed 【发布时间】:2011-09-17 17:32:53 【问题描述】:我的 Mac OS X 应用程序有一个奇怪的问题。我有一个在辅助线程中运行的进程。该过程在 for 循环中以用户指定的次数重复某个操作。
在 for 循环的每次迭代中,都有一个使用字符串文件的内容进行初始化的字符串。如果字符串文件的内容等于"YES"
,则循环中断(文件默认设置为"NO"
)。当用户想要停止循环时,他们点击“停止”按钮,将文件内容设置为"YES"
。
当我在 Xcode 中运行应用程序并将应用程序导出为 .app 时,这实际上非常有用。当我实际将应用程序转换为 pkg 并安装它时,就会出现问题。停止功能不再正确运行。我很困惑问题是什么。我正在使用 [NSBundle mainBundle]
初始化对我的文件的所有引用,所以我应该在我的应用程序包中引用该文件。
编辑:我实际上决定切换到检查循环中的原子 BOOL 值,当按下停止按钮时我会更改该值。这对我来说似乎是一个更简单的解决方案。
【问题讨论】:
【参考方案1】:出于非常好的安全原因,普通用户无权修改 /Application 文件夹中安装的应用程序。此外,如果您的签名代码无效,则无法修改已签名的应用程序(即通过 App Store 销售的任何应用程序)。
永远、永远、永远依赖于可修改的应用程序包。它永远不应该是。 总是 use standard user data folders 喜欢“~/Library/Application Support/”或“~/Library/Caches/”,用于与应用程序相关的非文档文件。
就您的一般方法而言,重复轮询文件 - 尤其是在紧密循环中 - 是磁盘活动的很多。 “Laptop Killah”将是该应用程序的好名字。 :-) 您应该考虑完全改变这种方法。如果您在另一个问题(您在做什么以及为什么)中提供更多详细信息并寻求建议,我几乎肯定会有许多更好的方法不会像破解一样咀嚼用户的电池电量-杂货店里发疯的老鼠。
另外,我猜你永远不会检查你的文件是否写入成功。标准的 -writeToURL/File:... 方法返回一个 BOOL 来表示成功或失败,并设置一个 NSError(如果您将指针传递给一个)以及更多详细信息。养成不忽略这一点的习惯。在这种情况下,您可能已经找到了自己的答案,因为您已经知道代码在哪里被破坏了。从那里开始,找出原因并不是一个巨大的飞跃。
【讨论】:
很好的答案。非常感谢!以上是关于安装时应用程序无法正常运行的主要内容,如果未能解决你的问题,请参考以下文章
win10不能运行应用程序vc6.0!无法正常启动0xc0000142怎么解决?
运行visual c++6.0 时,出现 "应用程序无法正常启动(0xc00001420xc0000142"。
本地安装的2个django应用程序在同一浏览器上无法正常工作,面临登录/注销问题