Install4j - 操作“删除文件和目录”将安装目录添加到数组值前面

时间:2018-01-16 19:11:40

标签: java install4j

我在Install4j中编写了一个项目,需要卸载程序中的一些特殊代码才能允许部分卸载。

我在卸载部分有一个Delete files and directories操作,其中一个布尔值用作触发它的标志或典型的完全卸载操作。所有这一切似乎都运转正常。

我遇到的问题是我传递给删除文件和目录操作的变量($ {installer:uninstallDirs})。我试图将此变量设置为String Array或未定义的变量类型。使用其中任何一个设置,我都试图将完整的字符串路径传递给目录,文件对象和相对字符串路径。

在操作执行期间,调试输出将显示以下内容。

[INFO] com.install4j.runtime.beans.screens.UninstallationScreen [ID 27]: Show screen [INFO]
com.install4j.runtime.beans.actions.files.DeleteFileAction [ID 1495]:
Execute action
       Property directoryFilter: null
       Property fileFilter: null
       Property files: [[suppressed]]
       Property filesRoot: null
       Property backupForRollback: true
       Property recursive: true
       Property rollbackSupported: true
       Property showFileNames: true
       Property showProgress: false
       The file "C:\InstallDir\[C:\InstallDir\Server, C:\InstallDir\Client, C:\InstallDir\Network]" does not exist
       Execute action successful after 14 ms

所以它似乎失败了,因为它会将Install Directory放入数组之前的值,尽管传递的对象是一个数组。我在前一节输出了数组的值,可以确认数组是否正确构建。

我怀疑这与“保存项目文件时使所有路径相对”设置有关,但我不想只是在它工作之前就开始更改项目设置。

我将非常感谢您尝试执行的任何建议或测试。

See a screenshot of the action setup here

1 个答案:

答案 0 :(得分:0)

如果安装程序变量中存在集合值,则会发生这种情况。从install4j 7.x开始,集合属性的变量替换仅将具有数组值的安装程序变量扩展为单独的条目。集合值将替换为其toString()值,而不是单独添加所有集合项。

在install4j 8中,也支持集合值。