Создание пустых каталогов/папок в InstallAnywhere 2011

У меня есть скрипт, который собрал несколько файлов для установки. Это включает в себя ряд пустых каталогов.

Раньше я использовал флаг D в файле манифеста, который копировал пустые каталоги. Однако из-за того, как я генерирую файлы манифеста (как часть нашего процесса сборки), я иногда могу получить две записи D с одной и той же папкой назначения. например:

D;${A_LIB}/all/pysys/${PYSYS_VERSION}/lib/python2.7/site-packages;./third_party/python/lib/python2.7/site-packages;COMMON;${UNIX}
D;${A_LIB_BT}/python/${PYTHON_VERSION};./third_party/python;COMMON;${ALL}

Это приводит к тому, что InstallAnywhere не может создать установщик.

Чтобы обойти это, я переписал код генерации манифеста, чтобы проанализировать каталоги, на которые ранее указывал D, и заменить запись D записью F для каждого файла в каталоге.

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

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

D,$IA_PROJECT_DIR$/samples/pysys/cor_002/Reference,./samples/pysys/cor_002/Reference
D,$IA_PROJECT_DIR$/samples/pysys/cor_002/Reference2,./samples/pysys/cor_002/Reference2
D,$IA_PROJECT_DIR$/samples/pysys/cor_002/Reference3/.,./samples/pysys/cor_002/Reference3/.
D,$IA_PROJECT_DIR$/samples/pysys/cor_002/Reference4/../Reference4,./samples/pysys/cor_002/Reference4/../Reference4

Я также пытался увеличить уровень журнала, но это ничего не выявило. Есть ли способ увеличить этот уровень журнала?

export LAX_DEBUG=true

Какие-либо предложения?

ОТКАЗ ОТ ОТВЕТСТВЕННОСТИ: я разместил это в форумы InstallAnywhere, но я сделаю все возможное, чтобы синхронизировать ответы и распространять знания.


person jmc    schedule 10.09.2013    source источник


Ответы (2)


Я не могу говорить о ваших явных проблемах. Тем не менее, моя первая мысль состоит в том, чтобы изменить генератор манифестов, чтобы он был чувствителен к повторяющимся выходным местоположениям — возможно, сохраняя их в Map или Set — и затем обрабатывая коллизии, когда они происходят, путем сбоя сборки или корректировки выходных местоположений. .

С другой стороны, я могу рассказать вам, как повысить уровень детализации вашего установщика.

Сделайте установщик более подробным, добавив:

-Dlax.debug.all=true -Dlax.debug.level=3

до Project > JVM Settings > Installer Settings (tab) > Optional Installer Arguments > Additional Arguments. Вы захотите удалить их перед отправкой. Вы также можете добавить их в командную строку при запуске программы установки. Значения уровня 4 и 5 тоже работают и даже более подробные.

Вы также можете заставить свой установщик печатать свой прогресс на консоли, перейдя в Project > JVM Settings > Log Settings. Здесь снимите флажок Include debug output (stderr and stdout). Затем введите слово console в Send stderr to: и Send stdout to:. Вместо консоли вы также можете установить конкретное имя файла. Вы также можете отменить эти настройки перед отправкой.

person tdfunk    schedule 20.09.2013
comment
спасибо @tdfunk. Я думаю, что ответ на самом деле - нет, вы не можете, в IA куча недостающих функций. После публикации этого вопроса я обнаружил, что он не учитывает права доступа к файлам Unix и сглаживает символические ссылки, а это означает, что функция копирования каталога практически бесполезна. - person jmc; 16.10.2013

Решение оказалось настолько ослепляюще простым, что я так и не попробовал его.

Чтобы получить ПУСТЫЕ каталоги, установленные с помощью Install Anywhere, вы должны указать каталоги как файлы в манифесте. Итак, со следующей структурой каталогов:

  • Ссылка ‹пусто›
  • Reference2
    • testdir <empty>
  • Ссылка3 ‹пусто›
  • Ссылка4 ‹пусто›

Вам нужно указать записи в манифесте как F. Указание тогда как D приведет только к включению каталога «Reference2».

F,$IA_PROJECT_DIR$/samples/pysys/cor_002/Reference,./samples/pysys/cor_002/Reference
F,$IA_PROJECT_DIR$/samples/pysys/cor_002/Reference2,./samples/pysys/cor_002/Reference2
F,$IA_PROJECT_DIR$/samples/pysys/cor_002/Reference3/.,./samples/pysys/cor_002/Reference3/.
F,$IA_PROJECT_DIR$/samples/pysys/cor_002/Reference4/../Reference4,./samples/pysys/cor_002/Reference4/../Reference4

Извините, что отвечаю на мой собственный вопрос, на самом деле это не было планом!

person jmc    schedule 17.01.2014