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

Install4j 我可以在删除文件和目录操作中将filespec传递给错误消息吗?,install4j,Install4j,在install4j删除文件和目录操作中,如果删除文件,可以定义向用户显示的错误消息。这对我来说很好,只要消息没有任何参数 我想知道的是。。。如果此特定操作失败(即,由于某些异常原因无法删除文件),是否可以将filespec作为参数传递给错误消息?例如,我的错误消息是一个资源字符串,定义为: "An attempt to delete a critical file has failed {0}" 当我将此资源消息插入操作的“Error message”属性时,它如下所示: ${ i18n:D

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

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

"An attempt to delete a critical file has failed {0}"
当我将此资源消息插入操作的“Error message”属性时,它如下所示:

${ i18n:DeleteCriticalFileFailed( "arg 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;
    }
}
但我不知道如何将问题文件的filespec作为参数传递到此消息。我查阅了install4j帮助文档,特别是此操作的帮助主题,但找不到有关如何完成此操作的任何详细信息

也许这是不可能的?但在本例中,我处理的是一个必须删除的文件,以确保最终(更新)安装中的操作正确性。所以我希望这里有个解决办法。我的一个选择是使用脚本解决这个问题,但一般来说,我更喜欢使用install4j提供的内置操作


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

有关操作的错误消息功能是通用的。每个操作都有这样的错误消息属性,并且错误消息不采用特定于特定操作的参数

您可以像这样覆盖标准的“删除文件和目录”操作:

${ i18n:DeleteCriticalFileFailed( "arg 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 {

}

要编译,您需要类路径上的resources\i4jruntime.jar以及bin\install4j.jar(bean info基类的后者)。然后将类文件添加到“安装程序->自定义代码和资源”,并通过“[添加按钮]->自定义代码->自定义代码中的搜索操作”在“安装程序->屏幕和操作”上添加操作。

谢谢。这不仅回答了我的问题,而且我非常感谢关于如何实现我自己的删除文件操作以实现我所寻找的行为的细节。