在 objective c 应用程序中包含另一个 .app

Inlcuding another .app in an objective c application

情况是这样的。我使用 nw.js 创建了一个应用程序,这很棒,因为我喜欢使用 html、css 和 javascript。但是现在我想出售这个应用程序。我想做的是在 objective-c 中制作一个小型包装应用程序,它将验证用户序列号并提供一定程度的复制保护。在我看来,我想象有一个应用程序将在 objective-c 中。这将启动并验证用户,然后如果用户是合法的,它会将一些基本文件解压缩到 nw.js 包中并启动该应用程序。

现在 nw.js 可执行文件已经在一个应用程序包中,我想做的是将该包嵌套在 objective-c 中,然后 运行 它在适当的位置时间。谁能告诉我这是否可行,如果不行,我还能如何解决这个问题来保护我的应用程序。

感谢您的帮助。

不,您不能在 Objective C 应用程序中包含另一个 .app!
必须从头开始创建原生的。

实际上我会推荐另一种方法。如果你想有一定程度的复制保护,你应该使用 nwjc 将部分代码编译为二进制文件。我会解释给你听的。

  1. 构造您的应用程序,使应用程序的某些部分可以使用 nwjc 进行保护。你不需要保护一切。只是难以复制的部分。请记住,使用该代码会导致 30% 的性能损失。通常这是无法识别的,但如果您有大量代码,则可能是这样。

  2. 精简代码。我使用 yui 压缩器。它从您的代码中删除所有注释并将其缩小。这样,其他人将很难甚至不可能阅读您的代码。它还可以提高代码的性能。

您可以在 objective-c 项目中添加一个应用程序作为目标(我在 swift 项目中这样做)并进行安装。但请记住。一旦您的应用程序将代码加载到 nwjs 应用程序中,代码签名就会被破坏,另一个人可以再次阅读该代码。只要 nwjs 运行,您就无法完全保护代码。因此,您必须使用 nwjc 并缩小您的 js。您还可以丑化您的 js 以使其更加不可读。

您必须问自己的另一个问题。我的代码真的那么特别以至于没有人可以复制它吗?如果有人想从你那里偷东西,那主要是创新。他们将制作自己的框架并编写自己的代码。优秀的编码人员可以复制任何代码,无论它是否受到保护。他们只是分析输入和输出。所以只要你没有任何疯狂的数学算法,我怀疑如果有人可以复制它,他们会想要窃取它。即使您有复杂的代码。用 nwjc、minifying 和 uglyfing 保护部分将使其无法阅读。有时我们在阅读自己的代码时遇到问题 ;)

这没有问题,以这种方式嵌套应用程序在 OS X 上很常见(因为你说“.app”我假设这是 OS X,而不是 iOS。这在 iOS) 上是不可能的。我怀疑它作为一种复制保护机制是否会特别有效,但这完全是 different question(请参阅有关此主题的多个讨论的链接)。

对于 "what would be highly effective?" 的问题,不幸的是答案是 "if you have to ask on Stack Overflow, then nothing you do is likely to be highly effective; do something simple and move on." 这并不意味着你是一个糟糕的程序员或其他任何东西;只是复制保护是一种混淆游戏,如果您使用的是在 Stack Overflow 上找到的东西,它们可能不会那么混淆。您在一个多星期内想到的任何东西可能都没有那么混乱。而且,如果您确实想出了一些非常好的东西,您仍然需要在每次出现问题时定期更新它。 Apple 有一个专门的团队,他们控制着系统的每个部分,包括硬件,还有越狱。

同样,这并不意味着您无能为力。也许你可以阻止一些人,特别是如果你的应用程序不是那么有趣。但是不要在上面浪费太多时间,因为它不会那么有效。 (如果这对你的商业计划真的很重要,你应该研究商业解决方案。我在那里没有建议,但预计会花一些钱,并在它们被击败时更新到新版本。)

也就是说,嵌套应用并不难。

使 "sub-app" 成为目标的依赖项。

为您的构建添加一个新的 "Copy Files" 阶段:

将目的地设置为 "Executables" 并将应用程序包拖到此处:

当您要启动它时,只需使用 NSBundle.pathForResource:... 找到它,然后使用 NSTask 启动它。