如何在卸载程序中使用安装程序变量?

时间:2015-06-08 13:15:40

标签: java install4j

这是我的用例,以便您可以理解我为什么需要卸载程序。 我必须修改在带有文件选择器的屏幕中选择的WAR文件的内容,先用数据库备份,然后修改数据库,然后再修改WAR。 WAR和数据库的修改就像魅力一样,备份也是如此,但是我需要给最终用户提供恢复以前的WAR和数据库的可能性,就像修改它们一样容易。

为此,我创建了一些将使用备份文件和安装程序运行时变量的操作,但是我在执行卸载程序时显示错误,说它无法加载主类。

我只是不使用任何启动器,因为实际上我并不是想安装任何软件,只是做一些文件操作。

所以我的问题是:

  1. 是否可以使用卸载来恢复备份文件?
  2. 是否可以在其他应用程序中使用安装程序变量?
  3. 修改

    在卸载程序中,我需要使用安装程序中的表单组件变量,以及我使用"设置变量"创建的其他变量。安装程序中的操作也是如此,我必须选中“注册到响应文件”复选框。
    然后在卸载程序的启动节点中,在"请求权限之后#34;动作,我添加"加载响应文件"行动,并留下"文件" textfield为空,因此可以加载 安装程序创建的默认响应文件 然后我在卸载程序的后续操作中调用这些变量  ${installer:variableName} 就像你说的那样,但是我得到一个错误的对话框,上面写着这个:

    enter image description here

    在生成的日志文件中使用此堆栈:

    Exception:
    
    com.install4j.api.beans.UndefinedVariableException: installer:zPath
        at com.install4j.runtime.installer.InstallerVariables$InstallerReplacementCallback.handleError(Unknown Source)
        at com.install4j.runtime.installer.InstallerVariables$InstallerReplacementCallback.getReplacement(Unknown Source)
        at com.install4j.runtime.util.StringUtil.replaceVariable(Unknown Source)
        at com.install4j.runtime.installer.InstallerVariables.replaceVariables(Unknown Source)
        at com.install4j.runtime.installer.InstallerVariables.replaceVariables(Unknown Source)
        at com.install4j.api.beans.AbstractBean.replaceVariables(Unknown Source)
        at com.install4j.runtime.beans.actions.files.AbstractFileAction.getFiles(Unknown Source)
        at com.install4j.runtime.beans.actions.files.AbstractFileAction.execute(Unknown Source)
        at com.install4j.runtime.beans.actions.SystemInstallOrUninstallAction.uninstall(Unknown Source)
        at com.install4j.runtime.installer.UninstallerContextImpl$2.fetchValue(Unknown Source)
        at com.install4j.runtime.installer.helper.comm.actions.FetchObjectAction.execute(Unknown Source)
        at com.install4j.runtime.installer.helper.comm.HelperCommunication.executeActionWrapper(Unknown Source)
        at com.install4j.runtime.installer.helper.comm.HelperCommunication.access$200(Unknown Source)
        at com.install4j.runtime.installer.helper.comm.HelperCommunication$1.run(Unknown Source)
    

    我为另一个变量得到另外两个错误对话框,这是它的堆栈:

    Exception:
    
    com.install4j.api.beans.UndefinedVariableException: installer:zLoc
        at com.install4j.runtime.installer.InstallerVariables$InstallerReplacementCallback.handleError(Unknown Source)
        at com.install4j.runtime.installer.InstallerVariables$InstallerReplacementCallback.getReplacement(Unknown Source)
        at com.install4j.runtime.util.StringUtil.replaceVariable(Unknown Source)
        at com.install4j.runtime.installer.InstallerVariables.replaceVariables(Unknown Source)
        at com.install4j.runtime.installer.InstallerVariables.replaceVariables(Unknown Source)
        at com.install4j.runtime.installer.InstallerVariables.replaceVariables(Unknown Source)
        at com.install4j.runtime.installer.InstallerVariables.replaceVariables(Unknown Source)
        at com.install4j.api.beans.AbstractBean.replaceVariables(Unknown Source)
        at com.install4j.runtime.beans.actions.misc.RunExecutableAction.getExecutable(Unknown Source)
        at com.install4j.runtime.beans.actions.misc.RunExecutableAction.execute(Unknown Source)
        at com.install4j.runtime.beans.actions.SystemInstallOrUninstallAction.uninstall(Unknown Source)
        at com.install4j.runtime.installer.UninstallerContextImpl$2.fetchValue(Unknown Source)
        at com.install4j.runtime.installer.helper.comm.actions.FetchObjectAction.execute(Unknown Source)
        at com.install4j.runtime.installer.helper.comm.HelperCommunication.executeActionWrapper(Unknown Source)
        at com.install4j.runtime.installer.helper.comm.HelperCommunication.access$200(Unknown Source)
        at com.install4j.runtime.installer.helper.comm.HelperCommunication$1.run(Unknown Source)
    
    Exception:
    
    com.install4j.api.beans.UndefinedVariableException: installer:zLoc
        at com.install4j.runtime.installer.InstallerVariables$InstallerReplacementCallback.handleError(Unknown Source)
        at com.install4j.runtime.installer.InstallerVariables$InstallerReplacementCallback.getReplacement(Unknown Source)
        at com.install4j.runtime.util.StringUtil.replaceVariable(Unknown Source)
        at com.install4j.runtime.installer.InstallerVariables.replaceVariables(Unknown Source)
        at com.install4j.runtime.installer.InstallerVariables.replaceVariables(Unknown Source)
        at com.install4j.api.beans.AbstractBean.replaceVariables(Unknown Source)
        at com.install4j.runtime.beans.actions.files.AbstractFileAction.getFiles(Unknown Source)
        at com.install4j.runtime.beans.actions.files.AbstractFileAction.execute(Unknown Source)
        at com.install4j.runtime.beans.actions.SystemInstallOrUninstallAction.uninstall(Unknown Source)
        at com.install4j.runtime.installer.UninstallerContextImpl$2.fetchValue(Unknown Source)
        at com.install4j.runtime.installer.helper.comm.actions.FetchObjectAction.execute(Unknown Source)
        at com.install4j.runtime.installer.helper.comm.HelperCommunication.executeActionWrapper(Unknown Source)
        at com.install4j.runtime.installer.helper.comm.HelperCommunication.access$200(Unknown Source)
        at com.install4j.runtime.installer.helper.comm.HelperCommunication$1.run(Unknown Source)
    

1 个答案:

答案 0 :(得分:3)

  

是否可以使用卸载来恢复备份文件?

上述评论已经解决了这个问题。

  

是否可以在其他应用程序中使用安装程序变量?

是,将“加载响应文件”操作添加到卸载程序的“启动”节点。变量必须是响应文件变量。绑定到表单组件的所有变量都会自动为响应文件注册。对于其他变量,在安装程序配置的“安装程序变量”选项卡上预定义安装程序变量时,会出现一个复选框。或者,您可以致电

context.registerResponseFileVariable(...);

在安装程序中的“运行脚本”操作中。

在卸载程序中,您可以在文本字段中使用语法${installer:variableName}或在脚本中context.getVariable("variableName")使用这些响应文件变量。