我正在使用Izpack为我的java项目创建安装程序。 现在,我的要求是,我想通过从属性文件而不是用户界面获取用户输入来运行安装程序。
探索Izpack文档,我发现我可以通过以下两个命令来完成它。
- options-template :生成名称在args [1]中指定的属性文件。
java -jar installer.jar -options-template inputs.properties
- 选项:从args [1]中指定的属性文件中读取属性时运行安装。
java -jar installer.jar -options inputs.properties
但是当我使用第一个命令导出inputs.properties文件时,它没有我的某个安装程序面板所具有的密码字段。 因此,当我在inputs.properties中输入输入值后尝试使用第二个命令运行安装程序时,它会给出该密码值的错误。
即使在inputs.properties中手动添加密码字段名称和值,安装程序也不会从属性文件中查看该值。
我通过从xml文件获取输入来成功运行安装程序,并且它还具有密码字段。但我的要求是在属性文件中提供输入。
任何帮助对我都有帮助。
由于
答案 0 :(得分:1)
这是5.0版本中的一个开放缺陷。另一位用户也表示在4.x中遇到此问题。我也无法使用版本4.3.5和-options标志运行无头安装。 IzPack Reported Defect
答案 1 :(得分:0)
请创建“com.izforge.izpack.panels.userinput.UserInputPanelConsole”类,请注意包路径。
public class UserInputPanelConsole扩展了UserInputPanelConsoleHelper {
public UserInputPanelConsole(Resources resources, ConsolePanels panels) {
super(resources, panels);
}
public boolean runConsoleFromProperties(InstallData installData, Properties properties){
boolean result = super.runConsoleFromProperties(installData, properties);
for (Map.Entry<Object, Object> entry : properties.entrySet()) {
if (properties.containsKey(entry.getKey())) {
String value = (String) entry.getValue();
if(!StringsUtil.isEmptyString(value)){
installData.setVariable(entry.getKey().toString(), value);
}
}
}
return result;
}
}
正如您所看到的,您强制设置installData变量,这将远离密码字段设置变量。