1

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

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

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

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

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

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

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

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

4

1 回答 1

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 基类)。然后将类文件添加到“Installer->Custom Code & Resources”,并通过“[Add button]->Custom Code->Search Action in Custom Code”在“Installer->Screens & Actions”上添加动作。

于 2013-05-13T08:15:34.180 回答