我可以将filespec传递给删除文件和目录操作中的错误消息吗?

时间:2013-05-10 17:35:24

标签: install4j

在install4j Delete files and directories操作中,如果删除文件文件,则可以定义向用户显示的错误消息。这对我来说很好,只要消息没有任何参数。

我想知道的是......如果此特定操作失败(即,由于某些异常原因无法删除文件),是否可以将filespec作为参数传递给错误消息?例如,我的错误消息是一个定义为的资源字符串:

"An attempt to delete a critical file has failed {0}"

当我将此资源消息插入操作的“错误消息”属性时,它看起来像这样:

${ i18n:DeleteCriticalFileFailed( "arg 0" ) }

但我不知道如何将问题文件的filespec作为参数传递给此消息。我查看了install4j帮助文档,特别是此操作的帮助主题,我找不到有关如何实现此目的的任何详细信息。

也许无法做到?但在这种情况下,我正在处理必须删除的文件,以确保在生成(更新)安装中的操作正确性。所以我希望这里有一个解决方案。对我来说,一个选择是使用脚本解决这个问题,但一般来说我更喜欢使用install4j提供的内置操作。

提前感谢您提供的任何帮助或见解。

1 个答案:

答案 0 :(得分:0)

操作上的错误消息工具是通用的。每个操作都有这样的错误消息属性,错误消息不会采用特定于特定操作的参数。

您可以覆盖标准的“删除文件和目录”操作,如下所示:

public class MyDeleteAction extends DeleteFileAction {
    protected boolean executeForSingleRecursiveFile(Context context, File file, File relativeSourceFile, ProgressAdapter progressAdapter) throws UserCanceledException, IOException {
        boolean success = super.executeForSingleRecursiveFile(context, file, relativeSourceFile, progressAdapter);
        if (!success) {
            Util.showErrorMessage("Could not delete " + file.getPath());
        }
        return success;
    }
}

您还需要在同一个包中使用Beaninfo类:

public class MyDeleteActionBeanInfo extends DeleteFileActionBeanInfo {

}

要编译,您将需要资源\ i4jruntime.jar以及类路径上的bin \ install4j.jar(后者用于bean信息基类)。然后将类文件添加到“Installer-> Custom Code& Resources”,并通过“[Add button] - > Custom Code-> Custom Search中的”Installer-> Screens& Actions“添加操作代码”。