这是我的用例,以便您可以理解我为什么需要卸载程序。 我必须修改在带有文件选择器的屏幕中选择的WAR文件的内容,先用数据库备份,然后修改数据库,然后再修改WAR。 WAR和数据库的修改就像魅力一样,备份也是如此,但是我需要给最终用户提供恢复以前的WAR和数据库的可能性,就像修改它们一样容易。
为此,我创建了一些将使用备份文件和安装程序运行时变量的操作,但是我在执行卸载程序时显示错误,说它无法加载主类。
我只是不使用任何启动器,因为实际上我并不是想安装任何软件,只是做一些文件操作。
所以我的问题是:
修改
在卸载程序中,我需要使用安装程序中的表单组件变量,以及我使用"设置变量"创建的其他变量。安装程序中的操作也是如此,我必须选中“注册到响应文件”复选框。
然后在卸载程序的启动节点中,在"请求权限之后#34;动作,我添加"加载响应文件"行动,并留下"文件" textfield为空,因此可以加载
安装程序创建的默认响应文件
然后我在卸载程序的后续操作中调用这些变量
${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)
答案 0 :(得分:3)
是否可以使用卸载来恢复备份文件?
上述评论已经解决了这个问题。
是否可以在其他应用程序中使用安装程序变量?
是,将“加载响应文件”操作添加到卸载程序的“启动”节点。变量必须是响应文件变量。绑定到表单组件的所有变量都会自动为响应文件注册。对于其他变量,在安装程序配置的“安装程序变量”选项卡上预定义安装程序变量时,会出现一个复选框。或者,您可以致电
context.registerResponseFileVariable(...);
在安装程序中的“运行脚本”操作中。
在卸载程序中,您可以在文本字段中使用语法${installer:variableName}
或在脚本中context.getVariable("variableName")
使用这些响应文件变量。