【问题标题】:izpack installer input properties file not having input for password fieldizpack 安装程序输入属性文件没有输入密码字段
【发布时间】:2014-04-28 06:53:36
【问题描述】:

我正在使用 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 文件中获取输入,并且它也有密码字段。但我的要求是在属性文件中提供输入。

任何帮助都会对我很有帮助。

谢谢

【问题讨论】:

    标签: java installation izpack


    【解决方案1】:

    这在 5.0 版中被报告为一个未解决的缺陷。另一位用户也表示在 4.x 中存在此问题。我也无法使用带有 -options 标志的 4.3.5 版运行无头安装。 IzPack Reported Defect

    【讨论】:

      【解决方案2】:

      请创建“com.izforge.izpack.panels.userinput.UserInputPanelConsole”类,请注意包路径。

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-10-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-04-11
        • 2011-12-06
        相关资源
        最近更新 更多