我在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放入数组之前的值,尽管传递的对象是一个数组。我在前一节输出了数组的值,可以确认数组是否正确构建。
我怀疑这与“保存项目文件时使所有路径相对”设置有关,但我不想只是在它工作之前就开始更改项目设置。
我将非常感谢您尝试执行的任何建议或测试。
答案 0 :(得分:0)
如果安装程序变量中存在集合值,则会发生这种情况。从install4j 7.x开始,集合属性的变量替换仅将具有数组值的安装程序变量扩展为单独的条目。集合值将替换为其toString()
值,而不是单独添加所有集合项。
在install4j 8中,也支持集合值。