izpack安装程序输入属性文件没有输入密码字段

时间:2014-03-21 03:46:14

标签: java installer izpack

我正在使用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文件获取输入来成功运行安装程序,并且它还具有密码字段。但我的要求是在属性文件中提供输入。

任何帮助对我都有帮助。

由于

2 个答案:

答案 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变量,这将远离密码字段设置变量。