С этим проблем нет, и такое вложение приложений довольно распространено в OS X (поскольку вы говорите «.app», я предполагаю, что это OS X, а не iOS. Это невозможно на iOS). Я сомневаюсь, что он будет особенно эффективен в качестве механизма защиты от копирования, но это полностью другой вопрос (см. ссылки на несколько дискуссий по этой теме).
На вопрос «что было бы высокоэффективным?» к сожалению, ответ таков: «Если вам нужно спросить о переполнении стека, то ничто из того, что вы делаете, вряд ли будет высокоэффективным; сделайте что-нибудь простое и двигайтесь дальше». Это не значит, что вы плохой программист или что-то в этом роде; просто защита от копирования — это игра в запутывание, и если вы используете вещи, которые вы нашли на Stack Overflow, они, вероятно, не настолько запутаны. Все, что вы придумали за неделю, вероятно, не так уж запутано. И если вы придумаете что-то действительно хорошее, вам все равно придется регулярно обновлять его каждый раз, когда оно выходит из строя. У Apple есть целая команда, занимающаяся этим, и они контролируют каждую часть системы, включая аппаратное обеспечение, и до сих пор существуют джейлбрейки.
Опять же, это не значит, что вы ничего не можете сделать. Возможно, вы можете остановить нескольких человек, особенно если ваше приложение не очень интересное. Но не тратьте на это слишком много времени, потому что это не будет так эффективно. (Если это действительно важно для вашего бизнес-плана, вам следует изучить коммерческие решения. У меня нет рекомендаций, но я готов потратить немного денег и обновляться до новых версий по мере их неудачи.)
Тем не менее, вложение приложений не сложно.
Сделайте «подприложение» зависимостью вашей цели.
Добавьте в сборку новую фазу «Копировать файлы»:
![введите здесь описание изображения](https://i.stack.imgur.com/K4pyu.png)
Установите пункт назначения «Исполняемые файлы» и перетащите пакет приложений сюда:
![введите здесь описание изображения](https://i.stack.imgur.com/Glulk.png)
Когда вам нужно запустить его, просто найдите его с помощью NSBundle.pathForResource:...
, а затем запустите с помощью NSTask
.
person
Rob Napier
schedule
06.03.2017