代码之家  ›  专栏  ›  技术社区  ›  Erik Birch

Install4j-操作“删除文件和目录”将安装目录附加在数组值之前

  •  2
  • Erik Birch  · 技术社区  · 6 年前

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

    我有一个 Delete files and directories

    我遇到的问题是传递给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
    

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

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

    如有任何建议或测试,我将不胜感激。

    See a screenshot of the action setup here

    1 回复  |  直到 6 年前
        1
  •  0
  •   Ingo Kegel    6 年前

    如果installer变量中存在集合值,则可能发生这种情况。自安装4J 7起。x、 集合属性的变量替换仅将具有数组值的安装程序变量扩展为单独的条目。集合值将替换为其 toString() 值,而不是单独添加所有集合项。

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