Install4j - Action "Delete files and directories" 在数组值前面附加安装目录

Install4j - Action "Delete files and directories" appends installation directory in front of array values

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

我在卸载部分有一个 Delete files and directories 操作,其中有一个布尔值作为触发它的标志或典型的完全卸载操作。所有这些似乎都运行良好。

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

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

[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

所以它似乎失败了,因为它会将安装目录放入数组之前的值中,尽管传递的对象是一个数组。我已经在上一节中输出了数组的值,并且可以确认正在正确构建数组。

我怀疑这与 "Make all paths relative when saving the project file" 设置有关,但我不想在它起作用之前就开始更改项目设置。

我将不胜感激任何我可能尝试执行的建议或测试。

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

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