在InstallAnywhere 2011中创建空目录/文件夹

时间:2013-09-10 10:24:13

标签: installer installshield installanywhere

我有一个脚本,它汇集了许多要安装的文件。这包括许多空目录。

以前我会在清单文件中使用D标志来复制空目录。但是由于我生成清单文件的方式(作为构建过程的一部分),我有时会得到两个具有相同目标文件夹的D条目。 e.g:

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指向的目录,并用目录中每个文件的F条目替换D条目。

不幸的是,这不包括空目录(我们可能/可能不需要在安装程序中,但一般来说创建它们比让某些代码失败因为它们不在那里更安全)。

我在清单中尝试了以下内容。 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's forums,但我会尽力保持答案的同步并传播知识。

2 个答案:

答案 0 :(得分:1)

我不能说出你明显的挑战。但是,我的第一个想法是将清单生成器更改为对重复输出位置敏感 - 可能通过将它们存储在MapSet中 - 然后通过使构建失败来处理冲突或调整输出位置。

另一方面,我可以告诉您如何增加安装程序的详细程度。

通过添加以下内容使安装程序更加详细:

-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)。然后在Send stderr to:Send stdout to:中输入 console 一词。您也可以设置特定的文件名,而不是控制台。您还需要在发货前撤消这些设置。

答案 1 :(得分:0)

解决方案结果非常简单,我从未尝试过。

要通过Install Anywhere安装EMPTY目录,您必须将目录指定为清单中的文件。所以使用以下目录结构:

  • 参考< empty>
  • 定2
    • testdir< empty>
  • Reference3< empty>
  • 参考4< empty>

您需要将清单中的条目指定为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

很抱歉回答我自己的问题,真的不是计划!