Можете ли вы использовать команду PackageMaker для создания установщика из списка файлов? - PullRequest
3 голосов
/ 10 апреля 2010

Я хочу (периодически и автоматически) создавать установщик из различных файлов и папок, которые находятся во многих местах. Но я не могу понять, как предоставить команде packagemaker все пути к элементам, которые я хочу установить.

Это для внутренних целей разработки, а не для распространения среди клиентов. Я хочу, чтобы включенные файлы были настраиваемыми; на самом деле нельзя использовать GUI для добавления всех путей, потому что они часто меняются.

Лучшее, что я мог сделать, это использовать флаг --watch и touch все то, что я хотел включить в пакет. Это очень грязно и включает в себя другие файлы, к которым обращаются одновременно. Не существует единой схемы для того, что я хочу включить, поэтому я не могу просто --filter остальное.

В идеале, я бы просто дал ему файл, полный путей, и он собрал бы пакет. Если это не вариант, я не против генерировать XML или помещать их в командную строку или что-то еще будет работать. У меня, вероятно, в установщике ~ 30 файлов, которые я хочу, но это число, вероятно, будет расти.

Есть ли лучший способ сделать это? Я упускаю суть?

edit : подумал, что я могу скопировать все файлы, которые мне нужны в пакете, в каталог, а затем использовать флаг --root. Это лучший способ сделать это?

edit 2 : Есть ли способ сделать это с символическими ссылками, поэтому мне не нужно копировать файлы раньше?

1 Ответ

1 голос
/ 21 октября 2011

(Я не отмечаю этот ответ как принятый, потому что я действительно хотел бы иметь возможность создавать установщик из файлов в разных местах без необходимости копировать их в промежуточный каталог.)

По просьбе Петерта, вот как вы создаете установщик из файлов в каталоге. Обратите внимание, что это не совсем то, что я хотел, так как он добавляет все файлы в каталоге. (И я хотел включить только некоторые конкретные файлы.)

## create the fake root directory (which is also the name of the .pkg installer created)
## paths below this will be interpreted as absolute when the installer runs
mkdir -p MyInstaller

## create some fake stuff to install
install_to="MyInstaller/$HOME/installed_dir/"
mkdir -p "$install_to"
echo 'it worked!' > "$install_to/test.txt"

## actually create the installer
/Developer/usr/bin/packagemaker -i com.mycompany.myInstallerName --root MyInstaller

Обратите внимание, что вы должны предоставить идентификатор пакета с опцией -i (или предоставить plist.)

...