【问题标题】:How to use installer variables in the uninstaller?如何在卸载程序中使用安装程序变量?
【发布时间】:2015-06-08 13:15:40
【问题描述】:

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

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

我只是不使用任何启动器,因为实际上我并没有尝试安装任何软件,只是进行一些文件操作。

所以我的问题是:

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

编辑:

在卸载程序中,我需要使用安装程序中的表单组件变量,以及我在安装程序中使用“设置变量”操作创建的其他变量,为此我必须选中“注册到响应文件”复选框。
然后在卸载程序的启动节点中,在“请求权限”操作之后,添加“加载响应文件”操作,并将“文件”文本字段留空,以便加载 安装程序创建的默认响应文件。
然后我在卸载程序的后续操作中调用这些变量 ${installer:variableName} ,就像你说的那样,但我收到一个错误对话框:

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

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)

【问题讨论】:

  • 在“安装文件”操作中,是否选择了“安装文件”操作属性?
  • 我不太明白您的问题,但我在“可配置横幅表单”屏幕中使用了“安装文件”操作。
  • 对不起,这是乱码,问题应该是:在“安装文件”操作中,是否选择了“安装运行时”属性?
  • 是的,它被选中了。
  • 您能否发布您获得的整个堆栈跟踪或错误消息的屏幕截图?

标签: java install4j


【解决方案1】:

是否可以通过卸载恢复备份文件?

上面的 cmets 已经解决了这个问题。

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

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

context.registerResponseFileVariable(...);

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

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

【讨论】:

  • 好的,我在安装程序的最后一个屏幕上创建了一个响应文件,在其中我可以看到我需要的变量,在卸载程序中添加“加载响应文件”操作后,我该怎么做在后续操作中访问这些变量?
  • 好的,感谢您的指导,我非常接近实现我的解决方案,但我仍然遇到几乎相同的问题,我可以在响应文件中看到注册的变量,但是当我使用它们在卸载程序中,在运行时它给我一个错误,我将编辑我的问题,以便我可以向你展示我得到的堆栈。
  • 卸载程序的启动节点有“加载响应文件”动作吗?
  • 是的,正如我所说,我编辑了我的问题,包含与我的问题相关的所有细节。
  • 请将 install4j 项目文件和响应文件 (.install4j\response.varfile) 发送至 support@ej-technologies.com
猜你喜欢
  • 2021-12-26
  • 1970-01-01
  • 2015-10-22
  • 1970-01-01
  • 1970-01-01
  • 2019-12-13
  • 2016-03-24
  • 2017-01-13
  • 2014-08-11
相关资源
最近更新 更多