0

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

以前我会在清单文件中使用 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 的论坛,但我会尽力保持答案同步并传播知识。

4

2 回答 2

1

我无法谈论你明显的挑战。但是,我的第一个想法是将清单生成器更改为对重复的输出位置敏感——可能通过将它们存储在一个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:

于 2013-09-20T02:59:15.950 回答
1

解决方案非常简单,以至于我从未尝试过。

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

  • 参考 <空>
  • 参考文献2
    • 测试目录 <空>
  • 参考 3 <空>
  • 参考文献4 <空>

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

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

于 2014-01-17T15:06:06.670 回答